diff --git a/README.md b/README.md index 25ec814..9be59c2 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ siehe Architektur-Plan (`docs/` bzw. der genehmigte Plan). Mission Control 2.0 (FastAPI + React/shadcn) · Hermes Agent + hermes-webui · Shared Memory (SQLite via MCP). Jede Schicht hinter stabilem Vertrag austauschbar. -## Status: Phase 2 (System/OS + Connect) ✅ +## Status: Phase 3 (Memory + MCP) ✅ Fortschritt & Resume-Guide: siehe [`docs/STATUS.md`](docs/STATUS.md). @@ -18,9 +18,11 @@ Fortschritt & Resume-Guide: siehe [`docs/STATUS.md`](docs/STATUS.md). - **Phase 2** — System-Status (CPU/RAM/GPU/Disk), Wartung (restart/self-update, sudo-frei), **Connect** (saubere IDE-Snippets → Gateway `model:auto`, LAN-IP-Override). +- **Phase 3** — Geteiltes **Gedächtnis** (SQLite/WAL, 5 Kategorien, Dedupe-Kurator) + **MCP-Server** + (`mcp/mcp_memory.py` shared, `mcp/mcp_mc.py` Stack-Management für Hermes), MemoryView. -API: `health · models · discover · fit · models/register · groups · routing · system/status · -system/restart · system/self-update · connect` (Details in `docs/STATUS.md`). +API: `health · models · discover · fit · models/register · groups · routing · system/* · connect · +memory/*` (Details in `docs/STATUS.md`). MCP: `mcp/` (siehe `mcp/requirements.txt`). ## Entwickeln diff --git a/backend/app.py b/backend/app.py index 61dbc8d..c2f9c33 100644 --- a/backend/app.py +++ b/backend/app.py @@ -13,7 +13,7 @@ from fastapi.staticfiles import StaticFiles from starlette.requests import Request from config import FRONTEND_DIST, VERSION -from routers import connect, health, models, routing, system +from routers import connect, health, memory, models, routing, system app = FastAPI(title="Mission Control 2.0", version=VERSION) @@ -39,6 +39,7 @@ app.include_router(models.router) app.include_router(routing.router) app.include_router(system.router) app.include_router(connect.router) +app.include_router(memory.router) # Prod: gebautes Frontend ausliefern (falls vorhanden). SPA-Fallback auf index.html. diff --git a/backend/config.py b/backend/config.py index 5c4f12a..ff08547 100644 --- a/backend/config.py +++ b/backend/config.py @@ -19,6 +19,8 @@ MODELS_DIR = Path(os.environ.get("MC_MODELS_DIR", "/srv/models")) # Persistent neben den Modellen (übersteht Deploys). TTL = Frische-Fenster. DISCOVER_CACHE_PATH = Path(os.environ.get("MC_DISCOVER_CACHE", str(MODELS_DIR / "mc2-discover.json"))) DISCOVER_TTL = int(os.environ.get("MC_DISCOVER_TTL", "43200")) # 12 h +# Geteiltes Gedächtnis (SQLite, WAL). Persistent neben den Modellen. +MEMORY_DB = Path(os.environ.get("MC_MEMORY_DB", str(MODELS_DIR / "mc2-memory.db"))) # Befehl-Vorlage für llama-swap: {model}=GGUF-Pfad, {ctx}=Kontext, ${PORT} bleibt stehen. _DEFAULT_CMD_TEMPLATE = ( "llama-server -m {model} --host 127.0.0.1 --port ${PORT} " @@ -44,7 +46,7 @@ PORT = int(os.environ.get("MC_PORT", "9000")) FRONTEND_DIST = Path(os.environ.get("MC_FRONTEND_DIST", str(Path(__file__).resolve().parent.parent / "frontend" / "dist"))) # Version (Phase 0 — Greenfield-Skeleton). -VERSION = "2.0.0-phase2" +VERSION = "2.0.0-phase3" # Gemeinsame YAML-Instanz (preserve_quotes hält Kommentare/Quotes in config.yaml). yaml = YAML() diff --git a/backend/routers/memory.py b/backend/routers/memory.py new file mode 100644 index 0000000..877a978 --- /dev/null +++ b/backend/routers/memory.py @@ -0,0 +1,61 @@ +"""Memory-Endpoints (geteiltes Gedächtnis). LAN-only, kein Token in 2.0-Phase 3.""" + +from fastapi import APIRouter, HTTPException +from pydantic import BaseModel + +from services import memory + +router = APIRouter(prefix="/api") + + +class MemIn(BaseModel): + content: str + category: str = "stable" + source: str = "manual" + + +class MemUp(BaseModel): + content: str | None = None + category: str | None = None + + +class DedupeIn(BaseModel): + apply: bool = False + threshold: float = 0.85 + + +@router.get("/memory/export") +def export() -> dict: + return memory.export_text() + + +@router.post("/memory/dedupe") +def dedupe(body: DedupeIn) -> dict: + return memory.dedupe(apply=body.apply, threshold=body.threshold) + + +@router.get("/memory") +def list_mem(q: str = "", category: str = "") -> list[dict]: + return memory.list_memories(q=q, category=category) + + +@router.post("/memory", status_code=201) +def add(body: MemIn) -> dict: + if body.category not in memory.CATEGORIES: + raise HTTPException(400, f"Kategorie '{body.category}' unbekannt.") + return memory.add_memory(body.content, body.category, body.source) + + +@router.put("/memory/{mid}") +def update(mid: str, body: MemUp) -> dict: + res = memory.update_memory(mid, content=body.content, category=body.category) + if not res: + raise HTTPException(404, "Eintrag nicht gefunden") + return res + + +@router.delete("/memory/{mid}") +def delete(mid: str) -> dict: + if not memory.delete_memory(mid): + raise HTTPException(404, "Eintrag nicht gefunden") + return {"ok": True} diff --git a/backend/services/memory.py b/backend/services/memory.py new file mode 100644 index 0000000..1236b1d --- /dev/null +++ b/backend/services/memory.py @@ -0,0 +1,149 @@ +""" +Geteiltes Gedächtnis (die „Verfassung") — SQLite aus stdlib, WAL-Mode. +Portiert aus Mission Control v1 (routers/memory.py), DB-Logik als Service isoliert. + +5 Kategorien: user · instruction · stable · versioned · ephemeral (7-Tage-TTL). +Dedupe = deterministischer Kurator (exakt/enthalten/ähnlich), KEIN LLM. +""" + +import re +import sqlite3 +import uuid +from datetime import datetime, timezone +from difflib import SequenceMatcher + +from config import MEMORY_DB + +CATEGORIES = ("user", "instruction", "stable", "versioned", "ephemeral") + +_conn: sqlite3.Connection | None = None + + +def db() -> sqlite3.Connection: + global _conn + if _conn is None: + MEMORY_DB.parent.mkdir(parents=True, exist_ok=True) + _conn = sqlite3.connect(str(MEMORY_DB), check_same_thread=False) + _conn.row_factory = sqlite3.Row + _conn.execute("PRAGMA journal_mode=WAL") + _conn.execute(""" + CREATE TABLE IF NOT EXISTS memories ( + id TEXT PRIMARY KEY, + content TEXT NOT NULL, + category TEXT NOT NULL DEFAULT 'stable', + source TEXT NOT NULL DEFAULT 'manual', + created_at TEXT NOT NULL, + updated_at TEXT NOT NULL + ) + """) + _conn.execute( + "DELETE FROM memories WHERE category='ephemeral'" + " AND datetime(created_at) < datetime('now','-7 days')" + ) + _conn.commit() + return _conn + + +def _now() -> str: + return datetime.now(timezone.utc).isoformat() + + +def list_memories(q: str = "", category: str = "") -> list[dict]: + sql, params, conds = "SELECT * FROM memories", [], [] + if q: + conds.append("content LIKE ?"); params.append(f"%{q}%") + if category: + conds.append("category = ?"); params.append(category) + if conds: + sql += " WHERE " + " AND ".join(conds) + sql += " ORDER BY created_at DESC" + return [dict(r) for r in db().execute(sql, params).fetchall()] + + +def add_memory(content: str, category: str = "stable", source: str = "manual") -> dict: + now, mid = _now(), str(uuid.uuid4()) + db().execute( + "INSERT INTO memories (id,content,category,source,created_at,updated_at) VALUES (?,?,?,?,?,?)", + (mid, content.strip(), category, source, now, now), + ) + db().commit() + return {"id": mid, "content": content.strip(), "category": category, + "source": source, "created_at": now, "updated_at": now} + + +def update_memory(mid: str, content: str | None = None, category: str | None = None) -> dict | None: + row = db().execute("SELECT * FROM memories WHERE id=?", (mid,)).fetchone() + if not row: + return None + now = _now() + new_content = content.strip() if content is not None else row["content"] + new_cat = category if category is not None else row["category"] + db().execute("UPDATE memories SET content=?,category=?,updated_at=? WHERE id=?", + (new_content, new_cat, now, mid)) + db().commit() + return {"id": mid, "content": new_content, "category": new_cat, + "source": row["source"], "created_at": row["created_at"], "updated_at": now} + + +def delete_memory(mid: str) -> bool: + if not db().execute("SELECT id FROM memories WHERE id=?", (mid,)).fetchone(): + return False + db().execute("DELETE FROM memories WHERE id=?", (mid,)) + db().commit() + return True + + +def export_text() -> dict: + rows = db().execute("SELECT * FROM memories ORDER BY category, updated_at DESC").fetchall() + lines = ["# Mission Control — Gedächtnis\n"] + current = "" + for r in rows: + if r["category"] != current: + lines.append(f"\n## {r['category']}\n") + current = r["category"] + lines.append(f"- {r['content']} _(Quelle: {r['source']}, {r['updated_at'][:10]})_") + return {"text": "\n".join(lines), "count": len(rows)} + + +def _norm(s: str) -> str: + s = re.sub(r"[^\w\s]", " ", s.lower(), flags=re.UNICODE) + return re.sub(r"\s+", " ", s).strip() + + +def dedupe(apply: bool = False, threshold: float = 0.85) -> dict: + """Deterministischer Kurator: findet Dubletten (exakt/enthalten/ähnlich) je Kategorie, + behält den vollständigsten (längsten) Eintrag. Konservativ, kein LLM.""" + rows = [dict(r) for r in db().execute( + "SELECT * FROM memories ORDER BY length(content) DESC, created_at ASC").fetchall()] + used: set[str] = set() + groups: list[dict] = [] + for i, a in enumerate(rows): + if a["id"] in used: + continue + na = _norm(a["content"]) + if not na: + continue + dups = [] + for b in rows[i + 1:]: + if b["id"] in used or b["category"] != a["category"]: + continue + nb = _norm(b["content"]) + if not nb: + continue + if nb in na or na in nb or SequenceMatcher(None, na, nb).ratio() >= threshold: + dups.append(b); used.add(b["id"]) + if dups: + used.add(a["id"]) + groups.append({ + "keep": {"id": a["id"], "content": a["content"], "category": a["category"]}, + "remove": [{"id": d["id"], "content": d["content"]} for d in dups], + }) + dup_count = sum(len(g["remove"]) for g in groups) + removed = 0 + if apply: + for g in groups: + for d in g["remove"]: + db().execute("DELETE FROM memories WHERE id=?", (d["id"],)); removed += 1 + if removed: + db().commit() + return {"groups": groups, "duplicate_count": dup_count, "removed": removed, "applied": apply} diff --git a/docs/STATUS.md b/docs/STATUS.md index 1fd059e..4c3b30c 100644 --- a/docs/STATUS.md +++ b/docs/STATUS.md @@ -17,7 +17,10 @@ - [x] **Phase 2 — System/OS + Connect:** System-Status (psutil CPU/RAM/Disk, sysfs GPU/Temp guarded), Wartung (restart/self-update als systemd-USER-Dienst, sudo-frei), Connect-Snippets (Cline/OpenCode/ Zed/Continue/Claude Code/Memory-MCP → Gateway `model:auto` + LAN-IP-Override). Lokal verifiziert. -- [ ] **Phase 3 — Memory + MCP** (Governance-UI, mcp_memory.py portiert, mcp_mc.py neu). +- [x] **Phase 3 — Memory + MCP:** Memory-Service (SQLite/WAL, 5 Kategorien, Dedupe-Kurator), Router + (CRUD/export/dedupe), `mcp/mcp_memory.py` (Guard-Beschreibungen gegen Loop) + `mcp/mcp_mc.py` NEU + (Stack-Management-Tools für Hermes: list/discover/register/route/restart/status). Frontend + MemoryView (Add/Filter/Suche/Delete/Aufräumen). Lokal verifiziert (CRUD+Dedupe; MCP syntax-OK). - [ ] **Phase 4 — Hermes-Schicht** (hermes-webui Dienst, Brain=auto, Tools/MCP verdrahten). **Braucht Box.** - [ ] **Phase 5 — Betrieb/Observability/Politur** (Backup, LiteLLM-Traces, Health). - [ ] **Phase 6 — Cutover** (/opt → v2, v1 aus). **Braucht Box.** @@ -45,8 +48,12 @@ cd frontend && npm run build - `GET /api/system/status` — CPU/RAM/GPU/Disk/Temp - `POST /api/system/restart` (Whitelist), `POST /api/system/self-update` — Wartung (Box, sudo-frei) - `GET /api/connect?host=` — IDE-/Agent-Snippets (Gateway + Memory-MCP) +- `GET/POST/PUT/DELETE /api/memory[...]` + `/api/memory/export` + `/api/memory/dedupe` — geteiltes Gedächtnis +- `mcp/mcp_memory.py` (geteiltes Memory) + `mcp/mcp_mc.py` (Stack-Management für Hermes) — stdio-MCP ## Nächster sinnvoller Schritt -Phase 3 (Memory + MCP) lokal bauen: Memory-Governance-UI, `mcp_memory.py` portieren (Shared SQLite), -`mcp_mc.py` neu (Stack-Management-Tools für Hermes). **Oder** Box-Deploy einrichten (systemd-USER-Dienst, -sudo-frei). Beim Box-Deploy: `deploy/deploy.sh` vorher auf User-Dienst umstellen (kein /opt/sudo). +**Phase 4 (Hermes-Schicht) braucht die Box** — hermes-webui als Dienst, Brain=model:auto, Tools/MCP +verdrahten (FS/Shell/SSH→Win/Netz + mcp_mc + mcp_memory), LiteLLM-Caveat verifizieren. Vorher sinnvoll: +**Box-Deploy** einrichten (systemd-USER-Dienst, sudo-frei; `deploy/deploy.sh` auf User-Dienst umstellen, +kein /opt/sudo) + **LiteLLM-Gateway** auf der Box starten und `model:auto`/Complexity-Router verifizieren. +Lokal noch machbar ohne Box: Phase-4-Frontend (Agent-Status/Verdrahtungs-Anzeige + „Hermes öffnen"). diff --git a/frontend/dist/assets/index-ByXSUESS.js b/frontend/dist/assets/index-ByXSUESS.js new file mode 100644 index 0000000..420fcf5 --- /dev/null +++ b/frontend/dist/assets/index-ByXSUESS.js @@ -0,0 +1,160 @@ +function cm(l,s){for(var u=0;uc[d]})}}}return Object.freeze(Object.defineProperty(l,Symbol.toStringTag,{value:"Module"}))}(function(){const s=document.createElement("link").relList;if(s&&s.supports&&s.supports("modulepreload"))return;for(const d of document.querySelectorAll('link[rel="modulepreload"]'))c(d);new MutationObserver(d=>{for(const f of d)if(f.type==="childList")for(const h of f.addedNodes)h.tagName==="LINK"&&h.rel==="modulepreload"&&c(h)}).observe(document,{childList:!0,subtree:!0});function u(d){const f={};return d.integrity&&(f.integrity=d.integrity),d.referrerPolicy&&(f.referrerPolicy=d.referrerPolicy),d.crossOrigin==="use-credentials"?f.credentials="include":d.crossOrigin==="anonymous"?f.credentials="omit":f.credentials="same-origin",f}function c(d){if(d.ep)return;d.ep=!0;const f=u(d);fetch(d.href,f)}})();function Sd(l){return l&&l.__esModule&&Object.prototype.hasOwnProperty.call(l,"default")?l.default:l}var ku={exports:{}},Yr={},Eu={exports:{}},fe={};/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Hc;function dm(){if(Hc)return fe;Hc=1;var l=Symbol.for("react.element"),s=Symbol.for("react.portal"),u=Symbol.for("react.fragment"),c=Symbol.for("react.strict_mode"),d=Symbol.for("react.profiler"),f=Symbol.for("react.provider"),h=Symbol.for("react.context"),m=Symbol.for("react.forward_ref"),N=Symbol.for("react.suspense"),P=Symbol.for("react.memo"),j=Symbol.for("react.lazy"),_=Symbol.iterator;function T(S){return S===null||typeof S!="object"?null:(S=_&&S[_]||S["@@iterator"],typeof S=="function"?S:null)}var b={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},H=Object.assign,M={};function R(S,w,A){this.props=S,this.context=w,this.refs=M,this.updater=A||b}R.prototype.isReactComponent={},R.prototype.setState=function(S,w){if(typeof S!="object"&&typeof S!="function"&&S!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,S,w,"setState")},R.prototype.forceUpdate=function(S){this.updater.enqueueForceUpdate(this,S,"forceUpdate")};function V(){}V.prototype=R.prototype;function W(S,w,A){this.props=S,this.context=w,this.refs=M,this.updater=A||b}var te=W.prototype=new V;te.constructor=W,H(te,R.prototype),te.isPureReactComponent=!0;var q=Array.isArray,le=Object.prototype.hasOwnProperty,ne={current:null},ue={key:!0,ref:!0,__self:!0,__source:!0};function ye(S,w,A){var B,D={},Y=null,re=null;if(w!=null)for(B in w.ref!==void 0&&(re=w.ref),w.key!==void 0&&(Y=""+w.key),w)le.call(w,B)&&!ue.hasOwnProperty(B)&&(D[B]=w[B]);var se=arguments.length-2;if(se===1)D.children=A;else if(1>>1,w=F[S];if(0>>1;Sd(D,U))Yd(re,D)?(F[S]=re,F[Y]=U,S=Y):(F[S]=D,F[B]=U,S=B);else if(Yd(re,U))F[S]=re,F[Y]=U,S=Y;else break e}}return Z}function d(F,Z){var U=F.sortIndex-Z.sortIndex;return U!==0?U:F.id-Z.id}if(typeof performance=="object"&&typeof performance.now=="function"){var f=performance;l.unstable_now=function(){return f.now()}}else{var h=Date,m=h.now();l.unstable_now=function(){return h.now()-m}}var N=[],P=[],j=1,_=null,T=3,b=!1,H=!1,M=!1,R=typeof setTimeout=="function"?setTimeout:null,V=typeof clearTimeout=="function"?clearTimeout:null,W=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function te(F){for(var Z=u(P);Z!==null;){if(Z.callback===null)c(P);else if(Z.startTime<=F)c(P),Z.sortIndex=Z.expirationTime,s(N,Z);else break;Z=u(P)}}function q(F){if(M=!1,te(F),!H)if(u(N)!==null)H=!0,_e(le);else{var Z=u(P);Z!==null&&he(q,Z.startTime-F)}}function le(F,Z){H=!1,M&&(M=!1,V(ye),ye=-1),b=!0;var U=T;try{for(te(Z),_=u(N);_!==null&&(!(_.expirationTime>Z)||F&&!Ce());){var S=_.callback;if(typeof S=="function"){_.callback=null,T=_.priorityLevel;var w=S(_.expirationTime<=Z);Z=l.unstable_now(),typeof w=="function"?_.callback=w:_===u(N)&&c(N),te(Z)}else c(N);_=u(N)}if(_!==null)var A=!0;else{var B=u(P);B!==null&&he(q,B.startTime-Z),A=!1}return A}finally{_=null,T=U,b=!1}}var ne=!1,ue=null,ye=-1,de=5,xe=-1;function Ce(){return!(l.unstable_now()-xeF||125S?(F.sortIndex=U,s(P,F),u(N)===null&&F===u(P)&&(M?(V(ye),ye=-1):M=!0,he(q,U-S))):(F.sortIndex=w,s(N,F),H||b||(H=!0,_e(le))),F},l.unstable_shouldYield=Ce,l.unstable_wrapCallback=function(F){var Z=T;return function(){var U=T;T=Z;try{return F.apply(this,arguments)}finally{T=U}}}})(_u)),_u}var Xc;function hm(){return Xc||(Xc=1,Nu.exports=mm()),Nu.exports}/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Zc;function vm(){if(Zc)return tt;Zc=1;var l=Wu(),s=hm();function u(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),N=Object.prototype.hasOwnProperty,P=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,j={},_={};function T(e){return N.call(_,e)?!0:N.call(j,e)?!1:P.test(e)?_[e]=!0:(j[e]=!0,!1)}function b(e,t,n,r){if(n!==null&&n.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return r?!1:n!==null?!n.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function H(e,t,n,r){if(t===null||typeof t>"u"||b(e,t,n,r))return!0;if(r)return!1;if(n!==null)switch(n.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function M(e,t,n,r,o,i,a){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=r,this.attributeNamespace=o,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=i,this.removeEmptyString=a}var R={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){R[e]=new M(e,0,!1,e,null,!1,!1)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];R[t]=new M(t,1,!1,e[1],null,!1,!1)}),["contentEditable","draggable","spellCheck","value"].forEach(function(e){R[e]=new M(e,2,!1,e.toLowerCase(),null,!1,!1)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){R[e]=new M(e,2,!1,e,null,!1,!1)}),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){R[e]=new M(e,3,!1,e.toLowerCase(),null,!1,!1)}),["checked","multiple","muted","selected"].forEach(function(e){R[e]=new M(e,3,!0,e,null,!1,!1)}),["capture","download"].forEach(function(e){R[e]=new M(e,4,!1,e,null,!1,!1)}),["cols","rows","size","span"].forEach(function(e){R[e]=new M(e,6,!1,e,null,!1,!1)}),["rowSpan","start"].forEach(function(e){R[e]=new M(e,5,!1,e.toLowerCase(),null,!1,!1)});var V=/[\-:]([a-z])/g;function W(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(V,W);R[t]=new M(t,1,!1,e,null,!1,!1)}),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(V,W);R[t]=new M(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)}),["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(V,W);R[t]=new M(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)}),["tabIndex","crossOrigin"].forEach(function(e){R[e]=new M(e,1,!1,e.toLowerCase(),null,!1,!1)}),R.xlinkHref=new M("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach(function(e){R[e]=new M(e,1,!1,e.toLowerCase(),null,!0,!0)});function te(e,t,n,r){var o=R.hasOwnProperty(t)?R[t]:null;(o!==null?o.type!==0:r||!(2p||o[a]!==i[p]){var y=` +`+o[a].replace(" at new "," at ");return e.displayName&&y.includes("")&&(y=y.replace("",e.displayName)),y}while(1<=a&&0<=p);break}}}finally{A=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?w(e):""}function D(e){switch(e.tag){case 5:return w(e.type);case 16:return w("Lazy");case 13:return w("Suspense");case 19:return w("SuspenseList");case 0:case 2:case 15:return e=B(e.type,!1),e;case 11:return e=B(e.type.render,!1),e;case 1:return e=B(e.type,!0),e;default:return""}}function Y(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case ue:return"Fragment";case ne:return"Portal";case de:return"Profiler";case ye:return"StrictMode";case be:return"Suspense";case Ne:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case Ce:return(e.displayName||"Context")+".Consumer";case xe:return(e._context.displayName||"Context")+".Provider";case ie:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case Oe:return t=e.displayName||null,t!==null?t:Y(e.type)||"Memo";case _e:t=e._payload,e=e._init;try{return Y(e(t))}catch{}}return null}function re(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return Y(t);case 8:return t===ye?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function se(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function ce(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function De(e){var t=ce(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var o=n.get,i=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return o.call(this)},set:function(a){r=""+a,i.call(this,a)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(a){r=""+a},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function nl(e){e._valueTracker||(e._valueTracker=De(e))}function Zu(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=ce(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function rl(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function Ro(e,t){var n=t.checked;return U({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function qu(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=se(t.value!=null?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function Ju(e,t){t=t.checked,t!=null&&te(e,"checked",t,!1)}function Mo(e,t){Ju(e,t);var n=se(t.value),r=t.type;if(n!=null)r==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(r==="submit"||r==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?To(e,t.type,n):t.hasOwnProperty("defaultValue")&&To(e,t.type,se(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function es(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!(r!=="submit"&&r!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function To(e,t,n){(t!=="number"||rl(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var cr=Array.isArray;function Pn(e,t,n,r){if(e=e.options,t){t={};for(var o=0;o"+t.valueOf().toString()+"",t=ll.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function dr(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var fr={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},mf=["Webkit","ms","Moz","O"];Object.keys(fr).forEach(function(e){mf.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),fr[t]=fr[e]})});function is(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||fr.hasOwnProperty(e)&&fr[e]?(""+t).trim():t+"px"}function us(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf("--")===0,o=is(n,t[n],r);n==="float"&&(n="cssFloat"),r?e.setProperty(n,o):e[n]=o}}var hf=U({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function Oo(e,t){if(t){if(hf[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(u(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(u(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(u(61))}if(t.style!=null&&typeof t.style!="object")throw Error(u(62))}}function zo(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var Io=null;function Do(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var Ao=null,jn=null,Rn=null;function ss(e){if(e=Or(e)){if(typeof Ao!="function")throw Error(u(280));var t=e.stateNode;t&&(t=Pl(t),Ao(e.stateNode,e.type,t))}}function as(e){jn?Rn?Rn.push(e):Rn=[e]:jn=e}function cs(){if(jn){var e=jn,t=Rn;if(Rn=jn=null,ss(e),t)for(e=0;e>>=0,e===0?32:31-(_f(e)/Pf|0)|0}var al=64,cl=4194304;function vr(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function dl(e,t){var n=e.pendingLanes;if(n===0)return 0;var r=0,o=e.suspendedLanes,i=e.pingedLanes,a=n&268435455;if(a!==0){var p=a&~o;p!==0?r=vr(p):(i&=a,i!==0&&(r=vr(i)))}else a=n&~o,a!==0?r=vr(a):i!==0&&(r=vr(i));if(r===0)return 0;if(t!==0&&t!==r&&(t&o)===0&&(o=r&-r,i=t&-t,o>=i||o===16&&(i&4194240)!==0))return t;if((r&4)!==0&&(r|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=r;0n;n++)t.push(e);return t}function gr(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-pt(t),e[t]=n}function Tf(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0=Nr),As=" ",Fs=!1;function Us(e,t){switch(e){case"keyup":return op.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Bs(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Ln=!1;function up(e,t){switch(e){case"compositionend":return Bs(t);case"keypress":return t.which!==32?null:(Fs=!0,As);case"textInput":return e=t.data,e===As&&Fs?null:e;default:return null}}function sp(e,t){if(Ln)return e==="compositionend"||!ni&&Us(e,t)?(e=Ls(),vl=Xo=Vt=null,Ln=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=Qs(n)}}function Xs(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Xs(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Zs(){for(var e=window,t=rl();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=rl(e.document)}return t}function oi(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function gp(e){var t=Zs(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&Xs(n.ownerDocument.documentElement,n)){if(r!==null&&oi(n)){if(t=r.start,e=r.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var o=n.textContent.length,i=Math.min(r.start,o);r=r.end===void 0?i:Math.min(r.end,o),!e.extend&&i>r&&(o=r,r=i,i=o),o=Ys(n,i);var a=Ys(n,r);o&&a&&(e.rangeCount!==1||e.anchorNode!==o.node||e.anchorOffset!==o.offset||e.focusNode!==a.node||e.focusOffset!==a.offset)&&(t=t.createRange(),t.setStart(o.node,o.offset),e.removeAllRanges(),i>r?(e.addRange(t),e.extend(a.node,a.offset)):(t.setEnd(a.node,a.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,bn=null,ii=null,Rr=null,ui=!1;function qs(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;ui||bn==null||bn!==rl(r)||(r=bn,"selectionStart"in r&&oi(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),Rr&&jr(Rr,r)||(Rr=r,r=Cl(ii,"onSelect"),0An||(e.current=xi[An],xi[An]=null,An--)}function ge(e,t){An++,xi[An]=e.current,e.current=t}var Gt={},We=Kt(Gt),Xe=Kt(!1),pn=Gt;function Fn(e,t){var n=e.type.contextTypes;if(!n)return Gt;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var o={},i;for(i in n)o[i]=t[i];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=o),o}function Ze(e){return e=e.childContextTypes,e!=null}function jl(){Se(Xe),Se(We)}function pa(e,t,n){if(We.current!==Gt)throw Error(u(168));ge(We,t),ge(Xe,n)}function ma(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var o in r)if(!(o in t))throw Error(u(108,re(e)||"Unknown",o));return U({},n,r)}function Rl(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Gt,pn=We.current,ge(We,e),ge(Xe,Xe.current),!0}function ha(e,t,n){var r=e.stateNode;if(!r)throw Error(u(169));n?(e=ma(e,t,pn),r.__reactInternalMemoizedMergedChildContext=e,Se(Xe),Se(We),ge(We,e)):Se(Xe),ge(Xe,n)}var Mt=null,Ml=!1,wi=!1;function va(e){Mt===null?Mt=[e]:Mt.push(e)}function Rp(e){Ml=!0,va(e)}function Qt(){if(!wi&&Mt!==null){wi=!0;var e=0,t=ve;try{var n=Mt;for(ve=1;e>=a,o-=a,Tt=1<<32-pt(t)+o|n<oe?(Ue=ee,ee=null):Ue=ee.sibling;var me=L(k,ee,E[oe],I);if(me===null){ee===null&&(ee=Ue);break}e&&ee&&me.alternate===null&&t(k,ee),x=i(me,x,oe),J===null?X=me:J.sibling=me,J=me,ee=Ue}if(oe===E.length)return n(k,ee),Ee&&hn(k,oe),X;if(ee===null){for(;oeoe?(Ue=ee,ee=null):Ue=ee.sibling;var rn=L(k,ee,me.value,I);if(rn===null){ee===null&&(ee=Ue);break}e&&ee&&rn.alternate===null&&t(k,ee),x=i(rn,x,oe),J===null?X=rn:J.sibling=rn,J=rn,ee=Ue}if(me.done)return n(k,ee),Ee&&hn(k,oe),X;if(ee===null){for(;!me.done;oe++,me=E.next())me=z(k,me.value,I),me!==null&&(x=i(me,x,oe),J===null?X=me:J.sibling=me,J=me);return Ee&&hn(k,oe),X}for(ee=r(k,ee);!me.done;oe++,me=E.next())me=$(ee,k,oe,me.value,I),me!==null&&(e&&me.alternate!==null&&ee.delete(me.key===null?oe:me.key),x=i(me,x,oe),J===null?X=me:J.sibling=me,J=me);return e&&ee.forEach(function(am){return t(k,am)}),Ee&&hn(k,oe),X}function Te(k,x,E,I){if(typeof E=="object"&&E!==null&&E.type===ue&&E.key===null&&(E=E.props.children),typeof E=="object"&&E!==null){switch(E.$$typeof){case le:e:{for(var X=E.key,J=x;J!==null;){if(J.key===X){if(X=E.type,X===ue){if(J.tag===7){n(k,J.sibling),x=o(J,E.props.children),x.return=k,k=x;break e}}else if(J.elementType===X||typeof X=="object"&&X!==null&&X.$$typeof===_e&&ka(X)===J.type){n(k,J.sibling),x=o(J,E.props),x.ref=zr(k,J,E),x.return=k,k=x;break e}n(k,J);break}else t(k,J);J=J.sibling}E.type===ue?(x=En(E.props.children,k.mode,I,E.key),x.return=k,k=x):(I=lo(E.type,E.key,E.props,null,k.mode,I),I.ref=zr(k,x,E),I.return=k,k=I)}return a(k);case ne:e:{for(J=E.key;x!==null;){if(x.key===J)if(x.tag===4&&x.stateNode.containerInfo===E.containerInfo&&x.stateNode.implementation===E.implementation){n(k,x.sibling),x=o(x,E.children||[]),x.return=k,k=x;break e}else{n(k,x);break}else t(k,x);x=x.sibling}x=gu(E,k.mode,I),x.return=k,k=x}return a(k);case _e:return J=E._init,Te(k,x,J(E._payload),I)}if(cr(E))return G(k,x,E,I);if(Z(E))return Q(k,x,E,I);Ol(k,E)}return typeof E=="string"&&E!==""||typeof E=="number"?(E=""+E,x!==null&&x.tag===6?(n(k,x.sibling),x=o(x,E),x.return=k,k=x):(n(k,x),x=vu(E,k.mode,I),x.return=k,k=x),a(k)):n(k,x)}return Te}var Vn=Ea(!0),Ca=Ea(!1),zl=Kt(null),Il=null,Wn=null,_i=null;function Pi(){_i=Wn=Il=null}function ji(e){var t=zl.current;Se(zl),e._currentValue=t}function Ri(e,t,n){for(;e!==null;){var r=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,r!==null&&(r.childLanes|=t)):r!==null&&(r.childLanes&t)!==t&&(r.childLanes|=t),e===n)break;e=e.return}}function Hn(e,t){Il=e,_i=Wn=null,e=e.dependencies,e!==null&&e.firstContext!==null&&((e.lanes&t)!==0&&(qe=!0),e.firstContext=null)}function st(e){var t=e._currentValue;if(_i!==e)if(e={context:e,memoizedValue:t,next:null},Wn===null){if(Il===null)throw Error(u(308));Wn=e,Il.dependencies={lanes:0,firstContext:e}}else Wn=Wn.next=e;return t}var vn=null;function Mi(e){vn===null?vn=[e]:vn.push(e)}function Na(e,t,n,r){var o=t.interleaved;return o===null?(n.next=n,Mi(t)):(n.next=o.next,o.next=n),t.interleaved=n,bt(e,r)}function bt(e,t){e.lanes|=t;var n=e.alternate;for(n!==null&&(n.lanes|=t),n=e,e=e.return;e!==null;)e.childLanes|=t,n=e.alternate,n!==null&&(n.childLanes|=t),n=e,e=e.return;return n.tag===3?n.stateNode:null}var Yt=!1;function Ti(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function _a(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function Ot(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function Xt(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,(pe&2)!==0){var o=r.pending;return o===null?t.next=t:(t.next=o.next,o.next=t),r.pending=t,bt(e,n)}return o=r.interleaved,o===null?(t.next=t,Mi(r)):(t.next=o.next,o.next=t),r.interleaved=t,bt(e,n)}function Dl(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,(n&4194240)!==0)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,Ho(e,n)}}function Pa(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var o=null,i=null;if(n=n.firstBaseUpdate,n!==null){do{var a={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};i===null?o=i=a:i=i.next=a,n=n.next}while(n!==null);i===null?o=i=t:i=i.next=t}else o=i=t;n={baseState:r.baseState,firstBaseUpdate:o,lastBaseUpdate:i,shared:r.shared,effects:r.effects},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function Al(e,t,n,r){var o=e.updateQueue;Yt=!1;var i=o.firstBaseUpdate,a=o.lastBaseUpdate,p=o.shared.pending;if(p!==null){o.shared.pending=null;var y=p,C=y.next;y.next=null,a===null?i=C:a.next=C,a=y;var O=e.alternate;O!==null&&(O=O.updateQueue,p=O.lastBaseUpdate,p!==a&&(p===null?O.firstBaseUpdate=C:p.next=C,O.lastBaseUpdate=y))}if(i!==null){var z=o.baseState;a=0,O=C=y=null,p=i;do{var L=p.lane,$=p.eventTime;if((r&L)===L){O!==null&&(O=O.next={eventTime:$,lane:0,tag:p.tag,payload:p.payload,callback:p.callback,next:null});e:{var G=e,Q=p;switch(L=t,$=n,Q.tag){case 1:if(G=Q.payload,typeof G=="function"){z=G.call($,z,L);break e}z=G;break e;case 3:G.flags=G.flags&-65537|128;case 0:if(G=Q.payload,L=typeof G=="function"?G.call($,z,L):G,L==null)break e;z=U({},z,L);break e;case 2:Yt=!0}}p.callback!==null&&p.lane!==0&&(e.flags|=64,L=o.effects,L===null?o.effects=[p]:L.push(p))}else $={eventTime:$,lane:L,tag:p.tag,payload:p.payload,callback:p.callback,next:null},O===null?(C=O=$,y=z):O=O.next=$,a|=L;if(p=p.next,p===null){if(p=o.shared.pending,p===null)break;L=p,p=L.next,L.next=null,o.lastBaseUpdate=L,o.shared.pending=null}}while(!0);if(O===null&&(y=z),o.baseState=y,o.firstBaseUpdate=C,o.lastBaseUpdate=O,t=o.shared.interleaved,t!==null){o=t;do a|=o.lane,o=o.next;while(o!==t)}else i===null&&(o.shared.lanes=0);xn|=a,e.lanes=a,e.memoizedState=z}}function ja(e,t,n){if(e=t.effects,t.effects=null,e!==null)for(t=0;tn?n:4,e(!0);var r=Ii.transition;Ii.transition={};try{e(!1),t()}finally{ve=n,Ii.transition=r}}function Ga(){return at().memoizedState}function bp(e,t,n){var r=en(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},Qa(e))Ya(t,n);else if(n=Na(e,t,n,r),n!==null){var o=Ye();xt(n,e,r,o),Xa(n,t,r)}}function Op(e,t,n){var r=en(e),o={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(Qa(e))Ya(t,o);else{var i=e.alternate;if(e.lanes===0&&(i===null||i.lanes===0)&&(i=t.lastRenderedReducer,i!==null))try{var a=t.lastRenderedState,p=i(a,n);if(o.hasEagerState=!0,o.eagerState=p,mt(p,a)){var y=t.interleaved;y===null?(o.next=o,Mi(t)):(o.next=y.next,y.next=o),t.interleaved=o;return}}catch{}finally{}n=Na(e,t,o,r),n!==null&&(o=Ye(),xt(n,e,r,o),Xa(n,t,r))}}function Qa(e){var t=e.alternate;return e===je||t!==null&&t===je}function Ya(e,t){Fr=Bl=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Xa(e,t,n){if((n&4194240)!==0){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,Ho(e,n)}}var Wl={readContext:st,useCallback:He,useContext:He,useEffect:He,useImperativeHandle:He,useInsertionEffect:He,useLayoutEffect:He,useMemo:He,useReducer:He,useRef:He,useState:He,useDebugValue:He,useDeferredValue:He,useTransition:He,useMutableSource:He,useSyncExternalStore:He,useId:He,unstable_isNewReconciler:!1},zp={readContext:st,useCallback:function(e,t){return Nt().memoizedState=[e,t===void 0?null:t],e},useContext:st,useEffect:Fa,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,$l(4194308,4,$a.bind(null,t,e),n)},useLayoutEffect:function(e,t){return $l(4194308,4,e,t)},useInsertionEffect:function(e,t){return $l(4,2,e,t)},useMemo:function(e,t){var n=Nt();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=Nt();return t=n!==void 0?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=bp.bind(null,je,e),[r.memoizedState,e]},useRef:function(e){var t=Nt();return e={current:e},t.memoizedState=e},useState:Da,useDebugValue:Vi,useDeferredValue:function(e){return Nt().memoizedState=e},useTransition:function(){var e=Da(!1),t=e[0];return e=Lp.bind(null,e[1]),Nt().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=je,o=Nt();if(Ee){if(n===void 0)throw Error(u(407));n=n()}else{if(n=t(),Fe===null)throw Error(u(349));(yn&30)!==0||La(r,t,n)}o.memoizedState=n;var i={value:n,getSnapshot:t};return o.queue=i,Fa(Oa.bind(null,r,i,e),[e]),r.flags|=2048,$r(9,ba.bind(null,r,i,n,t),void 0,null),n},useId:function(){var e=Nt(),t=Fe.identifierPrefix;if(Ee){var n=Lt,r=Tt;n=(r&~(1<<32-pt(r)-1)).toString(32)+n,t=":"+t+"R"+n,n=Ur++,0<\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=a.createElement(n,{is:r.is}):(e=a.createElement(n),n==="select"&&(a=e,r.multiple?a.multiple=!0:r.size&&(a.size=r.size))):e=a.createElementNS(e,n),e[Et]=t,e[br]=r,vc(e,t,!1,!1),t.stateNode=e;e:{switch(a=zo(n,r),n){case"dialog":we("cancel",e),we("close",e),o=r;break;case"iframe":case"object":case"embed":we("load",e),o=r;break;case"video":case"audio":for(o=0;oXn&&(t.flags|=128,r=!0,Vr(i,!1),t.lanes=4194304)}else{if(!r)if(e=Fl(a),e!==null){if(t.flags|=128,r=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),Vr(i,!0),i.tail===null&&i.tailMode==="hidden"&&!a.alternate&&!Ee)return Ke(t),null}else 2*Me()-i.renderingStartTime>Xn&&n!==1073741824&&(t.flags|=128,r=!0,Vr(i,!1),t.lanes=4194304);i.isBackwards?(a.sibling=t.child,t.child=a):(n=i.last,n!==null?n.sibling=a:t.child=a,i.last=a)}return i.tail!==null?(t=i.tail,i.rendering=t,i.tail=t.sibling,i.renderingStartTime=Me(),t.sibling=null,n=Pe.current,ge(Pe,r?n&1|2:n&1),t):(Ke(t),null);case 22:case 23:return pu(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&(t.mode&1)!==0?(ot&1073741824)!==0&&(Ke(t),t.subtreeFlags&6&&(t.flags|=8192)):Ke(t),null;case 24:return null;case 25:return null}throw Error(u(156,t.tag))}function Vp(e,t){switch(ki(t),t.tag){case 1:return Ze(t.type)&&jl(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Kn(),Se(Xe),Se(We),zi(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 5:return bi(t),null;case 13:if(Se(Pe),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(u(340));$n()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return Se(Pe),null;case 4:return Kn(),null;case 10:return ji(t.type._context),null;case 22:case 23:return pu(),null;case 24:return null;default:return null}}var Ql=!1,Ge=!1,Wp=typeof WeakSet=="function"?WeakSet:Set,K=null;function Qn(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){Re(e,t,r)}else n.current=null}function tu(e,t,n){try{n()}catch(r){Re(e,t,r)}}var xc=!1;function Hp(e,t){if(pi=ml,e=Zs(),oi(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var o=r.anchorOffset,i=r.focusNode;r=r.focusOffset;try{n.nodeType,i.nodeType}catch{n=null;break e}var a=0,p=-1,y=-1,C=0,O=0,z=e,L=null;t:for(;;){for(var $;z!==n||o!==0&&z.nodeType!==3||(p=a+o),z!==i||r!==0&&z.nodeType!==3||(y=a+r),z.nodeType===3&&(a+=z.nodeValue.length),($=z.firstChild)!==null;)L=z,z=$;for(;;){if(z===e)break t;if(L===n&&++C===o&&(p=a),L===i&&++O===r&&(y=a),($=z.nextSibling)!==null)break;z=L,L=z.parentNode}z=$}n=p===-1||y===-1?null:{start:p,end:y}}else n=null}n=n||{start:0,end:0}}else n=null;for(mi={focusedElem:e,selectionRange:n},ml=!1,K=t;K!==null;)if(t=K,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,K=e;else for(;K!==null;){t=K;try{var G=t.alternate;if((t.flags&1024)!==0)switch(t.tag){case 0:case 11:case 15:break;case 1:if(G!==null){var Q=G.memoizedProps,Te=G.memoizedState,k=t.stateNode,x=k.getSnapshotBeforeUpdate(t.elementType===t.type?Q:vt(t.type,Q),Te);k.__reactInternalSnapshotBeforeUpdate=x}break;case 3:var E=t.stateNode.containerInfo;E.nodeType===1?E.textContent="":E.nodeType===9&&E.documentElement&&E.removeChild(E.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(u(163))}}catch(I){Re(t,t.return,I)}if(e=t.sibling,e!==null){e.return=t.return,K=e;break}K=t.return}return G=xc,xc=!1,G}function Wr(e,t,n){var r=t.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var o=r=r.next;do{if((o.tag&e)===e){var i=o.destroy;o.destroy=void 0,i!==void 0&&tu(t,n,i)}o=o.next}while(o!==r)}}function Yl(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function nu(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function wc(e){var t=e.alternate;t!==null&&(e.alternate=null,wc(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[Et],delete t[br],delete t[yi],delete t[Pp],delete t[jp])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function Sc(e){return e.tag===5||e.tag===3||e.tag===4}function kc(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||Sc(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function ru(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=_l));else if(r!==4&&(e=e.child,e!==null))for(ru(e,t,n),e=e.sibling;e!==null;)ru(e,t,n),e=e.sibling}function lu(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(lu(e,t,n),e=e.sibling;e!==null;)lu(e,t,n),e=e.sibling}var Be=null,gt=!1;function Zt(e,t,n){for(n=n.child;n!==null;)Ec(e,t,n),n=n.sibling}function Ec(e,t,n){if(kt&&typeof kt.onCommitFiberUnmount=="function")try{kt.onCommitFiberUnmount(sl,n)}catch{}switch(n.tag){case 5:Ge||Qn(n,t);case 6:var r=Be,o=gt;Be=null,Zt(e,t,n),Be=r,gt=o,Be!==null&&(gt?(e=Be,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):Be.removeChild(n.stateNode));break;case 18:Be!==null&&(gt?(e=Be,n=n.stateNode,e.nodeType===8?gi(e.parentNode,n):e.nodeType===1&&gi(e,n),kr(e)):gi(Be,n.stateNode));break;case 4:r=Be,o=gt,Be=n.stateNode.containerInfo,gt=!0,Zt(e,t,n),Be=r,gt=o;break;case 0:case 11:case 14:case 15:if(!Ge&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){o=r=r.next;do{var i=o,a=i.destroy;i=i.tag,a!==void 0&&((i&2)!==0||(i&4)!==0)&&tu(n,t,a),o=o.next}while(o!==r)}Zt(e,t,n);break;case 1:if(!Ge&&(Qn(n,t),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(p){Re(n,t,p)}Zt(e,t,n);break;case 21:Zt(e,t,n);break;case 22:n.mode&1?(Ge=(r=Ge)||n.memoizedState!==null,Zt(e,t,n),Ge=r):Zt(e,t,n);break;default:Zt(e,t,n)}}function Cc(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new Wp),t.forEach(function(r){var o=em.bind(null,e,r);n.has(r)||(n.add(r),r.then(o,o))})}}function yt(e,t){var n=t.deletions;if(n!==null)for(var r=0;ro&&(o=a),r&=~i}if(r=o,r=Me()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*Gp(r/1960))-r,10e?16:e,Jt===null)var r=!1;else{if(e=Jt,Jt=null,eo=0,(pe&6)!==0)throw Error(u(331));var o=pe;for(pe|=4,K=e.current;K!==null;){var i=K,a=i.child;if((K.flags&16)!==0){var p=i.deletions;if(p!==null){for(var y=0;yMe()-uu?Sn(e,0):iu|=n),et(e,t)}function Dc(e,t){t===0&&((e.mode&1)===0?t=1:(t=cl,cl<<=1,(cl&130023424)===0&&(cl=4194304)));var n=Ye();e=bt(e,t),e!==null&&(gr(e,t,n),et(e,n))}function Jp(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),Dc(e,n)}function em(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,o=e.memoizedState;o!==null&&(n=o.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(u(314))}r!==null&&r.delete(t),Dc(e,n)}var Ac;Ac=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||Xe.current)qe=!0;else{if((e.lanes&n)===0&&(t.flags&128)===0)return qe=!1,Bp(e,t,n);qe=(e.flags&131072)!==0}else qe=!1,Ee&&(t.flags&1048576)!==0&&ga(t,Ll,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;Gl(e,t),e=t.pendingProps;var o=Fn(t,We.current);Hn(t,n),o=Ai(null,t,r,e,o,n);var i=Fi();return t.flags|=1,typeof o=="object"&&o!==null&&typeof o.render=="function"&&o.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,Ze(r)?(i=!0,Rl(t)):i=!1,t.memoizedState=o.state!==null&&o.state!==void 0?o.state:null,Ti(t),o.updater=Hl,t.stateNode=o,o._reactInternals=t,Hi(t,r,e,n),t=Yi(null,t,r,!0,i,n)):(t.tag=0,Ee&&i&&Si(t),Qe(null,t,o,n),t=t.child),t;case 16:r=t.elementType;e:{switch(Gl(e,t),e=t.pendingProps,o=r._init,r=o(r._payload),t.type=r,o=t.tag=nm(r),e=vt(r,e),o){case 0:t=Qi(null,t,r,e,n);break e;case 1:t=cc(null,t,r,e,n);break e;case 11:t=oc(null,t,r,e,n);break e;case 14:t=ic(null,t,r,vt(r.type,e),n);break e}throw Error(u(306,r,""))}return t;case 0:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:vt(r,o),Qi(e,t,r,o,n);case 1:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:vt(r,o),cc(e,t,r,o,n);case 3:e:{if(dc(t),e===null)throw Error(u(387));r=t.pendingProps,i=t.memoizedState,o=i.element,_a(e,t),Al(t,r,null,n);var a=t.memoizedState;if(r=a.element,i.isDehydrated)if(i={element:r,isDehydrated:!1,cache:a.cache,pendingSuspenseBoundaries:a.pendingSuspenseBoundaries,transitions:a.transitions},t.updateQueue.baseState=i,t.memoizedState=i,t.flags&256){o=Gn(Error(u(423)),t),t=fc(e,t,r,n,o);break e}else if(r!==o){o=Gn(Error(u(424)),t),t=fc(e,t,r,n,o);break e}else for(lt=Ht(t.stateNode.containerInfo.firstChild),rt=t,Ee=!0,ht=null,n=Ca(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if($n(),r===o){t=zt(e,t,n);break e}Qe(e,t,r,n)}t=t.child}return t;case 5:return Ra(t),e===null&&Ci(t),r=t.type,o=t.pendingProps,i=e!==null?e.memoizedProps:null,a=o.children,hi(r,o)?a=null:i!==null&&hi(r,i)&&(t.flags|=32),ac(e,t),Qe(e,t,a,n),t.child;case 6:return e===null&&Ci(t),null;case 13:return pc(e,t,n);case 4:return Li(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=Vn(t,null,r,n):Qe(e,t,r,n),t.child;case 11:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:vt(r,o),oc(e,t,r,o,n);case 7:return Qe(e,t,t.pendingProps,n),t.child;case 8:return Qe(e,t,t.pendingProps.children,n),t.child;case 12:return Qe(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,o=t.pendingProps,i=t.memoizedProps,a=o.value,ge(zl,r._currentValue),r._currentValue=a,i!==null)if(mt(i.value,a)){if(i.children===o.children&&!Xe.current){t=zt(e,t,n);break e}}else for(i=t.child,i!==null&&(i.return=t);i!==null;){var p=i.dependencies;if(p!==null){a=i.child;for(var y=p.firstContext;y!==null;){if(y.context===r){if(i.tag===1){y=Ot(-1,n&-n),y.tag=2;var C=i.updateQueue;if(C!==null){C=C.shared;var O=C.pending;O===null?y.next=y:(y.next=O.next,O.next=y),C.pending=y}}i.lanes|=n,y=i.alternate,y!==null&&(y.lanes|=n),Ri(i.return,n,t),p.lanes|=n;break}y=y.next}}else if(i.tag===10)a=i.type===t.type?null:i.child;else if(i.tag===18){if(a=i.return,a===null)throw Error(u(341));a.lanes|=n,p=a.alternate,p!==null&&(p.lanes|=n),Ri(a,n,t),a=i.sibling}else a=i.child;if(a!==null)a.return=i;else for(a=i;a!==null;){if(a===t){a=null;break}if(i=a.sibling,i!==null){i.return=a.return,a=i;break}a=a.return}i=a}Qe(e,t,o.children,n),t=t.child}return t;case 9:return o=t.type,r=t.pendingProps.children,Hn(t,n),o=st(o),r=r(o),t.flags|=1,Qe(e,t,r,n),t.child;case 14:return r=t.type,o=vt(r,t.pendingProps),o=vt(r.type,o),ic(e,t,r,o,n);case 15:return uc(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:vt(r,o),Gl(e,t),t.tag=1,Ze(r)?(e=!0,Rl(t)):e=!1,Hn(t,n),qa(t,r,o),Hi(t,r,o,n),Yi(null,t,r,!0,e,n);case 19:return hc(e,t,n);case 22:return sc(e,t,n)}throw Error(u(156,t.tag))};function Fc(e,t){return ys(e,t)}function tm(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function dt(e,t,n,r){return new tm(e,t,n,r)}function hu(e){return e=e.prototype,!(!e||!e.isReactComponent)}function nm(e){if(typeof e=="function")return hu(e)?1:0;if(e!=null){if(e=e.$$typeof,e===ie)return 11;if(e===Oe)return 14}return 2}function nn(e,t){var n=e.alternate;return n===null?(n=dt(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function lo(e,t,n,r,o,i){var a=2;if(r=e,typeof e=="function")hu(e)&&(a=1);else if(typeof e=="string")a=5;else e:switch(e){case ue:return En(n.children,o,i,t);case ye:a=8,o|=8;break;case de:return e=dt(12,n,t,o|2),e.elementType=de,e.lanes=i,e;case be:return e=dt(13,n,t,o),e.elementType=be,e.lanes=i,e;case Ne:return e=dt(19,n,t,o),e.elementType=Ne,e.lanes=i,e;case he:return oo(n,o,i,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case xe:a=10;break e;case Ce:a=9;break e;case ie:a=11;break e;case Oe:a=14;break e;case _e:a=16,r=null;break e}throw Error(u(130,e==null?e:typeof e,""))}return t=dt(a,n,t,o),t.elementType=e,t.type=r,t.lanes=i,t}function En(e,t,n,r){return e=dt(7,e,r,t),e.lanes=n,e}function oo(e,t,n,r){return e=dt(22,e,r,t),e.elementType=he,e.lanes=n,e.stateNode={isHidden:!1},e}function vu(e,t,n){return e=dt(6,e,null,t),e.lanes=n,e}function gu(e,t,n){return t=dt(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function rm(e,t,n,r,o){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Wo(0),this.expirationTimes=Wo(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Wo(0),this.identifierPrefix=r,this.onRecoverableError=o,this.mutableSourceEagerHydrationData=null}function yu(e,t,n,r,o,i,a,p,y){return e=new rm(e,t,n,p,y),t===1?(t=1,i===!0&&(t|=8)):t=0,i=dt(3,null,null,t),e.current=i,i.stateNode=e,i.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},Ti(i),e}function lm(e,t,n){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(l)}catch(s){console.error(s)}}return l(),Cu.exports=vm(),Cu.exports}var Jc;function gm(){if(Jc)return po;Jc=1;var l=Ed();return po.createRoot=l.createRoot,po.hydrateRoot=l.hydrateRoot,po}var ym=gm();const xm=Sd(ym);/** + * @license lucide-react v0.460.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const wm=l=>l.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),Cd=(...l)=>l.filter((s,u,c)=>!!s&&s.trim()!==""&&c.indexOf(s)===u).join(" ").trim();/** + * @license lucide-react v0.460.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */var Sm={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};/** + * @license lucide-react v0.460.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const km=v.forwardRef(({color:l="currentColor",size:s=24,strokeWidth:u=2,absoluteStrokeWidth:c,className:d="",children:f,iconNode:h,...m},N)=>v.createElement("svg",{ref:N,...Sm,width:s,height:s,stroke:l,strokeWidth:c?Number(u)*24/Number(s):u,className:Cd("lucide",d),...m},[...h.map(([P,j])=>v.createElement(P,j)),...Array.isArray(f)?f:[f]]));/** + * @license lucide-react v0.460.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ft=(l,s)=>{const u=v.forwardRef(({className:c,...d},f)=>v.createElement(km,{ref:f,iconNode:s,className:Cd(`lucide-${wm(l)}`,c),...d}));return u.displayName=`${l}`,u};/** + * @license lucide-react v0.460.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Em=ft("Bot",[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]]);/** + * @license lucide-react v0.460.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Cm=ft("Boxes",[["path",{d:"M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z",key:"lc1i9w"}],["path",{d:"m7 16.5-4.74-2.85",key:"1o9zyk"}],["path",{d:"m7 16.5 5-3",key:"va8pkn"}],["path",{d:"M7 16.5v5.17",key:"jnp8gn"}],["path",{d:"M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z",key:"8zsnat"}],["path",{d:"m17 16.5-5-3",key:"8arw3v"}],["path",{d:"m17 16.5 4.74-2.85",key:"8rfmw"}],["path",{d:"M17 16.5v5.17",key:"k6z78m"}],["path",{d:"M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z",key:"1xygjf"}],["path",{d:"M12 8 7.26 5.15",key:"1vbdud"}],["path",{d:"m12 8 4.74-2.85",key:"3rx089"}],["path",{d:"M12 13.5V8",key:"1io7kd"}]]);/** + * @license lucide-react v0.460.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Nm=ft("Brain",[["path",{d:"M12 5a3 3 0 1 0-5.997.125 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588A4 4 0 1 0 12 18Z",key:"l5xja"}],["path",{d:"M12 5a3 3 0 1 1 5.997.125 4 4 0 0 1 2.526 5.77 4 4 0 0 1-.556 6.588A4 4 0 1 1 12 18Z",key:"ep3f8r"}],["path",{d:"M15 13a4.5 4.5 0 0 1-3-4 4.5 4.5 0 0 1-3 4",key:"1p4c4q"}],["path",{d:"M17.599 6.5a3 3 0 0 0 .399-1.375",key:"tmeiqw"}],["path",{d:"M6.003 5.125A3 3 0 0 0 6.401 6.5",key:"105sqy"}],["path",{d:"M3.477 10.896a4 4 0 0 1 .585-.396",key:"ql3yin"}],["path",{d:"M19.938 10.5a4 4 0 0 1 .585.396",key:"1qfode"}],["path",{d:"M6 18a4 4 0 0 1-1.967-.516",key:"2e4loj"}],["path",{d:"M19.967 17.484A4 4 0 0 1 18 18",key:"159ez6"}]]);/** + * @license lucide-react v0.460.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const _m=ft("Check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);/** + * @license lucide-react v0.460.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Pm=ft("Command",[["path",{d:"M15 6v12a3 3 0 1 0 3-3H6a3 3 0 1 0 3 3V6a3 3 0 1 0-3 3h12a3 3 0 1 0-3-3",key:"11bfej"}]]);/** + * @license lucide-react v0.460.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const jm=ft("Construction",[["rect",{x:"2",y:"6",width:"20",height:"8",rx:"1",key:"1estib"}],["path",{d:"M17 14v7",key:"7m2elx"}],["path",{d:"M7 14v7",key:"1cm7wv"}],["path",{d:"M17 3v3",key:"1v4jwn"}],["path",{d:"M7 3v3",key:"7o6guu"}],["path",{d:"M10 14 2.3 6.3",key:"1023jk"}],["path",{d:"m14 6 7.7 7.7",key:"1s8pl2"}],["path",{d:"m8 6 8 8",key:"hl96qh"}]]);/** + * @license lucide-react v0.460.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Rm=ft("Copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);/** + * @license lucide-react v0.460.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Mm=ft("Cpu",[["rect",{width:"16",height:"16",x:"4",y:"4",rx:"2",key:"14l7u7"}],["rect",{width:"6",height:"6",x:"9",y:"9",rx:"1",key:"5aljv4"}],["path",{d:"M15 2v2",key:"13l42r"}],["path",{d:"M15 20v2",key:"15mkzm"}],["path",{d:"M2 15h2",key:"1gxd5l"}],["path",{d:"M2 9h2",key:"1bbxkp"}],["path",{d:"M20 15h2",key:"19e6y8"}],["path",{d:"M20 9h2",key:"19tzq7"}],["path",{d:"M9 2v2",key:"165o2o"}],["path",{d:"M9 20v2",key:"i2bqo8"}]]);/** + * @license lucide-react v0.460.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Tm=ft("Plug",[["path",{d:"M12 22v-5",key:"1ega77"}],["path",{d:"M9 8V2",key:"14iosj"}],["path",{d:"M15 8V2",key:"18g5xt"}],["path",{d:"M18 8v5a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V8Z",key:"osxo6l"}]]);/** + * @license lucide-react v0.460.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Lm=ft("Route",[["circle",{cx:"6",cy:"19",r:"3",key:"1kj8tv"}],["path",{d:"M9 19h8.5a3.5 3.5 0 0 0 0-7h-11a3.5 3.5 0 0 1 0-7H15",key:"1d8sl"}],["circle",{cx:"18",cy:"5",r:"3",key:"gq8acd"}]]);/** + * @license lucide-react v0.460.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const bm=ft("Sparkles",[["path",{d:"M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z",key:"4pj2yx"}],["path",{d:"M20 3v4",key:"1olli1"}],["path",{d:"M22 5h-4",key:"1gvqau"}],["path",{d:"M4 17v2",key:"vumght"}],["path",{d:"M5 18H3",key:"zchphs"}]]);/** + * @license lucide-react v0.460.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Om=ft("Trash2",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]]),Au=[{id:"models",label:"Modelle & Routing",hint:"Modelle kuratieren, Gruppen & Auto-Routing",icon:Cm},{id:"routing",label:"Routing",hint:"Gateway-Regeln: schnell ↔ schwer",icon:Lm},{id:"system",label:"System",hint:"Metriken, Dienste, Updates",icon:Mm},{id:"memory",label:"Gedächtnis",hint:"Geteiltes Memory verwalten",icon:Nm},{id:"connect",label:"Verbinden",hint:"IDE-/Agent-Configs erzeugen",icon:Tm},{id:"agent",label:"Hermes",hint:"Agent-Status & WebUI öffnen",icon:Em}];var ed=1,zm=.9,Im=.8,Dm=.17,Pu=.1,ju=.999,Am=.9999,Fm=.99,Um=/[\\\/_+.#"@\[\(\{&]/,Bm=/[\\\/_+.#"@\[\(\{&]/g,$m=/[\s-]/,Nd=/[\s-]/g;function Fu(l,s,u,c,d,f,h){if(f===s.length)return d===l.length?ed:Fm;var m=`${d},${f}`;if(h[m]!==void 0)return h[m];for(var N=c.charAt(f),P=u.indexOf(N,d),j=0,_,T,b,H;P>=0;)_=Fu(l,s,u,c,P+1,f+1,h),_>j&&(P===d?_*=ed:Um.test(l.charAt(P-1))?(_*=Im,b=l.slice(d,P-1).match(Bm),b&&d>0&&(_*=Math.pow(ju,b.length))):$m.test(l.charAt(P-1))?(_*=zm,H=l.slice(d,P-1).match(Nd),H&&d>0&&(_*=Math.pow(ju,H.length))):(_*=Dm,d>0&&(_*=Math.pow(ju,P-d))),l.charAt(P)!==s.charAt(f)&&(_*=Am)),(__&&(_=T*Pu)),_>j&&(j=_),P=u.indexOf(N,P+1);return h[m]=j,j}function td(l){return l.toLowerCase().replace(Nd," ")}function Vm(l,s,u){return l=u&&u.length>0?`${l+" "+u.join(" ")}`:l,Fu(l,s,td(l),td(s),0,0,{})}function sn(l,s,{checkForDefaultPrevented:u=!0}={}){return function(d){if(l==null||l(d),u===!1||!d.defaultPrevented)return s==null?void 0:s(d)}}function nd(l,s){if(typeof l=="function")return l(s);l!=null&&(l.current=s)}function ur(...l){return s=>{let u=!1;const c=l.map(d=>{const f=nd(d,s);return!u&&typeof f=="function"&&(u=!0),f});if(u)return()=>{for(let d=0;d{var V;const{scope:T,children:b,...H}=_,M=((V=T==null?void 0:T[l])==null?void 0:V[N])||m,R=v.useMemo(()=>H,Object.values(H));return g.jsx(M.Provider,{value:R,children:b})};P.displayName=f+"Provider";function j(_,T){var M;const b=((M=T==null?void 0:T[l])==null?void 0:M[N])||m,H=v.useContext(b);if(H)return H;if(h!==void 0)return h;throw new Error(`\`${_}\` must be used within \`${f}\``)}return[P,j]}const d=()=>{const f=u.map(h=>v.createContext(h));return function(m){const N=(m==null?void 0:m[l])||f;return v.useMemo(()=>({[`__scope${l}`]:{...m,[l]:N}}),[m,N])}};return d.scopeName=l,[c,Hm(d,...s)]}function Hm(...l){const s=l[0];if(l.length===1)return s;const u=()=>{const c=l.map(d=>({useScope:d(),scopeName:d.scopeName}));return function(f){const h=c.reduce((m,{useScope:N,scopeName:P})=>{const _=N(f)[`__scope${P}`];return{...m,..._}},{});return v.useMemo(()=>({[`__scope${s.scopeName}`]:h}),[h])}};return u.scopeName=s.scopeName,u}var Jr=globalThis!=null&&globalThis.document?v.useLayoutEffect:()=>{},Km=Hu[" useId ".trim().toString()]||(()=>{}),Gm=0;function At(l){const[s,u]=v.useState(Km());return Jr(()=>{u(c=>c??String(Gm++))},[l]),s?`radix-${s}`:""}var Qm=Hu[" useInsertionEffect ".trim().toString()]||Jr;function Ym({prop:l,defaultProp:s,onChange:u=()=>{},caller:c}){const[d,f,h]=Xm({defaultProp:s,onChange:u}),m=l!==void 0,N=m?l:d;{const j=v.useRef(l!==void 0);v.useEffect(()=>{const _=j.current;_!==m&&console.warn(`${c} is changing from ${_?"controlled":"uncontrolled"} to ${m?"controlled":"uncontrolled"}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),j.current=m},[m,c])}const P=v.useCallback(j=>{var _;if(m){const T=Zm(j)?j(l):j;T!==l&&((_=h.current)==null||_.call(h,T))}else f(j)},[m,l,f,h]);return[N,P]}function Xm({defaultProp:l,onChange:s}){const[u,c]=v.useState(l),d=v.useRef(u),f=v.useRef(s);return Qm(()=>{f.current=s},[s]),v.useEffect(()=>{var h;d.current!==u&&((h=f.current)==null||h.call(f,u),d.current=u)},[u,d]),[u,c,f]}function Zm(l){return typeof l=="function"}var _d=Ed();function Pd(l){const s=v.forwardRef((u,c)=>{let{children:d,...f}=u,h=null,m=!1;const N=[];rd(d)&&typeof mo=="function"&&(d=mo(d._payload)),v.Children.forEach(d,T=>{var b;if(nh(T)){m=!0;const H=T;let M="child"in H.props?H.props.child:H.props.children;rd(M)&&typeof mo=="function"&&(M=mo(M._payload)),h=Jm(H,M),N.push((b=h==null?void 0:h.props)==null?void 0:b.children)}else N.push(T)}),h?h=v.cloneElement(h,void 0,N):!m&&v.Children.count(d)===1&&v.isValidElement(d)&&(h=d);const P=h?th(h):void 0,j=_n(c,P);if(!h){if(d||d===0)throw new Error(m?ih(l):oh(l));return d}const _=eh(f,h.props??{});return h.type!==v.Fragment&&(_.ref=c?j:P),v.cloneElement(h,_)});return s.displayName=`${l}.Slot`,s}var qm=Symbol.for("radix.slottable"),Jm=(l,s)=>{if("child"in l.props){const u=l.props.child;return v.isValidElement(u)?v.cloneElement(u,void 0,l.props.children(u.props.children)):null}return v.isValidElement(s)?s:null};function eh(l,s){const u={...s};for(const c in s){const d=l[c],f=s[c];/^on[A-Z]/.test(c)?d&&f?u[c]=(...m)=>{const N=f(...m);return d(...m),N}:d&&(u[c]=d):c==="style"?u[c]={...d,...f}:c==="className"&&(u[c]=[d,f].filter(Boolean).join(" "))}return{...l,...u}}function th(l){var c,d;let s=(c=Object.getOwnPropertyDescriptor(l.props,"ref"))==null?void 0:c.get,u=s&&"isReactWarning"in s&&s.isReactWarning;return u?l.ref:(s=(d=Object.getOwnPropertyDescriptor(l,"ref"))==null?void 0:d.get,u=s&&"isReactWarning"in s&&s.isReactWarning,u?l.props.ref:l.props.ref||l.ref)}function nh(l){return v.isValidElement(l)&&typeof l.type=="function"&&"__radixId"in l.type&&l.type.__radixId===qm}var rh=Symbol.for("react.lazy");function rd(l){return l!=null&&typeof l=="object"&&"$$typeof"in l&&l.$$typeof===rh&&"_payload"in l&&lh(l._payload)}function lh(l){return typeof l=="object"&&l!==null&&"then"in l}var oh=l=>`${l} failed to slot onto its children. Expected a single React element child or \`Slottable\`.`,ih=l=>`${l} failed to slot onto its \`Slottable\`. Expected \`Slottable\` to receive a single React element child.`,mo=Hu[" use ".trim().toString()],uh=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],Ve=uh.reduce((l,s)=>{const u=Pd(`Primitive.${s}`),c=v.forwardRef((d,f)=>{const{asChild:h,...m}=d,N=h?u:s;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),g.jsx(N,{...m,ref:f})});return c.displayName=`Primitive.${s}`,{...l,[s]:c}},{});function sh(l,s){l&&_d.flushSync(()=>l.dispatchEvent(s))}function el(l){const s=v.useRef(l);return v.useEffect(()=>{s.current=l}),v.useMemo(()=>((...u)=>{var c;return(c=s.current)==null?void 0:c.call(s,...u)}),[])}function ah(l,s=globalThis==null?void 0:globalThis.document){const u=el(l);v.useEffect(()=>{const c=d=>{d.key==="Escape"&&u(d)};return s.addEventListener("keydown",c,{capture:!0}),()=>s.removeEventListener("keydown",c,{capture:!0})},[u,s])}var ch="DismissableLayer",Uu="dismissableLayer.update",dh="dismissableLayer.pointerDownOutside",fh="dismissableLayer.focusOutside",ld,Ku=v.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set,dismissableSurfaces:new Set}),jd=v.forwardRef((l,s)=>{const{disableOutsidePointerEvents:u=!1,deferPointerDownOutside:c=!1,onEscapeKeyDown:d,onPointerDownOutside:f,onFocusOutside:h,onInteractOutside:m,onDismiss:N,...P}=l,j=v.useContext(Ku),[_,T]=v.useState(null),b=(_==null?void 0:_.ownerDocument)??(globalThis==null?void 0:globalThis.document),[,H]=v.useState({}),M=_n(s,de=>T(de)),R=Array.from(j.layers),[V]=[...j.layersWithOutsidePointerEventsDisabled].slice(-1),W=R.indexOf(V),te=_?R.indexOf(_):-1,q=j.layersWithOutsidePointerEventsDisabled.size>0,le=te>=W,ne=v.useRef(!1),ue=vh(de=>{const xe=de.target;if(!(xe instanceof Node))return;const Ce=[...j.branches].some(ie=>ie.contains(xe));!le||Ce||(f==null||f(de),m==null||m(de),de.defaultPrevented||N==null||N())},{ownerDocument:b,deferPointerDownOutside:c,isDeferredPointerDownOutsideRef:ne,dismissableSurfaces:j.dismissableSurfaces}),ye=gh(de=>{if(c&&ne.current)return;const xe=de.target;[...j.branches].some(ie=>ie.contains(xe))||(h==null||h(de),m==null||m(de),de.defaultPrevented||N==null||N())},b);return ah(de=>{te===j.layers.size-1&&(d==null||d(de),!de.defaultPrevented&&N&&(de.preventDefault(),N()))},b),v.useEffect(()=>{if(_)return u&&(j.layersWithOutsidePointerEventsDisabled.size===0&&(ld=b.body.style.pointerEvents,b.body.style.pointerEvents="none"),j.layersWithOutsidePointerEventsDisabled.add(_)),j.layers.add(_),od(),()=>{u&&(j.layersWithOutsidePointerEventsDisabled.delete(_),j.layersWithOutsidePointerEventsDisabled.size===0&&(b.body.style.pointerEvents=ld))}},[_,b,u,j]),v.useEffect(()=>()=>{_&&(j.layers.delete(_),j.layersWithOutsidePointerEventsDisabled.delete(_),od())},[_,j]),v.useEffect(()=>{const de=()=>H({});return document.addEventListener(Uu,de),()=>document.removeEventListener(Uu,de)},[]),g.jsx(Ve.div,{...P,ref:M,style:{pointerEvents:q?le?"auto":"none":void 0,...l.style},onFocusCapture:sn(l.onFocusCapture,ye.onFocusCapture),onBlurCapture:sn(l.onBlurCapture,ye.onBlurCapture),onPointerDownCapture:sn(l.onPointerDownCapture,ue.onPointerDownCapture)})});jd.displayName=ch;var ph="DismissableLayerBranch",mh=v.forwardRef((l,s)=>{const u=v.useContext(Ku),c=v.useRef(null),d=_n(s,c);return v.useEffect(()=>{const f=c.current;if(f)return u.branches.add(f),()=>{u.branches.delete(f)}},[u.branches]),g.jsx(Ve.div,{...l,ref:d})});mh.displayName=ph;function hh(){const l=v.useContext(Ku),[s,u]=v.useState(null);return v.useEffect(()=>{if(s)return l.dismissableSurfaces.add(s),()=>{l.dismissableSurfaces.delete(s)}},[s,l.dismissableSurfaces]),u}function vh(l,s){const{ownerDocument:u=globalThis==null?void 0:globalThis.document,deferPointerDownOutside:c=!1,isDeferredPointerDownOutsideRef:d,dismissableSurfaces:f}=s,h=el(l),m=v.useRef(!1),N=v.useRef(!1),P=v.useRef(new Map),j=v.useRef(()=>{});return v.useEffect(()=>{function _(){N.current=!1,d.current=!1,P.current.clear()}function T(){return Array.from(P.current.values()).some(Boolean)}function b(W){if(!N.current)return;const te=W.target;te instanceof Node&&[...f].some(le=>le.contains(te))||P.current.set(W.type,!0),W.type==="click"&&window.setTimeout(()=>{N.current&&j.current()},0)}function H(W){N.current&&P.current.set(W.type,!1)}const M=W=>{if(W.target&&!m.current){let te=function(){u.removeEventListener("click",j.current);const le=T();_(),le||Rd(dh,h,q,{discrete:!0})};const q={originalEvent:W};N.current=!0,d.current=c&&W.button===0,P.current.clear(),!c||W.button!==0?te():(u.removeEventListener("click",j.current),j.current=te,u.addEventListener("click",j.current,{once:!0}))}else u.removeEventListener("click",j.current),_();m.current=!1},R=["pointerup","mousedown","mouseup","touchstart","touchend","click"];for(const W of R)u.addEventListener(W,b,!0),u.addEventListener(W,H);const V=window.setTimeout(()=>{u.addEventListener("pointerdown",M)},0);return()=>{window.clearTimeout(V),u.removeEventListener("pointerdown",M),u.removeEventListener("click",j.current);for(const W of R)u.removeEventListener(W,b,!0),u.removeEventListener(W,H)}},[u,h,c,d,f]),{onPointerDownCapture:()=>m.current=!0}}function gh(l,s=globalThis==null?void 0:globalThis.document){const u=el(l),c=v.useRef(!1);return v.useEffect(()=>{const d=f=>{f.target&&!c.current&&Rd(fh,u,{originalEvent:f},{discrete:!1})};return s.addEventListener("focusin",d),()=>s.removeEventListener("focusin",d)},[s,u]),{onFocusCapture:()=>c.current=!0,onBlurCapture:()=>c.current=!1}}function od(){const l=new CustomEvent(Uu);document.dispatchEvent(l)}function Rd(l,s,u,{discrete:c}){const d=u.originalEvent.target,f=new CustomEvent(l,{bubbles:!1,cancelable:!0,detail:u});s&&d.addEventListener(l,s,{once:!0}),c?sh(d,f):d.dispatchEvent(f)}var Ru="focusScope.autoFocusOnMount",Mu="focusScope.autoFocusOnUnmount",id={bubbles:!1,cancelable:!0},yh="FocusScope",Md=v.forwardRef((l,s)=>{const{loop:u=!1,trapped:c=!1,onMountAutoFocus:d,onUnmountAutoFocus:f,...h}=l,[m,N]=v.useState(null),P=el(d),j=el(f),_=v.useRef(null),T=_n(s,M=>N(M)),b=v.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;v.useEffect(()=>{if(c){let M=function(te){if(b.paused||!m)return;const q=te.target;m.contains(q)?_.current=q:un(_.current,{select:!0})},R=function(te){if(b.paused||!m)return;const q=te.relatedTarget;q!==null&&(m.contains(q)||un(_.current,{select:!0}))},V=function(te){if(document.activeElement===document.body)for(const le of te)le.removedNodes.length>0&&un(m)};document.addEventListener("focusin",M),document.addEventListener("focusout",R);const W=new MutationObserver(V);return m&&W.observe(m,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",M),document.removeEventListener("focusout",R),W.disconnect()}}},[c,m,b.paused]),v.useEffect(()=>{if(m){sd.add(b);const M=document.activeElement;if(!m.contains(M)){const V=new CustomEvent(Ru,id);m.addEventListener(Ru,P),m.dispatchEvent(V),V.defaultPrevented||(xh(Ch(Td(m)),{select:!0}),document.activeElement===M&&un(m))}return()=>{m.removeEventListener(Ru,P),setTimeout(()=>{const V=new CustomEvent(Mu,id);m.addEventListener(Mu,j),m.dispatchEvent(V),V.defaultPrevented||un(M??document.body,{select:!0}),m.removeEventListener(Mu,j),sd.remove(b)},0)}}},[m,P,j,b]);const H=v.useCallback(M=>{if(!u&&!c||b.paused)return;const R=M.key==="Tab"&&!M.altKey&&!M.ctrlKey&&!M.metaKey,V=document.activeElement;if(R&&V){const W=M.currentTarget,[te,q]=wh(W);te&&q?!M.shiftKey&&V===q?(M.preventDefault(),u&&un(te,{select:!0})):M.shiftKey&&V===te&&(M.preventDefault(),u&&un(q,{select:!0})):V===W&&M.preventDefault()}},[u,c,b.paused]);return g.jsx(Ve.div,{tabIndex:-1,...h,ref:T,onKeyDown:H})});Md.displayName=yh;function xh(l,{select:s=!1}={}){const u=document.activeElement;for(const c of l)if(un(c,{select:s}),document.activeElement!==u)return}function wh(l){const s=Td(l),u=ud(s,l),c=ud(s.reverse(),l);return[u,c]}function Td(l){const s=[],u=document.createTreeWalker(l,NodeFilter.SHOW_ELEMENT,{acceptNode:c=>{const d=c.tagName==="INPUT"&&c.type==="hidden";return c.disabled||c.hidden||d?NodeFilter.FILTER_SKIP:c.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;u.nextNode();)s.push(u.currentNode);return s}function ud(l,s){for(const u of l)if(!Sh(u,{upTo:s}))return u}function Sh(l,{upTo:s}){if(getComputedStyle(l).visibility==="hidden")return!0;for(;l;){if(s!==void 0&&l===s)return!1;if(getComputedStyle(l).display==="none")return!0;l=l.parentElement}return!1}function kh(l){return l instanceof HTMLInputElement&&"select"in l}function un(l,{select:s=!1}={}){if(l&&l.focus){const u=document.activeElement;l.focus({preventScroll:!0}),l!==u&&kh(l)&&s&&l.select()}}var sd=Eh();function Eh(){let l=[];return{add(s){const u=l[0];s!==u&&(u==null||u.pause()),l=ad(l,s),l.unshift(s)},remove(s){var u;l=ad(l,s),(u=l[0])==null||u.resume()}}}function ad(l,s){const u=[...l],c=u.indexOf(s);return c!==-1&&u.splice(c,1),u}function Ch(l){return l.filter(s=>s.tagName!=="A")}var Nh="Portal",Ld=v.forwardRef((l,s)=>{var m;const{container:u,...c}=l,[d,f]=v.useState(!1);Jr(()=>f(!0),[]);const h=u||d&&((m=globalThis==null?void 0:globalThis.document)==null?void 0:m.body);return h?_d.createPortal(g.jsx(Ve.div,{...c,ref:s}),h):null});Ld.displayName=Nh;function _h(l,s){return v.useReducer((u,c)=>s[u][c]??u,l)}var No=l=>{const{present:s,children:u}=l,c=Ph(s),d=typeof u=="function"?u({present:c.isPresent}):v.Children.only(u),f=jh(c.ref,Rh(d));return typeof u=="function"||c.isPresent?v.cloneElement(d,{ref:f}):null};No.displayName="Presence";function Ph(l){const[s,u]=v.useState(),c=v.useRef(null),d=v.useRef(l),f=v.useRef("none"),h=l?"mounted":"unmounted",[m,N]=_h(h,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return v.useEffect(()=>{const P=ho(c.current);f.current=m==="mounted"?P:"none"},[m]),Jr(()=>{const P=c.current,j=d.current;if(j!==l){const T=f.current,b=ho(P);l?N("MOUNT"):b==="none"||(P==null?void 0:P.display)==="none"?N("UNMOUNT"):N(j&&T!==b?"ANIMATION_OUT":"UNMOUNT"),d.current=l}},[l,N]),Jr(()=>{if(s){let P;const j=s.ownerDocument.defaultView??window,_=b=>{const M=ho(c.current).includes(CSS.escape(b.animationName));if(b.target===s&&M&&(N("ANIMATION_END"),!d.current)){const R=s.style.animationFillMode;s.style.animationFillMode="forwards",P=j.setTimeout(()=>{s.style.animationFillMode==="forwards"&&(s.style.animationFillMode=R)})}},T=b=>{b.target===s&&(f.current=ho(c.current))};return s.addEventListener("animationstart",T),s.addEventListener("animationcancel",_),s.addEventListener("animationend",_),()=>{j.clearTimeout(P),s.removeEventListener("animationstart",T),s.removeEventListener("animationcancel",_),s.removeEventListener("animationend",_)}}else N("ANIMATION_END")},[s,N]),{isPresent:["mounted","unmountSuspended"].includes(m),ref:v.useCallback(P=>{c.current=P?getComputedStyle(P):null,u(P)},[])}}function cd(l,s){if(typeof l=="function")return l(s);l!=null&&(l.current=s)}function jh(...l){const s=v.useRef(l);return s.current=l,v.useCallback(u=>{const c=s.current;let d=!1;const f=c.map(h=>{const m=cd(h,u);return!d&&typeof m=="function"&&(d=!0),m});if(d)return()=>{for(let h=0;h{Pt||(Pt={start:dd(),end:dd()});const{start:l,end:s}=Pt;return document.body.firstElementChild!==l&&document.body.insertAdjacentElement("afterbegin",l),document.body.lastElementChild!==s&&document.body.insertAdjacentElement("beforeend",s),vo++,()=>{vo===1&&(Pt==null||Pt.start.remove(),Pt==null||Pt.end.remove(),Pt=null),vo=Math.max(0,vo-1)}},[])}function dd(){const l=document.createElement("span");return l.setAttribute("data-radix-focus-guard",""),l.tabIndex=0,l.style.outline="none",l.style.opacity="0",l.style.position="fixed",l.style.pointerEvents="none",l}var jt=function(){return jt=Object.assign||function(s){for(var u,c=1,d=arguments.length;c"u")return Gh;var s=Qh(l),u=document.documentElement.clientWidth,c=window.innerWidth;return{left:s[0],top:s[1],right:s[2],gap:Math.max(0,c-u+s[2]-s[0])}},Xh=Id(),or="data-scroll-locked",Zh=function(l,s,u,c){var d=l.left,f=l.top,h=l.right,m=l.gap;return u===void 0&&(u="margin"),` + .`.concat(Lh,` { + overflow: hidden `).concat(c,`; + padding-right: `).concat(m,"px ").concat(c,`; + } + body[`).concat(or,`] { + overflow: hidden `).concat(c,`; + overscroll-behavior: contain; + `).concat([s&&"position: relative ".concat(c,";"),u==="margin"&&` + padding-left: `.concat(d,`px; + padding-top: `).concat(f,`px; + padding-right: `).concat(h,`px; + margin-left:0; + margin-top:0; + margin-right: `).concat(m,"px ").concat(c,`; + `),u==="padding"&&"padding-right: ".concat(m,"px ").concat(c,";")].filter(Boolean).join(""),` + } + + .`).concat(ko,` { + right: `).concat(m,"px ").concat(c,`; + } + + .`).concat(Eo,` { + margin-right: `).concat(m,"px ").concat(c,`; + } + + .`).concat(ko," .").concat(ko,` { + right: 0 `).concat(c,`; + } + + .`).concat(Eo," .").concat(Eo,` { + margin-right: 0 `).concat(c,`; + } + + body[`).concat(or,`] { + `).concat(bh,": ").concat(m,`px; + } +`)},pd=function(){var l=parseInt(document.body.getAttribute(or)||"0",10);return isFinite(l)?l:0},qh=function(){v.useEffect(function(){return document.body.setAttribute(or,(pd()+1).toString()),function(){var l=pd()-1;l<=0?document.body.removeAttribute(or):document.body.setAttribute(or,l.toString())}},[])},Jh=function(l){var s=l.noRelative,u=l.noImportant,c=l.gapMode,d=c===void 0?"margin":c;qh();var f=v.useMemo(function(){return Yh(d)},[d]);return v.createElement(Xh,{styles:Zh(f,!s,d,u?"":"!important")})},Bu=!1;if(typeof window<"u")try{var go=Object.defineProperty({},"passive",{get:function(){return Bu=!0,!0}});window.addEventListener("test",go,go),window.removeEventListener("test",go,go)}catch{Bu=!1}var qn=Bu?{passive:!1}:!1,ev=function(l){return l.tagName==="TEXTAREA"},Dd=function(l,s){if(!(l instanceof Element))return!1;var u=window.getComputedStyle(l);return u[s]!=="hidden"&&!(u.overflowY===u.overflowX&&!ev(l)&&u[s]==="visible")},tv=function(l){return Dd(l,"overflowY")},nv=function(l){return Dd(l,"overflowX")},md=function(l,s){var u=s.ownerDocument,c=s;do{typeof ShadowRoot<"u"&&c instanceof ShadowRoot&&(c=c.host);var d=Ad(l,c);if(d){var f=Fd(l,c),h=f[1],m=f[2];if(h>m)return!0}c=c.parentNode}while(c&&c!==u.body);return!1},rv=function(l){var s=l.scrollTop,u=l.scrollHeight,c=l.clientHeight;return[s,u,c]},lv=function(l){var s=l.scrollLeft,u=l.scrollWidth,c=l.clientWidth;return[s,u,c]},Ad=function(l,s){return l==="v"?tv(s):nv(s)},Fd=function(l,s){return l==="v"?rv(s):lv(s)},ov=function(l,s){return l==="h"&&s==="rtl"?-1:1},iv=function(l,s,u,c,d){var f=ov(l,window.getComputedStyle(s).direction),h=f*c,m=u.target,N=s.contains(m),P=!1,j=h>0,_=0,T=0;do{if(!m)break;var b=Fd(l,m),H=b[0],M=b[1],R=b[2],V=M-R-f*H;(H||V)&&Ad(l,m)&&(_+=V,T+=H);var W=m.parentNode;m=W&&W.nodeType===Node.DOCUMENT_FRAGMENT_NODE?W.host:W}while(!N&&m!==document.body||N&&(s.contains(m)||s===m));return(j&&Math.abs(_)<1||!j&&Math.abs(T)<1)&&(P=!0),P},yo=function(l){return"changedTouches"in l?[l.changedTouches[0].clientX,l.changedTouches[0].clientY]:[0,0]},hd=function(l){return[l.deltaX,l.deltaY]},vd=function(l){return l&&"current"in l?l.current:l},uv=function(l,s){return l[0]===s[0]&&l[1]===s[1]},sv=function(l){return` + .block-interactivity-`.concat(l,` {pointer-events: none;} + .allow-interactivity-`).concat(l,` {pointer-events: all;} +`)},av=0,Jn=[];function cv(l){var s=v.useRef([]),u=v.useRef([0,0]),c=v.useRef(),d=v.useState(av++)[0],f=v.useState(Id)[0],h=v.useRef(l);v.useEffect(function(){h.current=l},[l]),v.useEffect(function(){if(l.inert){document.body.classList.add("block-interactivity-".concat(d));var M=Th([l.lockRef.current],(l.shards||[]).map(vd),!0).filter(Boolean);return M.forEach(function(R){return R.classList.add("allow-interactivity-".concat(d))}),function(){document.body.classList.remove("block-interactivity-".concat(d)),M.forEach(function(R){return R.classList.remove("allow-interactivity-".concat(d))})}}},[l.inert,l.lockRef.current,l.shards]);var m=v.useCallback(function(M,R){if("touches"in M&&M.touches.length===2||M.type==="wheel"&&M.ctrlKey)return!h.current.allowPinchZoom;var V=yo(M),W=u.current,te="deltaX"in M?M.deltaX:W[0]-V[0],q="deltaY"in M?M.deltaY:W[1]-V[1],le,ne=M.target,ue=Math.abs(te)>Math.abs(q)?"h":"v";if("touches"in M&&ue==="h"&&ne.type==="range")return!1;var ye=window.getSelection(),de=ye&&ye.anchorNode,xe=de?de===ne||de.contains(ne):!1;if(xe)return!1;var Ce=md(ue,ne);if(!Ce)return!0;if(Ce?le=ue:(le=ue==="v"?"h":"v",Ce=md(ue,ne)),!Ce)return!1;if(!c.current&&"changedTouches"in M&&(te||q)&&(c.current=le),!le)return!0;var ie=c.current||le;return iv(ie,R,M,ie==="h"?te:q)},[]),N=v.useCallback(function(M){var R=M;if(!(!Jn.length||Jn[Jn.length-1]!==f)){var V="deltaY"in R?hd(R):yo(R),W=s.current.filter(function(le){return le.name===R.type&&(le.target===R.target||R.target===le.shadowParent)&&uv(le.delta,V)})[0];if(W&&W.should){R.cancelable&&R.preventDefault();return}if(!W){var te=(h.current.shards||[]).map(vd).filter(Boolean).filter(function(le){return le.contains(R.target)}),q=te.length>0?m(R,te[0]):!h.current.noIsolation;q&&R.cancelable&&R.preventDefault()}}},[]),P=v.useCallback(function(M,R,V,W){var te={name:M,delta:R,target:V,should:W,shadowParent:dv(V)};s.current.push(te),setTimeout(function(){s.current=s.current.filter(function(q){return q!==te})},1)},[]),j=v.useCallback(function(M){u.current=yo(M),c.current=void 0},[]),_=v.useCallback(function(M){P(M.type,hd(M),M.target,m(M,l.lockRef.current))},[]),T=v.useCallback(function(M){P(M.type,yo(M),M.target,m(M,l.lockRef.current))},[]);v.useEffect(function(){return Jn.push(f),l.setCallbacks({onScrollCapture:_,onWheelCapture:_,onTouchMoveCapture:T}),document.addEventListener("wheel",N,qn),document.addEventListener("touchmove",N,qn),document.addEventListener("touchstart",j,qn),function(){Jn=Jn.filter(function(M){return M!==f}),document.removeEventListener("wheel",N,qn),document.removeEventListener("touchmove",N,qn),document.removeEventListener("touchstart",j,qn)}},[]);var b=l.removeScrollBar,H=l.inert;return v.createElement(v.Fragment,null,H?v.createElement(f,{styles:sv(d)}):null,b?v.createElement(Jh,{noRelative:l.noRelative,gapMode:l.gapMode}):null)}function dv(l){for(var s=null;l!==null;)l instanceof ShadowRoot&&(s=l.host,l=l.host),l=l.parentNode;return s}const fv=Uh(zd,cv);var Ud=v.forwardRef(function(l,s){return v.createElement(_o,jt({},l,{ref:s,sideCar:fv}))});Ud.classNames=_o.classNames;var pv=function(l){if(typeof document>"u")return null;var s=Array.isArray(l)?l[0]:l;return s.ownerDocument.body},er=new WeakMap,xo=new WeakMap,wo={},Ou=0,Bd=function(l){return l&&(l.host||Bd(l.parentNode))},mv=function(l,s){return s.map(function(u){if(l.contains(u))return u;var c=Bd(u);return c&&l.contains(c)?c:(console.error("aria-hidden",u,"in not contained inside",l,". Doing nothing"),null)}).filter(function(u){return!!u})},hv=function(l,s,u,c){var d=mv(s,Array.isArray(l)?l:[l]);wo[u]||(wo[u]=new WeakMap);var f=wo[u],h=[],m=new Set,N=new Set(d),P=function(_){!_||m.has(_)||(m.add(_),P(_.parentNode))};d.forEach(P);var j=function(_){!_||N.has(_)||Array.prototype.forEach.call(_.children,function(T){if(m.has(T))j(T);else try{var b=T.getAttribute(c),H=b!==null&&b!=="false",M=(er.get(T)||0)+1,R=(f.get(T)||0)+1;er.set(T,M),f.set(T,R),h.push(T),M===1&&H&&xo.set(T,!0),R===1&&T.setAttribute(u,"true"),H||T.setAttribute(c,"true")}catch(V){console.error("aria-hidden: cannot operate on ",T,V)}})};return j(s),m.clear(),Ou++,function(){h.forEach(function(_){var T=er.get(_)-1,b=f.get(_)-1;er.set(_,T),f.set(_,b),T||(xo.has(_)||_.removeAttribute(c),xo.delete(_)),b||_.removeAttribute(u)}),Ou--,Ou||(er=new WeakMap,er=new WeakMap,xo=new WeakMap,wo={})}},vv=function(l,s,u){u===void 0&&(u="data-aria-hidden");var c=Array.from(Array.isArray(l)?l:[l]),d=pv(l);return d?(c.push.apply(c,Array.from(d.querySelectorAll("[aria-live], script"))),hv(c,d,u,"aria-hidden")):function(){return null}},Po="Dialog",[$d]=Wm(Po),[gv,St]=$d(Po),Vd=l=>{const{__scopeDialog:s,children:u,open:c,defaultOpen:d,onOpenChange:f,modal:h=!0}=l,m=v.useRef(null),N=v.useRef(null),[P,j]=Ym({prop:c,defaultProp:d??!1,onChange:f,caller:Po});return g.jsx(gv,{scope:s,triggerRef:m,contentRef:N,contentId:At(),titleId:At(),descriptionId:At(),open:P,onOpenChange:j,onOpenToggle:v.useCallback(()=>j(_=>!_),[j]),modal:h,children:u})};Vd.displayName=Po;var Wd="DialogTrigger",yv=v.forwardRef((l,s)=>{const{__scopeDialog:u,...c}=l,d=St(Wd,u),f=_n(s,d.triggerRef);return g.jsx(Ve.button,{type:"button","aria-haspopup":"dialog","aria-expanded":d.open,"aria-controls":d.open?d.contentId:void 0,"data-state":Qu(d.open),...c,ref:f,onClick:sn(l.onClick,d.onOpenToggle)})});yv.displayName=Wd;var Gu="DialogPortal",[xv,Hd]=$d(Gu,{forceMount:void 0}),Kd=l=>{const{__scopeDialog:s,forceMount:u,children:c,container:d}=l,f=St(Gu,s);return g.jsx(xv,{scope:s,forceMount:u,children:v.Children.map(c,h=>g.jsx(No,{present:u||f.open,children:g.jsx(Ld,{asChild:!0,container:d,children:h})}))})};Kd.displayName=Gu;var Co="DialogOverlay",Gd=v.forwardRef((l,s)=>{const u=Hd(Co,l.__scopeDialog),{forceMount:c=u.forceMount,...d}=l,f=St(Co,l.__scopeDialog);return f.modal?g.jsx(No,{present:c||f.open,children:g.jsx(Sv,{...d,ref:s})}):null});Gd.displayName=Co;var wv=Pd("DialogOverlay.RemoveScroll"),Sv=v.forwardRef((l,s)=>{const{__scopeDialog:u,...c}=l,d=St(Co,u),f=hh(),h=_n(s,f);return g.jsx(Ud,{as:wv,allowPinchZoom:!0,shards:[d.contentRef],children:g.jsx(Ve.div,{"data-state":Qu(d.open),...c,ref:h,style:{pointerEvents:"auto",...c.style}})})}),sr="DialogContent",Qd=v.forwardRef((l,s)=>{const u=Hd(sr,l.__scopeDialog),{forceMount:c=u.forceMount,...d}=l,f=St(sr,l.__scopeDialog);return g.jsx(No,{present:c||f.open,children:f.modal?g.jsx(kv,{...d,ref:s}):g.jsx(Ev,{...d,ref:s})})});Qd.displayName=sr;var kv=v.forwardRef((l,s)=>{const u=St(sr,l.__scopeDialog),c=v.useRef(null),d=_n(s,u.contentRef,c);return v.useEffect(()=>{const f=c.current;if(f)return vv(f)},[]),g.jsx(Yd,{...l,ref:d,trapFocus:u.open,disableOutsidePointerEvents:u.open,onCloseAutoFocus:sn(l.onCloseAutoFocus,f=>{var h;f.preventDefault(),(h=u.triggerRef.current)==null||h.focus()}),onPointerDownOutside:sn(l.onPointerDownOutside,f=>{const h=f.detail.originalEvent,m=h.button===0&&h.ctrlKey===!0;(h.button===2||m)&&f.preventDefault()}),onFocusOutside:sn(l.onFocusOutside,f=>f.preventDefault())})}),Ev=v.forwardRef((l,s)=>{const u=St(sr,l.__scopeDialog),c=v.useRef(!1),d=v.useRef(!1);return g.jsx(Yd,{...l,ref:s,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:f=>{var h,m;(h=l.onCloseAutoFocus)==null||h.call(l,f),f.defaultPrevented||(c.current||(m=u.triggerRef.current)==null||m.focus(),f.preventDefault()),c.current=!1,d.current=!1},onInteractOutside:f=>{var N,P;(N=l.onInteractOutside)==null||N.call(l,f),f.defaultPrevented||(c.current=!0,f.detail.originalEvent.type==="pointerdown"&&(d.current=!0));const h=f.target;((P=u.triggerRef.current)==null?void 0:P.contains(h))&&f.preventDefault(),f.detail.originalEvent.type==="focusin"&&d.current&&f.preventDefault()}})}),Yd=v.forwardRef((l,s)=>{const{__scopeDialog:u,trapFocus:c,onOpenAutoFocus:d,onCloseAutoFocus:f,...h}=l,m=St(sr,u);return Mh(),g.jsx(g.Fragment,{children:g.jsx(Md,{asChild:!0,loop:!0,trapped:c,onMountAutoFocus:d,onUnmountAutoFocus:f,children:g.jsx(jd,{role:"dialog",id:m.contentId,"aria-describedby":m.descriptionId,"aria-labelledby":m.titleId,"data-state":Qu(m.open),...h,ref:s,deferPointerDownOutside:!0,onDismiss:()=>m.onOpenChange(!1)})})})}),Xd="DialogTitle",Cv=v.forwardRef((l,s)=>{const{__scopeDialog:u,...c}=l,d=St(Xd,u);return g.jsx(Ve.h2,{id:d.titleId,...c,ref:s})});Cv.displayName=Xd;var Zd="DialogDescription",Nv=v.forwardRef((l,s)=>{const{__scopeDialog:u,...c}=l,d=St(Zd,u);return g.jsx(Ve.p,{id:d.descriptionId,...c,ref:s})});Nv.displayName=Zd;var qd="DialogClose",_v=v.forwardRef((l,s)=>{const{__scopeDialog:u,...c}=l,d=St(qd,u);return g.jsx(Ve.button,{type:"button",...c,ref:s,onClick:sn(l.onClick,()=>d.onOpenChange(!1))})});_v.displayName=qd;function Qu(l){return l?"open":"closed"}var Xr='[cmdk-group=""]',zu='[cmdk-group-items=""]',Pv='[cmdk-group-heading=""]',Jd='[cmdk-item=""]',gd=`${Jd}:not([aria-disabled="true"])`,$u="cmdk-item-select",rr="data-value",jv=(l,s,u)=>Vm(l,s,u),ef=v.createContext(void 0),tl=()=>v.useContext(ef),tf=v.createContext(void 0),Yu=()=>v.useContext(tf),nf=v.createContext(void 0),rf=v.forwardRef((l,s)=>{let u=lr(()=>{var w,A;return{search:"",value:(A=(w=l.value)!=null?w:l.defaultValue)!=null?A:"",selectedItemId:void 0,filtered:{count:0,items:new Map,groups:new Set}}}),c=lr(()=>new Set),d=lr(()=>new Map),f=lr(()=>new Map),h=lr(()=>new Set),m=lf(l),{label:N,children:P,value:j,onValueChange:_,filter:T,shouldFilter:b,loop:H,disablePointerSelection:M=!1,vimBindings:R=!0,...V}=l,W=At(),te=At(),q=At(),le=v.useRef(null),ne=Fv();Nn(()=>{if(j!==void 0){let w=j.trim();u.current.value=w,ue.emit()}},[j]),Nn(()=>{ne(6,be)},[]);let ue=v.useMemo(()=>({subscribe:w=>(h.current.add(w),()=>h.current.delete(w)),snapshot:()=>u.current,setState:(w,A,B)=>{var D,Y,re,se;if(!Object.is(u.current[w],A)){if(u.current[w]=A,w==="search")ie(),xe(),ne(1,Ce);else if(w==="value"){if(document.activeElement.hasAttribute("cmdk-input")||document.activeElement.hasAttribute("cmdk-root")){let ce=document.getElementById(q);ce?ce.focus():(D=document.getElementById(W))==null||D.focus()}if(ne(7,()=>{var ce;u.current.selectedItemId=(ce=Ne())==null?void 0:ce.id,ue.emit()}),B||ne(5,be),((Y=m.current)==null?void 0:Y.value)!==void 0){let ce=A??"";(se=(re=m.current).onValueChange)==null||se.call(re,ce);return}}ue.emit()}},emit:()=>{h.current.forEach(w=>w())}}),[]),ye=v.useMemo(()=>({value:(w,A,B)=>{var D;A!==((D=f.current.get(w))==null?void 0:D.value)&&(f.current.set(w,{value:A,keywords:B}),u.current.filtered.items.set(w,de(A,B)),ne(2,()=>{xe(),ue.emit()}))},item:(w,A)=>(c.current.add(w),A&&(d.current.has(A)?d.current.get(A).add(w):d.current.set(A,new Set([w]))),ne(3,()=>{ie(),xe(),u.current.value||Ce(),ue.emit()}),()=>{f.current.delete(w),c.current.delete(w),u.current.filtered.items.delete(w);let B=Ne();ne(4,()=>{ie(),(B==null?void 0:B.getAttribute("id"))===w&&Ce(),ue.emit()})}),group:w=>(d.current.has(w)||d.current.set(w,new Set),()=>{f.current.delete(w),d.current.delete(w)}),filter:()=>m.current.shouldFilter,label:N||l["aria-label"],getDisablePointerSelection:()=>m.current.disablePointerSelection,listId:W,inputId:q,labelId:te,listInnerRef:le}),[]);function de(w,A){var B,D;let Y=(D=(B=m.current)==null?void 0:B.filter)!=null?D:jv;return w?Y(w,u.current.search,A):0}function xe(){if(!u.current.search||m.current.shouldFilter===!1)return;let w=u.current.filtered.items,A=[];u.current.filtered.groups.forEach(D=>{let Y=d.current.get(D),re=0;Y.forEach(se=>{let ce=w.get(se);re=Math.max(ce,re)}),A.push([D,re])});let B=le.current;Oe().sort((D,Y)=>{var re,se;let ce=D.getAttribute("id"),De=Y.getAttribute("id");return((re=w.get(De))!=null?re:0)-((se=w.get(ce))!=null?se:0)}).forEach(D=>{let Y=D.closest(zu);Y?Y.appendChild(D.parentElement===Y?D:D.closest(`${zu} > *`)):B.appendChild(D.parentElement===B?D:D.closest(`${zu} > *`))}),A.sort((D,Y)=>Y[1]-D[1]).forEach(D=>{var Y;let re=(Y=le.current)==null?void 0:Y.querySelector(`${Xr}[${rr}="${encodeURIComponent(D[0])}"]`);re==null||re.parentElement.appendChild(re)})}function Ce(){let w=Oe().find(B=>B.getAttribute("aria-disabled")!=="true"),A=w==null?void 0:w.getAttribute(rr);ue.setState("value",A||void 0)}function ie(){var w,A,B,D;if(!u.current.search||m.current.shouldFilter===!1){u.current.filtered.count=c.current.size;return}u.current.filtered.groups=new Set;let Y=0;for(let re of c.current){let se=(A=(w=f.current.get(re))==null?void 0:w.value)!=null?A:"",ce=(D=(B=f.current.get(re))==null?void 0:B.keywords)!=null?D:[],De=de(se,ce);u.current.filtered.items.set(re,De),De>0&&Y++}for(let[re,se]of d.current)for(let ce of se)if(u.current.filtered.items.get(ce)>0){u.current.filtered.groups.add(re);break}u.current.filtered.count=Y}function be(){var w,A,B;let D=Ne();D&&(((w=D.parentElement)==null?void 0:w.firstChild)===D&&((B=(A=D.closest(Xr))==null?void 0:A.querySelector(Pv))==null||B.scrollIntoView({block:"nearest"})),D.scrollIntoView({block:"nearest"}))}function Ne(){var w;return(w=le.current)==null?void 0:w.querySelector(`${Jd}[aria-selected="true"]`)}function Oe(){var w;return Array.from(((w=le.current)==null?void 0:w.querySelectorAll(gd))||[])}function _e(w){let A=Oe()[w];A&&ue.setState("value",A.getAttribute(rr))}function he(w){var A;let B=Ne(),D=Oe(),Y=D.findIndex(se=>se===B),re=D[Y+w];(A=m.current)!=null&&A.loop&&(re=Y+w<0?D[D.length-1]:Y+w===D.length?D[0]:D[Y+w]),re&&ue.setState("value",re.getAttribute(rr))}function F(w){let A=Ne(),B=A==null?void 0:A.closest(Xr),D;for(;B&&!D;)B=w>0?Dv(B,Xr):Av(B,Xr),D=B==null?void 0:B.querySelector(gd);D?ue.setState("value",D.getAttribute(rr)):he(w)}let Z=()=>_e(Oe().length-1),U=w=>{w.preventDefault(),w.metaKey?Z():w.altKey?F(1):he(1)},S=w=>{w.preventDefault(),w.metaKey?_e(0):w.altKey?F(-1):he(-1)};return v.createElement(Ve.div,{ref:s,tabIndex:-1,...V,"cmdk-root":"",onKeyDown:w=>{var A;(A=V.onKeyDown)==null||A.call(V,w);let B=w.nativeEvent.isComposing||w.keyCode===229;if(!(w.defaultPrevented||B))switch(w.key){case"n":case"j":{R&&w.ctrlKey&&U(w);break}case"ArrowDown":{U(w);break}case"p":case"k":{R&&w.ctrlKey&&S(w);break}case"ArrowUp":{S(w);break}case"Home":{w.preventDefault(),_e(0);break}case"End":{w.preventDefault(),Z();break}case"Enter":{w.preventDefault();let D=Ne();if(D){let Y=new Event($u);D.dispatchEvent(Y)}}}}},v.createElement("label",{"cmdk-label":"",htmlFor:ye.inputId,id:ye.labelId,style:Bv},N),jo(l,w=>v.createElement(tf.Provider,{value:ue},v.createElement(ef.Provider,{value:ye},w))))}),Rv=v.forwardRef((l,s)=>{var u,c;let d=At(),f=v.useRef(null),h=v.useContext(nf),m=tl(),N=lf(l),P=(c=(u=N.current)==null?void 0:u.forceMount)!=null?c:h==null?void 0:h.forceMount;Nn(()=>{if(!P)return m.item(d,h==null?void 0:h.id)},[P]);let j=of(d,f,[l.value,l.children,f],l.keywords),_=Yu(),T=an(ne=>ne.value&&ne.value===j.current),b=an(ne=>P||m.filter()===!1?!0:ne.search?ne.filtered.items.get(d)>0:!0);v.useEffect(()=>{let ne=f.current;if(!(!ne||l.disabled))return ne.addEventListener($u,H),()=>ne.removeEventListener($u,H)},[b,l.onSelect,l.disabled]);function H(){var ne,ue;M(),(ue=(ne=N.current).onSelect)==null||ue.call(ne,j.current)}function M(){_.setState("value",j.current,!0)}if(!b)return null;let{disabled:R,value:V,onSelect:W,forceMount:te,keywords:q,...le}=l;return v.createElement(Ve.div,{ref:ur(f,s),...le,id:d,"cmdk-item":"",role:"option","aria-disabled":!!R,"aria-selected":!!T,"data-disabled":!!R,"data-selected":!!T,onPointerMove:R||m.getDisablePointerSelection()?void 0:M,onClick:R?void 0:H},l.children)}),Mv=v.forwardRef((l,s)=>{let{heading:u,children:c,forceMount:d,...f}=l,h=At(),m=v.useRef(null),N=v.useRef(null),P=At(),j=tl(),_=an(b=>d||j.filter()===!1?!0:b.search?b.filtered.groups.has(h):!0);Nn(()=>j.group(h),[]),of(h,m,[l.value,l.heading,N]);let T=v.useMemo(()=>({id:h,forceMount:d}),[d]);return v.createElement(Ve.div,{ref:ur(m,s),...f,"cmdk-group":"",role:"presentation",hidden:_?void 0:!0},u&&v.createElement("div",{ref:N,"cmdk-group-heading":"","aria-hidden":!0,id:P},u),jo(l,b=>v.createElement("div",{"cmdk-group-items":"",role:"group","aria-labelledby":u?P:void 0},v.createElement(nf.Provider,{value:T},b))))}),Tv=v.forwardRef((l,s)=>{let{alwaysRender:u,...c}=l,d=v.useRef(null),f=an(h=>!h.search);return!u&&!f?null:v.createElement(Ve.div,{ref:ur(d,s),...c,"cmdk-separator":"",role:"separator"})}),Lv=v.forwardRef((l,s)=>{let{onValueChange:u,...c}=l,d=l.value!=null,f=Yu(),h=an(P=>P.search),m=an(P=>P.selectedItemId),N=tl();return v.useEffect(()=>{l.value!=null&&f.setState("search",l.value)},[l.value]),v.createElement(Ve.input,{ref:s,...c,"cmdk-input":"",autoComplete:"off",autoCorrect:"off",spellCheck:!1,"aria-autocomplete":"list",role:"combobox","aria-expanded":!0,"aria-controls":N.listId,"aria-labelledby":N.labelId,"aria-activedescendant":m,id:N.inputId,type:"text",value:d?l.value:h,onChange:P=>{d||f.setState("search",P.target.value),u==null||u(P.target.value)}})}),bv=v.forwardRef((l,s)=>{let{children:u,label:c="Suggestions",...d}=l,f=v.useRef(null),h=v.useRef(null),m=an(P=>P.selectedItemId),N=tl();return v.useEffect(()=>{if(h.current&&f.current){let P=h.current,j=f.current,_,T=new ResizeObserver(()=>{_=requestAnimationFrame(()=>{let b=P.offsetHeight;j.style.setProperty("--cmdk-list-height",b.toFixed(1)+"px")})});return T.observe(P),()=>{cancelAnimationFrame(_),T.unobserve(P)}}},[]),v.createElement(Ve.div,{ref:ur(f,s),...d,"cmdk-list":"",role:"listbox",tabIndex:-1,"aria-activedescendant":m,"aria-label":c,id:N.listId},jo(l,P=>v.createElement("div",{ref:ur(h,N.listInnerRef),"cmdk-list-sizer":""},P)))}),Ov=v.forwardRef((l,s)=>{let{open:u,onOpenChange:c,overlayClassName:d,contentClassName:f,container:h,...m}=l;return v.createElement(Vd,{open:u,onOpenChange:c},v.createElement(Kd,{container:h},v.createElement(Gd,{"cmdk-overlay":"",className:d}),v.createElement(Qd,{"aria-label":l.label,"cmdk-dialog":"",className:f},v.createElement(rf,{ref:s,...m}))))}),zv=v.forwardRef((l,s)=>an(u=>u.filtered.count===0)?v.createElement(Ve.div,{ref:s,...l,"cmdk-empty":"",role:"presentation"}):null),Iv=v.forwardRef((l,s)=>{let{progress:u,children:c,label:d="Loading...",...f}=l;return v.createElement(Ve.div,{ref:s,...f,"cmdk-loading":"",role:"progressbar","aria-valuenow":u,"aria-valuemin":0,"aria-valuemax":100,"aria-label":d},jo(l,h=>v.createElement("div",{"aria-hidden":!0},h)))}),tr=Object.assign(rf,{List:bv,Item:Rv,Input:Lv,Group:Mv,Separator:Tv,Dialog:Ov,Empty:zv,Loading:Iv});function Dv(l,s){let u=l.nextElementSibling;for(;u;){if(u.matches(s))return u;u=u.nextElementSibling}}function Av(l,s){let u=l.previousElementSibling;for(;u;){if(u.matches(s))return u;u=u.previousElementSibling}}function lf(l){let s=v.useRef(l);return Nn(()=>{s.current=l}),s}var Nn=typeof window>"u"?v.useEffect:v.useLayoutEffect;function lr(l){let s=v.useRef();return s.current===void 0&&(s.current=l()),s}function an(l){let s=Yu(),u=()=>l(s.snapshot());return v.useSyncExternalStore(s.subscribe,u,u)}function of(l,s,u,c=[]){let d=v.useRef(),f=tl();return Nn(()=>{var h;let m=(()=>{var P;for(let j of u){if(typeof j=="string")return j.trim();if(typeof j=="object"&&"current"in j)return j.current?(P=j.current.textContent)==null?void 0:P.trim():d.current}})(),N=c.map(P=>P.trim());f.value(l,m,N),(h=s.current)==null||h.setAttribute(rr,m),d.current=m}),d}var Fv=()=>{let[l,s]=v.useState(),u=lr(()=>new Map);return Nn(()=>{u.current.forEach(c=>c()),u.current=new Map},[l]),(c,d)=>{u.current.set(c,d),s({})}};function Uv(l){let s=l.type;return typeof s=="function"?s(l.props):"render"in s?s.render(l.props):l}function jo({asChild:l,children:s},u){return l&&v.isValidElement(s)?v.cloneElement(Uv(s),{ref:s.ref},u(s.props.children)):u(s)}var Bv={position:"absolute",width:"1px",height:"1px",padding:"0",margin:"-1px",overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",borderWidth:"0"};function $v({onNavigate:l}){const[s,u]=v.useState(!1);return v.useEffect(()=>{const c=d=>{(d.metaKey||d.ctrlKey)&&d.key.toLowerCase()==="k"&&(d.preventDefault(),u(f=>!f))};return document.addEventListener("keydown",c),()=>document.removeEventListener("keydown",c)},[]),g.jsx(tr.Dialog,{open:s,onOpenChange:u,label:"Befehlspalette",className:"fixed inset-0 z-50 flex items-start justify-center bg-black/50 p-4 pt-[12vh]",onClick:()=>u(!1),children:g.jsxs("div",{className:"w-full max-w-lg overflow-hidden rounded-xl border border-border bg-popover text-popover-foreground shadow-2xl",onClick:c=>c.stopPropagation(),children:[g.jsx(tr.Input,{autoFocus:!0,placeholder:"Springe zu… (Modelle, Routing, System …)",className:"w-full border-b border-border bg-transparent px-4 py-3 text-sm outline-none placeholder:text-muted-foreground"}),g.jsxs(tr.List,{className:"max-h-80 overflow-y-auto p-2",children:[g.jsx(tr.Empty,{className:"px-3 py-6 text-center text-sm text-muted-foreground",children:"Nichts gefunden."}),g.jsx(tr.Group,{heading:"Bereiche",className:"px-1 py-1 text-xs text-muted-foreground",children:Au.map(c=>g.jsxs(tr.Item,{value:`${c.label} ${c.hint}`,onSelect:()=>{l(c.id),u(!1)},className:"flex cursor-pointer items-center gap-3 rounded-md px-3 py-2 text-sm text-foreground aria-selected:bg-accent aria-selected:text-accent-foreground",children:[g.jsx(c.icon,{className:"h-4 w-4 text-primary"}),g.jsx("span",{children:c.label}),g.jsx("span",{className:"ml-auto truncate text-xs text-muted-foreground",children:c.hint})]},c.id))})]})]})})}async function wt(l,s){const u=await fetch(l,{headers:{"Content-Type":"application/json"},...s});if(!u.ok)throw new Error(`${u.status} ${u.statusText}`);return u.json()}function Cn({children:l,tone:s="muted"}){const u={muted:"bg-muted text-muted-foreground",primary:"bg-primary/15 text-primary",warn:"bg-amber-500/15 text-amber-500"};return g.jsx("span",{className:`rounded px-1.5 py-0.5 text-[11px] font-medium ${u[s]}`,children:l})}function uf({caps:l}){return l?g.jsxs("span",{className:"inline-flex flex-wrap gap-1",children:[l.coder&&g.jsx(Cn,{children:"💻 Code"}),l.vision&&g.jsx(Cn,{children:"👁 Bild"}),l.reasoning&&g.jsx(Cn,{children:"🧠 Reason"}),l.moe&&g.jsxs(Cn,{tone:"primary",children:["🧩 MoE",l.active_b?`·${l.active_b}b`:""]}),l.tools==="yes"&&g.jsx(Cn,{tone:"primary",children:"🛠 Tools"}),l.tools==="likely"&&g.jsx(Cn,{tone:"warn",children:"🛠 Tools?"}),l.embedding&&g.jsx(Cn,{children:"🔢 Embed"})]}):null}function sf(l){var s,u,c="";if(typeof l=="string"||typeof l=="number")c+=l;else if(typeof l=="object")if(Array.isArray(l)){var d=l.length;for(s=0;s{const s=Kv(l),{conflictingClassGroups:u,conflictingClassGroupModifiers:c}=l;return{getClassGroupId:h=>{const m=h.split(Xu);return m[0]===""&&m.length!==1&&m.shift(),af(m,s)||Hv(h)},getConflictingClassGroupIds:(h,m)=>{const N=u[h]||[];return m&&c[h]?[...N,...c[h]]:N}}},af=(l,s)=>{var h;if(l.length===0)return s.classGroupId;const u=l[0],c=s.nextPart.get(u),d=c?af(l.slice(1),c):void 0;if(d)return d;if(s.validators.length===0)return;const f=l.join(Xu);return(h=s.validators.find(({validator:m})=>m(f)))==null?void 0:h.classGroupId},yd=/^\[(.+)\]$/,Hv=l=>{if(yd.test(l)){const s=yd.exec(l)[1],u=s==null?void 0:s.substring(0,s.indexOf(":"));if(u)return"arbitrary.."+u}},Kv=l=>{const{theme:s,prefix:u}=l,c={nextPart:new Map,validators:[]};return Qv(Object.entries(l.classGroups),u).forEach(([f,h])=>{Vu(h,c,f,s)}),c},Vu=(l,s,u,c)=>{l.forEach(d=>{if(typeof d=="string"){const f=d===""?s:xd(s,d);f.classGroupId=u;return}if(typeof d=="function"){if(Gv(d)){Vu(d(c),s,u,c);return}s.validators.push({validator:d,classGroupId:u});return}Object.entries(d).forEach(([f,h])=>{Vu(h,xd(s,f),u,c)})})},xd=(l,s)=>{let u=l;return s.split(Xu).forEach(c=>{u.nextPart.has(c)||u.nextPart.set(c,{nextPart:new Map,validators:[]}),u=u.nextPart.get(c)}),u},Gv=l=>l.isThemeGetter,Qv=(l,s)=>s?l.map(([u,c])=>{const d=c.map(f=>typeof f=="string"?s+f:typeof f=="object"?Object.fromEntries(Object.entries(f).map(([h,m])=>[s+h,m])):f);return[u,d]}):l,Yv=l=>{if(l<1)return{get:()=>{},set:()=>{}};let s=0,u=new Map,c=new Map;const d=(f,h)=>{u.set(f,h),s++,s>l&&(s=0,c=u,u=new Map)};return{get(f){let h=u.get(f);if(h!==void 0)return h;if((h=c.get(f))!==void 0)return d(f,h),h},set(f,h){u.has(f)?u.set(f,h):d(f,h)}}},cf="!",Xv=l=>{const{separator:s,experimentalParseClassName:u}=l,c=s.length===1,d=s[0],f=s.length,h=m=>{const N=[];let P=0,j=0,_;for(let R=0;Rj?_-j:void 0;return{modifiers:N,hasImportantModifier:b,baseClassName:H,maybePostfixModifierPosition:M}};return u?m=>u({className:m,parseClassName:h}):h},Zv=l=>{if(l.length<=1)return l;const s=[];let u=[];return l.forEach(c=>{c[0]==="["?(s.push(...u.sort(),c),u=[]):u.push(c)}),s.push(...u.sort()),s},qv=l=>({cache:Yv(l.cacheSize),parseClassName:Xv(l),...Wv(l)}),Jv=/\s+/,eg=(l,s)=>{const{parseClassName:u,getClassGroupId:c,getConflictingClassGroupIds:d}=s,f=[],h=l.trim().split(Jv);let m="";for(let N=h.length-1;N>=0;N-=1){const P=h[N],{modifiers:j,hasImportantModifier:_,baseClassName:T,maybePostfixModifierPosition:b}=u(P);let H=!!b,M=c(H?T.substring(0,b):T);if(!M){if(!H){m=P+(m.length>0?" "+m:m);continue}if(M=c(T),!M){m=P+(m.length>0?" "+m:m);continue}H=!1}const R=Zv(j).join(":"),V=_?R+cf:R,W=V+M;if(f.includes(W))continue;f.push(W);const te=d(M,H);for(let q=0;q0?" "+m:m)}return m};function tg(){let l=0,s,u,c="";for(;l{if(typeof l=="string")return l;let s,u="";for(let c=0;c_(j),l());return u=qv(P),c=u.cache.get,d=u.cache.set,f=m,m(N)}function m(N){const P=c(N);if(P)return P;const j=eg(N,u);return d(N,j),j}return function(){return f(tg.apply(null,arguments))}}const ke=l=>{const s=u=>u[l]||[];return s.isThemeGetter=!0,s},ff=/^\[(?:([a-z-]+):)?(.+)\]$/i,rg=/^\d+\/\d+$/,lg=new Set(["px","full","screen"]),og=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,ig=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,ug=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,sg=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,ag=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,Dt=l=>ir(l)||lg.has(l)||rg.test(l),ln=l=>ar(l,"length",gg),ir=l=>!!l&&!Number.isNaN(Number(l)),Iu=l=>ar(l,"number",ir),Zr=l=>!!l&&Number.isInteger(Number(l)),cg=l=>l.endsWith("%")&&ir(l.slice(0,-1)),ae=l=>ff.test(l),on=l=>og.test(l),dg=new Set(["length","size","percentage"]),fg=l=>ar(l,dg,pf),pg=l=>ar(l,"position",pf),mg=new Set(["image","url"]),hg=l=>ar(l,mg,xg),vg=l=>ar(l,"",yg),qr=()=>!0,ar=(l,s,u)=>{const c=ff.exec(l);return c?c[1]?typeof s=="string"?c[1]===s:s.has(c[1]):u(c[2]):!1},gg=l=>ig.test(l)&&!ug.test(l),pf=()=>!1,yg=l=>sg.test(l),xg=l=>ag.test(l),wg=()=>{const l=ke("colors"),s=ke("spacing"),u=ke("blur"),c=ke("brightness"),d=ke("borderColor"),f=ke("borderRadius"),h=ke("borderSpacing"),m=ke("borderWidth"),N=ke("contrast"),P=ke("grayscale"),j=ke("hueRotate"),_=ke("invert"),T=ke("gap"),b=ke("gradientColorStops"),H=ke("gradientColorStopPositions"),M=ke("inset"),R=ke("margin"),V=ke("opacity"),W=ke("padding"),te=ke("saturate"),q=ke("scale"),le=ke("sepia"),ne=ke("skew"),ue=ke("space"),ye=ke("translate"),de=()=>["auto","contain","none"],xe=()=>["auto","hidden","clip","visible","scroll"],Ce=()=>["auto",ae,s],ie=()=>[ae,s],be=()=>["",Dt,ln],Ne=()=>["auto",ir,ae],Oe=()=>["bottom","center","left","left-bottom","left-top","right","right-bottom","right-top","top"],_e=()=>["solid","dashed","dotted","double","none"],he=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],F=()=>["start","end","center","between","around","evenly","stretch"],Z=()=>["","0",ae],U=()=>["auto","avoid","all","avoid-page","page","left","right","column"],S=()=>[ir,ae];return{cacheSize:500,separator:":",theme:{colors:[qr],spacing:[Dt,ln],blur:["none","",on,ae],brightness:S(),borderColor:[l],borderRadius:["none","","full",on,ae],borderSpacing:ie(),borderWidth:be(),contrast:S(),grayscale:Z(),hueRotate:S(),invert:Z(),gap:ie(),gradientColorStops:[l],gradientColorStopPositions:[cg,ln],inset:Ce(),margin:Ce(),opacity:S(),padding:ie(),saturate:S(),scale:S(),sepia:Z(),skew:S(),space:ie(),translate:ie()},classGroups:{aspect:[{aspect:["auto","square","video",ae]}],container:["container"],columns:[{columns:[on]}],"break-after":[{"break-after":U()}],"break-before":[{"break-before":U()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:[...Oe(),ae]}],overflow:[{overflow:xe()}],"overflow-x":[{"overflow-x":xe()}],"overflow-y":[{"overflow-y":xe()}],overscroll:[{overscroll:de()}],"overscroll-x":[{"overscroll-x":de()}],"overscroll-y":[{"overscroll-y":de()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:[M]}],"inset-x":[{"inset-x":[M]}],"inset-y":[{"inset-y":[M]}],start:[{start:[M]}],end:[{end:[M]}],top:[{top:[M]}],right:[{right:[M]}],bottom:[{bottom:[M]}],left:[{left:[M]}],visibility:["visible","invisible","collapse"],z:[{z:["auto",Zr,ae]}],basis:[{basis:Ce()}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["wrap","wrap-reverse","nowrap"]}],flex:[{flex:["1","auto","initial","none",ae]}],grow:[{grow:Z()}],shrink:[{shrink:Z()}],order:[{order:["first","last","none",Zr,ae]}],"grid-cols":[{"grid-cols":[qr]}],"col-start-end":[{col:["auto",{span:["full",Zr,ae]},ae]}],"col-start":[{"col-start":Ne()}],"col-end":[{"col-end":Ne()}],"grid-rows":[{"grid-rows":[qr]}],"row-start-end":[{row:["auto",{span:[Zr,ae]},ae]}],"row-start":[{"row-start":Ne()}],"row-end":[{"row-end":Ne()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":["auto","min","max","fr",ae]}],"auto-rows":[{"auto-rows":["auto","min","max","fr",ae]}],gap:[{gap:[T]}],"gap-x":[{"gap-x":[T]}],"gap-y":[{"gap-y":[T]}],"justify-content":[{justify:["normal",...F()]}],"justify-items":[{"justify-items":["start","end","center","stretch"]}],"justify-self":[{"justify-self":["auto","start","end","center","stretch"]}],"align-content":[{content:["normal",...F(),"baseline"]}],"align-items":[{items:["start","end","center","baseline","stretch"]}],"align-self":[{self:["auto","start","end","center","stretch","baseline"]}],"place-content":[{"place-content":[...F(),"baseline"]}],"place-items":[{"place-items":["start","end","center","baseline","stretch"]}],"place-self":[{"place-self":["auto","start","end","center","stretch"]}],p:[{p:[W]}],px:[{px:[W]}],py:[{py:[W]}],ps:[{ps:[W]}],pe:[{pe:[W]}],pt:[{pt:[W]}],pr:[{pr:[W]}],pb:[{pb:[W]}],pl:[{pl:[W]}],m:[{m:[R]}],mx:[{mx:[R]}],my:[{my:[R]}],ms:[{ms:[R]}],me:[{me:[R]}],mt:[{mt:[R]}],mr:[{mr:[R]}],mb:[{mb:[R]}],ml:[{ml:[R]}],"space-x":[{"space-x":[ue]}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":[ue]}],"space-y-reverse":["space-y-reverse"],w:[{w:["auto","min","max","fit","svw","lvw","dvw",ae,s]}],"min-w":[{"min-w":[ae,s,"min","max","fit"]}],"max-w":[{"max-w":[ae,s,"none","full","min","max","fit","prose",{screen:[on]},on]}],h:[{h:[ae,s,"auto","min","max","fit","svh","lvh","dvh"]}],"min-h":[{"min-h":[ae,s,"min","max","fit","svh","lvh","dvh"]}],"max-h":[{"max-h":[ae,s,"min","max","fit","svh","lvh","dvh"]}],size:[{size:[ae,s,"auto","min","max","fit"]}],"font-size":[{text:["base",on,ln]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:["thin","extralight","light","normal","medium","semibold","bold","extrabold","black",Iu]}],"font-family":[{font:[qr]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:["tighter","tight","normal","wide","wider","widest",ae]}],"line-clamp":[{"line-clamp":["none",ir,Iu]}],leading:[{leading:["none","tight","snug","normal","relaxed","loose",Dt,ae]}],"list-image":[{"list-image":["none",ae]}],"list-style-type":[{list:["none","disc","decimal",ae]}],"list-style-position":[{list:["inside","outside"]}],"placeholder-color":[{placeholder:[l]}],"placeholder-opacity":[{"placeholder-opacity":[V]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"text-color":[{text:[l]}],"text-opacity":[{"text-opacity":[V]}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[..._e(),"wavy"]}],"text-decoration-thickness":[{decoration:["auto","from-font",Dt,ln]}],"underline-offset":[{"underline-offset":["auto",Dt,ae]}],"text-decoration-color":[{decoration:[l]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:ie()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",ae]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",ae]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-opacity":[{"bg-opacity":[V]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:[...Oe(),pg]}],"bg-repeat":[{bg:["no-repeat",{repeat:["","x","y","round","space"]}]}],"bg-size":[{bg:["auto","cover","contain",fg]}],"bg-image":[{bg:["none",{"gradient-to":["t","tr","r","br","b","bl","l","tl"]},hg]}],"bg-color":[{bg:[l]}],"gradient-from-pos":[{from:[H]}],"gradient-via-pos":[{via:[H]}],"gradient-to-pos":[{to:[H]}],"gradient-from":[{from:[b]}],"gradient-via":[{via:[b]}],"gradient-to":[{to:[b]}],rounded:[{rounded:[f]}],"rounded-s":[{"rounded-s":[f]}],"rounded-e":[{"rounded-e":[f]}],"rounded-t":[{"rounded-t":[f]}],"rounded-r":[{"rounded-r":[f]}],"rounded-b":[{"rounded-b":[f]}],"rounded-l":[{"rounded-l":[f]}],"rounded-ss":[{"rounded-ss":[f]}],"rounded-se":[{"rounded-se":[f]}],"rounded-ee":[{"rounded-ee":[f]}],"rounded-es":[{"rounded-es":[f]}],"rounded-tl":[{"rounded-tl":[f]}],"rounded-tr":[{"rounded-tr":[f]}],"rounded-br":[{"rounded-br":[f]}],"rounded-bl":[{"rounded-bl":[f]}],"border-w":[{border:[m]}],"border-w-x":[{"border-x":[m]}],"border-w-y":[{"border-y":[m]}],"border-w-s":[{"border-s":[m]}],"border-w-e":[{"border-e":[m]}],"border-w-t":[{"border-t":[m]}],"border-w-r":[{"border-r":[m]}],"border-w-b":[{"border-b":[m]}],"border-w-l":[{"border-l":[m]}],"border-opacity":[{"border-opacity":[V]}],"border-style":[{border:[..._e(),"hidden"]}],"divide-x":[{"divide-x":[m]}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":[m]}],"divide-y-reverse":["divide-y-reverse"],"divide-opacity":[{"divide-opacity":[V]}],"divide-style":[{divide:_e()}],"border-color":[{border:[d]}],"border-color-x":[{"border-x":[d]}],"border-color-y":[{"border-y":[d]}],"border-color-s":[{"border-s":[d]}],"border-color-e":[{"border-e":[d]}],"border-color-t":[{"border-t":[d]}],"border-color-r":[{"border-r":[d]}],"border-color-b":[{"border-b":[d]}],"border-color-l":[{"border-l":[d]}],"divide-color":[{divide:[d]}],"outline-style":[{outline:["",..._e()]}],"outline-offset":[{"outline-offset":[Dt,ae]}],"outline-w":[{outline:[Dt,ln]}],"outline-color":[{outline:[l]}],"ring-w":[{ring:be()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:[l]}],"ring-opacity":[{"ring-opacity":[V]}],"ring-offset-w":[{"ring-offset":[Dt,ln]}],"ring-offset-color":[{"ring-offset":[l]}],shadow:[{shadow:["","inner","none",on,vg]}],"shadow-color":[{shadow:[qr]}],opacity:[{opacity:[V]}],"mix-blend":[{"mix-blend":[...he(),"plus-lighter","plus-darker"]}],"bg-blend":[{"bg-blend":he()}],filter:[{filter:["","none"]}],blur:[{blur:[u]}],brightness:[{brightness:[c]}],contrast:[{contrast:[N]}],"drop-shadow":[{"drop-shadow":["","none",on,ae]}],grayscale:[{grayscale:[P]}],"hue-rotate":[{"hue-rotate":[j]}],invert:[{invert:[_]}],saturate:[{saturate:[te]}],sepia:[{sepia:[le]}],"backdrop-filter":[{"backdrop-filter":["","none"]}],"backdrop-blur":[{"backdrop-blur":[u]}],"backdrop-brightness":[{"backdrop-brightness":[c]}],"backdrop-contrast":[{"backdrop-contrast":[N]}],"backdrop-grayscale":[{"backdrop-grayscale":[P]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[j]}],"backdrop-invert":[{"backdrop-invert":[_]}],"backdrop-opacity":[{"backdrop-opacity":[V]}],"backdrop-saturate":[{"backdrop-saturate":[te]}],"backdrop-sepia":[{"backdrop-sepia":[le]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":[h]}],"border-spacing-x":[{"border-spacing-x":[h]}],"border-spacing-y":[{"border-spacing-y":[h]}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["none","all","","colors","opacity","shadow","transform",ae]}],duration:[{duration:S()}],ease:[{ease:["linear","in","out","in-out",ae]}],delay:[{delay:S()}],animate:[{animate:["none","spin","ping","pulse","bounce",ae]}],transform:[{transform:["","gpu","none"]}],scale:[{scale:[q]}],"scale-x":[{"scale-x":[q]}],"scale-y":[{"scale-y":[q]}],rotate:[{rotate:[Zr,ae]}],"translate-x":[{"translate-x":[ye]}],"translate-y":[{"translate-y":[ye]}],"skew-x":[{"skew-x":[ne]}],"skew-y":[{"skew-y":[ne]}],"transform-origin":[{origin:["center","top","top-right","right","bottom-right","bottom","bottom-left","left","top-left",ae]}],accent:[{accent:["auto",l]}],appearance:[{appearance:["none","auto"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",ae]}],"caret-color":[{caret:[l]}],"pointer-events":[{"pointer-events":["none","auto"]}],resize:[{resize:["none","y","x",""]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":ie()}],"scroll-mx":[{"scroll-mx":ie()}],"scroll-my":[{"scroll-my":ie()}],"scroll-ms":[{"scroll-ms":ie()}],"scroll-me":[{"scroll-me":ie()}],"scroll-mt":[{"scroll-mt":ie()}],"scroll-mr":[{"scroll-mr":ie()}],"scroll-mb":[{"scroll-mb":ie()}],"scroll-ml":[{"scroll-ml":ie()}],"scroll-p":[{"scroll-p":ie()}],"scroll-px":[{"scroll-px":ie()}],"scroll-py":[{"scroll-py":ie()}],"scroll-ps":[{"scroll-ps":ie()}],"scroll-pe":[{"scroll-pe":ie()}],"scroll-pt":[{"scroll-pt":ie()}],"scroll-pr":[{"scroll-pr":ie()}],"scroll-pb":[{"scroll-pb":ie()}],"scroll-pl":[{"scroll-pl":ie()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",ae]}],fill:[{fill:[l,"none"]}],"stroke-w":[{stroke:[Dt,ln,Iu]}],stroke:[{stroke:[l,"none"]}],sr:["sr-only","not-sr-only"],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-s","border-color-e","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]}}},Sg=ng(wg);function cn(...l){return Sg(Vv(l))}function kg(l){if(!l)return"—";const s=l/1024**3;return s>=1?`${s.toFixed(1)} GB`:`${(l/1024**2).toFixed(0)} MB`}function Eg(l){return l?`${Math.round(l/1024)}k`:"—"}function Cg({fit:l}){const s={perfect:"bg-emerald-500/15 text-emerald-500",marginal:"bg-amber-500/15 text-amber-500",too_tight:"bg-red-500/15 text-red-500"}[l.level];return g.jsxs("span",{className:cn("rounded px-1.5 py-0.5 text-[11px] font-medium",s),children:[l.text," · ~",l.req_gb," GB"]})}function Ng(){const[l,s]=v.useState([]),[u,c]=v.useState(""),[d,f]=v.useState(!0);return v.useEffect(()=>{wt("/api/models").then(h=>s(h.models)).catch(h=>c(String(h))).finally(()=>f(!1))},[]),d?g.jsx("div",{className:"text-sm text-muted-foreground",children:"Lade…"}):u?g.jsxs("div",{className:"rounded-md border border-border bg-card p-3 text-sm text-muted-foreground",children:["Engine nicht erreichbar oder keine Config gefunden (",u,")."]}):g.jsx("div",{className:"overflow-hidden rounded-xl border border-border bg-card",children:g.jsxs("table",{className:"w-full text-sm",children:[g.jsx("thead",{children:g.jsxs("tr",{className:"border-b border-border text-left text-xs text-muted-foreground",children:[g.jsx("th",{className:"px-4 py-2 font-medium",children:"Modell"}),g.jsx("th",{className:"px-4 py-2 font-medium",children:"Rolle"}),g.jsx("th",{className:"px-4 py-2 font-medium",children:"Fähigkeiten"}),g.jsx("th",{className:"px-4 py-2 font-medium",children:"Kontext"}),g.jsx("th",{className:"px-4 py-2 font-medium",children:"Größe"})]})}),g.jsxs("tbody",{children:[l.length===0&&g.jsx("tr",{children:g.jsx("td",{colSpan:5,className:"px-4 py-8 text-center text-muted-foreground",children:"Keine Modelle konfiguriert."})}),l.map(h=>g.jsxs("tr",{className:"border-b border-border/50 last:border-0",children:[g.jsx("td",{className:"px-4 py-2.5 font-medium",children:h.name}),g.jsx("td",{className:"px-4 py-2.5",children:h.role?g.jsx("span",{className:"rounded-md bg-primary/15 px-2 py-0.5 text-xs text-primary",children:h.role}):g.jsx("span",{className:"text-muted-foreground",children:"—"})}),g.jsx("td",{className:"px-4 py-2.5",children:g.jsx(uf,{caps:h.capabilities})}),g.jsx("td",{className:"px-4 py-2.5 text-muted-foreground",children:Eg(h.ctx)}),g.jsx("td",{className:"px-4 py-2.5 text-muted-foreground",children:kg(h.size_bytes)})]},h.name))]})]})})}function _g(){const[l,s]=v.useState(null),[u,c]=v.useState(""),[d,f]=v.useState(!0);return v.useEffect(()=>{wt("/api/discover").then(s).catch(h=>c(String(h))).finally(()=>f(!1))},[]),d?g.jsx("div",{className:"text-sm text-muted-foreground",children:"Suche aktuelle Modelle…"}):u||!l?g.jsxs("div",{className:"rounded-md border border-border bg-card p-3 text-sm text-muted-foreground",children:["Modell-Quellen gerade nicht erreichbar (",u,")."]}):g.jsxs("div",{className:"space-y-6",children:[g.jsxs("div",{className:"text-xs text-muted-foreground",children:["Live von HuggingFace · Hardware-Fit für ~",l.sys_ram_gb," GB · ⭐ = beste Wahl je Kategorie"]}),l.categories.map(h=>g.jsxs("div",{className:"space-y-2",children:[g.jsx("h3",{className:"text-sm font-semibold",children:h.title}),g.jsx("div",{className:"grid gap-2 sm:grid-cols-2",children:h.models.map(m=>g.jsxs("div",{className:"rounded-lg border border-border bg-card p-3",children:[g.jsxs("div",{className:"flex items-center gap-2",children:[h.recommended===m.repo&&g.jsx("span",{title:"beste Wahl",children:"⭐"}),g.jsx("span",{className:"truncate text-sm font-medium",children:m.name})]}),g.jsx("div",{className:"mt-1 text-xs text-muted-foreground",children:m.author}),g.jsxs("div",{className:"mt-2 flex flex-wrap items-center gap-1",children:[g.jsx(uf,{caps:m.caps}),g.jsx(Cg,{fit:m.fit})]})]},m.repo))})]},h.role))]})}function Pg(){const[l,s]=v.useState("installed");return g.jsxs("div",{className:"space-y-4",children:[g.jsxs("div",{children:[g.jsx("h1",{className:"text-xl font-semibold",children:"Modelle & Routing"}),g.jsx("p",{className:"text-sm text-muted-foreground",children:"Installierte Modelle (mit Fähigkeiten) und aktuell beste Modelle für deine Hardware."})]}),g.jsx("div",{className:"inline-flex rounded-lg border border-border bg-card p-0.5 text-sm",children:["installed","discover"].map(u=>g.jsx("button",{onClick:()=>s(u),className:cn("rounded-md px-3 py-1.5 transition-colors",l===u?"bg-primary/15 text-primary":"text-muted-foreground hover:text-foreground"),children:u==="installed"?"Installiert":"Modelle finden"},u))}),l==="installed"?g.jsx(Ng,{}):g.jsx(_g,{})]})}function jg(){const[l,s]=v.useState(null),[u,c]=v.useState("");return v.useEffect(()=>{wt("/api/routing").then(s).catch(d=>c(String(d)))},[]),g.jsxs("div",{className:"space-y-4",children:[g.jsxs("div",{children:[g.jsx("h1",{className:"text-xl font-semibold",children:"Routing"}),g.jsxs("p",{className:"text-sm text-muted-foreground",children:["Der LiteLLM-Gateway bündelt alle Modelle zu einem Endpunkt. ",g.jsx("code",{children:"auto"})," = schnell im Alltag, eskaliert bei Bedarf auf ",g.jsx("code",{children:"heavy"}),". Gilt für Hermes ",g.jsx("em",{children:"und"})," Vibe Coding."]})]}),u&&g.jsxs("div",{className:"rounded-md border border-border bg-card p-3 text-sm text-muted-foreground",children:["Gateway-Config nicht lesbar (",u,")."]}),l&&g.jsxs(g.Fragment,{children:[g.jsxs("div",{className:"flex items-center gap-2 text-sm",children:[g.jsx("span",{className:cn("h-2 w-2 rounded-full",l.gateway_reachable?"bg-emerald-500":"bg-amber-500")}),"Gateway ",l.gateway_reachable?"online":"offline (Config wird trotzdem angezeigt)"]}),g.jsx("div",{className:"overflow-hidden rounded-xl border border-border bg-card",children:g.jsxs("table",{className:"w-full text-sm",children:[g.jsx("thead",{children:g.jsxs("tr",{className:"border-b border-border text-left text-xs text-muted-foreground",children:[g.jsx("th",{className:"px-4 py-2 font-medium",children:"Gateway-Modell"}),g.jsx("th",{className:"px-4 py-2 font-medium",children:"→ Backend (llama-swap)"})]})}),g.jsx("tbody",{children:l.routes.map(d=>g.jsxs("tr",{className:"border-b border-border/50 last:border-0",children:[g.jsx("td",{className:"px-4 py-2.5 font-medium",children:d.name}),g.jsx("td",{className:"px-4 py-2.5 font-mono text-xs text-muted-foreground",children:d.target})]},d.name))})]})}),l.fallbacks.length>0&&g.jsxs("div",{className:"rounded-xl border border-border bg-card p-4 text-sm",children:[g.jsx("div",{className:"mb-2 font-medium",children:"Eskalation (Fallbacks)"}),g.jsx("ul",{className:"space-y-1 text-muted-foreground",children:l.fallbacks.map((d,f)=>{const[h,m]=Object.entries(d)[0];return g.jsxs("li",{children:[g.jsx("code",{children:h})," → ",g.jsx("code",{children:m.join(", ")})]},f)})})]})]})]})}function nr(l){return(l/1024**3).toFixed(1)}function So({label:l,percent:s,detail:u}){return g.jsxs("div",{className:"rounded-lg border border-border bg-card p-4",children:[g.jsxs("div",{className:"flex items-baseline justify-between",children:[g.jsx("span",{className:"text-sm font-medium",children:l}),g.jsxs("span",{className:"text-sm text-muted-foreground",children:[Math.round(s),"%"]})]}),g.jsx("div",{className:"mt-2 h-2 overflow-hidden rounded-full bg-muted",children:g.jsx("div",{className:"h-full rounded-full bg-primary",style:{width:`${Math.min(s,100)}%`}})}),u&&g.jsx("div",{className:"mt-1 text-xs text-muted-foreground",children:u})]})}function Rg(){const[l,s]=v.useState(null),[u,c]=v.useState("");return v.useEffect(()=>{const d=()=>wt("/api/system/status").then(s).catch(h=>c(String(h)));d();const f=setInterval(d,3e3);return()=>clearInterval(f)},[]),g.jsxs("div",{className:"space-y-4",children:[g.jsxs("div",{children:[g.jsx("h1",{className:"text-xl font-semibold",children:"System"}),g.jsx("p",{className:"text-sm text-muted-foreground",children:"Live-Auslastung der Box, Dienste & Updates."})]}),u&&g.jsxs("div",{className:"rounded-md border border-border bg-card p-3 text-sm text-muted-foreground",children:["System-Status nicht lesbar (",u,")."]}),l&&g.jsxs("div",{className:"grid gap-3 sm:grid-cols-2",children:[g.jsx(So,{label:"CPU",percent:l.cpu.percent,detail:l.cpu.cores?`${l.cpu.cores} Kerne`:void 0}),g.jsx(So,{label:"RAM",percent:l.ram.percent,detail:`${nr(l.ram.used)} / ${nr(l.ram.total)} GB`}),l.gpu&&l.gpu.busy_percent!=null&&g.jsx(So,{label:"GPU",percent:l.gpu.busy_percent,detail:l.gpu.vram_used!=null&&l.gpu.vram_total!=null?`${nr(l.gpu.vram_used)} / ${nr(l.gpu.vram_total)} GB VRAM`:void 0}),l.disk&&g.jsx(So,{label:"Disk (Modelle)",percent:l.disk.percent,detail:`${nr(l.disk.used)} / ${nr(l.disk.total)} GB`})]}),(l==null?void 0:l.temp)&&(l.temp.cpu||l.temp.gpu)&&g.jsxs("div",{className:"flex gap-3 text-sm text-muted-foreground",children:[l.temp.cpu!=null&&g.jsxs("span",{children:["CPU ",l.temp.cpu," °C"]}),l.temp.gpu!=null&&g.jsxs("span",{children:["GPU ",l.temp.gpu," °C"]})]})]})}function Mg(){const[l,s]=v.useState(localStorage.getItem("mc_host")||"192.168.178.151"),[u,c]=v.useState(null),[d,f]=v.useState("cline"),[h,m]=v.useState(!1),[N,P]=v.useState("");v.useEffect(()=>{wt(`/api/connect?host=${encodeURIComponent(l)}`).then(c).catch(b=>P(String(b)))},[l]);function j(b){s(b),b&&localStorage.setItem("mc_host",b)}const _=u==null?void 0:u.tools[d];async function T(){_&&(await navigator.clipboard.writeText(_.snippet),m(!0),setTimeout(()=>m(!1),1500))}return g.jsxs("div",{className:"space-y-4",children:[g.jsxs("div",{children:[g.jsx("h1",{className:"text-xl font-semibold",children:"Verbinden"}),g.jsxs("p",{className:"text-sm text-muted-foreground",children:["Fertige Snippets für deine Tools auf dem lokalen PC — alle zeigen auf den Gateway der Box (",g.jsx("code",{children:"model: auto"}),") + das geteilte Gedächtnis."]})]}),g.jsxs("div",{className:"flex items-center gap-2 text-sm",children:[g.jsx("label",{className:"text-muted-foreground",children:"Box-LAN-IP:"}),g.jsx("input",{value:l,onChange:b=>j(b.target.value),className:"rounded-md border border-border bg-card px-2 py-1 font-mono text-xs outline-none focus:ring-2 focus:ring-ring"}),u&&g.jsxs("span",{className:"text-xs text-muted-foreground",children:["→ ",u.gateway_url]})]}),N&&g.jsxs("div",{className:"rounded-md border border-border bg-card p-3 text-sm text-muted-foreground",children:["Snippets nicht ladbar (",N,")."]}),u&&g.jsxs(g.Fragment,{children:[g.jsx("div",{className:"flex flex-wrap gap-1",children:Object.entries(u.tools).map(([b,H])=>g.jsx("button",{onClick:()=>f(b),className:cn("rounded-md px-3 py-1.5 text-sm transition-colors",d===b?"bg-primary/15 text-primary":"text-muted-foreground hover:text-foreground"),children:H.label},b))}),_&&g.jsxs("div",{className:"space-y-2",children:[g.jsxs("div",{className:"flex items-center justify-between",children:[g.jsx("span",{className:"text-xs text-muted-foreground",children:_.note}),g.jsxs("button",{onClick:T,className:"flex items-center gap-1.5 rounded-md border border-border px-2 py-1 text-xs hover:bg-accent",children:[h?g.jsx(_m,{className:"h-3.5 w-3.5 text-emerald-500"}):g.jsx(Rm,{className:"h-3.5 w-3.5"}),h?"Kopiert":"Kopieren"]})]}),g.jsx("pre",{className:"overflow-x-auto rounded-xl border border-border bg-card p-4 text-xs leading-relaxed",children:g.jsx("code",{children:_.snippet})})]})]})]})}const wd=["user","instruction","stable","versioned","ephemeral"],Du={user:"👤 User",instruction:"📋 Regel",stable:"🔵 Fakt",versioned:"🟡 Version",ephemeral:"⏱ Temporär"};function Tg(){const[l,s]=v.useState([]),[u,c]=v.useState(""),[d,f]=v.useState(""),[h,m]=v.useState(""),[N,P]=v.useState("stable"),[j,_]=v.useState("");function T(){const R=new URLSearchParams;d&&R.set("q",d),u&&R.set("category",u),wt(`/api/memory?${R}`).then(s).catch(V=>_(String(V)))}v.useEffect(T,[d,u]);async function b(){h.trim()&&(await wt("/api/memory",{method:"POST",body:JSON.stringify({content:h,category:N,source:"ui"})}),m(""),T())}async function H(R){await wt(`/api/memory/${R}`,{method:"DELETE"}),T()}async function M(){const R=await wt("/api/memory/dedupe",{method:"POST",body:JSON.stringify({apply:!1})});if(R.duplicate_count===0){alert("Keine Dubletten gefunden — alles sauber.");return}confirm(`${R.duplicate_count} Dublette(n) in ${R.groups.length} Gruppe(n) gefunden. Entfernen?`)&&(await wt("/api/memory/dedupe",{method:"POST",body:JSON.stringify({apply:!0})}),T())}return g.jsxs("div",{className:"space-y-4",children:[g.jsxs("div",{className:"flex items-start justify-between",children:[g.jsxs("div",{children:[g.jsx("h1",{className:"text-xl font-semibold",children:"Gedächtnis"}),g.jsx("p",{className:"text-sm text-muted-foreground",children:'Die geteilte „Verfassung" — alle Tools (Hermes, IDEs) lesen/schreiben hier via MCP.'})]}),g.jsxs("button",{onClick:M,className:"flex items-center gap-1.5 rounded-md border border-border px-2.5 py-1.5 text-sm hover:bg-accent",children:[g.jsx(bm,{className:"h-3.5 w-3.5 text-primary"})," Aufräumen"]})]}),g.jsxs("div",{className:"rounded-xl border border-border bg-card p-3",children:[g.jsx("textarea",{value:h,onChange:R=>m(R.target.value),placeholder:"Neuen Fakt / Regel hinzufügen…",rows:2,className:"w-full resize-none rounded-md border border-border bg-background px-3 py-2 text-sm outline-none focus:ring-2 focus:ring-ring"}),g.jsxs("div",{className:"mt-2 flex items-center gap-2",children:[g.jsx("select",{value:N,onChange:R=>P(R.target.value),className:"rounded-md border border-border bg-background px-2 py-1.5 text-sm outline-none",children:wd.map(R=>g.jsx("option",{value:R,children:Du[R]},R))}),g.jsx("button",{onClick:b,className:"rounded-md bg-primary px-3 py-1.5 text-sm font-medium text-primary-foreground hover:opacity-90",children:"Speichern"})]})]}),g.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[g.jsx("input",{value:d,onChange:R=>f(R.target.value),placeholder:"Suchen…",className:"rounded-md border border-border bg-card px-2 py-1.5 text-sm outline-none focus:ring-2 focus:ring-ring"}),g.jsx("button",{onClick:()=>c(""),className:cn("rounded-md px-2.5 py-1.5 text-xs",u?"text-muted-foreground hover:text-foreground":"bg-primary/15 text-primary"),children:"Alle"}),wd.map(R=>g.jsx("button",{onClick:()=>c(R),className:cn("rounded-md px-2.5 py-1.5 text-xs",u===R?"bg-primary/15 text-primary":"text-muted-foreground hover:text-foreground"),children:Du[R]},R))]}),j&&g.jsxs("div",{className:"text-sm text-muted-foreground",children:["Fehler: ",j]}),g.jsxs("div",{className:"space-y-2",children:[l.length===0&&g.jsx("div",{className:"text-sm text-muted-foreground",children:"Keine Einträge."}),l.map(R=>g.jsxs("div",{className:"flex items-start gap-3 rounded-lg border border-border bg-card p-3",children:[g.jsx("span",{className:"shrink-0 rounded bg-muted px-1.5 py-0.5 text-[11px] text-muted-foreground",children:Du[R.category]||R.category}),g.jsx("span",{className:"flex-1 text-sm",children:R.content}),g.jsx("span",{className:"shrink-0 text-[11px] text-muted-foreground",children:R.source}),g.jsx("button",{onClick:()=>H(R.id),className:"shrink-0 text-muted-foreground hover:text-red-500",children:g.jsx(Om,{className:"h-4 w-4"})})]},R.id))]})]})}function Lg({title:l,hint:s}){return g.jsxs("div",{className:"space-y-4",children:[g.jsxs("div",{children:[g.jsx("h1",{className:"text-xl font-semibold",children:l}),g.jsx("p",{className:"text-sm text-muted-foreground",children:s})]}),g.jsxs("div",{className:"flex flex-col items-center justify-center gap-3 rounded-xl border border-dashed border-border bg-card/50 py-20 text-center",children:[g.jsx(jm,{className:"h-8 w-8 text-muted-foreground"}),g.jsx("div",{className:"text-sm text-muted-foreground",children:"Kommt in einer späteren Phase."})]})]})}function bg(){const[l,s]=v.useState("models"),[u,c]=v.useState(null);v.useEffect(()=>{const f=()=>wt("/api/health").then(c).catch(()=>c(null));f();const h=setInterval(f,1e4);return()=>clearInterval(h)},[]);const d=Au.find(f=>f.id===l);return g.jsxs("div",{className:"flex h-full",children:[g.jsx($v,{onNavigate:s}),g.jsxs("aside",{className:"flex w-60 shrink-0 flex-col border-r border-border bg-card/40",children:[g.jsxs("div",{className:"flex items-center gap-2 px-5 py-4",children:[g.jsx("div",{className:"h-7 w-7 rounded-lg bg-primary"}),g.jsxs("div",{className:"leading-tight",children:[g.jsx("div",{className:"text-sm font-semibold",children:"Mission Control"}),g.jsx("div",{className:"text-xs text-muted-foreground",children:"2.0"})]})]}),g.jsx("nav",{className:"flex-1 space-y-1 px-3 py-2",children:Au.map(f=>g.jsxs("button",{onClick:()=>s(f.id),className:cn("flex w-full items-center gap-3 rounded-md px-3 py-2 text-sm transition-colors",l===f.id?"bg-primary/15 text-primary":"text-muted-foreground hover:bg-accent hover:text-accent-foreground"),children:[g.jsx(f.icon,{className:"h-4 w-4"}),f.label]},f.id))}),g.jsx("div",{className:"px-4 py-3 text-xs text-muted-foreground",children:u?g.jsxs("span",{className:"flex items-center gap-2",children:[g.jsx("span",{className:cn("h-2 w-2 rounded-full",u.engine_reachable?"bg-emerald-500":"bg-amber-500")}),"Engine ",u.engine_reachable?"online":"offline"," · v",u.version]}):g.jsxs("span",{className:"flex items-center gap-2",children:[g.jsx("span",{className:"h-2 w-2 rounded-full bg-red-500"})," Backend offline"]})})]}),g.jsxs("div",{className:"flex min-w-0 flex-1 flex-col",children:[g.jsxs("header",{className:"flex h-14 shrink-0 items-center justify-between border-b border-border px-6",children:[g.jsx("div",{className:"text-sm text-muted-foreground",children:d.hint}),g.jsxs("button",{onClick:()=>{const f=new KeyboardEvent("keydown",{key:"k",metaKey:!0});document.dispatchEvent(f)},className:"flex items-center gap-2 rounded-md border border-border px-2.5 py-1.5 text-xs text-muted-foreground hover:bg-accent",children:[g.jsx(Pm,{className:"h-3.5 w-3.5"}),g.jsx("span",{children:"Springen"}),g.jsx("kbd",{className:"rounded bg-muted px-1.5 py-0.5 font-mono text-[10px]",children:"⌘K"})]})]}),g.jsxs("main",{className:"flex-1 overflow-y-auto p-6",children:[l==="models"&&g.jsx(Pg,{}),l==="routing"&&g.jsx(jg,{}),l==="system"&&g.jsx(Rg,{}),l==="connect"&&g.jsx(Mg,{}),l==="memory"&&g.jsx(Tg,{}),!["models","routing","system","connect","memory"].includes(l)&&g.jsx(Lg,{title:d.label,hint:d.hint})]})]})]})}xm.createRoot(document.getElementById("root")).render(g.jsx(kd.StrictMode,{children:g.jsx(bg,{})})); diff --git a/frontend/dist/assets/index-CE_qxW4X.css b/frontend/dist/assets/index-CE_qxW4X.css new file mode 100644 index 0000000..091097f --- /dev/null +++ b/frontend/dist/assets/index-CE_qxW4X.css @@ -0,0 +1 @@ +/*! tailwindcss v4.3.1 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-pan-x:initial;--tw-pan-y:initial;--tw-pinch-zoom:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-x-reverse:0;--tw-border-style:solid;--tw-divide-y-reverse:0;--tw-leading:initial;--tw-font-weight:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-500:oklch(63.7% .237 25.331);--color-amber-500:oklch(76.9% .188 70.08);--color-emerald-500:oklch(69.6% .17 162.48);--color-black:#000;--spacing:.25rem;--container-lg:32rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--font-weight-medium:500;--font-weight-semibold:600;--leading-tight:1.25;--leading-relaxed:1.625;--radius-xl:.75rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.not-sr-only{clip-path:none;white-space:normal;width:auto;height:auto;margin:0;padding:0;position:static;overflow:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.isolate{isolation:isolate}.isolation-auto{isolation:auto}.z-50{z-index:50}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.mt-1{margin-top:var(--spacing)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.ml-auto{margin-left:auto}.block{display:block}.contents{display:contents}.flex{display:flex}.flow-root{display:flow-root}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.inline-grid{display:inline-grid}.inline-table{display:inline-table}.list-item{display:list-item}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-column{display:table-column}.table-column-group{display:table-column-group}.table-footer-group{display:table-footer-group}.table-header-group{display:table-header-group}.table-row{display:table-row}.table-row-group{display:table-row-group}.h-2{height:calc(var(--spacing) * 2)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-14{height:calc(var(--spacing) * 14)}.h-full{height:100%}.max-h-80{max-height:calc(var(--spacing) * 80)}.w-2{width:calc(var(--spacing) * 2)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-60{width:calc(var(--spacing) * 60)}.w-full{width:100%}.max-w-lg{max-width:var(--container-lg)}.min-w-0{min-width:0}.flex-1{flex:1}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.border-collapse{border-collapse:collapse}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.cursor-pointer{cursor:pointer}.touch-pinch-zoom{--tw-pinch-zoom:pinch-zoom;touch-action:var(--tw-pan-x,) var(--tw-pan-y,) var(--tw-pinch-zoom,)}.resize{resize:both}.resize-none{resize:none}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(var(--spacing) * var(--tw-space-y-reverse));margin-block-end:calc(var(--spacing) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-reverse>:not(:last-child)){--tw-space-y-reverse:1}:where(.space-x-reverse>:not(:last-child)){--tw-space-x-reverse:1}:where(.divide-x>:not(:last-child)){--tw-divide-x-reverse:0;border-inline-style:var(--tw-border-style);border-inline-start-width:calc(1px * var(--tw-divide-x-reverse));border-inline-end-width:calc(1px * calc(1 - var(--tw-divide-x-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-y-reverse>:not(:last-child)){--tw-divide-y-reverse:1}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-s{border-start-start-radius:.25rem;border-end-start-radius:.25rem}.rounded-ss{border-start-start-radius:.25rem}.rounded-e{border-start-end-radius:.25rem;border-end-end-radius:.25rem}.rounded-se{border-start-end-radius:.25rem}.rounded-ee{border-end-end-radius:.25rem}.rounded-es{border-end-start-radius:.25rem}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.rounded-l{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-tl{border-top-left-radius:.25rem}.rounded-r{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.rounded-tr{border-top-right-radius:.25rem}.rounded-b{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-br{border-bottom-right-radius:.25rem}.rounded-bl{border-bottom-left-radius:.25rem}.border{border-style:var(--tw-border-style);border-width:1px}.border-x{border-inline-style:var(--tw-border-style);border-inline-width:1px}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-s{border-inline-start-style:var(--tw-border-style);border-inline-start-width:1px}.border-e{border-inline-end-style:var(--tw-border-style);border-inline-end-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-border,.border-border\/50{border-color:hsl(var(--border))}@supports (color:color-mix(in lab,red,red)){.border-border\/50{border-color:color-mix(in oklab,hsl(var(--border)) 50%,transparent)}}.bg-amber-500{background-color:var(--color-amber-500)}.bg-amber-500\/15{background-color:#f99c0026}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/15{background-color:color-mix(in oklab,var(--color-amber-500) 15%,transparent)}}.bg-background{background-color:hsl(var(--background))}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black) 50%,transparent)}}.bg-card,.bg-card\/40{background-color:hsl(var(--card))}@supports (color:color-mix(in lab,red,red)){.bg-card\/40{background-color:color-mix(in oklab,hsl(var(--card)) 40%,transparent)}}.bg-card\/50{background-color:hsl(var(--card))}@supports (color:color-mix(in lab,red,red)){.bg-card\/50{background-color:color-mix(in oklab,hsl(var(--card)) 50%,transparent)}}.bg-emerald-500{background-color:var(--color-emerald-500)}.bg-emerald-500\/15{background-color:#00bb7f26}@supports (color:color-mix(in lab,red,red)){.bg-emerald-500\/15{background-color:color-mix(in oklab,var(--color-emerald-500) 15%,transparent)}}.bg-muted{background-color:hsl(var(--muted))}.bg-popover{background-color:hsl(var(--popover))}.bg-primary,.bg-primary\/15{background-color:hsl(var(--primary))}@supports (color:color-mix(in lab,red,red)){.bg-primary\/15{background-color:color-mix(in oklab,hsl(var(--primary)) 15%,transparent)}}.bg-red-500{background-color:var(--color-red-500)}.bg-red-500\/15{background-color:#fb2c3626}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/15{background-color:color-mix(in oklab,var(--color-red-500) 15%,transparent)}}.bg-transparent{background-color:#0000}.bg-repeat{background-repeat:repeat}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.px-1{padding-inline:var(--spacing)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-20{padding-block:calc(var(--spacing) * 20)}.pt-\[12vh\]{padding-top:12vh}.text-center{text-align:center}.text-left{text-align:left}.font-mono{font-family:var(--font-mono)}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.text-wrap{text-wrap:wrap}.text-clip{text-overflow:clip}.text-ellipsis{text-overflow:ellipsis}.text-amber-500{color:var(--color-amber-500)}.text-emerald-500{color:var(--color-emerald-500)}.text-foreground{color:hsl(var(--foreground))}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-popover-foreground{color:hsl(var(--popover-foreground))}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-red-500{color:var(--color-red-500)}.capitalize{text-transform:capitalize}.lowercase{text-transform:lowercase}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.italic{font-style:italic}.not-italic{font-style:normal}.diagonal-fractions{--tw-numeric-fraction:diagonal-fractions;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.lining-nums{--tw-numeric-figure:lining-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.oldstyle-nums{--tw-numeric-figure:oldstyle-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.ordinal{--tw-ordinal:ordinal;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.proportional-nums{--tw-numeric-spacing:proportional-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.slashed-zero{--tw-slashed-zero:slashed-zero;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.stacked-fractions{--tw-numeric-fraction:stacked-fractions;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.normal-nums{font-variant-numeric:normal}.line-through{text-decoration-line:line-through}.no-underline{text-decoration-line:none}.overline{text-decoration-line:overline}.underline{text-decoration-line:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.subpixel-antialiased{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.drop-shadow{--tw-drop-shadow-size:drop-shadow(0 1px 2px var(--tw-drop-shadow-color,#0000001a)) drop-shadow(0 1px 1px var(--tw-drop-shadow-color,#0000000f));--tw-drop-shadow:drop-shadow(0 1px 2px #0000001a) drop-shadow(0 1px 1px #0000000f);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.grayscale{--tw-grayscale:grayscale(100%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.invert{--tw-invert:invert(100%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.sepia{--tw-sepia:sepia(100%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.\!filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)!important}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-grayscale{--tw-backdrop-grayscale:grayscale(100%);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-invert{--tw-backdrop-invert:invert(100%);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-sepia{--tw-backdrop-sepia:sepia(100%);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition\!{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events!important;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))!important;transition-duration:var(--tw-duration,var(--default-transition-duration))!important}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.outline-none{--tw-outline-style:none;outline-style:none}:where(.divide-x-reverse>:not(:last-child)){--tw-divide-x-reverse:1}.ring-inset{--tw-ring-inset:inset}.placeholder\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.last\:border-0:last-child{border-style:var(--tw-border-style);border-width:0}@media(hover:hover){.hover\:bg-accent:hover{background-color:hsl(var(--accent))}.hover\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))}.hover\:text-foreground:hover{color:hsl(var(--foreground))}.hover\:text-red-500:hover{color:var(--color-red-500)}.hover\:opacity-90:hover{opacity:.9}}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-ring:focus{--tw-ring-color:hsl(var(--ring))}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color:hsl(var(--ring))}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.disabled\:opacity-50:disabled{opacity:.5}.aria-selected\:bg-accent[aria-selected=true]{background-color:hsl(var(--accent))}.aria-selected\:text-accent-foreground[aria-selected=true]{color:hsl(var(--accent-foreground))}@media(min-width:40rem){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}}:root{--background:0 0% 100%;--foreground:222 22% 12%;--card:0 0% 100%;--card-foreground:222 22% 12%;--popover:0 0% 100%;--popover-foreground:222 22% 12%;--primary:172 70% 38%;--primary-foreground:0 0% 100%;--muted:220 14% 95%;--muted-foreground:220 9% 42%;--accent:220 14% 94%;--accent-foreground:222 22% 12%;--border:220 13% 88%;--input:220 13% 88%;--ring:172 66% 50%;--radius:.65rem}.dark{--background:222 24% 7%;--foreground:210 20% 92%;--card:222 22% 10%;--card-foreground:210 20% 92%;--popover:222 24% 9%;--popover-foreground:210 20% 92%;--primary:172 66% 50%;--primary-foreground:222 47% 8%;--muted:220 14% 15%;--muted-foreground:215 14% 62%;--accent:220 14% 17%;--accent-foreground:210 20% 92%;--border:220 14% 19%;--input:220 14% 19%;--ring:172 66% 50%}*{border-color:hsl(var(--border))}html,body,#root{height:100%}body{background-color:hsl(var(--background));color:hsl(var(--foreground));-webkit-font-smoothing:antialiased;margin:0;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-pan-x{syntax:"*";inherits:false}@property --tw-pan-y{syntax:"*";inherits:false}@property --tw-pinch-zoom{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false} diff --git a/frontend/dist/assets/index-CzNBzGRb.js b/frontend/dist/assets/index-CzNBzGRb.js deleted file mode 100644 index 35e2d03..0000000 --- a/frontend/dist/assets/index-CzNBzGRb.js +++ /dev/null @@ -1,150 +0,0 @@ -function sm(l,s){for(var u=0;uc[d]})}}}return Object.freeze(Object.defineProperty(l,Symbol.toStringTag,{value:"Module"}))}(function(){const s=document.createElement("link").relList;if(s&&s.supports&&s.supports("modulepreload"))return;for(const d of document.querySelectorAll('link[rel="modulepreload"]'))c(d);new MutationObserver(d=>{for(const f of d)if(f.type==="childList")for(const h of f.addedNodes)h.tagName==="LINK"&&h.rel==="modulepreload"&&c(h)}).observe(document,{childList:!0,subtree:!0});function u(d){const f={};return d.integrity&&(f.integrity=d.integrity),d.referrerPolicy&&(f.referrerPolicy=d.referrerPolicy),d.crossOrigin==="use-credentials"?f.credentials="include":d.crossOrigin==="anonymous"?f.credentials="omit":f.credentials="same-origin",f}function c(d){if(d.ep)return;d.ep=!0;const f=u(d);fetch(d.href,f)}})();function xd(l){return l&&l.__esModule&&Object.prototype.hasOwnProperty.call(l,"default")?l.default:l}var ku={exports:{}},Yr={},Eu={exports:{}},fe={};/** - * @license React - * react.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var Wc;function am(){if(Wc)return fe;Wc=1;var l=Symbol.for("react.element"),s=Symbol.for("react.portal"),u=Symbol.for("react.fragment"),c=Symbol.for("react.strict_mode"),d=Symbol.for("react.profiler"),f=Symbol.for("react.provider"),h=Symbol.for("react.context"),m=Symbol.for("react.forward_ref"),N=Symbol.for("react.suspense"),P=Symbol.for("react.memo"),R=Symbol.for("react.lazy"),_=Symbol.iterator;function L(S){return S===null||typeof S!="object"?null:(S=_&&S[_]||S["@@iterator"],typeof S=="function"?S:null)}var z={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},K=Object.assign,j={};function T(S,w,A){this.props=S,this.context=w,this.refs=j,this.updater=A||z}T.prototype.isReactComponent={},T.prototype.setState=function(S,w){if(typeof S!="object"&&typeof S!="function"&&S!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,S,w,"setState")},T.prototype.forceUpdate=function(S){this.updater.enqueueForceUpdate(this,S,"forceUpdate")};function W(){}W.prototype=T.prototype;function V(S,w,A){this.props=S,this.context=w,this.refs=j,this.updater=A||z}var te=V.prototype=new W;te.constructor=V,K(te,T.prototype),te.isPureReactComponent=!0;var q=Array.isArray,le=Object.prototype.hasOwnProperty,ne={current:null},ue={key:!0,ref:!0,__self:!0,__source:!0};function ye(S,w,A){var B,b={},Y=null,re=null;if(w!=null)for(B in w.ref!==void 0&&(re=w.ref),w.key!==void 0&&(Y=""+w.key),w)le.call(w,B)&&!ue.hasOwnProperty(B)&&(b[B]=w[B]);var se=arguments.length-2;if(se===1)b.children=A;else if(1>>1,w=F[S];if(0>>1;Sd(b,U))Yd(re,b)?(F[S]=re,F[Y]=U,S=Y):(F[S]=b,F[B]=U,S=B);else if(Yd(re,U))F[S]=re,F[Y]=U,S=Y;else break e}}return Z}function d(F,Z){var U=F.sortIndex-Z.sortIndex;return U!==0?U:F.id-Z.id}if(typeof performance=="object"&&typeof performance.now=="function"){var f=performance;l.unstable_now=function(){return f.now()}}else{var h=Date,m=h.now();l.unstable_now=function(){return h.now()-m}}var N=[],P=[],R=1,_=null,L=3,z=!1,K=!1,j=!1,T=typeof setTimeout=="function"?setTimeout:null,W=typeof clearTimeout=="function"?clearTimeout:null,V=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function te(F){for(var Z=u(P);Z!==null;){if(Z.callback===null)c(P);else if(Z.startTime<=F)c(P),Z.sortIndex=Z.expirationTime,s(N,Z);else break;Z=u(P)}}function q(F){if(j=!1,te(F),!K)if(u(N)!==null)K=!0,_e(le);else{var Z=u(P);Z!==null&&he(q,Z.startTime-F)}}function le(F,Z){K=!1,j&&(j=!1,W(ye),ye=-1),z=!0;var U=L;try{for(te(Z),_=u(N);_!==null&&(!(_.expirationTime>Z)||F&&!Ce());){var S=_.callback;if(typeof S=="function"){_.callback=null,L=_.priorityLevel;var w=S(_.expirationTime<=Z);Z=l.unstable_now(),typeof w=="function"?_.callback=w:_===u(N)&&c(N),te(Z)}else c(N);_=u(N)}if(_!==null)var A=!0;else{var B=u(P);B!==null&&he(q,B.startTime-Z),A=!1}return A}finally{_=null,L=U,z=!1}}var ne=!1,ue=null,ye=-1,de=5,xe=-1;function Ce(){return!(l.unstable_now()-xeF||125S?(F.sortIndex=U,s(P,F),u(N)===null&&F===u(P)&&(j?(W(ye),ye=-1):j=!0,he(q,U-S))):(F.sortIndex=w,s(N,F),K||z||(K=!0,_e(le))),F},l.unstable_shouldYield=Ce,l.unstable_wrapCallback=function(F){var Z=L;return function(){var U=L;L=Z;try{return F.apply(this,arguments)}finally{L=U}}}})(_u)),_u}var Yc;function pm(){return Yc||(Yc=1,Nu.exports=fm()),Nu.exports}/** - * @license React - * react-dom.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var Xc;function mm(){if(Xc)return tt;Xc=1;var l=Vu(),s=pm();function u(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),N=Object.prototype.hasOwnProperty,P=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,R={},_={};function L(e){return N.call(_,e)?!0:N.call(R,e)?!1:P.test(e)?_[e]=!0:(R[e]=!0,!1)}function z(e,t,n,r){if(n!==null&&n.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return r?!1:n!==null?!n.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function K(e,t,n,r){if(t===null||typeof t>"u"||z(e,t,n,r))return!0;if(r)return!1;if(n!==null)switch(n.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function j(e,t,n,r,o,i,a){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=r,this.attributeNamespace=o,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=i,this.removeEmptyString=a}var T={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){T[e]=new j(e,0,!1,e,null,!1,!1)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];T[t]=new j(t,1,!1,e[1],null,!1,!1)}),["contentEditable","draggable","spellCheck","value"].forEach(function(e){T[e]=new j(e,2,!1,e.toLowerCase(),null,!1,!1)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){T[e]=new j(e,2,!1,e,null,!1,!1)}),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){T[e]=new j(e,3,!1,e.toLowerCase(),null,!1,!1)}),["checked","multiple","muted","selected"].forEach(function(e){T[e]=new j(e,3,!0,e,null,!1,!1)}),["capture","download"].forEach(function(e){T[e]=new j(e,4,!1,e,null,!1,!1)}),["cols","rows","size","span"].forEach(function(e){T[e]=new j(e,6,!1,e,null,!1,!1)}),["rowSpan","start"].forEach(function(e){T[e]=new j(e,5,!1,e.toLowerCase(),null,!1,!1)});var W=/[\-:]([a-z])/g;function V(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(W,V);T[t]=new j(t,1,!1,e,null,!1,!1)}),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(W,V);T[t]=new j(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)}),["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(W,V);T[t]=new j(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)}),["tabIndex","crossOrigin"].forEach(function(e){T[e]=new j(e,1,!1,e.toLowerCase(),null,!1,!1)}),T.xlinkHref=new j("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach(function(e){T[e]=new j(e,1,!1,e.toLowerCase(),null,!0,!0)});function te(e,t,n,r){var o=T.hasOwnProperty(t)?T[t]:null;(o!==null?o.type!==0:r||!(2p||o[a]!==i[p]){var g=` -`+o[a].replace(" at new "," at ");return e.displayName&&g.includes("")&&(g=g.replace("",e.displayName)),g}while(1<=a&&0<=p);break}}}finally{A=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?w(e):""}function b(e){switch(e.tag){case 5:return w(e.type);case 16:return w("Lazy");case 13:return w("Suspense");case 19:return w("SuspenseList");case 0:case 2:case 15:return e=B(e.type,!1),e;case 11:return e=B(e.type.render,!1),e;case 1:return e=B(e.type,!0),e;default:return""}}function Y(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case ue:return"Fragment";case ne:return"Portal";case de:return"Profiler";case ye:return"StrictMode";case Oe:return"Suspense";case Ne:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case Ce:return(e.displayName||"Context")+".Consumer";case xe:return(e._context.displayName||"Context")+".Provider";case ie:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case ze:return t=e.displayName||null,t!==null?t:Y(e.type)||"Memo";case _e:t=e._payload,e=e._init;try{return Y(e(t))}catch{}}return null}function re(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return Y(t);case 8:return t===ye?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function se(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function ce(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function be(e){var t=ce(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var o=n.get,i=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return o.call(this)},set:function(a){r=""+a,i.call(this,a)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(a){r=""+a},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function nl(e){e._valueTracker||(e._valueTracker=be(e))}function Xu(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=ce(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function rl(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function jo(e,t){var n=t.checked;return U({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function Zu(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=se(t.value!=null?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function qu(e,t){t=t.checked,t!=null&&te(e,"checked",t,!1)}function Mo(e,t){qu(e,t);var n=se(t.value),r=t.type;if(n!=null)r==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(r==="submit"||r==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?Lo(e,t.type,n):t.hasOwnProperty("defaultValue")&&Lo(e,t.type,se(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function Ju(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!(r!=="submit"&&r!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function Lo(e,t,n){(t!=="number"||rl(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var cr=Array.isArray;function Nn(e,t,n,r){if(e=e.options,t){t={};for(var o=0;o"+t.valueOf().toString()+"",t=ll.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function dr(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var fr={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},ff=["Webkit","ms","Moz","O"];Object.keys(fr).forEach(function(e){ff.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),fr[t]=fr[e]})});function os(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||fr.hasOwnProperty(e)&&fr[e]?(""+t).trim():t+"px"}function is(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf("--")===0,o=os(n,t[n],r);n==="float"&&(n="cssFloat"),r?e.setProperty(n,o):e[n]=o}}var pf=U({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function zo(e,t){if(t){if(pf[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(u(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(u(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(u(61))}if(t.style!=null&&typeof t.style!="object")throw Error(u(62))}}function Io(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var Do=null;function bo(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var Ao=null,_n=null,Pn=null;function us(e){if(e=zr(e)){if(typeof Ao!="function")throw Error(u(280));var t=e.stateNode;t&&(t=Pl(t),Ao(e.stateNode,e.type,t))}}function ss(e){_n?Pn?Pn.push(e):Pn=[e]:_n=e}function as(){if(_n){var e=_n,t=Pn;if(Pn=_n=null,us(e),t)for(e=0;e>>=0,e===0?32:31-(Cf(e)/Nf|0)|0}var al=64,cl=4194304;function vr(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function dl(e,t){var n=e.pendingLanes;if(n===0)return 0;var r=0,o=e.suspendedLanes,i=e.pingedLanes,a=n&268435455;if(a!==0){var p=a&~o;p!==0?r=vr(p):(i&=a,i!==0&&(r=vr(i)))}else a=n&~o,a!==0?r=vr(a):i!==0&&(r=vr(i));if(r===0)return 0;if(t!==0&&t!==r&&(t&o)===0&&(o=r&-r,i=t&-t,o>=i||o===16&&(i&4194240)!==0))return t;if((r&4)!==0&&(r|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=r;0n;n++)t.push(e);return t}function gr(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-ft(t),e[t]=n}function jf(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0=Nr),bs=" ",As=!1;function Fs(e,t){switch(e){case"keyup":return rp.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Us(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Mn=!1;function op(e,t){switch(e){case"compositionend":return Us(t);case"keypress":return t.which!==32?null:(As=!0,bs);case"textInput":return e=t.data,e===bs&&As?null:e;default:return null}}function ip(e,t){if(Mn)return e==="compositionend"||!ni&&Fs(e,t)?(e=Ls(),vl=Xo=$t=null,Mn=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=Qs(n)}}function Ys(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Ys(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Xs(){for(var e=window,t=rl();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=rl(e.document)}return t}function oi(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function hp(e){var t=Xs(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&Ys(n.ownerDocument.documentElement,n)){if(r!==null&&oi(n)){if(t=r.start,e=r.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var o=n.textContent.length,i=Math.min(r.start,o);r=r.end===void 0?i:Math.min(r.end,o),!e.extend&&i>r&&(o=r,r=i,i=o),o=Gs(n,i);var a=Gs(n,r);o&&a&&(e.rangeCount!==1||e.anchorNode!==o.node||e.anchorOffset!==o.offset||e.focusNode!==a.node||e.focusOffset!==a.offset)&&(t=t.createRange(),t.setStart(o.node,o.offset),e.removeAllRanges(),i>r?(e.addRange(t),e.extend(a.node,a.offset)):(t.setEnd(a.node,a.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,Ln=null,ii=null,jr=null,ui=!1;function Zs(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;ui||Ln==null||Ln!==rl(r)||(r=Ln,"selectionStart"in r&&oi(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),jr&&Rr(jr,r)||(jr=r,r=Cl(ii,"onSelect"),0Dn||(e.current=xi[Dn],xi[Dn]=null,Dn--)}function ge(e,t){Dn++,xi[Dn]=e.current,e.current=t}var Kt={},We=Ht(Kt),Xe=Ht(!1),dn=Kt;function bn(e,t){var n=e.type.contextTypes;if(!n)return Kt;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var o={},i;for(i in n)o[i]=t[i];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=o),o}function Ze(e){return e=e.childContextTypes,e!=null}function Rl(){Se(Xe),Se(We)}function fa(e,t,n){if(We.current!==Kt)throw Error(u(168));ge(We,t),ge(Xe,n)}function pa(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var o in r)if(!(o in t))throw Error(u(108,re(e)||"Unknown",o));return U({},n,r)}function jl(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Kt,dn=We.current,ge(We,e),ge(Xe,Xe.current),!0}function ma(e,t,n){var r=e.stateNode;if(!r)throw Error(u(169));n?(e=pa(e,t,dn),r.__reactInternalMemoizedMergedChildContext=e,Se(Xe),Se(We),ge(We,e)):Se(Xe),ge(Xe,n)}var jt=null,Ml=!1,wi=!1;function ha(e){jt===null?jt=[e]:jt.push(e)}function Pp(e){Ml=!0,ha(e)}function Qt(){if(!wi&&jt!==null){wi=!0;var e=0,t=ve;try{var n=jt;for(ve=1;e>=a,o-=a,Mt=1<<32-ft(t)+o|n<oe?(Ue=ee,ee=null):Ue=ee.sibling;var me=M(k,ee,E[oe],D);if(me===null){ee===null&&(ee=Ue);break}e&&ee&&me.alternate===null&&t(k,ee),x=i(me,x,oe),J===null?X=me:J.sibling=me,J=me,ee=Ue}if(oe===E.length)return n(k,ee),Ee&&pn(k,oe),X;if(ee===null){for(;oeoe?(Ue=ee,ee=null):Ue=ee.sibling;var nn=M(k,ee,me.value,D);if(nn===null){ee===null&&(ee=Ue);break}e&&ee&&nn.alternate===null&&t(k,ee),x=i(nn,x,oe),J===null?X=nn:J.sibling=nn,J=nn,ee=Ue}if(me.done)return n(k,ee),Ee&&pn(k,oe),X;if(ee===null){for(;!me.done;oe++,me=E.next())me=I(k,me.value,D),me!==null&&(x=i(me,x,oe),J===null?X=me:J.sibling=me,J=me);return Ee&&pn(k,oe),X}for(ee=r(k,ee);!me.done;oe++,me=E.next())me=$(ee,k,oe,me.value,D),me!==null&&(e&&me.alternate!==null&&ee.delete(me.key===null?oe:me.key),x=i(me,x,oe),J===null?X=me:J.sibling=me,J=me);return e&&ee.forEach(function(um){return t(k,um)}),Ee&&pn(k,oe),X}function Le(k,x,E,D){if(typeof E=="object"&&E!==null&&E.type===ue&&E.key===null&&(E=E.props.children),typeof E=="object"&&E!==null){switch(E.$$typeof){case le:e:{for(var X=E.key,J=x;J!==null;){if(J.key===X){if(X=E.type,X===ue){if(J.tag===7){n(k,J.sibling),x=o(J,E.props.children),x.return=k,k=x;break e}}else if(J.elementType===X||typeof X=="object"&&X!==null&&X.$$typeof===_e&&Sa(X)===J.type){n(k,J.sibling),x=o(J,E.props),x.ref=Ir(k,J,E),x.return=k,k=x;break e}n(k,J);break}else t(k,J);J=J.sibling}E.type===ue?(x=Sn(E.props.children,k.mode,D,E.key),x.return=k,k=x):(D=lo(E.type,E.key,E.props,null,k.mode,D),D.ref=Ir(k,x,E),D.return=k,k=D)}return a(k);case ne:e:{for(J=E.key;x!==null;){if(x.key===J)if(x.tag===4&&x.stateNode.containerInfo===E.containerInfo&&x.stateNode.implementation===E.implementation){n(k,x.sibling),x=o(x,E.children||[]),x.return=k,k=x;break e}else{n(k,x);break}else t(k,x);x=x.sibling}x=gu(E,k.mode,D),x.return=k,k=x}return a(k);case _e:return J=E._init,Le(k,x,J(E._payload),D)}if(cr(E))return Q(k,x,E,D);if(Z(E))return G(k,x,E,D);zl(k,E)}return typeof E=="string"&&E!==""||typeof E=="number"?(E=""+E,x!==null&&x.tag===6?(n(k,x.sibling),x=o(x,E),x.return=k,k=x):(n(k,x),x=vu(E,k.mode,D),x.return=k,k=x),a(k)):n(k,x)}return Le}var Bn=ka(!0),Ea=ka(!1),Il=Ht(null),Dl=null,$n=null,_i=null;function Pi(){_i=$n=Dl=null}function Ri(e){var t=Il.current;Se(Il),e._currentValue=t}function ji(e,t,n){for(;e!==null;){var r=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,r!==null&&(r.childLanes|=t)):r!==null&&(r.childLanes&t)!==t&&(r.childLanes|=t),e===n)break;e=e.return}}function Vn(e,t){Dl=e,_i=$n=null,e=e.dependencies,e!==null&&e.firstContext!==null&&((e.lanes&t)!==0&&(qe=!0),e.firstContext=null)}function st(e){var t=e._currentValue;if(_i!==e)if(e={context:e,memoizedValue:t,next:null},$n===null){if(Dl===null)throw Error(u(308));$n=e,Dl.dependencies={lanes:0,firstContext:e}}else $n=$n.next=e;return t}var mn=null;function Mi(e){mn===null?mn=[e]:mn.push(e)}function Ca(e,t,n,r){var o=t.interleaved;return o===null?(n.next=n,Mi(t)):(n.next=o.next,o.next=n),t.interleaved=n,Tt(e,r)}function Tt(e,t){e.lanes|=t;var n=e.alternate;for(n!==null&&(n.lanes|=t),n=e,e=e.return;e!==null;)e.childLanes|=t,n=e.alternate,n!==null&&(n.childLanes|=t),n=e,e=e.return;return n.tag===3?n.stateNode:null}var Gt=!1;function Li(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function Na(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function Ot(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function Yt(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,(pe&2)!==0){var o=r.pending;return o===null?t.next=t:(t.next=o.next,o.next=t),r.pending=t,Tt(e,n)}return o=r.interleaved,o===null?(t.next=t,Mi(r)):(t.next=o.next,o.next=t),r.interleaved=t,Tt(e,n)}function bl(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,(n&4194240)!==0)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,Ho(e,n)}}function _a(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var o=null,i=null;if(n=n.firstBaseUpdate,n!==null){do{var a={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};i===null?o=i=a:i=i.next=a,n=n.next}while(n!==null);i===null?o=i=t:i=i.next=t}else o=i=t;n={baseState:r.baseState,firstBaseUpdate:o,lastBaseUpdate:i,shared:r.shared,effects:r.effects},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function Al(e,t,n,r){var o=e.updateQueue;Gt=!1;var i=o.firstBaseUpdate,a=o.lastBaseUpdate,p=o.shared.pending;if(p!==null){o.shared.pending=null;var g=p,C=g.next;g.next=null,a===null?i=C:a.next=C,a=g;var O=e.alternate;O!==null&&(O=O.updateQueue,p=O.lastBaseUpdate,p!==a&&(p===null?O.firstBaseUpdate=C:p.next=C,O.lastBaseUpdate=g))}if(i!==null){var I=o.baseState;a=0,O=C=g=null,p=i;do{var M=p.lane,$=p.eventTime;if((r&M)===M){O!==null&&(O=O.next={eventTime:$,lane:0,tag:p.tag,payload:p.payload,callback:p.callback,next:null});e:{var Q=e,G=p;switch(M=t,$=n,G.tag){case 1:if(Q=G.payload,typeof Q=="function"){I=Q.call($,I,M);break e}I=Q;break e;case 3:Q.flags=Q.flags&-65537|128;case 0:if(Q=G.payload,M=typeof Q=="function"?Q.call($,I,M):Q,M==null)break e;I=U({},I,M);break e;case 2:Gt=!0}}p.callback!==null&&p.lane!==0&&(e.flags|=64,M=o.effects,M===null?o.effects=[p]:M.push(p))}else $={eventTime:$,lane:M,tag:p.tag,payload:p.payload,callback:p.callback,next:null},O===null?(C=O=$,g=I):O=O.next=$,a|=M;if(p=p.next,p===null){if(p=o.shared.pending,p===null)break;M=p,p=M.next,M.next=null,o.lastBaseUpdate=M,o.shared.pending=null}}while(!0);if(O===null&&(g=I),o.baseState=g,o.firstBaseUpdate=C,o.lastBaseUpdate=O,t=o.shared.interleaved,t!==null){o=t;do a|=o.lane,o=o.next;while(o!==t)}else i===null&&(o.shared.lanes=0);gn|=a,e.lanes=a,e.memoizedState=I}}function Pa(e,t,n){if(e=t.effects,t.effects=null,e!==null)for(t=0;tn?n:4,e(!0);var r=Di.transition;Di.transition={};try{e(!1),t()}finally{ve=n,Di.transition=r}}function Ka(){return at().memoizedState}function Lp(e,t,n){var r=Jt(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},Qa(e))Ga(t,n);else if(n=Ca(e,t,n,r),n!==null){var o=Ye();yt(n,e,r,o),Ya(n,t,r)}}function Tp(e,t,n){var r=Jt(e),o={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(Qa(e))Ga(t,o);else{var i=e.alternate;if(e.lanes===0&&(i===null||i.lanes===0)&&(i=t.lastRenderedReducer,i!==null))try{var a=t.lastRenderedState,p=i(a,n);if(o.hasEagerState=!0,o.eagerState=p,pt(p,a)){var g=t.interleaved;g===null?(o.next=o,Mi(t)):(o.next=g.next,g.next=o),t.interleaved=o;return}}catch{}finally{}n=Ca(e,t,o,r),n!==null&&(o=Ye(),yt(n,e,r,o),Ya(n,t,r))}}function Qa(e){var t=e.alternate;return e===Re||t!==null&&t===Re}function Ga(e,t){Fr=Bl=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Ya(e,t,n){if((n&4194240)!==0){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,Ho(e,n)}}var Wl={readContext:st,useCallback:He,useContext:He,useEffect:He,useImperativeHandle:He,useInsertionEffect:He,useLayoutEffect:He,useMemo:He,useReducer:He,useRef:He,useState:He,useDebugValue:He,useDeferredValue:He,useTransition:He,useMutableSource:He,useSyncExternalStore:He,useId:He,unstable_isNewReconciler:!1},Op={readContext:st,useCallback:function(e,t){return Et().memoizedState=[e,t===void 0?null:t],e},useContext:st,useEffect:Aa,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,$l(4194308,4,Ba.bind(null,t,e),n)},useLayoutEffect:function(e,t){return $l(4194308,4,e,t)},useInsertionEffect:function(e,t){return $l(4,2,e,t)},useMemo:function(e,t){var n=Et();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=Et();return t=n!==void 0?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=Lp.bind(null,Re,e),[r.memoizedState,e]},useRef:function(e){var t=Et();return e={current:e},t.memoizedState=e},useState:Da,useDebugValue:Vi,useDeferredValue:function(e){return Et().memoizedState=e},useTransition:function(){var e=Da(!1),t=e[0];return e=Mp.bind(null,e[1]),Et().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=Re,o=Et();if(Ee){if(n===void 0)throw Error(u(407));n=n()}else{if(n=t(),Fe===null)throw Error(u(349));(vn&30)!==0||La(r,t,n)}o.memoizedState=n;var i={value:n,getSnapshot:t};return o.queue=i,Aa(Oa.bind(null,r,i,e),[e]),r.flags|=2048,$r(9,Ta.bind(null,r,i,n,t),void 0,null),n},useId:function(){var e=Et(),t=Fe.identifierPrefix;if(Ee){var n=Lt,r=Mt;n=(r&~(1<<32-ft(r)-1)).toString(32)+n,t=":"+t+"R"+n,n=Ur++,0<\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=a.createElement(n,{is:r.is}):(e=a.createElement(n),n==="select"&&(a=e,r.multiple?a.multiple=!0:r.size&&(a.size=r.size))):e=a.createElementNS(e,n),e[St]=t,e[Or]=r,hc(e,t,!1,!1),t.stateNode=e;e:{switch(a=Io(n,r),n){case"dialog":we("cancel",e),we("close",e),o=r;break;case"iframe":case"object":case"embed":we("load",e),o=r;break;case"video":case"audio":for(o=0;oGn&&(t.flags|=128,r=!0,Vr(i,!1),t.lanes=4194304)}else{if(!r)if(e=Fl(a),e!==null){if(t.flags|=128,r=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),Vr(i,!0),i.tail===null&&i.tailMode==="hidden"&&!a.alternate&&!Ee)return Ke(t),null}else 2*Me()-i.renderingStartTime>Gn&&n!==1073741824&&(t.flags|=128,r=!0,Vr(i,!1),t.lanes=4194304);i.isBackwards?(a.sibling=t.child,t.child=a):(n=i.last,n!==null?n.sibling=a:t.child=a,i.last=a)}return i.tail!==null?(t=i.tail,i.rendering=t,i.tail=t.sibling,i.renderingStartTime=Me(),t.sibling=null,n=Pe.current,ge(Pe,r?n&1|2:n&1),t):(Ke(t),null);case 22:case 23:return pu(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&(t.mode&1)!==0?(ot&1073741824)!==0&&(Ke(t),t.subtreeFlags&6&&(t.flags|=8192)):Ke(t),null;case 24:return null;case 25:return null}throw Error(u(156,t.tag))}function Bp(e,t){switch(ki(t),t.tag){case 1:return Ze(t.type)&&Rl(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Wn(),Se(Xe),Se(We),Ii(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 5:return Oi(t),null;case 13:if(Se(Pe),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(u(340));Un()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return Se(Pe),null;case 4:return Wn(),null;case 10:return Ri(t.type._context),null;case 22:case 23:return pu(),null;case 24:return null;default:return null}}var Gl=!1,Qe=!1,$p=typeof WeakSet=="function"?WeakSet:Set,H=null;function Kn(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){je(e,t,r)}else n.current=null}function tu(e,t,n){try{n()}catch(r){je(e,t,r)}}var yc=!1;function Vp(e,t){if(pi=ml,e=Xs(),oi(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var o=r.anchorOffset,i=r.focusNode;r=r.focusOffset;try{n.nodeType,i.nodeType}catch{n=null;break e}var a=0,p=-1,g=-1,C=0,O=0,I=e,M=null;t:for(;;){for(var $;I!==n||o!==0&&I.nodeType!==3||(p=a+o),I!==i||r!==0&&I.nodeType!==3||(g=a+r),I.nodeType===3&&(a+=I.nodeValue.length),($=I.firstChild)!==null;)M=I,I=$;for(;;){if(I===e)break t;if(M===n&&++C===o&&(p=a),M===i&&++O===r&&(g=a),($=I.nextSibling)!==null)break;I=M,M=I.parentNode}I=$}n=p===-1||g===-1?null:{start:p,end:g}}else n=null}n=n||{start:0,end:0}}else n=null;for(mi={focusedElem:e,selectionRange:n},ml=!1,H=t;H!==null;)if(t=H,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,H=e;else for(;H!==null;){t=H;try{var Q=t.alternate;if((t.flags&1024)!==0)switch(t.tag){case 0:case 11:case 15:break;case 1:if(Q!==null){var G=Q.memoizedProps,Le=Q.memoizedState,k=t.stateNode,x=k.getSnapshotBeforeUpdate(t.elementType===t.type?G:ht(t.type,G),Le);k.__reactInternalSnapshotBeforeUpdate=x}break;case 3:var E=t.stateNode.containerInfo;E.nodeType===1?E.textContent="":E.nodeType===9&&E.documentElement&&E.removeChild(E.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(u(163))}}catch(D){je(t,t.return,D)}if(e=t.sibling,e!==null){e.return=t.return,H=e;break}H=t.return}return Q=yc,yc=!1,Q}function Wr(e,t,n){var r=t.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var o=r=r.next;do{if((o.tag&e)===e){var i=o.destroy;o.destroy=void 0,i!==void 0&&tu(t,n,i)}o=o.next}while(o!==r)}}function Yl(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function nu(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function xc(e){var t=e.alternate;t!==null&&(e.alternate=null,xc(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[St],delete t[Or],delete t[yi],delete t[Np],delete t[_p])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function wc(e){return e.tag===5||e.tag===3||e.tag===4}function Sc(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||wc(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function ru(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=_l));else if(r!==4&&(e=e.child,e!==null))for(ru(e,t,n),e=e.sibling;e!==null;)ru(e,t,n),e=e.sibling}function lu(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(lu(e,t,n),e=e.sibling;e!==null;)lu(e,t,n),e=e.sibling}var Be=null,vt=!1;function Xt(e,t,n){for(n=n.child;n!==null;)kc(e,t,n),n=n.sibling}function kc(e,t,n){if(wt&&typeof wt.onCommitFiberUnmount=="function")try{wt.onCommitFiberUnmount(sl,n)}catch{}switch(n.tag){case 5:Qe||Kn(n,t);case 6:var r=Be,o=vt;Be=null,Xt(e,t,n),Be=r,vt=o,Be!==null&&(vt?(e=Be,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):Be.removeChild(n.stateNode));break;case 18:Be!==null&&(vt?(e=Be,n=n.stateNode,e.nodeType===8?gi(e.parentNode,n):e.nodeType===1&&gi(e,n),kr(e)):gi(Be,n.stateNode));break;case 4:r=Be,o=vt,Be=n.stateNode.containerInfo,vt=!0,Xt(e,t,n),Be=r,vt=o;break;case 0:case 11:case 14:case 15:if(!Qe&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){o=r=r.next;do{var i=o,a=i.destroy;i=i.tag,a!==void 0&&((i&2)!==0||(i&4)!==0)&&tu(n,t,a),o=o.next}while(o!==r)}Xt(e,t,n);break;case 1:if(!Qe&&(Kn(n,t),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(p){je(n,t,p)}Xt(e,t,n);break;case 21:Xt(e,t,n);break;case 22:n.mode&1?(Qe=(r=Qe)||n.memoizedState!==null,Xt(e,t,n),Qe=r):Xt(e,t,n);break;default:Xt(e,t,n)}}function Ec(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new $p),t.forEach(function(r){var o=qp.bind(null,e,r);n.has(r)||(n.add(r),r.then(o,o))})}}function gt(e,t){var n=t.deletions;if(n!==null)for(var r=0;ro&&(o=a),r&=~i}if(r=o,r=Me()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*Hp(r/1960))-r,10e?16:e,qt===null)var r=!1;else{if(e=qt,qt=null,eo=0,(pe&6)!==0)throw Error(u(331));var o=pe;for(pe|=4,H=e.current;H!==null;){var i=H,a=i.child;if((H.flags&16)!==0){var p=i.deletions;if(p!==null){for(var g=0;gMe()-uu?xn(e,0):iu|=n),et(e,t)}function Dc(e,t){t===0&&((e.mode&1)===0?t=1:(t=cl,cl<<=1,(cl&130023424)===0&&(cl=4194304)));var n=Ye();e=Tt(e,t),e!==null&&(gr(e,t,n),et(e,n))}function Zp(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),Dc(e,n)}function qp(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,o=e.memoizedState;o!==null&&(n=o.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(u(314))}r!==null&&r.delete(t),Dc(e,n)}var bc;bc=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||Xe.current)qe=!0;else{if((e.lanes&n)===0&&(t.flags&128)===0)return qe=!1,Fp(e,t,n);qe=(e.flags&131072)!==0}else qe=!1,Ee&&(t.flags&1048576)!==0&&va(t,Tl,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;Ql(e,t),e=t.pendingProps;var o=bn(t,We.current);Vn(t,n),o=Ai(null,t,r,e,o,n);var i=Fi();return t.flags|=1,typeof o=="object"&&o!==null&&typeof o.render=="function"&&o.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,Ze(r)?(i=!0,jl(t)):i=!1,t.memoizedState=o.state!==null&&o.state!==void 0?o.state:null,Li(t),o.updater=Hl,t.stateNode=o,o._reactInternals=t,Hi(t,r,e,n),t=Yi(null,t,r,!0,i,n)):(t.tag=0,Ee&&i&&Si(t),Ge(null,t,o,n),t=t.child),t;case 16:r=t.elementType;e:{switch(Ql(e,t),e=t.pendingProps,o=r._init,r=o(r._payload),t.type=r,o=t.tag=em(r),e=ht(r,e),o){case 0:t=Gi(null,t,r,e,n);break e;case 1:t=ac(null,t,r,e,n);break e;case 11:t=lc(null,t,r,e,n);break e;case 14:t=oc(null,t,r,ht(r.type,e),n);break e}throw Error(u(306,r,""))}return t;case 0:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:ht(r,o),Gi(e,t,r,o,n);case 1:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:ht(r,o),ac(e,t,r,o,n);case 3:e:{if(cc(t),e===null)throw Error(u(387));r=t.pendingProps,i=t.memoizedState,o=i.element,Na(e,t),Al(t,r,null,n);var a=t.memoizedState;if(r=a.element,i.isDehydrated)if(i={element:r,isDehydrated:!1,cache:a.cache,pendingSuspenseBoundaries:a.pendingSuspenseBoundaries,transitions:a.transitions},t.updateQueue.baseState=i,t.memoizedState=i,t.flags&256){o=Hn(Error(u(423)),t),t=dc(e,t,r,n,o);break e}else if(r!==o){o=Hn(Error(u(424)),t),t=dc(e,t,r,n,o);break e}else for(lt=Wt(t.stateNode.containerInfo.firstChild),rt=t,Ee=!0,mt=null,n=Ea(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(Un(),r===o){t=zt(e,t,n);break e}Ge(e,t,r,n)}t=t.child}return t;case 5:return Ra(t),e===null&&Ci(t),r=t.type,o=t.pendingProps,i=e!==null?e.memoizedProps:null,a=o.children,hi(r,o)?a=null:i!==null&&hi(r,i)&&(t.flags|=32),sc(e,t),Ge(e,t,a,n),t.child;case 6:return e===null&&Ci(t),null;case 13:return fc(e,t,n);case 4:return Ti(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=Bn(t,null,r,n):Ge(e,t,r,n),t.child;case 11:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:ht(r,o),lc(e,t,r,o,n);case 7:return Ge(e,t,t.pendingProps,n),t.child;case 8:return Ge(e,t,t.pendingProps.children,n),t.child;case 12:return Ge(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,o=t.pendingProps,i=t.memoizedProps,a=o.value,ge(Il,r._currentValue),r._currentValue=a,i!==null)if(pt(i.value,a)){if(i.children===o.children&&!Xe.current){t=zt(e,t,n);break e}}else for(i=t.child,i!==null&&(i.return=t);i!==null;){var p=i.dependencies;if(p!==null){a=i.child;for(var g=p.firstContext;g!==null;){if(g.context===r){if(i.tag===1){g=Ot(-1,n&-n),g.tag=2;var C=i.updateQueue;if(C!==null){C=C.shared;var O=C.pending;O===null?g.next=g:(g.next=O.next,O.next=g),C.pending=g}}i.lanes|=n,g=i.alternate,g!==null&&(g.lanes|=n),ji(i.return,n,t),p.lanes|=n;break}g=g.next}}else if(i.tag===10)a=i.type===t.type?null:i.child;else if(i.tag===18){if(a=i.return,a===null)throw Error(u(341));a.lanes|=n,p=a.alternate,p!==null&&(p.lanes|=n),ji(a,n,t),a=i.sibling}else a=i.child;if(a!==null)a.return=i;else for(a=i;a!==null;){if(a===t){a=null;break}if(i=a.sibling,i!==null){i.return=a.return,a=i;break}a=a.return}i=a}Ge(e,t,o.children,n),t=t.child}return t;case 9:return o=t.type,r=t.pendingProps.children,Vn(t,n),o=st(o),r=r(o),t.flags|=1,Ge(e,t,r,n),t.child;case 14:return r=t.type,o=ht(r,t.pendingProps),o=ht(r.type,o),oc(e,t,r,o,n);case 15:return ic(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:ht(r,o),Ql(e,t),t.tag=1,Ze(r)?(e=!0,jl(t)):e=!1,Vn(t,n),Za(t,r,o),Hi(t,r,o,n),Yi(null,t,r,!0,e,n);case 19:return mc(e,t,n);case 22:return uc(e,t,n)}throw Error(u(156,t.tag))};function Ac(e,t){return gs(e,t)}function Jp(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function dt(e,t,n,r){return new Jp(e,t,n,r)}function hu(e){return e=e.prototype,!(!e||!e.isReactComponent)}function em(e){if(typeof e=="function")return hu(e)?1:0;if(e!=null){if(e=e.$$typeof,e===ie)return 11;if(e===ze)return 14}return 2}function tn(e,t){var n=e.alternate;return n===null?(n=dt(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function lo(e,t,n,r,o,i){var a=2;if(r=e,typeof e=="function")hu(e)&&(a=1);else if(typeof e=="string")a=5;else e:switch(e){case ue:return Sn(n.children,o,i,t);case ye:a=8,o|=8;break;case de:return e=dt(12,n,t,o|2),e.elementType=de,e.lanes=i,e;case Oe:return e=dt(13,n,t,o),e.elementType=Oe,e.lanes=i,e;case Ne:return e=dt(19,n,t,o),e.elementType=Ne,e.lanes=i,e;case he:return oo(n,o,i,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case xe:a=10;break e;case Ce:a=9;break e;case ie:a=11;break e;case ze:a=14;break e;case _e:a=16,r=null;break e}throw Error(u(130,e==null?e:typeof e,""))}return t=dt(a,n,t,o),t.elementType=e,t.type=r,t.lanes=i,t}function Sn(e,t,n,r){return e=dt(7,e,r,t),e.lanes=n,e}function oo(e,t,n,r){return e=dt(22,e,r,t),e.elementType=he,e.lanes=n,e.stateNode={isHidden:!1},e}function vu(e,t,n){return e=dt(6,e,null,t),e.lanes=n,e}function gu(e,t,n){return t=dt(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function tm(e,t,n,r,o){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Wo(0),this.expirationTimes=Wo(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Wo(0),this.identifierPrefix=r,this.onRecoverableError=o,this.mutableSourceEagerHydrationData=null}function yu(e,t,n,r,o,i,a,p,g){return e=new tm(e,t,n,p,g),t===1?(t=1,i===!0&&(t|=8)):t=0,i=dt(3,null,null,t),e.current=i,i.stateNode=e,i.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},Li(i),e}function nm(e,t,n){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(l)}catch(s){console.error(s)}}return l(),Cu.exports=mm(),Cu.exports}var qc;function hm(){if(qc)return po;qc=1;var l=Sd();return po.createRoot=l.createRoot,po.hydrateRoot=l.hydrateRoot,po}var vm=hm();const gm=xd(vm);/** - * @license lucide-react v0.460.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const ym=l=>l.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),kd=(...l)=>l.filter((s,u,c)=>!!s&&s.trim()!==""&&c.indexOf(s)===u).join(" ").trim();/** - * @license lucide-react v0.460.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */var xm={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};/** - * @license lucide-react v0.460.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const wm=v.forwardRef(({color:l="currentColor",size:s=24,strokeWidth:u=2,absoluteStrokeWidth:c,className:d="",children:f,iconNode:h,...m},N)=>v.createElement("svg",{ref:N,...xm,width:s,height:s,stroke:l,strokeWidth:c?Number(u)*24/Number(s):u,className:kd("lucide",d),...m},[...h.map(([P,R])=>v.createElement(P,R)),...Array.isArray(f)?f:[f]]));/** - * @license lucide-react v0.460.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Pt=(l,s)=>{const u=v.forwardRef(({className:c,...d},f)=>v.createElement(wm,{ref:f,iconNode:s,className:kd(`lucide-${ym(l)}`,c),...d}));return u.displayName=`${l}`,u};/** - * @license lucide-react v0.460.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Sm=Pt("Bot",[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]]);/** - * @license lucide-react v0.460.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const km=Pt("Boxes",[["path",{d:"M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z",key:"lc1i9w"}],["path",{d:"m7 16.5-4.74-2.85",key:"1o9zyk"}],["path",{d:"m7 16.5 5-3",key:"va8pkn"}],["path",{d:"M7 16.5v5.17",key:"jnp8gn"}],["path",{d:"M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z",key:"8zsnat"}],["path",{d:"m17 16.5-5-3",key:"8arw3v"}],["path",{d:"m17 16.5 4.74-2.85",key:"8rfmw"}],["path",{d:"M17 16.5v5.17",key:"k6z78m"}],["path",{d:"M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z",key:"1xygjf"}],["path",{d:"M12 8 7.26 5.15",key:"1vbdud"}],["path",{d:"m12 8 4.74-2.85",key:"3rx089"}],["path",{d:"M12 13.5V8",key:"1io7kd"}]]);/** - * @license lucide-react v0.460.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Em=Pt("Brain",[["path",{d:"M12 5a3 3 0 1 0-5.997.125 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588A4 4 0 1 0 12 18Z",key:"l5xja"}],["path",{d:"M12 5a3 3 0 1 1 5.997.125 4 4 0 0 1 2.526 5.77 4 4 0 0 1-.556 6.588A4 4 0 1 1 12 18Z",key:"ep3f8r"}],["path",{d:"M15 13a4.5 4.5 0 0 1-3-4 4.5 4.5 0 0 1-3 4",key:"1p4c4q"}],["path",{d:"M17.599 6.5a3 3 0 0 0 .399-1.375",key:"tmeiqw"}],["path",{d:"M6.003 5.125A3 3 0 0 0 6.401 6.5",key:"105sqy"}],["path",{d:"M3.477 10.896a4 4 0 0 1 .585-.396",key:"ql3yin"}],["path",{d:"M19.938 10.5a4 4 0 0 1 .585.396",key:"1qfode"}],["path",{d:"M6 18a4 4 0 0 1-1.967-.516",key:"2e4loj"}],["path",{d:"M19.967 17.484A4 4 0 0 1 18 18",key:"159ez6"}]]);/** - * @license lucide-react v0.460.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Cm=Pt("Check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);/** - * @license lucide-react v0.460.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Nm=Pt("Command",[["path",{d:"M15 6v12a3 3 0 1 0 3-3H6a3 3 0 1 0 3 3V6a3 3 0 1 0-3 3h12a3 3 0 1 0-3-3",key:"11bfej"}]]);/** - * @license lucide-react v0.460.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const _m=Pt("Construction",[["rect",{x:"2",y:"6",width:"20",height:"8",rx:"1",key:"1estib"}],["path",{d:"M17 14v7",key:"7m2elx"}],["path",{d:"M7 14v7",key:"1cm7wv"}],["path",{d:"M17 3v3",key:"1v4jwn"}],["path",{d:"M7 3v3",key:"7o6guu"}],["path",{d:"M10 14 2.3 6.3",key:"1023jk"}],["path",{d:"m14 6 7.7 7.7",key:"1s8pl2"}],["path",{d:"m8 6 8 8",key:"hl96qh"}]]);/** - * @license lucide-react v0.460.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Pm=Pt("Copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);/** - * @license lucide-react v0.460.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Rm=Pt("Cpu",[["rect",{width:"16",height:"16",x:"4",y:"4",rx:"2",key:"14l7u7"}],["rect",{width:"6",height:"6",x:"9",y:"9",rx:"1",key:"5aljv4"}],["path",{d:"M15 2v2",key:"13l42r"}],["path",{d:"M15 20v2",key:"15mkzm"}],["path",{d:"M2 15h2",key:"1gxd5l"}],["path",{d:"M2 9h2",key:"1bbxkp"}],["path",{d:"M20 15h2",key:"19e6y8"}],["path",{d:"M20 9h2",key:"19tzq7"}],["path",{d:"M9 2v2",key:"165o2o"}],["path",{d:"M9 20v2",key:"i2bqo8"}]]);/** - * @license lucide-react v0.460.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const jm=Pt("Plug",[["path",{d:"M12 22v-5",key:"1ega77"}],["path",{d:"M9 8V2",key:"14iosj"}],["path",{d:"M15 8V2",key:"18g5xt"}],["path",{d:"M18 8v5a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V8Z",key:"osxo6l"}]]);/** - * @license lucide-react v0.460.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Mm=Pt("Route",[["circle",{cx:"6",cy:"19",r:"3",key:"1kj8tv"}],["path",{d:"M9 19h8.5a3.5 3.5 0 0 0 0-7h-11a3.5 3.5 0 0 1 0-7H15",key:"1d8sl"}],["circle",{cx:"18",cy:"5",r:"3",key:"gq8acd"}]]),bu=[{id:"models",label:"Modelle & Routing",hint:"Modelle kuratieren, Gruppen & Auto-Routing",icon:km},{id:"routing",label:"Routing",hint:"Gateway-Regeln: schnell ↔ schwer",icon:Mm},{id:"system",label:"System",hint:"Metriken, Dienste, Updates",icon:Rm},{id:"memory",label:"Gedächtnis",hint:"Geteiltes Memory verwalten",icon:Em},{id:"connect",label:"Verbinden",hint:"IDE-/Agent-Configs erzeugen",icon:jm},{id:"agent",label:"Hermes",hint:"Agent-Status & WebUI öffnen",icon:Sm}];var Jc=1,Lm=.9,Tm=.8,Om=.17,Pu=.1,Ru=.999,zm=.9999,Im=.99,Dm=/[\\\/_+.#"@\[\(\{&]/,bm=/[\\\/_+.#"@\[\(\{&]/g,Am=/[\s-]/,Ed=/[\s-]/g;function Au(l,s,u,c,d,f,h){if(f===s.length)return d===l.length?Jc:Im;var m=`${d},${f}`;if(h[m]!==void 0)return h[m];for(var N=c.charAt(f),P=u.indexOf(N,d),R=0,_,L,z,K;P>=0;)_=Au(l,s,u,c,P+1,f+1,h),_>R&&(P===d?_*=Jc:Dm.test(l.charAt(P-1))?(_*=Tm,z=l.slice(d,P-1).match(bm),z&&d>0&&(_*=Math.pow(Ru,z.length))):Am.test(l.charAt(P-1))?(_*=Lm,K=l.slice(d,P-1).match(Ed),K&&d>0&&(_*=Math.pow(Ru,K.length))):(_*=Om,d>0&&(_*=Math.pow(Ru,P-d))),l.charAt(P)!==s.charAt(f)&&(_*=zm)),(__&&(_=L*Pu)),_>R&&(R=_),P=u.indexOf(N,P+1);return h[m]=R,R}function ed(l){return l.toLowerCase().replace(Ed," ")}function Fm(l,s,u){return l=u&&u.length>0?`${l+" "+u.join(" ")}`:l,Au(l,s,ed(l),ed(s),0,0,{})}function un(l,s,{checkForDefaultPrevented:u=!0}={}){return function(d){if(l==null||l(d),u===!1||!d.defaultPrevented)return s==null?void 0:s(d)}}function td(l,s){if(typeof l=="function")return l(s);l!=null&&(l.current=s)}function or(...l){return s=>{let u=!1;const c=l.map(d=>{const f=td(d,s);return!u&&typeof f=="function"&&(u=!0),f});if(u)return()=>{for(let d=0;d{var W;const{scope:L,children:z,...K}=_,j=((W=L==null?void 0:L[l])==null?void 0:W[N])||m,T=v.useMemo(()=>K,Object.values(K));return y.jsx(j.Provider,{value:T,children:z})};P.displayName=f+"Provider";function R(_,L){var j;const z=((j=L==null?void 0:L[l])==null?void 0:j[N])||m,K=v.useContext(z);if(K)return K;if(h!==void 0)return h;throw new Error(`\`${_}\` must be used within \`${f}\``)}return[P,R]}const d=()=>{const f=u.map(h=>v.createContext(h));return function(m){const N=(m==null?void 0:m[l])||f;return v.useMemo(()=>({[`__scope${l}`]:{...m,[l]:N}}),[m,N])}};return d.scopeName=l,[c,Bm(d,...s)]}function Bm(...l){const s=l[0];if(l.length===1)return s;const u=()=>{const c=l.map(d=>({useScope:d(),scopeName:d.scopeName}));return function(f){const h=c.reduce((m,{useScope:N,scopeName:P})=>{const _=N(f)[`__scope${P}`];return{...m,..._}},{});return v.useMemo(()=>({[`__scope${s.scopeName}`]:h}),[h])}};return u.scopeName=s.scopeName,u}var Jr=globalThis!=null&&globalThis.document?v.useLayoutEffect:()=>{},$m=Wu[" useId ".trim().toString()]||(()=>{}),Vm=0;function bt(l){const[s,u]=v.useState($m());return Jr(()=>{u(c=>c??String(Vm++))},[l]),s?`radix-${s}`:""}var Wm=Wu[" useInsertionEffect ".trim().toString()]||Jr;function Hm({prop:l,defaultProp:s,onChange:u=()=>{},caller:c}){const[d,f,h]=Km({defaultProp:s,onChange:u}),m=l!==void 0,N=m?l:d;{const R=v.useRef(l!==void 0);v.useEffect(()=>{const _=R.current;_!==m&&console.warn(`${c} is changing from ${_?"controlled":"uncontrolled"} to ${m?"controlled":"uncontrolled"}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),R.current=m},[m,c])}const P=v.useCallback(R=>{var _;if(m){const L=Qm(R)?R(l):R;L!==l&&((_=h.current)==null||_.call(h,L))}else f(R)},[m,l,f,h]);return[N,P]}function Km({defaultProp:l,onChange:s}){const[u,c]=v.useState(l),d=v.useRef(u),f=v.useRef(s);return Wm(()=>{f.current=s},[s]),v.useEffect(()=>{var h;d.current!==u&&((h=f.current)==null||h.call(f,u),d.current=u)},[u,d]),[u,c,f]}function Qm(l){return typeof l=="function"}var Cd=Sd();function Nd(l){const s=v.forwardRef((u,c)=>{let{children:d,...f}=u,h=null,m=!1;const N=[];nd(d)&&typeof mo=="function"&&(d=mo(d._payload)),v.Children.forEach(d,L=>{var z;if(qm(L)){m=!0;const K=L;let j="child"in K.props?K.props.child:K.props.children;nd(j)&&typeof mo=="function"&&(j=mo(j._payload)),h=Ym(K,j),N.push((z=h==null?void 0:h.props)==null?void 0:z.children)}else N.push(L)}),h?h=v.cloneElement(h,void 0,N):!m&&v.Children.count(d)===1&&v.isValidElement(d)&&(h=d);const P=h?Zm(h):void 0,R=Cn(c,P);if(!h){if(d||d===0)throw new Error(m?nh(l):th(l));return d}const _=Xm(f,h.props??{});return h.type!==v.Fragment&&(_.ref=c?R:P),v.cloneElement(h,_)});return s.displayName=`${l}.Slot`,s}var Gm=Symbol.for("radix.slottable"),Ym=(l,s)=>{if("child"in l.props){const u=l.props.child;return v.isValidElement(u)?v.cloneElement(u,void 0,l.props.children(u.props.children)):null}return v.isValidElement(s)?s:null};function Xm(l,s){const u={...s};for(const c in s){const d=l[c],f=s[c];/^on[A-Z]/.test(c)?d&&f?u[c]=(...m)=>{const N=f(...m);return d(...m),N}:d&&(u[c]=d):c==="style"?u[c]={...d,...f}:c==="className"&&(u[c]=[d,f].filter(Boolean).join(" "))}return{...l,...u}}function Zm(l){var c,d;let s=(c=Object.getOwnPropertyDescriptor(l.props,"ref"))==null?void 0:c.get,u=s&&"isReactWarning"in s&&s.isReactWarning;return u?l.ref:(s=(d=Object.getOwnPropertyDescriptor(l,"ref"))==null?void 0:d.get,u=s&&"isReactWarning"in s&&s.isReactWarning,u?l.props.ref:l.props.ref||l.ref)}function qm(l){return v.isValidElement(l)&&typeof l.type=="function"&&"__radixId"in l.type&&l.type.__radixId===Gm}var Jm=Symbol.for("react.lazy");function nd(l){return l!=null&&typeof l=="object"&&"$$typeof"in l&&l.$$typeof===Jm&&"_payload"in l&&eh(l._payload)}function eh(l){return typeof l=="object"&&l!==null&&"then"in l}var th=l=>`${l} failed to slot onto its children. Expected a single React element child or \`Slottable\`.`,nh=l=>`${l} failed to slot onto its \`Slottable\`. Expected \`Slottable\` to receive a single React element child.`,mo=Wu[" use ".trim().toString()],rh=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],Ve=rh.reduce((l,s)=>{const u=Nd(`Primitive.${s}`),c=v.forwardRef((d,f)=>{const{asChild:h,...m}=d,N=h?u:s;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),y.jsx(N,{...m,ref:f})});return c.displayName=`Primitive.${s}`,{...l,[s]:c}},{});function lh(l,s){l&&Cd.flushSync(()=>l.dispatchEvent(s))}function el(l){const s=v.useRef(l);return v.useEffect(()=>{s.current=l}),v.useMemo(()=>((...u)=>{var c;return(c=s.current)==null?void 0:c.call(s,...u)}),[])}function oh(l,s=globalThis==null?void 0:globalThis.document){const u=el(l);v.useEffect(()=>{const c=d=>{d.key==="Escape"&&u(d)};return s.addEventListener("keydown",c,{capture:!0}),()=>s.removeEventListener("keydown",c,{capture:!0})},[u,s])}var ih="DismissableLayer",Fu="dismissableLayer.update",uh="dismissableLayer.pointerDownOutside",sh="dismissableLayer.focusOutside",rd,Hu=v.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set,dismissableSurfaces:new Set}),_d=v.forwardRef((l,s)=>{const{disableOutsidePointerEvents:u=!1,deferPointerDownOutside:c=!1,onEscapeKeyDown:d,onPointerDownOutside:f,onFocusOutside:h,onInteractOutside:m,onDismiss:N,...P}=l,R=v.useContext(Hu),[_,L]=v.useState(null),z=(_==null?void 0:_.ownerDocument)??(globalThis==null?void 0:globalThis.document),[,K]=v.useState({}),j=Cn(s,de=>L(de)),T=Array.from(R.layers),[W]=[...R.layersWithOutsidePointerEventsDisabled].slice(-1),V=T.indexOf(W),te=_?T.indexOf(_):-1,q=R.layersWithOutsidePointerEventsDisabled.size>0,le=te>=V,ne=v.useRef(!1),ue=fh(de=>{const xe=de.target;if(!(xe instanceof Node))return;const Ce=[...R.branches].some(ie=>ie.contains(xe));!le||Ce||(f==null||f(de),m==null||m(de),de.defaultPrevented||N==null||N())},{ownerDocument:z,deferPointerDownOutside:c,isDeferredPointerDownOutsideRef:ne,dismissableSurfaces:R.dismissableSurfaces}),ye=ph(de=>{if(c&&ne.current)return;const xe=de.target;[...R.branches].some(ie=>ie.contains(xe))||(h==null||h(de),m==null||m(de),de.defaultPrevented||N==null||N())},z);return oh(de=>{te===R.layers.size-1&&(d==null||d(de),!de.defaultPrevented&&N&&(de.preventDefault(),N()))},z),v.useEffect(()=>{if(_)return u&&(R.layersWithOutsidePointerEventsDisabled.size===0&&(rd=z.body.style.pointerEvents,z.body.style.pointerEvents="none"),R.layersWithOutsidePointerEventsDisabled.add(_)),R.layers.add(_),ld(),()=>{u&&(R.layersWithOutsidePointerEventsDisabled.delete(_),R.layersWithOutsidePointerEventsDisabled.size===0&&(z.body.style.pointerEvents=rd))}},[_,z,u,R]),v.useEffect(()=>()=>{_&&(R.layers.delete(_),R.layersWithOutsidePointerEventsDisabled.delete(_),ld())},[_,R]),v.useEffect(()=>{const de=()=>K({});return document.addEventListener(Fu,de),()=>document.removeEventListener(Fu,de)},[]),y.jsx(Ve.div,{...P,ref:j,style:{pointerEvents:q?le?"auto":"none":void 0,...l.style},onFocusCapture:un(l.onFocusCapture,ye.onFocusCapture),onBlurCapture:un(l.onBlurCapture,ye.onBlurCapture),onPointerDownCapture:un(l.onPointerDownCapture,ue.onPointerDownCapture)})});_d.displayName=ih;var ah="DismissableLayerBranch",ch=v.forwardRef((l,s)=>{const u=v.useContext(Hu),c=v.useRef(null),d=Cn(s,c);return v.useEffect(()=>{const f=c.current;if(f)return u.branches.add(f),()=>{u.branches.delete(f)}},[u.branches]),y.jsx(Ve.div,{...l,ref:d})});ch.displayName=ah;function dh(){const l=v.useContext(Hu),[s,u]=v.useState(null);return v.useEffect(()=>{if(s)return l.dismissableSurfaces.add(s),()=>{l.dismissableSurfaces.delete(s)}},[s,l.dismissableSurfaces]),u}function fh(l,s){const{ownerDocument:u=globalThis==null?void 0:globalThis.document,deferPointerDownOutside:c=!1,isDeferredPointerDownOutsideRef:d,dismissableSurfaces:f}=s,h=el(l),m=v.useRef(!1),N=v.useRef(!1),P=v.useRef(new Map),R=v.useRef(()=>{});return v.useEffect(()=>{function _(){N.current=!1,d.current=!1,P.current.clear()}function L(){return Array.from(P.current.values()).some(Boolean)}function z(V){if(!N.current)return;const te=V.target;te instanceof Node&&[...f].some(le=>le.contains(te))||P.current.set(V.type,!0),V.type==="click"&&window.setTimeout(()=>{N.current&&R.current()},0)}function K(V){N.current&&P.current.set(V.type,!1)}const j=V=>{if(V.target&&!m.current){let te=function(){u.removeEventListener("click",R.current);const le=L();_(),le||Pd(uh,h,q,{discrete:!0})};const q={originalEvent:V};N.current=!0,d.current=c&&V.button===0,P.current.clear(),!c||V.button!==0?te():(u.removeEventListener("click",R.current),R.current=te,u.addEventListener("click",R.current,{once:!0}))}else u.removeEventListener("click",R.current),_();m.current=!1},T=["pointerup","mousedown","mouseup","touchstart","touchend","click"];for(const V of T)u.addEventListener(V,z,!0),u.addEventListener(V,K);const W=window.setTimeout(()=>{u.addEventListener("pointerdown",j)},0);return()=>{window.clearTimeout(W),u.removeEventListener("pointerdown",j),u.removeEventListener("click",R.current);for(const V of T)u.removeEventListener(V,z,!0),u.removeEventListener(V,K)}},[u,h,c,d,f]),{onPointerDownCapture:()=>m.current=!0}}function ph(l,s=globalThis==null?void 0:globalThis.document){const u=el(l),c=v.useRef(!1);return v.useEffect(()=>{const d=f=>{f.target&&!c.current&&Pd(sh,u,{originalEvent:f},{discrete:!1})};return s.addEventListener("focusin",d),()=>s.removeEventListener("focusin",d)},[s,u]),{onFocusCapture:()=>c.current=!0,onBlurCapture:()=>c.current=!1}}function ld(){const l=new CustomEvent(Fu);document.dispatchEvent(l)}function Pd(l,s,u,{discrete:c}){const d=u.originalEvent.target,f=new CustomEvent(l,{bubbles:!1,cancelable:!0,detail:u});s&&d.addEventListener(l,s,{once:!0}),c?lh(d,f):d.dispatchEvent(f)}var ju="focusScope.autoFocusOnMount",Mu="focusScope.autoFocusOnUnmount",od={bubbles:!1,cancelable:!0},mh="FocusScope",Rd=v.forwardRef((l,s)=>{const{loop:u=!1,trapped:c=!1,onMountAutoFocus:d,onUnmountAutoFocus:f,...h}=l,[m,N]=v.useState(null),P=el(d),R=el(f),_=v.useRef(null),L=Cn(s,j=>N(j)),z=v.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;v.useEffect(()=>{if(c){let j=function(te){if(z.paused||!m)return;const q=te.target;m.contains(q)?_.current=q:on(_.current,{select:!0})},T=function(te){if(z.paused||!m)return;const q=te.relatedTarget;q!==null&&(m.contains(q)||on(_.current,{select:!0}))},W=function(te){if(document.activeElement===document.body)for(const le of te)le.removedNodes.length>0&&on(m)};document.addEventListener("focusin",j),document.addEventListener("focusout",T);const V=new MutationObserver(W);return m&&V.observe(m,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",j),document.removeEventListener("focusout",T),V.disconnect()}}},[c,m,z.paused]),v.useEffect(()=>{if(m){ud.add(z);const j=document.activeElement;if(!m.contains(j)){const W=new CustomEvent(ju,od);m.addEventListener(ju,P),m.dispatchEvent(W),W.defaultPrevented||(hh(wh(jd(m)),{select:!0}),document.activeElement===j&&on(m))}return()=>{m.removeEventListener(ju,P),setTimeout(()=>{const W=new CustomEvent(Mu,od);m.addEventListener(Mu,R),m.dispatchEvent(W),W.defaultPrevented||on(j??document.body,{select:!0}),m.removeEventListener(Mu,R),ud.remove(z)},0)}}},[m,P,R,z]);const K=v.useCallback(j=>{if(!u&&!c||z.paused)return;const T=j.key==="Tab"&&!j.altKey&&!j.ctrlKey&&!j.metaKey,W=document.activeElement;if(T&&W){const V=j.currentTarget,[te,q]=vh(V);te&&q?!j.shiftKey&&W===q?(j.preventDefault(),u&&on(te,{select:!0})):j.shiftKey&&W===te&&(j.preventDefault(),u&&on(q,{select:!0})):W===V&&j.preventDefault()}},[u,c,z.paused]);return y.jsx(Ve.div,{tabIndex:-1,...h,ref:L,onKeyDown:K})});Rd.displayName=mh;function hh(l,{select:s=!1}={}){const u=document.activeElement;for(const c of l)if(on(c,{select:s}),document.activeElement!==u)return}function vh(l){const s=jd(l),u=id(s,l),c=id(s.reverse(),l);return[u,c]}function jd(l){const s=[],u=document.createTreeWalker(l,NodeFilter.SHOW_ELEMENT,{acceptNode:c=>{const d=c.tagName==="INPUT"&&c.type==="hidden";return c.disabled||c.hidden||d?NodeFilter.FILTER_SKIP:c.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;u.nextNode();)s.push(u.currentNode);return s}function id(l,s){for(const u of l)if(!gh(u,{upTo:s}))return u}function gh(l,{upTo:s}){if(getComputedStyle(l).visibility==="hidden")return!0;for(;l;){if(s!==void 0&&l===s)return!1;if(getComputedStyle(l).display==="none")return!0;l=l.parentElement}return!1}function yh(l){return l instanceof HTMLInputElement&&"select"in l}function on(l,{select:s=!1}={}){if(l&&l.focus){const u=document.activeElement;l.focus({preventScroll:!0}),l!==u&&yh(l)&&s&&l.select()}}var ud=xh();function xh(){let l=[];return{add(s){const u=l[0];s!==u&&(u==null||u.pause()),l=sd(l,s),l.unshift(s)},remove(s){var u;l=sd(l,s),(u=l[0])==null||u.resume()}}}function sd(l,s){const u=[...l],c=u.indexOf(s);return c!==-1&&u.splice(c,1),u}function wh(l){return l.filter(s=>s.tagName!=="A")}var Sh="Portal",Md=v.forwardRef((l,s)=>{var m;const{container:u,...c}=l,[d,f]=v.useState(!1);Jr(()=>f(!0),[]);const h=u||d&&((m=globalThis==null?void 0:globalThis.document)==null?void 0:m.body);return h?Cd.createPortal(y.jsx(Ve.div,{...c,ref:s}),h):null});Md.displayName=Sh;function kh(l,s){return v.useReducer((u,c)=>s[u][c]??u,l)}var No=l=>{const{present:s,children:u}=l,c=Eh(s),d=typeof u=="function"?u({present:c.isPresent}):v.Children.only(u),f=Ch(c.ref,Nh(d));return typeof u=="function"||c.isPresent?v.cloneElement(d,{ref:f}):null};No.displayName="Presence";function Eh(l){const[s,u]=v.useState(),c=v.useRef(null),d=v.useRef(l),f=v.useRef("none"),h=l?"mounted":"unmounted",[m,N]=kh(h,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return v.useEffect(()=>{const P=ho(c.current);f.current=m==="mounted"?P:"none"},[m]),Jr(()=>{const P=c.current,R=d.current;if(R!==l){const L=f.current,z=ho(P);l?N("MOUNT"):z==="none"||(P==null?void 0:P.display)==="none"?N("UNMOUNT"):N(R&&L!==z?"ANIMATION_OUT":"UNMOUNT"),d.current=l}},[l,N]),Jr(()=>{if(s){let P;const R=s.ownerDocument.defaultView??window,_=z=>{const j=ho(c.current).includes(CSS.escape(z.animationName));if(z.target===s&&j&&(N("ANIMATION_END"),!d.current)){const T=s.style.animationFillMode;s.style.animationFillMode="forwards",P=R.setTimeout(()=>{s.style.animationFillMode==="forwards"&&(s.style.animationFillMode=T)})}},L=z=>{z.target===s&&(f.current=ho(c.current))};return s.addEventListener("animationstart",L),s.addEventListener("animationcancel",_),s.addEventListener("animationend",_),()=>{R.clearTimeout(P),s.removeEventListener("animationstart",L),s.removeEventListener("animationcancel",_),s.removeEventListener("animationend",_)}}else N("ANIMATION_END")},[s,N]),{isPresent:["mounted","unmountSuspended"].includes(m),ref:v.useCallback(P=>{c.current=P?getComputedStyle(P):null,u(P)},[])}}function ad(l,s){if(typeof l=="function")return l(s);l!=null&&(l.current=s)}function Ch(...l){const s=v.useRef(l);return s.current=l,v.useCallback(u=>{const c=s.current;let d=!1;const f=c.map(h=>{const m=ad(h,u);return!d&&typeof m=="function"&&(d=!0),m});if(d)return()=>{for(let h=0;h{Nt||(Nt={start:cd(),end:cd()});const{start:l,end:s}=Nt;return document.body.firstElementChild!==l&&document.body.insertAdjacentElement("afterbegin",l),document.body.lastElementChild!==s&&document.body.insertAdjacentElement("beforeend",s),vo++,()=>{vo===1&&(Nt==null||Nt.start.remove(),Nt==null||Nt.end.remove(),Nt=null),vo=Math.max(0,vo-1)}},[])}function cd(){const l=document.createElement("span");return l.setAttribute("data-radix-focus-guard",""),l.tabIndex=0,l.style.outline="none",l.style.opacity="0",l.style.position="fixed",l.style.pointerEvents="none",l}var _t=function(){return _t=Object.assign||function(s){for(var u,c=1,d=arguments.length;c"u")return Vh;var s=Wh(l),u=document.documentElement.clientWidth,c=window.innerWidth;return{left:s[0],top:s[1],right:s[2],gap:Math.max(0,c-u+s[2]-s[0])}},Kh=zd(),rr="data-scroll-locked",Qh=function(l,s,u,c){var d=l.left,f=l.top,h=l.right,m=l.gap;return u===void 0&&(u="margin"),` - .`.concat(Rh,` { - overflow: hidden `).concat(c,`; - padding-right: `).concat(m,"px ").concat(c,`; - } - body[`).concat(rr,`] { - overflow: hidden `).concat(c,`; - overscroll-behavior: contain; - `).concat([s&&"position: relative ".concat(c,";"),u==="margin"&&` - padding-left: `.concat(d,`px; - padding-top: `).concat(f,`px; - padding-right: `).concat(h,`px; - margin-left:0; - margin-top:0; - margin-right: `).concat(m,"px ").concat(c,`; - `),u==="padding"&&"padding-right: ".concat(m,"px ").concat(c,";")].filter(Boolean).join(""),` - } - - .`).concat(ko,` { - right: `).concat(m,"px ").concat(c,`; - } - - .`).concat(Eo,` { - margin-right: `).concat(m,"px ").concat(c,`; - } - - .`).concat(ko," .").concat(ko,` { - right: 0 `).concat(c,`; - } - - .`).concat(Eo," .").concat(Eo,` { - margin-right: 0 `).concat(c,`; - } - - body[`).concat(rr,`] { - `).concat(jh,": ").concat(m,`px; - } -`)},fd=function(){var l=parseInt(document.body.getAttribute(rr)||"0",10);return isFinite(l)?l:0},Gh=function(){v.useEffect(function(){return document.body.setAttribute(rr,(fd()+1).toString()),function(){var l=fd()-1;l<=0?document.body.removeAttribute(rr):document.body.setAttribute(rr,l.toString())}},[])},Yh=function(l){var s=l.noRelative,u=l.noImportant,c=l.gapMode,d=c===void 0?"margin":c;Gh();var f=v.useMemo(function(){return Hh(d)},[d]);return v.createElement(Kh,{styles:Qh(f,!s,d,u?"":"!important")})},Uu=!1;if(typeof window<"u")try{var go=Object.defineProperty({},"passive",{get:function(){return Uu=!0,!0}});window.addEventListener("test",go,go),window.removeEventListener("test",go,go)}catch{Uu=!1}var Xn=Uu?{passive:!1}:!1,Xh=function(l){return l.tagName==="TEXTAREA"},Id=function(l,s){if(!(l instanceof Element))return!1;var u=window.getComputedStyle(l);return u[s]!=="hidden"&&!(u.overflowY===u.overflowX&&!Xh(l)&&u[s]==="visible")},Zh=function(l){return Id(l,"overflowY")},qh=function(l){return Id(l,"overflowX")},pd=function(l,s){var u=s.ownerDocument,c=s;do{typeof ShadowRoot<"u"&&c instanceof ShadowRoot&&(c=c.host);var d=Dd(l,c);if(d){var f=bd(l,c),h=f[1],m=f[2];if(h>m)return!0}c=c.parentNode}while(c&&c!==u.body);return!1},Jh=function(l){var s=l.scrollTop,u=l.scrollHeight,c=l.clientHeight;return[s,u,c]},ev=function(l){var s=l.scrollLeft,u=l.scrollWidth,c=l.clientWidth;return[s,u,c]},Dd=function(l,s){return l==="v"?Zh(s):qh(s)},bd=function(l,s){return l==="v"?Jh(s):ev(s)},tv=function(l,s){return l==="h"&&s==="rtl"?-1:1},nv=function(l,s,u,c,d){var f=tv(l,window.getComputedStyle(s).direction),h=f*c,m=u.target,N=s.contains(m),P=!1,R=h>0,_=0,L=0;do{if(!m)break;var z=bd(l,m),K=z[0],j=z[1],T=z[2],W=j-T-f*K;(K||W)&&Dd(l,m)&&(_+=W,L+=K);var V=m.parentNode;m=V&&V.nodeType===Node.DOCUMENT_FRAGMENT_NODE?V.host:V}while(!N&&m!==document.body||N&&(s.contains(m)||s===m));return(R&&Math.abs(_)<1||!R&&Math.abs(L)<1)&&(P=!0),P},yo=function(l){return"changedTouches"in l?[l.changedTouches[0].clientX,l.changedTouches[0].clientY]:[0,0]},md=function(l){return[l.deltaX,l.deltaY]},hd=function(l){return l&&"current"in l?l.current:l},rv=function(l,s){return l[0]===s[0]&&l[1]===s[1]},lv=function(l){return` - .block-interactivity-`.concat(l,` {pointer-events: none;} - .allow-interactivity-`).concat(l,` {pointer-events: all;} -`)},ov=0,Zn=[];function iv(l){var s=v.useRef([]),u=v.useRef([0,0]),c=v.useRef(),d=v.useState(ov++)[0],f=v.useState(zd)[0],h=v.useRef(l);v.useEffect(function(){h.current=l},[l]),v.useEffect(function(){if(l.inert){document.body.classList.add("block-interactivity-".concat(d));var j=Ph([l.lockRef.current],(l.shards||[]).map(hd),!0).filter(Boolean);return j.forEach(function(T){return T.classList.add("allow-interactivity-".concat(d))}),function(){document.body.classList.remove("block-interactivity-".concat(d)),j.forEach(function(T){return T.classList.remove("allow-interactivity-".concat(d))})}}},[l.inert,l.lockRef.current,l.shards]);var m=v.useCallback(function(j,T){if("touches"in j&&j.touches.length===2||j.type==="wheel"&&j.ctrlKey)return!h.current.allowPinchZoom;var W=yo(j),V=u.current,te="deltaX"in j?j.deltaX:V[0]-W[0],q="deltaY"in j?j.deltaY:V[1]-W[1],le,ne=j.target,ue=Math.abs(te)>Math.abs(q)?"h":"v";if("touches"in j&&ue==="h"&&ne.type==="range")return!1;var ye=window.getSelection(),de=ye&&ye.anchorNode,xe=de?de===ne||de.contains(ne):!1;if(xe)return!1;var Ce=pd(ue,ne);if(!Ce)return!0;if(Ce?le=ue:(le=ue==="v"?"h":"v",Ce=pd(ue,ne)),!Ce)return!1;if(!c.current&&"changedTouches"in j&&(te||q)&&(c.current=le),!le)return!0;var ie=c.current||le;return nv(ie,T,j,ie==="h"?te:q)},[]),N=v.useCallback(function(j){var T=j;if(!(!Zn.length||Zn[Zn.length-1]!==f)){var W="deltaY"in T?md(T):yo(T),V=s.current.filter(function(le){return le.name===T.type&&(le.target===T.target||T.target===le.shadowParent)&&rv(le.delta,W)})[0];if(V&&V.should){T.cancelable&&T.preventDefault();return}if(!V){var te=(h.current.shards||[]).map(hd).filter(Boolean).filter(function(le){return le.contains(T.target)}),q=te.length>0?m(T,te[0]):!h.current.noIsolation;q&&T.cancelable&&T.preventDefault()}}},[]),P=v.useCallback(function(j,T,W,V){var te={name:j,delta:T,target:W,should:V,shadowParent:uv(W)};s.current.push(te),setTimeout(function(){s.current=s.current.filter(function(q){return q!==te})},1)},[]),R=v.useCallback(function(j){u.current=yo(j),c.current=void 0},[]),_=v.useCallback(function(j){P(j.type,md(j),j.target,m(j,l.lockRef.current))},[]),L=v.useCallback(function(j){P(j.type,yo(j),j.target,m(j,l.lockRef.current))},[]);v.useEffect(function(){return Zn.push(f),l.setCallbacks({onScrollCapture:_,onWheelCapture:_,onTouchMoveCapture:L}),document.addEventListener("wheel",N,Xn),document.addEventListener("touchmove",N,Xn),document.addEventListener("touchstart",R,Xn),function(){Zn=Zn.filter(function(j){return j!==f}),document.removeEventListener("wheel",N,Xn),document.removeEventListener("touchmove",N,Xn),document.removeEventListener("touchstart",R,Xn)}},[]);var z=l.removeScrollBar,K=l.inert;return v.createElement(v.Fragment,null,K?v.createElement(f,{styles:lv(d)}):null,z?v.createElement(Yh,{noRelative:l.noRelative,gapMode:l.gapMode}):null)}function uv(l){for(var s=null;l!==null;)l instanceof ShadowRoot&&(s=l.host,l=l.host),l=l.parentNode;return s}const sv=Dh(Od,iv);var Ad=v.forwardRef(function(l,s){return v.createElement(_o,_t({},l,{ref:s,sideCar:sv}))});Ad.classNames=_o.classNames;var av=function(l){if(typeof document>"u")return null;var s=Array.isArray(l)?l[0]:l;return s.ownerDocument.body},qn=new WeakMap,xo=new WeakMap,wo={},zu=0,Fd=function(l){return l&&(l.host||Fd(l.parentNode))},cv=function(l,s){return s.map(function(u){if(l.contains(u))return u;var c=Fd(u);return c&&l.contains(c)?c:(console.error("aria-hidden",u,"in not contained inside",l,". Doing nothing"),null)}).filter(function(u){return!!u})},dv=function(l,s,u,c){var d=cv(s,Array.isArray(l)?l:[l]);wo[u]||(wo[u]=new WeakMap);var f=wo[u],h=[],m=new Set,N=new Set(d),P=function(_){!_||m.has(_)||(m.add(_),P(_.parentNode))};d.forEach(P);var R=function(_){!_||N.has(_)||Array.prototype.forEach.call(_.children,function(L){if(m.has(L))R(L);else try{var z=L.getAttribute(c),K=z!==null&&z!=="false",j=(qn.get(L)||0)+1,T=(f.get(L)||0)+1;qn.set(L,j),f.set(L,T),h.push(L),j===1&&K&&xo.set(L,!0),T===1&&L.setAttribute(u,"true"),K||L.setAttribute(c,"true")}catch(W){console.error("aria-hidden: cannot operate on ",L,W)}})};return R(s),m.clear(),zu++,function(){h.forEach(function(_){var L=qn.get(_)-1,z=f.get(_)-1;qn.set(_,L),f.set(_,z),L||(xo.has(_)||_.removeAttribute(c),xo.delete(_)),z||_.removeAttribute(u)}),zu--,zu||(qn=new WeakMap,qn=new WeakMap,xo=new WeakMap,wo={})}},fv=function(l,s,u){u===void 0&&(u="data-aria-hidden");var c=Array.from(Array.isArray(l)?l:[l]),d=av(l);return d?(c.push.apply(c,Array.from(d.querySelectorAll("[aria-live], script"))),dv(c,d,u,"aria-hidden")):function(){return null}},Po="Dialog",[Ud]=Um(Po),[pv,xt]=Ud(Po),Bd=l=>{const{__scopeDialog:s,children:u,open:c,defaultOpen:d,onOpenChange:f,modal:h=!0}=l,m=v.useRef(null),N=v.useRef(null),[P,R]=Hm({prop:c,defaultProp:d??!1,onChange:f,caller:Po});return y.jsx(pv,{scope:s,triggerRef:m,contentRef:N,contentId:bt(),titleId:bt(),descriptionId:bt(),open:P,onOpenChange:R,onOpenToggle:v.useCallback(()=>R(_=>!_),[R]),modal:h,children:u})};Bd.displayName=Po;var $d="DialogTrigger",mv=v.forwardRef((l,s)=>{const{__scopeDialog:u,...c}=l,d=xt($d,u),f=Cn(s,d.triggerRef);return y.jsx(Ve.button,{type:"button","aria-haspopup":"dialog","aria-expanded":d.open,"aria-controls":d.open?d.contentId:void 0,"data-state":Qu(d.open),...c,ref:f,onClick:un(l.onClick,d.onOpenToggle)})});mv.displayName=$d;var Ku="DialogPortal",[hv,Vd]=Ud(Ku,{forceMount:void 0}),Wd=l=>{const{__scopeDialog:s,forceMount:u,children:c,container:d}=l,f=xt(Ku,s);return y.jsx(hv,{scope:s,forceMount:u,children:v.Children.map(c,h=>y.jsx(No,{present:u||f.open,children:y.jsx(Md,{asChild:!0,container:d,children:h})}))})};Wd.displayName=Ku;var Co="DialogOverlay",Hd=v.forwardRef((l,s)=>{const u=Vd(Co,l.__scopeDialog),{forceMount:c=u.forceMount,...d}=l,f=xt(Co,l.__scopeDialog);return f.modal?y.jsx(No,{present:c||f.open,children:y.jsx(gv,{...d,ref:s})}):null});Hd.displayName=Co;var vv=Nd("DialogOverlay.RemoveScroll"),gv=v.forwardRef((l,s)=>{const{__scopeDialog:u,...c}=l,d=xt(Co,u),f=dh(),h=Cn(s,f);return y.jsx(Ad,{as:vv,allowPinchZoom:!0,shards:[d.contentRef],children:y.jsx(Ve.div,{"data-state":Qu(d.open),...c,ref:h,style:{pointerEvents:"auto",...c.style}})})}),ir="DialogContent",Kd=v.forwardRef((l,s)=>{const u=Vd(ir,l.__scopeDialog),{forceMount:c=u.forceMount,...d}=l,f=xt(ir,l.__scopeDialog);return y.jsx(No,{present:c||f.open,children:f.modal?y.jsx(yv,{...d,ref:s}):y.jsx(xv,{...d,ref:s})})});Kd.displayName=ir;var yv=v.forwardRef((l,s)=>{const u=xt(ir,l.__scopeDialog),c=v.useRef(null),d=Cn(s,u.contentRef,c);return v.useEffect(()=>{const f=c.current;if(f)return fv(f)},[]),y.jsx(Qd,{...l,ref:d,trapFocus:u.open,disableOutsidePointerEvents:u.open,onCloseAutoFocus:un(l.onCloseAutoFocus,f=>{var h;f.preventDefault(),(h=u.triggerRef.current)==null||h.focus()}),onPointerDownOutside:un(l.onPointerDownOutside,f=>{const h=f.detail.originalEvent,m=h.button===0&&h.ctrlKey===!0;(h.button===2||m)&&f.preventDefault()}),onFocusOutside:un(l.onFocusOutside,f=>f.preventDefault())})}),xv=v.forwardRef((l,s)=>{const u=xt(ir,l.__scopeDialog),c=v.useRef(!1),d=v.useRef(!1);return y.jsx(Qd,{...l,ref:s,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:f=>{var h,m;(h=l.onCloseAutoFocus)==null||h.call(l,f),f.defaultPrevented||(c.current||(m=u.triggerRef.current)==null||m.focus(),f.preventDefault()),c.current=!1,d.current=!1},onInteractOutside:f=>{var N,P;(N=l.onInteractOutside)==null||N.call(l,f),f.defaultPrevented||(c.current=!0,f.detail.originalEvent.type==="pointerdown"&&(d.current=!0));const h=f.target;((P=u.triggerRef.current)==null?void 0:P.contains(h))&&f.preventDefault(),f.detail.originalEvent.type==="focusin"&&d.current&&f.preventDefault()}})}),Qd=v.forwardRef((l,s)=>{const{__scopeDialog:u,trapFocus:c,onOpenAutoFocus:d,onCloseAutoFocus:f,...h}=l,m=xt(ir,u);return _h(),y.jsx(y.Fragment,{children:y.jsx(Rd,{asChild:!0,loop:!0,trapped:c,onMountAutoFocus:d,onUnmountAutoFocus:f,children:y.jsx(_d,{role:"dialog",id:m.contentId,"aria-describedby":m.descriptionId,"aria-labelledby":m.titleId,"data-state":Qu(m.open),...h,ref:s,deferPointerDownOutside:!0,onDismiss:()=>m.onOpenChange(!1)})})})}),Gd="DialogTitle",wv=v.forwardRef((l,s)=>{const{__scopeDialog:u,...c}=l,d=xt(Gd,u);return y.jsx(Ve.h2,{id:d.titleId,...c,ref:s})});wv.displayName=Gd;var Yd="DialogDescription",Sv=v.forwardRef((l,s)=>{const{__scopeDialog:u,...c}=l,d=xt(Yd,u);return y.jsx(Ve.p,{id:d.descriptionId,...c,ref:s})});Sv.displayName=Yd;var Xd="DialogClose",kv=v.forwardRef((l,s)=>{const{__scopeDialog:u,...c}=l,d=xt(Xd,u);return y.jsx(Ve.button,{type:"button",...c,ref:s,onClick:un(l.onClick,()=>d.onOpenChange(!1))})});kv.displayName=Xd;function Qu(l){return l?"open":"closed"}var Xr='[cmdk-group=""]',Iu='[cmdk-group-items=""]',Ev='[cmdk-group-heading=""]',Zd='[cmdk-item=""]',vd=`${Zd}:not([aria-disabled="true"])`,Bu="cmdk-item-select",tr="data-value",Cv=(l,s,u)=>Fm(l,s,u),qd=v.createContext(void 0),tl=()=>v.useContext(qd),Jd=v.createContext(void 0),Gu=()=>v.useContext(Jd),ef=v.createContext(void 0),tf=v.forwardRef((l,s)=>{let u=nr(()=>{var w,A;return{search:"",value:(A=(w=l.value)!=null?w:l.defaultValue)!=null?A:"",selectedItemId:void 0,filtered:{count:0,items:new Map,groups:new Set}}}),c=nr(()=>new Set),d=nr(()=>new Map),f=nr(()=>new Map),h=nr(()=>new Set),m=nf(l),{label:N,children:P,value:R,onValueChange:_,filter:L,shouldFilter:z,loop:K,disablePointerSelection:j=!1,vimBindings:T=!0,...W}=l,V=bt(),te=bt(),q=bt(),le=v.useRef(null),ne=Iv();En(()=>{if(R!==void 0){let w=R.trim();u.current.value=w,ue.emit()}},[R]),En(()=>{ne(6,Oe)},[]);let ue=v.useMemo(()=>({subscribe:w=>(h.current.add(w),()=>h.current.delete(w)),snapshot:()=>u.current,setState:(w,A,B)=>{var b,Y,re,se;if(!Object.is(u.current[w],A)){if(u.current[w]=A,w==="search")ie(),xe(),ne(1,Ce);else if(w==="value"){if(document.activeElement.hasAttribute("cmdk-input")||document.activeElement.hasAttribute("cmdk-root")){let ce=document.getElementById(q);ce?ce.focus():(b=document.getElementById(V))==null||b.focus()}if(ne(7,()=>{var ce;u.current.selectedItemId=(ce=Ne())==null?void 0:ce.id,ue.emit()}),B||ne(5,Oe),((Y=m.current)==null?void 0:Y.value)!==void 0){let ce=A??"";(se=(re=m.current).onValueChange)==null||se.call(re,ce);return}}ue.emit()}},emit:()=>{h.current.forEach(w=>w())}}),[]),ye=v.useMemo(()=>({value:(w,A,B)=>{var b;A!==((b=f.current.get(w))==null?void 0:b.value)&&(f.current.set(w,{value:A,keywords:B}),u.current.filtered.items.set(w,de(A,B)),ne(2,()=>{xe(),ue.emit()}))},item:(w,A)=>(c.current.add(w),A&&(d.current.has(A)?d.current.get(A).add(w):d.current.set(A,new Set([w]))),ne(3,()=>{ie(),xe(),u.current.value||Ce(),ue.emit()}),()=>{f.current.delete(w),c.current.delete(w),u.current.filtered.items.delete(w);let B=Ne();ne(4,()=>{ie(),(B==null?void 0:B.getAttribute("id"))===w&&Ce(),ue.emit()})}),group:w=>(d.current.has(w)||d.current.set(w,new Set),()=>{f.current.delete(w),d.current.delete(w)}),filter:()=>m.current.shouldFilter,label:N||l["aria-label"],getDisablePointerSelection:()=>m.current.disablePointerSelection,listId:V,inputId:q,labelId:te,listInnerRef:le}),[]);function de(w,A){var B,b;let Y=(b=(B=m.current)==null?void 0:B.filter)!=null?b:Cv;return w?Y(w,u.current.search,A):0}function xe(){if(!u.current.search||m.current.shouldFilter===!1)return;let w=u.current.filtered.items,A=[];u.current.filtered.groups.forEach(b=>{let Y=d.current.get(b),re=0;Y.forEach(se=>{let ce=w.get(se);re=Math.max(ce,re)}),A.push([b,re])});let B=le.current;ze().sort((b,Y)=>{var re,se;let ce=b.getAttribute("id"),be=Y.getAttribute("id");return((re=w.get(be))!=null?re:0)-((se=w.get(ce))!=null?se:0)}).forEach(b=>{let Y=b.closest(Iu);Y?Y.appendChild(b.parentElement===Y?b:b.closest(`${Iu} > *`)):B.appendChild(b.parentElement===B?b:b.closest(`${Iu} > *`))}),A.sort((b,Y)=>Y[1]-b[1]).forEach(b=>{var Y;let re=(Y=le.current)==null?void 0:Y.querySelector(`${Xr}[${tr}="${encodeURIComponent(b[0])}"]`);re==null||re.parentElement.appendChild(re)})}function Ce(){let w=ze().find(B=>B.getAttribute("aria-disabled")!=="true"),A=w==null?void 0:w.getAttribute(tr);ue.setState("value",A||void 0)}function ie(){var w,A,B,b;if(!u.current.search||m.current.shouldFilter===!1){u.current.filtered.count=c.current.size;return}u.current.filtered.groups=new Set;let Y=0;for(let re of c.current){let se=(A=(w=f.current.get(re))==null?void 0:w.value)!=null?A:"",ce=(b=(B=f.current.get(re))==null?void 0:B.keywords)!=null?b:[],be=de(se,ce);u.current.filtered.items.set(re,be),be>0&&Y++}for(let[re,se]of d.current)for(let ce of se)if(u.current.filtered.items.get(ce)>0){u.current.filtered.groups.add(re);break}u.current.filtered.count=Y}function Oe(){var w,A,B;let b=Ne();b&&(((w=b.parentElement)==null?void 0:w.firstChild)===b&&((B=(A=b.closest(Xr))==null?void 0:A.querySelector(Ev))==null||B.scrollIntoView({block:"nearest"})),b.scrollIntoView({block:"nearest"}))}function Ne(){var w;return(w=le.current)==null?void 0:w.querySelector(`${Zd}[aria-selected="true"]`)}function ze(){var w;return Array.from(((w=le.current)==null?void 0:w.querySelectorAll(vd))||[])}function _e(w){let A=ze()[w];A&&ue.setState("value",A.getAttribute(tr))}function he(w){var A;let B=Ne(),b=ze(),Y=b.findIndex(se=>se===B),re=b[Y+w];(A=m.current)!=null&&A.loop&&(re=Y+w<0?b[b.length-1]:Y+w===b.length?b[0]:b[Y+w]),re&&ue.setState("value",re.getAttribute(tr))}function F(w){let A=Ne(),B=A==null?void 0:A.closest(Xr),b;for(;B&&!b;)B=w>0?Ov(B,Xr):zv(B,Xr),b=B==null?void 0:B.querySelector(vd);b?ue.setState("value",b.getAttribute(tr)):he(w)}let Z=()=>_e(ze().length-1),U=w=>{w.preventDefault(),w.metaKey?Z():w.altKey?F(1):he(1)},S=w=>{w.preventDefault(),w.metaKey?_e(0):w.altKey?F(-1):he(-1)};return v.createElement(Ve.div,{ref:s,tabIndex:-1,...W,"cmdk-root":"",onKeyDown:w=>{var A;(A=W.onKeyDown)==null||A.call(W,w);let B=w.nativeEvent.isComposing||w.keyCode===229;if(!(w.defaultPrevented||B))switch(w.key){case"n":case"j":{T&&w.ctrlKey&&U(w);break}case"ArrowDown":{U(w);break}case"p":case"k":{T&&w.ctrlKey&&S(w);break}case"ArrowUp":{S(w);break}case"Home":{w.preventDefault(),_e(0);break}case"End":{w.preventDefault(),Z();break}case"Enter":{w.preventDefault();let b=Ne();if(b){let Y=new Event(Bu);b.dispatchEvent(Y)}}}}},v.createElement("label",{"cmdk-label":"",htmlFor:ye.inputId,id:ye.labelId,style:bv},N),Ro(l,w=>v.createElement(Jd.Provider,{value:ue},v.createElement(qd.Provider,{value:ye},w))))}),Nv=v.forwardRef((l,s)=>{var u,c;let d=bt(),f=v.useRef(null),h=v.useContext(ef),m=tl(),N=nf(l),P=(c=(u=N.current)==null?void 0:u.forceMount)!=null?c:h==null?void 0:h.forceMount;En(()=>{if(!P)return m.item(d,h==null?void 0:h.id)},[P]);let R=rf(d,f,[l.value,l.children,f],l.keywords),_=Gu(),L=sn(ne=>ne.value&&ne.value===R.current),z=sn(ne=>P||m.filter()===!1?!0:ne.search?ne.filtered.items.get(d)>0:!0);v.useEffect(()=>{let ne=f.current;if(!(!ne||l.disabled))return ne.addEventListener(Bu,K),()=>ne.removeEventListener(Bu,K)},[z,l.onSelect,l.disabled]);function K(){var ne,ue;j(),(ue=(ne=N.current).onSelect)==null||ue.call(ne,R.current)}function j(){_.setState("value",R.current,!0)}if(!z)return null;let{disabled:T,value:W,onSelect:V,forceMount:te,keywords:q,...le}=l;return v.createElement(Ve.div,{ref:or(f,s),...le,id:d,"cmdk-item":"",role:"option","aria-disabled":!!T,"aria-selected":!!L,"data-disabled":!!T,"data-selected":!!L,onPointerMove:T||m.getDisablePointerSelection()?void 0:j,onClick:T?void 0:K},l.children)}),_v=v.forwardRef((l,s)=>{let{heading:u,children:c,forceMount:d,...f}=l,h=bt(),m=v.useRef(null),N=v.useRef(null),P=bt(),R=tl(),_=sn(z=>d||R.filter()===!1?!0:z.search?z.filtered.groups.has(h):!0);En(()=>R.group(h),[]),rf(h,m,[l.value,l.heading,N]);let L=v.useMemo(()=>({id:h,forceMount:d}),[d]);return v.createElement(Ve.div,{ref:or(m,s),...f,"cmdk-group":"",role:"presentation",hidden:_?void 0:!0},u&&v.createElement("div",{ref:N,"cmdk-group-heading":"","aria-hidden":!0,id:P},u),Ro(l,z=>v.createElement("div",{"cmdk-group-items":"",role:"group","aria-labelledby":u?P:void 0},v.createElement(ef.Provider,{value:L},z))))}),Pv=v.forwardRef((l,s)=>{let{alwaysRender:u,...c}=l,d=v.useRef(null),f=sn(h=>!h.search);return!u&&!f?null:v.createElement(Ve.div,{ref:or(d,s),...c,"cmdk-separator":"",role:"separator"})}),Rv=v.forwardRef((l,s)=>{let{onValueChange:u,...c}=l,d=l.value!=null,f=Gu(),h=sn(P=>P.search),m=sn(P=>P.selectedItemId),N=tl();return v.useEffect(()=>{l.value!=null&&f.setState("search",l.value)},[l.value]),v.createElement(Ve.input,{ref:s,...c,"cmdk-input":"",autoComplete:"off",autoCorrect:"off",spellCheck:!1,"aria-autocomplete":"list",role:"combobox","aria-expanded":!0,"aria-controls":N.listId,"aria-labelledby":N.labelId,"aria-activedescendant":m,id:N.inputId,type:"text",value:d?l.value:h,onChange:P=>{d||f.setState("search",P.target.value),u==null||u(P.target.value)}})}),jv=v.forwardRef((l,s)=>{let{children:u,label:c="Suggestions",...d}=l,f=v.useRef(null),h=v.useRef(null),m=sn(P=>P.selectedItemId),N=tl();return v.useEffect(()=>{if(h.current&&f.current){let P=h.current,R=f.current,_,L=new ResizeObserver(()=>{_=requestAnimationFrame(()=>{let z=P.offsetHeight;R.style.setProperty("--cmdk-list-height",z.toFixed(1)+"px")})});return L.observe(P),()=>{cancelAnimationFrame(_),L.unobserve(P)}}},[]),v.createElement(Ve.div,{ref:or(f,s),...d,"cmdk-list":"",role:"listbox",tabIndex:-1,"aria-activedescendant":m,"aria-label":c,id:N.listId},Ro(l,P=>v.createElement("div",{ref:or(h,N.listInnerRef),"cmdk-list-sizer":""},P)))}),Mv=v.forwardRef((l,s)=>{let{open:u,onOpenChange:c,overlayClassName:d,contentClassName:f,container:h,...m}=l;return v.createElement(Bd,{open:u,onOpenChange:c},v.createElement(Wd,{container:h},v.createElement(Hd,{"cmdk-overlay":"",className:d}),v.createElement(Kd,{"aria-label":l.label,"cmdk-dialog":"",className:f},v.createElement(tf,{ref:s,...m}))))}),Lv=v.forwardRef((l,s)=>sn(u=>u.filtered.count===0)?v.createElement(Ve.div,{ref:s,...l,"cmdk-empty":"",role:"presentation"}):null),Tv=v.forwardRef((l,s)=>{let{progress:u,children:c,label:d="Loading...",...f}=l;return v.createElement(Ve.div,{ref:s,...f,"cmdk-loading":"",role:"progressbar","aria-valuenow":u,"aria-valuemin":0,"aria-valuemax":100,"aria-label":d},Ro(l,h=>v.createElement("div",{"aria-hidden":!0},h)))}),Jn=Object.assign(tf,{List:jv,Item:Nv,Input:Rv,Group:_v,Separator:Pv,Dialog:Mv,Empty:Lv,Loading:Tv});function Ov(l,s){let u=l.nextElementSibling;for(;u;){if(u.matches(s))return u;u=u.nextElementSibling}}function zv(l,s){let u=l.previousElementSibling;for(;u;){if(u.matches(s))return u;u=u.previousElementSibling}}function nf(l){let s=v.useRef(l);return En(()=>{s.current=l}),s}var En=typeof window>"u"?v.useEffect:v.useLayoutEffect;function nr(l){let s=v.useRef();return s.current===void 0&&(s.current=l()),s}function sn(l){let s=Gu(),u=()=>l(s.snapshot());return v.useSyncExternalStore(s.subscribe,u,u)}function rf(l,s,u,c=[]){let d=v.useRef(),f=tl();return En(()=>{var h;let m=(()=>{var P;for(let R of u){if(typeof R=="string")return R.trim();if(typeof R=="object"&&"current"in R)return R.current?(P=R.current.textContent)==null?void 0:P.trim():d.current}})(),N=c.map(P=>P.trim());f.value(l,m,N),(h=s.current)==null||h.setAttribute(tr,m),d.current=m}),d}var Iv=()=>{let[l,s]=v.useState(),u=nr(()=>new Map);return En(()=>{u.current.forEach(c=>c()),u.current=new Map},[l]),(c,d)=>{u.current.set(c,d),s({})}};function Dv(l){let s=l.type;return typeof s=="function"?s(l.props):"render"in s?s.render(l.props):l}function Ro({asChild:l,children:s},u){return l&&v.isValidElement(s)?v.cloneElement(Dv(s),{ref:s.ref},u(s.props.children)):u(s)}var bv={position:"absolute",width:"1px",height:"1px",padding:"0",margin:"-1px",overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",borderWidth:"0"};function Av({onNavigate:l}){const[s,u]=v.useState(!1);return v.useEffect(()=>{const c=d=>{(d.metaKey||d.ctrlKey)&&d.key.toLowerCase()==="k"&&(d.preventDefault(),u(f=>!f))};return document.addEventListener("keydown",c),()=>document.removeEventListener("keydown",c)},[]),y.jsx(Jn.Dialog,{open:s,onOpenChange:u,label:"Befehlspalette",className:"fixed inset-0 z-50 flex items-start justify-center bg-black/50 p-4 pt-[12vh]",onClick:()=>u(!1),children:y.jsxs("div",{className:"w-full max-w-lg overflow-hidden rounded-xl border border-border bg-popover text-popover-foreground shadow-2xl",onClick:c=>c.stopPropagation(),children:[y.jsx(Jn.Input,{autoFocus:!0,placeholder:"Springe zu… (Modelle, Routing, System …)",className:"w-full border-b border-border bg-transparent px-4 py-3 text-sm outline-none placeholder:text-muted-foreground"}),y.jsxs(Jn.List,{className:"max-h-80 overflow-y-auto p-2",children:[y.jsx(Jn.Empty,{className:"px-3 py-6 text-center text-sm text-muted-foreground",children:"Nichts gefunden."}),y.jsx(Jn.Group,{heading:"Bereiche",className:"px-1 py-1 text-xs text-muted-foreground",children:bu.map(c=>y.jsxs(Jn.Item,{value:`${c.label} ${c.hint}`,onSelect:()=>{l(c.id),u(!1)},className:"flex cursor-pointer items-center gap-3 rounded-md px-3 py-2 text-sm text-foreground aria-selected:bg-accent aria-selected:text-accent-foreground",children:[y.jsx(c.icon,{className:"h-4 w-4 text-primary"}),y.jsx("span",{children:c.label}),y.jsx("span",{className:"ml-auto truncate text-xs text-muted-foreground",children:c.hint})]},c.id))})]})]})})}async function sr(l,s){const u=await fetch(l,{headers:{"Content-Type":"application/json"},...s});if(!u.ok)throw new Error(`${u.status} ${u.statusText}`);return u.json()}function kn({children:l,tone:s="muted"}){const u={muted:"bg-muted text-muted-foreground",primary:"bg-primary/15 text-primary",warn:"bg-amber-500/15 text-amber-500"};return y.jsx("span",{className:`rounded px-1.5 py-0.5 text-[11px] font-medium ${u[s]}`,children:l})}function lf({caps:l}){return l?y.jsxs("span",{className:"inline-flex flex-wrap gap-1",children:[l.coder&&y.jsx(kn,{children:"💻 Code"}),l.vision&&y.jsx(kn,{children:"👁 Bild"}),l.reasoning&&y.jsx(kn,{children:"🧠 Reason"}),l.moe&&y.jsxs(kn,{tone:"primary",children:["🧩 MoE",l.active_b?`·${l.active_b}b`:""]}),l.tools==="yes"&&y.jsx(kn,{tone:"primary",children:"🛠 Tools"}),l.tools==="likely"&&y.jsx(kn,{tone:"warn",children:"🛠 Tools?"}),l.embedding&&y.jsx(kn,{children:"🔢 Embed"})]}):null}function of(l){var s,u,c="";if(typeof l=="string"||typeof l=="number")c+=l;else if(typeof l=="object")if(Array.isArray(l)){var d=l.length;for(s=0;s{const s=$v(l),{conflictingClassGroups:u,conflictingClassGroupModifiers:c}=l;return{getClassGroupId:h=>{const m=h.split(Yu);return m[0]===""&&m.length!==1&&m.shift(),uf(m,s)||Bv(h)},getConflictingClassGroupIds:(h,m)=>{const N=u[h]||[];return m&&c[h]?[...N,...c[h]]:N}}},uf=(l,s)=>{var h;if(l.length===0)return s.classGroupId;const u=l[0],c=s.nextPart.get(u),d=c?uf(l.slice(1),c):void 0;if(d)return d;if(s.validators.length===0)return;const f=l.join(Yu);return(h=s.validators.find(({validator:m})=>m(f)))==null?void 0:h.classGroupId},gd=/^\[(.+)\]$/,Bv=l=>{if(gd.test(l)){const s=gd.exec(l)[1],u=s==null?void 0:s.substring(0,s.indexOf(":"));if(u)return"arbitrary.."+u}},$v=l=>{const{theme:s,prefix:u}=l,c={nextPart:new Map,validators:[]};return Wv(Object.entries(l.classGroups),u).forEach(([f,h])=>{$u(h,c,f,s)}),c},$u=(l,s,u,c)=>{l.forEach(d=>{if(typeof d=="string"){const f=d===""?s:yd(s,d);f.classGroupId=u;return}if(typeof d=="function"){if(Vv(d)){$u(d(c),s,u,c);return}s.validators.push({validator:d,classGroupId:u});return}Object.entries(d).forEach(([f,h])=>{$u(h,yd(s,f),u,c)})})},yd=(l,s)=>{let u=l;return s.split(Yu).forEach(c=>{u.nextPart.has(c)||u.nextPart.set(c,{nextPart:new Map,validators:[]}),u=u.nextPart.get(c)}),u},Vv=l=>l.isThemeGetter,Wv=(l,s)=>s?l.map(([u,c])=>{const d=c.map(f=>typeof f=="string"?s+f:typeof f=="object"?Object.fromEntries(Object.entries(f).map(([h,m])=>[s+h,m])):f);return[u,d]}):l,Hv=l=>{if(l<1)return{get:()=>{},set:()=>{}};let s=0,u=new Map,c=new Map;const d=(f,h)=>{u.set(f,h),s++,s>l&&(s=0,c=u,u=new Map)};return{get(f){let h=u.get(f);if(h!==void 0)return h;if((h=c.get(f))!==void 0)return d(f,h),h},set(f,h){u.has(f)?u.set(f,h):d(f,h)}}},sf="!",Kv=l=>{const{separator:s,experimentalParseClassName:u}=l,c=s.length===1,d=s[0],f=s.length,h=m=>{const N=[];let P=0,R=0,_;for(let T=0;TR?_-R:void 0;return{modifiers:N,hasImportantModifier:z,baseClassName:K,maybePostfixModifierPosition:j}};return u?m=>u({className:m,parseClassName:h}):h},Qv=l=>{if(l.length<=1)return l;const s=[];let u=[];return l.forEach(c=>{c[0]==="["?(s.push(...u.sort(),c),u=[]):u.push(c)}),s.push(...u.sort()),s},Gv=l=>({cache:Hv(l.cacheSize),parseClassName:Kv(l),...Uv(l)}),Yv=/\s+/,Xv=(l,s)=>{const{parseClassName:u,getClassGroupId:c,getConflictingClassGroupIds:d}=s,f=[],h=l.trim().split(Yv);let m="";for(let N=h.length-1;N>=0;N-=1){const P=h[N],{modifiers:R,hasImportantModifier:_,baseClassName:L,maybePostfixModifierPosition:z}=u(P);let K=!!z,j=c(K?L.substring(0,z):L);if(!j){if(!K){m=P+(m.length>0?" "+m:m);continue}if(j=c(L),!j){m=P+(m.length>0?" "+m:m);continue}K=!1}const T=Qv(R).join(":"),W=_?T+sf:T,V=W+j;if(f.includes(V))continue;f.push(V);const te=d(j,K);for(let q=0;q0?" "+m:m)}return m};function Zv(){let l=0,s,u,c="";for(;l{if(typeof l=="string")return l;let s,u="";for(let c=0;c_(R),l());return u=Gv(P),c=u.cache.get,d=u.cache.set,f=m,m(N)}function m(N){const P=c(N);if(P)return P;const R=Xv(N,u);return d(N,R),R}return function(){return f(Zv.apply(null,arguments))}}const ke=l=>{const s=u=>u[l]||[];return s.isThemeGetter=!0,s},cf=/^\[(?:([a-z-]+):)?(.+)\]$/i,Jv=/^\d+\/\d+$/,eg=new Set(["px","full","screen"]),tg=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,ng=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,rg=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,lg=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,og=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,Dt=l=>lr(l)||eg.has(l)||Jv.test(l),rn=l=>ar(l,"length",pg),lr=l=>!!l&&!Number.isNaN(Number(l)),Du=l=>ar(l,"number",lr),Zr=l=>!!l&&Number.isInteger(Number(l)),ig=l=>l.endsWith("%")&&lr(l.slice(0,-1)),ae=l=>cf.test(l),ln=l=>tg.test(l),ug=new Set(["length","size","percentage"]),sg=l=>ar(l,ug,df),ag=l=>ar(l,"position",df),cg=new Set(["image","url"]),dg=l=>ar(l,cg,hg),fg=l=>ar(l,"",mg),qr=()=>!0,ar=(l,s,u)=>{const c=cf.exec(l);return c?c[1]?typeof s=="string"?c[1]===s:s.has(c[1]):u(c[2]):!1},pg=l=>ng.test(l)&&!rg.test(l),df=()=>!1,mg=l=>lg.test(l),hg=l=>og.test(l),vg=()=>{const l=ke("colors"),s=ke("spacing"),u=ke("blur"),c=ke("brightness"),d=ke("borderColor"),f=ke("borderRadius"),h=ke("borderSpacing"),m=ke("borderWidth"),N=ke("contrast"),P=ke("grayscale"),R=ke("hueRotate"),_=ke("invert"),L=ke("gap"),z=ke("gradientColorStops"),K=ke("gradientColorStopPositions"),j=ke("inset"),T=ke("margin"),W=ke("opacity"),V=ke("padding"),te=ke("saturate"),q=ke("scale"),le=ke("sepia"),ne=ke("skew"),ue=ke("space"),ye=ke("translate"),de=()=>["auto","contain","none"],xe=()=>["auto","hidden","clip","visible","scroll"],Ce=()=>["auto",ae,s],ie=()=>[ae,s],Oe=()=>["",Dt,rn],Ne=()=>["auto",lr,ae],ze=()=>["bottom","center","left","left-bottom","left-top","right","right-bottom","right-top","top"],_e=()=>["solid","dashed","dotted","double","none"],he=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],F=()=>["start","end","center","between","around","evenly","stretch"],Z=()=>["","0",ae],U=()=>["auto","avoid","all","avoid-page","page","left","right","column"],S=()=>[lr,ae];return{cacheSize:500,separator:":",theme:{colors:[qr],spacing:[Dt,rn],blur:["none","",ln,ae],brightness:S(),borderColor:[l],borderRadius:["none","","full",ln,ae],borderSpacing:ie(),borderWidth:Oe(),contrast:S(),grayscale:Z(),hueRotate:S(),invert:Z(),gap:ie(),gradientColorStops:[l],gradientColorStopPositions:[ig,rn],inset:Ce(),margin:Ce(),opacity:S(),padding:ie(),saturate:S(),scale:S(),sepia:Z(),skew:S(),space:ie(),translate:ie()},classGroups:{aspect:[{aspect:["auto","square","video",ae]}],container:["container"],columns:[{columns:[ln]}],"break-after":[{"break-after":U()}],"break-before":[{"break-before":U()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:[...ze(),ae]}],overflow:[{overflow:xe()}],"overflow-x":[{"overflow-x":xe()}],"overflow-y":[{"overflow-y":xe()}],overscroll:[{overscroll:de()}],"overscroll-x":[{"overscroll-x":de()}],"overscroll-y":[{"overscroll-y":de()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:[j]}],"inset-x":[{"inset-x":[j]}],"inset-y":[{"inset-y":[j]}],start:[{start:[j]}],end:[{end:[j]}],top:[{top:[j]}],right:[{right:[j]}],bottom:[{bottom:[j]}],left:[{left:[j]}],visibility:["visible","invisible","collapse"],z:[{z:["auto",Zr,ae]}],basis:[{basis:Ce()}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["wrap","wrap-reverse","nowrap"]}],flex:[{flex:["1","auto","initial","none",ae]}],grow:[{grow:Z()}],shrink:[{shrink:Z()}],order:[{order:["first","last","none",Zr,ae]}],"grid-cols":[{"grid-cols":[qr]}],"col-start-end":[{col:["auto",{span:["full",Zr,ae]},ae]}],"col-start":[{"col-start":Ne()}],"col-end":[{"col-end":Ne()}],"grid-rows":[{"grid-rows":[qr]}],"row-start-end":[{row:["auto",{span:[Zr,ae]},ae]}],"row-start":[{"row-start":Ne()}],"row-end":[{"row-end":Ne()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":["auto","min","max","fr",ae]}],"auto-rows":[{"auto-rows":["auto","min","max","fr",ae]}],gap:[{gap:[L]}],"gap-x":[{"gap-x":[L]}],"gap-y":[{"gap-y":[L]}],"justify-content":[{justify:["normal",...F()]}],"justify-items":[{"justify-items":["start","end","center","stretch"]}],"justify-self":[{"justify-self":["auto","start","end","center","stretch"]}],"align-content":[{content:["normal",...F(),"baseline"]}],"align-items":[{items:["start","end","center","baseline","stretch"]}],"align-self":[{self:["auto","start","end","center","stretch","baseline"]}],"place-content":[{"place-content":[...F(),"baseline"]}],"place-items":[{"place-items":["start","end","center","baseline","stretch"]}],"place-self":[{"place-self":["auto","start","end","center","stretch"]}],p:[{p:[V]}],px:[{px:[V]}],py:[{py:[V]}],ps:[{ps:[V]}],pe:[{pe:[V]}],pt:[{pt:[V]}],pr:[{pr:[V]}],pb:[{pb:[V]}],pl:[{pl:[V]}],m:[{m:[T]}],mx:[{mx:[T]}],my:[{my:[T]}],ms:[{ms:[T]}],me:[{me:[T]}],mt:[{mt:[T]}],mr:[{mr:[T]}],mb:[{mb:[T]}],ml:[{ml:[T]}],"space-x":[{"space-x":[ue]}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":[ue]}],"space-y-reverse":["space-y-reverse"],w:[{w:["auto","min","max","fit","svw","lvw","dvw",ae,s]}],"min-w":[{"min-w":[ae,s,"min","max","fit"]}],"max-w":[{"max-w":[ae,s,"none","full","min","max","fit","prose",{screen:[ln]},ln]}],h:[{h:[ae,s,"auto","min","max","fit","svh","lvh","dvh"]}],"min-h":[{"min-h":[ae,s,"min","max","fit","svh","lvh","dvh"]}],"max-h":[{"max-h":[ae,s,"min","max","fit","svh","lvh","dvh"]}],size:[{size:[ae,s,"auto","min","max","fit"]}],"font-size":[{text:["base",ln,rn]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:["thin","extralight","light","normal","medium","semibold","bold","extrabold","black",Du]}],"font-family":[{font:[qr]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:["tighter","tight","normal","wide","wider","widest",ae]}],"line-clamp":[{"line-clamp":["none",lr,Du]}],leading:[{leading:["none","tight","snug","normal","relaxed","loose",Dt,ae]}],"list-image":[{"list-image":["none",ae]}],"list-style-type":[{list:["none","disc","decimal",ae]}],"list-style-position":[{list:["inside","outside"]}],"placeholder-color":[{placeholder:[l]}],"placeholder-opacity":[{"placeholder-opacity":[W]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"text-color":[{text:[l]}],"text-opacity":[{"text-opacity":[W]}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[..._e(),"wavy"]}],"text-decoration-thickness":[{decoration:["auto","from-font",Dt,rn]}],"underline-offset":[{"underline-offset":["auto",Dt,ae]}],"text-decoration-color":[{decoration:[l]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:ie()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",ae]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",ae]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-opacity":[{"bg-opacity":[W]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:[...ze(),ag]}],"bg-repeat":[{bg:["no-repeat",{repeat:["","x","y","round","space"]}]}],"bg-size":[{bg:["auto","cover","contain",sg]}],"bg-image":[{bg:["none",{"gradient-to":["t","tr","r","br","b","bl","l","tl"]},dg]}],"bg-color":[{bg:[l]}],"gradient-from-pos":[{from:[K]}],"gradient-via-pos":[{via:[K]}],"gradient-to-pos":[{to:[K]}],"gradient-from":[{from:[z]}],"gradient-via":[{via:[z]}],"gradient-to":[{to:[z]}],rounded:[{rounded:[f]}],"rounded-s":[{"rounded-s":[f]}],"rounded-e":[{"rounded-e":[f]}],"rounded-t":[{"rounded-t":[f]}],"rounded-r":[{"rounded-r":[f]}],"rounded-b":[{"rounded-b":[f]}],"rounded-l":[{"rounded-l":[f]}],"rounded-ss":[{"rounded-ss":[f]}],"rounded-se":[{"rounded-se":[f]}],"rounded-ee":[{"rounded-ee":[f]}],"rounded-es":[{"rounded-es":[f]}],"rounded-tl":[{"rounded-tl":[f]}],"rounded-tr":[{"rounded-tr":[f]}],"rounded-br":[{"rounded-br":[f]}],"rounded-bl":[{"rounded-bl":[f]}],"border-w":[{border:[m]}],"border-w-x":[{"border-x":[m]}],"border-w-y":[{"border-y":[m]}],"border-w-s":[{"border-s":[m]}],"border-w-e":[{"border-e":[m]}],"border-w-t":[{"border-t":[m]}],"border-w-r":[{"border-r":[m]}],"border-w-b":[{"border-b":[m]}],"border-w-l":[{"border-l":[m]}],"border-opacity":[{"border-opacity":[W]}],"border-style":[{border:[..._e(),"hidden"]}],"divide-x":[{"divide-x":[m]}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":[m]}],"divide-y-reverse":["divide-y-reverse"],"divide-opacity":[{"divide-opacity":[W]}],"divide-style":[{divide:_e()}],"border-color":[{border:[d]}],"border-color-x":[{"border-x":[d]}],"border-color-y":[{"border-y":[d]}],"border-color-s":[{"border-s":[d]}],"border-color-e":[{"border-e":[d]}],"border-color-t":[{"border-t":[d]}],"border-color-r":[{"border-r":[d]}],"border-color-b":[{"border-b":[d]}],"border-color-l":[{"border-l":[d]}],"divide-color":[{divide:[d]}],"outline-style":[{outline:["",..._e()]}],"outline-offset":[{"outline-offset":[Dt,ae]}],"outline-w":[{outline:[Dt,rn]}],"outline-color":[{outline:[l]}],"ring-w":[{ring:Oe()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:[l]}],"ring-opacity":[{"ring-opacity":[W]}],"ring-offset-w":[{"ring-offset":[Dt,rn]}],"ring-offset-color":[{"ring-offset":[l]}],shadow:[{shadow:["","inner","none",ln,fg]}],"shadow-color":[{shadow:[qr]}],opacity:[{opacity:[W]}],"mix-blend":[{"mix-blend":[...he(),"plus-lighter","plus-darker"]}],"bg-blend":[{"bg-blend":he()}],filter:[{filter:["","none"]}],blur:[{blur:[u]}],brightness:[{brightness:[c]}],contrast:[{contrast:[N]}],"drop-shadow":[{"drop-shadow":["","none",ln,ae]}],grayscale:[{grayscale:[P]}],"hue-rotate":[{"hue-rotate":[R]}],invert:[{invert:[_]}],saturate:[{saturate:[te]}],sepia:[{sepia:[le]}],"backdrop-filter":[{"backdrop-filter":["","none"]}],"backdrop-blur":[{"backdrop-blur":[u]}],"backdrop-brightness":[{"backdrop-brightness":[c]}],"backdrop-contrast":[{"backdrop-contrast":[N]}],"backdrop-grayscale":[{"backdrop-grayscale":[P]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[R]}],"backdrop-invert":[{"backdrop-invert":[_]}],"backdrop-opacity":[{"backdrop-opacity":[W]}],"backdrop-saturate":[{"backdrop-saturate":[te]}],"backdrop-sepia":[{"backdrop-sepia":[le]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":[h]}],"border-spacing-x":[{"border-spacing-x":[h]}],"border-spacing-y":[{"border-spacing-y":[h]}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["none","all","","colors","opacity","shadow","transform",ae]}],duration:[{duration:S()}],ease:[{ease:["linear","in","out","in-out",ae]}],delay:[{delay:S()}],animate:[{animate:["none","spin","ping","pulse","bounce",ae]}],transform:[{transform:["","gpu","none"]}],scale:[{scale:[q]}],"scale-x":[{"scale-x":[q]}],"scale-y":[{"scale-y":[q]}],rotate:[{rotate:[Zr,ae]}],"translate-x":[{"translate-x":[ye]}],"translate-y":[{"translate-y":[ye]}],"skew-x":[{"skew-x":[ne]}],"skew-y":[{"skew-y":[ne]}],"transform-origin":[{origin:["center","top","top-right","right","bottom-right","bottom","bottom-left","left","top-left",ae]}],accent:[{accent:["auto",l]}],appearance:[{appearance:["none","auto"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",ae]}],"caret-color":[{caret:[l]}],"pointer-events":[{"pointer-events":["none","auto"]}],resize:[{resize:["none","y","x",""]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":ie()}],"scroll-mx":[{"scroll-mx":ie()}],"scroll-my":[{"scroll-my":ie()}],"scroll-ms":[{"scroll-ms":ie()}],"scroll-me":[{"scroll-me":ie()}],"scroll-mt":[{"scroll-mt":ie()}],"scroll-mr":[{"scroll-mr":ie()}],"scroll-mb":[{"scroll-mb":ie()}],"scroll-ml":[{"scroll-ml":ie()}],"scroll-p":[{"scroll-p":ie()}],"scroll-px":[{"scroll-px":ie()}],"scroll-py":[{"scroll-py":ie()}],"scroll-ps":[{"scroll-ps":ie()}],"scroll-pe":[{"scroll-pe":ie()}],"scroll-pt":[{"scroll-pt":ie()}],"scroll-pr":[{"scroll-pr":ie()}],"scroll-pb":[{"scroll-pb":ie()}],"scroll-pl":[{"scroll-pl":ie()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",ae]}],fill:[{fill:[l,"none"]}],"stroke-w":[{stroke:[Dt,rn,Du]}],stroke:[{stroke:[l,"none"]}],sr:["sr-only","not-sr-only"],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-s","border-color-e","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]}}},gg=qv(vg);function ur(...l){return gg(Fv(l))}function yg(l){if(!l)return"—";const s=l/1024**3;return s>=1?`${s.toFixed(1)} GB`:`${(l/1024**2).toFixed(0)} MB`}function xg(l){return l?`${Math.round(l/1024)}k`:"—"}function wg({fit:l}){const s={perfect:"bg-emerald-500/15 text-emerald-500",marginal:"bg-amber-500/15 text-amber-500",too_tight:"bg-red-500/15 text-red-500"}[l.level];return y.jsxs("span",{className:ur("rounded px-1.5 py-0.5 text-[11px] font-medium",s),children:[l.text," · ~",l.req_gb," GB"]})}function Sg(){const[l,s]=v.useState([]),[u,c]=v.useState(""),[d,f]=v.useState(!0);return v.useEffect(()=>{sr("/api/models").then(h=>s(h.models)).catch(h=>c(String(h))).finally(()=>f(!1))},[]),d?y.jsx("div",{className:"text-sm text-muted-foreground",children:"Lade…"}):u?y.jsxs("div",{className:"rounded-md border border-border bg-card p-3 text-sm text-muted-foreground",children:["Engine nicht erreichbar oder keine Config gefunden (",u,")."]}):y.jsx("div",{className:"overflow-hidden rounded-xl border border-border bg-card",children:y.jsxs("table",{className:"w-full text-sm",children:[y.jsx("thead",{children:y.jsxs("tr",{className:"border-b border-border text-left text-xs text-muted-foreground",children:[y.jsx("th",{className:"px-4 py-2 font-medium",children:"Modell"}),y.jsx("th",{className:"px-4 py-2 font-medium",children:"Rolle"}),y.jsx("th",{className:"px-4 py-2 font-medium",children:"Fähigkeiten"}),y.jsx("th",{className:"px-4 py-2 font-medium",children:"Kontext"}),y.jsx("th",{className:"px-4 py-2 font-medium",children:"Größe"})]})}),y.jsxs("tbody",{children:[l.length===0&&y.jsx("tr",{children:y.jsx("td",{colSpan:5,className:"px-4 py-8 text-center text-muted-foreground",children:"Keine Modelle konfiguriert."})}),l.map(h=>y.jsxs("tr",{className:"border-b border-border/50 last:border-0",children:[y.jsx("td",{className:"px-4 py-2.5 font-medium",children:h.name}),y.jsx("td",{className:"px-4 py-2.5",children:h.role?y.jsx("span",{className:"rounded-md bg-primary/15 px-2 py-0.5 text-xs text-primary",children:h.role}):y.jsx("span",{className:"text-muted-foreground",children:"—"})}),y.jsx("td",{className:"px-4 py-2.5",children:y.jsx(lf,{caps:h.capabilities})}),y.jsx("td",{className:"px-4 py-2.5 text-muted-foreground",children:xg(h.ctx)}),y.jsx("td",{className:"px-4 py-2.5 text-muted-foreground",children:yg(h.size_bytes)})]},h.name))]})]})})}function kg(){const[l,s]=v.useState(null),[u,c]=v.useState(""),[d,f]=v.useState(!0);return v.useEffect(()=>{sr("/api/discover").then(s).catch(h=>c(String(h))).finally(()=>f(!1))},[]),d?y.jsx("div",{className:"text-sm text-muted-foreground",children:"Suche aktuelle Modelle…"}):u||!l?y.jsxs("div",{className:"rounded-md border border-border bg-card p-3 text-sm text-muted-foreground",children:["Modell-Quellen gerade nicht erreichbar (",u,")."]}):y.jsxs("div",{className:"space-y-6",children:[y.jsxs("div",{className:"text-xs text-muted-foreground",children:["Live von HuggingFace · Hardware-Fit für ~",l.sys_ram_gb," GB · ⭐ = beste Wahl je Kategorie"]}),l.categories.map(h=>y.jsxs("div",{className:"space-y-2",children:[y.jsx("h3",{className:"text-sm font-semibold",children:h.title}),y.jsx("div",{className:"grid gap-2 sm:grid-cols-2",children:h.models.map(m=>y.jsxs("div",{className:"rounded-lg border border-border bg-card p-3",children:[y.jsxs("div",{className:"flex items-center gap-2",children:[h.recommended===m.repo&&y.jsx("span",{title:"beste Wahl",children:"⭐"}),y.jsx("span",{className:"truncate text-sm font-medium",children:m.name})]}),y.jsx("div",{className:"mt-1 text-xs text-muted-foreground",children:m.author}),y.jsxs("div",{className:"mt-2 flex flex-wrap items-center gap-1",children:[y.jsx(lf,{caps:m.caps}),y.jsx(wg,{fit:m.fit})]})]},m.repo))})]},h.role))]})}function Eg(){const[l,s]=v.useState("installed");return y.jsxs("div",{className:"space-y-4",children:[y.jsxs("div",{children:[y.jsx("h1",{className:"text-xl font-semibold",children:"Modelle & Routing"}),y.jsx("p",{className:"text-sm text-muted-foreground",children:"Installierte Modelle (mit Fähigkeiten) und aktuell beste Modelle für deine Hardware."})]}),y.jsx("div",{className:"inline-flex rounded-lg border border-border bg-card p-0.5 text-sm",children:["installed","discover"].map(u=>y.jsx("button",{onClick:()=>s(u),className:ur("rounded-md px-3 py-1.5 transition-colors",l===u?"bg-primary/15 text-primary":"text-muted-foreground hover:text-foreground"),children:u==="installed"?"Installiert":"Modelle finden"},u))}),l==="installed"?y.jsx(Sg,{}):y.jsx(kg,{})]})}function Cg(){const[l,s]=v.useState(null),[u,c]=v.useState("");return v.useEffect(()=>{sr("/api/routing").then(s).catch(d=>c(String(d)))},[]),y.jsxs("div",{className:"space-y-4",children:[y.jsxs("div",{children:[y.jsx("h1",{className:"text-xl font-semibold",children:"Routing"}),y.jsxs("p",{className:"text-sm text-muted-foreground",children:["Der LiteLLM-Gateway bündelt alle Modelle zu einem Endpunkt. ",y.jsx("code",{children:"auto"})," = schnell im Alltag, eskaliert bei Bedarf auf ",y.jsx("code",{children:"heavy"}),". Gilt für Hermes ",y.jsx("em",{children:"und"})," Vibe Coding."]})]}),u&&y.jsxs("div",{className:"rounded-md border border-border bg-card p-3 text-sm text-muted-foreground",children:["Gateway-Config nicht lesbar (",u,")."]}),l&&y.jsxs(y.Fragment,{children:[y.jsxs("div",{className:"flex items-center gap-2 text-sm",children:[y.jsx("span",{className:ur("h-2 w-2 rounded-full",l.gateway_reachable?"bg-emerald-500":"bg-amber-500")}),"Gateway ",l.gateway_reachable?"online":"offline (Config wird trotzdem angezeigt)"]}),y.jsx("div",{className:"overflow-hidden rounded-xl border border-border bg-card",children:y.jsxs("table",{className:"w-full text-sm",children:[y.jsx("thead",{children:y.jsxs("tr",{className:"border-b border-border text-left text-xs text-muted-foreground",children:[y.jsx("th",{className:"px-4 py-2 font-medium",children:"Gateway-Modell"}),y.jsx("th",{className:"px-4 py-2 font-medium",children:"→ Backend (llama-swap)"})]})}),y.jsx("tbody",{children:l.routes.map(d=>y.jsxs("tr",{className:"border-b border-border/50 last:border-0",children:[y.jsx("td",{className:"px-4 py-2.5 font-medium",children:d.name}),y.jsx("td",{className:"px-4 py-2.5 font-mono text-xs text-muted-foreground",children:d.target})]},d.name))})]})}),l.fallbacks.length>0&&y.jsxs("div",{className:"rounded-xl border border-border bg-card p-4 text-sm",children:[y.jsx("div",{className:"mb-2 font-medium",children:"Eskalation (Fallbacks)"}),y.jsx("ul",{className:"space-y-1 text-muted-foreground",children:l.fallbacks.map((d,f)=>{const[h,m]=Object.entries(d)[0];return y.jsxs("li",{children:[y.jsx("code",{children:h})," → ",y.jsx("code",{children:m.join(", ")})]},f)})})]})]})]})}function er(l){return(l/1024**3).toFixed(1)}function So({label:l,percent:s,detail:u}){return y.jsxs("div",{className:"rounded-lg border border-border bg-card p-4",children:[y.jsxs("div",{className:"flex items-baseline justify-between",children:[y.jsx("span",{className:"text-sm font-medium",children:l}),y.jsxs("span",{className:"text-sm text-muted-foreground",children:[Math.round(s),"%"]})]}),y.jsx("div",{className:"mt-2 h-2 overflow-hidden rounded-full bg-muted",children:y.jsx("div",{className:"h-full rounded-full bg-primary",style:{width:`${Math.min(s,100)}%`}})}),u&&y.jsx("div",{className:"mt-1 text-xs text-muted-foreground",children:u})]})}function Ng(){const[l,s]=v.useState(null),[u,c]=v.useState("");return v.useEffect(()=>{const d=()=>sr("/api/system/status").then(s).catch(h=>c(String(h)));d();const f=setInterval(d,3e3);return()=>clearInterval(f)},[]),y.jsxs("div",{className:"space-y-4",children:[y.jsxs("div",{children:[y.jsx("h1",{className:"text-xl font-semibold",children:"System"}),y.jsx("p",{className:"text-sm text-muted-foreground",children:"Live-Auslastung der Box, Dienste & Updates."})]}),u&&y.jsxs("div",{className:"rounded-md border border-border bg-card p-3 text-sm text-muted-foreground",children:["System-Status nicht lesbar (",u,")."]}),l&&y.jsxs("div",{className:"grid gap-3 sm:grid-cols-2",children:[y.jsx(So,{label:"CPU",percent:l.cpu.percent,detail:l.cpu.cores?`${l.cpu.cores} Kerne`:void 0}),y.jsx(So,{label:"RAM",percent:l.ram.percent,detail:`${er(l.ram.used)} / ${er(l.ram.total)} GB`}),l.gpu&&l.gpu.busy_percent!=null&&y.jsx(So,{label:"GPU",percent:l.gpu.busy_percent,detail:l.gpu.vram_used!=null&&l.gpu.vram_total!=null?`${er(l.gpu.vram_used)} / ${er(l.gpu.vram_total)} GB VRAM`:void 0}),l.disk&&y.jsx(So,{label:"Disk (Modelle)",percent:l.disk.percent,detail:`${er(l.disk.used)} / ${er(l.disk.total)} GB`})]}),(l==null?void 0:l.temp)&&(l.temp.cpu||l.temp.gpu)&&y.jsxs("div",{className:"flex gap-3 text-sm text-muted-foreground",children:[l.temp.cpu!=null&&y.jsxs("span",{children:["CPU ",l.temp.cpu," °C"]}),l.temp.gpu!=null&&y.jsxs("span",{children:["GPU ",l.temp.gpu," °C"]})]})]})}function _g(){const[l,s]=v.useState(localStorage.getItem("mc_host")||"192.168.178.151"),[u,c]=v.useState(null),[d,f]=v.useState("cline"),[h,m]=v.useState(!1),[N,P]=v.useState("");v.useEffect(()=>{sr(`/api/connect?host=${encodeURIComponent(l)}`).then(c).catch(z=>P(String(z)))},[l]);function R(z){s(z),z&&localStorage.setItem("mc_host",z)}const _=u==null?void 0:u.tools[d];async function L(){_&&(await navigator.clipboard.writeText(_.snippet),m(!0),setTimeout(()=>m(!1),1500))}return y.jsxs("div",{className:"space-y-4",children:[y.jsxs("div",{children:[y.jsx("h1",{className:"text-xl font-semibold",children:"Verbinden"}),y.jsxs("p",{className:"text-sm text-muted-foreground",children:["Fertige Snippets für deine Tools auf dem lokalen PC — alle zeigen auf den Gateway der Box (",y.jsx("code",{children:"model: auto"}),") + das geteilte Gedächtnis."]})]}),y.jsxs("div",{className:"flex items-center gap-2 text-sm",children:[y.jsx("label",{className:"text-muted-foreground",children:"Box-LAN-IP:"}),y.jsx("input",{value:l,onChange:z=>R(z.target.value),className:"rounded-md border border-border bg-card px-2 py-1 font-mono text-xs outline-none focus:ring-2 focus:ring-ring"}),u&&y.jsxs("span",{className:"text-xs text-muted-foreground",children:["→ ",u.gateway_url]})]}),N&&y.jsxs("div",{className:"rounded-md border border-border bg-card p-3 text-sm text-muted-foreground",children:["Snippets nicht ladbar (",N,")."]}),u&&y.jsxs(y.Fragment,{children:[y.jsx("div",{className:"flex flex-wrap gap-1",children:Object.entries(u.tools).map(([z,K])=>y.jsx("button",{onClick:()=>f(z),className:ur("rounded-md px-3 py-1.5 text-sm transition-colors",d===z?"bg-primary/15 text-primary":"text-muted-foreground hover:text-foreground"),children:K.label},z))}),_&&y.jsxs("div",{className:"space-y-2",children:[y.jsxs("div",{className:"flex items-center justify-between",children:[y.jsx("span",{className:"text-xs text-muted-foreground",children:_.note}),y.jsxs("button",{onClick:L,className:"flex items-center gap-1.5 rounded-md border border-border px-2 py-1 text-xs hover:bg-accent",children:[h?y.jsx(Cm,{className:"h-3.5 w-3.5 text-emerald-500"}):y.jsx(Pm,{className:"h-3.5 w-3.5"}),h?"Kopiert":"Kopieren"]})]}),y.jsx("pre",{className:"overflow-x-auto rounded-xl border border-border bg-card p-4 text-xs leading-relaxed",children:y.jsx("code",{children:_.snippet})})]})]})]})}function Pg({title:l,hint:s}){return y.jsxs("div",{className:"space-y-4",children:[y.jsxs("div",{children:[y.jsx("h1",{className:"text-xl font-semibold",children:l}),y.jsx("p",{className:"text-sm text-muted-foreground",children:s})]}),y.jsxs("div",{className:"flex flex-col items-center justify-center gap-3 rounded-xl border border-dashed border-border bg-card/50 py-20 text-center",children:[y.jsx(_m,{className:"h-8 w-8 text-muted-foreground"}),y.jsx("div",{className:"text-sm text-muted-foreground",children:"Kommt in einer späteren Phase."})]})]})}function Rg(){const[l,s]=v.useState("models"),[u,c]=v.useState(null);v.useEffect(()=>{const f=()=>sr("/api/health").then(c).catch(()=>c(null));f();const h=setInterval(f,1e4);return()=>clearInterval(h)},[]);const d=bu.find(f=>f.id===l);return y.jsxs("div",{className:"flex h-full",children:[y.jsx(Av,{onNavigate:s}),y.jsxs("aside",{className:"flex w-60 shrink-0 flex-col border-r border-border bg-card/40",children:[y.jsxs("div",{className:"flex items-center gap-2 px-5 py-4",children:[y.jsx("div",{className:"h-7 w-7 rounded-lg bg-primary"}),y.jsxs("div",{className:"leading-tight",children:[y.jsx("div",{className:"text-sm font-semibold",children:"Mission Control"}),y.jsx("div",{className:"text-xs text-muted-foreground",children:"2.0"})]})]}),y.jsx("nav",{className:"flex-1 space-y-1 px-3 py-2",children:bu.map(f=>y.jsxs("button",{onClick:()=>s(f.id),className:ur("flex w-full items-center gap-3 rounded-md px-3 py-2 text-sm transition-colors",l===f.id?"bg-primary/15 text-primary":"text-muted-foreground hover:bg-accent hover:text-accent-foreground"),children:[y.jsx(f.icon,{className:"h-4 w-4"}),f.label]},f.id))}),y.jsx("div",{className:"px-4 py-3 text-xs text-muted-foreground",children:u?y.jsxs("span",{className:"flex items-center gap-2",children:[y.jsx("span",{className:ur("h-2 w-2 rounded-full",u.engine_reachable?"bg-emerald-500":"bg-amber-500")}),"Engine ",u.engine_reachable?"online":"offline"," · v",u.version]}):y.jsxs("span",{className:"flex items-center gap-2",children:[y.jsx("span",{className:"h-2 w-2 rounded-full bg-red-500"})," Backend offline"]})})]}),y.jsxs("div",{className:"flex min-w-0 flex-1 flex-col",children:[y.jsxs("header",{className:"flex h-14 shrink-0 items-center justify-between border-b border-border px-6",children:[y.jsx("div",{className:"text-sm text-muted-foreground",children:d.hint}),y.jsxs("button",{onClick:()=>{const f=new KeyboardEvent("keydown",{key:"k",metaKey:!0});document.dispatchEvent(f)},className:"flex items-center gap-2 rounded-md border border-border px-2.5 py-1.5 text-xs text-muted-foreground hover:bg-accent",children:[y.jsx(Nm,{className:"h-3.5 w-3.5"}),y.jsx("span",{children:"Springen"}),y.jsx("kbd",{className:"rounded bg-muted px-1.5 py-0.5 font-mono text-[10px]",children:"⌘K"})]})]}),y.jsxs("main",{className:"flex-1 overflow-y-auto p-6",children:[l==="models"&&y.jsx(Eg,{}),l==="routing"&&y.jsx(Cg,{}),l==="system"&&y.jsx(Ng,{}),l==="connect"&&y.jsx(_g,{}),!["models","routing","system","connect"].includes(l)&&y.jsx(Pg,{title:d.label,hint:d.hint})]})]})]})}gm.createRoot(document.getElementById("root")).render(y.jsx(wd.StrictMode,{children:y.jsx(Rg,{})})); diff --git a/frontend/dist/assets/index-DSNYfW6y.css b/frontend/dist/assets/index-DSNYfW6y.css deleted file mode 100644 index f07e620..0000000 --- a/frontend/dist/assets/index-DSNYfW6y.css +++ /dev/null @@ -1 +0,0 @@ -/*! tailwindcss v4.3.1 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-pan-x:initial;--tw-pan-y:initial;--tw-pinch-zoom:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-x-reverse:0;--tw-border-style:solid;--tw-divide-y-reverse:0;--tw-leading:initial;--tw-font-weight:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-500:oklch(63.7% .237 25.331);--color-amber-500:oklch(76.9% .188 70.08);--color-emerald-500:oklch(69.6% .17 162.48);--color-black:#000;--spacing:.25rem;--container-lg:32rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--font-weight-medium:500;--font-weight-semibold:600;--leading-tight:1.25;--leading-relaxed:1.625;--radius-xl:.75rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.not-sr-only{clip-path:none;white-space:normal;width:auto;height:auto;margin:0;padding:0;position:static;overflow:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.isolate{isolation:isolate}.isolation-auto{isolation:auto}.z-50{z-index:50}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.mt-1{margin-top:var(--spacing)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.ml-auto{margin-left:auto}.block{display:block}.contents{display:contents}.flex{display:flex}.flow-root{display:flow-root}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.inline-grid{display:inline-grid}.inline-table{display:inline-table}.list-item{display:list-item}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-column{display:table-column}.table-column-group{display:table-column-group}.table-footer-group{display:table-footer-group}.table-header-group{display:table-header-group}.table-row{display:table-row}.table-row-group{display:table-row-group}.h-2{height:calc(var(--spacing) * 2)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-14{height:calc(var(--spacing) * 14)}.h-full{height:100%}.max-h-80{max-height:calc(var(--spacing) * 80)}.w-2{width:calc(var(--spacing) * 2)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-60{width:calc(var(--spacing) * 60)}.w-full{width:100%}.max-w-lg{max-width:var(--container-lg)}.min-w-0{min-width:0}.flex-1{flex:1}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.border-collapse{border-collapse:collapse}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.cursor-pointer{cursor:pointer}.touch-pinch-zoom{--tw-pinch-zoom:pinch-zoom;touch-action:var(--tw-pan-x,) var(--tw-pan-y,) var(--tw-pinch-zoom,)}.resize{resize:both}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(var(--spacing) * var(--tw-space-y-reverse));margin-block-end:calc(var(--spacing) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-reverse>:not(:last-child)){--tw-space-y-reverse:1}:where(.space-x-reverse>:not(:last-child)){--tw-space-x-reverse:1}:where(.divide-x>:not(:last-child)){--tw-divide-x-reverse:0;border-inline-style:var(--tw-border-style);border-inline-start-width:calc(1px * var(--tw-divide-x-reverse));border-inline-end-width:calc(1px * calc(1 - var(--tw-divide-x-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-y-reverse>:not(:last-child)){--tw-divide-y-reverse:1}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-s{border-start-start-radius:.25rem;border-end-start-radius:.25rem}.rounded-ss{border-start-start-radius:.25rem}.rounded-e{border-start-end-radius:.25rem;border-end-end-radius:.25rem}.rounded-se{border-start-end-radius:.25rem}.rounded-ee{border-end-end-radius:.25rem}.rounded-es{border-end-start-radius:.25rem}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.rounded-l{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-tl{border-top-left-radius:.25rem}.rounded-r{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.rounded-tr{border-top-right-radius:.25rem}.rounded-b{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-br{border-bottom-right-radius:.25rem}.rounded-bl{border-bottom-left-radius:.25rem}.border{border-style:var(--tw-border-style);border-width:1px}.border-x{border-inline-style:var(--tw-border-style);border-inline-width:1px}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-s{border-inline-start-style:var(--tw-border-style);border-inline-start-width:1px}.border-e{border-inline-end-style:var(--tw-border-style);border-inline-end-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-border,.border-border\/50{border-color:hsl(var(--border))}@supports (color:color-mix(in lab,red,red)){.border-border\/50{border-color:color-mix(in oklab,hsl(var(--border)) 50%,transparent)}}.bg-amber-500{background-color:var(--color-amber-500)}.bg-amber-500\/15{background-color:#f99c0026}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/15{background-color:color-mix(in oklab,var(--color-amber-500) 15%,transparent)}}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black) 50%,transparent)}}.bg-card,.bg-card\/40{background-color:hsl(var(--card))}@supports (color:color-mix(in lab,red,red)){.bg-card\/40{background-color:color-mix(in oklab,hsl(var(--card)) 40%,transparent)}}.bg-card\/50{background-color:hsl(var(--card))}@supports (color:color-mix(in lab,red,red)){.bg-card\/50{background-color:color-mix(in oklab,hsl(var(--card)) 50%,transparent)}}.bg-emerald-500{background-color:var(--color-emerald-500)}.bg-emerald-500\/15{background-color:#00bb7f26}@supports (color:color-mix(in lab,red,red)){.bg-emerald-500\/15{background-color:color-mix(in oklab,var(--color-emerald-500) 15%,transparent)}}.bg-muted{background-color:hsl(var(--muted))}.bg-popover{background-color:hsl(var(--popover))}.bg-primary,.bg-primary\/15{background-color:hsl(var(--primary))}@supports (color:color-mix(in lab,red,red)){.bg-primary\/15{background-color:color-mix(in oklab,hsl(var(--primary)) 15%,transparent)}}.bg-red-500{background-color:var(--color-red-500)}.bg-red-500\/15{background-color:#fb2c3626}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/15{background-color:color-mix(in oklab,var(--color-red-500) 15%,transparent)}}.bg-transparent{background-color:#0000}.bg-repeat{background-repeat:repeat}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.px-1{padding-inline:var(--spacing)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-20{padding-block:calc(var(--spacing) * 20)}.pt-\[12vh\]{padding-top:12vh}.text-center{text-align:center}.text-left{text-align:left}.font-mono{font-family:var(--font-mono)}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.text-wrap{text-wrap:wrap}.text-clip{text-overflow:clip}.text-ellipsis{text-overflow:ellipsis}.text-amber-500{color:var(--color-amber-500)}.text-emerald-500{color:var(--color-emerald-500)}.text-foreground{color:hsl(var(--foreground))}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-popover-foreground{color:hsl(var(--popover-foreground))}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-red-500{color:var(--color-red-500)}.capitalize{text-transform:capitalize}.lowercase{text-transform:lowercase}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.italic{font-style:italic}.not-italic{font-style:normal}.diagonal-fractions{--tw-numeric-fraction:diagonal-fractions;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.lining-nums{--tw-numeric-figure:lining-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.oldstyle-nums{--tw-numeric-figure:oldstyle-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.ordinal{--tw-ordinal:ordinal;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.proportional-nums{--tw-numeric-spacing:proportional-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.slashed-zero{--tw-slashed-zero:slashed-zero;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.stacked-fractions{--tw-numeric-fraction:stacked-fractions;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.normal-nums{font-variant-numeric:normal}.line-through{text-decoration-line:line-through}.no-underline{text-decoration-line:none}.overline{text-decoration-line:overline}.underline{text-decoration-line:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.subpixel-antialiased{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.drop-shadow{--tw-drop-shadow-size:drop-shadow(0 1px 2px var(--tw-drop-shadow-color,#0000001a)) drop-shadow(0 1px 1px var(--tw-drop-shadow-color,#0000000f));--tw-drop-shadow:drop-shadow(0 1px 2px #0000001a) drop-shadow(0 1px 1px #0000000f);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.grayscale{--tw-grayscale:grayscale(100%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.invert{--tw-invert:invert(100%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.sepia{--tw-sepia:sepia(100%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-grayscale{--tw-backdrop-grayscale:grayscale(100%);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-invert{--tw-backdrop-invert:invert(100%);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-sepia{--tw-backdrop-sepia:sepia(100%);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition\!{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events!important;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))!important;transition-duration:var(--tw-duration,var(--default-transition-duration))!important}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.outline-none{--tw-outline-style:none;outline-style:none}:where(.divide-x-reverse>:not(:last-child)){--tw-divide-x-reverse:1}.ring-inset{--tw-ring-inset:inset}.placeholder\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.last\:border-0:last-child{border-style:var(--tw-border-style);border-width:0}@media(hover:hover){.hover\:bg-accent:hover{background-color:hsl(var(--accent))}.hover\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))}.hover\:text-foreground:hover{color:hsl(var(--foreground))}.hover\:opacity-90:hover{opacity:.9}}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-ring:focus{--tw-ring-color:hsl(var(--ring))}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color:hsl(var(--ring))}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.disabled\:opacity-50:disabled{opacity:.5}.aria-selected\:bg-accent[aria-selected=true]{background-color:hsl(var(--accent))}.aria-selected\:text-accent-foreground[aria-selected=true]{color:hsl(var(--accent-foreground))}@media(min-width:40rem){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}}:root{--background:0 0% 100%;--foreground:222 22% 12%;--card:0 0% 100%;--card-foreground:222 22% 12%;--popover:0 0% 100%;--popover-foreground:222 22% 12%;--primary:172 70% 38%;--primary-foreground:0 0% 100%;--muted:220 14% 95%;--muted-foreground:220 9% 42%;--accent:220 14% 94%;--accent-foreground:222 22% 12%;--border:220 13% 88%;--input:220 13% 88%;--ring:172 66% 50%;--radius:.65rem}.dark{--background:222 24% 7%;--foreground:210 20% 92%;--card:222 22% 10%;--card-foreground:210 20% 92%;--popover:222 24% 9%;--popover-foreground:210 20% 92%;--primary:172 66% 50%;--primary-foreground:222 47% 8%;--muted:220 14% 15%;--muted-foreground:215 14% 62%;--accent:220 14% 17%;--accent-foreground:210 20% 92%;--border:220 14% 19%;--input:220 14% 19%;--ring:172 66% 50%}*{border-color:hsl(var(--border))}html,body,#root{height:100%}body{background-color:hsl(var(--background));color:hsl(var(--foreground));-webkit-font-smoothing:antialiased;margin:0;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-pan-x{syntax:"*";inherits:false}@property --tw-pan-y{syntax:"*";inherits:false}@property --tw-pinch-zoom{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false} diff --git a/frontend/dist/index.html b/frontend/dist/index.html index 1159075..b44adf5 100644 --- a/frontend/dist/index.html +++ b/frontend/dist/index.html @@ -6,8 +6,8 @@ Mission Control 2.0 - - + +
diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index e68e1b4..aeaf4a8 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -6,6 +6,7 @@ import { ModelsView } from "@/views/ModelsView" import { RoutingView } from "@/views/RoutingView" import { SystemView } from "@/views/SystemView" import { ConnectView } from "@/views/ConnectView" +import { MemoryView } from "@/views/MemoryView" import { Placeholder } from "@/views/Placeholder" import { api, type Health } from "@/lib/api" import { cn } from "@/lib/utils" @@ -94,7 +95,8 @@ export default function App() { {view === "routing" && } {view === "system" && } {view === "connect" && } - {!["models", "routing", "system", "connect"].includes(view) && ( + {view === "memory" && } + {!["models", "routing", "system", "connect", "memory"].includes(view) && ( )} diff --git a/frontend/src/lib/api.ts b/frontend/src/lib/api.ts index f68cfc5..96d4c7c 100644 --- a/frontend/src/lib/api.ts +++ b/frontend/src/lib/api.ts @@ -100,6 +100,22 @@ export interface ConnectResp { tools: Record } +export interface Memory { + id: string + content: string + category: string + source: string + created_at: string + updated_at: string +} + +export interface DedupeResult { + groups: { keep: { id: string; content: string; category: string }; remove: { id: string; content: string }[] }[] + duplicate_count: number + removed: number + applied: boolean +} + export interface Health { status: string version: string diff --git a/frontend/src/views/MemoryView.tsx b/frontend/src/views/MemoryView.tsx new file mode 100644 index 0000000..b090f97 --- /dev/null +++ b/frontend/src/views/MemoryView.tsx @@ -0,0 +1,139 @@ +import { useEffect, useState } from "react" +import { Trash2, Sparkles } from "lucide-react" +import { api, type DedupeResult, type Memory } from "@/lib/api" +import { cn } from "@/lib/utils" + +const CATEGORIES = ["user", "instruction", "stable", "versioned", "ephemeral"] +const CAT_LABEL: Record = { + user: "👤 User", instruction: "📋 Regel", stable: "🔵 Fakt", + versioned: "🟡 Version", ephemeral: "⏱ Temporär", +} + +export function MemoryView() { + const [items, setItems] = useState([]) + const [filter, setFilter] = useState("") + const [q, setQ] = useState("") + const [content, setContent] = useState("") + const [category, setCategory] = useState("stable") + const [error, setError] = useState("") + + function load() { + const params = new URLSearchParams() + if (q) params.set("q", q) + if (filter) params.set("category", filter) + api(`/api/memory?${params}`).then(setItems).catch((e) => setError(String(e))) + } + useEffect(load, [q, filter]) + + async function add() { + if (!content.trim()) return + await api("/api/memory", { method: "POST", body: JSON.stringify({ content, category, source: "ui" }) }) + setContent("") + load() + } + async function del(id: string) { + await api(`/api/memory/${id}`, { method: "DELETE" }) + load() + } + async function cleanup() { + const dry = await api("/api/memory/dedupe", { + method: "POST", body: JSON.stringify({ apply: false }), + }) + if (dry.duplicate_count === 0) { + alert("Keine Dubletten gefunden — alles sauber.") + return + } + if (confirm(`${dry.duplicate_count} Dublette(n) in ${dry.groups.length} Gruppe(n) gefunden. Entfernen?`)) { + await api("/api/memory/dedupe", { method: "POST", body: JSON.stringify({ apply: true }) }) + load() + } + } + + return ( +
+
+
+

Gedächtnis

+

+ Die geteilte „Verfassung" — alle Tools (Hermes, IDEs) lesen/schreiben hier via MCP. +

+
+ +
+ + {/* Add */} +
+