From cda38991cef6e0526a7aa186464879c4eccbb925 Mon Sep 17 00:00:00 2001 From: meetsu <96637888+klNuno@users.noreply.github.com> Date: Thu, 22 Oct 2026 22:15:41 +0200 Subject: [PATCH 1/4] feat: models grouped by provider, refreshed one provider at a time --- README.md | 2 + crates/douane/src/lib.rs | 5 +- crates/douane/src/main.rs | 10 +- crates/douane/src/management.rs | 89 +++++++--- crates/douane/src/state.rs | 86 ++++++++-- crates/douane/tests/endpoints.rs | 104 +++++++++-- .../assets/{2.ITQ6xvQN.css => 2.DlpWRXhA.css} | 2 +- dash/build/_app/immutable/chunks/C2MtwMCw.js | 3 + dash/build/_app/immutable/chunks/CdZTpPUs.js | 3 - .../chunks/{BhDPUJdG.js => DwX-c_Q9.js} | 2 +- .../{app.nmjXja71.js => app.2nDg8N4l.js} | 4 +- .../_app/immutable/entry/start.AtR5ahqN.js | 1 + .../_app/immutable/entry/start.gGCrc-P1.js | 1 - .../nodes/{0.C_KEKqZM.js => 0.BhzPkDfq.js} | 2 +- dash/build/_app/immutable/nodes/1.B61j0f2j.js | 1 - dash/build/_app/immutable/nodes/1.gSzZPKYH.js | 1 + dash/build/_app/immutable/nodes/2.ChvhtAH0.js | 1 - dash/build/_app/immutable/nodes/2._6n1M84D.js | 1 + dash/build/_app/version.json | 2 +- dash/build/index.html | 16 +- dash/src/lib/components/data-views.svelte | 12 +- dash/src/lib/components/models-view.svelte | 161 ++++++++++++++++++ dash/src/lib/management.ts | 18 +- dash/src/lib/strings/en.ts | 14 ++ dash/src/lib/strings/fr.ts | 14 ++ dash/src/routes/+page.svelte | 9 +- 26 files changed, 476 insertions(+), 88 deletions(-) rename dash/build/_app/immutable/assets/{2.ITQ6xvQN.css => 2.DlpWRXhA.css} (65%) create mode 100644 dash/build/_app/immutable/chunks/C2MtwMCw.js delete mode 100644 dash/build/_app/immutable/chunks/CdZTpPUs.js rename dash/build/_app/immutable/chunks/{BhDPUJdG.js => DwX-c_Q9.js} (91%) rename dash/build/_app/immutable/entry/{app.nmjXja71.js => app.2nDg8N4l.js} (57%) create mode 100644 dash/build/_app/immutable/entry/start.AtR5ahqN.js delete mode 100644 dash/build/_app/immutable/entry/start.gGCrc-P1.js rename dash/build/_app/immutable/nodes/{0.C_KEKqZM.js => 0.BhzPkDfq.js} (60%) delete mode 100644 dash/build/_app/immutable/nodes/1.B61j0f2j.js create mode 100644 dash/build/_app/immutable/nodes/1.gSzZPKYH.js delete mode 100644 dash/build/_app/immutable/nodes/2.ChvhtAH0.js create mode 100644 dash/build/_app/immutable/nodes/2._6n1M84D.js create mode 100644 dash/src/lib/components/models-view.svelte diff --git a/README.md b/README.md index 641a0b6..045cf2e 100644 --- a/README.md +++ b/README.md @@ -201,6 +201,8 @@ douanectl endpoint remove groq The same fields go through `POST /admin/api/accounts/import` with `{"type":"openai_compatible","route":...,"base_url":...,"api_key":...}`, and `PATCH /admin/api/accounts/{id}` changes `route`, `base_url`, `dialect`, `models` or `api_key`. An account without a route keeps its previous behavior under `openai_compatible/`. +The **Models** page lists models under their provider or route, each one folded until opened. A provider rereads its catalog on its own (`POST /admin/api/models/refresh?pool=openrouter`; no `pool` rereads all), and its switch turns every shown model on or off in one write (`PATCH /admin/api/models` with `{"ids":[...],"enabled":false}`). When a live listing fails, the provider keeps its previous models, is marked as such, and is reread every minute. + ## Routing and quotas Pick a strategy in **Settings**, globally or per provider. It applies to new conversations: diff --git a/crates/douane/src/lib.rs b/crates/douane/src/lib.rs index 2ed12ef..11a6601 100644 --- a/crates/douane/src/lib.rs +++ b/crates/douane/src/lib.rs @@ -48,7 +48,10 @@ pub fn router(state: Arc) -> Router { post(management::redeem_reset), ) .route("/quotas/refresh", post(management::refresh_quotas)) - .route("/models", get(management::models)) + .route( + "/models", + get(management::models).patch(management::set_models), + ) .route("/models/refresh", post(management::refresh_models)) .route("/models/{*id}", patch(management::set_model)) .route("/calls", get(management::calls)) diff --git a/crates/douane/src/main.rs b/crates/douane/src/main.rs index d469151..508dfbd 100644 --- a/crates/douane/src/main.rs +++ b/crates/douane/src/main.rs @@ -65,12 +65,10 @@ async fn main() -> Result<()> { poller.quotas.save().await; } // A live model listing that failed is read again every minute. - if pass.is_multiple_of(4) - && poller - .models_incomplete - .load(std::sync::atomic::Ordering::Relaxed) - { - poller.refresh_models().await; + if pass.is_multiple_of(4) { + for pool in poller.stale_pools() { + poller.refresh_models_in(Some(&pool)).await; + } } tokio::time::sleep(Duration::from_secs(15)).await; } diff --git a/crates/douane/src/management.rs b/crates/douane/src/management.rs index e3f4c75..78957b6 100644 --- a/crates/douane/src/management.rs +++ b/crates/douane/src/management.rs @@ -640,11 +640,28 @@ pub async fn refresh_quotas( Json(json!({"quotas":state.quotas.list().await})) } pub async fn models(State(state): State>) -> Json { - Json(json!({"models":*state.models.read().await})) + model_listing(&state).await } -pub async fn refresh_models(State(state): State>) -> Json { - state.refresh_models().await; - Json(json!({"models":*state.models.read().await})) +async fn model_listing(state: &AppState) -> Json { + let models = state.models.read().await.clone(); + let listings = state + .model_listings + .lock() + .unwrap_or_else(|e| e.into_inner()) + .clone(); + Json(json!({"models":models,"listings":listings})) +} +#[derive(Default, Deserialize)] +pub struct RefreshModels { + /// One pool (a provider or a custom endpoint route); every pool without it. + pub pool: Option, +} +pub async fn refresh_models( + State(state): State>, + Query(query): Query, +) -> Json { + state.refresh_models_in(query.pool.as_deref()).await; + model_listing(&state).await } pub async fn set_model( State(state): State>, @@ -654,29 +671,63 @@ pub async fn set_model( let Some(enabled) = body["enabled"].as_bool() else { return error(StatusCode::BAD_REQUEST, "enabled must be a boolean"); }; + match set_models_enabled(&state, std::slice::from_ref(&id), enabled).await { + Some(refusal) => refusal, + None => Json(json!({"id":id,"enabled":enabled})).into_response(), + } +} +#[derive(Deserialize)] +pub struct ModelsPatch { + pub ids: Vec, + pub enabled: bool, +} +/// Turns several models on or off in one configuration write, such as a +/// whole provider from the Models page. +pub async fn set_models( + State(state): State>, + Json(body): Json, +) -> Response { + match set_models_enabled(&state, &body.ids, body.enabled).await { + Some(refusal) => refusal, + None => Json(json!({"ids":body.ids,"enabled":body.enabled})).into_response(), + } +} +/// Saves the change, or returns the refusal to send. +async fn set_models_enabled(state: &AppState, ids: &[String], enabled: bool) -> Option { let _write = state.config_write.lock().await; let mut config = state.config.read().await.clone(); - if !state.models.read().await.iter().any(|m| m.id == id) { - return error(StatusCode::NOT_FOUND, "model not found"); - } - if enabled { - config.disabled_models.remove(&id); - } else { - config.disabled_models.insert(id.clone()); + { + let models = state.models.read().await; + if ids.iter().any(|id| !models.iter().any(|m| &m.id == id)) { + return Some(error(StatusCode::NOT_FOUND, "model not found")); + } } - if let Some(path) = &state.config_path { - if config.save(path).await.is_err() { - return error( - StatusCode::INTERNAL_SERVER_ERROR, - "cannot save configuration", - ); + for id in ids { + if enabled { + config.disabled_models.remove(id); + } else { + config.disabled_models.insert(id.clone()); } } + if let Some(path) = &state.config_path + && config.save(path).await.is_err() + { + return Some(error( + StatusCode::INTERNAL_SERVER_ERROR, + "cannot save configuration", + )); + } *state.config.write().await = config; - for model in state.models.write().await.iter_mut().filter(|m| m.id == id) { + for model in state + .models + .write() + .await + .iter_mut() + .filter(|m| ids.contains(&m.id)) + { model.enabled = enabled; } - Json(json!({"id":id,"enabled":enabled})).into_response() + None } #[derive(Default, Deserialize)] pub struct Params { diff --git a/crates/douane/src/state.rs b/crates/douane/src/state.rs index 8bace85..47e149e 100644 --- a/crates/douane/src/state.rs +++ b/crates/douane/src/state.rs @@ -44,6 +44,22 @@ fn yes() -> bool { true } +/// The last catalog read of one pool. +#[derive(Clone, Serialize)] +pub struct ModelListing { + pub refreshed_at: String, + /// The live listing failed, so the pool shows the previous catalog. + pub stale: bool, +} + +/// Whether `model` belongs to `pool`, whose name prefixes its id. +fn in_pool(model: &Model, pool: &str) -> bool { + model + .id + .strip_prefix(pool) + .is_some_and(|rest| rest.starts_with('/')) +} + /// A blank enabled row; constructors name the fields they know. impl Default for Model { fn default() -> Self { @@ -91,9 +107,9 @@ pub struct AppState { pub clients: Arc, pub client: reqwest::Client, pub models: RwLock>, - /// Set when the last catalog refresh could not read an account's live - /// listing; the background loop retries until every listing answers. - pub models_incomplete: std::sync::atomic::AtomicBool, + /// When each pool's catalog was last read, and whether its live listing + /// failed; the background loop rereads a stale pool until it answers. + pub model_listings: Mutex>, pub scheduler: Mutex, pub affinity: Mutex, pub(crate) antigravity_replay: Mutex, @@ -148,7 +164,7 @@ impl AppState { clients, client, models: RwLock::new(vec![]), - models_incomplete: std::sync::atomic::AtomicBool::new(false), + model_listings: Mutex::new(BTreeMap::new()), scheduler: Mutex::new(Scheduler::default()), affinity: Mutex::new(crate::affinity::Affinity::default()), antigravity_replay: Mutex::new(crate::antigravity_replay::ReplayCache::default()), @@ -191,15 +207,42 @@ impl AppState { } pub async fn refresh_models(&self) { + self.refresh_models_in(None).await; + } + + /// Pools whose last live listing failed. + pub fn stale_pools(&self) -> Vec { + self.model_listings + .lock() + .unwrap_or_else(|e| e.into_inner()) + .iter() + .filter(|(_, listing)| listing.stale) + .map(|(pool, _)| pool.clone()) + .collect() + } + + /// Rereads the catalog of one pool, or of every pool; the other pools + /// keep their rows untouched. + pub async fn refresh_models_in(&self, only: Option<&str>) { let bundled = catalog(); let previous = self.models.read().await.clone(); - let mut incomplete = false; + let mut read: BTreeSet = BTreeSet::new(); + let mut stale: BTreeSet = BTreeSet::new(); let mut models: BTreeMap = BTreeMap::new(); + if let Some(pool) = only { + for model in previous.iter().filter(|m| !in_pool(m, pool)) { + models.insert(model.id.clone(), model.clone()); + } + } let disabled = self.config.read().await.disabled_models.clone(); for summary in self.accounts.list().await { let Some(account) = self.accounts.get(&summary.id).await else { continue; }; + if only.is_some_and(|pool| pool != account.pool()) { + continue; + } + read.insert(account.pool().to_owned()); let mut available: Vec = if account.models.is_empty() { bundled .iter() @@ -287,9 +330,7 @@ impl AppState { .iter() .filter(|m| { m.provider == account.provider - && m.id - .strip_prefix(pool) - .is_some_and(|rest| rest.starts_with('/')) + && in_pool(m, pool) && (account.models.is_empty() || account.models.contains(&m.upstream_id)) }) @@ -311,7 +352,9 @@ impl AppState { } } } - incomplete |= account.models.is_empty(); + if account.models.is_empty() { + stale.insert(pool.to_owned()); + } } } } @@ -339,8 +382,29 @@ impl AppState { } } *self.models.write().await = models.into_values().collect(); - self.models_incomplete - .store(incomplete, std::sync::atomic::Ordering::Relaxed); + let now = time::OffsetDateTime::now_utc() + .format(&time::format_description::well_known::Rfc3339) + .unwrap_or_default(); + let mut listings = self + .model_listings + .lock() + .unwrap_or_else(|e| e.into_inner()); + match only { + Some(pool) => { + listings.remove(pool); + } + None => listings.clear(), + } + for pool in read { + let stale = stale.contains(&pool); + listings.insert( + pool, + ModelListing { + refreshed_at: now.clone(), + stale, + }, + ); + } } /// Copilot's own catalog: the models this account's plan enables, with diff --git a/crates/douane/tests/endpoints.rs b/crates/douane/tests/endpoints.rs index 2f89f1a..b1199bc 100644 --- a/crates/douane/tests/endpoints.rs +++ b/crates/douane/tests/endpoints.rs @@ -428,24 +428,99 @@ async fn a_failed_listing_keeps_the_previous_catalog() { failing.store(true, std::sync::atomic::Ordering::Relaxed); gateway.state.refresh_models().await; assert_eq!(gateway.model_ids().await, listed); - assert!( - gateway - .state - .models_incomplete - .load(std::sync::atomic::Ordering::Relaxed) - ); + assert_eq!(gateway.state.stale_pools(), ["openrouter"]); failing.store(false, std::sync::atomic::Ordering::Relaxed); gateway.state.refresh_models().await; assert_eq!(gateway.model_ids().await, listed); - assert!( - !gateway - .state - .models_incomplete - .load(std::sync::atomic::Ordering::Relaxed) + assert!(gateway.state.stale_pools().is_empty()); +} + +#[tokio::test] +async fn a_pool_refresh_rereads_only_that_pool() { + // The Models page refreshes one provider at a time: the others keep + // their rows even when their own listing would now answer differently. + let first = Arc::new(Mutex::new(vec!["a"])); + let second = Arc::new(Mutex::new(vec!["x"])); + let listing = |ids: Arc>>| { + Router::new().route( + "/v1/models", + get(move || { + let data: Vec = ids + .lock() + .unwrap() + .iter() + .map(|id| json!({"id":id})) + .collect(); + async move { Json(json!({ "data": data })) } + }), + ) + }; + let one = serve(listing(first.clone())).await; + let two = serve(listing(second.clone())).await; + let gateway = Gateway::new(&[ + endpoint("one", &one.url, "key"), + endpoint("two", &two.url, "key"), + ]) + .await; + assert_eq!(gateway.model_ids().await, ["one/a", "two/x"]); + let before = gateway.admin(reqwest::Method::GET, "/models", None).await; + assert!(before["listings"]["one"]["refreshed_at"].is_string()); + assert_eq!(before["listings"]["two"]["stale"], false); + + first.lock().unwrap().push("b"); + second.lock().unwrap().push("y"); + let after = gateway + .admin(reqwest::Method::POST, "/models/refresh?pool=one", None) + .await; + assert_eq!(after["models"].as_array().unwrap().len(), 3); + assert_eq!(gateway.model_ids().await, ["one/a", "one/b", "two/x"]); + assert!(after["listings"]["two"].is_object()); + + gateway + .admin(reqwest::Method::POST, "/models/refresh", None) + .await; + assert_eq!( + gateway.model_ids().await, + ["one/a", "one/b", "two/x", "two/y"] ); } +#[tokio::test] +async fn a_whole_provider_turns_off_in_one_call() { + let server = serve(Router::new().route( + "/v1/models", + get(|| async { Json(json!({"data":[{"id":"a"},{"id":"b"},{"id":"c"}]})) }), + )) + .await; + let gateway = Gateway::new(&[endpoint("one", &server.url, "key")]).await; + gateway + .admin( + reqwest::Method::PATCH, + "/models", + Some(json!({"ids":["one/a","one/b"],"enabled":false})), + ) + .await; + assert_eq!(gateway.model_ids().await, ["one/c"]); + let unknown = gateway + .client + .patch(format!("{}/admin/api/models", gateway.server.url)) + .json(&json!({"ids":["one/c","one/missing"],"enabled":false})) + .send() + .await + .unwrap(); + assert_eq!(unknown.status(), 404); + assert_eq!(gateway.model_ids().await, ["one/c"]); + gateway + .admin( + reqwest::Method::PATCH, + "/models", + Some(json!({"ids":["one/a","one/b"],"enabled":true})), + ) + .await; + assert_eq!(gateway.model_ids().await, ["one/a", "one/b", "one/c"]); +} + #[tokio::test] async fn an_endpoint_without_a_listing_keeps_its_named_models() { // A request path that works beside a `/models` that never answers. @@ -456,12 +531,7 @@ async fn an_endpoint_without_a_listing_keeps_its_named_models() { assert_eq!(gateway.model_ids().await, ["mimo/mimo-v3"]); gateway.state.refresh_models().await; assert_eq!(gateway.model_ids().await, ["mimo/mimo-v3"]); - assert!( - !gateway - .state - .models_incomplete - .load(std::sync::atomic::Ordering::Relaxed) - ); + assert!(gateway.state.stale_pools().is_empty()); } #[tokio::test] diff --git a/dash/build/_app/immutable/assets/2.ITQ6xvQN.css b/dash/build/_app/immutable/assets/2.DlpWRXhA.css similarity index 65% rename from dash/build/_app/immutable/assets/2.ITQ6xvQN.css rename to dash/build/_app/immutable/assets/2.DlpWRXhA.css index 3f2b8b2..f4c6122 100644 --- a/dash/build/_app/immutable/assets/2.ITQ6xvQN.css +++ b/dash/build/_app/immutable/assets/2.DlpWRXhA.css @@ -1 +1 @@ -.provider-mark.svelte-1vulm01{color:inherit;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}img.svelte-1vulm01{object-fit:contain;width:100%;height:100%;display:block}.light-mat.svelte-1vulm01{background:#eaf0ff;border-radius:5px;padding:2px}.meter-label.svelte-1dmbtuk{color:var(--muted);justify-content:space-between;gap:14px;margin-bottom:9px;font-size:15px;display:flex}.meter-label.svelte-1dmbtuk span:where(.svelte-1dmbtuk):last-child{color:var(--text);white-space:nowrap}.meter-track.svelte-1dmbtuk{background:#2a3a55;border-radius:4px;height:7px;overflow:hidden}.meter-fill.svelte-1dmbtuk{background:var(--green);border-radius:inherit;height:100%}.meter-fill.medium.svelte-1dmbtuk{background:var(--yellow)}.meter-fill.low.svelte-1dmbtuk{background:var(--red)}.compact.svelte-1dmbtuk .meter-label:where(.svelte-1dmbtuk){display:none}.compact.svelte-1dmbtuk .meter-track:where(.svelte-1dmbtuk){height:5px}.account-name.svelte-6htcw3{text-align:left;background:0 0;border:0;align-items:center;gap:9px;max-width:100%;padding:3px 0;font-size:17px;font-weight:600;line-height:1.45;display:inline-flex}.account-name.svelte-6htcw3 span:where(.svelte-6htcw3){overflow-wrap:anywhere}.account-name.svelte-6htcw3 svg{color:var(--faint);opacity:.55;flex-shrink:0}.account-name.svelte-6htcw3:hover{color:var(--blue)}.account-name.svelte-6htcw3:hover svg,.account-name.svelte-6htcw3:focus-visible svg{opacity:1}.name-editor.svelte-6htcw3{flex-wrap:wrap;align-items:center;gap:6px;max-width:100%;display:flex}.name-editor.svelte-6htcw3 input:where(.svelte-6htcw3){flex:1;width:100%;min-width:120px;height:44px;font-size:16px}.name-actions.svelte-6htcw3{display:flex}.rename-error.svelte-6htcw3{color:var(--red);flex-basis:100%;margin:4px 0;font-size:15px;line-height:1.5}.private-email.svelte-1n2y5u{max-width:100%;color:var(--muted);text-align:left;background:0 0;border:0;align-items:center;gap:10px;padding:5px 0;font-size:15px;line-height:1.4;display:flex}.private-email.svelte-1n2y5u span:where(.svelte-1n2y5u){overflow-wrap:anywhere}.blurred.svelte-1n2y5u{filter:blur(5px);-webkit-user-select:none;user-select:none}.private-email.svelte-1n2y5u svg{color:var(--faint);flex-shrink:0}.private-email.svelte-1n2y5u:hover{color:var(--text)}.reset-control.svelte-zw103y{flex-wrap:wrap;align-items:center;gap:8px;margin-top:15px;display:flex}.reset-button.svelte-zw103y{min-height:42px;padding:8px 11px;font-size:15px}.reset-status.svelte-zw103y{color:var(--muted);font-size:15px}.reset-retry.svelte-zw103y{color:var(--blue);background:0 0;border:0;padding:4px 0;font-size:15px}.reset-error.svelte-zw103y{color:var(--red);overflow-wrap:anywhere;flex-basis:100%;margin:6px 0;font-size:15px;line-height:1.5}dialog.svelte-zw103y{border:1px solid var(--border);background:var(--surface);width:100%;max-width:min(520px,100vw - 32px);color:var(--text);border-radius:16px;padding:0;box-shadow:0 24px 100px #0008}dialog.svelte-zw103y::backdrop{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#030711b5}.reset-dialog.svelte-zw103y{padding:25px}.reset-dialog.svelte-zw103y header:where(.svelte-zw103y){justify-content:space-between;align-items:center;gap:15px;display:flex}.reset-dialog.svelte-zw103y h2:where(.svelte-zw103y){font-family:var(--font-display);font-size:24px}.reset-dialog.svelte-zw103y p:where(.svelte-zw103y){color:var(--muted);font-size:16px;line-height:1.6}.reset-dialog.svelte-zw103y .reset-account:where(.svelte-zw103y){color:var(--text);font-weight:600}.reset-dialog.svelte-zw103y .reset-error:where(.svelte-zw103y){color:var(--red)}.reset-dialog.svelte-zw103y .reset-result:where(.svelte-zw103y){color:var(--green)}.dialog-actions.svelte-zw103y{flex-wrap:wrap;justify-content:flex-end;gap:10px;margin-top:24px;display:flex}@media (width<=650px){.reset-dialog.svelte-zw103y{padding:20px}.dialog-actions.svelte-zw103y .button:where(.svelte-zw103y){flex:1}.reset-dialog.svelte-zw103y h2:where(.svelte-zw103y){font-size:22px}}.empty-state.svelte-18g3sj1{text-align:center;flex-direction:column;justify-content:center;align-items:center;min-height:260px;padding:36px 20px;display:flex}.empty-icon.svelte-18g3sj1{width:52px;height:52px;color:var(--blue);background:#5478f610;border:1px solid #7899ff30;border-radius:14px;place-items:center;margin-bottom:18px;display:grid}h3.svelte-18g3sj1{font-family:var(--font-display);letter-spacing:-.025em;margin:0 0 9px;font-size:19px;font-weight:600}p.svelte-18g3sj1{color:var(--muted);max-width:380px;margin:0 0 20px;font-size:15px;line-height:1.6}.quota-toolbar.svelte-137c7x1{justify-content:flex-end;margin:20px 0 26px}.quota-toolbar.svelte-137c7x1>select:where(.svelte-137c7x1){background:var(--surface);font-size:15px}.provider-groups.svelte-137c7x1{gap:30px;display:grid}.provider-heading.svelte-137c7x1{align-items:center;gap:12px;margin:0 0 14px;display:flex}.provider-heading.svelte-137c7x1 h2:where(.svelte-137c7x1){font-family:var(--font-display);font-size:23px;font-weight:600}.provider-heading.svelte-137c7x1>span:where(.svelte-137c7x1){color:var(--muted);margin-left:auto;font-size:15px}.display-choice.svelte-137c7x1{color:var(--muted);align-items:center;gap:10px;margin-left:10px;font-size:15px;display:flex}.display-choice.svelte-137c7x1 select:where(.svelte-137c7x1){background:var(--surface);font-size:15px}.windows-toggle[aria-expanded=true].svelte-137c7x1{border-color:var(--primary);color:var(--text)}.window-choices.svelte-137c7x1{border:1px solid var(--border);background:var(--surface);border-radius:12px;gap:4px;margin:0 0 14px;padding:10px 16px;display:grid}.window-choice.svelte-137c7x1{align-items:center;gap:14px;min-height:48px;display:flex}.window-choice.svelte-137c7x1+.window-choice:where(.svelte-137c7x1){border-top:1px solid var(--border)}.window-name.svelte-137c7x1{flex:1;min-width:0;font-size:16px}.hidden-window.svelte-137c7x1 .window-name:where(.svelte-137c7x1){color:var(--muted)}.primary-choice.svelte-137c7x1{min-height:36px;color:var(--muted);background:0 0;border:1px solid #0000;border-radius:9px;align-items:center;gap:7px;padding:0 11px;font-size:15px;display:inline-flex}.primary-choice.svelte-137c7x1:hover:not(:disabled){border-color:var(--border);color:var(--text)}.primary-choice.on.svelte-137c7x1{border-color:var(--primary);color:var(--text)}.primary-choice.on.svelte-137c7x1 svg{color:var(--primary);fill:var(--primary)}.window-default.svelte-137c7x1{color:var(--muted);margin:6px 0 4px;font-size:15px}.quota-row.svelte-137c7x1{border-bottom:1px solid var(--border);grid-template-columns:minmax(220px,.8fr) minmax(320px,1.8fr) auto;align-items:center;gap:26px;padding:25px 24px;display:grid}.quota-row.svelte-137c7x1:last-child{border-bottom:0}.account-identity.svelte-137c7x1{min-width:0}.account-plan.svelte-137c7x1{color:var(--muted);margin:4px 0;font-size:15px}.quota-details.svelte-137c7x1{min-width:0}.verification-needed.svelte-137c7x1{justify-items:start;gap:12px;margin-bottom:16px;display:grid}.verification-needed.svelte-137c7x1 p:where(.svelte-137c7x1){color:var(--muted);margin:0;font-size:16px;line-height:1.5}.quota-windows.svelte-137c7x1{grid-template-columns:repeat(2,minmax(130px,1fr));gap:23px 28px;display:grid}.reset-date.svelte-137c7x1{color:var(--muted);align-items:center;gap:7px;margin:11px 0 0;font-size:15px;line-height:1.4;display:flex}.reset-date.svelte-137c7x1 svg{color:var(--faint);flex-shrink:0}.quota-unavailable.svelte-137c7x1{color:var(--muted);grid-column:1/-1;margin:0;font-size:16px}.account-state.svelte-137c7x1{justify-content:flex-end;align-items:center;gap:8px;display:flex}.disabled-row.svelte-137c7x1{opacity:.65}.credit-windows.svelte-137c7x1{border-top:1px solid var(--border);gap:18px;margin-top:23px;padding-top:18px;display:grid}.credit-window.svelte-137c7x1>div:where(.svelte-137c7x1){justify-content:space-between;gap:12px;font-size:15px;display:flex}.credit-window.svelte-137c7x1 strong:where(.svelte-137c7x1){font-weight:600}.credit-window.svelte-137c7x1 strong:where(.svelte-137c7x1)>span:where(.svelte-137c7x1){font-weight:400}.credit-window.svelte-137c7x1>p:where(.svelte-137c7x1){color:var(--muted);margin:8px 0 0;font-size:15px}@media (width<=1250px){.quota-row.svelte-137c7x1{grid-template-columns:minmax(190px,.7fr) minmax(260px,1.3fr);gap:22px}.account-state.svelte-137c7x1{grid-column:1/-1;margin-top:-8px}}@media (width<=650px){.quota-toolbar.svelte-137c7x1{flex-wrap:nowrap;gap:10px;margin:18px 0 25px}.quota-toolbar.svelte-137c7x1>select:where(.svelte-137c7x1){max-width:140px;padding:0 8px}.quota-toolbar.svelte-137c7x1>.search-input:where(.svelte-137c7x1){width:auto;min-width:0}.provider-groups.svelte-137c7x1{gap:28px}.provider-heading.svelte-137c7x1{flex-wrap:wrap}.provider-heading.svelte-137c7x1 h2:where(.svelte-137c7x1){font-size:22px}.display-choice.svelte-137c7x1{flex-basis:100%;justify-content:space-between;margin-left:0}.display-choice.svelte-137c7x1 select:where(.svelte-137c7x1){max-width:200px;padding:0 8px}.windows-toggle.svelte-137c7x1{margin-left:auto}.window-choices.svelte-137c7x1{padding:6px 14px}.window-choice.svelte-137c7x1{gap:10px}.primary-choice.svelte-137c7x1{padding:0 8px}.quota-row.svelte-137c7x1{grid-template-columns:1fr;gap:22px;padding:20px 18px}.quota-windows.svelte-137c7x1{grid-template-columns:1fr;gap:23px}.account-state.svelte-137c7x1{grid-column:auto;justify-content:space-between;margin-top:0}.credit-window.svelte-137c7x1>div:where(.svelte-137c7x1){flex-wrap:wrap}}.reserve.svelte-c6cuiu{width:fit-content;color:var(--muted);background:0 0;border:0;align-items:center;gap:7px;margin-top:8px;padding:3px 0;font-size:15px;display:flex}.reserve.svelte-c6cuiu svg{color:var(--faint);flex-shrink:0}.reserve.set.svelte-c6cuiu{color:var(--text)}.reserve.set.svelte-c6cuiu svg,.reserve.svelte-c6cuiu:hover{color:var(--blue)}.reserve-editor.svelte-c6cuiu{flex-wrap:wrap;align-items:center;gap:6px 10px;margin-top:8px;display:flex}.reserve-editor.svelte-c6cuiu label:where(.svelte-c6cuiu){color:var(--muted);align-items:center;gap:8px;font-size:15px;display:flex}.reserve-editor.svelte-c6cuiu input:where(.svelte-c6cuiu){width:76px;height:40px;font-size:16px}.reserve-actions.svelte-c6cuiu{display:flex}.reserve-windows.svelte-c6cuiu{flex-wrap:wrap;flex-basis:100%;gap:6px;display:flex}.chip.svelte-c6cuiu{border:1px solid var(--border);color:var(--muted);background:0 0;border-radius:999px;padding:5px 11px;font-size:14px;transition:background .15s,border-color .15s,color .15s}.chip.svelte-c6cuiu:hover:not(:disabled){border-color:var(--blue);color:var(--text)}.chip.on.svelte-c6cuiu{border-color:var(--blue);color:var(--text);background:#5478f622}.link-button.svelte-c6cuiu{color:var(--muted);background:0 0;border:0;padding:3px 0;font-size:15px;text-decoration:underline}.link-button.svelte-c6cuiu:hover{color:var(--red)}.reserve-error.svelte-c6cuiu{color:var(--red);flex-basis:100%;margin:2px 0;font-size:15px;line-height:1.5}.reserve-note.svelte-c6cuiu{max-width:320px;color:var(--muted);margin:6px 0 0;font-size:14px;line-height:1.45}.reserve-note.reached.svelte-c6cuiu{color:var(--yellow)}.endpoint-line.svelte-1n2vmw9{color:var(--muted);flex-wrap:wrap;align-items:center;gap:6px 9px;margin-top:7px;font-size:14px;display:flex}.endpoint-line.svelte-1n2vmw9 code:where(.svelte-1n2vmw9){color:var(--text);font-size:14px}.endpoint-url.svelte-1n2vmw9{text-overflow:ellipsis;white-space:nowrap;max-width:260px;overflow:hidden}.endpoint-format.svelte-1n2vmw9{border:1px solid var(--border);border-radius:6px;padding:2px 7px;font-size:13px}.endpoint-editor.svelte-1n2vmw9{gap:9px;max-width:340px;margin-top:10px;display:grid}.endpoint-editor.svelte-1n2vmw9 label:where(.svelte-1n2vmw9){color:var(--muted);gap:5px;font-size:14px;display:grid}.endpoint-editor.svelte-1n2vmw9 input:where(.svelte-1n2vmw9),.endpoint-editor.svelte-1n2vmw9 select:where(.svelte-1n2vmw9){width:100%;font-size:14px}.editor-actions.svelte-1n2vmw9{gap:8px;margin-top:4px;display:flex}.drop-zone.svelte-1x1hfd6{color:var(--muted);background:#111b2e80;border:1px dashed #3c5279;border-radius:11px;justify-content:center;align-items:center;gap:10px;margin-bottom:18px;padding:20px;font-size:15px;line-height:1.5;display:flex}.drop-zone.dragging.svelte-1x1hfd6{border-color:var(--blue);color:var(--text);background:#5478f612}.drop-zone.svelte-1x1hfd6 svg{flex-shrink:0}.account-table-wrap.svelte-1x1hfd6{overflow-x:auto}td.svelte-1x1hfd6:first-child{min-width:200px}.inline-provider.svelte-1x1hfd6{white-space:nowrap;align-items:center;gap:9px;font-size:16px;display:inline-flex}.account-plan.svelte-1x1hfd6{color:var(--muted);margin-top:7px;font-size:15px}.reserve-cell.svelte-1x1hfd6{min-width:190px}.verified-at.svelte-1x1hfd6{white-space:nowrap}.reserve-cell.svelte-1x1hfd6 .reserve,.reserve-cell.svelte-1x1hfd6 .reserve-editor{margin-top:0}.row-actions.svelte-1x1hfd6{align-items:center;gap:14px;display:flex}.inline-error.svelte-1x1hfd6{max-width:350px;color:var(--red);font-size:15px}.delete-confirmation.svelte-1x1hfd6{min-width:210px;margin-top:12px;font-size:15px}.delete-confirmation.svelte-1x1hfd6 p:where(.svelte-1x1hfd6){margin:0 0 10px}.delete-confirmation.svelte-1x1hfd6 .button:where(.svelte-1x1hfd6){margin-right:5px}@media (width<=900px){table.svelte-1x1hfd6{display:block}thead.svelte-1x1hfd6{display:none}tbody.svelte-1x1hfd6{display:block}tr.svelte-1x1hfd6{border-bottom:1px solid var(--border);grid-template-columns:1fr auto;gap:18px;padding:22px 20px;display:grid}tr.svelte-1x1hfd6:last-child{border:0}td.svelte-1x1hfd6{border:0;padding:0}td.svelte-1x1hfd6:first-child,.reserve-cell.svelte-1x1hfd6{grid-column:1/-1;min-width:0}td.svelte-1x1hfd6:last-child{justify-content:flex-end;display:flex}.row-actions.svelte-1x1hfd6{gap:20px}.verified-at.svelte-1x1hfd6:before{content:attr(data-label)}}@media (width<=650px){.drop-zone.svelte-1x1hfd6{padding:17px}tr.svelte-1x1hfd6{padding:20px 18px}.delete-confirmation.svelte-1x1hfd6{min-width:0}}.modal.svelte-1k2jq0p{background:var(--surface);width:min(520px,100vw - 32px);max-height:calc(100dvh - 32px);color:var(--text);border:1px solid #35496b;border-radius:16px;padding:25px;overflow-y:auto;box-shadow:0 24px 80px #030711b0}.modal.wide.svelte-1k2jq0p{width:min(640px,100vw - 32px)}.modal.svelte-1k2jq0p::backdrop{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#030711b5}header.svelte-1k2jq0p{justify-content:space-between;align-items:center;gap:15px;margin-bottom:14px;display:flex}h2.svelte-1k2jq0p{font-family:var(--font-display);letter-spacing:-.03em;overflow-wrap:anywhere;font-size:24px;font-weight:650}.modal.svelte-1k2jq0p .dialog-actions{flex-wrap:wrap;justify-content:flex-end;gap:10px;margin-top:24px;display:flex}.modal.svelte-1k2jq0p .dialog-text{color:var(--muted);margin:0 0 10px;font-size:16px;line-height:1.6}.modal.svelte-1k2jq0p .dialog-error{color:var(--red);overflow-wrap:anywhere;margin:12px 0 0;font-size:15px;line-height:1.5}@media (width<=650px){.modal.svelte-1k2jq0p{padding:20px 18px}h2.svelte-1k2jq0p{font-size:22px}.modal.svelte-1k2jq0p .dialog-actions .button{flex:1}}.client-form.svelte-vb71yz{gap:22px;display:grid}.client-form.svelte-vb71yz .dialog-error:where(.svelte-vb71yz),.client-form.svelte-vb71yz .dialog-actions{margin-top:0}.field.svelte-vb71yz{color:var(--muted);gap:7px;font-size:15px;display:grid}.field.svelte-vb71yz input:where(.svelte-vb71yz){width:100%}h3.svelte-vb71yz{align-items:center;gap:8px;margin:0 0 10px;font-size:16px;font-weight:600;display:flex}.info.svelte-vb71yz{color:var(--faint);cursor:help;display:inline-flex}.info.svelte-vb71yz:hover{color:var(--blue)}.all-row.svelte-vb71yz{border:1px solid var(--border);background:var(--background);border-radius:11px;justify-content:space-between;align-items:center;gap:16px;padding:13px 15px;display:flex}.all-row.svelte-vb71yz strong:where(.svelte-vb71yz){font-size:15px;font-weight:600;display:block}.all-row.svelte-vb71yz span:where(.svelte-vb71yz){color:var(--muted);font-size:14px}.pool-list.svelte-vb71yz{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:10px;display:grid}.pool.svelte-vb71yz{border:1px solid var(--border);background:var(--background);border-radius:11px;align-content:start;gap:8px;padding:10px 12px 12px;display:grid}.pool.svelte-vb71yz:has(.pool-row:where(.svelte-vb71yz) input:where(.svelte-vb71yz):checked){border-color:#5478f670}.pool-row.svelte-vb71yz{cursor:pointer;align-items:center;gap:9px;min-height:28px;font-size:15px;display:flex}.pool-row.svelte-vb71yz strong:where(.svelte-vb71yz){text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:600;overflow:hidden}.account-chips.svelte-vb71yz{flex-wrap:wrap;gap:6px;display:flex}.chip.svelte-vb71yz{border:1px solid var(--border);color:var(--muted);background:0 0;border-radius:999px;padding:4px 10px;font-size:14px}.chip.svelte-vb71yz:hover:not(:disabled){border-color:var(--blue);color:var(--text)}.chip.on.svelte-vb71yz{border-color:var(--blue);color:var(--text);background:#5478f622}.chip.svelte-vb71yz:disabled{cursor:default;opacity:.75}input[type=checkbox].svelte-vb71yz{width:17px;height:17px;accent-color:var(--primary);padding:0}.share-list.svelte-vb71yz{border:1px solid var(--border);background:var(--background);border-radius:11px;display:grid}.share-row.svelte-vb71yz{grid-template-columns:1fr auto 120px;align-items:center;gap:14px;padding:9px 14px;display:grid}.share-row.svelte-vb71yz+.share-row:where(.svelte-vb71yz){border-top:1px solid var(--border)}.share-pool.svelte-vb71yz{align-items:center;gap:10px;min-width:0;font-size:15px;font-weight:550;display:flex}.share-input.svelte-vb71yz{color:var(--muted);align-items:center;gap:7px;font-size:15px;display:flex}.share-input.svelte-vb71yz input:where(.svelte-vb71yz){text-align:right;background:var(--surface);width:74px;height:38px}.share-common.svelte-vb71yz{text-align:right;color:var(--muted);font-variant-numeric:tabular-nums;font-size:14px}.share-common.over.svelte-vb71yz{color:var(--red)}@media (width<=650px){.pool-list.svelte-vb71yz{grid-template-columns:1fr}.share-row.svelte-vb71yz{grid-template-columns:1fr auto}.share-common.svelte-vb71yz{text-align:left;grid-column:1/-1;margin-top:-4px}}.once.svelte-1w1aal7{color:var(--yellow);align-items:center;gap:9px;margin:0 0 16px;font-size:15px;display:flex}.once.svelte-1w1aal7 svg{flex-shrink:0}.key-field.svelte-1w1aal7{background:var(--background);border:1px solid #3c5279;border-radius:11px;align-items:center;gap:12px;margin:0 0 18px;padding:12px 12px 12px 16px;display:flex}.key-field.svelte-1w1aal7 code:where(.svelte-1w1aal7){overflow-wrap:anywhere;-webkit-user-select:all;user-select:all;flex:1;min-width:0;font-size:15px;line-height:1.5}@media (width<=650px){.key-field.svelte-1w1aal7{flex-direction:column;align-items:stretch}}.stats.svelte-1gmdt1j{margin-bottom:30px}.section-toolbar.svelte-1gmdt1j{flex-wrap:wrap}.section-title.svelte-1gmdt1j,.info.svelte-1gmdt1j{align-items:center;gap:8px;display:inline-flex}.section-title.svelte-1gmdt1j{font-family:var(--font-display);font-size:23px;font-weight:600}.info.svelte-1gmdt1j{color:var(--faint);cursor:help}.info.svelte-1gmdt1j:hover{color:var(--blue)}.periods.svelte-1gmdt1j{border:1px solid var(--border);background:var(--background);border-radius:10px;padding:3px;display:inline-flex}.periods.svelte-1gmdt1j button:where(.svelte-1gmdt1j){min-height:32px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:7px;padding:4px 13px;font-size:14px;font-weight:550}.periods.svelte-1gmdt1j button.active:where(.svelte-1gmdt1j){background:var(--surface);color:var(--text);box-shadow:0 0 0 1px var(--border)}.stats-card.svelte-1gmdt1j{gap:20px;padding:20px;display:grid}.tiles.svelte-1gmdt1j{grid-template-columns:repeat(4,1fr);gap:12px;display:grid}.tiles.svelte-1gmdt1j div:where(.svelte-1gmdt1j){gap:4px;display:grid}.tiles.svelte-1gmdt1j span:where(.svelte-1gmdt1j){color:var(--muted);font-size:14px}.tiles.svelte-1gmdt1j strong:where(.svelte-1gmdt1j){font-family:var(--font-display);letter-spacing:-.02em;font-size:26px;font-weight:650}.bad.svelte-1gmdt1j{color:var(--red)}.chart.svelte-1gmdt1j{gap:6px;padding-top:18px;display:grid;position:relative}.peak.svelte-1gmdt1j{color:var(--faint);font-size:12px;position:absolute;top:0;left:0}.columns.svelte-1gmdt1j{grid-template-columns:repeat(var(--count), 1fr);border-bottom:1px solid var(--border);background:repeating-linear-gradient(0deg,#0000 0 39px,#25334c66 39px 40px);align-items:end;gap:2px;height:120px;display:grid}.column.svelte-1gmdt1j{cursor:default;background:0 0;border:0;align-items:flex-end;height:100%;padding:0;display:flex}.column.dim.svelte-1gmdt1j .bar:where(.svelte-1gmdt1j){opacity:.45}.bar.svelte-1gmdt1j{border-radius:4px 4px 0 0;flex-direction:column-reverse;width:100%;min-height:0;transition:opacity .12s;display:flex;overflow:hidden}.piece.svelte-1gmdt1j{flex-basis:0;min-height:1px}.piece.svelte-1gmdt1j+.piece:where(.svelte-1gmdt1j){box-shadow:inset 0 -2px 0 var(--surface)}.axis.svelte-1gmdt1j{color:var(--faint);justify-content:space-between;font-size:12px;display:flex}.tip.svelte-1gmdt1j{z-index:2;border:1px solid var(--border);pointer-events:none;background:#0b1325f2;border-radius:9px;min-width:150px;padding:9px 11px;font-size:13px;position:absolute;top:4px;transform:translate(8px);box-shadow:0 8px 24px #02061099}.tip.right.svelte-1gmdt1j{transform:translate(calc(-100% - 8px))}.tip.svelte-1gmdt1j p:where(.svelte-1gmdt1j){margin:0}.tip.svelte-1gmdt1j p:where(.svelte-1gmdt1j):first-child{color:var(--muted);margin-bottom:5px}.tip-row.svelte-1gmdt1j{align-items:center;gap:7px;display:flex}.tip-row.svelte-1gmdt1j strong:where(.svelte-1gmdt1j){margin-left:auto;padding-left:12px;font-weight:600}.tip.svelte-1gmdt1j i:where(.svelte-1gmdt1j),.who.svelte-1gmdt1j i:where(.svelte-1gmdt1j){border-radius:3px;flex-shrink:0;width:10px;height:10px}.rows.svelte-1gmdt1j{border-top:1px solid var(--border);display:grid}.client-row.svelte-1gmdt1j+.client-row:where(.svelte-1gmdt1j){border-top:1px solid var(--border)}.row-head.svelte-1gmdt1j{width:100%;min-height:52px;color:var(--text);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;grid-template-columns:minmax(120px,1.2fr) minmax(120px,1.4fr) repeat(4,minmax(70px,auto)) minmax(110px,auto) 18px;align-items:center;gap:14px;padding:8px 4px;font-size:14px;display:grid}.row-head.svelte-1gmdt1j:disabled{cursor:default}.row-head.svelte-1gmdt1j:not(:disabled):hover{background:#17243b80}.row-head.svelte-1gmdt1j .chevron{color:var(--faint);transition:transform .15s}.row-head[aria-expanded=true].svelte-1gmdt1j .chevron{transform:rotate(180deg)}.who.svelte-1gmdt1j{align-items:center;gap:9px;min-width:0;display:flex}.who.svelte-1gmdt1j strong:where(.svelte-1gmdt1j){text-overflow:ellipsis;white-space:nowrap;font-size:15px;font-weight:600;overflow:hidden}.idle.svelte-1gmdt1j .who:where(.svelte-1gmdt1j) strong:where(.svelte-1gmdt1j){color:var(--muted);font-weight:500}.share.svelte-1gmdt1j{grid-template-columns:1fr 52px;align-items:center;gap:10px;display:grid}.share.svelte-1gmdt1j>.tabular:where(.svelte-1gmdt1j){text-align:right}.share-track.svelte-1gmdt1j{background:#2a3a55;border-radius:4px;height:8px;overflow:hidden}.share-track.svelte-1gmdt1j span:where(.svelte-1gmdt1j){border-radius:4px;height:100%;display:block}.figure.svelte-1gmdt1j{white-space:nowrap}.figure.svelte-1gmdt1j b:where(.svelte-1gmdt1j){font-weight:600}.idle-label.svelte-1gmdt1j{color:var(--muted);grid-column:3/-1}.muted.svelte-1gmdt1j{color:var(--muted)}.models.svelte-1gmdt1j{border:1px solid var(--border);border-radius:10px;margin:0 4px 12px;display:grid;overflow:hidden}.model.svelte-1gmdt1j{grid-template-columns:minmax(170px,2fr) repeat(6,minmax(60px,1fr));gap:10px;padding:8px 12px;font-size:14px;display:grid}.model.svelte-1gmdt1j>span:where(.svelte-1gmdt1j):not(.model-name){text-align:right}.model.svelte-1gmdt1j+.model:where(.svelte-1gmdt1j){border-top:1px solid var(--border)}.model.head.svelte-1gmdt1j{color:var(--muted);background:#17243b80;font-size:13px}.model.head.svelte-1gmdt1j>span:where(.svelte-1gmdt1j):first-child{text-align:left}.model-name.svelte-1gmdt1j{overflow-wrap:anywhere;align-items:center;gap:8px;min-width:0;display:flex}.empty.svelte-1gmdt1j{color:var(--muted);margin:0;padding:16px 4px 0}@media (width<=900px){.tiles.svelte-1gmdt1j{grid-template-columns:repeat(2,1fr)}.row-head.svelte-1gmdt1j{grid-template-columns:1fr auto auto 18px;row-gap:6px}.share.svelte-1gmdt1j{grid-area:2/1/auto/-1}.row-head.svelte-1gmdt1j .figure.muted:where(.svelte-1gmdt1j),.errors.svelte-1gmdt1j{display:none}.idle-label.svelte-1gmdt1j{grid-column:2/-1}.models.svelte-1gmdt1j{overflow-x:auto}.model.svelte-1gmdt1j{min-width:620px}}.page-description.svelte-15ihc32 .state-badge:where(.svelte-15ihc32){gap:7px}.client-grid.svelte-15ihc32{grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:16px;display:grid}.client-card.svelte-15ihc32{border:1px solid var(--border);border-top:3px solid var(--client);background:var(--surface);border-radius:14px;flex-direction:column;gap:14px;padding:20px 20px 22px;display:flex}.client-card.svelte-15ihc32 header:where(.svelte-15ihc32){justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.client-title.svelte-15ihc32{flex-wrap:wrap;align-items:center;gap:6px 10px;min-width:0;padding-top:6px;display:flex}.client-dot.svelte-15ihc32{background:var(--client);border-radius:50%;width:10px;height:10px}.client-title.svelte-15ihc32 h2:where(.svelte-15ihc32){font-family:var(--font-display);letter-spacing:-.03em;overflow-wrap:anywhere;font-size:22px;font-weight:650}.client-title.svelte-15ihc32 code:where(.svelte-15ihc32){border:1px solid var(--border);background:var(--background);color:var(--muted);border-radius:6px;padding:2px 7px;font-size:13px}.card-actions.svelte-15ihc32{margin:-4px -8px 0 0;display:flex}.icon-button.danger.svelte-15ihc32:hover{color:var(--red)}.access.svelte-15ihc32,.shares.svelte-15ihc32{flex-wrap:wrap;gap:7px;display:flex}.tag.svelte-15ihc32,.share-chip.svelte-15ihc32{border:1px solid var(--border);border-radius:8px;align-items:center;gap:7px;padding:4px 10px 4px 7px;font-size:14px;display:inline-flex}.tag.strong.svelte-15ihc32{color:#c4d3ff;background:#5478f61c;border-color:#7899ff40;padding-left:10px}.tag.muted.svelte-15ihc32{padding-left:10px}.share-chip.svelte-15ihc32{border-color:color-mix(in srgb, var(--client) 45%, transparent);background:color-mix(in srgb, var(--client) 12%, transparent);color:var(--text);border-radius:999px;padding-left:9px}.share-chip.svelte-15ihc32 svg{color:var(--client)}.share-chip.svelte-15ihc32 strong:where(.svelte-15ihc32){color:var(--text);font-weight:600}.pool-usage.svelte-15ihc32{border-top:1px solid var(--border);padding-top:12px}.pool-name.svelte-15ihc32{align-items:center;gap:8px;margin:0 0 9px;font-size:15px;font-weight:550;display:flex}.usage-line.svelte-15ihc32{grid-template-columns:54px 1fr 74px;align-items:center;gap:12px;min-height:26px;display:grid}.kind.svelte-15ihc32{color:var(--muted);font-size:14px}.usage-track.svelte-15ihc32{background:#2a3a55;border-radius:4px;height:7px;position:relative}.usage-fill.svelte-15ihc32{border-radius:inherit;background:var(--client);position:absolute;inset:0 auto 0 0}.share-mark.svelte-15ihc32{background:var(--text);border-radius:1px;width:2px;margin-left:-1px;position:absolute;top:-4px;bottom:-4px}.usage-value.svelte-15ihc32{text-align:right;font-size:14px}.usage-value.over.svelte-15ihc32{color:var(--yellow)}.no-usage.svelte-15ihc32{margin:0}.section-toolbar.svelte-15ihc32{flex-wrap:wrap;margin-top:38px}.section-title.svelte-15ihc32,.info.svelte-15ihc32{align-items:center;gap:8px;display:inline-flex}.section-title.svelte-15ihc32{font-family:var(--font-display);font-size:23px;font-weight:600}.info.svelte-15ihc32{color:var(--faint);cursor:help}.info.svelte-15ihc32:hover{color:var(--blue)}.legend.svelte-15ihc32{color:var(--muted);flex-wrap:wrap;gap:8px 16px;font-size:14px;display:flex}.legend.svelte-15ihc32 span:where(.svelte-15ihc32){align-items:center;gap:7px;display:inline-flex}.legend.svelte-15ihc32 i:where(.svelte-15ihc32){border-radius:3px;width:11px;height:11px}.rest.svelte-15ihc32,.segment.rest.svelte-15ihc32{background:repeating-linear-gradient(135deg,#55688a 0 3px,#0000 3px 6px)}.legend.svelte-15ihc32 i.rest:where(.svelte-15ihc32){outline-offset:-1px;outline:1px solid #55688a}.breakdown.svelte-15ihc32{gap:16px;display:grid}.group-heading.svelte-15ihc32{border-bottom:1px solid var(--border);background:#17243b80;align-items:center;gap:10px;padding:14px 20px;display:flex}.group-heading.svelte-15ihc32 h3:where(.svelte-15ihc32){margin:0;font-size:16px;font-weight:600}.account-usage.svelte-15ihc32{grid-template-columns:minmax(130px,190px) 1fr;gap:18px;padding:14px 20px;display:grid}.account-usage.svelte-15ihc32+.account-usage:where(.svelte-15ihc32){border-top:1px solid var(--border)}.account-label.svelte-15ihc32{overflow-wrap:anywhere;margin:4px 0 0;font-size:15px;font-weight:550}.windows.svelte-15ihc32{gap:8px;display:grid}.window-row.svelte-15ihc32{grid-template-columns:54px 1fr 92px 230px;align-items:center;gap:14px;min-height:28px;display:grid}.stack.svelte-15ihc32{background:#2a3a55;border-radius:4px;height:12px;display:flex;overflow:hidden}.segment.svelte-15ihc32{height:100%}.segment.svelte-15ihc32+.segment:where(.svelte-15ihc32){box-shadow:inset 2px 0 0 var(--surface)}.used.svelte-15ihc32{text-align:right;font-size:14px}.reset.svelte-15ihc32{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;align-items:center;gap:6px;font-size:14px;display:flex;overflow:hidden}.reset.svelte-15ihc32 svg{color:var(--faint);flex-shrink:0}.empty-breakdown.svelte-15ihc32{color:var(--muted);margin:0;padding:22px 20px;font-size:15px}.open-warning.svelte-15ihc32{color:var(--yellow)}@media (width<=900px){.account-usage.svelte-15ihc32{grid-template-columns:1fr;gap:10px}}@media (width<=650px){.client-grid.svelte-15ihc32{grid-template-columns:1fr}.window-row.svelte-15ihc32{grid-template-columns:48px 1fr 80px}.reset.svelte-15ihc32{grid-column:2/-1;margin-top:-4px}.account-usage.svelte-15ihc32,.group-heading.svelte-15ihc32{padding-inline:16px}}.overview-stats.svelte-15ozkp9{border:1px solid var(--border);background:var(--surface);border-radius:14px;grid-template-columns:repeat(5,1fr);margin:28px 0 34px;display:grid}.overview-stats.svelte-15ozkp9>div:where(.svelte-15ozkp9){border-right:1px solid var(--border);padding:24px 20px}.overview-stats.svelte-15ozkp9>div:where(.svelte-15ozkp9):last-child{border:0}.overview-stats.svelte-15ozkp9 p:where(.svelte-15ozkp9){color:var(--muted);margin:0 0 15px;font-size:15px}.overview-stats.svelte-15ozkp9 strong:where(.svelte-15ozkp9){font-family:var(--font-display);letter-spacing:-.045em;font-variant-numeric:tabular-nums;font-size:34px;font-weight:600;display:block}.overview-stats.svelte-15ozkp9 span:where(.svelte-15ozkp9){color:var(--faint);margin-top:12px;font-size:15px;display:block}.inline-provider.svelte-15ozkp9{align-items:center;gap:8px;display:inline-flex}.http-status.svelte-15ozkp9{color:var(--green);background:#4dd4ac09;border:1px solid #4dd4ac20;border-radius:6px;padding:4px 7px;font-size:15px}.http-status.error.svelte-15ozkp9{color:var(--red);background:#ff819509;border-color:#ff819530}.account-filename.svelte-15ozkp9{font-family:var(--account-font);color:var(--muted);margin-top:5px;font-size:15px}.inline-error.svelte-15ozkp9{max-width:400px;color:var(--red);font-size:15px}.check-label.svelte-15ozkp9{color:var(--muted);align-items:center;gap:8px;font-size:15px;display:inline-flex}.check-label.svelte-15ozkp9 input:where(.svelte-15ozkp9){accent-color:var(--primary)}.table-scroll.svelte-15ozkp9{overflow-x:auto}.client-tag.svelte-15ozkp9{color:#c4d3ff;vertical-align:1px;background:#5478f61c;border:1px solid #7899ff40;border-radius:6px;margin-left:9px;padding:1px 8px;font-size:13px;display:inline-block}.setup-guide.svelte-15ozkp9 .key-required:where(.svelte-15ozkp9){color:var(--yellow)}.setup-guide.svelte-15ozkp9{max-width:760px;margin-top:30px}.setup-guide.svelte-15ozkp9 section:where(.svelte-15ozkp9){border-bottom:1px solid var(--border);gap:22px;padding:28px 0;display:flex}.setup-guide.svelte-15ozkp9 section:where(.svelte-15ozkp9):first-child{padding-top:0}.setup-guide.svelte-15ozkp9 h2:where(.svelte-15ozkp9){margin:5px 0 12px;font-size:16px}.setup-guide.svelte-15ozkp9 p:where(.svelte-15ozkp9){color:var(--muted);max-width:600px;font-size:15px;line-height:1.7}.copy-field.svelte-15ozkp9{border:1px solid var(--border);background:var(--surface);border-radius:10px;justify-content:space-between;align-items:center;margin:18px 0;padding:9px 13px;display:flex}.tool-tabs.svelte-15ozkp9{flex-wrap:wrap;gap:12px;display:flex}.setup-guide.svelte-15ozkp9 section:where(.svelte-15ozkp9)>div:where(.svelte-15ozkp9){width:100%;min-width:0}.setup-guide.svelte-15ozkp9 h2:where(.svelte-15ozkp9){font-size:20px}.copy-field.svelte-15ozkp9 code:where(.svelte-15ozkp9){overflow-wrap:anywhere;font-size:16px}.config-code.svelte-15ozkp9{align-items:flex-start;gap:12px}.config-code.svelte-15ozkp9 pre:where(.svelte-15ozkp9){white-space:pre-wrap;overflow-wrap:anywhere;min-width:0;margin:7px 0;line-height:1.8}@media (width<=780px){.check-label.svelte-15ozkp9{flex-basis:100%}}@media (width<=700px){.overview-stats.svelte-15ozkp9{grid-template-columns:repeat(2,1fr)}.overview-stats.svelte-15ozkp9>div:where(.svelte-15ozkp9){border-bottom:1px solid var(--border);padding:18px}.overview-stats.svelte-15ozkp9 strong:where(.svelte-15ozkp9){font-size:26px}}.language-setting.svelte-mf2zd9{border-top:1px solid var(--border);grid-template-columns:245px 1fr;gap:34px;max-width:1060px;margin-top:30px;padding:30px 0;display:grid}h2.svelte-mf2zd9{margin:0 0 9px;font-size:16px}p.svelte-mf2zd9{color:var(--muted);margin:0;font-size:15px;line-height:1.65}.language-field.svelte-mf2zd9{justify-content:flex-end;align-items:center;gap:11px;display:flex}.language-field.svelte-mf2zd9 svg{color:var(--muted);flex-shrink:0}select.svelte-mf2zd9{width:240px;font-size:15px}@media (width<=1150px){.language-setting.svelte-mf2zd9{grid-template-columns:1fr;gap:22px}}@media (width<=650px){select.svelte-mf2zd9{flex:1;width:auto;min-width:0}}.backup-setting.svelte-1h3frll{border-top:1px solid var(--border);grid-template-columns:245px 1fr;gap:34px;max-width:1060px;margin-top:30px;padding:30px 0 0;display:grid}h2.svelte-1h3frll{margin:0 0 9px;font-size:16px}p.svelte-1h3frll{color:var(--muted);margin:0;font-size:15px;line-height:1.65}.backup-body.svelte-1h3frll{align-content:start;gap:16px;display:grid}.backup-warning.svelte-1h3frll{border:1px solid color-mix(in srgb,var(--yellow) 28%,transparent);background:color-mix(in srgb,var(--yellow) 6%,transparent);color:var(--text);border-radius:12px;align-items:flex-start;gap:11px;padding:14px 16px;display:flex}.backup-warning.svelte-1h3frll svg{color:var(--yellow);flex-shrink:0;margin-top:3px}.backup-actions.svelte-1h3frll{flex-wrap:wrap;justify-content:flex-end;gap:10px;display:flex}.file-input.svelte-1h3frll{display:none}.backup-error.svelte-1h3frll{color:var(--red)}.restore-confirmation.svelte-1h3frll{border:1px solid var(--border);background:var(--surface);border-radius:12px;gap:14px;padding:16px;display:grid}.restore-confirmation.svelte-1h3frll p:where(.svelte-1h3frll){color:var(--text)}.settings-choice.svelte-1h3frll{cursor:pointer;align-items:center;gap:10px;font-size:15px;display:flex}.settings-choice.svelte-1h3frll input:where(.svelte-1h3frll){width:auto;height:auto;accent-color:var(--primary);margin:0}.confirmation-actions.svelte-1h3frll{flex-wrap:wrap;justify-content:flex-end;gap:10px;display:flex}@media (width<=1150px){.backup-setting.svelte-1h3frll{grid-template-columns:1fr;gap:22px}}@media (width<=650px){.backup-actions.svelte-1h3frll .button:where(.svelte-1h3frll),.confirmation-actions.svelte-1h3frll .button:where(.svelte-1h3frll){flex:1}}.session-note.svelte-eyvqa5{color:var(--muted);border:1px solid var(--border);background:var(--surface);border-radius:12px;align-items:flex-start;gap:12px;max-width:1060px;margin:24px 0 0;padding:16px 18px;font-size:15px;line-height:1.65;display:flex}.session-note.svelte-eyvqa5 svg{color:var(--blue);flex-shrink:0;margin-top:2px}.settings-form.svelte-eyvqa5{max-width:1060px;margin-top:32px}.settings-section.svelte-eyvqa5{border-bottom:1px solid var(--border);grid-template-columns:245px 1fr;gap:34px;padding:30px 0;display:grid}.settings-section.svelte-eyvqa5:first-child{padding-top:0}.settings-section.svelte-eyvqa5 h2:where(.svelte-eyvqa5){margin:0 0 9px;font-size:16px}.settings-section.svelte-eyvqa5 p:where(.svelte-eyvqa5){color:var(--muted);margin:0;font-size:15px;line-height:1.65}.strategy-options.svelte-eyvqa5{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.strategy-option.svelte-eyvqa5{border:1px solid var(--border);background:var(--surface);cursor:pointer;border-radius:12px;align-items:flex-start;gap:12px;min-height:126px;padding:18px 16px;display:flex}.strategy-option.svelte-eyvqa5:hover{border-color:#3c5279}.strategy-option.chosen.svelte-eyvqa5{border-color:var(--blue);background:#5478f613;box-shadow:inset 0 0 0 1px #7899ff22}.strategy-option.svelte-eyvqa5 input:where(.svelte-eyvqa5){width:auto;height:auto;accent-color:var(--primary);flex-shrink:0;margin:3px 0 0}.strategy-option.svelte-eyvqa5 span:where(.svelte-eyvqa5){font-size:15px;font-weight:550;line-height:1.3}.strategy-option.svelte-eyvqa5 small:where(.svelte-eyvqa5){color:var(--muted);margin-top:8px;font-size:15px;font-weight:400;line-height:1.55;display:block}.settings-fields.svelte-eyvqa5{gap:20px;display:grid}.settings-fields.svelte-eyvqa5>label:where(.svelte-eyvqa5){grid-template-columns:1fr 240px;align-items:center;gap:18px;font-size:15px;display:grid}.provider-fields.svelte-eyvqa5{border:1px solid var(--border);background:var(--surface);border-radius:12px;gap:0;overflow:hidden}.provider-fields.svelte-eyvqa5>label:where(.svelte-eyvqa5){border-bottom:1px solid var(--border);padding:13px 16px}.provider-fields.svelte-eyvqa5>label:where(.svelte-eyvqa5):last-child{border-bottom:0}.provider-label.svelte-eyvqa5{align-items:center;gap:11px;font-size:15px;display:flex}.provider-fields.svelte-eyvqa5 select:where(.svelte-eyvqa5){font-size:15px}.unit-field.svelte-eyvqa5{color:var(--muted);align-items:center;gap:10px;font-size:15px;display:flex}.unit-field.svelte-eyvqa5 input:where(.svelte-eyvqa5){width:115px}.settings-footer.svelte-eyvqa5{justify-content:flex-end;margin-top:25px;display:flex}@media (width<=1150px){.settings-section.svelte-eyvqa5{grid-template-columns:1fr;gap:22px}.settings-section.svelte-eyvqa5>div:where(.svelte-eyvqa5):first-child{max-width:600px}}@media (width<=650px){.strategy-options.svelte-eyvqa5{grid-template-columns:1fr}.strategy-option.svelte-eyvqa5{min-height:0;padding:16px}.strategy-option.svelte-eyvqa5 small:where(.svelte-eyvqa5){font-size:15px}.settings-fields.svelte-eyvqa5>label:where(.svelte-eyvqa5){grid-template-columns:1fr;gap:10px}.provider-fields.svelte-eyvqa5>label:where(.svelte-eyvqa5){grid-template-columns:1fr 170px;gap:10px;padding:13px 12px}.provider-label.svelte-eyvqa5{gap:8px;font-size:15px}.provider-fields.svelte-eyvqa5 select:where(.svelte-eyvqa5){width:100%;padding:0 7px}.settings-footer.svelte-eyvqa5 .button:where(.svelte-eyvqa5){width:100%}.session-note.svelte-eyvqa5{padding:15px}}.connect-dialog.svelte-1xsbe8v{width:min(640px,100vw - 32px);max-height:calc(100dvh - 32px);color:var(--text);background:var(--surface);border:1px solid #35496b;border-radius:18px;padding:28px;overflow-y:auto;box-shadow:0 24px 80px #030711b0}.connect-dialog.svelte-1xsbe8v::backdrop{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#030711b5}.dialog-heading.svelte-1xsbe8v{z-index:2;background:var(--surface);justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:8px;padding-bottom:18px;display:flex;position:sticky;top:0}.dialog-heading.svelte-1xsbe8v h2:where(.svelte-1xsbe8v){font-family:var(--font-display);letter-spacing:-.035em;margin:0 0 8px;font-size:26px;font-weight:650}.dialog-heading.svelte-1xsbe8v p:where(.svelte-1xsbe8v),.dialog-import.svelte-1xsbe8v p:where(.svelte-1xsbe8v){color:var(--muted);margin:0;font-size:15px;line-height:1.5}.provider-options.svelte-1xsbe8v{grid-template-columns:repeat(2,minmax(0,1fr));gap:11px;display:grid}.provider-option.svelte-1xsbe8v{border:1px solid var(--border);background:var(--background);text-align:left;border-radius:12px;align-items:center;gap:12px;min-height:86px;padding:15px 12px;display:flex}.provider-option.svelte-1xsbe8v:hover{background:var(--surface-raised);border-color:#5576ad}.provider-option.svelte-1xsbe8v>span:where(.svelte-1xsbe8v):not(.provider-logo){flex:1;font-size:15px;font-weight:550}.provider-logo.svelte-1xsbe8v{flex-shrink:0;justify-content:center;align-items:center;width:36px;display:flex}.provider-option.svelte-1xsbe8v small:where(.svelte-1xsbe8v){color:var(--muted);margin-top:5px;font-size:15px;font-weight:400;line-height:1.5;display:block}.provider-option.svelte-1xsbe8v svg{color:var(--faint);flex-shrink:0}.dialog-import.svelte-1xsbe8v{border-top:1px solid var(--border);align-items:center;gap:18px;margin-top:24px;padding-top:22px;display:flex}.dialog-import.svelte-1xsbe8v h3:where(.svelte-1xsbe8v){margin:0 0 6px;font-size:15px}.oauth-flow.svelte-1xsbe8v>p:where(.svelte-1xsbe8v){color:var(--muted);font-size:15px;line-height:1.6}.oauth-flow.svelte-1xsbe8v .flow-hint:where(.svelte-1xsbe8v){margin-top:24px;font-size:15px}.oauth-flow.svelte-1xsbe8v form:where(.svelte-1xsbe8v){gap:10px;display:grid}.oauth-flow.svelte-1xsbe8v label:where(.svelte-1xsbe8v){font-size:15px}.oauth-flow.svelte-1xsbe8v input:where(.svelte-1xsbe8v),.oauth-flow.svelte-1xsbe8v select:where(.svelte-1xsbe8v){width:100%}.oauth-flow.svelte-1xsbe8v code:where(.svelte-1xsbe8v){font-size:14px}.flow-controls.svelte-1xsbe8v{flex-wrap:wrap;gap:8px;margin-top:18px;display:flex}.device-code.svelte-1xsbe8v{border:1px solid var(--border);background:var(--background);border-radius:10px;justify-content:space-between;align-items:center;margin:20px 0;padding:14px 17px;display:flex}.device-code.svelte-1xsbe8v>span:where(.svelte-1xsbe8v){font-family:var(--font-display);letter-spacing:.08em;font-size:28px}.connection-success.svelte-1xsbe8v{text-align:center;padding:15px 0}.connection-success.svelte-1xsbe8v>span:where(.svelte-1xsbe8v){width:50px;height:50px;color:var(--green);background:#10b98115;border-radius:50%;place-items:center;display:inline-grid}.connection-success.svelte-1xsbe8v h3:where(.svelte-1xsbe8v){font-size:18px}.connection-success.svelte-1xsbe8v p:where(.svelte-1xsbe8v){color:var(--muted);margin-bottom:24px;font-size:15px}@media (width<=600px){.connect-dialog.svelte-1xsbe8v{border-radius:15px;padding:22px 18px}.dialog-heading.svelte-1xsbe8v h2:where(.svelte-1xsbe8v){font-size:24px}.provider-options.svelte-1xsbe8v{grid-template-columns:1fr;gap:9px}.provider-option.svelte-1xsbe8v{gap:15px;min-height:75px;padding:13px 15px}.provider-option.svelte-1xsbe8v>span:where(.svelte-1xsbe8v):not(.provider-logo),.provider-option.svelte-1xsbe8v small:where(.svelte-1xsbe8v){font-size:15px}.dialog-import.svelte-1xsbe8v{flex-direction:column;align-items:flex-start}} +.provider-mark.svelte-1vulm01{color:inherit;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}img.svelte-1vulm01{object-fit:contain;width:100%;height:100%;display:block}.light-mat.svelte-1vulm01{background:#eaf0ff;border-radius:5px;padding:2px}.meter-label.svelte-1dmbtuk{color:var(--muted);justify-content:space-between;gap:14px;margin-bottom:9px;font-size:15px;display:flex}.meter-label.svelte-1dmbtuk span:where(.svelte-1dmbtuk):last-child{color:var(--text);white-space:nowrap}.meter-track.svelte-1dmbtuk{background:#2a3a55;border-radius:4px;height:7px;overflow:hidden}.meter-fill.svelte-1dmbtuk{background:var(--green);border-radius:inherit;height:100%}.meter-fill.medium.svelte-1dmbtuk{background:var(--yellow)}.meter-fill.low.svelte-1dmbtuk{background:var(--red)}.compact.svelte-1dmbtuk .meter-label:where(.svelte-1dmbtuk){display:none}.compact.svelte-1dmbtuk .meter-track:where(.svelte-1dmbtuk){height:5px}.account-name.svelte-6htcw3{text-align:left;background:0 0;border:0;align-items:center;gap:9px;max-width:100%;padding:3px 0;font-size:17px;font-weight:600;line-height:1.45;display:inline-flex}.account-name.svelte-6htcw3 span:where(.svelte-6htcw3){overflow-wrap:anywhere}.account-name.svelte-6htcw3 svg{color:var(--faint);opacity:.55;flex-shrink:0}.account-name.svelte-6htcw3:hover{color:var(--blue)}.account-name.svelte-6htcw3:hover svg,.account-name.svelte-6htcw3:focus-visible svg{opacity:1}.name-editor.svelte-6htcw3{flex-wrap:wrap;align-items:center;gap:6px;max-width:100%;display:flex}.name-editor.svelte-6htcw3 input:where(.svelte-6htcw3){flex:1;width:100%;min-width:120px;height:44px;font-size:16px}.name-actions.svelte-6htcw3{display:flex}.rename-error.svelte-6htcw3{color:var(--red);flex-basis:100%;margin:4px 0;font-size:15px;line-height:1.5}.private-email.svelte-1n2y5u{max-width:100%;color:var(--muted);text-align:left;background:0 0;border:0;align-items:center;gap:10px;padding:5px 0;font-size:15px;line-height:1.4;display:flex}.private-email.svelte-1n2y5u span:where(.svelte-1n2y5u){overflow-wrap:anywhere}.blurred.svelte-1n2y5u{filter:blur(5px);-webkit-user-select:none;user-select:none}.private-email.svelte-1n2y5u svg{color:var(--faint);flex-shrink:0}.private-email.svelte-1n2y5u:hover{color:var(--text)}.reset-control.svelte-zw103y{flex-wrap:wrap;align-items:center;gap:8px;margin-top:15px;display:flex}.reset-button.svelte-zw103y{min-height:42px;padding:8px 11px;font-size:15px}.reset-status.svelte-zw103y{color:var(--muted);font-size:15px}.reset-retry.svelte-zw103y{color:var(--blue);background:0 0;border:0;padding:4px 0;font-size:15px}.reset-error.svelte-zw103y{color:var(--red);overflow-wrap:anywhere;flex-basis:100%;margin:6px 0;font-size:15px;line-height:1.5}dialog.svelte-zw103y{border:1px solid var(--border);background:var(--surface);width:100%;max-width:min(520px,100vw - 32px);color:var(--text);border-radius:16px;padding:0;box-shadow:0 24px 100px #0008}dialog.svelte-zw103y::backdrop{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#030711b5}.reset-dialog.svelte-zw103y{padding:25px}.reset-dialog.svelte-zw103y header:where(.svelte-zw103y){justify-content:space-between;align-items:center;gap:15px;display:flex}.reset-dialog.svelte-zw103y h2:where(.svelte-zw103y){font-family:var(--font-display);font-size:24px}.reset-dialog.svelte-zw103y p:where(.svelte-zw103y){color:var(--muted);font-size:16px;line-height:1.6}.reset-dialog.svelte-zw103y .reset-account:where(.svelte-zw103y){color:var(--text);font-weight:600}.reset-dialog.svelte-zw103y .reset-error:where(.svelte-zw103y){color:var(--red)}.reset-dialog.svelte-zw103y .reset-result:where(.svelte-zw103y){color:var(--green)}.dialog-actions.svelte-zw103y{flex-wrap:wrap;justify-content:flex-end;gap:10px;margin-top:24px;display:flex}@media (width<=650px){.reset-dialog.svelte-zw103y{padding:20px}.dialog-actions.svelte-zw103y .button:where(.svelte-zw103y){flex:1}.reset-dialog.svelte-zw103y h2:where(.svelte-zw103y){font-size:22px}}.empty-state.svelte-18g3sj1{text-align:center;flex-direction:column;justify-content:center;align-items:center;min-height:260px;padding:36px 20px;display:flex}.empty-icon.svelte-18g3sj1{width:52px;height:52px;color:var(--blue);background:#5478f610;border:1px solid #7899ff30;border-radius:14px;place-items:center;margin-bottom:18px;display:grid}h3.svelte-18g3sj1{font-family:var(--font-display);letter-spacing:-.025em;margin:0 0 9px;font-size:19px;font-weight:600}p.svelte-18g3sj1{color:var(--muted);max-width:380px;margin:0 0 20px;font-size:15px;line-height:1.6}.quota-toolbar.svelte-137c7x1{justify-content:flex-end;margin:20px 0 26px}.quota-toolbar.svelte-137c7x1>select:where(.svelte-137c7x1){background:var(--surface);font-size:15px}.provider-groups.svelte-137c7x1{gap:30px;display:grid}.provider-heading.svelte-137c7x1{align-items:center;gap:12px;margin:0 0 14px;display:flex}.provider-heading.svelte-137c7x1 h2:where(.svelte-137c7x1){font-family:var(--font-display);font-size:23px;font-weight:600}.provider-heading.svelte-137c7x1>span:where(.svelte-137c7x1){color:var(--muted);margin-left:auto;font-size:15px}.display-choice.svelte-137c7x1{color:var(--muted);align-items:center;gap:10px;margin-left:10px;font-size:15px;display:flex}.display-choice.svelte-137c7x1 select:where(.svelte-137c7x1){background:var(--surface);font-size:15px}.windows-toggle[aria-expanded=true].svelte-137c7x1{border-color:var(--primary);color:var(--text)}.window-choices.svelte-137c7x1{border:1px solid var(--border);background:var(--surface);border-radius:12px;gap:4px;margin:0 0 14px;padding:10px 16px;display:grid}.window-choice.svelte-137c7x1{align-items:center;gap:14px;min-height:48px;display:flex}.window-choice.svelte-137c7x1+.window-choice:where(.svelte-137c7x1){border-top:1px solid var(--border)}.window-name.svelte-137c7x1{flex:1;min-width:0;font-size:16px}.hidden-window.svelte-137c7x1 .window-name:where(.svelte-137c7x1){color:var(--muted)}.primary-choice.svelte-137c7x1{min-height:36px;color:var(--muted);background:0 0;border:1px solid #0000;border-radius:9px;align-items:center;gap:7px;padding:0 11px;font-size:15px;display:inline-flex}.primary-choice.svelte-137c7x1:hover:not(:disabled){border-color:var(--border);color:var(--text)}.primary-choice.on.svelte-137c7x1{border-color:var(--primary);color:var(--text)}.primary-choice.on.svelte-137c7x1 svg{color:var(--primary);fill:var(--primary)}.window-default.svelte-137c7x1{color:var(--muted);margin:6px 0 4px;font-size:15px}.quota-row.svelte-137c7x1{border-bottom:1px solid var(--border);grid-template-columns:minmax(220px,.8fr) minmax(320px,1.8fr) auto;align-items:center;gap:26px;padding:25px 24px;display:grid}.quota-row.svelte-137c7x1:last-child{border-bottom:0}.account-identity.svelte-137c7x1{min-width:0}.account-plan.svelte-137c7x1{color:var(--muted);margin:4px 0;font-size:15px}.quota-details.svelte-137c7x1{min-width:0}.verification-needed.svelte-137c7x1{justify-items:start;gap:12px;margin-bottom:16px;display:grid}.verification-needed.svelte-137c7x1 p:where(.svelte-137c7x1){color:var(--muted);margin:0;font-size:16px;line-height:1.5}.quota-windows.svelte-137c7x1{grid-template-columns:repeat(2,minmax(130px,1fr));gap:23px 28px;display:grid}.reset-date.svelte-137c7x1{color:var(--muted);align-items:center;gap:7px;margin:11px 0 0;font-size:15px;line-height:1.4;display:flex}.reset-date.svelte-137c7x1 svg{color:var(--faint);flex-shrink:0}.quota-unavailable.svelte-137c7x1{color:var(--muted);grid-column:1/-1;margin:0;font-size:16px}.account-state.svelte-137c7x1{justify-content:flex-end;align-items:center;gap:8px;display:flex}.disabled-row.svelte-137c7x1{opacity:.65}.credit-windows.svelte-137c7x1{border-top:1px solid var(--border);gap:18px;margin-top:23px;padding-top:18px;display:grid}.credit-window.svelte-137c7x1>div:where(.svelte-137c7x1){justify-content:space-between;gap:12px;font-size:15px;display:flex}.credit-window.svelte-137c7x1 strong:where(.svelte-137c7x1){font-weight:600}.credit-window.svelte-137c7x1 strong:where(.svelte-137c7x1)>span:where(.svelte-137c7x1){font-weight:400}.credit-window.svelte-137c7x1>p:where(.svelte-137c7x1){color:var(--muted);margin:8px 0 0;font-size:15px}@media (width<=1250px){.quota-row.svelte-137c7x1{grid-template-columns:minmax(190px,.7fr) minmax(260px,1.3fr);gap:22px}.account-state.svelte-137c7x1{grid-column:1/-1;margin-top:-8px}}@media (width<=650px){.quota-toolbar.svelte-137c7x1{flex-wrap:nowrap;gap:10px;margin:18px 0 25px}.quota-toolbar.svelte-137c7x1>select:where(.svelte-137c7x1){max-width:140px;padding:0 8px}.quota-toolbar.svelte-137c7x1>.search-input:where(.svelte-137c7x1){width:auto;min-width:0}.provider-groups.svelte-137c7x1{gap:28px}.provider-heading.svelte-137c7x1{flex-wrap:wrap}.provider-heading.svelte-137c7x1 h2:where(.svelte-137c7x1){font-size:22px}.display-choice.svelte-137c7x1{flex-basis:100%;justify-content:space-between;margin-left:0}.display-choice.svelte-137c7x1 select:where(.svelte-137c7x1){max-width:200px;padding:0 8px}.windows-toggle.svelte-137c7x1{margin-left:auto}.window-choices.svelte-137c7x1{padding:6px 14px}.window-choice.svelte-137c7x1{gap:10px}.primary-choice.svelte-137c7x1{padding:0 8px}.quota-row.svelte-137c7x1{grid-template-columns:1fr;gap:22px;padding:20px 18px}.quota-windows.svelte-137c7x1{grid-template-columns:1fr;gap:23px}.account-state.svelte-137c7x1{grid-column:auto;justify-content:space-between;margin-top:0}.credit-window.svelte-137c7x1>div:where(.svelte-137c7x1){flex-wrap:wrap}}.reserve.svelte-c6cuiu{width:fit-content;color:var(--muted);background:0 0;border:0;align-items:center;gap:7px;margin-top:8px;padding:3px 0;font-size:15px;display:flex}.reserve.svelte-c6cuiu svg{color:var(--faint);flex-shrink:0}.reserve.set.svelte-c6cuiu{color:var(--text)}.reserve.set.svelte-c6cuiu svg,.reserve.svelte-c6cuiu:hover{color:var(--blue)}.reserve-editor.svelte-c6cuiu{flex-wrap:wrap;align-items:center;gap:6px 10px;margin-top:8px;display:flex}.reserve-editor.svelte-c6cuiu label:where(.svelte-c6cuiu){color:var(--muted);align-items:center;gap:8px;font-size:15px;display:flex}.reserve-editor.svelte-c6cuiu input:where(.svelte-c6cuiu){width:76px;height:40px;font-size:16px}.reserve-actions.svelte-c6cuiu{display:flex}.reserve-windows.svelte-c6cuiu{flex-wrap:wrap;flex-basis:100%;gap:6px;display:flex}.chip.svelte-c6cuiu{border:1px solid var(--border);color:var(--muted);background:0 0;border-radius:999px;padding:5px 11px;font-size:14px;transition:background .15s,border-color .15s,color .15s}.chip.svelte-c6cuiu:hover:not(:disabled){border-color:var(--blue);color:var(--text)}.chip.on.svelte-c6cuiu{border-color:var(--blue);color:var(--text);background:#5478f622}.link-button.svelte-c6cuiu{color:var(--muted);background:0 0;border:0;padding:3px 0;font-size:15px;text-decoration:underline}.link-button.svelte-c6cuiu:hover{color:var(--red)}.reserve-error.svelte-c6cuiu{color:var(--red);flex-basis:100%;margin:2px 0;font-size:15px;line-height:1.5}.reserve-note.svelte-c6cuiu{max-width:320px;color:var(--muted);margin:6px 0 0;font-size:14px;line-height:1.45}.reserve-note.reached.svelte-c6cuiu{color:var(--yellow)}.endpoint-line.svelte-1n2vmw9{color:var(--muted);flex-wrap:wrap;align-items:center;gap:6px 9px;margin-top:7px;font-size:14px;display:flex}.endpoint-line.svelte-1n2vmw9 code:where(.svelte-1n2vmw9){color:var(--text);font-size:14px}.endpoint-url.svelte-1n2vmw9{text-overflow:ellipsis;white-space:nowrap;max-width:260px;overflow:hidden}.endpoint-format.svelte-1n2vmw9{border:1px solid var(--border);border-radius:6px;padding:2px 7px;font-size:13px}.endpoint-editor.svelte-1n2vmw9{gap:9px;max-width:340px;margin-top:10px;display:grid}.endpoint-editor.svelte-1n2vmw9 label:where(.svelte-1n2vmw9){color:var(--muted);gap:5px;font-size:14px;display:grid}.endpoint-editor.svelte-1n2vmw9 input:where(.svelte-1n2vmw9),.endpoint-editor.svelte-1n2vmw9 select:where(.svelte-1n2vmw9){width:100%;font-size:14px}.editor-actions.svelte-1n2vmw9{gap:8px;margin-top:4px;display:flex}.drop-zone.svelte-1x1hfd6{color:var(--muted);background:#111b2e80;border:1px dashed #3c5279;border-radius:11px;justify-content:center;align-items:center;gap:10px;margin-bottom:18px;padding:20px;font-size:15px;line-height:1.5;display:flex}.drop-zone.dragging.svelte-1x1hfd6{border-color:var(--blue);color:var(--text);background:#5478f612}.drop-zone.svelte-1x1hfd6 svg{flex-shrink:0}.account-table-wrap.svelte-1x1hfd6{overflow-x:auto}td.svelte-1x1hfd6:first-child{min-width:200px}.inline-provider.svelte-1x1hfd6{white-space:nowrap;align-items:center;gap:9px;font-size:16px;display:inline-flex}.account-plan.svelte-1x1hfd6{color:var(--muted);margin-top:7px;font-size:15px}.reserve-cell.svelte-1x1hfd6{min-width:190px}.verified-at.svelte-1x1hfd6{white-space:nowrap}.reserve-cell.svelte-1x1hfd6 .reserve,.reserve-cell.svelte-1x1hfd6 .reserve-editor{margin-top:0}.row-actions.svelte-1x1hfd6{align-items:center;gap:14px;display:flex}.inline-error.svelte-1x1hfd6{max-width:350px;color:var(--red);font-size:15px}.delete-confirmation.svelte-1x1hfd6{min-width:210px;margin-top:12px;font-size:15px}.delete-confirmation.svelte-1x1hfd6 p:where(.svelte-1x1hfd6){margin:0 0 10px}.delete-confirmation.svelte-1x1hfd6 .button:where(.svelte-1x1hfd6){margin-right:5px}@media (width<=900px){table.svelte-1x1hfd6{display:block}thead.svelte-1x1hfd6{display:none}tbody.svelte-1x1hfd6{display:block}tr.svelte-1x1hfd6{border-bottom:1px solid var(--border);grid-template-columns:1fr auto;gap:18px;padding:22px 20px;display:grid}tr.svelte-1x1hfd6:last-child{border:0}td.svelte-1x1hfd6{border:0;padding:0}td.svelte-1x1hfd6:first-child,.reserve-cell.svelte-1x1hfd6{grid-column:1/-1;min-width:0}td.svelte-1x1hfd6:last-child{justify-content:flex-end;display:flex}.row-actions.svelte-1x1hfd6{gap:20px}.verified-at.svelte-1x1hfd6:before{content:attr(data-label)}}@media (width<=650px){.drop-zone.svelte-1x1hfd6{padding:17px}tr.svelte-1x1hfd6{padding:20px 18px}.delete-confirmation.svelte-1x1hfd6{min-width:0}}.modal.svelte-1k2jq0p{background:var(--surface);width:min(520px,100vw - 32px);max-height:calc(100dvh - 32px);color:var(--text);border:1px solid #35496b;border-radius:16px;padding:25px;overflow-y:auto;box-shadow:0 24px 80px #030711b0}.modal.wide.svelte-1k2jq0p{width:min(640px,100vw - 32px)}.modal.svelte-1k2jq0p::backdrop{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#030711b5}header.svelte-1k2jq0p{justify-content:space-between;align-items:center;gap:15px;margin-bottom:14px;display:flex}h2.svelte-1k2jq0p{font-family:var(--font-display);letter-spacing:-.03em;overflow-wrap:anywhere;font-size:24px;font-weight:650}.modal.svelte-1k2jq0p .dialog-actions{flex-wrap:wrap;justify-content:flex-end;gap:10px;margin-top:24px;display:flex}.modal.svelte-1k2jq0p .dialog-text{color:var(--muted);margin:0 0 10px;font-size:16px;line-height:1.6}.modal.svelte-1k2jq0p .dialog-error{color:var(--red);overflow-wrap:anywhere;margin:12px 0 0;font-size:15px;line-height:1.5}@media (width<=650px){.modal.svelte-1k2jq0p{padding:20px 18px}h2.svelte-1k2jq0p{font-size:22px}.modal.svelte-1k2jq0p .dialog-actions .button{flex:1}}.client-form.svelte-vb71yz{gap:22px;display:grid}.client-form.svelte-vb71yz .dialog-error:where(.svelte-vb71yz),.client-form.svelte-vb71yz .dialog-actions{margin-top:0}.field.svelte-vb71yz{color:var(--muted);gap:7px;font-size:15px;display:grid}.field.svelte-vb71yz input:where(.svelte-vb71yz){width:100%}h3.svelte-vb71yz{align-items:center;gap:8px;margin:0 0 10px;font-size:16px;font-weight:600;display:flex}.info.svelte-vb71yz{color:var(--faint);cursor:help;display:inline-flex}.info.svelte-vb71yz:hover{color:var(--blue)}.all-row.svelte-vb71yz{border:1px solid var(--border);background:var(--background);border-radius:11px;justify-content:space-between;align-items:center;gap:16px;padding:13px 15px;display:flex}.all-row.svelte-vb71yz strong:where(.svelte-vb71yz){font-size:15px;font-weight:600;display:block}.all-row.svelte-vb71yz span:where(.svelte-vb71yz){color:var(--muted);font-size:14px}.pool-list.svelte-vb71yz{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:10px;display:grid}.pool.svelte-vb71yz{border:1px solid var(--border);background:var(--background);border-radius:11px;align-content:start;gap:8px;padding:10px 12px 12px;display:grid}.pool.svelte-vb71yz:has(.pool-row:where(.svelte-vb71yz) input:where(.svelte-vb71yz):checked){border-color:#5478f670}.pool-row.svelte-vb71yz{cursor:pointer;align-items:center;gap:9px;min-height:28px;font-size:15px;display:flex}.pool-row.svelte-vb71yz strong:where(.svelte-vb71yz){text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:600;overflow:hidden}.account-chips.svelte-vb71yz{flex-wrap:wrap;gap:6px;display:flex}.chip.svelte-vb71yz{border:1px solid var(--border);color:var(--muted);background:0 0;border-radius:999px;padding:4px 10px;font-size:14px}.chip.svelte-vb71yz:hover:not(:disabled){border-color:var(--blue);color:var(--text)}.chip.on.svelte-vb71yz{border-color:var(--blue);color:var(--text);background:#5478f622}.chip.svelte-vb71yz:disabled{cursor:default;opacity:.75}input[type=checkbox].svelte-vb71yz{width:17px;height:17px;accent-color:var(--primary);padding:0}.share-list.svelte-vb71yz{border:1px solid var(--border);background:var(--background);border-radius:11px;display:grid}.share-row.svelte-vb71yz{grid-template-columns:1fr auto 120px;align-items:center;gap:14px;padding:9px 14px;display:grid}.share-row.svelte-vb71yz+.share-row:where(.svelte-vb71yz){border-top:1px solid var(--border)}.share-pool.svelte-vb71yz{align-items:center;gap:10px;min-width:0;font-size:15px;font-weight:550;display:flex}.share-input.svelte-vb71yz{color:var(--muted);align-items:center;gap:7px;font-size:15px;display:flex}.share-input.svelte-vb71yz input:where(.svelte-vb71yz){text-align:right;background:var(--surface);width:74px;height:38px}.share-common.svelte-vb71yz{text-align:right;color:var(--muted);font-variant-numeric:tabular-nums;font-size:14px}.share-common.over.svelte-vb71yz{color:var(--red)}@media (width<=650px){.pool-list.svelte-vb71yz{grid-template-columns:1fr}.share-row.svelte-vb71yz{grid-template-columns:1fr auto}.share-common.svelte-vb71yz{text-align:left;grid-column:1/-1;margin-top:-4px}}.once.svelte-1w1aal7{color:var(--yellow);align-items:center;gap:9px;margin:0 0 16px;font-size:15px;display:flex}.once.svelte-1w1aal7 svg{flex-shrink:0}.key-field.svelte-1w1aal7{background:var(--background);border:1px solid #3c5279;border-radius:11px;align-items:center;gap:12px;margin:0 0 18px;padding:12px 12px 12px 16px;display:flex}.key-field.svelte-1w1aal7 code:where(.svelte-1w1aal7){overflow-wrap:anywhere;-webkit-user-select:all;user-select:all;flex:1;min-width:0;font-size:15px;line-height:1.5}@media (width<=650px){.key-field.svelte-1w1aal7{flex-direction:column;align-items:stretch}}.stats.svelte-1gmdt1j{margin-bottom:30px}.section-toolbar.svelte-1gmdt1j{flex-wrap:wrap}.section-title.svelte-1gmdt1j,.info.svelte-1gmdt1j{align-items:center;gap:8px;display:inline-flex}.section-title.svelte-1gmdt1j{font-family:var(--font-display);font-size:23px;font-weight:600}.info.svelte-1gmdt1j{color:var(--faint);cursor:help}.info.svelte-1gmdt1j:hover{color:var(--blue)}.periods.svelte-1gmdt1j{border:1px solid var(--border);background:var(--background);border-radius:10px;padding:3px;display:inline-flex}.periods.svelte-1gmdt1j button:where(.svelte-1gmdt1j){min-height:32px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:7px;padding:4px 13px;font-size:14px;font-weight:550}.periods.svelte-1gmdt1j button.active:where(.svelte-1gmdt1j){background:var(--surface);color:var(--text);box-shadow:0 0 0 1px var(--border)}.stats-card.svelte-1gmdt1j{gap:20px;padding:20px;display:grid}.tiles.svelte-1gmdt1j{grid-template-columns:repeat(4,1fr);gap:12px;display:grid}.tiles.svelte-1gmdt1j div:where(.svelte-1gmdt1j){gap:4px;display:grid}.tiles.svelte-1gmdt1j span:where(.svelte-1gmdt1j){color:var(--muted);font-size:14px}.tiles.svelte-1gmdt1j strong:where(.svelte-1gmdt1j){font-family:var(--font-display);letter-spacing:-.02em;font-size:26px;font-weight:650}.bad.svelte-1gmdt1j{color:var(--red)}.chart.svelte-1gmdt1j{gap:6px;padding-top:18px;display:grid;position:relative}.peak.svelte-1gmdt1j{color:var(--faint);font-size:12px;position:absolute;top:0;left:0}.columns.svelte-1gmdt1j{grid-template-columns:repeat(var(--count), 1fr);border-bottom:1px solid var(--border);background:repeating-linear-gradient(0deg,#0000 0 39px,#25334c66 39px 40px);align-items:end;gap:2px;height:120px;display:grid}.column.svelte-1gmdt1j{cursor:default;background:0 0;border:0;align-items:flex-end;height:100%;padding:0;display:flex}.column.dim.svelte-1gmdt1j .bar:where(.svelte-1gmdt1j){opacity:.45}.bar.svelte-1gmdt1j{border-radius:4px 4px 0 0;flex-direction:column-reverse;width:100%;min-height:0;transition:opacity .12s;display:flex;overflow:hidden}.piece.svelte-1gmdt1j{flex-basis:0;min-height:1px}.piece.svelte-1gmdt1j+.piece:where(.svelte-1gmdt1j){box-shadow:inset 0 -2px 0 var(--surface)}.axis.svelte-1gmdt1j{color:var(--faint);justify-content:space-between;font-size:12px;display:flex}.tip.svelte-1gmdt1j{z-index:2;border:1px solid var(--border);pointer-events:none;background:#0b1325f2;border-radius:9px;min-width:150px;padding:9px 11px;font-size:13px;position:absolute;top:4px;transform:translate(8px);box-shadow:0 8px 24px #02061099}.tip.right.svelte-1gmdt1j{transform:translate(calc(-100% - 8px))}.tip.svelte-1gmdt1j p:where(.svelte-1gmdt1j){margin:0}.tip.svelte-1gmdt1j p:where(.svelte-1gmdt1j):first-child{color:var(--muted);margin-bottom:5px}.tip-row.svelte-1gmdt1j{align-items:center;gap:7px;display:flex}.tip-row.svelte-1gmdt1j strong:where(.svelte-1gmdt1j){margin-left:auto;padding-left:12px;font-weight:600}.tip.svelte-1gmdt1j i:where(.svelte-1gmdt1j),.who.svelte-1gmdt1j i:where(.svelte-1gmdt1j){border-radius:3px;flex-shrink:0;width:10px;height:10px}.rows.svelte-1gmdt1j{border-top:1px solid var(--border);display:grid}.client-row.svelte-1gmdt1j+.client-row:where(.svelte-1gmdt1j){border-top:1px solid var(--border)}.row-head.svelte-1gmdt1j{width:100%;min-height:52px;color:var(--text);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;grid-template-columns:minmax(120px,1.2fr) minmax(120px,1.4fr) repeat(4,minmax(70px,auto)) minmax(110px,auto) 18px;align-items:center;gap:14px;padding:8px 4px;font-size:14px;display:grid}.row-head.svelte-1gmdt1j:disabled{cursor:default}.row-head.svelte-1gmdt1j:not(:disabled):hover{background:#17243b80}.row-head.svelte-1gmdt1j .chevron{color:var(--faint);transition:transform .15s}.row-head[aria-expanded=true].svelte-1gmdt1j .chevron{transform:rotate(180deg)}.who.svelte-1gmdt1j{align-items:center;gap:9px;min-width:0;display:flex}.who.svelte-1gmdt1j strong:where(.svelte-1gmdt1j){text-overflow:ellipsis;white-space:nowrap;font-size:15px;font-weight:600;overflow:hidden}.idle.svelte-1gmdt1j .who:where(.svelte-1gmdt1j) strong:where(.svelte-1gmdt1j){color:var(--muted);font-weight:500}.share.svelte-1gmdt1j{grid-template-columns:1fr 52px;align-items:center;gap:10px;display:grid}.share.svelte-1gmdt1j>.tabular:where(.svelte-1gmdt1j){text-align:right}.share-track.svelte-1gmdt1j{background:#2a3a55;border-radius:4px;height:8px;overflow:hidden}.share-track.svelte-1gmdt1j span:where(.svelte-1gmdt1j){border-radius:4px;height:100%;display:block}.figure.svelte-1gmdt1j{white-space:nowrap}.figure.svelte-1gmdt1j b:where(.svelte-1gmdt1j){font-weight:600}.idle-label.svelte-1gmdt1j{color:var(--muted);grid-column:3/-1}.muted.svelte-1gmdt1j{color:var(--muted)}.models.svelte-1gmdt1j{border:1px solid var(--border);border-radius:10px;margin:0 4px 12px;display:grid;overflow:hidden}.model.svelte-1gmdt1j{grid-template-columns:minmax(170px,2fr) repeat(6,minmax(60px,1fr));gap:10px;padding:8px 12px;font-size:14px;display:grid}.model.svelte-1gmdt1j>span:where(.svelte-1gmdt1j):not(.model-name){text-align:right}.model.svelte-1gmdt1j+.model:where(.svelte-1gmdt1j){border-top:1px solid var(--border)}.model.head.svelte-1gmdt1j{color:var(--muted);background:#17243b80;font-size:13px}.model.head.svelte-1gmdt1j>span:where(.svelte-1gmdt1j):first-child{text-align:left}.model-name.svelte-1gmdt1j{overflow-wrap:anywhere;align-items:center;gap:8px;min-width:0;display:flex}.empty.svelte-1gmdt1j{color:var(--muted);margin:0;padding:16px 4px 0}@media (width<=900px){.tiles.svelte-1gmdt1j{grid-template-columns:repeat(2,1fr)}.row-head.svelte-1gmdt1j{grid-template-columns:1fr auto auto 18px;row-gap:6px}.share.svelte-1gmdt1j{grid-area:2/1/auto/-1}.row-head.svelte-1gmdt1j .figure.muted:where(.svelte-1gmdt1j),.errors.svelte-1gmdt1j{display:none}.idle-label.svelte-1gmdt1j{grid-column:2/-1}.models.svelte-1gmdt1j{overflow-x:auto}.model.svelte-1gmdt1j{min-width:620px}}.page-description.svelte-15ihc32 .state-badge:where(.svelte-15ihc32){gap:7px}.client-grid.svelte-15ihc32{grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:16px;display:grid}.client-card.svelte-15ihc32{border:1px solid var(--border);border-top:3px solid var(--client);background:var(--surface);border-radius:14px;flex-direction:column;gap:14px;padding:20px 20px 22px;display:flex}.client-card.svelte-15ihc32 header:where(.svelte-15ihc32){justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.client-title.svelte-15ihc32{flex-wrap:wrap;align-items:center;gap:6px 10px;min-width:0;padding-top:6px;display:flex}.client-dot.svelte-15ihc32{background:var(--client);border-radius:50%;width:10px;height:10px}.client-title.svelte-15ihc32 h2:where(.svelte-15ihc32){font-family:var(--font-display);letter-spacing:-.03em;overflow-wrap:anywhere;font-size:22px;font-weight:650}.client-title.svelte-15ihc32 code:where(.svelte-15ihc32){border:1px solid var(--border);background:var(--background);color:var(--muted);border-radius:6px;padding:2px 7px;font-size:13px}.card-actions.svelte-15ihc32{margin:-4px -8px 0 0;display:flex}.icon-button.danger.svelte-15ihc32:hover{color:var(--red)}.access.svelte-15ihc32,.shares.svelte-15ihc32{flex-wrap:wrap;gap:7px;display:flex}.tag.svelte-15ihc32,.share-chip.svelte-15ihc32{border:1px solid var(--border);border-radius:8px;align-items:center;gap:7px;padding:4px 10px 4px 7px;font-size:14px;display:inline-flex}.tag.strong.svelte-15ihc32{color:#c4d3ff;background:#5478f61c;border-color:#7899ff40;padding-left:10px}.tag.muted.svelte-15ihc32{padding-left:10px}.share-chip.svelte-15ihc32{border-color:color-mix(in srgb, var(--client) 45%, transparent);background:color-mix(in srgb, var(--client) 12%, transparent);color:var(--text);border-radius:999px;padding-left:9px}.share-chip.svelte-15ihc32 svg{color:var(--client)}.share-chip.svelte-15ihc32 strong:where(.svelte-15ihc32){color:var(--text);font-weight:600}.pool-usage.svelte-15ihc32{border-top:1px solid var(--border);padding-top:12px}.pool-name.svelte-15ihc32{align-items:center;gap:8px;margin:0 0 9px;font-size:15px;font-weight:550;display:flex}.usage-line.svelte-15ihc32{grid-template-columns:54px 1fr 74px;align-items:center;gap:12px;min-height:26px;display:grid}.kind.svelte-15ihc32{color:var(--muted);font-size:14px}.usage-track.svelte-15ihc32{background:#2a3a55;border-radius:4px;height:7px;position:relative}.usage-fill.svelte-15ihc32{border-radius:inherit;background:var(--client);position:absolute;inset:0 auto 0 0}.share-mark.svelte-15ihc32{background:var(--text);border-radius:1px;width:2px;margin-left:-1px;position:absolute;top:-4px;bottom:-4px}.usage-value.svelte-15ihc32{text-align:right;font-size:14px}.usage-value.over.svelte-15ihc32{color:var(--yellow)}.no-usage.svelte-15ihc32{margin:0}.section-toolbar.svelte-15ihc32{flex-wrap:wrap;margin-top:38px}.section-title.svelte-15ihc32,.info.svelte-15ihc32{align-items:center;gap:8px;display:inline-flex}.section-title.svelte-15ihc32{font-family:var(--font-display);font-size:23px;font-weight:600}.info.svelte-15ihc32{color:var(--faint);cursor:help}.info.svelte-15ihc32:hover{color:var(--blue)}.legend.svelte-15ihc32{color:var(--muted);flex-wrap:wrap;gap:8px 16px;font-size:14px;display:flex}.legend.svelte-15ihc32 span:where(.svelte-15ihc32){align-items:center;gap:7px;display:inline-flex}.legend.svelte-15ihc32 i:where(.svelte-15ihc32){border-radius:3px;width:11px;height:11px}.rest.svelte-15ihc32,.segment.rest.svelte-15ihc32{background:repeating-linear-gradient(135deg,#55688a 0 3px,#0000 3px 6px)}.legend.svelte-15ihc32 i.rest:where(.svelte-15ihc32){outline-offset:-1px;outline:1px solid #55688a}.breakdown.svelte-15ihc32{gap:16px;display:grid}.group-heading.svelte-15ihc32{border-bottom:1px solid var(--border);background:#17243b80;align-items:center;gap:10px;padding:14px 20px;display:flex}.group-heading.svelte-15ihc32 h3:where(.svelte-15ihc32){margin:0;font-size:16px;font-weight:600}.account-usage.svelte-15ihc32{grid-template-columns:minmax(130px,190px) 1fr;gap:18px;padding:14px 20px;display:grid}.account-usage.svelte-15ihc32+.account-usage:where(.svelte-15ihc32){border-top:1px solid var(--border)}.account-label.svelte-15ihc32{overflow-wrap:anywhere;margin:4px 0 0;font-size:15px;font-weight:550}.windows.svelte-15ihc32{gap:8px;display:grid}.window-row.svelte-15ihc32{grid-template-columns:54px 1fr 92px 230px;align-items:center;gap:14px;min-height:28px;display:grid}.stack.svelte-15ihc32{background:#2a3a55;border-radius:4px;height:12px;display:flex;overflow:hidden}.segment.svelte-15ihc32{height:100%}.segment.svelte-15ihc32+.segment:where(.svelte-15ihc32){box-shadow:inset 2px 0 0 var(--surface)}.used.svelte-15ihc32{text-align:right;font-size:14px}.reset.svelte-15ihc32{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;align-items:center;gap:6px;font-size:14px;display:flex;overflow:hidden}.reset.svelte-15ihc32 svg{color:var(--faint);flex-shrink:0}.empty-breakdown.svelte-15ihc32{color:var(--muted);margin:0;padding:22px 20px;font-size:15px}.open-warning.svelte-15ihc32{color:var(--yellow)}@media (width<=900px){.account-usage.svelte-15ihc32{grid-template-columns:1fr;gap:10px}}@media (width<=650px){.client-grid.svelte-15ihc32{grid-template-columns:1fr}.window-row.svelte-15ihc32{grid-template-columns:48px 1fr 80px}.reset.svelte-15ihc32{grid-column:2/-1;margin-top:-4px}.account-usage.svelte-15ihc32,.group-heading.svelte-15ihc32{padding-inline:16px}}.overview-stats.svelte-15ozkp9{border:1px solid var(--border);background:var(--surface);border-radius:14px;grid-template-columns:repeat(5,1fr);margin:28px 0 34px;display:grid}.overview-stats.svelte-15ozkp9>div:where(.svelte-15ozkp9){border-right:1px solid var(--border);padding:24px 20px}.overview-stats.svelte-15ozkp9>div:where(.svelte-15ozkp9):last-child{border:0}.overview-stats.svelte-15ozkp9 p:where(.svelte-15ozkp9){color:var(--muted);margin:0 0 15px;font-size:15px}.overview-stats.svelte-15ozkp9 strong:where(.svelte-15ozkp9){font-family:var(--font-display);letter-spacing:-.045em;font-variant-numeric:tabular-nums;font-size:34px;font-weight:600;display:block}.overview-stats.svelte-15ozkp9 span:where(.svelte-15ozkp9){color:var(--faint);margin-top:12px;font-size:15px;display:block}.http-status.svelte-15ozkp9{color:var(--green);background:#4dd4ac09;border:1px solid #4dd4ac20;border-radius:6px;padding:4px 7px;font-size:15px}.http-status.error.svelte-15ozkp9{color:var(--red);background:#ff819509;border-color:#ff819530}.account-filename.svelte-15ozkp9{font-family:var(--account-font);color:var(--muted);margin-top:5px;font-size:15px}.inline-error.svelte-15ozkp9{max-width:400px;color:var(--red);font-size:15px}.check-label.svelte-15ozkp9{color:var(--muted);align-items:center;gap:8px;font-size:15px;display:inline-flex}.check-label.svelte-15ozkp9 input:where(.svelte-15ozkp9){accent-color:var(--primary)}.table-scroll.svelte-15ozkp9{overflow-x:auto}.client-tag.svelte-15ozkp9{color:#c4d3ff;vertical-align:1px;background:#5478f61c;border:1px solid #7899ff40;border-radius:6px;margin-left:9px;padding:1px 8px;font-size:13px;display:inline-block}.setup-guide.svelte-15ozkp9 .key-required:where(.svelte-15ozkp9){color:var(--yellow)}.setup-guide.svelte-15ozkp9{max-width:760px;margin-top:30px}.setup-guide.svelte-15ozkp9 section:where(.svelte-15ozkp9){border-bottom:1px solid var(--border);gap:22px;padding:28px 0;display:flex}.setup-guide.svelte-15ozkp9 section:where(.svelte-15ozkp9):first-child{padding-top:0}.setup-guide.svelte-15ozkp9 h2:where(.svelte-15ozkp9){margin:5px 0 12px;font-size:16px}.setup-guide.svelte-15ozkp9 p:where(.svelte-15ozkp9){color:var(--muted);max-width:600px;font-size:15px;line-height:1.7}.copy-field.svelte-15ozkp9{border:1px solid var(--border);background:var(--surface);border-radius:10px;justify-content:space-between;align-items:center;margin:18px 0;padding:9px 13px;display:flex}.tool-tabs.svelte-15ozkp9{flex-wrap:wrap;gap:12px;display:flex}.setup-guide.svelte-15ozkp9 section:where(.svelte-15ozkp9)>div:where(.svelte-15ozkp9){width:100%;min-width:0}.setup-guide.svelte-15ozkp9 h2:where(.svelte-15ozkp9){font-size:20px}.copy-field.svelte-15ozkp9 code:where(.svelte-15ozkp9){overflow-wrap:anywhere;font-size:16px}.config-code.svelte-15ozkp9{align-items:flex-start;gap:12px}.config-code.svelte-15ozkp9 pre:where(.svelte-15ozkp9){white-space:pre-wrap;overflow-wrap:anywhere;min-width:0;margin:7px 0;line-height:1.8}@media (width<=780px){.check-label.svelte-15ozkp9{flex-basis:100%}}@media (width<=700px){.overview-stats.svelte-15ozkp9{grid-template-columns:repeat(2,1fr)}.overview-stats.svelte-15ozkp9>div:where(.svelte-15ozkp9){border-bottom:1px solid var(--border);padding:18px}.overview-stats.svelte-15ozkp9 strong:where(.svelte-15ozkp9){font-size:26px}}.toolbar-controls.svelte-1muslrs{align-items:center;gap:10px;display:flex}.model-groups.svelte-1muslrs{gap:14px;display:grid}.model-group.svelte-1muslrs{border:1px solid var(--border);background:var(--surface);border-radius:13px;transition:border-color .16s;overflow:clip}.model-group.open.svelte-1muslrs{border-color:#34466a}.group-head.svelte-1muslrs{z-index:2;background:var(--surface);border-radius:13px;align-items:center;gap:10px;padding:8px 14px 8px 8px;display:flex;position:sticky;top:0}.group-toggle.svelte-1muslrs{min-width:0;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:9px;flex:1;align-items:center;gap:12px;padding:9px 10px;display:flex}.group-toggle.svelte-1muslrs:hover{background:var(--surface-hover)}.group-toggle.svelte-1muslrs .chevron{color:var(--faint);flex-shrink:0;transition:transform .18s}.open.svelte-1muslrs .group-toggle:where(.svelte-1muslrs) .chevron{color:var(--blue);transform:rotate(90deg)}.group-toggle.svelte-1muslrs h2:where(.svelte-1muslrs){font-family:var(--font-display);letter-spacing:-.02em;text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:20px;font-weight:600;overflow:hidden}.group-count.svelte-1muslrs{color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap;margin-left:auto;padding-left:12px;font-size:15px}.group-actions.svelte-1muslrs{align-items:center;gap:6px;display:flex}.refreshed.svelte-1muslrs{color:var(--faint);white-space:nowrap;font-size:14px}.group-actions.svelte-1muslrs .switch:where(.svelte-1muslrs){margin-left:6px}.switch.partial.svelte-1muslrs{border-color:var(--primary);background:#5478f640}.switch.partial.svelte-1muslrs span:where(.svelte-1muslrs){background:#fff;transform:translate(6.5px)}.open.svelte-1muslrs .group-head:where(.svelte-1muslrs){border-bottom:1px solid var(--border);border-radius:13px 13px 0 0}.group-body.svelte-1muslrs tbody:where(.svelte-1muslrs) tr:where(.svelte-1muslrs):last-child td:where(.svelte-1muslrs){border-bottom:0}.group-body.svelte-1muslrs td:where(.svelte-1muslrs){padding:13px 18px}.group-body.svelte-1muslrs th.available:where(.svelte-1muslrs),.group-body.svelte-1muslrs td.available:where(.svelte-1muslrs),.group-body.svelte-1muslrs .context:where(.svelte-1muslrs){text-align:right;white-space:nowrap;width:1%}.group-body.svelte-1muslrs .context:where(.svelte-1muslrs){padding-right:36px}.group-body.svelte-1muslrs td.available:where(.svelte-1muslrs) .switch:where(.svelte-1muslrs){margin-left:auto}tr.off.svelte-1muslrs .model-name:where(.svelte-1muslrs){color:var(--faint)}.model-name.svelte-1muslrs{display:block}.model-id.svelte-1muslrs{max-width:100%;color:var(--muted);font-family:var(--account-font);text-align:left;overflow-wrap:anywhere;cursor:copy;background:0 0;border:0;align-items:center;gap:7px;margin-top:3px;padding:0;font-size:14px;display:inline-flex}.model-id.svelte-1muslrs svg{opacity:0;flex-shrink:0;transition:opacity .12s}.model-id.svelte-1muslrs:hover{color:var(--text)}.model-id.svelte-1muslrs:hover svg,.model-id.svelte-1muslrs:focus-visible svg{opacity:1}.pool-empty.svelte-1muslrs{color:var(--muted);margin:0;padding:20px 18px;font-size:15px}@media (width<=700px){.group-head.svelte-1muslrs{flex-wrap:wrap;gap:4px;padding:6px 10px 8px 6px}.group-toggle.svelte-1muslrs{flex-basis:100%}.group-actions.svelte-1muslrs{justify-content:flex-end;width:100%}.refreshed.svelte-1muslrs{margin-right:auto;padding-left:10px}.group-actions.svelte-1muslrs .state-badge:where(.svelte-1muslrs){margin-left:10px;margin-right:auto}.toolbar-controls.svelte-1muslrs{width:100%}.toolbar-controls.svelte-1muslrs .search-input:where(.svelte-1muslrs){flex:1;width:auto}.group-body.svelte-1muslrs thead:where(.svelte-1muslrs){display:none}.group-body.svelte-1muslrs td:where(.svelte-1muslrs){padding:12px 14px}.group-body.svelte-1muslrs .context:where(.svelte-1muslrs){padding-right:6px}.model-id.svelte-1muslrs{font-size:13px}}.language-setting.svelte-mf2zd9{border-top:1px solid var(--border);grid-template-columns:245px 1fr;gap:34px;max-width:1060px;margin-top:30px;padding:30px 0;display:grid}h2.svelte-mf2zd9{margin:0 0 9px;font-size:16px}p.svelte-mf2zd9{color:var(--muted);margin:0;font-size:15px;line-height:1.65}.language-field.svelte-mf2zd9{justify-content:flex-end;align-items:center;gap:11px;display:flex}.language-field.svelte-mf2zd9 svg{color:var(--muted);flex-shrink:0}select.svelte-mf2zd9{width:240px;font-size:15px}@media (width<=1150px){.language-setting.svelte-mf2zd9{grid-template-columns:1fr;gap:22px}}@media (width<=650px){select.svelte-mf2zd9{flex:1;width:auto;min-width:0}}.backup-setting.svelte-1h3frll{border-top:1px solid var(--border);grid-template-columns:245px 1fr;gap:34px;max-width:1060px;margin-top:30px;padding:30px 0 0;display:grid}h2.svelte-1h3frll{margin:0 0 9px;font-size:16px}p.svelte-1h3frll{color:var(--muted);margin:0;font-size:15px;line-height:1.65}.backup-body.svelte-1h3frll{align-content:start;gap:16px;display:grid}.backup-warning.svelte-1h3frll{border:1px solid color-mix(in srgb,var(--yellow) 28%,transparent);background:color-mix(in srgb,var(--yellow) 6%,transparent);color:var(--text);border-radius:12px;align-items:flex-start;gap:11px;padding:14px 16px;display:flex}.backup-warning.svelte-1h3frll svg{color:var(--yellow);flex-shrink:0;margin-top:3px}.backup-actions.svelte-1h3frll{flex-wrap:wrap;justify-content:flex-end;gap:10px;display:flex}.file-input.svelte-1h3frll{display:none}.backup-error.svelte-1h3frll{color:var(--red)}.restore-confirmation.svelte-1h3frll{border:1px solid var(--border);background:var(--surface);border-radius:12px;gap:14px;padding:16px;display:grid}.restore-confirmation.svelte-1h3frll p:where(.svelte-1h3frll){color:var(--text)}.settings-choice.svelte-1h3frll{cursor:pointer;align-items:center;gap:10px;font-size:15px;display:flex}.settings-choice.svelte-1h3frll input:where(.svelte-1h3frll){width:auto;height:auto;accent-color:var(--primary);margin:0}.confirmation-actions.svelte-1h3frll{flex-wrap:wrap;justify-content:flex-end;gap:10px;display:flex}@media (width<=1150px){.backup-setting.svelte-1h3frll{grid-template-columns:1fr;gap:22px}}@media (width<=650px){.backup-actions.svelte-1h3frll .button:where(.svelte-1h3frll),.confirmation-actions.svelte-1h3frll .button:where(.svelte-1h3frll){flex:1}}.session-note.svelte-eyvqa5{color:var(--muted);border:1px solid var(--border);background:var(--surface);border-radius:12px;align-items:flex-start;gap:12px;max-width:1060px;margin:24px 0 0;padding:16px 18px;font-size:15px;line-height:1.65;display:flex}.session-note.svelte-eyvqa5 svg{color:var(--blue);flex-shrink:0;margin-top:2px}.settings-form.svelte-eyvqa5{max-width:1060px;margin-top:32px}.settings-section.svelte-eyvqa5{border-bottom:1px solid var(--border);grid-template-columns:245px 1fr;gap:34px;padding:30px 0;display:grid}.settings-section.svelte-eyvqa5:first-child{padding-top:0}.settings-section.svelte-eyvqa5 h2:where(.svelte-eyvqa5){margin:0 0 9px;font-size:16px}.settings-section.svelte-eyvqa5 p:where(.svelte-eyvqa5){color:var(--muted);margin:0;font-size:15px;line-height:1.65}.strategy-options.svelte-eyvqa5{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.strategy-option.svelte-eyvqa5{border:1px solid var(--border);background:var(--surface);cursor:pointer;border-radius:12px;align-items:flex-start;gap:12px;min-height:126px;padding:18px 16px;display:flex}.strategy-option.svelte-eyvqa5:hover{border-color:#3c5279}.strategy-option.chosen.svelte-eyvqa5{border-color:var(--blue);background:#5478f613;box-shadow:inset 0 0 0 1px #7899ff22}.strategy-option.svelte-eyvqa5 input:where(.svelte-eyvqa5){width:auto;height:auto;accent-color:var(--primary);flex-shrink:0;margin:3px 0 0}.strategy-option.svelte-eyvqa5 span:where(.svelte-eyvqa5){font-size:15px;font-weight:550;line-height:1.3}.strategy-option.svelte-eyvqa5 small:where(.svelte-eyvqa5){color:var(--muted);margin-top:8px;font-size:15px;font-weight:400;line-height:1.55;display:block}.settings-fields.svelte-eyvqa5{gap:20px;display:grid}.settings-fields.svelte-eyvqa5>label:where(.svelte-eyvqa5){grid-template-columns:1fr 240px;align-items:center;gap:18px;font-size:15px;display:grid}.provider-fields.svelte-eyvqa5{border:1px solid var(--border);background:var(--surface);border-radius:12px;gap:0;overflow:hidden}.provider-fields.svelte-eyvqa5>label:where(.svelte-eyvqa5){border-bottom:1px solid var(--border);padding:13px 16px}.provider-fields.svelte-eyvqa5>label:where(.svelte-eyvqa5):last-child{border-bottom:0}.provider-label.svelte-eyvqa5{align-items:center;gap:11px;font-size:15px;display:flex}.provider-fields.svelte-eyvqa5 select:where(.svelte-eyvqa5){font-size:15px}.unit-field.svelte-eyvqa5{color:var(--muted);align-items:center;gap:10px;font-size:15px;display:flex}.unit-field.svelte-eyvqa5 input:where(.svelte-eyvqa5){width:115px}.settings-footer.svelte-eyvqa5{justify-content:flex-end;margin-top:25px;display:flex}@media (width<=1150px){.settings-section.svelte-eyvqa5{grid-template-columns:1fr;gap:22px}.settings-section.svelte-eyvqa5>div:where(.svelte-eyvqa5):first-child{max-width:600px}}@media (width<=650px){.strategy-options.svelte-eyvqa5{grid-template-columns:1fr}.strategy-option.svelte-eyvqa5{min-height:0;padding:16px}.strategy-option.svelte-eyvqa5 small:where(.svelte-eyvqa5){font-size:15px}.settings-fields.svelte-eyvqa5>label:where(.svelte-eyvqa5){grid-template-columns:1fr;gap:10px}.provider-fields.svelte-eyvqa5>label:where(.svelte-eyvqa5){grid-template-columns:1fr 170px;gap:10px;padding:13px 12px}.provider-label.svelte-eyvqa5{gap:8px;font-size:15px}.provider-fields.svelte-eyvqa5 select:where(.svelte-eyvqa5){width:100%;padding:0 7px}.settings-footer.svelte-eyvqa5 .button:where(.svelte-eyvqa5){width:100%}.session-note.svelte-eyvqa5{padding:15px}}.connect-dialog.svelte-1xsbe8v{width:min(640px,100vw - 32px);max-height:calc(100dvh - 32px);color:var(--text);background:var(--surface);border:1px solid #35496b;border-radius:18px;padding:28px;overflow-y:auto;box-shadow:0 24px 80px #030711b0}.connect-dialog.svelte-1xsbe8v::backdrop{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#030711b5}.dialog-heading.svelte-1xsbe8v{z-index:2;background:var(--surface);justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:8px;padding-bottom:18px;display:flex;position:sticky;top:0}.dialog-heading.svelte-1xsbe8v h2:where(.svelte-1xsbe8v){font-family:var(--font-display);letter-spacing:-.035em;margin:0 0 8px;font-size:26px;font-weight:650}.dialog-heading.svelte-1xsbe8v p:where(.svelte-1xsbe8v),.dialog-import.svelte-1xsbe8v p:where(.svelte-1xsbe8v){color:var(--muted);margin:0;font-size:15px;line-height:1.5}.provider-options.svelte-1xsbe8v{grid-template-columns:repeat(2,minmax(0,1fr));gap:11px;display:grid}.provider-option.svelte-1xsbe8v{border:1px solid var(--border);background:var(--background);text-align:left;border-radius:12px;align-items:center;gap:12px;min-height:86px;padding:15px 12px;display:flex}.provider-option.svelte-1xsbe8v:hover{background:var(--surface-raised);border-color:#5576ad}.provider-option.svelte-1xsbe8v>span:where(.svelte-1xsbe8v):not(.provider-logo){flex:1;font-size:15px;font-weight:550}.provider-logo.svelte-1xsbe8v{flex-shrink:0;justify-content:center;align-items:center;width:36px;display:flex}.provider-option.svelte-1xsbe8v small:where(.svelte-1xsbe8v){color:var(--muted);margin-top:5px;font-size:15px;font-weight:400;line-height:1.5;display:block}.provider-option.svelte-1xsbe8v svg{color:var(--faint);flex-shrink:0}.dialog-import.svelte-1xsbe8v{border-top:1px solid var(--border);align-items:center;gap:18px;margin-top:24px;padding-top:22px;display:flex}.dialog-import.svelte-1xsbe8v h3:where(.svelte-1xsbe8v){margin:0 0 6px;font-size:15px}.oauth-flow.svelte-1xsbe8v>p:where(.svelte-1xsbe8v){color:var(--muted);font-size:15px;line-height:1.6}.oauth-flow.svelte-1xsbe8v .flow-hint:where(.svelte-1xsbe8v){margin-top:24px;font-size:15px}.oauth-flow.svelte-1xsbe8v form:where(.svelte-1xsbe8v){gap:10px;display:grid}.oauth-flow.svelte-1xsbe8v label:where(.svelte-1xsbe8v){font-size:15px}.oauth-flow.svelte-1xsbe8v input:where(.svelte-1xsbe8v),.oauth-flow.svelte-1xsbe8v select:where(.svelte-1xsbe8v){width:100%}.oauth-flow.svelte-1xsbe8v code:where(.svelte-1xsbe8v){font-size:14px}.flow-controls.svelte-1xsbe8v{flex-wrap:wrap;gap:8px;margin-top:18px;display:flex}.device-code.svelte-1xsbe8v{border:1px solid var(--border);background:var(--background);border-radius:10px;justify-content:space-between;align-items:center;margin:20px 0;padding:14px 17px;display:flex}.device-code.svelte-1xsbe8v>span:where(.svelte-1xsbe8v){font-family:var(--font-display);letter-spacing:.08em;font-size:28px}.connection-success.svelte-1xsbe8v{text-align:center;padding:15px 0}.connection-success.svelte-1xsbe8v>span:where(.svelte-1xsbe8v){width:50px;height:50px;color:var(--green);background:#10b98115;border-radius:50%;place-items:center;display:inline-grid}.connection-success.svelte-1xsbe8v h3:where(.svelte-1xsbe8v){font-size:18px}.connection-success.svelte-1xsbe8v p:where(.svelte-1xsbe8v){color:var(--muted);margin-bottom:24px;font-size:15px}@media (width<=600px){.connect-dialog.svelte-1xsbe8v{border-radius:15px;padding:22px 18px}.dialog-heading.svelte-1xsbe8v h2:where(.svelte-1xsbe8v){font-size:24px}.provider-options.svelte-1xsbe8v{grid-template-columns:1fr;gap:9px}.provider-option.svelte-1xsbe8v{gap:15px;min-height:75px;padding:13px 15px}.provider-option.svelte-1xsbe8v>span:where(.svelte-1xsbe8v):not(.provider-logo),.provider-option.svelte-1xsbe8v small:where(.svelte-1xsbe8v){font-size:15px}.dialog-import.svelte-1xsbe8v{flex-direction:column;align-items:flex-start}} diff --git a/dash/build/_app/immutable/chunks/C2MtwMCw.js b/dash/build/_app/immutable/chunks/C2MtwMCw.js new file mode 100644 index 0000000..a962030 --- /dev/null +++ b/dash/build/_app/immutable/chunks/C2MtwMCw.js @@ -0,0 +1,3 @@ +var e=Object.defineProperty,t=(t,n)=>{let r={};for(var i in t)e(r,i,{get:t[i],enumerable:!0});return n||e(r,Symbol.toStringTag,{value:`Module`}),r},n=Array.isArray,r=Array.prototype.indexOf,i=Array.prototype.includes,a=Array.from,o=Object.defineProperty,s=Object.getOwnPropertyDescriptor,c=Object.getOwnPropertyDescriptors,l=Object.prototype,u=Array.prototype,d=Object.getPrototypeOf,f=Object.isExtensible;function p(e){return typeof e==`function`}var m=()=>{};function h(e){for(var t=0;t{e=n,t=r}),resolve:e,reject:t}}function _(e,t){if(Array.isArray(e))return e;if(t===void 0||!(Symbol.iterator in e))return Array.from(e);let n=[];for(let r of e)if(n.push(r),n.length===t)break;return n}var v=1<<24,y=1024,b=2048,x=4096,S=8192,ee=16384,te=32768,ne=1<<25,re=65536,ie=1<<18,ae=1<<19,oe=1<<20,se=1<<25,ce=1<<21,le=1<<22,ue=1<<23,de=Symbol(`$state`),fe=Symbol(`component`),pe=Symbol(`legacy props`),me=Symbol(``),he=Symbol(`attributes`),ge=Symbol(`class`),_e=Symbol(`style`),ve=Symbol(`text`),ye=Symbol(`form reset`),be=new class extends Error{name=`StaleReactionError`;message="The reaction that called `getAbortSignal()` was re-run or destroyed"},xe=!!globalThis.document?.contentType&&globalThis.document.contentType.includes(`xml`),Se={},C=Symbol(`uninitialized`),Ce=`http://www.w3.org/1999/xhtml`,we=`http://www.w3.org/2000/svg`;function Te(){console.warn(`https://svelte.dev/e/derived_inert`)}function Ee(e){console.warn(`https://svelte.dev/e/hydratable_missing_but_expected`)}function De(e){console.warn(`https://svelte.dev/e/hydration_mismatch`)}function Oe(){console.warn(`https://svelte.dev/e/select_multiple_invalid_value`)}function ke(){console.warn(`https://svelte.dev/e/svelte_boundary_reset_noop`)}function Ae(e){console.warn(`https://svelte.dev/e/transition_slide_display`)}var w=!1;function T(e){w=e}var E;function D(e){if(e===null)throw De(),Se;return E=e}function je(){return D(L(E))}function Me(e){if(w){if(L(E)!==null)throw De(),Se;E=e}}function Ne(e=1){if(w){for(var t=e,n=E;t--;)n=L(n);E=n}}function Pe(e=!0){for(var t=0,n=E;;){if(n.nodeType===8){var r=n.data;if(r===`]`){if(t===0)return n;--t}else(r===`[`||r===`[!`||r[0]===`[`&&!isNaN(Number(r.slice(1))))&&(t+=1)}var i=L(n);e&&n.remove(),n=i}}function Fe(e){if(!e||e.nodeType!==8)throw De(),Se;return e.data}function Ie(e){return e===this.v}function Le(e,t){return e==e?e!==t||typeof e==`object`&&!!e||typeof e==`function`:t==t}function Re(e){return!Le(e,this.v)}function ze(e){throw Error(`https://svelte.dev/e/experimental_async_required`)}function Be(e){throw Error(`https://svelte.dev/e/lifecycle_outside_component`)}function Ve(){throw Error(`https://svelte.dev/e/missing_context`)}function He(){throw Error(`https://svelte.dev/e/async_derived_orphan`)}function Ue(e,t,n){throw Error(`https://svelte.dev/e/each_key_duplicate`)}function We(e){throw Error(`https://svelte.dev/e/effect_in_teardown`)}function Ge(){throw Error(`https://svelte.dev/e/effect_in_unowned_derived`)}function Ke(e){throw Error(`https://svelte.dev/e/effect_orphan`)}function qe(){throw Error(`https://svelte.dev/e/effect_update_depth_exceeded`)}function Je(){throw Error(`https://svelte.dev/e/fork_discarded`)}function Ye(){throw Error(`https://svelte.dev/e/fork_timing`)}function Xe(){throw Error(`https://svelte.dev/e/get_abort_signal_outside_reaction`)}function Ze(){throw Error(`https://svelte.dev/e/hydration_failed`)}function Qe(e){throw Error(`https://svelte.dev/e/lifecycle_legacy_only`)}function $e(e){throw Error(`https://svelte.dev/e/props_invalid_value`)}function et(){throw Error(`https://svelte.dev/e/state_descriptors_fixed`)}function tt(){throw Error(`https://svelte.dev/e/state_prototype_fixed`)}function nt(){throw Error(`https://svelte.dev/e/state_unsafe_mutation`)}function rt(){throw Error(`https://svelte.dev/e/svelte_boundary_reset_onerror`)}var it=[];function at(e,t=!1,n=!1){return ot(e,new Map,``,it,null,n)}function ot(e,t,r,i,a=null,o=!1){if(typeof e==`object`&&e){var s=t.get(e);if(s!==void 0)return s;if(e instanceof Map)return new Map(e);if(e instanceof Set)return new Set(e);if(n(e)){var c=Array(e.length);t.set(e,c),a!==null&&t.set(a,c);for(var u=0;u(n(r)||Ve(),e(r)),e=>t(r,e),()=>n(r)]}function ct(e){let t=e.p;for(;t!==null&&t.c===null;)t=t.p;return t?.c??null}function lt(e,t){return e===null&&Be(t),e.c??=new Map(ct(e)||void 0)}var O=null;function ut(e){O=e}function dt(){return st(ft,pt,mt)}function ft(e){return lt(O,`getContext`).get(e)}function pt(e,t){return lt(O,`setContext`).set(e,t),t}function mt(e){return lt(O,`hasContext`).has(e)}function ht(){return lt(O,`getAllContexts`)}function gt(e,t=!1,n){O={p:O,i:!1,c:null,e:null,s:e,x:null,r:G,l:null}}function _t(e){var t=O,n=t.e;if(n!==null){t.e=null;for(var r of n)Kn(r)}return e!==void 0&&(t.x=e),t.i=!0,O=t.p,vt(e)}function vt(e={}){return o(e,fe,{value:!0}),e}function yt(){return!0}var bt=[];function xt(){var e=bt;bt=[],h(e)}function k(e){if(bt.length===0&&!Jt){var t=bt;queueMicrotask(()=>{t===bt&&xt()})}bt.push(e)}function St(){for(;bt.length>0;)xt()}var Ct=~(b|x|y);function A(e,t){e.f=e.f&Ct|t}function wt(e){e.f&512||e.deps===null?A(e,y):A(e,x)}function Tt(e,t,n){e.f&2048?t.add(e):e.f&4096&&n.add(e),A(e,y)}function Et(e,t){if(t){let t=document.body;e.autofocus=!0,k(()=>{document.activeElement===t&&e.focus()})}}var Dt=!1;function Ot(){Dt||(Dt=!0,document.addEventListener(`reset`,e=>{Promise.resolve().then(()=>{if(!e.defaultPrevented)for(let t of e.target.elements)t[ye]?.()})},{capture:!0}))}function kt(e){var t=H,n=G;W(null),K(null);try{return e()}finally{W(t),K(n)}}function At(e,t,n,r=n){e.addEventListener(t,()=>kt(n));let i=e[ye];e[ye]=i?()=>{i(),r(!0)}:()=>r(!0),Ot()}function jt(e,t,n,r){let i=yt()?Ft:zt;var a=e.filter(e=>!e.settled),o=t.map(i);if(n.length===0&&a.length===0){r(o);return}var s=G,c=Mt(),l=a.length===1?a[0].promise:a.length>1?Promise.all(a.map(e=>e.promise)):null;function u(e){if(!(s.f&16384)){c();try{r([...o,...e])}catch(e){R(e,s)}Nt()}}var d=Pt();if(n.length===0){l.then(()=>u([])).finally(d);return}function f(){Promise.all(n.map(e=>Lt(e))).then(u).catch(e=>R(e,s)).finally(d)}l?l.then(()=>{s.f&16384?d():(c(),f(),Nt())}):f()}function Mt(){var e=G,t=H,n=O,r=j;return function(i=!0){K(e),W(t),ut(n),i&&!(e.f&16384)&&(r?.activate(),r?.apply())}}function Nt(e=!0){K(null),W(null),ut(null),e&&j?.deactivate()}function Pt(){var e=G,t=e.b,n=j,r=!!t?.is_rendered();return t?.update_pending_count(1,n),n.increment(r,e),()=>{t?.update_pending_count(-1,n),n.decrement(r,e)}}function Ft(e){var t=2|b;return G!==null&&(G.f|=ae),{ctx:O,deps:null,effects:null,equals:Ie,f:t,fn:e,reactions:null,rv:0,v:C,wv:0,parent:G,ac:null}}var It=Symbol(`obsolete`);function Lt(e,t,n){let r=G;r===null&&He();var i=void 0,a=mn(C),o=!H,s=new Set;return Xn(()=>{var t=G,n=g();i=n.promise;try{Promise.resolve(e()).then(n.resolve,e=>{e!==be&&n.reject(e)}).finally(Nt)}catch(e){n.reject(e),Nt()}var c=j;if(o){if(t.f&32768)var l=Pt();if(r.b?.is_rendered())c.async_deriveds.get(t)?.reject(It);else for(let e of s.values())e.reject(It);s.add(n),c.async_deriveds.set(t,n)}let u=(e,t=void 0)=>{l?.(),s.delete(n),t!==It&&(c.activate(),t?(a.f|=ue,yn(a,t)):(a.f&8388608&&(a.f^=ue),yn(a,e)),c.deactivate())};n.promise.then(u,e=>u(null,e||`unknown`))}),Wn(()=>{for(let e of s)e.reject(It)}),new Promise(e=>{function t(n){function r(){n===i?e(a):t(i)}n.then(r,r)}t(i)})}function Rt(e){let t=Ft(e);return hr(t),t}function zt(e){let t=Ft(e);return t.equals=Re,t}function Bt(e){var t=e.effects;if(t!==null){e.effects=null;for(var n=0;n{t.ac.abort(be),t.ac=null}),t.fn!==null&&(t.teardown=m),Dr(t,0),rr(t))}function Wt(e){if(e.effects!==null)for(let t of e.effects)t.teardown&&t.fn!==null&&Or(t)}var Gt=null,j=null,Kt=null,M=null,qt=null,Jt=!1,Yt=!1,Xt=null,Zt=null,Qt=0,$t=1,en=class e{id=$t++;#e=!1;linked=!0;#t=null;#n=null;async_deriveds=new Map;current=new Map;previous=new Map;#r=new Set;#i=new Set;#a=0;#o=new Map;#s=null;#c=[];#l=[];#u=new Set;#d=new Set;#f=new Map;#p=new Set;is_fork=!1;#m=!1;constructor(){Gt===null?Gt=this:(Gt.#n=this,this.#t=Gt),Gt=this}#h(){if(this.is_fork)return!0;for(let n of this.#o.keys()){for(var e=n,t=!1;e.parent!==null;){if(this.#f.has(e)){t=!0;break}e=e.parent}if(!t)return!0}return!1}skip_effect(e){this.#f.has(e)||this.#f.set(e,{d:[],m:[]}),this.#p.delete(e)}unskip_effect(e,t=e=>this.schedule(e)){var n=this.#f.get(e);if(n){this.#f.delete(e);for(var r of n.d)A(r,b),t(r);for(r of n.m)A(r,x),t(r)}this.#p.add(e)}#g(){var e=[];for(let i of this.#c)if(!(i.f&16384||!(i.f&6144))){for(var t=i,n=!1;t.parent!==null;){t=t.parent;var r=t.f;if(r&96){if(!(r&1024)){n=!0;break}t.f^=y}}n||e.push(t)}return this.#c=[],e}#_(){this.#e=!0;for(let e of this.#u)this.#d.delete(e),A(e,b),this.schedule(e);for(let e of this.#d)A(e,x),this.schedule(e);this.apply();for(var t=Xt=[],n=[],r=Zt=[];this.#c.length>0;){Qt++>1e3&&(this.#S(),nn());for(let e of this.#g())try{this.#v(e,t,n)}catch(t){throw ln(e),this.#h()||this.discard(),t}}if(j=null,r.length>0){var i=e.ensure();for(let e of r)i.schedule(e)}if(Xt=null,Zt=null,this.#h()){this.#x(n),this.#x(t);for(let[e,t]of this.#f)cn(e,t);r.length>0&&j.#_();return}let a=this.#y();if(a)this.#x(n),this.#x(t),a.#b(this);else{this.#u.clear(),this.#d.clear();for(let e of this.#r)e(this);this.#r.clear(),Kt=this,an(n),an(t),Kt=null,this.#s?.resolve();var o=j;if(this.#a===0&&(this.#c.length===0||o!==null)&&this.#S(),this.#c.length>0){if(o!==null){for(let e of this.#c)o.#c.push(e);this.#c=[]}else o=this}o!==null&&(N.clear(),o.#_())}}#v(e,t,n){e.f^=y;for(var r=e.first;r!==null;){var i=r.f,a=!!(i&96);if(!(a&&i&1024||i&8192||this.#f.has(r))&&r.fn!==null){a?r.f^=y:i&4?t.push(r):Sr(r)&&(i&16&&this.#d.add(r),Or(r));var o=r.first;if(o!==null){r=o;continue}}for(;r!==null;){var s=r.next;if(s!==null){r=s;break}r=r.parent}}}#y(){for(var e=this.#t;e!==null;){if(!e.is_fork){for(let[t,[,n]]of this.current)if(e.current.has(t)&&!n)return e}e=e.#t}return null}#b(e){for(let[t,n]of e.current)!this.previous.has(t)&&e.previous.has(t)&&this.previous.set(t,e.previous.get(t)),this.current.set(t,n);for(let[t,n]of e.async_deriveds){let e=this.async_deriveds.get(t);e&&n.promise.then(e.resolve).catch(e.reject)}e.async_deriveds.clear(),this.transfer_effects(e.#u,e.#d);let t=e=>{var n=e.reactions;if(n!==null&&!(e.f&2&&!(e.f&6144)))for(let e of n){var r=e.f;if(r&2)t(e);else{var i=e;r&4194320&&!this.async_deriveds.has(i)&&(this.#d.delete(i),A(i,b),this.schedule(i))}}};for(let e of this.current.keys())t(e);this.oncommit(()=>e.discard()),e.#S(),j=this,this.#_()}#x(e){for(var t=0;t{this.#m=!1,this.linked&&this.flush()}))}transfer_effects(e,t){for(let t of e)this.#u.add(t);for(let e of t)this.#d.add(e);e.clear(),t.clear()}oncommit(e){this.#r.add(e)}ondiscard(e){this.#i.add(e)}settled(){return(this.#s??=g()).promise}static ensure(){if(j===null){let t=j=new e;!Yt&&!Jt&&k(()=>{t.#e||t.flush()})}return j}apply(){M=null}schedule(e){qt=e,e.b?.is_pending&&e.f&16777228&&!(e.f&32768)?e.b.defer_effect(e):this.#c.push(e)}#S(){if(this.linked){var e=this.#t,t=this.#n;e===null||(e.#n=t),t===null?Gt=e:t.#t=e,this.linked=!1}}};function tn(e){var t=Jt,n=Kt;Kt=null,Jt=!0;try{var r;for(e&&(tn(),r=e());;){if(St(),j===null)return r;j.flush()}}finally{Jt=t,Kt=n}}function nn(){try{qe()}catch(e){R(e,qt)}}var rn=null;function an(e){var t=e.length;if(t!==0){for(var n=0;n0)){N.clear();for(let e of rn){if(e.f&24576)continue;let t=[e],n=e.parent;for(;n!==null;)rn.has(n)&&(rn.delete(n),t.push(n)),n=n.parent;for(let e=t.length-1;e>=0;e--){let n=t[e];n.f&24576||Or(n)}}rn.clear()}}rn=null}}function on(e,t){if(e.reactions!==null)for(let n of e.reactions){let e=n.f;e&2?on(n,t):e&131072&&(A(n,b),t.add(n))}}function sn(e){j.schedule(e)}function cn(e,t){if(!(e.f&32&&e.f&1024)){e.f&2048?t.d.push(e):e.f&4096&&t.m.push(e),A(e,y);for(var n=e.first;n!==null;)cn(n,t),n=n.next}}function ln(e){A(e,y);for(var t=e.first;t!==null;)ln(t),t=t.next}function un(e){ze(`fork`),j!==null&&Ye(),tn();var t=en.ensure();t.is_fork=!0,M=new Map;var n=!1,r=t.settled();return e(),tn(),{commit:async()=>{if(n)await r;else{t.linked||Je(),n=!0,t.is_fork=!1;for(var[e,[i]]of t.current)e.v=i,e.wv=xr();tn(()=>{var e=new Set;for(var n of t.current.keys())on(n,e);fn(e),bn()}),t.flush(),await r}},discard:()=>{for(var e of t.current.keys())e.wv=xr();!n&&t.linked&&t.discard()}}}var dn=new Set,N=new Map;function fn(e){dn=e}var pn=!1;function mn(e,t){return{f:0,v:e,reactions:null,equals:Ie,rv:0,wv:0}}function hn(e,t){let n=mn(e,t);return hr(n),n}function gn(e,t=!1,n=!0){let r=mn(e);return t||(r.equals=Re),r}function P(e,t,n=!1){return H!==null&&(!U||H.f&131072)&&yt()&&H.f&4325394&&(q===null||!q.has(e))&&nt(),yn(e,n?Cn(t):t,Zt)}var _n=null,vn=0;function yn(e,t,n=null){if(!e.equals(t)){pr?N.set(e,t):N.has(e)||N.set(e,e.v);var r=en.ensure();if(r.capture(e,t),e.f&2){let t=e;e.f&2048&&Vt(t),M===null&&wt(t)}e.wv=xr(),_n=null,vn=0,Sn(e,b,n),_n=null,yt()&&G!==null&&G.f&1024&&!(G.f&96)&&(X===null?gr([e]):X.push(e)),!r.is_fork&&dn.size>0&&!pn&&bn()}return t}function bn(){pn=!1;for(let e of dn){e.f&1024&&A(e,x);let t;try{t=Sr(e)}catch{t=!0}t&&Or(e)}dn.clear()}function xn(e){P(e,e.v+1)}function Sn(e,t,n){var r=e.reactions;if(r!==null){var i=yt(),a=r.length;if(vn+=a,vn>1e5&&_n===null&&(_n=new Set),_n!==null){if(_n.has(e))return;_n.add(e)}for(var o=0;o{if(yr===c)return e();var t=H,n=yr;W(null),br(c);var r=e();return W(t),br(n),r};return i&&r.set(`length`,hn(e.length,o)),new Proxy(e,{defineProperty(e,t,n){(!(`value`in n)||n.configurable===!1||n.enumerable===!1||n.writable===!1)&&et();var i=r.get(t);return i===void 0?f(()=>{var e=hn(n.value,o);return r.set(t,e),e}):P(i,n.value,!0),!0},deleteProperty(e,t){var n=r.get(t);if(n===void 0){if(t in e){let e=f(()=>hn(C,o));r.set(t,e),xn(a)}}else P(n,C),xn(a);return!0},get(t,n,i){if(n===de)return e;var a=r.get(n),c=n in t;if(a===void 0&&(!c||s(t,n)?.writable)&&(a=f(()=>hn(Cn(c?t[n]:C),o)),r.set(n,a)),a!==void 0){var l=Z(a);return l===C?void 0:l}return Reflect.get(t,n,i)},getOwnPropertyDescriptor(e,t){this.has?.(e,t);var n=Reflect.getOwnPropertyDescriptor(e,t),i=r.get(t);if(i!==void 0){var a=Z(i);if(a===C)return;if(n&&`value`in n)n.value=a;else return{enumerable:!0,configurable:!0,value:a,writable:!0}}return n},has(e,t){if(t===de)return!0;var n=r.get(t),i=n!==void 0&&n.v!==C||Reflect.has(e,t);return(n!==void 0||G!==null&&(!i||s(e,t)?.writable))&&(n===void 0&&(n=f(()=>hn(i?Cn(e[t]):C,o)),r.set(t,n)),Z(n)===C)?!1:i},set(e,t,n,c){var l=r.get(t),u=t in e;if(i&&t===`length`)for(var d=n;dhn(C,o)),r.set(d+``,p)):P(p,C)}if(l===void 0)(!u||s(e,t)?.writable)&&(l=f(()=>hn(void 0,o)),P(l,Cn(n)),r.set(t,l));else{u=l.v!==C;var m=f(()=>Cn(n));P(l,m)}var h=Reflect.getOwnPropertyDescriptor(e,t);if(h?.set&&h.set.call(c,n),!u){if(i&&typeof t==`string`){var g=r.get(`length`),_=Number(t);Number.isInteger(_)&&_>=g.v&&P(g,_+1)}xn(a)}return!0},ownKeys(e){Z(a);var t=Reflect.ownKeys(e).filter(e=>{var t=r.get(e);return t===void 0||t.v!==C});for(var[n,i]of r)i.v!==C&&!(n in e)&&t.push(n);return t},setPrototypeOf(){tt()}})}function wn(e){try{if(typeof e==`object`&&e&&de in e)return e[de]}catch{}return e}function Tn(e,t){return Object.is(wn(e),wn(t))}var En,Dn,On,kn,An;function jn(){if(En===void 0){En=window,Dn=document,On=/Firefox/.test(navigator.userAgent);var e=Element.prototype,t=Node.prototype,n=Text.prototype;kn=s(t,`firstChild`).get,An=s(t,`nextSibling`).get,f(e)&&(e[ge]=void 0,e[he]=null,e[_e]=void 0,e.__e=void 0),f(n)&&(n[ve]=void 0)}}function F(e=``){return document.createTextNode(e)}function I(e){return kn.call(e)}function L(e){return An.call(e)}function Mn(e,t){if(!w)return I(e);var n=I(E);if(n===null)n=E.appendChild(F());else if(t&&n.nodeType!==3){var r=F();return n?.before(r),D(r),r}return t&&zn(n),D(n),n}function Nn(e,t=!1){if(!w){var n=I(e);return n instanceof Comment&&n.data===``?L(n):n}if(t){if(E?.nodeType!==3){var r=F();return E?.before(r),D(r),r}zn(E)}return E}function Pn(e,t=!1){if(!w)return I(e);var n=Mn(e,t);return Me(e),n}function Fn(e,t=1,n=!1){let r=w?E:e;for(var i;t--;)i=r,r=L(r);if(!w)return r;if(n){if(r?.nodeType!==3){var a=F();return r===null?i?.after(a):r.before(a),D(a),a}zn(r)}return D(r),r}function In(e){e.textContent=``}function Ln(){return!1}function Rn(e,t,n){return t==null||t===`http://www.w3.org/1999/xhtml`?n?document.createElement(e,{is:n}):document.createElement(e):n?document.createElementNS(t,e,{is:n}):document.createElementNS(t,e)}function zn(e){if(e.nodeValue.length<65536)return;let t=e.nextSibling;for(;t!==null&&t.nodeType===3;)t.remove(),e.nodeValue+=t.nodeValue,t=e.nextSibling}function Bn(e){var t=G;if(t===null)return H.f|=ue,e;if(!(t.f&32768)&&!(t.f&4))throw e;R(e,t)}function R(e,t){if(e===Se)throw e;if(!(t!==null&&t.f&16384)){for(;t!==null;){if(t.f&128&&!(t.f&33570816)){if(!(t.f&32768))throw e;try{t.b.error(e);return}catch(t){e=t}}t=t.parent}throw e}}function Vn(e){G===null&&(H===null&&Ke(e),Ge()),pr&&We(e)}function Hn(e,t){var n=t.last;n===null?t.last=t.first=e:(n.next=e,e.prev=n,t.last=e)}function z(e,t){var n=G;n!==null&&n.f&8192&&(e|=S);var r={ctx:O,deps:null,nodes:null,f:e|b|512,first:null,fn:t,last:null,next:null,parent:n,b:n&&n.b,prev:null,teardown:null,wv:0,ac:null};j?.register_created_effect(r);var i=r;if(e&4)Xt===null?en.ensure().schedule(r):Xt.push(r);else if(t!==null){try{Or(r)}catch(e){throw V(r),e}i.deps===null&&i.teardown===null&&i.nodes===null&&i.first===i.last&&!(i.f&524288)&&(i=i.first,e&16&&e&65536&&i!==null&&(i.f|=re))}if(i!==null&&(i.parent=n,n!==null&&Hn(i,n),H!==null&&H.f&2&&!(e&64))){var a=H;(a.effects??=[]).push(i)}return r}function Un(){return H!==null&&!U}function Wn(e){let t=z(8,null);return A(t,y),t.teardown=e,t}function Gn(e){Vn(`$effect`);var t=G.f;if(!H&&t&32&&O!==null&&!O.i){var n=O;(n.e??=[]).push(e)}else return Kn(e)}function Kn(e){return z(4|oe,e)}function qn(e){return Vn(`$effect.pre`),z(8|oe,e)}function Jn(e){en.ensure();let t=z(64|ae,e);return(e={})=>new Promise(n=>{e.outro?sr(t,()=>{V(t),n(void 0)}):(V(t),n(void 0))})}function Yn(e){return z(4,e)}function Xn(e){return z(le|ae,e)}function Zn(e,t=0){return z(8|t,e)}function Qn(e,t=[],n=[],r=[]){jt(r,t,n,t=>{z(8,()=>{e(...t.map(Z))})})}function $n(e,t=[],n=[],r=[]){jt(r,t,n,t=>{z(4,()=>e(...t.map(Z)))})}function er(e,t=0){return z(16|t,e)}function tr(e,t=0){return z(v|t,e)}function B(e){return z(32|ae,e)}function nr(e){var t=e.teardown;if(t!==null){let n=pr,r=H;mr(!0),W(null);try{t.call(null)}catch(t){R(t,e.parent)}finally{mr(n),W(r)}}}function rr(e,t=!1){var n=e.first;for(e.first=e.last=null;n!==null;){let e=n.ac;e!==null&&kt(()=>{e.abort(be)});var r=n.next;n.f&64?n.parent=null:V(n,t),n=r}}function ir(e){for(var t=e.first;t!==null;){var n=t.next;t.f&32||V(t),t=n}}function V(e,t=!0){var n=!1;(t||e.f&262144)&&e.nodes!==null&&e.nodes.end!==null&&(ar(e.nodes.start,e.nodes.end),n=!0),e.f|=ne,rr(e,t&&!n),Dr(e,0);var r=e.nodes&&e.nodes.t;if(r!==null)for(let e of r)e.stop();nr(e),e.f^=ne,e.f|=ee;var i=e.parent;i!==null&&i.first!==null&&or(e),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes=e.ac=e.b=null}function ar(e,t){for(;e!==null;){var n=e===t?null:L(e);e.remove(),e=n}}function or(e){var t=e.parent,n=e.prev,r=e.next;n!==null&&(n.next=r),r!==null&&(r.prev=n),t!==null&&(t.first===e&&(t.first=r),t.last===e&&(t.last=n))}function sr(e,t,n=!0){var r=[];e.f|=256,cr(e,r,!0);var i=()=>{n&&V(e),t&&t()},a=r.length;if(a>0){var o=()=>--a||i();for(var s of r)s.out(o)}else i()}function cr(e,t,n){if(!(e.f&8192)){e.f^=S;var r=e.nodes&&e.nodes.t;if(r!==null)for(let e of r)(e.is_global||n)&&t.push(e);for(var i=e.first;i!==null;){var a=i.next;if(!(i.f&64)){var o=!!(i.f&65536)||!!(i.f&32)&&!!(e.f&16);cr(i,t,o?n:!1)}i=a}}}function lr(e){e.f&=-257,ur(e,!0)}function ur(e,t){if(!(e.f&256)&&e.f&8192){e.f^=S,e.f&1024||(A(e,b),en.ensure().schedule(e));for(var n=e.first;n!==null;){var r=n.next,i=!!(n.f&65536)||!!(n.f&32);ur(n,i?t:!1),n=r}var a=e.nodes&&e.nodes.t;if(a!==null)for(let e of a)(e.is_global||t)&&e.in()}}function dr(e,t){if(e.nodes)for(var n=e.nodes.start,r=e.nodes.end;n!==null;){var i=n===r?null:L(n);t.append(n),n=i}}var fr=null,pr=!1;function mr(e){pr=e}var H=null,U=!1;function W(e){H=e}var G=null;function K(e){G=e}var q=null;function hr(e){H!==null&&(H.f&2097152||H.f&2)&&(q??=new Set).add(e)}var J=null,Y=0,X=null;function gr(e){X=e}var _r=1,vr=0,yr=vr;function br(e){yr=e}function xr(){return++_r}function Sr(e){var t=e.f;if(t&2048)return!0;if(t&4096){for(var n=e.deps,r=n.length,i=0;ie.wv)return!0}t&512&&M===null&&A(e,y)}return!1}function Cr(e,t,n=!0){var r=e.reactions;if(r!==null&&!(q!==null&&q.has(e)))for(var i=0;i{e.ac.abort(be)}),e.ac=null);try{e.f|=ce;var u=e.fn,d=u();e.f|=te;var f=Tr(e);if(yt()&&X!==null&&!U&&f!==null&&!(e.f&6146))for(var p=0;p0)for(t.length=Y+J.length,r=0;r{s.ac.abort(be),s.ac=null,A(s,b)}),Ut(s),Dr(s,0)}}function Dr(e,t){var n=e.deps;if(n!==null)for(var r=t;rn?.call(this,e))}return e.startsWith(`pointer`)||e.startsWith(`touch`)||e===`wheel`?(i.__removed=!1,k(()=>{i.__removed||t.addEventListener(e,i,r)})):t.addEventListener(e,i,r),i}function qr(e,t,n,r,i){var a={capture:r,passive:i},o=Kr(e,t,n,a);(t===document.body||t===window||t===document||t instanceof HTMLMediaElement)&&Wn(()=>{o.__removed=!0,t.removeEventListener(e,o,a)})}function Jr(e,t,n){(t[Ur]??={})[e]=n}function Yr(e){for(var t=0;t{Zr=!1,Xr=null}));var s=0,c=Xr===e&&e[Ur];if(c){var l=i.indexOf(c);if(l!==-1&&(t===document||t===window)){e[Ur]=t;return}var u=i.indexOf(t);if(u===-1)return;l<=u&&(s=l)}if(a=i[s]||e.target,a!==t){o(e,`currentTarget`,{configurable:!0,get(){return a||n}});var d=H,f=G;W(null),K(null);try{for(var p,m=[];a!==null&&a!==t;){try{var h=a[Ur]?.[r];h!=null&&(!a.disabled||e.target===a)&&h.call(a,e)}catch(e){p?m.push(e):p=e}if(e.cancelBubble)break;s++,a=s{throw e});throw p}}finally{e[Ur]=t,delete e.currentTarget,W(d),K(f)}}}var $r=globalThis?.window?.trustedTypes&&globalThis.window.trustedTypes.createPolicy(`svelte-trusted-html`,{createHTML:e=>e});function ei(e){return $r?.createHTML(e)??e}function ti(e){var t=Rn(`template`);return t.innerHTML=ei(e.replaceAll(``,``)),t.content}function $(e,t){var n=G;n.nodes===null&&(n.nodes={start:e,end:t,a:null,t:null})}function ni(e,t){var n=!!(t&1),r=!!(t&2),i,a=!e.startsWith(``);return()=>{if(w)return $(E,null),E;i===void 0&&(i=ti(a?e:``+e),n||(i=I(i)));var t=r||On?document.importNode(i,!0):i.cloneNode(!0);if(n){var o=I(t),s=t.lastChild;$(o,s)}else $(t,t);return t}}function ri(e,t,n=`svg`){var r=!e.startsWith(``),i=!!(t&1),a=`<${n}>${r?e:``+e}`,o;return()=>{if(w)return $(E,null),E;if(!o){var e=I(ti(a));if(i)for(o=document.createDocumentFragment();I(e);)o.appendChild(I(e));else o=I(e)}var t=o.cloneNode(!0);if(i){var n=I(t),r=t.lastChild;$(n,r)}else $(t,t);return t}}function ii(e,t){return ri(e,t,`svg`)}function ai(e=``){if(!w){var t=F(e+``);return $(t,t),t}var n=E;return n.nodeType===3?zn(n):(n.before(n=F()),D(n)),$(n,n),n}function oi(){if(w)return $(E,null),E;var e=document.createDocumentFragment(),t=document.createComment(``),n=F();return e.append(t,n),$(t,n),e}function si(e,t){if(w){var n=G;(!(n.f&32768)||n.nodes.end===null)&&(n.nodes.end=E),je()}else e!==null&&e.before(t)}function ci(e){let t=0,n=mn(0),r;return()=>{Un()&&(Z(n),Zn(()=>(t===0&&(r=Q(()=>e(()=>xn(n)))),t+=1,()=>{k(()=>{--t,t===0&&(r?.(),r=void 0,xn(n))})})))}}var li=re|ae;function ui(e,t,n,r){new di(e,t,n,r)}var di=class{parent;is_pending=!1;transform_error;#e;#t=w?E:null;#n;#r;#i;#a=null;#o=null;#s=null;#c=null;#l=0;#u=0;#d=!1;#f=new Set;#p=new Set;#m=null;#h=ci(()=>(this.#m=mn(this.#l),()=>{this.#m=null}));constructor(e,t,n,r){this.#e=e,this.#n=t,this.#r=e=>{var t=G;t.b=this,t.f|=128,n(e)},this.parent=G.b,this.transform_error=r??this.parent?.transform_error??(e=>e),this.#i=er(()=>{if(w){let e=Fe(this.#t);je();let t=e===`[!`;if(e.startsWith(`[?`)){let t=JSON.parse(e.slice(2));this.#_(t)}else t?this.#b():this.#g()}else this.#x()},li),w&&(this.#e=E)}#g(){try{this.#a=B(()=>this.#r(this.#e))}catch(e){this.error(e)}}#_(e){let t=this.#n.failed,{reset:n,invoke_onerror:r}=this.#v(e);k(r),t&&(this.#s=B(()=>{t(this.#e,()=>e,()=>n)}))}#v(e){var t=!1,n=!1;let r=()=>{this.#y()||(t?ke():(t=!0,n&&rt(),this.#s!==null&&sr(this.#s,()=>{this.#s=null}),this.#C(()=>{this.#x()})))};return{reset:r,invoke_onerror:()=>{if(!this.#y())try{n=!0,this.#n.onerror?.(e,r),n=!1}catch(e){R(e,this.#i&&this.#i.parent)}}}}#y(){return(this.#i.f&(ee|ne))!==0}#b(){let e=this.#n.pending;e&&(this.is_pending=!0,this.#o=B(()=>e(this.#e)),k(()=>{if(!this.#y()){var e=this.#c=document.createDocumentFragment(),t=F(),n=!1;e.append(t),this.#a=this.#C(()=>{try{return B(()=>this.#r(t))}catch(e){try{this.error(e),n=!0}catch(e){R(e,this.#i.parent)}return null}}),this.#a===null?(this.#c=null,n&&this.#S(j)):this.#u===0&&(this.#e.before(e),this.#c=null,sr(this.#o,()=>{this.#o=null}),this.#S(j))}}))}#x(){try{if(this.is_pending=this.has_pending_snippet(),this.#u=0,this.#l=0,this.#a=B(()=>{this.#r(this.#e)}),this.#u>0){var e=this.#c=document.createDocumentFragment();dr(this.#a,e);let t=this.#n.pending;this.#o=B(()=>t(this.#e))}else this.#S(j)}catch(e){this.error(e)}}#S(e){this.is_pending=!1,e.transfer_effects(this.#f,this.#p)}defer_effect(e){Tt(e,this.#f,this.#p)}is_rendered(){return!this.is_pending&&(!this.parent||this.parent.is_rendered())}has_pending_snippet(){return!!this.#n.pending}#C(e){var t=G,n=H,r=O;K(this.#i),W(this.#i),ut(this.#i.ctx);try{return en.ensure(),e()}finally{K(t),W(n),ut(r)}}#w(e,t){this.has_pending_snippet()?(this.#u+=e,this.#u===0&&(this.#S(t),this.#o&&sr(this.#o,()=>{this.#o=null}),this.#c&&=(this.#e.before(this.#c),null))):this.parent&&this.parent.#w(e,t)}update_pending_count(e,t){this.#w(e,t),this.#l+=e,!(!this.#m||this.#d)&&(this.#d=!0,k(()=>{this.#d=!1,this.#m&&yn(this.#m,this.#l)}))}get_effect_pending(){return this.#h(),Z(this.#m)}error(e){if(e===Se||!this.#n.onerror&&!this.#n.failed)throw e;j?.is_fork?(this.#a&&j.skip_effect(this.#a),this.#o&&j.skip_effect(this.#o),this.#s&&j.skip_effect(this.#s),j.oncommit(()=>{this.#y()||this.#T(e)})):this.#T(e)}#T(e){this.#a&&=(V(this.#a),null),this.#o&&=(V(this.#o),null),this.#s&&=(V(this.#s),null),w&&(D(this.#t),Ne(),D(Pe()));let t=this.#n.failed,n=e=>{if(this.#y())return;let{reset:n,invoke_onerror:r}=this.#v(e);r(),t&&!this.#y()&&(this.#s=this.#C(()=>{try{return B(()=>{var r=G;r.b=this,r.f|=128,t(this.#e,()=>e,()=>n)})}catch(e){return R(e,this.#i.parent),null}}))};k(()=>{if(!this.#y()){var t;try{t=this.transform_error(e)}catch(e){R(e,this.#i&&this.#i.parent);return}typeof t==`object`&&t&&typeof t.then==`function`?t.then(n,e=>R(e,this.#i&&this.#i.parent)):n(t)}})}},fi=!0;function pi(e){fi=e}function mi(e,t){var n=t==null?``:typeof t==`object`?`${t}`:t;n!==(e[ve]??=e.nodeValue)&&(e[ve]=n,e.nodeValue=`${n}`)}function hi(e,t){return vi(e,t)}function gi(e,t){jn(),t.intro=t.intro??!1;let n=t.target,r=w,i=E;try{for(var a=I(n);a&&(a.nodeType!==8||a.data!==`[`);)a=L(a);if(!a)throw Se;T(!0),D(a);let r=vi(e,{...t,anchor:a});return T(!1),r}catch(r){if(r instanceof Error&&r.message.split(` +`).some(e=>e.startsWith(`https://svelte.dev/e/`)))throw r;return r!==Se&&console.warn(`Failed to hydrate: `,r),t.recover===!1&&Ze(),jn(),In(n),T(!1),hi(e,t)}finally{T(r),D(i)}}var _i=new Map;function vi(e,{target:t,anchor:n,props:r={},events:i,context:o,intro:s=!0,transformError:c}){jn();var l=void 0,u=Jn(()=>{var u=n??t.appendChild(F());ui(u,{pending:()=>{}},t=>{gt({});var n=O;if(o&&(n.c=o),i&&(r.$$events=i),w&&$(t,null),fi=s,l=e(t,r)||vt(),fi=!0,w&&(G.nodes.end=E,E===null||E.nodeType!==8||E.data!==`]`))throw De(),Se;_t()},c);var d=new Set,f=e=>{for(var n=0;n{for(var e of d)for(let n of[t,document]){var r=_i.get(n),i=r.get(e);--i==0?(n.removeEventListener(e,Qr),r.delete(e),r.size===0&&_i.delete(n)):r.set(e,i)}Gr.delete(f),u!==n&&u.parentNode?.removeChild(u)}});return yi.set(l,u),l}var yi=new WeakMap;function bi(e,t){let n=yi.get(e);return n?(yi.delete(e),n(t)):Promise.resolve()}var xi=class{anchor;#e=new Map;#t=new Map;#n=new Map;#r=new Set;#i=!0;constructor(e,t=!0){this.anchor=e,this.#i=t}#a=e=>{if(this.#e.has(e)){var t=this.#e.get(e),n=this.#t.get(t);if(n)lr(n),this.#r.delete(t);else{var r=this.#n.get(t);r&&(lr(r.effect),this.#t.set(t,r.effect),this.#n.delete(t),r.fragment.lastChild.remove(),this.anchor.before(r.fragment),n=r.effect)}for(let[t,n]of this.#e){if(this.#e.delete(t),t===e)break;let r=this.#n.get(n);r&&(V(r.effect),this.#n.delete(n))}for(let[e,r]of this.#t){if(e===t||this.#r.has(e))continue;let i=()=>{if(Array.from(this.#e.values()).includes(e)){var t=document.createDocumentFragment();dr(r,t),t.append(F()),this.#n.set(e,{effect:r,fragment:t})}else V(r);this.#r.delete(e),this.#t.delete(e)};this.#i||!n?(this.#r.add(e),sr(r,i,!1)):i()}}};#o=e=>{this.#e.delete(e);let t=Array.from(this.#e.values());for(let[e,n]of this.#n)t.includes(e)||(V(n.effect),this.#n.delete(e))};ensure(e,t){var n=j,r=Ln();if(t&&!this.#t.has(e)&&!this.#n.has(e)){if(r){var i=document.createDocumentFragment(),a=F();i.append(a),this.#n.set(e,{effect:B(()=>t(a)),fragment:i})}else this.#t.set(e,B(()=>t(this.anchor)))}if(this.#e.set(n,e),r){for(let[t,r]of this.#t)t===e?n.unskip_effect(r):n.skip_effect(r);for(let[t,r]of this.#n)t===e?n.unskip_effect(r.effect):n.skip_effect(r.effect);n.oncommit(this.#a),n.ondiscard(this.#o)}else w&&(this.anchor=E),this.#a(n)}};function Si(e,t,n=!1){var r;w&&(r=E,je());var i=new xi(e),a=n?re:0;function o(e,t){if(w){var n=Fe(r);if(e!==parseInt(n.substring(1))){var a=Pe();D(a),i.anchor=a,T(!1),i.ensure(e,t),T(!0);return}}i.ensure(e,t)}er(()=>{var e=!1;t((t,n=0)=>{e=!0,o(n,t)}),e||o(-1,null)},a)}var Ci=Symbol(`NaN`);function wi(e,t,n){w&&je();var r=new xi(e),i=!yt();er(()=>{var e=t();e!==e&&(e=Ci),i&&typeof e==`object`&&e&&(e={}),r.ensure(e,n)})}function Ti(e,t){return t}function Ei(e,t,n){for(var r=[],i=t.length,o,s=t.length,c=0;c{if(o){if(o.pending.delete(n),o.done.add(n),o.pending.size===0){var t=e.outrogroups;Di(e,a(o.done)),t.delete(o),t.size===0&&(e.outrogroups=null)}}else--s},!1)}if(s===0){var l=r.length===0&&n!==null&&e.pending.size===0;if(l){var u=n,d=u.parentNode;In(d),d.append(u),e.items.clear()}Di(e,t,!l)}else o={pending:new Set(t),done:new Set},(e.outrogroups??=new Set).add(o)}function Di(e,t,n=!0){var r;if(e.pending.size>0){r=new Set;for(let t of e.pending.values())for(let n of t)r.add(e.items.get(n).e)}for(var i=0;i{var e=r();return n(e)?e:e==null?[]:a(e)}),p=new Map,m=!0;function h(e){if(!(_.effect.f&16384)){_.pending.delete(e);var n=Z(f);_.fallback=d,ji(_,n,c,t,i),d!==null&&(n.length===0?d.f&33554432?(d.f^=se,Ni(d,null,c)):lr(d):sr(d,()=>{d=null}))}}function g(e){_.pending.delete(e)}var _={effect:er(()=>{var e=Z(f),n=e.length;let a=!1;w&&Fe(c)===`[!`!=(n===0)&&(c=Pe(),D(c),T(!1),a=!0);for(var u=new Set,_=j,v=Ln(),y=0;ys(c)):(d=B(()=>s(Oi??=F())),d.f|=se)),n>u.size&&Ue(``,``,``),w&&n>0&&D(Pe()),!m){if(p.set(_,u),v){for(let[e,t]of l)u.has(e)||_.skip_effect(t.e);_.oncommit(h),_.ondiscard(g)}else h(_)}a&&T(!0),Z(f)}),flags:t,items:l,pending:p,outrogroups:null,fallback:d};m=!1,w&&(c=E)}function Ai(e){for(;e!==null&&!(e.f&32);)e=e.next;return e}function ji(e,t,n,r,i){var o=!!(r&8),s=t.length,c=e.items,l=Ai(e.effect.first),u,d=null,f,p=[],m=[],h,g,_,v;if(o)for(v=0;v0){var re=r&4&&s===0?n:null;if(o){for(v=0;v{if(f!==void 0)for(_ of f)_.nodes?.a?.apply()})}function Mi(e,t,n,r,i,a,o,s){var c=o&1?o&16?mn(n):gn(n,!1,!1):null,l=o&2?mn(i):null;return{v:c,i:l,e:B(()=>(a(t,c??n,l??i,s),()=>{e.delete(r)}))}}function Ni(e,t,n){if(e.nodes)for(var r=e.nodes.start,i=e.nodes.end,a=t&&!(t.f&33554432)?t.nodes.start:n;r!==null;){var o=L(r);if(a.before(r),r===i)return;r=o}}function Pi(e,t,n){t===null?e.effect.first=n:t.next=n,n===null?e.effect.last=t:n.prev=t}function Fi(e,t,...n){var r=new xi(e);er(()=>{let e=t()??null;r.ensure(e,e&&(t=>e(t,...n)))},re)}function Ii(e){return(t,...n)=>{var r=e(...n),i;w?(i=E,je()):(i=I(ti(r.render().trim())),t.before(i));let a=r.setup?.(i);$(i,i),typeof a==`function`&&Wn(a)}}function Li(e,t,n){var r;w&&(r=E,je());var i=new xi(e);er(()=>{var e=t()??null;if(w&&Fe(r)===`[`!=(e!==null)){var a=Pe();D(a),i.anchor=a,T(!1),i.ensure(e,e&&(t=>n(t,e))),T(!0)}else i.ensure(e,e&&(t=>n(t,e)))},re)}var Ri=()=>performance.now(),zi={tick:e=>requestAnimationFrame(e),now:()=>Ri(),tasks:new Set};function Bi(){let e=zi.now();zi.tasks.forEach(t=>{t.c(e)||(zi.tasks.delete(t),t.f())}),zi.tasks.size!==0&&zi.tick(Bi)}function Vi(e){let t;return zi.tasks.size===0&&zi.tick(Bi),{promise:new Promise(n=>{zi.tasks.add(t={c:e,f:n})}),abort(){zi.tasks.delete(t)}}}function Hi(e,t){kt(()=>{e.dispatchEvent(new CustomEvent(t))})}function Ui(e){if(e===`float`)return`cssFloat`;if(e===`offset`)return`cssOffset`;if(e.startsWith(`--`))return e;let t=e.split(`-`);return t.length===1?t[0]:t[0]+t.slice(1).map(e=>e[0].toUpperCase()+e.slice(1)).join(``)}function Wi(e){let t={},n=e.split(`;`);for(let e of n){let[n,r]=e.split(`:`);if(!n||r===void 0)break;let i=Ui(n.trim());t[i]=r.trim()}return t}var Gi=e=>e;function Ki(e,t,n,r){var i=!!(e&1),a=!!(e&2),o=i&&a,s=!!(e&4),c=o?`both`:i?`in`:`out`,l,u=t.inert,d=t.style.overflow,f,p;function m(){return kt(()=>l??=n()(t,r?.()??{},{direction:c}))}var h={is_global:s,in(){t.inert=u,i?(a||f?.abort(),f=qi(t,m(),p,1,()=>{Hi(t,`introstart`)},()=>{Hi(t,`introend`),f?.abort(),f=l=void 0,t.style.overflow=d})):(p?.abort(),p?.reset?.())},out(e){a?(t.inert=!0,p=qi(t,m(),f,0,()=>{Hi(t,`outrostart`)},()=>{Hi(t,`outroend`),e?.()})):(e?.(),l=void 0)},stop:()=>{f?.abort(),p?.abort()}},g=G;if((g.nodes.t??=[]).push(h),i&&fi){var _=s;if(!_){for(var v=g.parent;v&&v.f&65536;)for(;(v=v.parent)&&!(v.f&16););_=!v||!!(v.f&32768)}_&&Yn(()=>{Q(()=>h.in())})}}function qi(e,t,n,r,i,a){var o=r===1,s=!1;if(p(t)){var c;return k(()=>{s||(c=qi(e,t({direction:o?`in`:`out`}),n,r,i,a))}),{abort:()=>{s=!0,c?.abort()},deactivate:()=>c?.deactivate(),reset:()=>c?.reset(),t:()=>c?.t()??1-r}}if(n?.deactivate(),!t?.duration&&!t?.delay)return i(),a(),{abort:m,deactivate:m,reset:m,t:()=>r};let{delay:l=0,css:u,tick:d,easing:f=Gi}=t;var h,g=()=>1-r;return k(()=>{if(!s){var c=[];if(o&&n===void 0&&(d&&d(0,1),u)){var p=Wi(u(0,1));c.push(p,p)}h=e.animate(c,{duration:l,fill:`forwards`}),h.onfinish=()=>{h.cancel(),i();var o=n?.t()??1-r;n?.abort();var s=r-o,c=t.duration*Math.abs(s),l=[];if(c>0){var p=!1;if(u)for(var m=Math.ceil(c/(1e3/60)),_=0;_<=m;_+=1){var v=o+s*f(_/m),y=Wi(u(v,1-v));l.push(y),p||=y.overflow===`hidden`}p&&(e.style.overflow=`hidden`),g=()=>{var e=h.currentTime;return o+s*f(e/c)},d&&Vi(()=>{if(h.playState!==`running`)return!1;var e=g();return d(e,1-e),!0})}h=e.animate(l,{duration:c,fill:`forwards`}),h.onfinish=()=>{g=()=>r,d?.(r,1-r),a()}}}}),{abort:()=>{s=!0,h&&(h.cancel(),h.effect=null,h.onfinish=m)},deactivate:()=>{a=m},reset:()=>{r===0&&d?.(1,0)},t:()=>g()}}function Ji(e,t,n,r,i,a){let o=w;w&&je();var s=null;w&&E.nodeType===1&&(s=E,je());var c=w?E:e,l=new xi(c,!1);er(()=>{let e=t()||null;var a=i?i():n||e===`svg`?we:void 0;if(e===null)l.ensure(null,null),pi(!0);else return l.ensure(e,t=>{if(e){var n=w;if(s=w?s:Rn(e,a),$(s,s),r){var i=null;w&&Hr(e)&&s.append(i=document.createComment(``));var o=w?I(s):s.appendChild(F());w&&(o===null?T(!1):D(o)),r(s,o),i?.remove()}G.nodes.end=s,n||t.before(s)}w&&D(t)}),pi(!0),()=>{e&&pi(!1)}},re),Wn(()=>{pi(!0)}),o&&(T(!0),D(c))}function Yi(e,t){let n=null,r=w;var i;if(w){n=E;for(var a=I(document.head);a!==null&&(a.nodeType!==8||a.data!==e);)a=L(a);if(a===null)T(!1);else{var o=L(a);a.remove(),D(o)}}w||(i=document.head.appendChild(F()));try{er(()=>{var e=B(()=>t(i));e.f|=ie,w||(e.nodes===null?e.nodes={start:i,end:i,a:null,t:null}:e.nodes.end=i)})}finally{r&&(T(!0),D(n))}}function Xi(e,t){var n=void 0,r;tr(()=>{n!==(n=t())&&(r&&=(V(r),null),n&&(r=B(()=>{Yn(()=>n(e))})))})}function Zi(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`){if(Array.isArray(e)){var i=e.length;for(t=0;t=0;){var s=o+a;(o===0||ea.includes(r[o-1]))&&(s===r.length||ea.includes(r[s]))?r=(o===0?``:r.substring(0,o))+r.substring(s+1):o=s}}return r===``?null:r}function na(e,t=!1){var n=t?` !important;`:`;`,r=``;for(var i of Object.keys(e)){var a=e[i];a!=null&&a!==``&&(r+=` `+i+`: `+a+n)}return r}function ra(e){return e[0]!==`-`||e[1]!==`-`?e.toLowerCase():e}function ia(e,t){if(t){var n=``,r,i;if(Array.isArray(t)?(r=t[0],i=t[1]):r=t,e){e=String(e).replaceAll(/\/\*.*?\*\//g,``).trim();var a=!1,o=0,s=!1,c=[];r&&c.push(...Object.keys(r).map(ra)),i&&c.push(...Object.keys(i).map(ra));var l=0,u=-1;let t=e.length;for(var d=0;d{t.every(ha)||(`__defaultValue`in e&&ua(e,!1),`__value`in e&&da(e,e.__value))});t.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`value`]}),Wn(()=>{t.disconnect()})}function pa(e,t,n=t){var r=new WeakSet,i=!0;At(e,`change`,t=>{var i=t?`[selected]`:`:checked`,a;if(e.multiple)a=[].map.call(e.querySelectorAll(i),ma);else{var o=e.querySelector(i)??e.querySelector(`option:not([disabled])`);a=o&&ma(o)}n(a),e.__value=a,j!==null&&r.add(j)}),Yn(()=>{var a=t();if(e===document.activeElement){var o=j;if(r.has(o))return}if(da(e,a,i),i&&a===void 0){var s=e.querySelector(`:checked`);s!==null&&(a=ma(s),n(a))}e.__value=a,i=!1})}function ma(e){return`__value`in e?e.__value:e.value}function ha(e){if(e.target.closest(`selectedcontent`)!==null)return!0;if(e.type===`childList`){var t=[...e.addedNodes,...e.removedNodes];return t.length>0&&t.every(e=>e.nodeName===`SELECTEDCONTENT`)}return!1}var ga=Symbol(`class`),_a=Symbol(`style`),va=Symbol(`is custom element`),ya=Symbol(`is html`),ba=xe?`link`:`LINK`,xa=xe?`input`:`INPUT`,Sa=xe?`option`:`OPTION`,Ca=xe?`select`:`SELECT`,wa=xe?`progress`:`PROGRESS`;function Ta(e){if(w){var t=!1,n=()=>{if(!t){if(t=!0,e.hasAttribute(`value`)){var n=e.value;Oa(e,`value`,null),e.value=n}if(e.hasAttribute(`checked`)){var r=e.checked;Oa(e,`checked`,null),e.checked=r}}};e[ye]=n,k(n),Ot()}}function Ea(e,t){var n=ja(e);n.value!==(n.value=t??void 0)&&(e.value!==t||t===0&&e.nodeName===wa)&&(e.value=t??``)}function Da(e,t){var n=ja(e);n.checked!==(n.checked=t??void 0)&&(e.checked=t)}function Oa(e,t,n,r){var i=ja(e);w&&(i[t]=e.getAttribute(t),t===`src`||t===`srcset`||t===`href`&&e.nodeName===ba)||i[t]!==(i[t]=n)&&(t===`loading`&&(e[me]=n),n==null?e.removeAttribute(t):typeof n!=`string`&&Na(e).has(t)?e[t]=n:e.setAttribute(t,n))}function ka(e,t,n,r,i=!1,a=!1){w&&i&&e.nodeName===xa&&(`defaultValue`in n||`defaultChecked`in n||Ta(e));var o=ja(e),s=o[va],c=!o[ya];let l=w&&s;l&&T(!1);var u=t||{},d=e.nodeName===Sa,f=e.nodeName===Ca;try{for(var p in t)!(p in n)&&p[0]+p[1]!==`$$`&&(n[p]=null);n.class?n.class=$i(n.class):(r||n[ga])&&(n.class=null),n[_a]&&(n.style??=null);var m=Na(e);if(e.nodeName===xa&&`type`in n&&(`value`in n||`__value`in n)){var h=n.type;(h!==u.type||h===void 0&&e.hasAttribute(`type`))&&(u.type=h,Oa(e,`type`,h,a))}for(let i in n){let l=n[i];if(d&&i===`value`&&l==null)e.value=e.__value=``,u[i]=l;else if(i===`class`)aa(e,e.namespaceURI===`http://www.w3.org/1999/xhtml`,l,r,t?.[ga],n[ga]),u[i]=l,u[ga]=n[ga];else if(i===`style`)sa(e,l,t?.[_a],n[_a]),u[i]=l,u[_a]=n[_a];else{var g=u[i];if(l!==g||l===void 0&&e.hasAttribute(i)){u[i]=l;var _=i[0]+i[1];if(_!==`$$`){if(_===`on`){let t={},n=`$$`+i,r=i.slice(2);var v=Fr(r);if(Nr(r)&&(r=r.slice(0,-7),t.capture=!0),!v&&g){if(l!=null)continue;e.removeEventListener(r,u[n],t),u[n]=null}if(v)Jr(r,e,l),Yr([r]);else if(l!=null){function a(e){u[i].call(this,e)}u[n]=Kr(r,e,a,t)}}else if(i===`style`)Oa(e,i,l);else if(i===`autofocus`)Et(e,!!l);else if(!s&&(i===`__value`||i===`value`&&l!=null))e.__value=l,(g==null||e.value!==l||l===0&&e.nodeName===wa)&&(e.value=l);else if(i===`selected`&&d)ca(e,l);else{var y=i;c||(y=Rr(y));var b=y===`defaultValue`||y===`defaultChecked`;if(f&&y===`defaultValue`)continue;if(l==null&&!s&&!b){if(o[i]=null,y===`value`||y===`checked`){let n=e,r=t===void 0;if(y===`value`){let e=n.defaultValue;n.removeAttribute(y),n.defaultValue=e,n.value=n.__value=r?e:null}else{let e=n.defaultChecked;n.removeAttribute(y),n.defaultChecked=e,n.checked=r?e:!1}}else e.removeAttribute(i)}else b||(s||typeof l!=`string`)&&m.has(y)?(e[y]=l,y in o&&(o[y]=C)):typeof l!=`function`&&Oa(e,y,l,a)}}}}}}finally{l&&T(!0)}return u}function Aa(e,t,n=[],r=[],i=[],a,o=!1,s=!1){jt(i,n,r,n=>{var r=void 0,i={},c=e.nodeName===Ca,l=!1;if(tr(()=>{var u=t(...n.map(Z)),d=ka(e,r,u,a,o,s);if(l&&c){var f=e;`defaultValue`in u&&la(f,u.defaultValue),`value`in u&&da(f,u.value)}for(let e of Object.getOwnPropertySymbols(i))u[e]||V(i[e]);for(let t of Object.getOwnPropertySymbols(u)){var p=u[t];t.description===`@attach`&&(!r||p!==r[t])&&(i[t]&&V(i[t]),i[t]=B(()=>Xi(e,()=>p))),d[t]=p}r=d}),c){var u=e;Yn(()=>{var e=r;`defaultValue`in e&&la(u,e.defaultValue),da(u,e.value,!0),fa(u)})}l=!0})}function ja(e){return e[he]??={[va]:e.nodeName.includes(`-`),[ya]:e.namespaceURI===Ce}}var Ma=new Map;function Na(e){var t=e.getAttribute(`is`)||e.nodeName,n=Ma.get(t);if(n)return n;Ma.set(t,n=new Set);for(var r,i=e,a=Element.prototype;a!==i;){for(var o in r=c(i),r)r[o].set&&o!==`innerHTML`&&o!==`textContent`&&o!==`innerText`&&n.add(o);i=d(i)}return n}function Pa(e,t,n=t){var r=new WeakSet;At(e,`input`,async i=>{var a=i?e.defaultValue:e.value;if(a=Ia(e)?La(a):a,n(a),j!==null&&r.add(j),await kr(),a!==(a=t())){var o=e.selectionStart,s=e.selectionEnd,c=e.value.length;if(e.value=a??``,s!==null){var l=e.value.length;o===s&&s===c&&l>c?(e.selectionStart=l,e.selectionEnd=l):(e.selectionStart=o,e.selectionEnd=Math.min(s,l))}}}),(w&&e.defaultValue!==e.value||Q(t)==null&&e.value)&&(n(Ia(e)?La(e.value):e.value),j!==null&&r.add(j)),Zn(()=>{var n=t();if(e===document.activeElement){var i=j;if(r.has(i))return}Ia(e)&&n===La(e.value)||(e.type!==`date`||n||e.value)&&n!==e.value&&(e.value=n??``)})}function Fa(e,t,n=t){At(e,`change`,t=>{n(t?e.defaultChecked:e.checked)}),(w&&e.defaultChecked!==e.checked||Q(t)==null)&&n(e.checked),Zn(()=>{e.checked=!!t()})}function Ia(e){var t=e.type;return t===`number`||t===`range`}function La(e){return e===``?null:+e}function Ra(e,t){return e===t||e?.[de]===t}function za(e=vt(),t,n,r){var i=O.r,a=G;return Yn(()=>{var o,s;return Zn(()=>{o=s,s=r?.()||[],Q(()=>{Ra(n(...s),e)||(t(e,...s),o&&Ra(n(...o),e)&&t(null,...o))})}),()=>{let r=a;for(;r!==i&&r.parent!==null&&r.parent.f&33554432;)r=r.parent;let o=()=>{s&&Ra(n(...s),e)&&t(null,...s)},c=r.teardown;r.teardown=()=>{o(),c?.()}}}),e}var Ba=[];function Va(e,t=m){let n=null,r=new Set;function i(t){if(Le(e,t)&&(e=t,n)){let t=!Ba.length;for(let t of r)t[1](),Ba.push(t,e);if(t){for(let e=0;e{r.delete(c),r.size===0&&n&&(n(),n=null)}}return{set:i,update:a,subscribe:o}}var Ha=!1;function Ua(e){var t=Ha;try{return Ha=!1,[e(),Ha]}finally{Ha=t}}var Wa={get(e,t){if(!e.exclude.has(t))return e.props[t]},set(e,t){return!1},getOwnPropertyDescriptor(e,t){if(!e.exclude.has(t)&&t in e.props)return{enumerable:!0,configurable:!0,value:e.props[t]}},has(e,t){return!e.exclude.has(t)&&t in e.props},ownKeys(e){return Reflect.ownKeys(e.props).filter(t=>!e.exclude.has(t))}};function Ga(e,t,n){return new Proxy({props:e,exclude:t},Wa)}var Ka={get(e,t){let n=e.props.length;for(;n--;){let r=e.props[n];if(p(r)&&(r=r()),typeof r==`object`&&r&&t in r)return r[t]}},set(e,t,n){let r=e.props.length;for(;r--;){let i=e.props[r];p(i)&&(i=i());let a=s(i,t);if(a&&a.set)return a.set(n),!0}return!1},getOwnPropertyDescriptor(e,t){let n=e.props.length;for(;n--;){let r=e.props[n];if(p(r)&&(r=r()),typeof r==`object`&&r&&t in r){let e=s(r,t);return e&&!e.configurable&&(e.configurable=!0),e}}},has(e,t){if(t===de||t===pe)return!1;for(let n of e.props)if(p(n)&&(n=n()),n!=null&&t in n)return!0;return!1},ownKeys(e){let t=[];for(let n of e.props)if(p(n)&&(n=n()),n){for(let e in n)t.includes(e)||t.push(e);for(let e of Object.getOwnPropertySymbols(n))t.includes(e)||t.push(e)}return t}};function qa(...e){return new Proxy({props:e},Ka)}function Ja(e,t,n,r){var i=!0,a=!!(n&8),o=!!(n&16),c=r,l=!0,u=void 0,d=()=>o&&i?(u??=Ft(r),Z(u)):(l&&(l=!1,c=o?Q(r):r),c);let f;if(a){var p=de in e||pe in e;f=s(e,t)?.set??(p&&t in e?n=>e[t]=n:void 0)}var m,h=!1;a?[m,h]=Ua(()=>e[t]):m=e[t],m===void 0&&r!==void 0&&(m=d(),f&&(i&&$e(t),f(m)));var g=i?()=>{var n=e[t];return n===void 0?d():(l=!0,n)}:()=>{var n=e[t];return n!==void 0&&(c=void 0),n===void 0?c:n};if(i&&!(n&4))return g;if(f){var _=e.$$legacy;return(function(e,t){return arguments.length>0?((!i||!t||_||h)&&f(t?g():e),e):g()})}var v=!1,y=(n&1?Ft:zt)(()=>(v=!1,g()));a&&Z(y);var b=G;return(function(e,t){if(arguments.length>0){let n=t?Z(y):i&&a?Cn(e):e;return P(y,n),v=!0,c!==void 0&&(c=n),e}return pr&&v||b.f&16384?y.v:Z(y)})}function Ya(e){return class extends Xa{constructor(t){super({component:e,...t})}}}var Xa=class{#e;#t;constructor(e){var t=new Map,n=(e,n)=>{var r=gn(n,!1,!1);return t.set(e,r),r};let r=new Proxy({...e.props||{},$$events:{}},{get(e,r){return Z(t.get(r)??n(r,Reflect.get(e,r)))},has(e,r){return r===pe||(Z(t.get(r)??n(r,Reflect.get(e,r))),Reflect.has(e,r))},set(e,r,i){return P(t.get(r)??n(r,i),i),Reflect.set(e,r,i)}});this.#t=(e.hydrate?gi:hi)(e.component,{target:e.target,anchor:e.anchor,props:r,context:e.context,intro:e.intro??!1,recover:e.recover,transformError:e.transformError}),(!e?.props?.$$host||e.sync===!1)&&tn(),this.#e=r.$$events;for(let e of Object.keys(this.#t))e!==`$set`&&e!==`$destroy`&&e!==`$on`&&o(this,e,{get(){return this.#t[e]},set(t){this.#t[e]=t},enumerable:!0});this.#t.$set=e=>{Object.assign(r,e)},this.#t.$destroy=()=>{bi(this.#t)}}$set(e){this.#t.$set(e)}$on(e,t){this.#e[e]=this.#e[e]||[];let n=(...e)=>t.call(this,...e);return this.#e[e].push(n),()=>{this.#e[e]=this.#e[e].filter(e=>e!==n)}}$destroy(){this.#t.$destroy()}};function Za(e,t){if(ze(`hydratable`),w){let t=window.__svelte?.h;if(t?.has(e))return t.get(e);Ee(e)}return t()}var Qa=t({afterUpdate:()=>ao,beforeUpdate:()=>io,createContext:()=>dt,createEventDispatcher:()=>ro,createRawSnippet:()=>Ii,flushSync:()=>tn,fork:()=>un,getAbortSignal:()=>$a,getAllContexts:()=>ht,getContext:()=>ft,hasContext:()=>mt,hydratable:()=>Za,hydrate:()=>gi,mount:()=>hi,onDestroy:()=>to,onMount:()=>eo,setContext:()=>pt,settled:()=>Ar,tick:()=>kr,unmount:()=>bi,untrack:()=>Q});function $a(){return H===null&&Xe(),(H.ac??=new AbortController).signal}function eo(e){O===null&&Be(`onMount`),Gn(()=>{let t=Q(e);if(typeof t==`function`)return t})}function to(e){O===null&&Be(`onDestroy`),eo(()=>()=>Q(e))}function no(e,t,{bubbles:n=!1,cancelable:r=!1}={}){return new CustomEvent(e,{detail:t,bubbles:n,cancelable:r})}function ro(){let e=O;return e===null&&Be(`createEventDispatcher`),(t,r,i)=>{let a=e.s.$$events?.[t];if(a){let o=n(a)?a.slice():[a],s=no(t,r,i);for(let t of o)t.call(e.x,s);return!s.defaultPrevented}return!0}}function io(e){O===null&&Be(`beforeUpdate`),O.l===null&&Qe(`beforeUpdate`),oo(O).b.push(e)}function ao(e){O===null&&Be(`afterUpdate`),O.l===null&&Qe(`afterUpdate`),oo(O).a.push(e)}function oo(e){var t=e.l;return t.u??={a:[],b:[],m:[]}}export{Fn as $,Si as A,Z as B,Ji as C,ki as D,Fi as E,ii as F,Qn as G,kr as H,ai as I,Dn as J,Gn as K,Yr as L,si as M,oi as N,Ti as O,ni as P,Pn as Q,Jr as R,Yi as S,Li as T,Q as U,Ar as V,$n as W,Mn as X,En as Y,Nn as Z,fa as _,Ga as a,_t as at,aa as b,za as c,at as ct,Aa as d,Ae as dt,Cn as et,Ta as f,m as ft,pa as g,Ea as h,Ja as i,ft as it,mi as j,wi as k,Fa as l,Ne as lt,Da as m,t as mt,eo as n,hn as nt,qa as o,gt as ot,Oa as p,_ as pt,qn as q,Ya as r,Rt as rt,Va as s,pt as st,Qa as t,P as tt,Pa as u,Me as ut,da as v,Ki as w,$i as x,sa as y,qr as z}; \ No newline at end of file diff --git a/dash/build/_app/immutable/chunks/CdZTpPUs.js b/dash/build/_app/immutable/chunks/CdZTpPUs.js deleted file mode 100644 index b177316..0000000 --- a/dash/build/_app/immutable/chunks/CdZTpPUs.js +++ /dev/null @@ -1,3 +0,0 @@ -var e=Object.defineProperty,t=(t,n)=>{let r={};for(var i in t)e(r,i,{get:t[i],enumerable:!0});return n||e(r,Symbol.toStringTag,{value:`Module`}),r},n=Array.isArray,r=Array.prototype.indexOf,i=Array.prototype.includes,a=Array.from,o=Object.defineProperty,s=Object.getOwnPropertyDescriptor,c=Object.getOwnPropertyDescriptors,l=Object.prototype,u=Array.prototype,d=Object.getPrototypeOf,f=Object.isExtensible;function p(e){return typeof e==`function`}var m=()=>{};function h(e){for(var t=0;t{e=n,t=r}),resolve:e,reject:t}}function _(e,t){if(Array.isArray(e))return e;if(t===void 0||!(Symbol.iterator in e))return Array.from(e);let n=[];for(let r of e)if(n.push(r),n.length===t)break;return n}var v=1<<24,y=1024,b=2048,x=4096,S=8192,ee=16384,te=32768,ne=1<<25,re=65536,ie=1<<18,ae=1<<19,oe=1<<20,se=1<<25,ce=1<<21,le=1<<22,ue=1<<23,de=Symbol(`$state`),fe=Symbol(`component`),pe=Symbol(`legacy props`),me=Symbol(``),he=Symbol(`attributes`),ge=Symbol(`class`),_e=Symbol(`style`),ve=Symbol(`text`),ye=Symbol(`form reset`),be=new class extends Error{name=`StaleReactionError`;message="The reaction that called `getAbortSignal()` was re-run or destroyed"},xe=!!globalThis.document?.contentType&&globalThis.document.contentType.includes(`xml`),Se={},C=Symbol(`uninitialized`),Ce=`http://www.w3.org/1999/xhtml`,we=`http://www.w3.org/2000/svg`;function Te(){console.warn(`https://svelte.dev/e/derived_inert`)}function Ee(e){console.warn(`https://svelte.dev/e/hydratable_missing_but_expected`)}function De(e){console.warn(`https://svelte.dev/e/hydration_mismatch`)}function Oe(){console.warn(`https://svelte.dev/e/select_multiple_invalid_value`)}function ke(){console.warn(`https://svelte.dev/e/svelte_boundary_reset_noop`)}var w=!1;function T(e){w=e}var E;function D(e){if(e===null)throw De(),Se;return E=e}function Ae(){return D(L(E))}function je(e){if(w){if(L(E)!==null)throw De(),Se;E=e}}function Me(e=1){if(w){for(var t=e,n=E;t--;)n=L(n);E=n}}function Ne(e=!0){for(var t=0,n=E;;){if(n.nodeType===8){var r=n.data;if(r===`]`){if(t===0)return n;--t}else(r===`[`||r===`[!`||r[0]===`[`&&!isNaN(Number(r.slice(1))))&&(t+=1)}var i=L(n);e&&n.remove(),n=i}}function Pe(e){if(!e||e.nodeType!==8)throw De(),Se;return e.data}function Fe(e){return e===this.v}function Ie(e,t){return e==e?e!==t||typeof e==`object`&&!!e||typeof e==`function`:t==t}function Le(e){return!Ie(e,this.v)}function Re(e){throw Error(`https://svelte.dev/e/experimental_async_required`)}function ze(e){throw Error(`https://svelte.dev/e/lifecycle_outside_component`)}function Be(){throw Error(`https://svelte.dev/e/missing_context`)}function Ve(){throw Error(`https://svelte.dev/e/async_derived_orphan`)}function He(e,t,n){throw Error(`https://svelte.dev/e/each_key_duplicate`)}function Ue(e){throw Error(`https://svelte.dev/e/effect_in_teardown`)}function We(){throw Error(`https://svelte.dev/e/effect_in_unowned_derived`)}function Ge(e){throw Error(`https://svelte.dev/e/effect_orphan`)}function Ke(){throw Error(`https://svelte.dev/e/effect_update_depth_exceeded`)}function qe(){throw Error(`https://svelte.dev/e/fork_discarded`)}function Je(){throw Error(`https://svelte.dev/e/fork_timing`)}function Ye(){throw Error(`https://svelte.dev/e/get_abort_signal_outside_reaction`)}function Xe(){throw Error(`https://svelte.dev/e/hydration_failed`)}function Ze(e){throw Error(`https://svelte.dev/e/lifecycle_legacy_only`)}function Qe(e){throw Error(`https://svelte.dev/e/props_invalid_value`)}function $e(){throw Error(`https://svelte.dev/e/state_descriptors_fixed`)}function et(){throw Error(`https://svelte.dev/e/state_prototype_fixed`)}function tt(){throw Error(`https://svelte.dev/e/state_unsafe_mutation`)}function nt(){throw Error(`https://svelte.dev/e/svelte_boundary_reset_onerror`)}var rt=[];function it(e,t=!1,n=!1){return at(e,new Map,``,rt,null,n)}function at(e,t,r,i,a=null,o=!1){if(typeof e==`object`&&e){var s=t.get(e);if(s!==void 0)return s;if(e instanceof Map)return new Map(e);if(e instanceof Set)return new Set(e);if(n(e)){var c=Array(e.length);t.set(e,c),a!==null&&t.set(a,c);for(var u=0;u(n(r)||Be(),e(r)),e=>t(r,e),()=>n(r)]}function st(e){let t=e.p;for(;t!==null&&t.c===null;)t=t.p;return t?.c??null}function ct(e,t){return e===null&&ze(t),e.c??=new Map(st(e)||void 0)}var O=null;function lt(e){O=e}function ut(){return ot(dt,ft,pt)}function dt(e){return ct(O,`getContext`).get(e)}function ft(e,t){return ct(O,`setContext`).set(e,t),t}function pt(e){return ct(O,`hasContext`).has(e)}function mt(){return ct(O,`getAllContexts`)}function ht(e,t=!1,n){O={p:O,i:!1,c:null,e:null,s:e,x:null,r:K,l:null}}function gt(e){var t=O,n=t.e;if(n!==null){t.e=null;for(var r of n)Gn(r)}return e!==void 0&&(t.x=e),t.i=!0,O=t.p,_t(e)}function _t(e={}){return o(e,fe,{value:!0}),e}function vt(){return!0}var yt=[];function bt(){var e=yt;yt=[],h(e)}function k(e){if(yt.length===0&&!qt){var t=yt;queueMicrotask(()=>{t===yt&&bt()})}yt.push(e)}function xt(){for(;yt.length>0;)bt()}var St=~(b|x|y);function A(e,t){e.f=e.f&St|t}function Ct(e){e.f&512||e.deps===null?A(e,y):A(e,x)}function wt(e,t,n){e.f&2048?t.add(e):e.f&4096&&n.add(e),A(e,y)}function Tt(e,t){if(t){let t=document.body;e.autofocus=!0,k(()=>{document.activeElement===t&&e.focus()})}}var Et=!1;function Dt(){Et||(Et=!0,document.addEventListener(`reset`,e=>{Promise.resolve().then(()=>{if(!e.defaultPrevented)for(let t of e.target.elements)t[ye]?.()})},{capture:!0}))}function Ot(e){var t=U,n=K;G(null),q(null);try{return e()}finally{G(t),q(n)}}function kt(e,t,n,r=n){e.addEventListener(t,()=>Ot(n));let i=e[ye];e[ye]=i?()=>{i(),r(!0)}:()=>r(!0),Dt()}function At(e,t,n,r){let i=vt()?Pt:Rt;var a=e.filter(e=>!e.settled),o=t.map(i);if(n.length===0&&a.length===0){r(o);return}var s=K,c=jt(),l=a.length===1?a[0].promise:a.length>1?Promise.all(a.map(e=>e.promise)):null;function u(e){if(!(s.f&16384)){c();try{r([...o,...e])}catch(e){R(e,s)}Mt()}}var d=Nt();if(n.length===0){l.then(()=>u([])).finally(d);return}function f(){Promise.all(n.map(e=>It(e))).then(u).catch(e=>R(e,s)).finally(d)}l?l.then(()=>{s.f&16384?d():(c(),f(),Mt())}):f()}function jt(){var e=K,t=U,n=O,r=j;return function(i=!0){q(e),G(t),lt(n),i&&!(e.f&16384)&&(r?.activate(),r?.apply())}}function Mt(e=!0){q(null),G(null),lt(null),e&&j?.deactivate()}function Nt(){var e=K,t=e.b,n=j,r=!!t?.is_rendered();return t?.update_pending_count(1,n),n.increment(r,e),()=>{t?.update_pending_count(-1,n),n.decrement(r,e)}}function Pt(e){var t=2|b;return K!==null&&(K.f|=ae),{ctx:O,deps:null,effects:null,equals:Fe,f:t,fn:e,reactions:null,rv:0,v:C,wv:0,parent:K,ac:null}}var Ft=Symbol(`obsolete`);function It(e,t,n){let r=K;r===null&&Ve();var i=void 0,a=pn(C),o=!U,s=new Set;return Yn(()=>{var t=K,n=g();i=n.promise;try{Promise.resolve(e()).then(n.resolve,e=>{e!==be&&n.reject(e)}).finally(Mt)}catch(e){n.reject(e),Mt()}var c=j;if(o){if(t.f&32768)var l=Nt();if(r.b?.is_rendered())c.async_deriveds.get(t)?.reject(Ft);else for(let e of s.values())e.reject(Ft);s.add(n),c.async_deriveds.set(t,n)}let u=(e,t=void 0)=>{l?.(),s.delete(n),t!==Ft&&(c.activate(),t?(a.f|=ue,vn(a,t)):(a.f&8388608&&(a.f^=ue),vn(a,e)),c.deactivate())};n.promise.then(u,e=>u(null,e||`unknown`))}),Un(()=>{for(let e of s)e.reject(Ft)}),new Promise(e=>{function t(n){function r(){n===i?e(a):t(i)}n.then(r,r)}t(i)})}function Lt(e){let t=Pt(e);return pr(t),t}function Rt(e){let t=Pt(e);return t.equals=Le,t}function zt(e){var t=e.effects;if(t!==null){e.effects=null;for(var n=0;n{t.ac.abort(be),t.ac=null}),t.fn!==null&&(t.teardown=m),Tr(t,0),nr(t))}function Ut(e){if(e.effects!==null)for(let t of e.effects)t.teardown&&t.fn!==null&&Er(t)}var Wt=null,j=null,Gt=null,M=null,Kt=null,qt=!1,Jt=!1,Yt=null,Xt=null,Zt=0,Qt=1,$t=class e{id=Qt++;#e=!1;linked=!0;#t=null;#n=null;async_deriveds=new Map;current=new Map;previous=new Map;#r=new Set;#i=new Set;#a=0;#o=new Map;#s=null;#c=[];#l=[];#u=new Set;#d=new Set;#f=new Map;#p=new Set;is_fork=!1;#m=!1;constructor(){Wt===null?Wt=this:(Wt.#n=this,this.#t=Wt),Wt=this}#h(){if(this.is_fork)return!0;for(let n of this.#o.keys()){for(var e=n,t=!1;e.parent!==null;){if(this.#f.has(e)){t=!0;break}e=e.parent}if(!t)return!0}return!1}skip_effect(e){this.#f.has(e)||this.#f.set(e,{d:[],m:[]}),this.#p.delete(e)}unskip_effect(e,t=e=>this.schedule(e)){var n=this.#f.get(e);if(n){this.#f.delete(e);for(var r of n.d)A(r,b),t(r);for(r of n.m)A(r,x),t(r)}this.#p.add(e)}#g(){var e=[];for(let i of this.#c)if(!(i.f&16384||!(i.f&6144))){for(var t=i,n=!1;t.parent!==null;){t=t.parent;var r=t.f;if(r&96){if(!(r&1024)){n=!0;break}t.f^=y}}n||e.push(t)}return this.#c=[],e}#_(){this.#e=!0;for(let e of this.#u)this.#d.delete(e),A(e,b),this.schedule(e);for(let e of this.#d)A(e,x),this.schedule(e);this.apply();for(var t=Yt=[],n=[],r=Xt=[];this.#c.length>0;){Zt++>1e3&&(this.#S(),tn());for(let e of this.#g())try{this.#v(e,t,n)}catch(t){throw cn(e),this.#h()||this.discard(),t}}if(j=null,r.length>0){var i=e.ensure();for(let e of r)i.schedule(e)}if(Yt=null,Xt=null,this.#h()){this.#x(n),this.#x(t);for(let[e,t]of this.#f)sn(e,t);r.length>0&&j.#_();return}let a=this.#y();if(a)this.#x(n),this.#x(t),a.#b(this);else{this.#u.clear(),this.#d.clear();for(let e of this.#r)e(this);this.#r.clear(),Gt=this,rn(n),rn(t),Gt=null,this.#s?.resolve();var o=j;if(this.#a===0&&(this.#c.length===0||o!==null)&&this.#S(),this.#c.length>0){if(o!==null){for(let e of this.#c)o.#c.push(e);this.#c=[]}else o=this}o!==null&&(N.clear(),o.#_())}}#v(e,t,n){e.f^=y;for(var r=e.first;r!==null;){var i=r.f,a=!!(i&96);if(!(a&&i&1024||i&8192||this.#f.has(r))&&r.fn!==null){a?r.f^=y:i&4?t.push(r):br(r)&&(i&16&&this.#d.add(r),Er(r));var o=r.first;if(o!==null){r=o;continue}}for(;r!==null;){var s=r.next;if(s!==null){r=s;break}r=r.parent}}}#y(){for(var e=this.#t;e!==null;){if(!e.is_fork){for(let[t,[,n]]of this.current)if(e.current.has(t)&&!n)return e}e=e.#t}return null}#b(e){for(let[t,n]of e.current)!this.previous.has(t)&&e.previous.has(t)&&this.previous.set(t,e.previous.get(t)),this.current.set(t,n);for(let[t,n]of e.async_deriveds){let e=this.async_deriveds.get(t);e&&n.promise.then(e.resolve).catch(e.reject)}e.async_deriveds.clear(),this.transfer_effects(e.#u,e.#d);let t=e=>{var n=e.reactions;if(n!==null&&!(e.f&2&&!(e.f&6144)))for(let e of n){var r=e.f;if(r&2)t(e);else{var i=e;r&4194320&&!this.async_deriveds.has(i)&&(this.#d.delete(i),A(i,b),this.schedule(i))}}};for(let e of this.current.keys())t(e);this.oncommit(()=>e.discard()),e.#S(),j=this,this.#_()}#x(e){for(var t=0;t{this.#m=!1,this.linked&&this.flush()}))}transfer_effects(e,t){for(let t of e)this.#u.add(t);for(let e of t)this.#d.add(e);e.clear(),t.clear()}oncommit(e){this.#r.add(e)}ondiscard(e){this.#i.add(e)}settled(){return(this.#s??=g()).promise}static ensure(){if(j===null){let t=j=new e;!Jt&&!qt&&k(()=>{t.#e||t.flush()})}return j}apply(){M=null}schedule(e){Kt=e,e.b?.is_pending&&e.f&16777228&&!(e.f&32768)?e.b.defer_effect(e):this.#c.push(e)}#S(){if(this.linked){var e=this.#t,t=this.#n;e===null||(e.#n=t),t===null?Wt=e:t.#t=e,this.linked=!1}}};function en(e){var t=qt,n=Gt;Gt=null,qt=!0;try{var r;for(e&&(en(),r=e());;){if(xt(),j===null)return r;j.flush()}}finally{qt=t,Gt=n}}function tn(){try{Ke()}catch(e){R(e,Kt)}}var nn=null;function rn(e){var t=e.length;if(t!==0){for(var n=0;n0)){N.clear();for(let e of nn){if(e.f&24576)continue;let t=[e],n=e.parent;for(;n!==null;)nn.has(n)&&(nn.delete(n),t.push(n)),n=n.parent;for(let e=t.length-1;e>=0;e--){let n=t[e];n.f&24576||Er(n)}}nn.clear()}}nn=null}}function an(e,t){if(e.reactions!==null)for(let n of e.reactions){let e=n.f;e&2?an(n,t):e&131072&&(A(n,b),t.add(n))}}function on(e){j.schedule(e)}function sn(e,t){if(!(e.f&32&&e.f&1024)){e.f&2048?t.d.push(e):e.f&4096&&t.m.push(e),A(e,y);for(var n=e.first;n!==null;)sn(n,t),n=n.next}}function cn(e){A(e,y);for(var t=e.first;t!==null;)cn(t),t=t.next}function ln(e){Re(`fork`),j!==null&&Je(),en();var t=$t.ensure();t.is_fork=!0,M=new Map;var n=!1,r=t.settled();return e(),en(),{commit:async()=>{if(n)await r;else{t.linked||qe(),n=!0,t.is_fork=!1;for(var[e,[i]]of t.current)e.v=i,e.wv=yr();en(()=>{var e=new Set;for(var n of t.current.keys())an(n,e);dn(e),yn()}),t.flush(),await r}},discard:()=>{for(var e of t.current.keys())e.wv=yr();!n&&t.linked&&t.discard()}}}var un=new Set,N=new Map;function dn(e){un=e}var fn=!1;function pn(e,t){return{f:0,v:e,reactions:null,equals:Fe,rv:0,wv:0}}function mn(e,t){let n=pn(e,t);return pr(n),n}function hn(e,t=!1,n=!0){let r=pn(e);return t||(r.equals=Le),r}function P(e,t,n=!1){return U!==null&&(!W||U.f&131072)&&vt()&&U.f&4325394&&(J===null||!J.has(e))&&tt(),vn(e,n?Sn(t):t,Xt)}var gn=null,_n=0;function vn(e,t,n=null){if(!e.equals(t)){H?N.set(e,t):N.has(e)||N.set(e,e.v);var r=$t.ensure();if(r.capture(e,t),e.f&2){let t=e;e.f&2048&&Bt(t),M===null&&Ct(t)}e.wv=yr(),gn=null,_n=0,xn(e,b,n),gn=null,vt()&&K!==null&&K.f&1024&&!(K.f&96)&&(Z===null?mr([e]):Z.push(e)),!r.is_fork&&un.size>0&&!fn&&yn()}return t}function yn(){fn=!1;for(let e of un){e.f&1024&&A(e,x);let t;try{t=br(e)}catch{t=!0}t&&Er(e)}un.clear()}function bn(e){P(e,e.v+1)}function xn(e,t,n){var r=e.reactions;if(r!==null){var i=vt(),a=r.length;if(_n+=a,_n>1e5&&gn===null&&(gn=new Set),gn!==null){if(gn.has(e))return;gn.add(e)}for(var o=0;o{if(_r===c)return e();var t=U,n=_r;G(null),vr(c);var r=e();return G(t),vr(n),r};return i&&r.set(`length`,mn(e.length,o)),new Proxy(e,{defineProperty(e,t,n){(!(`value`in n)||n.configurable===!1||n.enumerable===!1||n.writable===!1)&&$e();var i=r.get(t);return i===void 0?f(()=>{var e=mn(n.value,o);return r.set(t,e),e}):P(i,n.value,!0),!0},deleteProperty(e,t){var n=r.get(t);if(n===void 0){if(t in e){let e=f(()=>mn(C,o));r.set(t,e),bn(a)}}else P(n,C),bn(a);return!0},get(t,n,i){if(n===de)return e;var a=r.get(n),c=n in t;if(a===void 0&&(!c||s(t,n)?.writable)&&(a=f(()=>mn(Sn(c?t[n]:C),o)),r.set(n,a)),a!==void 0){var l=Q(a);return l===C?void 0:l}return Reflect.get(t,n,i)},getOwnPropertyDescriptor(e,t){this.has?.(e,t);var n=Reflect.getOwnPropertyDescriptor(e,t),i=r.get(t);if(i!==void 0){var a=Q(i);if(a===C)return;if(n&&`value`in n)n.value=a;else return{enumerable:!0,configurable:!0,value:a,writable:!0}}return n},has(e,t){if(t===de)return!0;var n=r.get(t),i=n!==void 0&&n.v!==C||Reflect.has(e,t);return(n!==void 0||K!==null&&(!i||s(e,t)?.writable))&&(n===void 0&&(n=f(()=>mn(i?Sn(e[t]):C,o)),r.set(t,n)),Q(n)===C)?!1:i},set(e,t,n,c){var l=r.get(t),u=t in e;if(i&&t===`length`)for(var d=n;dmn(C,o)),r.set(d+``,p)):P(p,C)}if(l===void 0)(!u||s(e,t)?.writable)&&(l=f(()=>mn(void 0,o)),P(l,Sn(n)),r.set(t,l));else{u=l.v!==C;var m=f(()=>Sn(n));P(l,m)}var h=Reflect.getOwnPropertyDescriptor(e,t);if(h?.set&&h.set.call(c,n),!u){if(i&&typeof t==`string`){var g=r.get(`length`),_=Number(t);Number.isInteger(_)&&_>=g.v&&P(g,_+1)}bn(a)}return!0},ownKeys(e){Q(a);var t=Reflect.ownKeys(e).filter(e=>{var t=r.get(e);return t===void 0||t.v!==C});for(var[n,i]of r)i.v!==C&&!(n in e)&&t.push(n);return t},setPrototypeOf(){et()}})}function Cn(e){try{if(typeof e==`object`&&e&&de in e)return e[de]}catch{}return e}function wn(e,t){return Object.is(Cn(e),Cn(t))}var Tn,En,Dn,On,kn;function An(){if(Tn===void 0){Tn=window,En=document,Dn=/Firefox/.test(navigator.userAgent);var e=Element.prototype,t=Node.prototype,n=Text.prototype;On=s(t,`firstChild`).get,kn=s(t,`nextSibling`).get,f(e)&&(e[ge]=void 0,e[he]=null,e[_e]=void 0,e.__e=void 0),f(n)&&(n[ve]=void 0)}}function F(e=``){return document.createTextNode(e)}function I(e){return On.call(e)}function L(e){return kn.call(e)}function jn(e,t){if(!w)return I(e);var n=I(E);if(n===null)n=E.appendChild(F());else if(t&&n.nodeType!==3){var r=F();return n?.before(r),D(r),r}return t&&Rn(n),D(n),n}function Mn(e,t=!1){if(!w){var n=I(e);return n instanceof Comment&&n.data===``?L(n):n}if(t){if(E?.nodeType!==3){var r=F();return E?.before(r),D(r),r}Rn(E)}return E}function Nn(e,t=!1){if(!w)return I(e);var n=jn(e,t);return je(e),n}function Pn(e,t=1,n=!1){let r=w?E:e;for(var i;t--;)i=r,r=L(r);if(!w)return r;if(n){if(r?.nodeType!==3){var a=F();return r===null?i?.after(a):r.before(a),D(a),a}Rn(r)}return D(r),r}function Fn(e){e.textContent=``}function In(){return!1}function Ln(e,t,n){return t==null||t===`http://www.w3.org/1999/xhtml`?n?document.createElement(e,{is:n}):document.createElement(e):n?document.createElementNS(t,e,{is:n}):document.createElementNS(t,e)}function Rn(e){if(e.nodeValue.length<65536)return;let t=e.nextSibling;for(;t!==null&&t.nodeType===3;)t.remove(),e.nodeValue+=t.nodeValue,t=e.nextSibling}function zn(e){var t=K;if(t===null)return U.f|=ue,e;if(!(t.f&32768)&&!(t.f&4))throw e;R(e,t)}function R(e,t){if(e===Se)throw e;if(!(t!==null&&t.f&16384)){for(;t!==null;){if(t.f&128&&!(t.f&33570816)){if(!(t.f&32768))throw e;try{t.b.error(e);return}catch(t){e=t}}t=t.parent}throw e}}function Bn(e){K===null&&(U===null&&Ge(e),We()),H&&Ue(e)}function Vn(e,t){var n=t.last;n===null?t.last=t.first=e:(n.next=e,e.prev=n,t.last=e)}function z(e,t){var n=K;n!==null&&n.f&8192&&(e|=S);var r={ctx:O,deps:null,nodes:null,f:e|b|512,first:null,fn:t,last:null,next:null,parent:n,b:n&&n.b,prev:null,teardown:null,wv:0,ac:null};j?.register_created_effect(r);var i=r;if(e&4)Yt===null?$t.ensure().schedule(r):Yt.push(r);else if(t!==null){try{Er(r)}catch(e){throw V(r),e}i.deps===null&&i.teardown===null&&i.nodes===null&&i.first===i.last&&!(i.f&524288)&&(i=i.first,e&16&&e&65536&&i!==null&&(i.f|=re))}if(i!==null&&(i.parent=n,n!==null&&Vn(i,n),U!==null&&U.f&2&&!(e&64))){var a=U;(a.effects??=[]).push(i)}return r}function Hn(){return U!==null&&!W}function Un(e){let t=z(8,null);return A(t,y),t.teardown=e,t}function Wn(e){Bn(`$effect`);var t=K.f;if(!U&&t&32&&O!==null&&!O.i){var n=O;(n.e??=[]).push(e)}else return Gn(e)}function Gn(e){return z(4|oe,e)}function Kn(e){return Bn(`$effect.pre`),z(8|oe,e)}function qn(e){$t.ensure();let t=z(64|ae,e);return(e={})=>new Promise(n=>{e.outro?or(t,()=>{V(t),n(void 0)}):(V(t),n(void 0))})}function Jn(e){return z(4,e)}function Yn(e){return z(le|ae,e)}function Xn(e,t=0){return z(8|t,e)}function Zn(e,t=[],n=[],r=[]){At(r,t,n,t=>{z(8,()=>{e(...t.map(Q))})})}function Qn(e,t=[],n=[],r=[]){At(r,t,n,t=>{z(4,()=>e(...t.map(Q)))})}function $n(e,t=0){return z(16|t,e)}function er(e,t=0){return z(v|t,e)}function B(e){return z(32|ae,e)}function tr(e){var t=e.teardown;if(t!==null){let n=H,r=U;fr(!0),G(null);try{t.call(null)}catch(t){R(t,e.parent)}finally{fr(n),G(r)}}}function nr(e,t=!1){var n=e.first;for(e.first=e.last=null;n!==null;){let e=n.ac;e!==null&&Ot(()=>{e.abort(be)});var r=n.next;n.f&64?n.parent=null:V(n,t),n=r}}function rr(e){for(var t=e.first;t!==null;){var n=t.next;t.f&32||V(t),t=n}}function V(e,t=!0){var n=!1;(t||e.f&262144)&&e.nodes!==null&&e.nodes.end!==null&&(ir(e.nodes.start,e.nodes.end),n=!0),e.f|=ne,nr(e,t&&!n),Tr(e,0);var r=e.nodes&&e.nodes.t;if(r!==null)for(let e of r)e.stop();tr(e),e.f^=ne,e.f|=ee;var i=e.parent;i!==null&&i.first!==null&&ar(e),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes=e.ac=e.b=null}function ir(e,t){for(;e!==null;){var n=e===t?null:L(e);e.remove(),e=n}}function ar(e){var t=e.parent,n=e.prev,r=e.next;n!==null&&(n.next=r),r!==null&&(r.prev=n),t!==null&&(t.first===e&&(t.first=r),t.last===e&&(t.last=n))}function or(e,t,n=!0){var r=[];e.f|=256,sr(e,r,!0);var i=()=>{n&&V(e),t&&t()},a=r.length;if(a>0){var o=()=>--a||i();for(var s of r)s.out(o)}else i()}function sr(e,t,n){if(!(e.f&8192)){e.f^=S;var r=e.nodes&&e.nodes.t;if(r!==null)for(let e of r)(e.is_global||n)&&t.push(e);for(var i=e.first;i!==null;){var a=i.next;if(!(i.f&64)){var o=!!(i.f&65536)||!!(i.f&32)&&!!(e.f&16);sr(i,t,o?n:!1)}i=a}}}function cr(e){e.f&=-257,lr(e,!0)}function lr(e,t){if(!(e.f&256)&&e.f&8192){e.f^=S,e.f&1024||(A(e,b),$t.ensure().schedule(e));for(var n=e.first;n!==null;){var r=n.next,i=!!(n.f&65536)||!!(n.f&32);lr(n,i?t:!1),n=r}var a=e.nodes&&e.nodes.t;if(a!==null)for(let e of a)(e.is_global||t)&&e.in()}}function ur(e,t){if(e.nodes)for(var n=e.nodes.start,r=e.nodes.end;n!==null;){var i=n===r?null:L(n);t.append(n),n=i}}var dr=null,H=!1;function fr(e){H=e}var U=null,W=!1;function G(e){U=e}var K=null;function q(e){K=e}var J=null;function pr(e){U!==null&&(U.f&2097152||U.f&2)&&(J??=new Set).add(e)}var Y=null,X=0,Z=null;function mr(e){Z=e}var hr=1,gr=0,_r=gr;function vr(e){_r=e}function yr(){return++hr}function br(e){var t=e.f;if(t&2048)return!0;if(t&4096){for(var n=e.deps,r=n.length,i=0;ie.wv)return!0}t&512&&M===null&&A(e,y)}return!1}function xr(e,t,n=!0){var r=e.reactions;if(r!==null&&!(J!==null&&J.has(e)))for(var i=0;i{e.ac.abort(be)}),e.ac=null);try{e.f|=ce;var u=e.fn,d=u();e.f|=te;var f=Cr(e);if(vt()&&Z!==null&&!W&&f!==null&&!(e.f&6146))for(var p=0;p0)for(t.length=X+Y.length,r=0;r{s.ac.abort(be),s.ac=null,A(s,b)}),Ht(s),Tr(s,0)}}function Tr(e,t){var n=e.deps;if(n!==null)for(var r=t;rn?.call(this,e))}return e.startsWith(`pointer`)||e.startsWith(`touch`)||e===`wheel`?(i.__removed=!1,k(()=>{i.__removed||t.addEventListener(e,i,r)})):t.addEventListener(e,i,r),i}function Kr(e,t,n,r,i){var a={capture:r,passive:i},o=Gr(e,t,n,a);(t===document.body||t===window||t===document||t instanceof HTMLMediaElement)&&Un(()=>{o.__removed=!0,t.removeEventListener(e,o,a)})}function qr(e,t,n){(t[Hr]??={})[e]=n}function Jr(e){for(var t=0;t{Xr=!1,Yr=null}));var s=0,c=Yr===e&&e[Hr];if(c){var l=i.indexOf(c);if(l!==-1&&(t===document||t===window)){e[Hr]=t;return}var u=i.indexOf(t);if(u===-1)return;l<=u&&(s=l)}if(a=i[s]||e.target,a!==t){o(e,`currentTarget`,{configurable:!0,get(){return a||n}});var d=U,f=K;G(null),q(null);try{for(var p,m=[];a!==null&&a!==t;){try{var h=a[Hr]?.[r];h!=null&&(!a.disabled||e.target===a)&&h.call(a,e)}catch(e){p?m.push(e):p=e}if(e.cancelBubble)break;s++,a=s{throw e});throw p}}finally{e[Hr]=t,delete e.currentTarget,G(d),q(f)}}}var Qr=globalThis?.window?.trustedTypes&&globalThis.window.trustedTypes.createPolicy(`svelte-trusted-html`,{createHTML:e=>e});function $r(e){return Qr?.createHTML(e)??e}function ei(e){var t=Ln(`template`);return t.innerHTML=$r(e.replaceAll(``,``)),t.content}function $(e,t){var n=K;n.nodes===null&&(n.nodes={start:e,end:t,a:null,t:null})}function ti(e,t){var n=!!(t&1),r=!!(t&2),i,a=!e.startsWith(``);return()=>{if(w)return $(E,null),E;i===void 0&&(i=ei(a?e:``+e),n||(i=I(i)));var t=r||Dn?document.importNode(i,!0):i.cloneNode(!0);if(n){var o=I(t),s=t.lastChild;$(o,s)}else $(t,t);return t}}function ni(e,t,n=`svg`){var r=!e.startsWith(``),i=!!(t&1),a=`<${n}>${r?e:``+e}`,o;return()=>{if(w)return $(E,null),E;if(!o){var e=I(ei(a));if(i)for(o=document.createDocumentFragment();I(e);)o.appendChild(I(e));else o=I(e)}var t=o.cloneNode(!0);if(i){var n=I(t),r=t.lastChild;$(n,r)}else $(t,t);return t}}function ri(e,t){return ni(e,t,`svg`)}function ii(e=``){if(!w){var t=F(e+``);return $(t,t),t}var n=E;return n.nodeType===3?Rn(n):(n.before(n=F()),D(n)),$(n,n),n}function ai(){if(w)return $(E,null),E;var e=document.createDocumentFragment(),t=document.createComment(``),n=F();return e.append(t,n),$(t,n),e}function oi(e,t){if(w){var n=K;(!(n.f&32768)||n.nodes.end===null)&&(n.nodes.end=E),Ae()}else e!==null&&e.before(t)}function si(e){let t=0,n=pn(0),r;return()=>{Hn()&&(Q(n),Xn(()=>(t===0&&(r=jr(()=>e(()=>bn(n)))),t+=1,()=>{k(()=>{--t,t===0&&(r?.(),r=void 0,bn(n))})})))}}var ci=re|ae;function li(e,t,n,r){new ui(e,t,n,r)}var ui=class{parent;is_pending=!1;transform_error;#e;#t=w?E:null;#n;#r;#i;#a=null;#o=null;#s=null;#c=null;#l=0;#u=0;#d=!1;#f=new Set;#p=new Set;#m=null;#h=si(()=>(this.#m=pn(this.#l),()=>{this.#m=null}));constructor(e,t,n,r){this.#e=e,this.#n=t,this.#r=e=>{var t=K;t.b=this,t.f|=128,n(e)},this.parent=K.b,this.transform_error=r??this.parent?.transform_error??(e=>e),this.#i=$n(()=>{if(w){let e=Pe(this.#t);Ae();let t=e===`[!`;if(e.startsWith(`[?`)){let t=JSON.parse(e.slice(2));this.#_(t)}else t?this.#b():this.#g()}else this.#x()},ci),w&&(this.#e=E)}#g(){try{this.#a=B(()=>this.#r(this.#e))}catch(e){this.error(e)}}#_(e){let t=this.#n.failed,{reset:n,invoke_onerror:r}=this.#v(e);k(r),t&&(this.#s=B(()=>{t(this.#e,()=>e,()=>n)}))}#v(e){var t=!1,n=!1;let r=()=>{this.#y()||(t?ke():(t=!0,n&&nt(),this.#s!==null&&or(this.#s,()=>{this.#s=null}),this.#C(()=>{this.#x()})))};return{reset:r,invoke_onerror:()=>{if(!this.#y())try{n=!0,this.#n.onerror?.(e,r),n=!1}catch(e){R(e,this.#i&&this.#i.parent)}}}}#y(){return(this.#i.f&(ee|ne))!==0}#b(){let e=this.#n.pending;e&&(this.is_pending=!0,this.#o=B(()=>e(this.#e)),k(()=>{if(!this.#y()){var e=this.#c=document.createDocumentFragment(),t=F(),n=!1;e.append(t),this.#a=this.#C(()=>{try{return B(()=>this.#r(t))}catch(e){try{this.error(e),n=!0}catch(e){R(e,this.#i.parent)}return null}}),this.#a===null?(this.#c=null,n&&this.#S(j)):this.#u===0&&(this.#e.before(e),this.#c=null,or(this.#o,()=>{this.#o=null}),this.#S(j))}}))}#x(){try{if(this.is_pending=this.has_pending_snippet(),this.#u=0,this.#l=0,this.#a=B(()=>{this.#r(this.#e)}),this.#u>0){var e=this.#c=document.createDocumentFragment();ur(this.#a,e);let t=this.#n.pending;this.#o=B(()=>t(this.#e))}else this.#S(j)}catch(e){this.error(e)}}#S(e){this.is_pending=!1,e.transfer_effects(this.#f,this.#p)}defer_effect(e){wt(e,this.#f,this.#p)}is_rendered(){return!this.is_pending&&(!this.parent||this.parent.is_rendered())}has_pending_snippet(){return!!this.#n.pending}#C(e){var t=K,n=U,r=O;q(this.#i),G(this.#i),lt(this.#i.ctx);try{return $t.ensure(),e()}finally{q(t),G(n),lt(r)}}#w(e,t){this.has_pending_snippet()?(this.#u+=e,this.#u===0&&(this.#S(t),this.#o&&or(this.#o,()=>{this.#o=null}),this.#c&&=(this.#e.before(this.#c),null))):this.parent&&this.parent.#w(e,t)}update_pending_count(e,t){this.#w(e,t),this.#l+=e,!(!this.#m||this.#d)&&(this.#d=!0,k(()=>{this.#d=!1,this.#m&&vn(this.#m,this.#l)}))}get_effect_pending(){return this.#h(),Q(this.#m)}error(e){if(e===Se||!this.#n.onerror&&!this.#n.failed)throw e;j?.is_fork?(this.#a&&j.skip_effect(this.#a),this.#o&&j.skip_effect(this.#o),this.#s&&j.skip_effect(this.#s),j.oncommit(()=>{this.#y()||this.#T(e)})):this.#T(e)}#T(e){this.#a&&=(V(this.#a),null),this.#o&&=(V(this.#o),null),this.#s&&=(V(this.#s),null),w&&(D(this.#t),Me(),D(Ne()));let t=this.#n.failed,n=e=>{if(this.#y())return;let{reset:n,invoke_onerror:r}=this.#v(e);r(),t&&!this.#y()&&(this.#s=this.#C(()=>{try{return B(()=>{var r=K;r.b=this,r.f|=128,t(this.#e,()=>e,()=>n)})}catch(e){return R(e,this.#i.parent),null}}))};k(()=>{if(!this.#y()){var t;try{t=this.transform_error(e)}catch(e){R(e,this.#i&&this.#i.parent);return}typeof t==`object`&&t&&typeof t.then==`function`?t.then(n,e=>R(e,this.#i&&this.#i.parent)):n(t)}})}};function di(e,t){var n=t==null?``:typeof t==`object`?`${t}`:t;n!==(e[ve]??=e.nodeValue)&&(e[ve]=n,e.nodeValue=`${n}`)}function fi(e,t){return hi(e,t)}function pi(e,t){An(),t.intro=t.intro??!1;let n=t.target,r=w,i=E;try{for(var a=I(n);a&&(a.nodeType!==8||a.data!==`[`);)a=L(a);if(!a)throw Se;T(!0),D(a);let r=hi(e,{...t,anchor:a});return T(!1),r}catch(r){if(r instanceof Error&&r.message.split(` -`).some(e=>e.startsWith(`https://svelte.dev/e/`)))throw r;return r!==Se&&console.warn(`Failed to hydrate: `,r),t.recover===!1&&Xe(),An(),Fn(n),T(!1),fi(e,t)}finally{T(r),D(i)}}var mi=new Map;function hi(e,{target:t,anchor:n,props:r={},events:i,context:o,intro:s=!0,transformError:c}){An();var l=void 0,u=qn(()=>{var s=n??t.appendChild(F());li(s,{pending:()=>{}},t=>{ht({});var n=O;if(o&&(n.c=o),i&&(r.$$events=i),w&&$(t,null),l=e(t,r)||_t(),w&&(K.nodes.end=E,E===null||E.nodeType!==8||E.data!==`]`))throw De(),Se;gt()},c);var u=new Set,d=e=>{for(var n=0;n{for(var e of u)for(let n of[t,document]){var r=mi.get(n),i=r.get(e);--i==0?(n.removeEventListener(e,Zr),r.delete(e),r.size===0&&mi.delete(n)):r.set(e,i)}Wr.delete(d),s!==n&&s.parentNode?.removeChild(s)}});return gi.set(l,u),l}var gi=new WeakMap;function _i(e,t){let n=gi.get(e);return n?(gi.delete(e),n(t)):Promise.resolve()}var vi=class{anchor;#e=new Map;#t=new Map;#n=new Map;#r=new Set;#i=!0;constructor(e,t=!0){this.anchor=e,this.#i=t}#a=e=>{if(this.#e.has(e)){var t=this.#e.get(e),n=this.#t.get(t);if(n)cr(n),this.#r.delete(t);else{var r=this.#n.get(t);r&&(cr(r.effect),this.#t.set(t,r.effect),this.#n.delete(t),r.fragment.lastChild.remove(),this.anchor.before(r.fragment),n=r.effect)}for(let[t,n]of this.#e){if(this.#e.delete(t),t===e)break;let r=this.#n.get(n);r&&(V(r.effect),this.#n.delete(n))}for(let[e,r]of this.#t){if(e===t||this.#r.has(e))continue;let i=()=>{if(Array.from(this.#e.values()).includes(e)){var t=document.createDocumentFragment();ur(r,t),t.append(F()),this.#n.set(e,{effect:r,fragment:t})}else V(r);this.#r.delete(e),this.#t.delete(e)};this.#i||!n?(this.#r.add(e),or(r,i,!1)):i()}}};#o=e=>{this.#e.delete(e);let t=Array.from(this.#e.values());for(let[e,n]of this.#n)t.includes(e)||(V(n.effect),this.#n.delete(e))};ensure(e,t){var n=j,r=In();if(t&&!this.#t.has(e)&&!this.#n.has(e)){if(r){var i=document.createDocumentFragment(),a=F();i.append(a),this.#n.set(e,{effect:B(()=>t(a)),fragment:i})}else this.#t.set(e,B(()=>t(this.anchor)))}if(this.#e.set(n,e),r){for(let[t,r]of this.#t)t===e?n.unskip_effect(r):n.skip_effect(r);for(let[t,r]of this.#n)t===e?n.unskip_effect(r.effect):n.skip_effect(r.effect);n.oncommit(this.#a),n.ondiscard(this.#o)}else w&&(this.anchor=E),this.#a(n)}};function yi(e,t,n=!1){var r;w&&(r=E,Ae());var i=new vi(e),a=n?re:0;function o(e,t){if(w){var n=Pe(r);if(e!==parseInt(n.substring(1))){var a=Ne();D(a),i.anchor=a,T(!1),i.ensure(e,t),T(!0);return}}i.ensure(e,t)}$n(()=>{var e=!1;t((t,n=0)=>{e=!0,o(n,t)}),e||o(-1,null)},a)}var bi=Symbol(`NaN`);function xi(e,t,n){w&&Ae();var r=new vi(e),i=!vt();$n(()=>{var e=t();e!==e&&(e=bi),i&&typeof e==`object`&&e&&(e={}),r.ensure(e,n)})}function Si(e,t){return t}function Ci(e,t,n){for(var r=[],i=t.length,o,s=t.length,c=0;c{if(o){if(o.pending.delete(n),o.done.add(n),o.pending.size===0){var t=e.outrogroups;wi(e,a(o.done)),t.delete(o),t.size===0&&(e.outrogroups=null)}}else--s},!1)}if(s===0){var l=r.length===0&&n!==null&&e.pending.size===0;if(l){var u=n,d=u.parentNode;Fn(d),d.append(u),e.items.clear()}wi(e,t,!l)}else o={pending:new Set(t),done:new Set},(e.outrogroups??=new Set).add(o)}function wi(e,t,n=!0){var r;if(e.pending.size>0){r=new Set;for(let t of e.pending.values())for(let n of t)r.add(e.items.get(n).e)}for(var i=0;i{var e=r();return n(e)?e:e==null?[]:a(e)}),p=new Map,m=!0;function h(e){if(!(_.effect.f&16384)){_.pending.delete(e);var n=Q(f);_.fallback=d,Oi(_,n,c,t,i),d!==null&&(n.length===0?d.f&33554432?(d.f^=se,Ai(d,null,c)):cr(d):or(d,()=>{d=null}))}}function g(e){_.pending.delete(e)}var _={effect:$n(()=>{var e=Q(f),n=e.length;let a=!1;w&&Pe(c)===`[!`!=(n===0)&&(c=Ne(),D(c),T(!1),a=!0);for(var u=new Set,_=j,v=In(),y=0;ys(c)):(d=B(()=>s(Ti??=F())),d.f|=se)),n>u.size&&He(``,``,``),w&&n>0&&D(Ne()),!m){if(p.set(_,u),v){for(let[e,t]of l)u.has(e)||_.skip_effect(t.e);_.oncommit(h),_.ondiscard(g)}else h(_)}a&&T(!0),Q(f)}),flags:t,items:l,pending:p,outrogroups:null,fallback:d};m=!1,w&&(c=E)}function Di(e){for(;e!==null&&!(e.f&32);)e=e.next;return e}function Oi(e,t,n,r,i){var o=!!(r&8),s=t.length,c=e.items,l=Di(e.effect.first),u,d=null,f,p=[],m=[],h,g,_,v;if(o)for(v=0;v0){var re=r&4&&s===0?n:null;if(o){for(v=0;v{if(f!==void 0)for(_ of f)_.nodes?.a?.apply()})}function ki(e,t,n,r,i,a,o,s){var c=o&1?o&16?pn(n):hn(n,!1,!1):null,l=o&2?pn(i):null;return{v:c,i:l,e:B(()=>(a(t,c??n,l??i,s),()=>{e.delete(r)}))}}function Ai(e,t,n){if(e.nodes)for(var r=e.nodes.start,i=e.nodes.end,a=t&&!(t.f&33554432)?t.nodes.start:n;r!==null;){var o=L(r);if(a.before(r),r===i)return;r=o}}function ji(e,t,n){t===null?e.effect.first=n:t.next=n,n===null?e.effect.last=t:n.prev=t}function Mi(e,t,...n){var r=new vi(e);$n(()=>{let e=t()??null;r.ensure(e,e&&(t=>e(t,...n)))},re)}function Ni(e){return(t,...n)=>{var r=e(...n),i;w?(i=E,Ae()):(i=I(ei(r.render().trim())),t.before(i));let a=r.setup?.(i);$(i,i),typeof a==`function`&&Un(a)}}function Pi(e,t,n){var r;w&&(r=E,Ae());var i=new vi(e);$n(()=>{var e=t()??null;if(w&&Pe(r)===`[`!=(e!==null)){var a=Ne();D(a),i.anchor=a,T(!1),i.ensure(e,e&&(t=>n(t,e))),T(!0)}else i.ensure(e,e&&(t=>n(t,e)))},re)}function Fi(e,t,n,r,i,a){let o=w;w&&Ae();var s=null;w&&E.nodeType===1&&(s=E,Ae());var c=w?E:e,l=new vi(c,!1);$n(()=>{let e=t()||null;var a=i?i():n||e===`svg`?we:void 0;if(e===null)l.ensure(null,null);else return l.ensure(e,t=>{if(e){var n=w;if(s=w?s:Ln(e,a),$(s,s),r){var i=null;w&&Vr(e)&&s.append(i=document.createComment(``));var o=w?I(s):s.appendChild(F());w&&(o===null?T(!1):D(o)),r(s,o),i?.remove()}K.nodes.end=s,n||t.before(s)}w&&D(t)}),()=>{}},re),Un(()=>{}),o&&(T(!0),D(c))}function Ii(e,t){let n=null,r=w;var i;if(w){n=E;for(var a=I(document.head);a!==null&&(a.nodeType!==8||a.data!==e);)a=L(a);if(a===null)T(!1);else{var o=L(a);a.remove(),D(o)}}w||(i=document.head.appendChild(F()));try{$n(()=>{var e=B(()=>t(i));e.f|=ie,w||(e.nodes===null?e.nodes={start:i,end:i,a:null,t:null}:e.nodes.end=i)})}finally{r&&(T(!0),D(n))}}function Li(e,t){var n=void 0,r;er(()=>{n!==(n=t())&&(r&&=(V(r),null),n&&(r=B(()=>{Jn(()=>n(e))})))})}function Ri(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`){if(Array.isArray(e)){var i=e.length;for(t=0;t=0;){var s=o+a;(o===0||Vi.includes(r[o-1]))&&(s===r.length||Vi.includes(r[s]))?r=(o===0?``:r.substring(0,o))+r.substring(s+1):o=s}}return r===``?null:r}function Ui(e,t=!1){var n=t?` !important;`:`;`,r=``;for(var i of Object.keys(e)){var a=e[i];a!=null&&a!==``&&(r+=` `+i+`: `+a+n)}return r}function Wi(e){return e[0]!==`-`||e[1]!==`-`?e.toLowerCase():e}function Gi(e,t){if(t){var n=``,r,i;if(Array.isArray(t)?(r=t[0],i=t[1]):r=t,e){e=String(e).replaceAll(/\/\*.*?\*\//g,``).trim();var a=!1,o=0,s=!1,c=[];r&&c.push(...Object.keys(r).map(Wi)),i&&c.push(...Object.keys(i).map(Wi));var l=0,u=-1;let t=e.length;for(var d=0;d{t.every(na)||(`__defaultValue`in e&&Zi(e,!1),`__value`in e&&Qi(e,e.__value))});t.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`value`]}),Un(()=>{t.disconnect()})}function ea(e,t,n=t){var r=new WeakSet,i=!0;kt(e,`change`,t=>{var i=t?`[selected]`:`:checked`,a;if(e.multiple)a=[].map.call(e.querySelectorAll(i),ta);else{var o=e.querySelector(i)??e.querySelector(`option:not([disabled])`);a=o&&ta(o)}n(a),e.__value=a,j!==null&&r.add(j)}),Jn(()=>{var a=t();if(e===document.activeElement){var o=j;if(r.has(o))return}if(Qi(e,a,i),i&&a===void 0){var s=e.querySelector(`:checked`);s!==null&&(a=ta(s),n(a))}e.__value=a,i=!1})}function ta(e){return`__value`in e?e.__value:e.value}function na(e){if(e.target.closest(`selectedcontent`)!==null)return!0;if(e.type===`childList`){var t=[...e.addedNodes,...e.removedNodes];return t.length>0&&t.every(e=>e.nodeName===`SELECTEDCONTENT`)}return!1}var ra=Symbol(`class`),ia=Symbol(`style`),aa=Symbol(`is custom element`),oa=Symbol(`is html`),sa=xe?`link`:`LINK`,ca=xe?`input`:`INPUT`,la=xe?`option`:`OPTION`,ua=xe?`select`:`SELECT`,da=xe?`progress`:`PROGRESS`;function fa(e){if(w){var t=!1,n=()=>{if(!t){if(t=!0,e.hasAttribute(`value`)){var n=e.value;ha(e,`value`,null),e.value=n}if(e.hasAttribute(`checked`)){var r=e.checked;ha(e,`checked`,null),e.checked=r}}};e[ye]=n,k(n),Dt()}}function pa(e,t){var n=va(e);n.value!==(n.value=t??void 0)&&(e.value!==t||t===0&&e.nodeName===da)&&(e.value=t??``)}function ma(e,t){var n=va(e);n.checked!==(n.checked=t??void 0)&&(e.checked=t)}function ha(e,t,n,r){var i=va(e);w&&(i[t]=e.getAttribute(t),t===`src`||t===`srcset`||t===`href`&&e.nodeName===sa)||i[t]!==(i[t]=n)&&(t===`loading`&&(e[me]=n),n==null?e.removeAttribute(t):typeof n!=`string`&&ba(e).has(t)?e[t]=n:e.setAttribute(t,n))}function ga(e,t,n,r,i=!1,a=!1){w&&i&&e.nodeName===ca&&(`defaultValue`in n||`defaultChecked`in n||fa(e));var o=va(e),s=o[aa],c=!o[oa];let l=w&&s;l&&T(!1);var u=t||{},d=e.nodeName===la,f=e.nodeName===ua;try{for(var p in t)!(p in n)&&p[0]+p[1]!==`$$`&&(n[p]=null);n.class?n.class=Bi(n.class):(r||n[ra])&&(n.class=null),n[ia]&&(n.style??=null);var m=ba(e);if(e.nodeName===ca&&`type`in n&&(`value`in n||`__value`in n)){var h=n.type;(h!==u.type||h===void 0&&e.hasAttribute(`type`))&&(u.type=h,ha(e,`type`,h,a))}for(let i in n){let l=n[i];if(d&&i===`value`&&l==null)e.value=e.__value=``,u[i]=l;else if(i===`class`)Ki(e,e.namespaceURI===`http://www.w3.org/1999/xhtml`,l,r,t?.[ra],n[ra]),u[i]=l,u[ra]=n[ra];else if(i===`style`)Ji(e,l,t?.[ia],n[ia]),u[i]=l,u[ia]=n[ia];else{var g=u[i];if(l!==g||l===void 0&&e.hasAttribute(i)){u[i]=l;var _=i[0]+i[1];if(_!==`$$`){if(_===`on`){let t={},n=`$$`+i,r=i.slice(2);var v=Pr(r);if(Mr(r)&&(r=r.slice(0,-7),t.capture=!0),!v&&g){if(l!=null)continue;e.removeEventListener(r,u[n],t),u[n]=null}if(v)qr(r,e,l),Jr([r]);else if(l!=null){function a(e){u[i].call(this,e)}u[n]=Gr(r,e,a,t)}}else if(i===`style`)ha(e,i,l);else if(i===`autofocus`)Tt(e,!!l);else if(!s&&(i===`__value`||i===`value`&&l!=null))e.__value=l,(g==null||e.value!==l||l===0&&e.nodeName===da)&&(e.value=l);else if(i===`selected`&&d)Yi(e,l);else{var y=i;c||(y=Lr(y));var b=y===`defaultValue`||y===`defaultChecked`;if(f&&y===`defaultValue`)continue;if(l==null&&!s&&!b){if(o[i]=null,y===`value`||y===`checked`){let n=e,r=t===void 0;if(y===`value`){let e=n.defaultValue;n.removeAttribute(y),n.defaultValue=e,n.value=n.__value=r?e:null}else{let e=n.defaultChecked;n.removeAttribute(y),n.defaultChecked=e,n.checked=r?e:!1}}else e.removeAttribute(i)}else b||(s||typeof l!=`string`)&&m.has(y)?(e[y]=l,y in o&&(o[y]=C)):typeof l!=`function`&&ha(e,y,l,a)}}}}}}finally{l&&T(!0)}return u}function _a(e,t,n=[],r=[],i=[],a,o=!1,s=!1){At(i,n,r,n=>{var r=void 0,i={},c=e.nodeName===ua,l=!1;if(er(()=>{var u=t(...n.map(Q)),d=ga(e,r,u,a,o,s);if(l&&c){var f=e;`defaultValue`in u&&Xi(f,u.defaultValue),`value`in u&&Qi(f,u.value)}for(let e of Object.getOwnPropertySymbols(i))u[e]||V(i[e]);for(let t of Object.getOwnPropertySymbols(u)){var p=u[t];t.description===`@attach`&&(!r||p!==r[t])&&(i[t]&&V(i[t]),i[t]=B(()=>Li(e,()=>p))),d[t]=p}r=d}),c){var u=e;Jn(()=>{var e=r;`defaultValue`in e&&Xi(u,e.defaultValue),Qi(u,e.value,!0),$i(u)})}l=!0})}function va(e){return e[he]??={[aa]:e.nodeName.includes(`-`),[oa]:e.namespaceURI===Ce}}var ya=new Map;function ba(e){var t=e.getAttribute(`is`)||e.nodeName,n=ya.get(t);if(n)return n;ya.set(t,n=new Set);for(var r,i=e,a=Element.prototype;a!==i;){for(var o in r=c(i),r)r[o].set&&o!==`innerHTML`&&o!==`textContent`&&o!==`innerText`&&n.add(o);i=d(i)}return n}function xa(e,t,n=t){var r=new WeakSet;kt(e,`input`,async i=>{var a=i?e.defaultValue:e.value;if(a=Ca(e)?wa(a):a,n(a),j!==null&&r.add(j),await Dr(),a!==(a=t())){var o=e.selectionStart,s=e.selectionEnd,c=e.value.length;if(e.value=a??``,s!==null){var l=e.value.length;o===s&&s===c&&l>c?(e.selectionStart=l,e.selectionEnd=l):(e.selectionStart=o,e.selectionEnd=Math.min(s,l))}}}),(w&&e.defaultValue!==e.value||jr(t)==null&&e.value)&&(n(Ca(e)?wa(e.value):e.value),j!==null&&r.add(j)),Xn(()=>{var n=t();if(e===document.activeElement){var i=j;if(r.has(i))return}Ca(e)&&n===wa(e.value)||(e.type!==`date`||n||e.value)&&n!==e.value&&(e.value=n??``)})}function Sa(e,t,n=t){kt(e,`change`,t=>{n(t?e.defaultChecked:e.checked)}),(w&&e.defaultChecked!==e.checked||jr(t)==null)&&n(e.checked),Xn(()=>{e.checked=!!t()})}function Ca(e){var t=e.type;return t===`number`||t===`range`}function wa(e){return e===``?null:+e}function Ta(e,t){return e===t||e?.[de]===t}function Ea(e=_t(),t,n,r){var i=O.r,a=K;return Jn(()=>{var o,s;return Xn(()=>{o=s,s=r?.()||[],jr(()=>{Ta(n(...s),e)||(t(e,...s),o&&Ta(n(...o),e)&&t(null,...o))})}),()=>{let r=a;for(;r!==i&&r.parent!==null&&r.parent.f&33554432;)r=r.parent;let o=()=>{s&&Ta(n(...s),e)&&t(null,...s)},c=r.teardown;r.teardown=()=>{o(),c?.()}}}),e}var Da=[];function Oa(e,t=m){let n=null,r=new Set;function i(t){if(Ie(e,t)&&(e=t,n)){let t=!Da.length;for(let t of r)t[1](),Da.push(t,e);if(t){for(let e=0;e{r.delete(c),r.size===0&&n&&(n(),n=null)}}return{set:i,update:a,subscribe:o}}var ka=!1;function Aa(e){var t=ka;try{return ka=!1,[e(),ka]}finally{ka=t}}var ja={get(e,t){if(!e.exclude.has(t))return e.props[t]},set(e,t){return!1},getOwnPropertyDescriptor(e,t){if(!e.exclude.has(t)&&t in e.props)return{enumerable:!0,configurable:!0,value:e.props[t]}},has(e,t){return!e.exclude.has(t)&&t in e.props},ownKeys(e){return Reflect.ownKeys(e.props).filter(t=>!e.exclude.has(t))}};function Ma(e,t,n){return new Proxy({props:e,exclude:t},ja)}var Na={get(e,t){let n=e.props.length;for(;n--;){let r=e.props[n];if(p(r)&&(r=r()),typeof r==`object`&&r&&t in r)return r[t]}},set(e,t,n){let r=e.props.length;for(;r--;){let i=e.props[r];p(i)&&(i=i());let a=s(i,t);if(a&&a.set)return a.set(n),!0}return!1},getOwnPropertyDescriptor(e,t){let n=e.props.length;for(;n--;){let r=e.props[n];if(p(r)&&(r=r()),typeof r==`object`&&r&&t in r){let e=s(r,t);return e&&!e.configurable&&(e.configurable=!0),e}}},has(e,t){if(t===de||t===pe)return!1;for(let n of e.props)if(p(n)&&(n=n()),n!=null&&t in n)return!0;return!1},ownKeys(e){let t=[];for(let n of e.props)if(p(n)&&(n=n()),n){for(let e in n)t.includes(e)||t.push(e);for(let e of Object.getOwnPropertySymbols(n))t.includes(e)||t.push(e)}return t}};function Pa(...e){return new Proxy({props:e},Na)}function Fa(e,t,n,r){var i=!0,a=!!(n&8),o=!!(n&16),c=r,l=!0,u=void 0,d=()=>o&&i?(u??=Pt(r),Q(u)):(l&&(l=!1,c=o?jr(r):r),c);let f;if(a){var p=de in e||pe in e;f=s(e,t)?.set??(p&&t in e?n=>e[t]=n:void 0)}var m,h=!1;a?[m,h]=Aa(()=>e[t]):m=e[t],m===void 0&&r!==void 0&&(m=d(),f&&(i&&Qe(t),f(m)));var g=i?()=>{var n=e[t];return n===void 0?d():(l=!0,n)}:()=>{var n=e[t];return n!==void 0&&(c=void 0),n===void 0?c:n};if(i&&!(n&4))return g;if(f){var _=e.$$legacy;return(function(e,t){return arguments.length>0?((!i||!t||_||h)&&f(t?g():e),e):g()})}var v=!1,y=(n&1?Pt:Rt)(()=>(v=!1,g()));a&&Q(y);var b=K;return(function(e,t){if(arguments.length>0){let n=t?Q(y):i&&a?Sn(e):e;return P(y,n),v=!0,c!==void 0&&(c=n),e}return H&&v||b.f&16384?y.v:Q(y)})}function Ia(e){return class extends La{constructor(t){super({component:e,...t})}}}var La=class{#e;#t;constructor(e){var t=new Map,n=(e,n)=>{var r=hn(n,!1,!1);return t.set(e,r),r};let r=new Proxy({...e.props||{},$$events:{}},{get(e,r){return Q(t.get(r)??n(r,Reflect.get(e,r)))},has(e,r){return r===pe||(Q(t.get(r)??n(r,Reflect.get(e,r))),Reflect.has(e,r))},set(e,r,i){return P(t.get(r)??n(r,i),i),Reflect.set(e,r,i)}});this.#t=(e.hydrate?pi:fi)(e.component,{target:e.target,anchor:e.anchor,props:r,context:e.context,intro:e.intro??!1,recover:e.recover,transformError:e.transformError}),(!e?.props?.$$host||e.sync===!1)&&en(),this.#e=r.$$events;for(let e of Object.keys(this.#t))e!==`$set`&&e!==`$destroy`&&e!==`$on`&&o(this,e,{get(){return this.#t[e]},set(t){this.#t[e]=t},enumerable:!0});this.#t.$set=e=>{Object.assign(r,e)},this.#t.$destroy=()=>{_i(this.#t)}}$set(e){this.#t.$set(e)}$on(e,t){this.#e[e]=this.#e[e]||[];let n=(...e)=>t.call(this,...e);return this.#e[e].push(n),()=>{this.#e[e]=this.#e[e].filter(e=>e!==n)}}$destroy(){this.#t.$destroy()}};function Ra(e,t){if(Re(`hydratable`),w){let t=window.__svelte?.h;if(t?.has(e))return t.get(e);Ee(e)}return t()}var za=t({afterUpdate:()=>Ka,beforeUpdate:()=>Ga,createContext:()=>ut,createEventDispatcher:()=>Wa,createRawSnippet:()=>Ni,flushSync:()=>en,fork:()=>ln,getAbortSignal:()=>Ba,getAllContexts:()=>mt,getContext:()=>dt,hasContext:()=>pt,hydratable:()=>Ra,hydrate:()=>pi,mount:()=>fi,onDestroy:()=>Ha,onMount:()=>Va,setContext:()=>ft,settled:()=>Or,tick:()=>Dr,unmount:()=>_i,untrack:()=>jr});function Ba(){return U===null&&Ye(),(U.ac??=new AbortController).signal}function Va(e){O===null&&ze(`onMount`),Wn(()=>{let t=jr(e);if(typeof t==`function`)return t})}function Ha(e){O===null&&ze(`onDestroy`),Va(()=>()=>jr(e))}function Ua(e,t,{bubbles:n=!1,cancelable:r=!1}={}){return new CustomEvent(e,{detail:t,bubbles:n,cancelable:r})}function Wa(){let e=O;return e===null&&ze(`createEventDispatcher`),(t,r,i)=>{let a=e.s.$$events?.[t];if(a){let o=n(a)?a.slice():[a],s=Ua(t,r,i);for(let t of o)t.call(e.x,s);return!s.defaultPrevented}return!0}}function Ga(e){O===null&&ze(`beforeUpdate`),O.l===null&&Ze(`beforeUpdate`),qa(O).b.push(e)}function Ka(e){O===null&&ze(`afterUpdate`),O.l===null&&Ze(`afterUpdate`),qa(O).a.push(e)}function qa(e){var t=e.l;return t.u??={a:[],b:[],m:[]}}export{Sn as $,di as A,Or as B,Fi as C,Si as D,Ei as E,ii as F,Wn as G,jr as H,Jr as I,Tn as J,Kn as K,qr as L,ai as M,ti as N,xi as O,ri as P,Pn as Q,Kr as R,Ii as S,Mi as T,Qn as U,Dr as V,Zn as W,Mn as X,jn as Y,Nn as Z,$i as _,Ma as a,ht as at,Ki as b,Ea as c,Me as ct,_a as d,_ as dt,P as et,fa as f,t as ft,ea as g,pa as h,Fa as i,gt as it,oi as j,yi as k,Sa as l,je as lt,ma as m,Va as n,Lt as nt,Pa as o,ft as ot,ha as p,En as q,Ia as r,dt as rt,Oa as s,it as st,za as t,mn as tt,xa as u,m as ut,Qi as v,Pi as w,Bi as x,Ji as y,Q as z}; \ No newline at end of file diff --git a/dash/build/_app/immutable/chunks/BhDPUJdG.js b/dash/build/_app/immutable/chunks/DwX-c_Q9.js similarity index 91% rename from dash/build/_app/immutable/chunks/BhDPUJdG.js rename to dash/build/_app/immutable/chunks/DwX-c_Q9.js index 22bf344..ab5cbbe 100644 --- a/dash/build/_app/immutable/chunks/BhDPUJdG.js +++ b/dash/build/_app/immutable/chunks/DwX-c_Q9.js @@ -1 +1 @@ -import{B as e,V as t,et as n,n as r,s as i,t as a,tt as o,z as s}from"./CdZTpPUs.js";var c=class{constructor(e,t){this.status=e,this.body=typeof t==`string`?{message:t}:t||{message:`Error: ${e}`}}toString(){return JSON.stringify(this.body)}},l=class{constructor(e,t){try{new Headers({location:t})}catch{throw Error(`Invalid redirect location ${JSON.stringify(t)}: this string contains characters that cannot be used in HTTP headers`)}this.status=e,this.location=t}},u=class extends Error{constructor(e,t,n){super(n),this.status=e,this.text=t}};new URL(`sveltekit-internal://`);function d(e,t){return e===`/`||t===`ignore`?e:t===`never`?e.endsWith(`/`)?e.slice(0,-1):e:t===`always`&&!e.endsWith(`/`)?e+`/`:e}function f(e){return e.split(`%25`).map(decodeURI).join(`%25`)}function p(e){for(let t in e)e[t]=decodeURIComponent(e[t]);return e}function m({href:e}){return e.split(`#`)[0]}function h(){}function g(...e){let t=5381;for(let n of e)if(typeof n==`string`){let e=n.length;for(;e;)t=t*33^n.charCodeAt(--e)}else if(ArrayBuffer.isView(n)){let e=new Uint8Array(n.buffer,n.byteOffset,n.byteLength),r=e.length;for(;r;)t=t*33^e[--r]}else throw TypeError(`value must be a string or TypedArray`);return(t>>>0).toString(36)}new TextEncoder;function _(e){let t=atob(e),n=new Uint8Array(t.length);for(let e=0;e((e instanceof Request?e.method:t?.method||`GET`)!==`GET`&&y.delete(x(e)),v(e,t));var y=new Map;function ee(e,t){let n=x(e,t),r=document.querySelector(n);if(r?.textContent){r.remove();let{body:e,...t}=JSON.parse(r.textContent);r.getAttribute(`data-b64`)!==null&&(e=_(e));let i=r.getAttribute(`data-ttl`);return i&&y.set(n,{body:e,init:t,ttl:1e3*Number(i)}),Promise.resolve(new Response(e,t))}return window.fetch(e,t)}function b(e,t,n){if(y.size>0){let t=x(e,n),r=y.get(t);if(r){if(performance.now(){let n=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(e);if(n)return t.push({name:n[1],matcher:n[2],optional:!1,rest:!0,chained:!0}),`(?:/([^]*))?`;let r=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(e);if(r)return t.push({name:r[1],matcher:r[2],optional:!0,rest:!1,chained:!0}),`(?:/([^/]+))?`;if(!e)return;let i=e.split(/\[(.+?)\](?!\])/);return`/`+i.map((e,n)=>{if(n%2){if(e.startsWith(`x+`))return se(String.fromCharCode(parseInt(e.slice(2),16)));if(e.startsWith(`u+`))return se(String.fromCharCode(...e.slice(2).split(`-`).map(e=>parseInt(e,16))));let[,r,a,o,s]=te.exec(e);return t.push({name:o,matcher:s,optional:!!r,rest:!!a,chained:a?n===1&&i[0]===``:!1}),a?`([^]*?)`:r?`([^/]*)?`:`([^/]+?)`}return se(e)}).join(``)}).join(``)}/?$`),params:t}}function ie(e){return e!==``&&!/^\([^)]+\)$/.test(e)}function ae(e){return e.slice(1).split(`/`).filter(ie)}function oe(e,t,n){let r={},i=e.slice(1),a=i.filter(e=>e!==void 0),o=0;for(let e=0;ee).join(`/`),o=0),c===void 0){if(s.rest)c=``;else continue}if(!s.matcher||n[s.matcher](c)){r[s.name]=c;let n=t[e+1],l=i[e+1];n&&!n.rest&&n.optional&&l&&s.chained&&(o=0),!n&&!l&&Object.keys(r).length===a.length&&(o=0)}else if(s.optional&&s.chained)o++;else return}if(!o)return r}function se(e){return e.normalize().replace(/[[\]]/g,`\\$&`).replace(/%/g,`%25`).replace(/\//g,`%2[Ff]`).replace(/\?/g,`%3[Ff]`).replace(/#/g,`%23`).replace(/[.*+?^${}()|\\]/g,`\\$&`)}function ce({nodes:e,server_loads:t,dictionary:n,matchers:r}){let i=new Set(t);return Object.entries(n).map(([t,[n,i,s]])=>{let{pattern:c,params:l}=re(t),u={id:t,exec:e=>{let t=c.exec(e);if(t)return oe(t,l,r)},errors:[1,...s||[]].map(t=>e[t]),layouts:[0,...i||[]].map(o),leaf:a(n)};return u.errors.length=u.layouts.length=Math.max(u.errors.length,u.layouts.length),u});function a(t){let n=t<0;return n&&(t=~t),[n,e[t]]}function o(t){return t===void 0?t:[i.has(t),e[t]]}}function le(e,t=JSON.parse){try{return t(sessionStorage[e])}catch{}}function ue(e,t,n=JSON.stringify){let r=n(t);try{sessionStorage[e]=r}catch{}}var S=globalThis.__sveltekit_3fcklw?.base??`/admin`,de=globalThis.__sveltekit_3fcklw?.assets??S??``,fe=`1792658081259`,pe=`sveltekit:snapshot`,me=`sveltekit:scroll`,he=`sveltekit:states`,C=`sveltekit:history`,w=`sveltekit:navigation`,T={tap:1,hover:2,viewport:3,eager:4,off:-1,false:-1},ge=location.origin;function _e(e){if(e instanceof URL)return e;let t=document.baseURI;if(!t){let e=document.getElementsByTagName(`base`);t=e.length?e[0].href:document.URL}return new URL(e,t)}function E(){return{x:pageXOffset,y:pageYOffset}}function D(e,t){return e.getAttribute(`data-sveltekit-${t}`)}var ve={...T,"":T.hover};function ye(e){let t=e.assignedSlot??e.parentNode;return t?.nodeType===11&&(t=t.host),t}function be(e,t){for(;e&&e!==t;){if(e.nodeName.toUpperCase()===`A`&&e.hasAttribute(`href`))return e;e=ye(e)}}function xe(e,t,n){let r;try{if(r=new URL(e instanceof SVGAElement?e.href.baseVal:e.href,document.baseURI),n&&r.hash.match(/^#[^/]/)){let e=location.hash.split(`#`)[1]||`/`;r.hash=`#${e}${r.hash}`}}catch{}let i=e instanceof SVGAElement?e.target.baseVal:e.target,a=!r||!!i||k(r,t,n)||(e.getAttribute(`rel`)||``).split(/\s+/).includes(`external`),o=r?.origin===ge&&e.hasAttribute(`download`);return{url:r,external:a,target:i,download:o}}function O(e){let t=null,n=null,r=null,i=null,a=null,o=null,s=e;for(;s&&s!==document.documentElement;)r===null&&(r=D(s,`preload-code`)),i===null&&(i=D(s,`preload-data`)),t===null&&(t=D(s,`keepfocus`)),n===null&&(n=D(s,`noscroll`)),a===null&&(a=D(s,`reload`)),o===null&&(o=D(s,`replacestate`)),s=ye(s);function c(e){switch(e){case``:case`true`:return!0;case`off`:case`false`:return!1;default:return}}return{preload_code:ve[r??`off`],preload_data:ve[i??`off`],keepfocus:c(t),noscroll:c(n),reload:c(a),replace_state:c(o)}}function Se(e){let t=i(e),n=!0;function r(){n=!0,t.update(e=>e)}function a(e){n=!1,t.set(e)}function o(e){let r;return t.subscribe(t=>{(r===void 0||n&&t!==r)&&e(r=t)})}return{notify:r,set:a,subscribe:o}}var Ce={v:h};function we(){let{set:e,subscribe:t}=i(!1),n;async function r(){clearTimeout(n);try{let t=await fetch(`${de}/_app/version.json`,{headers:{pragma:`no-cache`,"cache-control":`no-cache`}});if(!t.ok)return!1;let r=(await t.json()).version!==fe;return r&&(e(!0),Ce.v(),clearTimeout(n)),r}catch{return!1}}return{subscribe:t,check:r}}function k(e,t,n){return e.origin!==ge||!e.pathname.startsWith(t)?!0:n?e.pathname!==location.pathname:!1}function Te(e){}var Ee=new Set([`load`,`prerender`,`csr`,`ssr`,`trailingSlash`,`config`]);[...Ee],[...new Set([...Ee])];function De(e){return e.filter(e=>e!=null)}function A(e,t){return e+`/`+t}function Oe(e){return e instanceof c||e instanceof u?e.status:500}function ke(e){return e instanceof u?e.text:`Internal Error`}var j,M,Ae,je=r.toString().includes(`$$`)||/function \w+\(\) \{\}/.test(r.toString()),Me=`a:`;je?(j={data:{},form:null,error:null,params:{},route:{id:null},state:{},status:-1,url:new URL(Me)},M={current:null},Ae={current:!1}):(j=new class{#e=o({});get data(){return s(this.#e)}set data(e){n(this.#e,e)}#t=o(null);get form(){return s(this.#t)}set form(e){n(this.#t,e)}#n=o(null);get error(){return s(this.#n)}set error(e){n(this.#n,e)}#r=o({});get params(){return s(this.#r)}set params(e){n(this.#r,e)}#i=o({id:null});get route(){return s(this.#i)}set route(e){n(this.#i,e)}#a=o({});get state(){return s(this.#a)}set state(e){n(this.#a,e)}#o=o(-1);get status(){return s(this.#o)}set status(e){n(this.#o,e)}#s=o(new URL(Me));get url(){return s(this.#s)}set url(e){n(this.#s,e)}},M=new class{#e=o(null);get current(){return s(this.#e)}set current(e){n(this.#e,e)}},Ae=new class{#e=o(!1);get current(){return s(this.#e)}set current(e){n(this.#e,e)}},Ce.v=()=>Ae.current=!0);function Ne(e){Object.assign(j,e)}var{onMount:Pe,tick:Fe}=a,Ie=new Set([`icon`,`shortcut icon`,`apple-touch-icon`]),N=null,P=le(`sveltekit:scroll`)??{},F=le(`sveltekit:snapshot`)??{},I={url:Se({}),page:Se({}),navigating:i(null),updated:we()};function Le(e){P[e]=E()}function Re(e,t){let n=e+1;for(;P[n];)delete P[n],n+=1;for(n=t+1;F[n];)delete F[n],n+=1}function L(e,t=!1){return t?location.replace(e.href):location.href=e.href,new Promise(h)}async function ze(){if(`serviceWorker`in navigator){let e=await navigator.serviceWorker.getRegistration(S||`/`);e&&await e.update()}}var Be,Ve,R,z,He,B,Ue={},We={},V=[],H=[],U=null;function Ge(){U?.fork?.then(e=>e?.discard()),U=null,Q={element:void 0,href:void 0}}var Ke=new Map,qe=new Set,Je=new Set,W=new Set,G={branch:[],error:null,url:null,nav:null},Ye=!1,Xe=!1,Ze=!0,K=!1,q=!1,Qe=!1,$e=!1,et,J,Y,X,tt=new Set,nt=new Map,rt=new Map;async function it(e,t,n){if(globalThis.__sveltekit_3fcklw.data){let{q:e={},p:t={},l:n={},f:r={}}=globalThis.__sveltekit_3fcklw.data;for(let t in e)Ue[t]=e[t];for(let e in n)Ue[e]=n[e];for(let e in r)Ue[e]=r[e];for(let e in t)We[e]=t[e]}document.URL!==location.href&&(location.href=location.href),B=e,await e.hooks.init?.(),Be=ce(e),z=document.documentElement,He=t,Ve=e.nodes[0],R=e.nodes[1],Ve(),R(),J=history.state?.[C],Y=history.state?.[w],J||(J=Y=Date.now(),history.replaceState({...history.state,[C]:J,[w]:Y},``));let r=P[J];function i(){r&&(history.scrollRestoration=`manual`,scrollTo(r.x,r.y))}n?(i(),await Mt(He,n)):(await Z({type:`enter`,url:_e(B.hash?Rt(new URL(location.href)):location.href),replace_state:!0}),i()),jt()}function at(){V.length=0,$e=!1}function ot(e){H.some(e=>e?.snapshot)&&(F[e]=H.map(e=>e?.snapshot?.capture()))}function st(e){F[e]?.forEach((e,t)=>{H[t]?.snapshot?.restore(e)})}function ct(){Le(J),ue(me,P),ot(Y),ue(pe,F)}async function lt(e,n,r,i){let a,o;n.invalidateAll&&Ge(),await Z({type:`goto`,url:_e(e),keepfocus:n.keepFocus,noscroll:n.noScroll,replace_state:n.replaceState,state:n.state,redirect_count:r,nav_token:i,accept:()=>{if(n.invalidateAll){$e=!0,a=new Set;for(let[e,t]of nt)for(let[n,r]of t)r.resource?.reset(),a.add(A(e,n));o=new Set;for(let[e,t]of rt)for(let n of t.keys())o.add(A(e,n))}n.invalidate&&n.invalidate.forEach(At)}}),n.invalidateAll&&t().then(t).then(()=>{for(let[e,t]of nt)for(let[n,{resource:r}]of t)a?.has(A(e,n))&&r.start();for(let[e,t]of rt)for(let[n,{resource:r}]of t)o?.has(A(e,n))&&r.reconnect()})}async function ut(e){if(e.id!==U?.id){Ge();let t={};tt.add(t),U={id:e.id,token:t,promise:bt({...e,preload:t}).then(e=>(tt.delete(t),e.type===`loaded`&&e.state.error&&Ge(),e)),fork:null}}return U.promise}async function dt(e){let t=(await wt(e,!1))?.route;t&&await Promise.all([...t.layouts,t.leaf].filter(Boolean).map(e=>e[1]()))}async function ft(e,t,n){let r={params:G.params,route:{id:G.route?.id??null},url:new URL(location.href)};if(G={...e.state,nav:r},Ne(e.props.page),et=new B.root({target:t,props:{...e.props,stores:I,components:H},hydrate:n,sync:!1,transformError:void 0}),await Promise.resolve(),n){let e={from:null,to:{...r,scroll:P[J]??E()},willUnload:!1,type:`enter`,complete:Promise.resolve()};W.forEach(t=>t(e))}st(Y),Xe=!0}async function pt({url:e,params:t,branch:n,errors:r,status:i,error:a,route:o,form:s}){let c=`never`;if(S&&(e.pathname===S||e.pathname===S+`/`))c=`always`;else for(let e of n)e?.slash!==void 0&&(c=e.slash);e.pathname=d(e.pathname,c),e.search=e.search;let l={type:`loaded`,state:{url:e,params:t,branch:n,error:a,route:o},props:{constructors:De(n).map(e=>e.node.component),page:Lt(j)}};s!==void 0&&(l.props.form=s);let u={},f=!j,p=0;for(let e=0;et(new URL(e))))return!0;return!1}function _t(e,t){return e?.type===`data`?e:e?.type===`skip`?t??null:null}function vt(e,t){if(!e)return new Set(t.searchParams.keys());let n=new Set([...e.searchParams.keys(),...t.searchParams.keys()]);for(let r of n){let i=e.searchParams.getAll(r),a=t.searchParams.getAll(r);i.every(e=>a.includes(e))&&a.every(e=>i.includes(e))&&n.delete(r)}return n}function yt({error:e,url:t,route:n,params:r}){return{type:`loaded`,state:{error:e,url:t,route:n,params:r,branch:[]},props:{page:Lt(j),constructors:[]}}}async function bt({id:e,invalidating:t,url:n,params:r,route:i,preload:a}){if(U?.id===e)return tt.delete(U.token),U.promise;let{errors:o,layouts:s,leaf:u}=i,d=[...s,u];o.forEach(e=>e?.().catch(h)),d.forEach(e=>e?.[1]().catch(h));let f=G.url?e!==Et(G.url):!1,p=G.route?i.id!==G.route.id:!1,m=vt(G.url,n),g=!1,_=d.map(async(e,t)=>{if(!e)return;let a=G.branch[t];return e[1]===a?.loader&&!gt(g,p,f,m,a.universal?.uses,r)?a:(g=!0,mt({loader:e[1],url:n,params:r,route:i,parent:async()=>{let e={};for(let n=0;nPromise.resolve({}),server_data_node:_t(null)}),{node:await R(),loader:R,universal:null,server:null,data:null}],status:e,error:t,errors:[],route:null})}catch(t){if(t instanceof l){await lt(new URL(t.location,location.href),{},0);return}let a=await B.get_error_template(),o=await $(t,{url:n,params:i,route:r}),s=a({status:e,message:String(o?.message??``).replace(/&/g,`&`).replace(//g,`>`)}),c=new DOMParser().parseFromString(s,`text/html`);throw document.documentElement.replaceChild(document.adoptNode(c.head),document.head),document.documentElement.replaceChild(document.adoptNode(c.body),document.body),t}}async function Ct(e){let t=e.href;if(Ke.has(t))return Ke.get(t);let n;try{let r=(async()=>{let t=await B.hooks.reroute({url:new URL(e),fetch:async(t,n)=>ht(t,n,e).promise})??e;if(typeof t==`string`){let n=new URL(e);B.hash?n.hash=t:n.pathname=t,t=n}return t})();Ke.set(t,r),n=await r}catch{Ke.delete(t);return}return n}async function wt(e,t){if(e&&!k(e,S,B.hash)){let n=await Ct(e);if(!n)return;let r=Tt(n);for(let n of Be){let i=n.exec(r);if(i)return{id:Et(e),invalidating:t,route:n,params:p(i),url:e}}}}function Tt(e){return f(B.hash?e.hash.replace(/^#/,``).replace(/[?#].+/,``):e.pathname.slice(S.length))||`/`}function Et(e){return(B.hash?e.hash.replace(/^#/,``):e.pathname)+e.search}function Dt({url:e,type:t,intent:n,delta:r,event:i,scroll:a}){let o=!1,s=It(G,n,e,t,a??null);r!==void 0&&(s.navigation.delta=r),i!==void 0&&(s.navigation.event=i);let c={...s.navigation,cancel:()=>{o=!0,s.reject(Error(`navigation cancelled`))}};return K||qe.forEach(e=>e(c)),o?null:s}async function Z({type:n,url:r,popped:i,keepfocus:a,noscroll:o,replace_state:s,state:c={},redirect_count:l=0,nav_token:d={},accept:f=h,block:p=h,event:m}){let g=X;X=d;let _=await wt(r,!1),v=n===`enter`?It(G,_,r,n):Dt({url:r,type:n,delta:i?.delta,intent:_,scroll:i?.scroll,event:m});if(!v){p(),X===d&&(X=g);return}let y=J,ee=Y;f(),K=!0,Xe&&v.navigation.type!==`enter`&&I.navigating.set(M.current=v.navigation);let b=_&&await bt(_);if(!b){if(k(r,S,B.hash))return await L(r,s);b=await Ot(r,{id:null},await $(new u(404,`Not Found`,`Not found: ${r.pathname}`),{url:r,params:{},route:{id:null}}),404,s)}if(r=_?.url||r,X!==d){v.reject(Error(`navigation aborted`));return}if(!b)return;if(b.type===`redirect`){if(l<20){await Z({type:n,url:new URL(b.location,r),popped:i,keepfocus:a,noscroll:o,replace_state:s,state:c,redirect_count:l+1,nav_token:d}),v.fulfil(void 0);return}if(b=await St({status:500,error:await $(Error(`Redirect loop`),{url:r,params:{},route:{id:null}}),url:r,route:{id:null}}),!b)return}else if(b.props.page.status>=400&&await I.updated.check())return await ze(),await L(r,s);if(at(),Le(y),ot(ee),b.props.page.url.pathname!==r.pathname&&(r.pathname=b.props.page.url.pathname),c=i?i.state:c,!i){let e=+!s,t={[C]:J+=e,[w]:Y+=e,[he]:c};(s?history.replaceState:history.pushState).call(history,t,``,r),s||Re(J,Y)}let x=_&&U?.id===_.id?U.fork:null;U?.fork&&!x?Ge():(U=null,Q={element:void 0,href:void 0}),b.props.page.state=c;let te;if(Xe){let t=(await Promise.all(Array.from(Je,e=>e(v.navigation)))).filter(e=>typeof e==`function`);if(t.length>0){function e(){t.forEach(e=>{W.delete(e)})}t.push(e),t.forEach(e=>{W.add(e)})}let n=v.navigation.to;G={...b.state,nav:{params:n.params,route:n.route,url:n.url}},b.props.page&&(b.props.page.url=r),!a&&document.activeElement instanceof HTMLElement&&document.activeElement!==document.body&&document.activeElement.blur();let i=x&&await x;i?te=i.commit():(N=null,et.$set(b.props),N&&Object.assign(b.props.page,N),Ne(b.props.page),te=e?.()),Qe=!0}else await ft(b,He,!1);let{activeElement:ne}=document;if(await te,await t(),await t(),X!==d){v.reject(Error(`navigation aborted`));return}b.props.page&&N&&Object.assign(b.props.page,N);let re=null;if(Ze){let e=i?i.scroll:o?E():null;e?scrollTo(e.x,e.y):(re=r.hash&&document.getElementById(zt(r)))?re.scrollIntoView():scrollTo(0,0)}let ie=document.activeElement!==ne&&document.activeElement!==document.body;!a&&!ie&&Ft(r,!re),Ze=!0,K=!1,v.fulfil(void 0),v.navigation.to&&(v.navigation.to.scroll=E()),W.forEach(e=>e(v.navigation)),n===`popstate`&&st(Y),I.navigating.set(M.current=null)}async function Ot(e,t,n,r,i){return e.origin===ge&&e.pathname===location.pathname&&!Ye?await St({status:r,error:n,url:e,route:t}):await L(e,i)}var Q={element:void 0,href:void 0};function kt(){let e,t;z.addEventListener(`mousemove`,t=>{let n=t.target;clearTimeout(e),e=setTimeout(()=>{i(n,T.hover)},20)});function n(e){e.defaultPrevented||i(e.composedPath()[0],T.tap)}z.addEventListener(`mousedown`,n),z.addEventListener(`touchstart`,n,{passive:!0});let r=new IntersectionObserver(e=>{for(let t of e)t.isIntersecting&&(dt(new URL(t.target.href)),r.unobserve(t.target))},{threshold:0});async function i(e,n){let r=be(e,z),i=r===Q.element&&r?.href===Q.href&&n>=t;if(!r||i)return;let{url:a,external:o,download:s}=xe(r,S,B.hash);if(o||s)return;let c=O(r),l=a&&Et(G.url)===Et(a);if(!(c.reload||l)){if(n<=c.preload_data){Q={element:r,href:r.href},t=T.tap;let e=await wt(a,!1);if(!e)return;ut(e)}else n<=c.preload_code&&(Q={element:r,href:r.href},t=n,dt(a))}}function a(){r.disconnect();for(let e of z.querySelectorAll(`a`)){let{url:t,external:n,download:i}=xe(e,S,B.hash);if(n||i)continue;let a=O(e);a.reload||(a.preload_code===T.viewport&&r.observe(e),a.preload_code===T.eager&&dt(t))}}W.add(a),a()}function $(e,t){if(e instanceof c)return e.body;let n=Oe(e),r=ke(e);return B.hooks.handleError({error:e,event:t,status:n,message:r})??{message:r}}function At(e){if(typeof e==`function`)V.push(e);else{let{href:t}=new URL(e,location.href);V.push(e=>e.href===t)}}function jt(){history.scrollRestoration=`manual`,addEventListener(`beforeunload`,e=>{let t=!1;if(ct(),!K){let e=It(G,void 0,null,`leave`),n={...e.navigation,cancel:()=>{t=!0,e.reject(Error(`navigation cancelled`))}};qe.forEach(e=>e(n))}t?(e.preventDefault(),e.returnValue=``):history.scrollRestoration=`auto`}),addEventListener(`visibilitychange`,()=>{document.visibilityState===`hidden`&&ct()}),navigator.connection?.saveData||kt(),z.addEventListener(`click`,async t=>{if(t.button||t.which!==1||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.defaultPrevented)return;let n=be(t.composedPath()[0],z);if(!n)return;let{url:r,external:i,target:a,download:o}=xe(n,S,B.hash);if(!r)return;if(a===`_parent`||a===`_top`){if(window.parent!==window)return}else if(a&&a!==`_self`)return;let s=O(n);if(!(n instanceof SVGAElement)&&r.protocol!==location.protocol&&r.protocol!==`https:`&&r.protocol!==`http:`||o)return;let[c,l]=(B.hash?r.hash.replace(/^#/,``):r.href).split(`#`),u=c===m(location);if(i||s.reload&&(!u||!l))Dt({url:r,type:`link`,event:t})?K=!0:t.preventDefault();else{if(l!==void 0&&u){let[,i]=G.url.href.split(`#`);if(i===l){if(t.preventDefault(),l===``||l===`top`&&n.ownerDocument.getElementById(`top`)===null)scrollTo({top:0});else{let e=n.ownerDocument.getElementById(decodeURIComponent(l));e&&(e.scrollIntoView(),e.focus())}return}if(q=!0,Le(J),e(r),!s.replace_state)return;q=!1}t.preventDefault(),await new Promise(e=>{requestAnimationFrame(()=>{setTimeout(e,0)}),setTimeout(e,100)}),await Z({type:`link`,url:r,keepfocus:s.keepfocus,noscroll:s.noscroll,replace_state:s.replace_state??r.href===location.href,event:t})}}),z.addEventListener(`submit`,e=>{if(e.defaultPrevented)return;let t=HTMLFormElement.prototype.cloneNode.call(e.target),n=e.submitter;if((n?.formTarget||t.target)===`_blank`||(n?.formMethod||t.method)!==`get`)return;let r=new URL(n?.hasAttribute(`formaction`)&&n?.formAction||t.action);if(k(r,S,!1))return;let i=e.target,a=O(i);if(a.reload)return;e.preventDefault(),e.stopPropagation();let o=new FormData(i,n);r.search=new URLSearchParams(o).toString(),Z({type:`form`,url:r,keepfocus:a.keepfocus,noscroll:a.noscroll,replace_state:a.replace_state??r.href===location.href,event:e})}),addEventListener(`popstate`,async t=>{if(!Pt){if(t.state?.[`sveltekit:history`]){let n=t.state[C];if(X={},n===J)return;let r=P[n],i=t.state[`sveltekit:states`]??{},a=new URL(t.state[`sveltekit:pageurl`]??location.href),o=t.state[w],s=G.url?m(location)===m(G.url):!1;if(o===Y&&(Qe||s)){i!==j.state&&(j.state=i),e(a),P[J]=E(),r&&scrollTo(r.x,r.y),J=n;return}let c=n-J;await Z({type:`popstate`,url:a,popped:{state:i,scroll:r,delta:c},accept:()=>{J=n,Y=o},block:()=>{history.go(-c)},nav_token:X,event:t})}else q||(e(new URL(location.href)),B.hash&&location.reload())}}),addEventListener(`hashchange`,()=>{q&&(q=!1,history.replaceState({...history.state,[C]:++J,[w]:Y},``,location.href))});for(let e of document.querySelectorAll(`link`))Ie.has(e.rel)&&(e.href=e.href);addEventListener(`pageshow`,e=>{e.persisted&&I.navigating.set(M.current=null)});function e(e){G.url=j.url=e,I.page.set(Lt(j)),I.page.notify()}}async function Mt(e,{status:t=200,error:n,node_ids:r,params:i,route:a,server_route:o,data:s,form:c}){Ye=!0;let u=new URL(location.href),d;({params:i={},route:a={id:null}}=await wt(u,!1)||{}),d=Be.find(({id:e})=>e===a.id);let f,p=!0;try{let e=r.map(async(t,n)=>{let r=s[n];return r?.uses&&(r.uses=Nt(r.uses)),mt({loader:B.nodes[t],url:u,params:i,route:a,parent:async()=>{let t={};for(let r=0;r{let a=history.state;Pt=!0,location.replace(new URL(`#${n}`,location.href)),history.replaceState(a,``,e),t&&scrollTo(r,i),Pt=!1})}else{let e=document.body,t=e.getAttribute(`tabindex`);e.tabIndex=-1,e.focus({preventScroll:!0,focusVisible:!1}),t===null?e.removeAttribute(`tabindex`):e.setAttribute(`tabindex`,t)}let r=getSelection();if(r&&r.type!==`None`){let e=[];for(let t=0;t{if(r.rangeCount===e.length){for(let t=0;t{a=e,o=t});return s.catch(h),{navigation:{from:{params:e.params,route:{id:e.route?.id??null},url:e.url,scroll:E()},to:n&&{params:t?.params??null,route:{id:t?.route?.id??null},url:n,scroll:i},willUnload:!t,type:r,complete:s},fulfil:a,reject:o}}function Lt(e){return{data:e.data,error:e.error,form:e.form,params:e.params,route:e.route,state:e.state,status:e.status,url:e.url}}function Rt(e){let t=new URL(e);return t.hash=decodeURIComponent(e.hash),t}function zt(e){let t;if(B.hash){let[,,n]=e.hash.split(`#`,3);t=n??``}else t=e.hash.slice(1);return decodeURIComponent(t)}export{Te as i,M as n,j as r,it as t}; \ No newline at end of file +import{B as e,H as t,V as n,n as r,nt as i,s as a,t as o,tt as s}from"./C2MtwMCw.js";var c=class{constructor(e,t){this.status=e,this.body=typeof t==`string`?{message:t}:t||{message:`Error: ${e}`}}toString(){return JSON.stringify(this.body)}},l=class{constructor(e,t){try{new Headers({location:t})}catch{throw Error(`Invalid redirect location ${JSON.stringify(t)}: this string contains characters that cannot be used in HTTP headers`)}this.status=e,this.location=t}},u=class extends Error{constructor(e,t,n){super(n),this.status=e,this.text=t}};new URL(`sveltekit-internal://`);function d(e,t){return e===`/`||t===`ignore`?e:t===`never`?e.endsWith(`/`)?e.slice(0,-1):e:t===`always`&&!e.endsWith(`/`)?e+`/`:e}function f(e){return e.split(`%25`).map(decodeURI).join(`%25`)}function p(e){for(let t in e)e[t]=decodeURIComponent(e[t]);return e}function m({href:e}){return e.split(`#`)[0]}function h(){}function g(...e){let t=5381;for(let n of e)if(typeof n==`string`){let e=n.length;for(;e;)t=t*33^n.charCodeAt(--e)}else if(ArrayBuffer.isView(n)){let e=new Uint8Array(n.buffer,n.byteOffset,n.byteLength),r=e.length;for(;r;)t=t*33^e[--r]}else throw TypeError(`value must be a string or TypedArray`);return(t>>>0).toString(36)}new TextEncoder;function _(e){let t=atob(e),n=new Uint8Array(t.length);for(let e=0;e((e instanceof Request?e.method:t?.method||`GET`)!==`GET`&&y.delete(x(e)),v(e,t));var y=new Map;function ee(e,t){let n=x(e,t),r=document.querySelector(n);if(r?.textContent){r.remove();let{body:e,...t}=JSON.parse(r.textContent);r.getAttribute(`data-b64`)!==null&&(e=_(e));let i=r.getAttribute(`data-ttl`);return i&&y.set(n,{body:e,init:t,ttl:1e3*Number(i)}),Promise.resolve(new Response(e,t))}return window.fetch(e,t)}function b(e,t,n){if(y.size>0){let t=x(e,n),r=y.get(t);if(r){if(performance.now(){let n=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(e);if(n)return t.push({name:n[1],matcher:n[2],optional:!1,rest:!0,chained:!0}),`(?:/([^]*))?`;let r=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(e);if(r)return t.push({name:r[1],matcher:r[2],optional:!0,rest:!1,chained:!0}),`(?:/([^/]+))?`;if(!e)return;let i=e.split(/\[(.+?)\](?!\])/);return`/`+i.map((e,n)=>{if(n%2){if(e.startsWith(`x+`))return se(String.fromCharCode(parseInt(e.slice(2),16)));if(e.startsWith(`u+`))return se(String.fromCharCode(...e.slice(2).split(`-`).map(e=>parseInt(e,16))));let[,r,a,o,s]=te.exec(e);return t.push({name:o,matcher:s,optional:!!r,rest:!!a,chained:a?n===1&&i[0]===``:!1}),a?`([^]*?)`:r?`([^/]*)?`:`([^/]+?)`}return se(e)}).join(``)}).join(``)}/?$`),params:t}}function ie(e){return e!==``&&!/^\([^)]+\)$/.test(e)}function ae(e){return e.slice(1).split(`/`).filter(ie)}function oe(e,t,n){let r={},i=e.slice(1),a=i.filter(e=>e!==void 0),o=0;for(let e=0;ee).join(`/`),o=0),c===void 0){if(s.rest)c=``;else continue}if(!s.matcher||n[s.matcher](c)){r[s.name]=c;let n=t[e+1],l=i[e+1];n&&!n.rest&&n.optional&&l&&s.chained&&(o=0),!n&&!l&&Object.keys(r).length===a.length&&(o=0)}else if(s.optional&&s.chained)o++;else return}if(!o)return r}function se(e){return e.normalize().replace(/[[\]]/g,`\\$&`).replace(/%/g,`%25`).replace(/\//g,`%2[Ff]`).replace(/\?/g,`%3[Ff]`).replace(/#/g,`%23`).replace(/[.*+?^${}()|\\]/g,`\\$&`)}function ce({nodes:e,server_loads:t,dictionary:n,matchers:r}){let i=new Set(t);return Object.entries(n).map(([t,[n,i,s]])=>{let{pattern:c,params:l}=re(t),u={id:t,exec:e=>{let t=c.exec(e);if(t)return oe(t,l,r)},errors:[1,...s||[]].map(t=>e[t]),layouts:[0,...i||[]].map(o),leaf:a(n)};return u.errors.length=u.layouts.length=Math.max(u.errors.length,u.layouts.length),u});function a(t){let n=t<0;return n&&(t=~t),[n,e[t]]}function o(t){return t===void 0?t:[i.has(t),e[t]]}}function le(e,t=JSON.parse){try{return t(sessionStorage[e])}catch{}}function ue(e,t,n=JSON.stringify){let r=n(t);try{sessionStorage[e]=r}catch{}}var S=globalThis.__sveltekit_nu5se0?.base??`/admin`,de=globalThis.__sveltekit_nu5se0?.assets??S??``,fe=`1792699939959`,pe=`sveltekit:snapshot`,me=`sveltekit:scroll`,he=`sveltekit:states`,C=`sveltekit:history`,w=`sveltekit:navigation`,T={tap:1,hover:2,viewport:3,eager:4,off:-1,false:-1},ge=location.origin;function _e(e){if(e instanceof URL)return e;let t=document.baseURI;if(!t){let e=document.getElementsByTagName(`base`);t=e.length?e[0].href:document.URL}return new URL(e,t)}function E(){return{x:pageXOffset,y:pageYOffset}}function D(e,t){return e.getAttribute(`data-sveltekit-${t}`)}var ve={...T,"":T.hover};function ye(e){let t=e.assignedSlot??e.parentNode;return t?.nodeType===11&&(t=t.host),t}function be(e,t){for(;e&&e!==t;){if(e.nodeName.toUpperCase()===`A`&&e.hasAttribute(`href`))return e;e=ye(e)}}function xe(e,t,n){let r;try{if(r=new URL(e instanceof SVGAElement?e.href.baseVal:e.href,document.baseURI),n&&r.hash.match(/^#[^/]/)){let e=location.hash.split(`#`)[1]||`/`;r.hash=`#${e}${r.hash}`}}catch{}let i=e instanceof SVGAElement?e.target.baseVal:e.target,a=!r||!!i||k(r,t,n)||(e.getAttribute(`rel`)||``).split(/\s+/).includes(`external`),o=r?.origin===ge&&e.hasAttribute(`download`);return{url:r,external:a,target:i,download:o}}function O(e){let t=null,n=null,r=null,i=null,a=null,o=null,s=e;for(;s&&s!==document.documentElement;)r===null&&(r=D(s,`preload-code`)),i===null&&(i=D(s,`preload-data`)),t===null&&(t=D(s,`keepfocus`)),n===null&&(n=D(s,`noscroll`)),a===null&&(a=D(s,`reload`)),o===null&&(o=D(s,`replacestate`)),s=ye(s);function c(e){switch(e){case``:case`true`:return!0;case`off`:case`false`:return!1;default:return}}return{preload_code:ve[r??`off`],preload_data:ve[i??`off`],keepfocus:c(t),noscroll:c(n),reload:c(a),replace_state:c(o)}}function Se(e){let t=a(e),n=!0;function r(){n=!0,t.update(e=>e)}function i(e){n=!1,t.set(e)}function o(e){let r;return t.subscribe(t=>{(r===void 0||n&&t!==r)&&e(r=t)})}return{notify:r,set:i,subscribe:o}}var Ce={v:h};function we(){let{set:e,subscribe:t}=a(!1),n;async function r(){clearTimeout(n);try{let t=await fetch(`${de}/_app/version.json`,{headers:{pragma:`no-cache`,"cache-control":`no-cache`}});if(!t.ok)return!1;let r=(await t.json()).version!==fe;return r&&(e(!0),Ce.v(),clearTimeout(n)),r}catch{return!1}}return{subscribe:t,check:r}}function k(e,t,n){return e.origin!==ge||!e.pathname.startsWith(t)?!0:n?e.pathname!==location.pathname:!1}function Te(e){}var Ee=new Set([`load`,`prerender`,`csr`,`ssr`,`trailingSlash`,`config`]);[...Ee],[...new Set([...Ee])];function De(e){return e.filter(e=>e!=null)}function A(e,t){return e+`/`+t}function Oe(e){return e instanceof c||e instanceof u?e.status:500}function ke(e){return e instanceof u?e.text:`Internal Error`}var j,M,Ae,je=r.toString().includes(`$$`)||/function \w+\(\) \{\}/.test(r.toString()),Me=`a:`;je?(j={data:{},form:null,error:null,params:{},route:{id:null},state:{},status:-1,url:new URL(Me)},M={current:null},Ae={current:!1}):(j=new class{#e=i({});get data(){return e(this.#e)}set data(e){s(this.#e,e)}#t=i(null);get form(){return e(this.#t)}set form(e){s(this.#t,e)}#n=i(null);get error(){return e(this.#n)}set error(e){s(this.#n,e)}#r=i({});get params(){return e(this.#r)}set params(e){s(this.#r,e)}#i=i({id:null});get route(){return e(this.#i)}set route(e){s(this.#i,e)}#a=i({});get state(){return e(this.#a)}set state(e){s(this.#a,e)}#o=i(-1);get status(){return e(this.#o)}set status(e){s(this.#o,e)}#s=i(new URL(Me));get url(){return e(this.#s)}set url(e){s(this.#s,e)}},M=new class{#e=i(null);get current(){return e(this.#e)}set current(e){s(this.#e,e)}},Ae=new class{#e=i(!1);get current(){return e(this.#e)}set current(e){s(this.#e,e)}},Ce.v=()=>Ae.current=!0);function Ne(e){Object.assign(j,e)}var{onMount:Pe,tick:Fe}=o,Ie=new Set([`icon`,`shortcut icon`,`apple-touch-icon`]),N=null,P=le(`sveltekit:scroll`)??{},F=le(`sveltekit:snapshot`)??{},I={url:Se({}),page:Se({}),navigating:a(null),updated:we()};function Le(e){P[e]=E()}function Re(e,t){let n=e+1;for(;P[n];)delete P[n],n+=1;for(n=t+1;F[n];)delete F[n],n+=1}function L(e,t=!1){return t?location.replace(e.href):location.href=e.href,new Promise(h)}async function ze(){if(`serviceWorker`in navigator){let e=await navigator.serviceWorker.getRegistration(S||`/`);e&&await e.update()}}var Be,Ve,R,z,He,B,Ue={},We={},V=[],H=[],U=null;function Ge(){U?.fork?.then(e=>e?.discard()),U=null,Q={element:void 0,href:void 0}}var Ke=new Map,qe=new Set,Je=new Set,W=new Set,G={branch:[],error:null,url:null,nav:null},Ye=!1,Xe=!1,Ze=!0,K=!1,q=!1,Qe=!1,$e=!1,et,J,Y,X,tt=new Set,nt=new Map,rt=new Map;async function it(e,t,n){if(globalThis.__sveltekit_nu5se0.data){let{q:e={},p:t={},l:n={},f:r={}}=globalThis.__sveltekit_nu5se0.data;for(let t in e)Ue[t]=e[t];for(let e in n)Ue[e]=n[e];for(let e in r)Ue[e]=r[e];for(let e in t)We[e]=t[e]}document.URL!==location.href&&(location.href=location.href),B=e,await e.hooks.init?.(),Be=ce(e),z=document.documentElement,He=t,Ve=e.nodes[0],R=e.nodes[1],Ve(),R(),J=history.state?.[C],Y=history.state?.[w],J||(J=Y=Date.now(),history.replaceState({...history.state,[C]:J,[w]:Y},``));let r=P[J];function i(){r&&(history.scrollRestoration=`manual`,scrollTo(r.x,r.y))}n?(i(),await Mt(He,n)):(await Z({type:`enter`,url:_e(B.hash?Rt(new URL(location.href)):location.href),replace_state:!0}),i()),jt()}function at(){V.length=0,$e=!1}function ot(e){H.some(e=>e?.snapshot)&&(F[e]=H.map(e=>e?.snapshot?.capture()))}function st(e){F[e]?.forEach((e,t)=>{H[t]?.snapshot?.restore(e)})}function ct(){Le(J),ue(me,P),ot(Y),ue(pe,F)}async function lt(e,n,r,i){let a,o;n.invalidateAll&&Ge(),await Z({type:`goto`,url:_e(e),keepfocus:n.keepFocus,noscroll:n.noScroll,replace_state:n.replaceState,state:n.state,redirect_count:r,nav_token:i,accept:()=>{if(n.invalidateAll){$e=!0,a=new Set;for(let[e,t]of nt)for(let[n,r]of t)r.resource?.reset(),a.add(A(e,n));o=new Set;for(let[e,t]of rt)for(let n of t.keys())o.add(A(e,n))}n.invalidate&&n.invalidate.forEach(At)}}),n.invalidateAll&&t().then(t).then(()=>{for(let[e,t]of nt)for(let[n,{resource:r}]of t)a?.has(A(e,n))&&r.start();for(let[e,t]of rt)for(let[n,{resource:r}]of t)o?.has(A(e,n))&&r.reconnect()})}async function ut(e){if(e.id!==U?.id){Ge();let t={};tt.add(t),U={id:e.id,token:t,promise:bt({...e,preload:t}).then(e=>(tt.delete(t),e.type===`loaded`&&e.state.error&&Ge(),e)),fork:null}}return U.promise}async function dt(e){let t=(await wt(e,!1))?.route;t&&await Promise.all([...t.layouts,t.leaf].filter(Boolean).map(e=>e[1]()))}async function ft(e,t,n){let r={params:G.params,route:{id:G.route?.id??null},url:new URL(location.href)};if(G={...e.state,nav:r},Ne(e.props.page),et=new B.root({target:t,props:{...e.props,stores:I,components:H},hydrate:n,sync:!1,transformError:void 0}),await Promise.resolve(),n){let e={from:null,to:{...r,scroll:P[J]??E()},willUnload:!1,type:`enter`,complete:Promise.resolve()};W.forEach(t=>t(e))}st(Y),Xe=!0}async function pt({url:e,params:t,branch:n,errors:r,status:i,error:a,route:o,form:s}){let c=`never`;if(S&&(e.pathname===S||e.pathname===S+`/`))c=`always`;else for(let e of n)e?.slash!==void 0&&(c=e.slash);e.pathname=d(e.pathname,c),e.search=e.search;let l={type:`loaded`,state:{url:e,params:t,branch:n,error:a,route:o},props:{constructors:De(n).map(e=>e.node.component),page:Lt(j)}};s!==void 0&&(l.props.form=s);let u={},f=!j,p=0;for(let e=0;et(new URL(e))))return!0;return!1}function _t(e,t){return e?.type===`data`?e:e?.type===`skip`?t??null:null}function vt(e,t){if(!e)return new Set(t.searchParams.keys());let n=new Set([...e.searchParams.keys(),...t.searchParams.keys()]);for(let r of n){let i=e.searchParams.getAll(r),a=t.searchParams.getAll(r);i.every(e=>a.includes(e))&&a.every(e=>i.includes(e))&&n.delete(r)}return n}function yt({error:e,url:t,route:n,params:r}){return{type:`loaded`,state:{error:e,url:t,route:n,params:r,branch:[]},props:{page:Lt(j),constructors:[]}}}async function bt({id:e,invalidating:t,url:n,params:r,route:i,preload:a}){if(U?.id===e)return tt.delete(U.token),U.promise;let{errors:o,layouts:s,leaf:u}=i,d=[...s,u];o.forEach(e=>e?.().catch(h)),d.forEach(e=>e?.[1]().catch(h));let f=G.url?e!==Et(G.url):!1,p=G.route?i.id!==G.route.id:!1,m=vt(G.url,n),g=!1,_=d.map(async(e,t)=>{if(!e)return;let a=G.branch[t];return e[1]===a?.loader&&!gt(g,p,f,m,a.universal?.uses,r)?a:(g=!0,mt({loader:e[1],url:n,params:r,route:i,parent:async()=>{let e={};for(let n=0;nPromise.resolve({}),server_data_node:_t(null)}),{node:await R(),loader:R,universal:null,server:null,data:null}],status:e,error:t,errors:[],route:null})}catch(t){if(t instanceof l){await lt(new URL(t.location,location.href),{},0);return}let a=await B.get_error_template(),o=await $(t,{url:n,params:i,route:r}),s=a({status:e,message:String(o?.message??``).replace(/&/g,`&`).replace(//g,`>`)}),c=new DOMParser().parseFromString(s,`text/html`);throw document.documentElement.replaceChild(document.adoptNode(c.head),document.head),document.documentElement.replaceChild(document.adoptNode(c.body),document.body),t}}async function Ct(e){let t=e.href;if(Ke.has(t))return Ke.get(t);let n;try{let r=(async()=>{let t=await B.hooks.reroute({url:new URL(e),fetch:async(t,n)=>ht(t,n,e).promise})??e;if(typeof t==`string`){let n=new URL(e);B.hash?n.hash=t:n.pathname=t,t=n}return t})();Ke.set(t,r),n=await r}catch{Ke.delete(t);return}return n}async function wt(e,t){if(e&&!k(e,S,B.hash)){let n=await Ct(e);if(!n)return;let r=Tt(n);for(let n of Be){let i=n.exec(r);if(i)return{id:Et(e),invalidating:t,route:n,params:p(i),url:e}}}}function Tt(e){return f(B.hash?e.hash.replace(/^#/,``).replace(/[?#].+/,``):e.pathname.slice(S.length))||`/`}function Et(e){return(B.hash?e.hash.replace(/^#/,``):e.pathname)+e.search}function Dt({url:e,type:t,intent:n,delta:r,event:i,scroll:a}){let o=!1,s=It(G,n,e,t,a??null);r!==void 0&&(s.navigation.delta=r),i!==void 0&&(s.navigation.event=i);let c={...s.navigation,cancel:()=>{o=!0,s.reject(Error(`navigation cancelled`))}};return K||qe.forEach(e=>e(c)),o?null:s}async function Z({type:e,url:r,popped:i,keepfocus:a,noscroll:o,replace_state:s,state:c={},redirect_count:l=0,nav_token:d={},accept:f=h,block:p=h,event:m}){let g=X;X=d;let _=await wt(r,!1),v=e===`enter`?It(G,_,r,e):Dt({url:r,type:e,delta:i?.delta,intent:_,scroll:i?.scroll,event:m});if(!v){p(),X===d&&(X=g);return}let y=J,ee=Y;f(),K=!0,Xe&&v.navigation.type!==`enter`&&I.navigating.set(M.current=v.navigation);let b=_&&await bt(_);if(!b){if(k(r,S,B.hash))return await L(r,s);b=await Ot(r,{id:null},await $(new u(404,`Not Found`,`Not found: ${r.pathname}`),{url:r,params:{},route:{id:null}}),404,s)}if(r=_?.url||r,X!==d){v.reject(Error(`navigation aborted`));return}if(!b)return;if(b.type===`redirect`){if(l<20){await Z({type:e,url:new URL(b.location,r),popped:i,keepfocus:a,noscroll:o,replace_state:s,state:c,redirect_count:l+1,nav_token:d}),v.fulfil(void 0);return}if(b=await St({status:500,error:await $(Error(`Redirect loop`),{url:r,params:{},route:{id:null}}),url:r,route:{id:null}}),!b)return}else if(b.props.page.status>=400&&await I.updated.check())return await ze(),await L(r,s);if(at(),Le(y),ot(ee),b.props.page.url.pathname!==r.pathname&&(r.pathname=b.props.page.url.pathname),c=i?i.state:c,!i){let e=+!s,t={[C]:J+=e,[w]:Y+=e,[he]:c};(s?history.replaceState:history.pushState).call(history,t,``,r),s||Re(J,Y)}let x=_&&U?.id===_.id?U.fork:null;U?.fork&&!x?Ge():(U=null,Q={element:void 0,href:void 0}),b.props.page.state=c;let te;if(Xe){let e=(await Promise.all(Array.from(Je,e=>e(v.navigation)))).filter(e=>typeof e==`function`);if(e.length>0){function t(){e.forEach(e=>{W.delete(e)})}e.push(t),e.forEach(e=>{W.add(e)})}let t=v.navigation.to;G={...b.state,nav:{params:t.params,route:t.route,url:t.url}},b.props.page&&(b.props.page.url=r),!a&&document.activeElement instanceof HTMLElement&&document.activeElement!==document.body&&document.activeElement.blur();let i=x&&await x;i?te=i.commit():(N=null,et.$set(b.props),N&&Object.assign(b.props.page,N),Ne(b.props.page),te=n?.()),Qe=!0}else await ft(b,He,!1);let{activeElement:ne}=document;if(await te,await t(),await t(),X!==d){v.reject(Error(`navigation aborted`));return}b.props.page&&N&&Object.assign(b.props.page,N);let re=null;if(Ze){let e=i?i.scroll:o?E():null;e?scrollTo(e.x,e.y):(re=r.hash&&document.getElementById(zt(r)))?re.scrollIntoView():scrollTo(0,0)}let ie=document.activeElement!==ne&&document.activeElement!==document.body;!a&&!ie&&Ft(r,!re),Ze=!0,K=!1,v.fulfil(void 0),v.navigation.to&&(v.navigation.to.scroll=E()),W.forEach(e=>e(v.navigation)),e===`popstate`&&st(Y),I.navigating.set(M.current=null)}async function Ot(e,t,n,r,i){return e.origin===ge&&e.pathname===location.pathname&&!Ye?await St({status:r,error:n,url:e,route:t}):await L(e,i)}var Q={element:void 0,href:void 0};function kt(){let e,t;z.addEventListener(`mousemove`,t=>{let n=t.target;clearTimeout(e),e=setTimeout(()=>{i(n,T.hover)},20)});function n(e){e.defaultPrevented||i(e.composedPath()[0],T.tap)}z.addEventListener(`mousedown`,n),z.addEventListener(`touchstart`,n,{passive:!0});let r=new IntersectionObserver(e=>{for(let t of e)t.isIntersecting&&(dt(new URL(t.target.href)),r.unobserve(t.target))},{threshold:0});async function i(e,n){let r=be(e,z),i=r===Q.element&&r?.href===Q.href&&n>=t;if(!r||i)return;let{url:a,external:o,download:s}=xe(r,S,B.hash);if(o||s)return;let c=O(r),l=a&&Et(G.url)===Et(a);if(!(c.reload||l)){if(n<=c.preload_data){Q={element:r,href:r.href},t=T.tap;let e=await wt(a,!1);if(!e)return;ut(e)}else n<=c.preload_code&&(Q={element:r,href:r.href},t=n,dt(a))}}function a(){r.disconnect();for(let e of z.querySelectorAll(`a`)){let{url:t,external:n,download:i}=xe(e,S,B.hash);if(n||i)continue;let a=O(e);a.reload||(a.preload_code===T.viewport&&r.observe(e),a.preload_code===T.eager&&dt(t))}}W.add(a),a()}function $(e,t){if(e instanceof c)return e.body;let n=Oe(e),r=ke(e);return B.hooks.handleError({error:e,event:t,status:n,message:r})??{message:r}}function At(e){if(typeof e==`function`)V.push(e);else{let{href:t}=new URL(e,location.href);V.push(e=>e.href===t)}}function jt(){history.scrollRestoration=`manual`,addEventListener(`beforeunload`,e=>{let t=!1;if(ct(),!K){let e=It(G,void 0,null,`leave`),n={...e.navigation,cancel:()=>{t=!0,e.reject(Error(`navigation cancelled`))}};qe.forEach(e=>e(n))}t?(e.preventDefault(),e.returnValue=``):history.scrollRestoration=`auto`}),addEventListener(`visibilitychange`,()=>{document.visibilityState===`hidden`&&ct()}),navigator.connection?.saveData||kt(),z.addEventListener(`click`,async t=>{if(t.button||t.which!==1||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.defaultPrevented)return;let n=be(t.composedPath()[0],z);if(!n)return;let{url:r,external:i,target:a,download:o}=xe(n,S,B.hash);if(!r)return;if(a===`_parent`||a===`_top`){if(window.parent!==window)return}else if(a&&a!==`_self`)return;let s=O(n);if(!(n instanceof SVGAElement)&&r.protocol!==location.protocol&&r.protocol!==`https:`&&r.protocol!==`http:`||o)return;let[c,l]=(B.hash?r.hash.replace(/^#/,``):r.href).split(`#`),u=c===m(location);if(i||s.reload&&(!u||!l))Dt({url:r,type:`link`,event:t})?K=!0:t.preventDefault();else{if(l!==void 0&&u){let[,i]=G.url.href.split(`#`);if(i===l){if(t.preventDefault(),l===``||l===`top`&&n.ownerDocument.getElementById(`top`)===null)scrollTo({top:0});else{let e=n.ownerDocument.getElementById(decodeURIComponent(l));e&&(e.scrollIntoView(),e.focus())}return}if(q=!0,Le(J),e(r),!s.replace_state)return;q=!1}t.preventDefault(),await new Promise(e=>{requestAnimationFrame(()=>{setTimeout(e,0)}),setTimeout(e,100)}),await Z({type:`link`,url:r,keepfocus:s.keepfocus,noscroll:s.noscroll,replace_state:s.replace_state??r.href===location.href,event:t})}}),z.addEventListener(`submit`,e=>{if(e.defaultPrevented)return;let t=HTMLFormElement.prototype.cloneNode.call(e.target),n=e.submitter;if((n?.formTarget||t.target)===`_blank`||(n?.formMethod||t.method)!==`get`)return;let r=new URL(n?.hasAttribute(`formaction`)&&n?.formAction||t.action);if(k(r,S,!1))return;let i=e.target,a=O(i);if(a.reload)return;e.preventDefault(),e.stopPropagation();let o=new FormData(i,n);r.search=new URLSearchParams(o).toString(),Z({type:`form`,url:r,keepfocus:a.keepfocus,noscroll:a.noscroll,replace_state:a.replace_state??r.href===location.href,event:e})}),addEventListener(`popstate`,async t=>{if(!Pt){if(t.state?.[`sveltekit:history`]){let n=t.state[C];if(X={},n===J)return;let r=P[n],i=t.state[`sveltekit:states`]??{},a=new URL(t.state[`sveltekit:pageurl`]??location.href),o=t.state[w],s=G.url?m(location)===m(G.url):!1;if(o===Y&&(Qe||s)){i!==j.state&&(j.state=i),e(a),P[J]=E(),r&&scrollTo(r.x,r.y),J=n;return}let c=n-J;await Z({type:`popstate`,url:a,popped:{state:i,scroll:r,delta:c},accept:()=>{J=n,Y=o},block:()=>{history.go(-c)},nav_token:X,event:t})}else q||(e(new URL(location.href)),B.hash&&location.reload())}}),addEventListener(`hashchange`,()=>{q&&(q=!1,history.replaceState({...history.state,[C]:++J,[w]:Y},``,location.href))});for(let e of document.querySelectorAll(`link`))Ie.has(e.rel)&&(e.href=e.href);addEventListener(`pageshow`,e=>{e.persisted&&I.navigating.set(M.current=null)});function e(e){G.url=j.url=e,I.page.set(Lt(j)),I.page.notify()}}async function Mt(e,{status:t=200,error:n,node_ids:r,params:i,route:a,server_route:o,data:s,form:c}){Ye=!0;let u=new URL(location.href),d;({params:i={},route:a={id:null}}=await wt(u,!1)||{}),d=Be.find(({id:e})=>e===a.id);let f,p=!0;try{let e=r.map(async(t,n)=>{let r=s[n];return r?.uses&&(r.uses=Nt(r.uses)),mt({loader:B.nodes[t],url:u,params:i,route:a,parent:async()=>{let t={};for(let r=0;r{let a=history.state;Pt=!0,location.replace(new URL(`#${n}`,location.href)),history.replaceState(a,``,e),t&&scrollTo(r,i),Pt=!1})}else{let e=document.body,t=e.getAttribute(`tabindex`);e.tabIndex=-1,e.focus({preventScroll:!0,focusVisible:!1}),t===null?e.removeAttribute(`tabindex`):e.setAttribute(`tabindex`,t)}let r=getSelection();if(r&&r.type!==`None`){let e=[];for(let t=0;t{if(r.rangeCount===e.length){for(let t=0;t{a=e,o=t});return s.catch(h),{navigation:{from:{params:e.params,route:{id:e.route?.id??null},url:e.url,scroll:E()},to:n&&{params:t?.params??null,route:{id:t?.route?.id??null},url:n,scroll:i},willUnload:!t,type:r,complete:s},fulfil:a,reject:o}}function Lt(e){return{data:e.data,error:e.error,form:e.form,params:e.params,route:e.route,state:e.state,status:e.status,url:e.url}}function Rt(e){let t=new URL(e);return t.hash=decodeURIComponent(e.hash),t}function zt(e){let t;if(B.hash){let[,,n]=e.hash.split(`#`,3);t=n??``}else t=e.hash.slice(1);return decodeURIComponent(t)}export{Te as i,M as n,j as r,it as t}; \ No newline at end of file diff --git a/dash/build/_app/immutable/entry/app.nmjXja71.js b/dash/build/_app/immutable/entry/app.2nDg8N4l.js similarity index 57% rename from dash/build/_app/immutable/entry/app.nmjXja71.js rename to dash/build/_app/immutable/entry/app.2nDg8N4l.js index 86a55e1..fe9832a 100644 --- a/dash/build/_app/immutable/entry/app.nmjXja71.js +++ b/dash/build/_app/immutable/entry/app.2nDg8N4l.js @@ -1,2 +1,2 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.C_KEKqZM.js","../chunks/CdZTpPUs.js","../chunks/xihTtKlq.js","../assets/0.Bt_6ISeQ.css","../nodes/1.B61j0f2j.js","../chunks/BhDPUJdG.js","../nodes/2.ChvhtAH0.js","../assets/2.ITQ6xvQN.css"])))=>i.map(i=>d[i]); -import{A as e,F as t,G as n,K as r,M as i,N as a,Q as o,V as s,W as c,X as l,Y as u,at as d,c as f,et as p,i as m,it as h,j as g,k as _,lt as v,n as y,nt as b,r as x,tt as S,w as C,z as w}from"../chunks/CdZTpPUs.js";import"../chunks/xihTtKlq.js";var T=`modulepreload`,E=function(e,t){return new URL(e,t).href},D={},O=function(e){return e.pathname.endsWith(`.css`)},k=function(e,t,n){if(t in e)return e[t];let r=n();if(!r){e[t]=void 0;return}let i=r.then(()=>{e[t]=void 0},n=>{throw e[t]=void 0,n});return e[t]=i,i},A=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e,i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?new URL(import.meta.resolve(e)):new URL(e,import.meta.url)}r=o(t.map(t=>{t=E(t,n);let r=s(t),i=O(r);return k(D,r.href,()=>{if(e===void 0){e={all:new Set,styles:new Set};let t=document.getElementsByTagName(`link`);for(let n=t.length-1;n>=0;n--){let r=t[n];e.all.add(r.href),r.rel===`stylesheet`&&e.styles.add(r.href)}}if((i?e.styles:e.all).has(r.href))return;let t=document.createElement(`link`);if(t.rel=i?`stylesheet`:T,i||(t.as=`script`),t.crossOrigin=``,t.href=r.href,a&&t.setAttribute(`nonce`,a),document.head.appendChild(t),i)return new Promise((e,n)=>{t.addEventListener(`load`,e),t.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${r}`)))})})}).filter(e=>e!==void 0))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},j={},M=a(`
`),N=a(` `,1);function P(a,x){d(x,!0);let T=m(x,`components`,23,()=>[]),E=m(x,`data_0`,3,null),D=m(x,`data_1`,3,null);r(()=>x.stores.page.set(x.page)),n(()=>{x.stores,x.page,x.constructors,T(),x.form,E(),D(),x.stores.page.notify()});let O=S(!1),k=S(!1),A=S(null);y(()=>{let e=x.stores.page.subscribe(()=>{w(O)&&(p(k,!0),s().then(()=>{p(A,document.title||`untitled page`,!0)}))});return p(O,!0),e});let j=b(()=>x.constructors[1]);var P=N(),F=l(P),I=e=>{let t=b(()=>x.constructors[0]);var n=i(),r=l(n);C(r,()=>w(t),(e,t)=>{f(t(e,{get data(){return E()},get form(){return x.form},get params(){return x.page.params},children:(e,t)=>{var n=i(),r=l(n);C(r,()=>w(j),(e,t)=>{f(t(e,{get data(){return D()},get form(){return x.form},get params(){return x.page.params}}),e=>T()[1]=e,()=>T()?.[1])}),g(e,n)},$$slots:{default:!0}}),e=>T()[0]=e,()=>T()?.[0])}),g(e,n)},L=e=>{let t=b(()=>x.constructors[0]);var n=i(),r=l(n);C(r,()=>w(t),(e,t)=>{f(t(e,{get data(){return E()},get form(){return x.form},get params(){return x.page.params}}),e=>T()[0]=e,()=>T()?.[0])}),g(e,n)};_(F,e=>{x.constructors[1]?e(I):e(L,-1)});var R=o(F,2),z=n=>{var r=M(),i=u(r),a=n=>{var r=t();c(()=>e(r,w(A))),g(n,r)};_(i,e=>{w(k)&&e(a)}),v(r),g(n,r)};_(R,e=>{w(O)&&e(z)}),g(a,P),h()}var F=x(P),I=[()=>A(()=>import(`../nodes/0.C_KEKqZM.js`),__vite__mapDeps([0,1,2,3]),import.meta.url),()=>A(()=>import(`../nodes/1.B61j0f2j.js`),__vite__mapDeps([4,1,5,2]),import.meta.url),()=>A(()=>import(`../nodes/2.ChvhtAH0.js`),__vite__mapDeps([6,1,2,7]),import.meta.url)],L=[],R={"/":[2]},z={handleError:(({error:e})=>{console.error(e)}),reroute:(()=>{}),transport:{}},B=Object.fromEntries(Object.entries(z.transport).map(([e,t])=>[e,t.decode])),V=Object.fromEntries(Object.entries(z.transport).map(([e,t])=>[e,t.encode])),H=!1,U=(e,t)=>B[e](t),W=()=>A(()=>import(`../chunks/Bjy-W4x2.js`).then(e=>e.default),[],import.meta.url);export{U as decode,B as decoders,R as dictionary,V as encoders,W as get_error_template,H as hash,z as hooks,j as matchers,I as nodes,F as root,L as server_loads}; \ No newline at end of file +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.BhzPkDfq.js","../chunks/C2MtwMCw.js","../chunks/xihTtKlq.js","../assets/0.Bt_6ISeQ.css","../nodes/1.gSzZPKYH.js","../chunks/DwX-c_Q9.js","../nodes/2._6n1M84D.js","../assets/2.DlpWRXhA.css"])))=>i.map(i=>d[i]); +import{$ as e,A as t,B as n,G as r,H as i,I as a,K as o,M as s,N as c,P as l,T as u,X as d,Z as f,at as p,c as m,i as h,j as g,n as _,nt as v,ot as y,q as b,r as x,rt as S,tt as C,ut as w}from"../chunks/C2MtwMCw.js";import"../chunks/xihTtKlq.js";var T=`modulepreload`,E=function(e,t){return new URL(e,t).href},D={},O=function(e){return e.pathname.endsWith(`.css`)},k=function(e,t,n){if(t in e)return e[t];let r=n();if(!r){e[t]=void 0;return}let i=r.then(()=>{e[t]=void 0},n=>{throw e[t]=void 0,n});return e[t]=i,i},A=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e,i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?new URL(import.meta.resolve(e)):new URL(e,import.meta.url)}r=o(t.map(t=>{t=E(t,n);let r=s(t),i=O(r);return k(D,r.href,()=>{if(e===void 0){e={all:new Set,styles:new Set};let t=document.getElementsByTagName(`link`);for(let n=t.length-1;n>=0;n--){let r=t[n];e.all.add(r.href),r.rel===`stylesheet`&&e.styles.add(r.href)}}if((i?e.styles:e.all).has(r.href))return;let t=document.createElement(`link`);if(t.rel=i?`stylesheet`:T,i||(t.as=`script`),t.crossOrigin=``,t.href=r.href,a&&t.setAttribute(`nonce`,a),document.head.appendChild(t),i)return new Promise((e,n)=>{t.addEventListener(`load`,e),t.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${r}`)))})})}).filter(e=>e!==void 0))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},j={},M=l(`
`),N=l(` `,1);function P(l,x){y(x,!0);let T=h(x,`components`,23,()=>[]),E=h(x,`data_0`,3,null),D=h(x,`data_1`,3,null);b(()=>x.stores.page.set(x.page)),o(()=>{x.stores,x.page,x.constructors,T(),x.form,E(),D(),x.stores.page.notify()});let O=v(!1),k=v(!1),A=v(null);_(()=>{let e=x.stores.page.subscribe(()=>{n(O)&&(C(k,!0),i().then(()=>{C(A,document.title||`untitled page`,!0)}))});return C(O,!0),e});let j=S(()=>x.constructors[1]);var P=N(),F=f(P),I=e=>{let t=S(()=>x.constructors[0]);var r=c(),i=f(r);u(i,()=>n(t),(e,t)=>{m(t(e,{get data(){return E()},get form(){return x.form},get params(){return x.page.params},children:(e,t)=>{var r=c(),i=f(r);u(i,()=>n(j),(e,t)=>{m(t(e,{get data(){return D()},get form(){return x.form},get params(){return x.page.params}}),e=>T()[1]=e,()=>T()?.[1])}),s(e,r)},$$slots:{default:!0}}),e=>T()[0]=e,()=>T()?.[0])}),s(e,r)},L=e=>{let t=S(()=>x.constructors[0]);var r=c(),i=f(r);u(i,()=>n(t),(e,t)=>{m(t(e,{get data(){return E()},get form(){return x.form},get params(){return x.page.params}}),e=>T()[0]=e,()=>T()?.[0])}),s(e,r)};t(F,e=>{x.constructors[1]?e(I):e(L,-1)});var R=e(F,2),z=e=>{var i=M(),o=d(i),c=e=>{var t=a();r(()=>g(t,n(A))),s(e,t)};t(o,e=>{n(k)&&e(c)}),w(i),s(e,i)};t(R,e=>{n(O)&&e(z)}),s(l,P),p()}var F=x(P),I=[()=>A(()=>import(`../nodes/0.BhzPkDfq.js`),__vite__mapDeps([0,1,2,3]),import.meta.url),()=>A(()=>import(`../nodes/1.gSzZPKYH.js`),__vite__mapDeps([4,1,5,2]),import.meta.url),()=>A(()=>import(`../nodes/2._6n1M84D.js`),__vite__mapDeps([6,1,2,7]),import.meta.url)],L=[],R={"/":[2]},z={handleError:(({error:e})=>{console.error(e)}),reroute:(()=>{}),transport:{}},B=Object.fromEntries(Object.entries(z.transport).map(([e,t])=>[e,t.decode])),V=Object.fromEntries(Object.entries(z.transport).map(([e,t])=>[e,t.encode])),H=!1,U=(e,t)=>B[e](t),W=()=>A(()=>import(`../chunks/Bjy-W4x2.js`).then(e=>e.default),[],import.meta.url);export{U as decode,B as decoders,R as dictionary,V as encoders,W as get_error_template,H as hash,z as hooks,j as matchers,I as nodes,F as root,L as server_loads}; \ No newline at end of file diff --git a/dash/build/_app/immutable/entry/start.AtR5ahqN.js b/dash/build/_app/immutable/entry/start.AtR5ahqN.js new file mode 100644 index 0000000..4c8c1a4 --- /dev/null +++ b/dash/build/_app/immutable/entry/start.AtR5ahqN.js @@ -0,0 +1 @@ +export{i as load_css,t as start}from"../chunks/DwX-c_Q9.js"; \ No newline at end of file diff --git a/dash/build/_app/immutable/entry/start.gGCrc-P1.js b/dash/build/_app/immutable/entry/start.gGCrc-P1.js deleted file mode 100644 index 29d14bf..0000000 --- a/dash/build/_app/immutable/entry/start.gGCrc-P1.js +++ /dev/null @@ -1 +0,0 @@ -export{i as load_css,t as start}from"../chunks/BhDPUJdG.js"; \ No newline at end of file diff --git a/dash/build/_app/immutable/nodes/0.C_KEKqZM.js b/dash/build/_app/immutable/nodes/0.BhzPkDfq.js similarity index 60% rename from dash/build/_app/immutable/nodes/0.C_KEKqZM.js rename to dash/build/_app/immutable/nodes/0.BhzPkDfq.js index ed4b42e..b3d2855 100644 --- a/dash/build/_app/immutable/nodes/0.C_KEKqZM.js +++ b/dash/build/_app/immutable/nodes/0.BhzPkDfq.js @@ -1 +1 @@ -import{M as e,N as t,S as n,T as r,W as i,X as a,ft as o,j as s,p as c}from"../chunks/CdZTpPUs.js";import"../chunks/xihTtKlq.js";var l=o({prerender:()=>!1,ssr:()=>!1}),u=`data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2048%2048'%3e%3ctitle%3edouane%3c/title%3e%3crect%20width='48'%20height='48'%20rx='12'%20fill='%23111b2e'/%3e%3cg%20stroke='%237899ff'%20fill='none'%3e%3cpath%20d='M6%2041h36'%20stroke-width='2'%20opacity='.25'/%3e%3cpath%20d='M13%2024v15'%20stroke-width='5'%20stroke-linecap='round'/%3e%3cpath%20d='m13%2024%2024-14'%20stroke-width='7'%20stroke-linecap='round'%20opacity='.24'/%3e%3cpath%20d='m14%2023%203-2m6-3%203-2m6-3%203-2'%20stroke-width='7'/%3e%3c/g%3e%3ccircle%20cx='13'%20cy='24'%20r='4'%20fill='%237899ff'/%3e%3c/svg%3e`,d=t(``);function f(t,o){var l=e();n(`12qhfyh`,e=>{var t=d();i(()=>c(t,`href`,u)),s(e,t)});var f=a(l);r(f,()=>o.children),s(t,l)}export{f as component,l as universal}; \ No newline at end of file +import{E as e,G as t,M as n,N as r,P as i,S as a,Z as o,mt as s,p as c}from"../chunks/C2MtwMCw.js";import"../chunks/xihTtKlq.js";var l=s({prerender:()=>!1,ssr:()=>!1}),u=`data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2048%2048'%3e%3ctitle%3edouane%3c/title%3e%3crect%20width='48'%20height='48'%20rx='12'%20fill='%23111b2e'/%3e%3cg%20stroke='%237899ff'%20fill='none'%3e%3cpath%20d='M6%2041h36'%20stroke-width='2'%20opacity='.25'/%3e%3cpath%20d='M13%2024v15'%20stroke-width='5'%20stroke-linecap='round'/%3e%3cpath%20d='m13%2024%2024-14'%20stroke-width='7'%20stroke-linecap='round'%20opacity='.24'/%3e%3cpath%20d='m14%2023%203-2m6-3%203-2m6-3%203-2'%20stroke-width='7'/%3e%3c/g%3e%3ccircle%20cx='13'%20cy='24'%20r='4'%20fill='%237899ff'/%3e%3c/svg%3e`,d=i(``);function f(i,s){var l=r();a(`12qhfyh`,e=>{var r=d();t(()=>c(r,`href`,u)),n(e,r)});var f=o(l);e(f,()=>s.children),n(i,l)}export{f as component,l as universal}; \ No newline at end of file diff --git a/dash/build/_app/immutable/nodes/1.B61j0f2j.js b/dash/build/_app/immutable/nodes/1.B61j0f2j.js deleted file mode 100644 index 6ba1597..0000000 --- a/dash/build/_app/immutable/nodes/1.B61j0f2j.js +++ /dev/null @@ -1 +0,0 @@ -import{A as e,N as t,Q as n,W as r,X as i,Z as a,at as o,it as s,j as c}from"../chunks/CdZTpPUs.js";import{r as l}from"../chunks/BhDPUJdG.js";import"../chunks/xihTtKlq.js";var u={get data(){return l.data},get error(){return l.error},get form(){return l.form},get params(){return l.params},get route(){return l.route},get state(){return l.state},get status(){return l.status},get url(){return l.url}},d=t(`

`,1);function f(t,l){o(l,!0);var f=d(),p=i(f),m=a(p,!0),h=n(p,2),g=a(h,!0);r(()=>{e(m,u.status),e(g,u.error?.message)}),c(t,f),s()}export{f as component}; \ No newline at end of file diff --git a/dash/build/_app/immutable/nodes/1.gSzZPKYH.js b/dash/build/_app/immutable/nodes/1.gSzZPKYH.js new file mode 100644 index 0000000..e6d9cb4 --- /dev/null +++ b/dash/build/_app/immutable/nodes/1.gSzZPKYH.js @@ -0,0 +1 @@ +import{$ as e,G as t,M as n,P as r,Q as i,Z as a,at as o,j as s,ot as c}from"../chunks/C2MtwMCw.js";import{r as l}from"../chunks/DwX-c_Q9.js";import"../chunks/xihTtKlq.js";var u={get data(){return l.data},get error(){return l.error},get form(){return l.form},get params(){return l.params},get route(){return l.route},get state(){return l.state},get status(){return l.status},get url(){return l.url}},d=r(`

`,1);function f(r,l){c(l,!0);var f=d(),p=a(f),m=i(p,!0),h=e(p,2),g=i(h,!0);t(()=>{s(m,u.status),s(g,u.error?.message)}),n(r,f),o()}export{f as component}; \ No newline at end of file diff --git a/dash/build/_app/immutable/nodes/2.ChvhtAH0.js b/dash/build/_app/immutable/nodes/2.ChvhtAH0.js deleted file mode 100644 index c2e2e95..0000000 --- a/dash/build/_app/immutable/nodes/2.ChvhtAH0.js +++ /dev/null @@ -1 +0,0 @@ -import{$ as e,A as t,C as n,D as r,E as i,G as a,H as o,I as s,J as c,L as l,M as u,N as d,O as f,P as p,Q as m,R as h,S as g,T as _,U as v,V as y,W as b,X as x,Y as S,Z as C,_ as w,a as T,at as E,b as D,c as O,ct as k,d as A,dt as j,et as M,f as N,g as P,h as F,i as I,it as L,j as R,k as z,l as B,lt as V,m as H,n as U,nt as W,o as G,p as K,q as ee,rt as te,st as q,tt as J,u as Y,ut as ne,v as re,w as ie,x as ae,y as oe,z as X}from"../chunks/CdZTpPUs.js";import"../chunks/xihTtKlq.js";var se={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":2,"stroke-linecap":`round`,"stroke-linejoin":`round`},ce=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0;return!1},le=Symbol(`lucide-context`),ue=()=>te(le),de=new Set([`$$slots`,`$$events`,`$$legacy`,`name`,`color`,`size`,`strokeWidth`,`absoluteStrokeWidth`,`iconNode`,`children`]),fe=p(``);function Z(e,t){E(t,!0);let a=ue()??{},o=I(t,`color`,19,()=>a.color??`currentColor`),s=I(t,`size`,19,()=>a.size??24),c=I(t,`strokeWidth`,19,()=>a.strokeWidth??2),l=I(t,`absoluteStrokeWidth`,19,()=>a.absoluteStrokeWidth??!1),d=I(t,`iconNode`,19,()=>[]),f=T(t,de),p=W(()=>l()?Number(c())*24/Number(s()):c());var h=fe();A(h,e=>({...se,...e,...f,width:s(),height:s(),stroke:o(),"stroke-width":X(p),class:[`lucide-icon lucide`,a.class,t.name&&`lucide-${t.name}`,t.class]}),[()=>!t.children&&!ce(f)&&{"aria-hidden":`true`}]);var g=S(h);i(g,17,d,r,(e,t)=>{var r=W(()=>j(X(t),2));let i=()=>X(r)[0],a=()=>X(r)[1];var o=u(),s=x(o);n(s,i,!0,(e,t)=>{A(e,()=>({...a()}))}),R(e,o)});var v=m(g);_(v,()=>t.children??ne),V(h),R(e,h),L()}var pe=new Set([`$$slots`,`$$events`,`$$legacy`]);function me(e,t){let n=T(t,pe),r=[[`path`,{d:`m12 14 4-4`}],[`path`,{d:`M3.34 19a10 10 0 1 1 17.32 0`}]];Z(e,G({name:`gauge`},()=>n,{get iconNode(){return r}}))}var he=new Set([`$$slots`,`$$events`,`$$legacy`]);function ge(e,t){let n=T(t,he),r=[[`rect`,{width:`7`,height:`9`,x:`3`,y:`3`,rx:`1`}],[`rect`,{width:`7`,height:`5`,x:`14`,y:`3`,rx:`1`}],[`rect`,{width:`7`,height:`9`,x:`14`,y:`12`,rx:`1`}],[`rect`,{width:`7`,height:`5`,x:`3`,y:`16`,rx:`1`}]];Z(e,G({name:`layout-dashboard`},()=>n,{get iconNode(){return r}}))}var _e=new Set([`$$slots`,`$$events`,`$$legacy`]);function ve(e,t){let n=T(t,_e),r=[[`path`,{d:`M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2`}],[`path`,{d:`M16 3.128a4 4 0 0 1 0 7.744`}],[`path`,{d:`M22 21v-2a4 4 0 0 0-3-3.87`}],[`circle`,{cx:`9`,cy:`7`,r:`4`}]];Z(e,G({name:`users`},()=>n,{get iconNode(){return r}}))}var ye=new Set([`$$slots`,`$$events`,`$$legacy`]);function be(e,t){let n=T(t,ye),r=[[`path`,{d:`M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z`}],[`circle`,{cx:`16.5`,cy:`7.5`,r:`.5`,fill:`currentColor`}]];Z(e,G({name:`key-round`},()=>n,{get iconNode(){return r}}))}var xe=new Set([`$$slots`,`$$events`,`$$legacy`]);function Se(e,t){let n=T(t,xe),r=[[`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`}],[`path`,{d:`m7 16.5-4.74-2.85`}],[`path`,{d:`m7 16.5 5-3`}],[`path`,{d:`M7 16.5v5.17`}],[`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`}],[`path`,{d:`m17 16.5-5-3`}],[`path`,{d:`m17 16.5 4.74-2.85`}],[`path`,{d:`M17 16.5v5.17`}],[`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`}],[`path`,{d:`M12 8 7.26 5.15`}],[`path`,{d:`m12 8 4.74-2.85`}],[`path`,{d:`M12 13.5V8`}]];Z(e,G({name:`boxes`},()=>n,{get iconNode(){return r}}))}var Ce=new Set([`$$slots`,`$$events`,`$$legacy`]);function we(e,t){let n=T(t,Ce),r=[[`path`,{d:`M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2`}]];Z(e,G({name:`activity`},()=>n,{get iconNode(){return r}}))}var Te=new Set([`$$slots`,`$$events`,`$$legacy`]);function Ee(e,t){let n=T(t,Te),r=[[`path`,{d:`M14 17H5`}],[`path`,{d:`M19 7h-9`}],[`circle`,{cx:`17`,cy:`17`,r:`3`}],[`circle`,{cx:`7`,cy:`7`,r:`3`}]];Z(e,G({name:`settings-2`},()=>n,{get iconNode(){return r}}))}var De=new Set([`$$slots`,`$$events`,`$$legacy`]);function Oe(e,t){let n=T(t,De),r=[[`path`,{d:`M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5`}],[`path`,{d:`M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09`}],[`path`,{d:`M9 12a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.4 22.4 0 0 1-4 2z`}],[`path`,{d:`M9 12H4s.55-3.03 2-4c1.62-1.08 5 .05 5 .05`}]];Z(e,G({name:`rocket`},()=>n,{get iconNode(){return r}}))}var ke=new Set([`$$slots`,`$$events`,`$$legacy`]);function Ae(e,t){let n=T(t,ke),r=[[`path`,{d:`M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8`}],[`path`,{d:`M21 3v5h-5`}],[`path`,{d:`M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16`}],[`path`,{d:`M8 16H3v5`}]];Z(e,G({name:`refresh-cw`},()=>n,{get iconNode(){return r}}))}var je=new Set([`$$slots`,`$$events`,`$$legacy`]);function Me(e,t){let n=T(t,je),r=[[`path`,{d:`M4 5h16`}],[`path`,{d:`M4 12h16`}],[`path`,{d:`M4 19h16`}]];Z(e,G({name:`menu`},()=>n,{get iconNode(){return r}}))}var Ne=new Set([`$$slots`,`$$events`,`$$legacy`]);function Pe(e,t){let n=T(t,Ne),r=[[`path`,{d:`M18 6 6 18`}],[`path`,{d:`m6 6 12 12`}]];Z(e,G({name:`x`},()=>n,{get iconNode(){return r}}))}var Fe=new Set([`$$slots`,`$$events`,`$$legacy`]);function Ie(e,t){let n=T(t,Fe),r=[[`path`,{d:`m9 18 6-6-6-6`}]];Z(e,G({name:`chevron-right`},()=>n,{get iconNode(){return r}}))}var Le=new Set([`$$slots`,`$$events`,`$$legacy`]);function Re(e,t){let n=T(t,Le),r=[[`path`,{d:`m21 21-4.34-4.34`}],[`circle`,{cx:`11`,cy:`11`,r:`8`}]];Z(e,G({name:`search`},()=>n,{get iconNode(){return r}}))}var ze=new Set([`$$slots`,`$$events`,`$$legacy`]);function Be(e,t){let n=T(t,ze),r=[[`path`,{d:`M5 12h14`}],[`path`,{d:`M12 5v14`}]];Z(e,G({name:`plus`},()=>n,{get iconNode(){return r}}))}var Ve=new Set([`$$slots`,`$$events`,`$$legacy`]);function He(e,t){let n=T(t,Ve),r=[[`path`,{d:`M15 3h6v6`}],[`path`,{d:`M10 14 21 3`}],[`path`,{d:`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`}]];Z(e,G({name:`external-link`},()=>n,{get iconNode(){return r}}))}var Ue=new Set([`$$slots`,`$$events`,`$$legacy`]);function We(e,t){let n=T(t,Ue),r=[[`path`,{d:`M10 5H3`}],[`path`,{d:`M12 19H3`}],[`path`,{d:`M14 3v4`}],[`path`,{d:`M16 17v4`}],[`path`,{d:`M21 12h-9`}],[`path`,{d:`M21 19h-5`}],[`path`,{d:`M21 5h-7`}],[`path`,{d:`M8 10v4`}],[`path`,{d:`M8 12H3`}]];Z(e,G({name:`sliders-horizontal`},()=>n,{get iconNode(){return r}}))}var Ge=new Set([`$$slots`,`$$events`,`$$legacy`]);function Ke(e,t){let n=T(t,Ge),r=[[`path`,{d:`M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z`}]];Z(e,G({name:`star`},()=>n,{get iconNode(){return r}}))}var qe=new Set([`$$slots`,`$$events`,`$$legacy`]);function Je(e,t){let n=T(t,qe),r=[[`rect`,{x:`16`,y:`16`,width:`6`,height:`6`,rx:`1`}],[`rect`,{x:`2`,y:`16`,width:`6`,height:`6`,rx:`1`}],[`rect`,{x:`9`,y:`2`,width:`6`,height:`6`,rx:`1`}],[`path`,{d:`M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3`}],[`path`,{d:`M12 12V8`}]];Z(e,G({name:`network`},()=>n,{get iconNode(){return r}}))}var Ye=`data:image/svg+xml,%3csvg%20height='24'%20viewBox='0%200%2024%2024'%20width='24'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eClaude%3c/title%3e%3cpath%20d='M4.709%2015.955l4.72-2.647.08-.23-.08-.128H9.2l-.79-.048-2.698-.073-2.339-.097-2.266-.122-.571-.121L0%2011.784l.055-.352.48-.321.686.06%201.52.103%202.278.158%201.652.097%202.449.255h.389l.055-.157-.134-.098-.103-.097-2.358-1.596-2.552-1.688-1.336-.972-.724-.491-.364-.462-.158-1.008.656-.722.881.06.225.061.893.686%201.908%201.476%202.491%201.833.365.304.145-.103.019-.073-.164-.274-1.355-2.446-1.446-2.49-.644-1.032-.17-.619a2.97%202.97%200%2001-.104-.729L6.283.134%206.696%200l.996.134.42.364.62%201.414%201.002%202.229%201.555%203.03.456.898.243.832.091.255h.158V9.01l.128-1.706.237-2.095.23-2.695.08-.76.376-.91.747-.492.584.28.48.685-.067.444-.286%201.851-.559%202.903-.364%201.942h.212l.243-.242.985-1.306%201.652-2.064.73-.82.85-.904.547-.431h1.033l.76%201.129-.34%201.166-1.064%201.347-.881%201.142-1.264%201.7-.79%201.36.073.11.188-.02%202.856-.606%201.543-.28%201.841-.315.833.388.091.395-.328.807-1.969.486-2.309.462-3.439.813-.042.03.049.061%201.549.146.662.036h1.622l3.02.225.79.522.474.638-.079.485-1.215.62-1.64-.389-3.829-.91-1.312-.329h-.182v.11l1.093%201.068%202.006%201.81%202.509%202.33.127.578-.322.455-.34-.049-2.205-1.657-.851-.747-1.926-1.62h-.128v.17l.444.649%202.345%203.521.122%201.08-.17.353-.608.213-.668-.122-1.374-1.925-1.415-2.167-1.143-1.943-.14.08-.674%207.254-.316.37-.729.28-.607-.461-.322-.747.322-1.476.389-1.924.315-1.53.286-1.9.17-.632-.012-.042-.14.018-1.434%201.967-2.18%202.945-1.726%201.845-.414.164-.717-.37.067-.662.401-.589%202.388-3.036%201.44-1.882.93-1.086-.006-.158h-.055L4.132%2018.56l-1.13.146-.487-.456.061-.746.231-.243%201.908-1.312-.006.006z'%20fill='%23D97757'%20fill-rule='nonzero'%3e%3c/path%3e%3c/svg%3e`,Xe=`data:image/svg+xml,%3csvg%20fill='%23ffffff'%20fill-rule='evenodd'%20height='24'%20viewBox='0%200%2024%2024'%20width='24'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eOpenAI%3c/title%3e%3cpath%20d='M9.205%208.658v-2.26c0-.19.072-.333.238-.428l4.543-2.616c.619-.357%201.356-.523%202.117-.523%202.854%200%204.662%202.212%204.662%204.566%200%20.167%200%20.357-.024.547l-4.71-2.759a.797.797%200%2000-.856%200l-5.97%203.473zm10.609%208.8V12.06c0-.333-.143-.57-.429-.737l-5.97-3.473%201.95-1.118a.433.433%200%2001.476%200l4.543%202.617c1.309.76%202.189%202.378%202.189%203.948%200%201.808-1.07%203.473-2.76%204.163zM7.802%2012.703l-1.95-1.142c-.167-.095-.239-.238-.239-.428V5.899c0-2.545%201.95-4.472%204.591-4.472%201%200%201.927.333%202.712.928L8.23%205.067c-.285.166-.428.404-.428.737v6.898zM12%2015.128l-2.795-1.57v-3.33L12%208.658l2.795%201.57v3.33L12%2015.128zm1.796%207.23c-1%200-1.927-.332-2.712-.927l4.686-2.712c.285-.166.428-.404.428-.737v-6.898l1.974%201.142c.167.095.238.238.238.428v5.233c0%202.545-1.974%204.472-4.614%204.472zm-5.637-5.303l-4.544-2.617c-1.308-.761-2.188-2.378-2.188-3.948A4.482%204.482%200%20014.21%206.327v5.423c0%20.333.143.571.428.738l5.947%203.449-1.95%201.118a.432.432%200%2001-.476%200zm-.262%203.9c-2.688%200-4.662-2.021-4.662-4.519%200-.19.024-.38.047-.57l4.686%202.71c.286.167.571.167.856%200l5.97-3.448v2.26c0%20.19-.07.333-.237.428l-4.543%202.616c-.619.357-1.356.523-2.117.523zm5.899%202.83a5.947%205.947%200%20005.827-4.756C22.287%2018.339%2024%2015.84%2024%2013.296c0-1.665-.713-3.282-1.998-4.448.119-.5.19-.999.19-1.498%200-3.401-2.759-5.947-5.946-5.947-.642%200-1.26.095-1.88.31A5.962%205.962%200%200010.205%200a5.947%205.947%200%2000-5.827%204.757C1.713%205.447%200%207.945%200%2010.49c0%201.666.713%203.283%201.998%204.448-.119.5-.19%201-.19%201.499%200%203.401%202.759%205.946%205.946%205.946.642%200%201.26-.095%201.88-.309a5.96%205.96%200%20004.162%201.713z'%3e%3c/path%3e%3c/svg%3e`,Ze=`data:image/svg+xml,%3csvg%20fill='%23ffffff'%20fill-rule='evenodd'%20height='24'%20viewBox='0%200%2024%2024'%20width='24'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eOpenAI%3c/title%3e%3cpath%20d='M9.205%208.658v-2.26c0-.19.072-.333.238-.428l4.543-2.616c.619-.357%201.356-.523%202.117-.523%202.854%200%204.662%202.212%204.662%204.566%200%20.167%200%20.357-.024.547l-4.71-2.759a.797.797%200%2000-.856%200l-5.97%203.473zm10.609%208.8V12.06c0-.333-.143-.57-.429-.737l-5.97-3.473%201.95-1.118a.433.433%200%2001.476%200l4.543%202.617c1.309.76%202.189%202.378%202.189%203.948%200%201.808-1.07%203.473-2.76%204.163zM7.802%2012.703l-1.95-1.142c-.167-.095-.239-.238-.239-.428V5.899c0-2.545%201.95-4.472%204.591-4.472%201%200%201.927.333%202.712.928L8.23%205.067c-.285.166-.428.404-.428.737v6.898zM12%2015.128l-2.795-1.57v-3.33L12%208.658l2.795%201.57v3.33L12%2015.128zm1.796%207.23c-1%200-1.927-.332-2.712-.927l4.686-2.712c.285-.166.428-.404.428-.737v-6.898l1.974%201.142c.167.095.238.238.238.428v5.233c0%202.545-1.974%204.472-4.614%204.472zm-5.637-5.303l-4.544-2.617c-1.308-.761-2.188-2.378-2.188-3.948A4.482%204.482%200%20014.21%206.327v5.423c0%20.333.143.571.428.738l5.947%203.449-1.95%201.118a.432.432%200%2001-.476%200zm-.262%203.9c-2.688%200-4.662-2.021-4.662-4.519%200-.19.024-.38.047-.57l4.686%202.71c.286.167.571.167.856%200l5.97-3.448v2.26c0%20.19-.07.333-.237.428l-4.543%202.616c-.619.357-1.356.523-2.117.523zm5.899%202.83a5.947%205.947%200%20005.827-4.756C22.287%2018.339%2024%2015.84%2024%2013.296c0-1.665-.713-3.282-1.998-4.448.119-.5.19-.999.19-1.498%200-3.401-2.759-5.947-5.946-5.947-.642%200-1.26.095-1.88.31A5.962%205.962%200%200010.205%200a5.947%205.947%200%2000-5.827%204.757C1.713%205.447%200%207.945%200%2010.49c0%201.666.713%203.283%201.998%204.448-.119.5-.19%201-.19%201.499%200%203.401%202.759%205.946%205.946%205.946.642%200%201.26-.095%201.88-.309a5.96%205.96%200%20004.162%201.713z'%3e%3c/path%3e%3c/svg%3e`,Qe=`data:image/svg+xml,%3csvg%20width='240'%20height='300'%20viewBox='0%200%20240%20300'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20clip-path='url(%23clip0_1401_86283)'%3e%3cmask%20id='mask0_1401_86283'%20style='mask-type:luminance'%20maskUnits='userSpaceOnUse'%20x='0'%20y='0'%20width='240'%20height='300'%3e%3cpath%20d='M240%200H0V300H240V0Z'%20fill='white'/%3e%3c/mask%3e%3cg%20mask='url(%23mask0_1401_86283)'%3e%3cpath%20d='M180%20240H60V120H180V240Z'%20fill='%234B4646'/%3e%3cpath%20d='M180%2060H60V240H180V60ZM240%20300H0V0H240V300Z'%20fill='%23F1ECEC'/%3e%3c/g%3e%3c/g%3e%3cdefs%3e%3cclipPath%20id='clip0_1401_86283'%3e%3crect%20width='240'%20height='300'%20fill='white'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e`,$e=`data:image/svg+xml,%3csvg%20fill='%23ffffff'%20fill-rule='evenodd'%20height='24'%20viewBox='0%200%2024%2024'%20width='24'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eGrok%3c/title%3e%3cpath%20d='M9.27%2015.29l7.978-5.897c.391-.29.95-.177%201.137.272.98%202.369.542%205.215-1.41%207.169-1.951%201.954-4.667%202.382-7.149%201.406l-2.711%201.257c3.889%202.661%208.611%202.003%2011.562-.953%202.341-2.344%203.066-5.539%202.388-8.42l.006.007c-.983-4.232.242-5.924%202.75-9.383.06-.082.12-.164.179-.248l-3.301%203.305v-.01L9.267%2015.292M7.623%2016.723c-2.792-2.67-2.31-6.801.071-9.184%201.761-1.763%204.647-2.483%207.166-1.425l2.705-1.25a7.808%207.808%200%2000-1.829-1A8.975%208.975%200%20005.984%205.83c-2.533%202.536-3.33%206.436-1.962%209.764%201.022%202.487-.653%204.246-2.34%206.022-.599.63-1.199%201.259-1.682%201.925l7.62-6.815'%3e%3c/path%3e%3c/svg%3e`,et=`data:image/svg+xml,%3csvg%20width='180'%20height='180'%20viewBox='0%200%20180%20180'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M144.248%20149.062C151.748%20154.688%20162.998%20150.938%20152.685%20140.625C121.748%20110.625%20128.31%2028.125%2089.8727%2028.125C51.4352%2028.125%2057.9977%20110.625%2027.0602%20140.625C15.8102%20151.875%2027.9977%20154.688%2035.4977%20149.062C64.5602%20129.375%2062.6852%2094.6875%2089.8727%2094.6875C117.06%2094.6875%20115.185%20129.375%20144.248%20149.062Z'%20fill='white'/%3e%3c/svg%3e`,tt=`data:image/svg+xml,%3csvg%20height='24'%20viewBox='0%200%2024%2024'%20width='24'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eGemini%3c/title%3e%3cpath%20d='M20.616%2010.835a14.147%2014.147%200%2001-4.45-3.001%2014.111%2014.111%200%2001-3.678-6.452.503.503%200%2000-.975%200%2014.134%2014.134%200%2001-3.679%206.452%2014.155%2014.155%200%2001-4.45%203.001c-.65.28-1.318.505-2.002.678a.502.502%200%20000%20.975c.684.172%201.35.397%202.002.677a14.147%2014.147%200%20014.45%203.001%2014.112%2014.112%200%20013.679%206.453.502.502%200%2000.975%200c.172-.685.397-1.351.677-2.003a14.145%2014.145%200%20013.001-4.45%2014.113%2014.113%200%20016.453-3.678.503.503%200%20000-.975%2013.245%2013.245%200%2001-2.003-.678z'%20fill='%233186FF'%3e%3c/path%3e%3cpath%20d='M20.616%2010.835a14.147%2014.147%200%2001-4.45-3.001%2014.111%2014.111%200%2001-3.678-6.452.503.503%200%2000-.975%200%2014.134%2014.134%200%2001-3.679%206.452%2014.155%2014.155%200%2001-4.45%203.001c-.65.28-1.318.505-2.002.678a.502.502%200%20000%20.975c.684.172%201.35.397%202.002.677a14.147%2014.147%200%20014.45%203.001%2014.112%2014.112%200%20013.679%206.453.502.502%200%2000.975%200c.172-.685.397-1.351.677-2.003a14.145%2014.145%200%20013.001-4.45%2014.113%2014.113%200%20016.453-3.678.503.503%200%20000-.975%2013.245%2013.245%200%2001-2.003-.678z'%20fill='url(%23lobe-icons-gemini-0-_R_0_)'%3e%3c/path%3e%3cpath%20d='M20.616%2010.835a14.147%2014.147%200%2001-4.45-3.001%2014.111%2014.111%200%2001-3.678-6.452.503.503%200%2000-.975%200%2014.134%2014.134%200%2001-3.679%206.452%2014.155%2014.155%200%2001-4.45%203.001c-.65.28-1.318.505-2.002.678a.502.502%200%20000%20.975c.684.172%201.35.397%202.002.677a14.147%2014.147%200%20014.45%203.001%2014.112%2014.112%200%20013.679%206.453.502.502%200%2000.975%200c.172-.685.397-1.351.677-2.003a14.145%2014.145%200%20013.001-4.45%2014.113%2014.113%200%20016.453-3.678.503.503%200%20000-.975%2013.245%2013.245%200%2001-2.003-.678z'%20fill='url(%23lobe-icons-gemini-1-_R_0_)'%3e%3c/path%3e%3cpath%20d='M20.616%2010.835a14.147%2014.147%200%2001-4.45-3.001%2014.111%2014.111%200%2001-3.678-6.452.503.503%200%2000-.975%200%2014.134%2014.134%200%2001-3.679%206.452%2014.155%2014.155%200%2001-4.45%203.001c-.65.28-1.318.505-2.002.678a.502.502%200%20000%20.975c.684.172%201.35.397%202.002.677a14.147%2014.147%200%20014.45%203.001%2014.112%2014.112%200%20013.679%206.453.502.502%200%2000.975%200c.172-.685.397-1.351.677-2.003a14.145%2014.145%200%20013.001-4.45%2014.113%2014.113%200%20016.453-3.678.503.503%200%20000-.975%2013.245%2013.245%200%2001-2.003-.678z'%20fill='url(%23lobe-icons-gemini-2-_R_0_)'%3e%3c/path%3e%3cdefs%3e%3clinearGradient%20gradientUnits='userSpaceOnUse'%20id='lobe-icons-gemini-0-_R_0_'%20x1='7'%20x2='11'%20y1='15.5'%20y2='12'%3e%3cstop%20stop-color='%2308B962'%3e%3c/stop%3e%3cstop%20offset='1'%20stop-color='%2308B962'%20stop-opacity='0'%3e%3c/stop%3e%3c/linearGradient%3e%3clinearGradient%20gradientUnits='userSpaceOnUse'%20id='lobe-icons-gemini-1-_R_0_'%20x1='8'%20x2='11.5'%20y1='5.5'%20y2='11'%3e%3cstop%20stop-color='%23F94543'%3e%3c/stop%3e%3cstop%20offset='1'%20stop-color='%23F94543'%20stop-opacity='0'%3e%3c/stop%3e%3c/linearGradient%3e%3clinearGradient%20gradientUnits='userSpaceOnUse'%20id='lobe-icons-gemini-2-_R_0_'%20x1='3.5'%20x2='17.5'%20y1='13.5'%20y2='12'%3e%3cstop%20stop-color='%23FABC12'%3e%3c/stop%3e%3cstop%20offset='.46'%20stop-color='%23FABC12'%20stop-opacity='0'%3e%3c/stop%3e%3c/linearGradient%3e%3c/defs%3e%3c/svg%3e`,nt=`data:image/svg+xml,%3csvg%20height='24'%20viewBox='0%200%2024%2024'%20width='24'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eKimi%3c/title%3e%3cpath%20d='M21.846%200a1.923%201.923%200%20110%203.846H20.15a.226.226%200%2001-.227-.226V1.923C19.923.861%2020.784%200%2021.846%200z'%20fill='%231783FF'%3e%3c/path%3e%3cpath%20d='M11.065%2011.199l7.257-7.2c.137-.136.06-.41-.116-.41H14.3a.164.164%200%2000-.117.051l-7.82%207.756c-.122.12-.302.013-.302-.179V3.82c0-.127-.083-.23-.185-.23H3.186c-.103%200-.186.103-.186.23V19.77c0%20.128.083.23.186.23h2.69c.103%200%20.186-.102.186-.23v-3.25c0-.069.025-.135.069-.178l2.424-2.406a.158.158%200%2001.205-.023l6.484%204.772a7.677%207.677%200%20003.453%201.283c.108.012.2-.095.2-.23v-3.06c0-.117-.07-.212-.164-.227a5.028%205.028%200%2001-2.027-.807l-5.613-4.064c-.117-.078-.132-.279-.028-.381z'%20fill='%23fff'%3e%3c/path%3e%3c/svg%3e`,rt=`data:image/svg+xml,%3csvg%20height='24'%20viewBox='0%200%2024%2024'%20width='24'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eQwen%3c/title%3e%3cpath%20d='M12.604%201.34c.393.69.784%201.382%201.174%202.075a.18.18%200%2000.157.091h5.552c.174%200%20.322.11.446.327l1.454%202.57c.19.337.24.478.024.837-.26.43-.513.864-.76%201.3l-.367.658c-.106.196-.223.28-.04.512l2.652%204.637c.172.301.111.494-.043.77-.437.785-.882%201.564-1.335%202.34-.159.272-.352.375-.68.37-.777-.016-1.552-.01-2.327.016a.099.099%200%2000-.081.05%20575.097%20575.097%200%2001-2.705%204.74c-.169.293-.38.363-.725.364-.997.003-2.002.004-3.017.002a.537.537%200%2001-.465-.271l-1.335-2.323a.09.09%200%2000-.083-.049H4.982c-.285.03-.553-.001-.805-.092l-1.603-2.77a.543.543%200%2001-.002-.54l1.207-2.12a.198.198%200%20000-.197%20550.951%20550.951%200%2001-1.875-3.272l-.79-1.395c-.16-.31-.173-.496.095-.965.465-.813.927-1.625%201.387-2.436.132-.234.304-.334.584-.335a338.3%20338.3%200%20012.589-.001.124.124%200%2000.107-.063l2.806-4.895a.488.488%200%2001.422-.246c.524-.001%201.053%200%201.583-.006L11.704%201c.341-.003.724.032.9.34zm-3.432.403a.06.06%200%2000-.052.03L6.254%206.788a.157.157%200%2001-.135.078H3.253c-.056%200-.07.025-.041.074l5.81%2010.156c.025.042.013.062-.034.063l-2.795.015a.218.218%200%2000-.2.116l-1.32%202.31c-.044.078-.021.118.068.118l5.716.008c.046%200%20.08.02.104.061l1.403%202.454c.046.081.092.082.139%200l5.006-8.76.783-1.382a.055.055%200%2001.096%200l1.424%202.53a.122.122%200%2000.107.062l2.763-.02a.04.04%200%2000.035-.02.041.041%200%20000-.04l-2.9-5.086a.108.108%200%20010-.113l.293-.507%201.12-1.977c.024-.041.012-.062-.035-.062H9.2c-.059%200-.073-.026-.043-.077l1.434-2.505a.107.107%200%20000-.114L9.225%201.774a.06.06%200%2000-.053-.031zm6.29%208.02c.046%200%20.058.02.034.06l-.832%201.465-2.613%204.585a.056.056%200%2001-.05.029.058.058%200%2001-.05-.029L8.498%209.841c-.02-.034-.01-.052.028-.054l.216-.012%206.722-.012z'%20fill='url(%23lobe-icons-qwen-_R_0_)'%20fill-rule='nonzero'%3e%3c/path%3e%3cdefs%3e%3clinearGradient%20id='lobe-icons-qwen-_R_0_'%20x1='0%25'%20x2='100%25'%20y1='0%25'%20y2='0%25'%3e%3cstop%20offset='0%25'%20stop-color='%236336E7'%20stop-opacity='.84'%3e%3c/stop%3e%3cstop%20offset='100%25'%20stop-color='%236F69F7'%20stop-opacity='.84'%3e%3c/stop%3e%3c/linearGradient%3e%3c/defs%3e%3c/svg%3e`,it=`data:image/svg+xml,%3csvg%20fill='%23ffffff'%20fill-rule='evenodd'%20height='24'%20viewBox='0%200%2024%2024'%20width='24'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eGithubCopilot%3c/title%3e%3cpath%20d='M19.245%205.364c1.322%201.36%201.877%203.216%202.11%205.817.622%200%201.2.135%201.592.654l.73.964c.21.278.323.61.323.955v2.62c0%20.339-.173.669-.453.868C20.239%2019.602%2016.157%2021.5%2012%2021.5c-4.6%200-9.205-2.583-11.547-4.258-.28-.2-.452-.53-.453-.868v-2.62c0-.345.113-.679.321-.956l.73-.963c.392-.517.974-.654%201.593-.654l.029-.297c.25-2.446.81-4.213%202.082-5.52%202.461-2.54%205.71-2.851%207.146-2.864h.198c1.436.013%204.685.323%207.146%202.864zm-7.244%204.328c-.284%200-.613.016-.962.05-.123.447-.305.85-.57%201.108-1.05%201.023-2.316%201.18-2.994%201.18-.638%200-1.306-.13-1.851-.464-.516.165-1.012.403-1.044.996a65.882%2065.882%200%2000-.063%202.884l-.002.48c-.002.563-.005%201.126-.013%201.69.002.326.204.63.51.765%202.482%201.102%204.83%201.657%206.99%201.657%202.156%200%204.504-.555%206.985-1.657a.854.854%200%2000.51-.766c.03-1.682.006-3.372-.076-5.053-.031-.596-.528-.83-1.046-.996-.546.333-1.212.464-1.85.464-.677%200-1.942-.157-2.993-1.18-.266-.258-.447-.661-.57-1.108-.32-.032-.64-.049-.96-.05zm-2.525%204.013c.539%200%20.976.426.976.95v1.753c0%20.525-.437.95-.976.95a.964.964%200%2001-.976-.95v-1.752c0-.525.437-.951.976-.951zm5%200c.539%200%20.976.426.976.95v1.753c0%20.525-.437.95-.976.95a.964.964%200%2001-.976-.95v-1.752c0-.525.437-.951.976-.951zM7.635%205.087c-1.05.102-1.935.438-2.385.906-.975%201.037-.765%203.668-.21%204.224.405.394%201.17.657%201.995.657h.09c.649-.013%201.785-.176%202.73-1.11.435-.41.705-1.433.675-2.47-.03-.834-.27-1.52-.63-1.813-.39-.336-1.275-.482-2.265-.394zm6.465.394c-.36.292-.6.98-.63%201.813-.03%201.037.24%202.06.675%202.47.968.957%202.136%201.104%202.776%201.11h.044c.825%200%201.59-.263%201.995-.657.555-.556.765-3.187-.21-4.224-.45-.468-1.335-.804-2.385-.906-.99-.088-1.875.058-2.265.394zM12%207.615c-.24%200-.525.015-.84.044.03.16.045.336.06.526l-.001.159a2.94%202.94%200%2001-.014.25c.225-.022.425-.027.612-.028h.366c.187%200%20.387.006.612.028-.015-.146-.015-.277-.015-.409.015-.19.03-.365.06-.526a9.29%209.29%200%2000-.84-.044z'%3e%3c/path%3e%3c/svg%3e`,at=d(``),ot=d(``);function st(e,t){let n=I(t,`size`,3,20),r={claude:Ye,codex:Xe,openai:Ze,opencode_go:Qe,opencode:Qe,xai:$e,grok:$e,antigravity:et,gemini:tt,google:tt,kimi:nt,qwen:rt,copilot:it},i=W(()=>r[t.provider]);var a=ot();let o,s;var c=S(a),l=e=>{var t=at();b(()=>{K(t,`src`,X(i)),K(t,`width`,n()),K(t,`height`,n())}),R(e,t)},u=e=>{Je(e,{get size(){return n()},strokeWidth:1.6})};z(c,e=>{X(i)?e(l):e(u,-1)}),V(a),b(()=>{o=D(a,1,`provider-mark svelte-1vulm01`,null,o,{"light-mat":t.provider===`qwen`}),s=oe(a,``,s,{width:`${n()??``}px`,height:`${n()??``}px`})}),R(e,a)}var ct={"common.save":`Save`,"common.cancel":`Cancel`,"common.close":`Close`,"common.import":`Import`,"common.retry":`Retry`,"common.connectAccount":`Connect an account`,"common.chooseOtherProvider":`Choose another provider`,"common.searchAccount":`Search accounts`,"common.noAccountConnected":`No account connected`,"common.noMatchingAccount":`No matching account`,"common.tryOtherName":`Try another name or provider.`,"common.enable":`Enable {name}`,"common.disabled":`Disabled`,"common.verifyGoogle":`Verify the Google account`,"common.openAntigravity":`Open Antigravity with this account to finish verification.`,"common.percent":`{value}%`,"common.accountCount.one":`{count} account`,"common.accountCount.other":`{count} accounts`,"common.copyRefused":`Copy unavailable. Select the text to copy it.`,"nav.subscriptions":`Subscriptions`,"nav.quotas":`Quotas`,"nav.overview":`Overview`,"nav.accounts":`Accounts`,"nav.models":`Models`,"nav.service":`Service`,"nav.activity":`Requests`,"nav.settings":`Settings`,"nav.quickstart":`Quick start`,"nav.main":`Main navigation`,"nav.mobile":`Mobile navigation`,"nav.openMenu":`Open menu`,"nav.closeMenu":`Close menu`,"nav.menu":`Menu`,"nav.setupTool":`Set up a tool`,"page.description":`Manage your subscriptions, their quotas and your tools' requests.`,"page.loading":`Loading your subscriptions...`,"page.dismissNotice":`Dismiss notification`,"page.settingsUnavailable":`Settings will be available once the server responds.`,"notice.displaySaved":`Boite display saved.`,"notice.windowsSaved":`Windows shown in Boite saved.`,"notice.busy":`Another action is in progress.`,"notice.endpointSaved":`Endpoint saved.`,"notice.reserveRemoved":`Reserve removed.`,"notice.reserveSaved":`Reserve saved.`,"notice.fileTooLarge":`{name} is over the 2 MB limit.`,"notice.invalidJson":`{name}: the file must contain valid JSON.`,"notice.partialImport":`{count} account(s) imported. {errors}`,"notice.nothingImported":`The file added no accounts.`,"notice.imported":`Accounts imported.`,"notice.accountDisabled":`Account disabled.`,"notice.accountEnabled":`Account enabled.`,"notice.accountDeleted":`Account deleted.`,"notice.settingsSaved":`Settings saved.`,"notice.modelUpdated":`Model updated.`,"notice.accountConnected":`Account connected.`,"notice.partialRestore":`{count} account(s) restored. {errors}`,"notice.restored.one":`{count} account restored.`,"notice.restored.other":`{count} accounts restored.`,"api.serverStatus":`The server returned {status}.`,"api.errorPrefix":`{name}: {error}`,"private.account":`account`,"status.active":`Active`,"status.exhausted":`Quota used up`,"status.cooldown":`Paused`,"status.expired":`Sign-in expired`,"status.check":`Needs checking`,"status.reserveReached":`Reserve reached`,"date.unknown":`Date not reported`,"credit.unknown":`Not reported`,"credit.credits":`credits`,"usage.weekly":`Weekly`,"usage.monthly":`Monthly`,"usage.fiveHours":`5 hours`,"usage.extra":`Extra usage`,"usage.codexCredits":`Codex credits`,"usage.creditBalance":`Credit balance`,"usage.premiumRequests":`Premium requests`,"usage.chat":`Chat`,"usage.completions":`Completions`,"dialect.client":`Same as the client`,"reserveWindow.five-hour":`5 h`,"reserveWindow.daily":`Day`,"reserveWindow.weekly":`Week`,"reserveWindow.monthly":`Month`,"provider.openaiCompatible":`OpenAI-compatible`,"accounts.title":`Accounts`,"accounts.dropLabel":`Drop auth files`,"accounts.drop":`Drop your JSON files to import accounts`,"accounts.emptyDescription":`Connect a subscription or import its JSON file.`,"accounts.colAccount":`Account`,"accounts.colSubscription":`Subscription`,"accounts.colStatus":`Status`,"accounts.colReserve":`Reserve`,"accounts.colVerified":`Quotas checked`,"accounts.colActions":`Actions`,"accounts.verifiedPrefix":`Quotas checked: `,"accounts.notVerified":`Not checked`,"accounts.delete":`Delete {name}`,"accounts.deleteTitle":`Delete this account`,"accounts.deleteConfirm":`Delete this account from douane?`,"accounts.deleteButton":`Delete`,"name.invalid":`Enter a name of 1 to 120 characters.`,"name.input":`New account name`,"name.save":`Save name`,"name.cancel":`Cancel rename`,"name.rename":`Rename this account`,"reserve.notSaved":`The reserve was not saved.`,"reserve.invalid":`Enter a percentage from 0 to 99.`,"reserve.keepAtLeast":`Keep at least`,"reserve.input":`Minimum reserve in percent`,"reserve.save":`Save reserve`,"reserve.watched":`Watched limits`,"reserve.longestTitle":`The account's longest limit (month or week)`,"reserve.longest":`Longest`,"reserve.remove":`Remove reserve`,"reserve.titleWatched":`Douane stops using this account when one of these limits reaches this level: {windows}`,"reserve.titleLongest":`Douane stops using this account when its longest quota (month or week) reaches this level`,"reserve.add":`Add a reserve`,"reserve.label":`Reserve {percent}%`,"reserve.reached":`Reserve reached: douane no longer uses this account until the reset.`,"reserve.inactiveWindows":`Inactive: this account does not report these limits.`,"reserve.inactiveAccount":`Inactive: this provider does not report a quota for the whole account.`,"resets.reset":`Quota reset.`,"resets.alreadyRedeemed":`This reset was already applied.`,"resets.nothingToReset":`The quota is already available. No reset used.`,"resets.noCredit":`No reset available.`,"resets.unconfirmed":`The server did not confirm the reset result.`,"resets.resume":`Resume reset`,"resets.button":`Reset ({count})`,"resets.checking":`Checking resets`,"resets.none":`0 resets available`,"resets.check":`Check resets`,"resets.title":`Reset quota`,"resets.closeConfirmation":`Close confirmation`,"resets.warning":`This uses 1 reset to restore the account's quota. It cannot be undone.`,"resets.expiresFirst":`The reset that expires on {date} is used first.`,"resets.pending":`An attempt is waiting for confirmation. Retrying checks the same operation.`,"resets.running":`Resetting`,"resets.retrySame":`Retry the same reset`,"resets.use":`Use 1 reset`,"connect.copyRefused":`The browser refused the copy. Select the code to copy it.`,"connect.waiting":`Waiting for authorization. The connection is checked automatically.`,"connect.expired":`This connection expired. Choose the provider to start again.`,"connect.refused":`The provider refused the connection. Start again to retry.`,"connect.exchanging":`Authorization received, connecting the account.`,"connect.stillWaiting":`The connection is still waiting for your authorization.`,"connect.unconfirmed":`The server did not confirm the new account.`,"connect.notAdded":`The account was not added.`,"connect.subtitle":`Add a subscription to douane.`,"connect.success":`Account connected`,"connect.successText":`Your subscription is now available in douane.`,"connect.viewAccounts":`View my accounts`,"connect.googleVerify":`Google asks you to verify this account before connecting.`,"connect.afterVerify":`Once verification is done, start the connection again.`,"connect.restart":`Start again`,"connect.antigravityTitle":`Antigravity setup incomplete`,"connect.antigravityProject":`The Google sign-in worked, but Google did not provide the project this account needs.`,"connect.antigravityFirstUse":`If this is the first use, open the Antigravity app with this account and finish onboarding. If Antigravity also refuses the sign-in, follow Google's message.`,"connect.antigravityGuide":`Open the Antigravity guide`,"connect.enterCode":`Open the {provider} page and enter this code to authorize the connection.`,"connect.copyCode":`Copy code`,"connect.authorize":`Open the provider's page and authorize the connection.`,"connect.open":`Open sign-in`,"connect.callbackHint":`If the redirect to localhost does not load, copy its full URL. Claude can also show a code to paste here.`,"connect.callbackLabel":`Redirect URL or sign-in code`,"connect.callbackPlaceholder":`Redirect URL or code#state`,"connect.finish":`Finish connecting`,"connect.check":`Check connection`,"connect.customIntro1":`An API key becomes a model prefix: with `,"connect.customIntro2":`, its models are called `,"connect.customModel":`deepseek/model-name`,"connect.customIntro3":`. Several keys under the same prefix take turns. The key leaves this form once saved.`,"connect.name":`Name`,"connect.addEndpoint":`Add endpoint`,"connect.tokenIntro":`Add your subscription's access token. It leaves this form once saved.`,"connect.accountName":`Account name`,"connect.accountNamePlaceholder":`My subscription`,"connect.token":`Access token`,"connect.providerUrl":`Provider URL`,"connect.providerUrlPlaceholder":`https://your-provider/v1`,"connect.addAccount":`Add account`,"connect.oauthOption":`Connect my subscription`,"connect.apiKeyOption":`Add an API key`,"connect.tokenOption":`Add a token`,"connect.noProvider":`No provider available. Import an auth file to add an account.`,"connect.haveFile":`Already have a file?`,"connect.importFiles":`Import one or more JSON auth files.`,"connect.pending":`Connecting...`,"endpoint.route":`Model prefix`,"endpoint.url":`API URL`,"endpoint.format":`API format`,"endpoint.key":`API key`,"endpoint.models":`Served models`,"endpoint.modelsPlaceholder":`All models from the API`,"endpoint.newKey":`New API key`,"endpoint.unchanged":`Unchanged`,"endpoint.edit":`Edit endpoint`,"email.hide":`Hide this email`,"email.show":`Show this email`,"meter.left":`Quota left`,"meter.unavailable":`Unavailable`,"meter.valueLeft":`{value}% left`,"quotas.refresh":`Refresh quotas`,"quotas.filter":`Filter by provider`,"quotas.all":`All`,"quotas.search":`Search`,"quotas.sort":`Sort accounts`,"quotas.byName":`By name`,"quotas.byRemaining":`Quota left`,"quotas.emptyDescription":`Connect a subscription to see its quotas.`,"quotas.group":`{provider} quotas`,"quotas.displayTitle":`How {provider} quotas show in Boite and /v1/quotas clients`,"quotas.displayLabel":`In Boite / clients`,"quotas.perAccount":`Per account`,"quotas.average":`Account average`,"quotas.windowsTitle":`{provider} quota windows shown in Boite`,"quotas.windows":`Windows`,"quotas.windowsLabel":`{provider} windows in Boite`,"quotas.primary":`Main`,"quotas.makePrimary":`Make main`,"quotas.showWindow":`Show {label} in Boite`,"quotas.noWindow":`No window read for this provider.`,"quotas.defaultWindow":`Without a main window, Boite highlights the weekly one.`,"quotas.googleVerify":`Google asks you to verify this account.`,"quotas.resetAt":`Resets: {date}`,"quotas.notReported":`Quota not reported`,"quotas.unlimited":`Unlimited`,"quotas.remaining":`left`,"quotas.used":`{used} used`,"quotas.usedOf":`{used} used of {limit}`,"quotas.refreshAccount":`Refresh this account`,"quotas.refreshNamed":`Refresh {name}`,"overview.description":`Activity across your subscriptions`,"overview.connected":`Service connected`,"overview.disconnected":`Connection unavailable`,"overview.activeAccounts":`Active accounts`,"overview.ofAccounts":`of {count} accounts`,"overview.requests":`Requests`,"overview.inFlight":`{count} in progress`,"overview.tokens":`Tokens exchanged`,"overview.tokensDetail":`input and output`,"overview.cache":`Cache read`,"overview.cacheDetail":`tokens reused`,"overview.success":`Successful requests`,"overview.errors":`{count} errors`,"overview.recent":`Recent activity`,"overview.recentDescription":`The latest requests douane handled`,"overview.viewAll":`View all`,"overview.emptyTitle":`Your activity will show here`,"overview.emptyDescription":`Connect an account, then send a first request from your tool.`,"overview.openQuickstart":`Open quick start`,"table.model":`Model`,"table.provider":`Provider`,"table.time":`Time`,"table.status":`Status`,"table.duration":`Duration`,"table.id":`ID`,"table.context":`Context`,"table.available":`Available`,"table.modelAccount":`Model and account`,"table.tokens":`Tokens`,"table.error":`Error`,"models.description":`Models available with your accounts`,"models.count":`{count} models`,"models.endpoint":`OpenAI-compatible URL`,"models.search":`Search models`,"models.emptyTitle":`No model available`,"models.emptyDescription":`Add an account to load its subscription's models.`,"models.addAccount":`Add an account`,"models.noMatchTitle":`No matching model`,"models.noMatchDescription":`Try another model or provider name.`,"activity.title":`Request log`,"activity.description":`Each call, its account and its usage`,"activity.count":`Last {count} requests`,"activity.onlyErrors":`Show errors only`,"activity.search":`Search requests`,"activity.searchPlaceholder":`Model, account or provider`,"activity.noMatchTitle":`No matching request`,"activity.emptyTitle":`No requests yet`,"activity.noMatchDescription":`Change your search or the error filter.`,"activity.emptyDescription":`Your tools' calls will show here with their real result.`,"activity.unknownAccount":`Account not reported`,"quickstart.chooseTool":`Choose a tool`,"quickstart.openAccounts":`Open accounts`,"quickstart.baseUrl":`Base URL`,"quickstart.copyUrl":`Copy URL`,"quickstart.openaiHint1":`Pick your tool's OpenAI-compatible mode. As its API key, enter a client key `,"quickstart.openaiHint2":` from the Clients page.`,"quickstart.chooseModel":`Choose a model`,"quickstart.powershell":`Run these commands in PowerShell.`,"quickstart.copyClaude":`Copy the Claude Code setup`,"quickstart.claudeHint":`Replace dk_... with a client key from the Clients page. Claude Code will send its requests through the connected Claude account.`,"quickstart.connectClaude":`Connect a Claude account`,"strategy.round-robin.label":`Round robin`,"strategy.round-robin.desc":`Each active account takes requests in turn.`,"strategy.fill-first.label":`Use up one account`,"strategy.fill-first.desc":`Uses the first available account before moving to the next.`,"strategy.reset-first.label":`Nearest reset`,"strategy.reset-first.desc":`Uses the account whose weekly quota resets first. The others serve only when it is unavailable.`,"strategy.smart.label":`Smart split`,"strategy.smart.desc":`Within 48 h of the reset, 90% of new conversations use this account until it runs out.`,"settings.sessionNote":`A conversation keeps its account while it stays available. With Nearest reset, it returns to the account with the nearest reset as soon as that account is available.`,"settings.routing":`Request routing`,"settings.routingDescription":`The default rule applies to providers without their own choice. Each choice saves on click.`,"settings.perProvider":`Per provider`,"settings.perProviderDescription":`Adjust routing for each of your subscriptions.`,"settings.defaultRule":`Default rule`,"settings.noProviders":`Providers will show once the service is connected.`,"settings.refresh":`Refresh and timeouts`,"settings.refreshDescription":`Quotas and account selection are recomputed after each refresh.`,"settings.refreshEvery":`Refresh quotas every`,"settings.seconds":`seconds`,"settings.timeout":`Request timeout`,"settings.defaultProvider":`Default provider`,"settings.weekEnd":`End of the week`,"settings.weekEndDescription":`Before an account's weekly reset, its reserve and client shares stop applying, so what is left gets used. 0 keeps them to the end.`,"settings.freeBefore":`Lift limits before the reset`,"settings.hours":`hours`,"settings.autoProvider":`Automatic selection`,"settings.saving":`Saving...`,"settings.save":`Save settings`,"settings.language":`Language`,"settings.languageDescription":`Language of this dashboard, saved in this browser.`,"settings.languageAuto":`Automatic`,"settings.languageEnglish":`English`,"settings.languageFrench":`Français`,"backup.title":`Backup`,"backup.description":`Move this configuration to another douane: settings, disabled models and every account.`,"backup.warning":`The file holds live sign-ins and keys. Refresh tokens rotate, so an account works in one douane at a time: after a restore, remove it here. Keep the file private.`,"backup.export":`Export`,"backup.exporting":`Exporting...`,"backup.restore":`Restore`,"backup.restoring":`Restoring...`,"backup.confirm.one":`{name} holds {count} account. Accounts already here are updated, the others are added.`,"backup.confirm.other":`{name} holds {count} accounts. Accounts already here are updated, the others are added.`,"backup.withSettings":`Also apply its settings and disabled models`,"backup.confirmButton":`Restore accounts`,"backup.notExport":`{name} is not a douane export.`,"backup.tooLarge":`{name} is over the 32 MB limit.`,"nav.clients":`Clients`,"clients.enforcedInfo":`Every call needs a client key, so each call is counted for its client.`,"clients.keys":`Keys and limits`,"stats.title":`Consumption`,"stats.info":`Calls and tokens of each client, from the request log. Tokens count input, cache reads included, and output.`,"stats.period":`Period`,"stats.day":`24 h`,"stats.week":`7 days`,"stats.month":`30 days`,"stats.tokens":`Tokens`,"stats.calls":`Calls`,"stats.activeClients":`Active clients`,"stats.errors":`Errors`,"stats.chart":`Tokens by client over the period`,"stats.none":`No call`,"stats.tokensUnit":`tokens`,"stats.callsUnit":`calls`,"stats.cache":`cache {value}%`,"stats.cacheInfo":`Share of input tokens read from the prompt cache`,"stats.errorCount":`{count} errors`,"stats.noError":`no error`,"stats.idle":`No call over this period`,"stats.model":`Model`,"stats.input":`Input`,"stats.output":`Output`,"stats.cacheRead":`Cache read`,"stats.latency":`Avg. time`,"stats.empty":`No call over this period.`,"clients.title":`Clients`,"clients.new":`New client`,"clients.enforced":`Keys required`,"clients.emptyTitle":`No client yet`,"clients.emptyDescription":`douane refuses every call until a client exists. Give each Boite or tool its own key, the accounts it may use and, if you want, its share of each quota.`,"clients.allAccounts":`All accounts`,"clients.allAccountsHint":`Accounts connected later included`,"clients.noAccess":`No account`,"clients.noShare":`Common part only`,"clients.createdAt":`Created {date}`,"clients.ofShare":`{used} / {share}%`,"clients.highest":`Highest account: {name}`,"clients.notMeasured":`Not measured yet`,"clients.rotate":`New key`,"clients.rotateNamed":`New key for {name}`,"clients.delete":`Delete`,"clients.deleteNamed":`Delete {name}`,"clients.breakdown":`Breakdown`,"clients.breakdownInfo":`Each rise of a window goes to the clients whose calls ended on that account, weighted by tokens. A rise no call through douane explains counts as outside douane.`,"clients.breakdownEmpty":`No window measured since the first client.`,"clients.noKey":`Without key`,"clients.former":`Deleted clients`,"clients.outside":`Outside douane`,"clients.unexplained":`Unattributed`,"clients.used":`{value}% used`,"clients.editTitle":`Edit {name}`,"clients.name":`Name`,"clients.namePlaceholder":`Desktop`,"clients.access":`Accounts`,"clients.wholePool":`Every {pool} account, later ones included`,"clients.shares":`Quota shares`,"clients.sharesInfo":`A share reserves this percent of each window (5 h, day, week, month) of every account of the provider. An unused share frees up in the last seventh of the window. What no share covers is common to every client.`,"clients.shareOf":`Share of {pool}`,"clients.common":`Common {value}%`,"clients.overbooked":`Over 100%`,"clients.noPool":`Choose accounts first.`,"clients.shareInvalid":`A share is a number above 0 and at most 100.`,"clients.pickAccess":`Choose at least one account.`,"clients.create":`Create`,"clients.keyTitle":`Key for {name}`,"clients.keyOnce":`Shown once. Copy it now.`,"clients.keyBoite":`Paste it in Boite: Settings, subscription proxy, key.`,"clients.copyKey":`Copy`,"clients.copied":`Copied`,"clients.rotateTitle":`New key for {name}?`,"clients.rotateText":`The current key stops working at once. Paste the new one in the tool that uses it.`,"clients.rotateButton":`Replace the key`,"clients.deleteTitle":`Delete {name}?`,"clients.deleteText":`Calls with its key are refused.`,"clients.deleteLast":`It is the last client: douane will refuse every call until you create another.`,"clients.deleteButton":`Delete`,"notice.clientCreated":`Client created.`,"notice.clientSaved":`Client saved.`,"notice.clientDeleted":`Client deleted.`,"notice.keyReplaced":`Key replaced.`,"activity.client":`Client {name}`,"quickstart.keyRequired":`No client yet: create one on the Clients page first. douane refuses every call without a client key.`},lt={"common.save":`Enregistrer`,"common.cancel":`Annuler`,"common.close":`Fermer`,"common.import":`Importer`,"common.retry":`Réessayer`,"common.connectAccount":`Connecter un compte`,"common.chooseOtherProvider":`Choisir un autre fournisseur`,"common.searchAccount":`Rechercher un compte`,"common.noAccountConnected":`Aucun compte connecté`,"common.noMatchingAccount":`Aucun compte correspondant`,"common.tryOtherName":`Essayez un autre nom ou fournisseur.`,"common.enable":`Activer {name}`,"common.disabled":`Désactivé`,"common.verifyGoogle":`Vérifier le compte Google`,"common.openAntigravity":`Ouvrez Antigravity avec ce compte pour terminer la vérification.`,"common.percent":`{value} %`,"common.accountCount.one":`{count} compte`,"common.accountCount.other":`{count} comptes`,"common.copyRefused":`Copie indisponible. Sélectionnez le texte pour le copier.`,"nav.subscriptions":`Abonnements`,"nav.quotas":`Quotas`,"nav.overview":`Vue d'ensemble`,"nav.accounts":`Comptes`,"nav.models":`Modèles`,"nav.service":`Service`,"nav.activity":`Requêtes`,"nav.settings":`Réglages`,"nav.quickstart":`Démarrage rapide`,"nav.main":`Navigation principale`,"nav.mobile":`Navigation mobile`,"nav.openMenu":`Ouvrir le menu`,"nav.closeMenu":`Fermer le menu`,"nav.menu":`Menu`,"nav.setupTool":`Configurer un outil`,"page.description":`Gérez vos abonnements, leurs quotas et les requêtes de vos outils.`,"page.loading":`Chargement de vos abonnements...`,"page.dismissNotice":`Fermer la notification`,"page.settingsUnavailable":`Les réglages seront disponibles lorsque le serveur répondra.`,"notice.displaySaved":`Affichage dans Boite enregistré.`,"notice.windowsSaved":`Fenêtres affichées dans Boite enregistrées.`,"notice.busy":`Une action est déjà en cours.`,"notice.endpointSaved":`Endpoint enregistré.`,"notice.reserveRemoved":`Réserve retirée.`,"notice.reserveSaved":`Réserve enregistrée.`,"notice.fileTooLarge":`{name} dépasse la limite de 2 Mo.`,"notice.invalidJson":`{name} : le fichier doit contenir du JSON valide.`,"notice.partialImport":`{count} compte(s) importé(s). {errors}`,"notice.nothingImported":`Le fichier n'a ajouté aucun compte.`,"notice.imported":`Comptes importés.`,"notice.accountDisabled":`Compte désactivé.`,"notice.accountEnabled":`Compte activé.`,"notice.accountDeleted":`Compte supprimé.`,"notice.settingsSaved":`Réglages enregistrés.`,"notice.modelUpdated":`Modèle mis à jour.`,"notice.accountConnected":`Compte connecté.`,"notice.partialRestore":`{count} compte(s) restauré(s). {errors}`,"notice.restored.one":`{count} compte restauré.`,"notice.restored.other":`{count} comptes restaurés.`,"api.serverStatus":`Le serveur a répondu {status}.`,"api.errorPrefix":`{name} : {error}`,"private.account":`compte`,"status.active":`Actif`,"status.exhausted":`Quota épuisé`,"status.cooldown":`En pause`,"status.expired":`Connexion expirée`,"status.check":`À vérifier`,"status.reserveReached":`Réserve atteinte`,"date.unknown":`Date non communiquée`,"credit.unknown":`Non communiqué`,"credit.credits":`crédits`,"usage.weekly":`Semaine`,"usage.monthly":`Mois`,"usage.fiveHours":`5 heures`,"usage.extra":`Usage supplémentaire`,"usage.codexCredits":`Crédits Codex`,"usage.creditBalance":`Solde des crédits`,"usage.premiumRequests":`Requêtes premium`,"usage.chat":`Chat`,"usage.completions":`Complétions`,"dialect.client":`Celui du client`,"reserveWindow.five-hour":`5 h`,"reserveWindow.daily":`Jour`,"reserveWindow.weekly":`Semaine`,"reserveWindow.monthly":`Mois`,"provider.openaiCompatible":`Compatible OpenAI`,"accounts.title":`Comptes`,"accounts.dropLabel":`Déposer des fichiers d'authentification`,"accounts.drop":`Déposez vos fichiers JSON pour importer des comptes`,"accounts.emptyDescription":`Connectez un abonnement ou importez son fichier JSON.`,"accounts.colAccount":`Compte`,"accounts.colSubscription":`Abonnement`,"accounts.colStatus":`État`,"accounts.colReserve":`Réserve`,"accounts.colVerified":`Quotas vérifiés`,"accounts.colActions":`Actions`,"accounts.verifiedPrefix":`Quotas vérifiés : `,"accounts.notVerified":`Non vérifiés`,"accounts.delete":`Supprimer {name}`,"accounts.deleteTitle":`Supprimer ce compte`,"accounts.deleteConfirm":`Supprimer ce compte de douane ?`,"accounts.deleteButton":`Supprimer`,"name.invalid":`Saisissez un nom de 1 à 120 caractères.`,"name.input":`Nouveau nom du compte`,"name.save":`Enregistrer le nom`,"name.cancel":`Annuler le renommage`,"name.rename":`Renommer ce compte`,"reserve.notSaved":`La réserve n'a pas été enregistrée.`,"reserve.invalid":`Saisissez un pourcentage entre 0 et 99.`,"reserve.keepAtLeast":`Garder au moins`,"reserve.input":`Réserve minimale en pourcentage`,"reserve.save":`Enregistrer la réserve`,"reserve.watched":`Limites surveillées`,"reserve.longestTitle":`La limite la plus longue du compte (mois ou semaine)`,"reserve.longest":`Plus longue`,"reserve.remove":`Retirer la réserve`,"reserve.titleWatched":`Douane cesse d'utiliser ce compte quand une de ces limites atteint ce seuil : {windows}`,"reserve.titleLongest":`Douane cesse d'utiliser ce compte quand son quota le plus long (mois ou semaine) atteint ce seuil`,"reserve.add":`Ajouter une réserve`,"reserve.label":`Réserve {percent} %`,"reserve.reached":`Réserve atteinte : douane n'utilise plus ce compte jusqu'à la réinitialisation.`,"reserve.inactiveWindows":`Inactive : ce compte ne communique pas ces limites.`,"reserve.inactiveAccount":`Inactive : ce fournisseur ne communique pas de quota pour l'ensemble du compte.`,"resets.reset":`Quota réinitialisé.`,"resets.alreadyRedeemed":`Ce reset a déjà été appliqué.`,"resets.nothingToReset":`Le quota est déjà disponible. Aucun reset utilisé.`,"resets.noCredit":`Aucun reset disponible.`,"resets.unconfirmed":`Le serveur n’a pas confirmé le résultat du reset.`,"resets.resume":`Reprendre le reset`,"resets.button":`Réinitialiser ({count})`,"resets.checking":`Vérification des resets`,"resets.none":`0 reset disponible`,"resets.check":`Vérifier les resets`,"resets.title":`Réinitialiser le quota`,"resets.closeConfirmation":`Fermer la confirmation`,"resets.warning":`Cette action consomme 1 reset pour rétablir le quota du compte. Elle est irréversible.`,"resets.expiresFirst":`Le reset qui expire le {date} sera utilisé en premier.`,"resets.pending":`Une tentative est en attente de confirmation. Réessayer vérifie la même opération.`,"resets.running":`Réinitialisation en cours`,"resets.retrySame":`Réessayer le même reset`,"resets.use":`Utiliser 1 reset`,"connect.copyRefused":`Copie refusée par le navigateur. Sélectionnez le code pour le copier.`,"connect.waiting":`En attente d'autorisation. La connexion est vérifiée automatiquement.`,"connect.expired":`Cette connexion a expiré. Choisissez le fournisseur pour recommencer.`,"connect.refused":`Le fournisseur a refusé la connexion. Recommencez pour réessayer.`,"connect.exchanging":`Autorisation reçue, connexion du compte en cours.`,"connect.stillWaiting":`La connexion attend encore votre autorisation.`,"connect.unconfirmed":`Le serveur n'a pas confirmé l'ajout du compte.`,"connect.notAdded":`Le compte n'a pas été ajouté.`,"connect.subtitle":`Ajoutez un abonnement à douane.`,"connect.success":`Compte connecté`,"connect.successText":`Votre abonnement est maintenant disponible dans douane.`,"connect.viewAccounts":`Voir mes comptes`,"connect.googleVerify":`Google demande de vérifier ce compte avant la connexion.`,"connect.afterVerify":`Une fois la vérification terminée, recommencez la connexion.`,"connect.restart":`Recommencer la connexion`,"connect.antigravityTitle":`Activation Antigravity incomplète`,"connect.antigravityProject":`La connexion Google a réussi, mais Google n'a pas fourni le projet nécessaire à ce compte.`,"connect.antigravityFirstUse":`Pour une première utilisation, ouvrez l'application Antigravity avec ce compte et terminez l'accueil. Si Antigravity refuse aussi la connexion, suivez le message affiché par Google.`,"connect.antigravityGuide":`Ouvrir le guide Antigravity`,"connect.enterCode":`Ouvrez la page {provider} et saisissez ce code pour autoriser la connexion.`,"connect.copyCode":`Copier le code`,"connect.authorize":`Ouvrez la page du fournisseur et autorisez la connexion.`,"connect.open":`Ouvrir la connexion`,"connect.callbackHint":`Si le retour vers localhost ne charge pas, copiez son URL complète. Claude peut aussi afficher un code à coller ici.`,"connect.callbackLabel":`URL de retour ou code de connexion`,"connect.callbackPlaceholder":`URL de retour ou code#state`,"connect.finish":`Terminer la connexion`,"connect.check":`Vérifier la connexion`,"connect.customIntro1":`Une clé d'API devient un préfixe de modèles : avec `,"connect.customIntro2":`, ses modèles s'appellent `,"connect.customModel":`deepseek/nom-du-modèle`,"connect.customIntro3":`. Plusieurs clés sous le même préfixe tournent entre elles. La clé disparaît de ce formulaire après l'enregistrement.`,"connect.name":`Nom`,"connect.addEndpoint":`Ajouter l'endpoint`,"connect.tokenIntro":`Ajoutez le jeton de connexion de votre abonnement. Il disparaît de ce formulaire après l'enregistrement.`,"connect.accountName":`Nom du compte`,"connect.accountNamePlaceholder":`Mon abonnement`,"connect.token":`Jeton de connexion`,"connect.providerUrl":`Adresse du fournisseur`,"connect.providerUrlPlaceholder":`https://votre-fournisseur/v1`,"connect.addAccount":`Ajouter le compte`,"connect.oauthOption":`Connecter mon abonnement`,"connect.apiKeyOption":`Ajouter une clé d'API`,"connect.tokenOption":`Ajouter un jeton`,"connect.noProvider":`Aucun fournisseur disponible. Importez un fichier d'authentification pour ajouter un compte.`,"connect.haveFile":`Vous avez déjà un fichier ?`,"connect.importFiles":`Importez un ou plusieurs fichiers d'authentification JSON.`,"connect.pending":`Connexion en cours...`,"endpoint.route":`Préfixe des modèles`,"endpoint.url":`Adresse de l'API`,"endpoint.format":`Format de l'API`,"endpoint.key":`Clé d'API`,"endpoint.models":`Modèles servis`,"endpoint.modelsPlaceholder":`Tous les modèles de l'API`,"endpoint.newKey":`Nouvelle clé d'API`,"endpoint.unchanged":`Inchangée`,"endpoint.edit":`Modifier l'endpoint`,"email.hide":`Masquer cet email`,"email.show":`Afficher cet email`,"meter.left":`Quota restant`,"meter.unavailable":`Indisponible`,"meter.valueLeft":`{value} % restants`,"quotas.refresh":`Actualiser les quotas`,"quotas.filter":`Filtrer par fournisseur`,"quotas.all":`Tous`,"quotas.search":`Rechercher`,"quotas.sort":`Trier les comptes`,"quotas.byName":`Par nom`,"quotas.byRemaining":`Quota restant`,"quotas.emptyDescription":`Connectez un abonnement pour afficher ses quotas.`,"quotas.group":`Quotas {provider}`,"quotas.displayTitle":`Affichage des quotas {provider} dans Boite et les clients de /v1/quotas`,"quotas.displayLabel":`Dans Boite / les clients`,"quotas.perAccount":`Détail par compte`,"quotas.average":`Moyenne des comptes`,"quotas.windowsTitle":`Fenêtres de quota {provider} montrées dans Boite`,"quotas.windows":`Fenêtres`,"quotas.windowsLabel":`Fenêtres {provider} dans Boite`,"quotas.primary":`Principale`,"quotas.makePrimary":`Rendre principale`,"quotas.showWindow":`Afficher {label} dans Boite`,"quotas.noWindow":`Aucune fenêtre lue pour ce fournisseur.`,"quotas.defaultWindow":`Sans fenêtre principale, Boite met la semaine en avant.`,"quotas.googleVerify":`Google demande de vérifier ce compte.`,"quotas.resetAt":`Réinitialisation : {date}`,"quotas.notReported":`Quota non communiqué`,"quotas.unlimited":`Illimités`,"quotas.remaining":`restants`,"quotas.used":`{used} utilisés`,"quotas.usedOf":`{used} utilisés sur {limit}`,"quotas.refreshAccount":`Actualiser ce compte`,"quotas.refreshNamed":`Actualiser {name}`,"overview.description":`L'activité de vos abonnements`,"overview.connected":`Service connecté`,"overview.disconnected":`Connexion indisponible`,"overview.activeAccounts":`Comptes actifs`,"overview.ofAccounts":`sur {count} comptes`,"overview.requests":`Requêtes`,"overview.inFlight":`{count} en cours`,"overview.tokens":`Tokens échangés`,"overview.tokensDetail":`entrée et sortie`,"overview.cache":`Cache relu`,"overview.cacheDetail":`tokens réutilisés`,"overview.success":`Requêtes réussies`,"overview.errors":`{count} erreurs`,"overview.recent":`Activité récente`,"overview.recentDescription":`Les dernières requêtes traitées par douane`,"overview.viewAll":`Tout voir`,"overview.emptyTitle":`Votre activité apparaîtra ici`,"overview.emptyDescription":`Connectez un compte puis envoyez une première requête depuis votre outil.`,"overview.openQuickstart":`Ouvrir le démarrage rapide`,"table.model":`Modèle`,"table.provider":`Fournisseur`,"table.time":`Heure`,"table.status":`Statut`,"table.duration":`Durée`,"table.id":`Identifiant`,"table.context":`Contexte`,"table.available":`Disponible`,"table.modelAccount":`Modèle et compte`,"table.tokens":`Tokens`,"table.error":`Erreur`,"models.description":`Les modèles disponibles avec vos comptes`,"models.count":`{count} modèles`,"models.endpoint":`Adresse compatible OpenAI`,"models.search":`Rechercher un modèle`,"models.emptyTitle":`Aucun modèle disponible`,"models.emptyDescription":`Ajoutez un compte pour charger les modèles de son abonnement.`,"models.addAccount":`Ajouter un compte`,"models.noMatchTitle":`Aucun modèle correspondant`,"models.noMatchDescription":`Essayez un autre nom de modèle ou de fournisseur.`,"activity.title":`Journal des requêtes`,"activity.description":`Chaque appel, son compte et sa consommation`,"activity.count":`{count} dernières requêtes`,"activity.onlyErrors":`Afficher les erreurs seulement`,"activity.search":`Rechercher une requête`,"activity.searchPlaceholder":`Modèle, compte ou fournisseur`,"activity.noMatchTitle":`Aucune requête correspondante`,"activity.emptyTitle":`Aucune requête pour le moment`,"activity.noMatchDescription":`Modifiez votre recherche ou le filtre des erreurs.`,"activity.emptyDescription":`Les appels de vos outils apparaîtront ici avec leur résultat réel.`,"activity.unknownAccount":`Compte non communiqué`,"quickstart.chooseTool":`Choisir un outil`,"quickstart.openAccounts":`Ouvrir les comptes`,"quickstart.baseUrl":`Adresse de base`,"quickstart.copyUrl":`Copier l'adresse`,"quickstart.openaiHint1":`Choisissez le mode compatible OpenAI de l'outil. Comme clé d'API, entrez une clé client `,"quickstart.openaiHint2":` de la page Clients.`,"quickstart.chooseModel":`Choisir un modèle`,"quickstart.powershell":`Exécutez ces commandes dans PowerShell.`,"quickstart.copyClaude":`Copier la configuration Claude Code`,"quickstart.claudeHint":`Remplacez dk_... par une clé client de la page Clients. Claude Code enverra ses requêtes via le compte Claude connecté.`,"quickstart.connectClaude":`Connecter un compte Claude`,"strategy.round-robin.label":`Rotation`,"strategy.round-robin.desc":`Chaque compte actif reçoit les requêtes à tour de rôle.`,"strategy.fill-first.label":`Épuiser un compte`,"strategy.fill-first.desc":`Utilise le premier compte disponible avant de passer au suivant.`,"strategy.reset-first.label":`Reset le plus proche`,"strategy.reset-first.desc":`Utilise le compte dont le quota hebdomadaire se réinitialise en premier. Les autres servent seulement s’il est indisponible.`,"strategy.smart.label":`Répartition intelligente`,"strategy.smart.desc":`À moins de 48 h du reset, 90 % des nouvelles conversations utilisent ce compte jusqu’à épuisement.`,"settings.sessionNote":`Une conversation garde son compte tant qu'il reste disponible. Avec Reset le plus proche, elle revient au compte dont le reset est le plus proche dès qu'il est disponible.`,"settings.routing":`Répartition des requêtes`,"settings.routingDescription":`La règle par défaut s'applique aux fournisseurs sans choix particulier. Chaque choix est enregistré dès le clic.`,"settings.perProvider":`Par fournisseur`,"settings.perProviderDescription":`Adaptez la répartition à chacun de vos abonnements.`,"settings.defaultRule":`Règle par défaut`,"settings.noProviders":`Les fournisseurs apparaîtront lorsque le service sera connecté.`,"settings.refresh":`Actualisation et délais`,"settings.refreshDescription":`Les quotas et la sélection des comptes sont recalculés après chaque actualisation.`,"settings.refreshEvery":`Actualiser les quotas toutes les`,"settings.seconds":`secondes`,"settings.timeout":`Délai maximal d'une requête`,"settings.defaultProvider":`Fournisseur par défaut`,"settings.weekEnd":`Fin de semaine`,"settings.weekEndDescription":`Avant le reset hebdomadaire d'un compte, sa réserve et les parts des clients ne s'appliquent plus, pour que le reste serve. 0 les garde jusqu'au bout.`,"settings.freeBefore":`Lever les limites avant le reset`,"settings.hours":`heures`,"settings.autoProvider":`Sélection automatique`,"settings.saving":`Enregistrement...`,"settings.save":`Enregistrer les réglages`,"settings.language":`Langue`,"settings.languageDescription":`Langue de ce tableau de bord, enregistrée dans ce navigateur.`,"settings.languageAuto":`Automatique`,"settings.languageEnglish":`English`,"settings.languageFrench":`Français`,"backup.title":`Sauvegarde`,"backup.description":`Déplacez cette configuration vers une autre douane : réglages, modèles désactivés et tous les comptes.`,"backup.warning":`Le fichier contient des connexions et des clés actives. Les jetons de renouvellement changent à chaque usage : un compte ne fonctionne que dans une douane à la fois. Après une restauration, retirez-le ici. Gardez le fichier privé.`,"backup.export":`Exporter`,"backup.exporting":`Export...`,"backup.restore":`Restaurer`,"backup.restoring":`Restauration...`,"backup.confirm.one":`{name} contient {count} compte. Les comptes déjà présents sont mis à jour, les autres sont ajoutés.`,"backup.confirm.other":`{name} contient {count} comptes. Les comptes déjà présents sont mis à jour, les autres sont ajoutés.`,"backup.withSettings":`Appliquer aussi ses réglages et modèles désactivés`,"backup.confirmButton":`Restaurer les comptes`,"backup.notExport":`{name} n'est pas un export douane.`,"backup.tooLarge":`{name} dépasse la limite de 32 Mo.`,"nav.clients":`Clients`,"clients.enforcedInfo":`Chaque appel exige une clé client, donc chaque appel est compté pour son client.`,"clients.keys":`Clés et limites`,"stats.title":`Consommation`,"stats.info":`Appels et tokens de chaque client, tirés du journal des requêtes. Les tokens comptent l’entrée, lectures de cache comprises, et la sortie.`,"stats.period":`Période`,"stats.day":`24 h`,"stats.week":`7 jours`,"stats.month":`30 jours`,"stats.tokens":`Tokens`,"stats.calls":`Appels`,"stats.activeClients":`Clients actifs`,"stats.errors":`Erreurs`,"stats.chart":`Tokens par client sur la période`,"stats.none":`Aucun appel`,"stats.tokensUnit":`tokens`,"stats.callsUnit":`appels`,"stats.cache":`cache {value} %`,"stats.cacheInfo":`Part des tokens d’entrée lus dans le cache de prompt`,"stats.errorCount":`{count} erreurs`,"stats.noError":`aucune erreur`,"stats.idle":`Aucun appel sur la période`,"stats.model":`Modèle`,"stats.input":`Entrée`,"stats.output":`Sortie`,"stats.cacheRead":`Cache lu`,"stats.latency":`Temps moyen`,"stats.empty":`Aucun appel sur la période.`,"clients.title":`Clients`,"clients.new":`Nouveau client`,"clients.enforced":`Clé obligatoire`,"clients.emptyTitle":`Aucun client`,"clients.emptyDescription":`douane refuse tout appel tant qu'aucun client n'existe. Donnez à chaque Boite ou outil sa clé, les comptes qu'il peut utiliser et, si vous voulez, sa part de chaque quota.`,"clients.allAccounts":`Tous les comptes`,"clients.allAccountsHint":`Comptes connectés plus tard compris`,"clients.noAccess":`Aucun compte`,"clients.noShare":`Part commune seulement`,"clients.createdAt":`Créé le {date}`,"clients.ofShare":`{used} / {share} %`,"clients.highest":`Compte le plus utilisé : {name}`,"clients.notMeasured":`Pas encore mesuré`,"clients.rotate":`Nouvelle clé`,"clients.rotateNamed":`Nouvelle clé pour {name}`,"clients.delete":`Supprimer`,"clients.deleteNamed":`Supprimer {name}`,"clients.breakdown":`Répartition`,"clients.breakdownInfo":`Chaque hausse d'une fenêtre revient aux clients dont les appels ont fini sur ce compte, au prorata des tokens. Une hausse qu'aucun appel par douane n'explique compte comme hors douane.`,"clients.breakdownEmpty":`Aucune fenêtre mesurée depuis le premier client.`,"clients.noKey":`Sans clé`,"clients.former":`Clients supprimés`,"clients.outside":`Hors douane`,"clients.unexplained":`Non attribué`,"clients.used":`{value} % utilisés`,"clients.editTitle":`Modifier {name}`,"clients.name":`Nom`,"clients.namePlaceholder":`PC fixe`,"clients.access":`Comptes`,"clients.wholePool":`Tous les comptes {pool}, futurs compris`,"clients.shares":`Parts de quota`,"clients.sharesInfo":`Une part réserve ce pourcentage de chaque fenêtre (5 h, jour, semaine, mois) de chaque compte du fournisseur. Une part inutilisée se libère dans le dernier septième de la fenêtre. Ce qu'aucune part ne couvre est commun à tous les clients.`,"clients.shareOf":`Part de {pool}`,"clients.common":`Commun {value} %`,"clients.overbooked":`Plus de 100 %`,"clients.noPool":`Choisissez d'abord des comptes.`,"clients.shareInvalid":`Une part est un nombre supérieur à 0 et au plus 100.`,"clients.pickAccess":`Choisissez au moins un compte.`,"clients.create":`Créer`,"clients.keyTitle":`Clé de {name}`,"clients.keyOnce":`Affichée une seule fois. Copiez-la maintenant.`,"clients.keyBoite":`Collez-la dans Boite : Réglages, proxy d'abonnements, clé.`,"clients.copyKey":`Copier`,"clients.copied":`Copiée`,"clients.rotateTitle":`Nouvelle clé pour {name} ?`,"clients.rotateText":`La clé actuelle cesse de fonctionner tout de suite. Collez la nouvelle dans l'outil qui l'utilise.`,"clients.rotateButton":`Remplacer la clé`,"clients.deleteTitle":`Supprimer {name} ?`,"clients.deleteText":`Les appels avec sa clé sont refusés.`,"clients.deleteLast":`C'est le dernier client : douane refusera tout appel jusqu'à ce que vous en créiez un autre.`,"clients.deleteButton":`Supprimer`,"notice.clientCreated":`Client créé.`,"notice.clientSaved":`Client enregistré.`,"notice.clientDeleted":`Client supprimé.`,"notice.keyReplaced":`Clé remplacée.`,"activity.client":`Client {name}`,"quickstart.keyRequired":`Aucun client pour l'instant : créez-en un sur la page Clients d'abord. douane refuse tout appel sans clé client.`},ut=`douane-language`,dt={en:ct,fr:lt},ft={en:`en-US`,fr:`fr-FR`};function pt(){try{let e=localStorage.getItem(ut);return e===`en`||e===`fr`?e:`auto`}catch{return`auto`}}function mt(){if(typeof navigator>`u`)return`en`;let e=navigator.languages?.length?navigator.languages:[navigator.language];for(let t of e){let e=t?.toLowerCase()??``;if(e.startsWith(`fr`))return`fr`;if(e.startsWith(`en`))return`en`}return`en`}var ht=e({choice:typeof window>`u`?`auto`:pt(),detected:mt()});function gt(){return ht.choice}function _t(){return ht.choice===`auto`?ht.detected:ht.choice}function vt(){return ft[_t()]}function yt(){typeof document<`u`&&(document.documentElement.lang=_t())}function bt(e){ht.choice=e;try{e===`auto`?localStorage.removeItem(ut):localStorage.setItem(ut,e)}catch{}yt()}typeof window<`u`&&(yt(),window.addEventListener(`languagechange`,()=>{ht.detected=mt(),yt()}));function Q(e,t){let n=dt[_t()][e]??ct[e];return t?n.replace(/\{(\w+)\}/g,(e,n)=>n in t?String(t[n]):e):n}var xt=d(`
`),St=d(`
`);function Ct(e,n){E(n,!0);let r=I(n,`compact`,3,!1),i=W(()=>n.label??Q(`meter.left`)),a=W(()=>n.value==null?null:Math.min(100,Math.max(0,n.value)));var o=St();let s;var c=S(o),l=S(c),u=C(l,!0),d=m(l),f=C(d,!0);V(c);var p=m(c,2),h=S(p),g=e=>{var t=xt();let n,r;b(()=>{n=D(t,1,`meter-fill svelte-1dmbtuk`,null,n,{low:X(a)<25,medium:X(a)>=25&&X(a)<60}),r=oe(t,``,r,{width:`${X(a)??``}%`})}),R(e,t)};z(h,e=>{X(a)!=null&&e(g)}),V(p),V(o),b((e,n)=>{s=D(o,1,`quota-meter svelte-1dmbtuk`,null,s,{compact:r()}),t(u,X(i)),t(f,e),K(p,`aria-label`,X(i)),K(p,`aria-valuenow`,X(a)??void 0),K(p,`aria-valuetext`,n)},[()=>X(a)==null?Q(`meter.unavailable`):Q(`common.percent`,{value:Math.round(X(a))}),()=>X(a)==null?Q(`meter.unavailable`):Q(`meter.valueLeft`,{value:Math.round(X(a))})]),R(e,o),L()}var wt=new Set([`$$slots`,`$$events`,`$$legacy`]);function Tt(e,t){let n=T(t,wt),r=[[`path`,{d:`M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z`}],[`path`,{d:`m15 5 4 4`}]];Z(e,G({name:`pencil`},()=>n,{get iconNode(){return r}}))}var Et=new Set([`$$slots`,`$$events`,`$$legacy`]);function Dt(e,t){let n=T(t,Et),r=[[`path`,{d:`M20 6 9 17l-5-5`}]];Z(e,G({name:`check`},()=>n,{get iconNode(){return r}}))}var Ot=[`chat`,`responses`,`messages`,``];function kt(e){return e===``?Q(`dialect.client`):{chat:`Chat Completions`,responses:`Responses`,messages:`Messages (Anthropic)`}[e]}var At=[`five-hour`,`daily`,`weekly`,`monthly`];function jt(e){return Q(`reserveWindow.${e}`)}function Mt(e){return{"five-hour":`five-hour`,daily:`daily`,weekly:`weekly`,"seven-day":`weekly`,seven_day:`weekly`,monthly:`monthly`}[e]??null}var Nt=class extends Error{status;constructor(e,t){super(t),this.status=e}};async function Pt(e,t){let n=await fetch(`/admin/api${e}`,{...t,headers:{...t?.body?{"content-type":`application/json`}:{},...t?.headers}});if(!n.ok){let e=Q(`api.serverStatus`,{status:n.status});try{let t=await n.json();e=t.errors?.length?zt(t.errors):typeof t.error==`string`?t.error:t.error?.message??t.message??e}catch{}throw new Nt(n.status,e)}return n.status===204?void 0:n.json()}var $={status:()=>Pt(`/summary`),providers:()=>Pt(`/providers`),accounts:()=>Pt(`/accounts`),quotas:()=>Pt(`/quotas`),models:()=>Pt(`/models`),calls:()=>Pt(`/calls?limit=100`),settings:()=>Pt(`/settings`),refreshQuotas:e=>Pt(`/quotas/refresh`,{method:`POST`,body:JSON.stringify({account_id:e})}),importAccounts:e=>Pt(`/accounts/import`,{method:`POST`,body:JSON.stringify({files:e})}),importCredential:e=>Pt(`/accounts/import`,{method:`POST`,body:JSON.stringify(e)}),updateEndpoint:(e,t)=>Pt(`/accounts/${encodeURIComponent(e)}`,{method:`PATCH`,body:JSON.stringify(t)}),setAccountEnabled:(e,t)=>Pt(`/accounts/${encodeURIComponent(e)}`,{method:`PATCH`,body:JSON.stringify({enabled:t})}),renameAccount:(e,t)=>Pt(`/accounts/${encodeURIComponent(e)}`,{method:`PATCH`,body:JSON.stringify({name:t})}),setAccountReserve:(e,t,n)=>Pt(`/accounts/${encodeURIComponent(e)}`,{method:`PATCH`,body:JSON.stringify({reserve_percent:t,reserve_windows:n})}),accountResets:e=>Pt(`/accounts/${encodeURIComponent(e)}/resets`),redeemReset:(e,t)=>Pt(`/accounts/${encodeURIComponent(e)}/resets/redeem`,{method:`POST`,body:JSON.stringify({confirmation:!0,request_id:t})}),deleteAccount:e=>Pt(`/accounts/${encodeURIComponent(e)}`,{method:`DELETE`}),startOAuth:e=>Pt(`/oauth/start`,{method:`POST`,body:JSON.stringify({provider:e})}),oauth:e=>Pt(`/oauth/${encodeURIComponent(e)}`),oauthCallback:(e,t,n)=>Pt(`/oauth/callback`,{method:`POST`,body:JSON.stringify({id:e,code:t,state:n})}),setModelEnabled:(e,t)=>Pt(`/models/${encodeURIComponent(e)}`,{method:`PATCH`,body:JSON.stringify({enabled:t})}),settingsSave:e=>Pt(`/settings`,{method:`PATCH`,body:JSON.stringify(e)}),clients:()=>Pt(`/clients`),clientStats:e=>Pt(`/clients/stats?hours=${e}`),createClient:e=>Pt(`/clients`,{method:`POST`,body:JSON.stringify(e)}),updateClient:(e,t)=>Pt(`/clients/${encodeURIComponent(e)}`,{method:`PATCH`,body:JSON.stringify(t)}),deleteClient:e=>Pt(`/clients/${encodeURIComponent(e)}`,{method:`DELETE`}),exportConfig:()=>Pt(`/export`),restore:(e,t)=>Pt(`/restore`,{method:`POST`,body:JSON.stringify({bundle:e,settings:t})})},Ft={codex:`Codex`,claude:`Claude`,gemini:`Gemini`,antigravity:`Antigravity`,qwen:`Qwen`,kimi:`Kimi`,copilot:`GitHub Copilot`,iflow:`iFlow`,opencode_go:`OpenCode Go`,xai:`Grok`,grok:`Grok`,openai_compatible:`OpenAI-compatible`};function It(e){return e.route||e.provider}function Lt(e){let t=new Map;for(let n of e){let e=It(n),r=t.get(e)??{id:e,provider:n.provider,name:n.route?n.name:Ut(n.provider),accounts:[]};r.accounts.push(n),t.set(e,r)}return[...t.values()]}function Rt(e,t=!1){return t?e:e.replace(/[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}/gi,Q(`private.account`))}function zt(e){return e.map(e=>typeof e==`string`?e:e.name?Q(`api.errorPrefix`,{name:Rt(e.name),error:e.error}):e.error).join(` `)}var Bt={ready:`status.active`,active:`status.active`,disabled:`common.disabled`,exhausted:`status.exhausted`,cooldown:`status.cooldown`,expired:`status.expired`,error:`status.check`};function Vt(e){return Q(e.enabled?Bt[e.status]??`status.check`:`common.disabled`)}function Ht(e){return e.enabled&&(!!e.last_error||![`ready`,`active`].includes(e.status))}function Ut(e,t=e){return e===`openai_compatible`?Q(`provider.openaiCompatible`):Ft[e]??t}function Wt(e){return new Intl.NumberFormat(vt(),{maximumFractionDigits:1}).format(e)}function Gt(e){return e==null?`-`:new Intl.NumberFormat(vt(),{notation:e>=1e4?`compact`:`standard`,maximumFractionDigits:1}).format(e)}function Kt(){return _t()===`en`?`numeric`:`2-digit`}function qt(e){return e?new Intl.DateTimeFormat(vt(),{day:`2-digit`,month:`short`,hour:Kt(),minute:`2-digit`}).format(new Date(e)):`-`}function Jt(e){if(!e)return Q(`date.unknown`);let t=new Date(e);if(Number.isNaN(t.getTime()))return Q(`date.unknown`);let n=Math.abs(t.getTime()-Date.now())>6048e5;return new Intl.DateTimeFormat(vt(),{weekday:`long`,...n?{day:`numeric`,month:`short`}:{},hour:Kt(),minute:`2-digit`}).format(t)}function Yt(e,t){return e==null?Q(`credit.unknown`):t===`USD`?new Intl.NumberFormat(vt(),{style:`currency`,currency:`USD`,maximumFractionDigits:2}).format(e):/^[A-Z]{3}_minor$/.test(t)?new Intl.NumberFormat(vt(),{style:`currency`,currency:t.slice(0,3),maximumFractionDigits:2}).format(e/100):`${new Intl.NumberFormat(vt(),{maximumFractionDigits:2}).format(e)} ${t===`credits`?Q(`credit.credits`):t}`}var Xt={weekly:`usage.weekly`,"codex weekly":`usage.weekly`,"grok weekly":`usage.weekly`,monthly:`usage.monthly`,"5 hours":`usage.fiveHours`,"five hour":`usage.fiveHours`,"extra usage":`usage.extra`,"additional usage":`usage.extra`,"codex credits":`usage.codexCredits`,"credit balance":`usage.creditBalance`,"premium requests":`usage.premiumRequests`,chat:`usage.chat`,completions:`usage.completions`};function Zt(e){let t=Xt[e.toLowerCase()];return t?Q(t):e}function Qt(){if(typeof crypto.randomUUID==`function`)return crypto.randomUUID();let e=crypto.getRandomValues(new Uint8Array(16));e[6]=e[6]&15|64,e[8]=e[8]&63|128;let t=Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(``);return`${t.slice(0,8)}-${t.slice(8,12)}-${t.slice(12,16)}-${t.slice(16,20)}-${t.slice(20)}`}var $t=d(``),en=d(`
`),tn=d(``);function nn(e,n){E(n,!0);let r=J(!1),i=J(``),a=J(!1),o=J(``),s=J(void 0);async function c(){M(i,n.account.name,!0),M(o,``),M(r,!0),await y(),X(s)?.focus(),X(s)?.select()}async function d(){if(X(a)||n.busy)return;let e=X(i).trim();if(!e||e.length>120||/[\x00-\x1f\x7f]/.test(e))M(o,Q(`name.invalid`),!0);else if(e===n.account.name)M(r,!1);else{M(a,!0),M(o,``);try{await n.rename(n.account,e),M(r,!1)}catch(e){M(o,Rt(e.message),!0)}finally{M(a,!1)}}}var f=u(),p=x(f),g=e=>{var c=en(),u=S(c);N(u),O(u,e=>M(s,e),()=>X(s));var f=m(u,2),p=S(f);Dt(S(p),{size:20}),V(p);var g=m(p);Pe(S(g),{size:20}),V(g),V(f);var _=m(f,2),v=e=>{var n=$t(),r=C(n,!0);b(()=>t(r,X(o))),R(e,n)};z(_,e=>{X(o)&&e(v)}),V(c),b((e,t,r,i,o)=>{K(u,`aria-label`,e),u.disabled=X(a),K(p,`aria-label`,t),K(p,`title`,r),p.disabled=X(a)||!!n.busy,K(g,`aria-label`,i),K(g,`title`,o),g.disabled=X(a)},[()=>Q(`name.input`),()=>Q(`name.save`),()=>Q(`common.save`),()=>Q(`name.cancel`),()=>Q(`common.cancel`)]),h(`submit`,c,e=>{e.preventDefault(),d()}),l(`keydown`,u,e=>{e.key===`Escape`&&!X(a)&&M(r,!1)}),Y(u,()=>X(i),e=>M(i,e)),l(`click`,g,()=>M(r,!1)),R(e,c)},_=e=>{var r=tn(),i=S(r),a=C(i,!0);Tt(m(i),{size:15}),V(r),b((e,i)=>{K(r,`title`,e),r.disabled=!!n.busy,t(a,i)},[()=>Q(`name.rename`),()=>Rt(n.account.name)]),l(`click`,r,c),R(e,r)};z(p,e=>{X(r)?e(g):e(_,-1)}),R(e,f),L()}s([`keydown`,`click`]);var rn=new Set([`$$slots`,`$$events`,`$$legacy`]);function an(e,t){let n=T(t,rn),r=[[`path`,{d:`M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0`}],[`circle`,{cx:`12`,cy:`12`,r:`3`}]];Z(e,G({name:`eye`},()=>n,{get iconNode(){return r}}))}var on=new Set([`$$slots`,`$$events`,`$$legacy`]);function sn(e,t){let n=T(t,on),r=[[`path`,{d:`M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49`}],[`path`,{d:`M14.084 14.158a3 3 0 0 1-4.242-4.242`}],[`path`,{d:`M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143`}],[`path`,{d:`m2 2 20 20`}]];Z(e,G({name:`eye-off`},()=>n,{get iconNode(){return r}}))}var cn=d(``);function ln(e,n){E(n,!0);let r=J(!1);var i=cn(),a=S(i);let o;var s=C(a,!0),c=m(a,2),u=e=>{sn(e,{size:16})},d=e=>{an(e,{size:16})};z(c,e=>{X(r)?e(u):e(d,-1)}),V(i),b((e,c)=>{K(i,`aria-label`,e),K(i,`aria-pressed`,X(r)),K(i,`title`,c),K(a,`aria-hidden`,!X(r)),o=D(a,1,`svelte-1n2y5u`,null,o,{blurred:!X(r)}),t(s,n.email)},[()=>Q(X(r)?`email.hide`:`email.show`),()=>Q(X(r)?`email.hide`:`email.show`)]),l(`click`,i,()=>M(r,!X(r))),R(e,i),L()}s([`click`]);var un=d(``),dn=d(` `),fn=d(``),pn=d(``),mn=d(`

`),hn=d(`

`,1),gn=d(`

`),_n=d(`

`,1),vn=d(`

`,1);function yn(e,n){E(n,!0);let r=J(null),i=J(!1),s=J(!1),c=J(``),d=J(``),f=J(!1),p=``,g=J(void 0),_=W(()=>n.account.enabled&&[`claude`,`codex`].includes(n.account.provider)),v=W(()=>`douane-reset-${n.account.id}`),y=W(()=>X(r)?.status===`ready`&&(X(r).available_count??0)>0);async function w(){if(X(_)&&!X(i)){M(i,!0),M(c,``);try{M(r,await $.accountResets(n.account.id)),X(r).pending_request_id&&(sessionStorage.setItem(X(v),X(r).pending_request_id),M(f,!0))}catch(e){M(c,Rt(e.message),!0)}finally{M(i,!1)}}}a(()=>{X(_)?o(()=>{M(f,!!sessionStorage.getItem(X(v))),w()}):M(r,null)});function T(){p=X(r)?.pending_request_id??sessionStorage.getItem(X(v))??Qt(),M(c,``),M(d,``),X(g)?.showModal()}async function D(){if(!(X(s)||n.busy)){M(s,!0),M(c,``);try{sessionStorage.setItem(X(v),p),M(f,!0);let e={reset:`resets.reset`,already_redeemed:`resets.alreadyRedeemed`,nothing_to_reset:`resets.nothingToReset`,no_credit:`resets.noCredit`}[(await $.redeemReset(n.account.id,p)).outcome];if(!e)throw Error(Q(`resets.unconfirmed`));M(d,Q(e),!0),sessionStorage.removeItem(X(v)),M(f,!1),await w(),await n.updated()}catch(e){M(c,Rt(e.message),!0)}finally{M(s,!1)}}}var k=u(),A=x(k),j=e=>{var a=vn(),o=x(a),u=S(o),p=e=>{var a=un(),o=S(a);Ae(o,{size:17});var s=m(o,1,!0);V(a),b(e=>{a.disabled=!!n.busy||X(i),t(s,e)},[()=>X(f)?Q(`resets.resume`):Q(`resets.button`,{count:X(r)?.available_count??0})]),l(`click`,a,T),R(e,a)},_=e=>{var n=dn(),r=C(n,!0);b(e=>t(r,e),[()=>Q(`resets.checking`)]),R(e,n)},v=e=>{var n=dn(),r=C(n,!0);b(e=>t(r,e),[()=>Q(`resets.none`)]),R(e,n)},E=e=>{var r=fn(),i=C(r,!0);b(e=>{r.disabled=!!n.busy,t(i,e)},[()=>Q(`resets.check`)]),l(`click`,r,w),R(e,r)};z(u,e=>{X(y)||X(f)?e(p):X(i)?e(_,1):X(r)?.status===`ready`?e(v,2):X(r)?.status!==`unsupported`&&e(E,3)});var k=m(u,2),A=e=>{var n=pn(),r=C(n,!0);b(()=>t(r,X(c))),R(e,n)};z(k,e=>{X(c)&&!X(g)?.open&&e(A)});var j=m(k,2),N=e=>{var n=mn(),i=C(n,!0);b(e=>t(i,e),[()=>Rt(X(r).error)]),R(e,n)};z(j,e=>{X(r)?.error&&!X(c)&&X(r).status!==`unsupported`&&e(N)}),V(o);var P=m(o,2),F=S(P),I=S(F),L=S(I),B=C(L,!0),H=m(L);Pe(S(H),{size:22}),V(H),V(I);var U=m(I,2),W=C(U,!0),G=m(U,2),ee=e=>{var n=hn(),r=x(n),i=C(r,!0),a=m(r),o=S(a),s=C(o,!0);V(a),b(e=>{t(i,X(d)),t(s,e)},[()=>Q(`common.close`)]),l(`click`,o,()=>X(g)?.close()),R(e,n)},te=e=>{var i=_n(),a=x(i),o=C(a,!0),u=m(a,2),d=e=>{var n=gn(),i=C(n,!0);b(e=>t(i,e),[()=>Q(`resets.expiresFirst`,{date:qt(X(r).next_expires_at)})]),R(e,n)};z(u,e=>{X(r)?.next_expires_at&&e(d)});var p=m(u,2),h=e=>{var n=gn(),r=C(n,!0);b(e=>t(r,e),[()=>Q(`resets.pending`)]),R(e,n)};z(p,e=>{X(f)&&e(h)});var _=m(p,2),v=e=>{var n=pn(),r=C(n,!0);b(()=>t(r,X(c))),R(e,n)};z(_,e=>{X(c)&&e(v)});var y=m(_,2),w=S(y),T=C(w,!0),E=m(w),O=C(E,!0);V(y),b((e,r,i)=>{t(o,e),w.disabled=X(s),t(T,r),E.disabled=X(s)||!!n.busy,t(O,i)},[()=>Q(`resets.warning`),()=>Q(`common.cancel`),()=>X(s)?Q(`resets.running`):X(f)?Q(`resets.retrySame`):Q(`resets.use`)]),l(`click`,w,()=>X(g)?.close()),l(`click`,E,D),R(e,i)};z(G,e=>{X(d)?e(ee):e(te,-1)}),V(F),V(P),O(P,e=>M(g,e),()=>X(g)),b((e,n,r)=>{t(B,e),K(H,`aria-label`,n),H.disabled=X(s),t(W,r)},[()=>Q(`resets.title`),()=>Q(`resets.closeConfirmation`),()=>Rt(n.account.name)]),h(`cancel`,P,e=>{X(s)&&e.preventDefault()}),l(`click`,H,()=>X(g)?.close()),R(e,a)};z(A,e=>{X(_)&&e(j)}),R(e,k),L()}s([`click`]);var bn=new Set([`$$slots`,`$$events`,`$$legacy`]);function xn(e,t){let n=T(t,bn),r=[[`polyline`,{points:`22 12 16 12 14 15 10 15 8 12 2 12`}],[`path`,{d:`M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z`}]];Z(e,G({name:`inbox`},()=>n,{get iconNode(){return r}}))}var Sn=d(``),Cn=d(`

`);function wn(e,n){var r=Cn(),i=S(r);xn(S(i),{size:22}),V(i);var a=m(i,2),o=C(a,!0),s=m(a),c=C(s,!0),u=m(s,2),d=e=>{var r=Sn(),i=C(r,!0);b(()=>t(i,n.action)),l(`click`,r,function(...e){n.onclick?.apply(this,e)}),R(e,r)};z(u,e=>{n.action&&n.onclick&&e(d)}),V(r),b(()=>{t(o,n.title),t(c,n.description)}),R(e,r)}s([`click`]);var Tn=d(``),En=d(`
`),Dn=d(`
`),On=d(``,1),kn=d(`
`),An=d(`

`),jn=d(`

`),Mn=d(`
`),Nn=d(``),Pn=d(` `),Fn=d(`

`),In=d(`

`),Ln=d(`

`),Rn=d(` `),zn=d(`

`),Bn=d(`
`),Vn=d(`
`),Hn=d(`
`),Un=d(`

`),Wn=d(`
`),Gn=d(`

`,1);function Kn(e,n){E(n,!0);let r=I(n,`providers`,19,()=>[]),a=J(`all`),o=J(``),s=J(`name`),c=J(null),d=[`claude`,`codex`,`opencode_go`,`xai`],f=W(()=>new Set(r().filter(e=>!e.quota).map(e=>e.id))),p=W(()=>[...new Set(n.accounts.map(e=>e.provider).filter(e=>!X(f).has(e)))].sort((e,t)=>(d.indexOf(e)<0?99:d.indexOf(e))-(d.indexOf(t)<0?99:d.indexOf(t))||Ut(e).localeCompare(Ut(t)))),h=W(()=>n.accounts.filter(e=>(X(a)===`all`||!X(p).includes(X(a))||e.provider===X(a))&&`${e.name} ${e.email??``}`.toLowerCase().includes(X(o).toLowerCase())).sort((e,t)=>X(s)===`remaining`?(A(e.id)??101)-(A(t.id)??101):e.name.localeCompare(t.name))),g=W(()=>X(p).map(e=>({id:e,accounts:X(h).filter(t=>t.provider===e)})).filter(e=>e.accounts.length));function _(e){return n.settings?.quota_display?.[e]??`accounts`}async function v(e,t){await n.setQuotaDisplay(e,t.value),t.value=_(e)}function y(e){let t=new Set(n.accounts.filter(t=>t.provider===e).map(e=>e.id)),r=new Map;for(let e of n.quotas)if(t.has(e.account_id))for(let t of e.windows)r.has(t.id)||r.set(t.id,t);return[...r.values()]}function T(e){let t=n.settings?.quota_windows?.[e],r=t?.primary??null;return{hidden:(t?.hidden??[]).filter(e=>e!==r),primary:r}}function O(e,t){let r=T(e),i=r.hidden.includes(t)?r.hidden.filter(e=>e!==t):[...r.hidden,t];return n.setQuotaWindows(e,{...r,hidden:i})}function k(e,t){let r=T(e);return n.setQuotaWindows(e,{hidden:r.hidden.filter(e=>e!==t),primary:t})}function A(e){let t=n.quotas.find(t=>t.account_id===e)?.windows.map(e=>e.remaining_percent).filter(e=>e!=null)??[];return t.length?Math.min(...t):null}var j=Gn(),F=x(j),B=S(F),H=C(B,!0),U=m(B,2),G=S(U),ee=S(G);{let e=W(()=>n.busy===`quotas`?`spinning`:``);Ae(ee,{size:18,get class(){return X(e)}})}var te=m(ee,1,!0);V(G);var q=m(G),ne=S(q);Be(ne,{size:20});var ie=m(ne,1,!0);V(q),V(U),V(F);var ae=m(F,2),oe=e=>{var r=En(),o=S(r);let s;var c=S(o),u=m(c),d=C(u,!0);V(o);var f=m(o,2);i(f,16,()=>X(p),e=>e,(e,r)=>{var i=Tn();let o;var s=S(i);st(s,{get provider(){return r},size:22});var c=m(s,1,!0),u=m(c),d=C(u,!0);V(i),b((e,n)=>{K(i,`aria-pressed`,X(a)===r),o=D(i,1,``,null,o,{active:X(a)===r}),t(c,e),t(d,n)},[()=>Ut(r),()=>n.accounts.filter(e=>e.provider===r).length]),l(`click`,i,()=>M(a,r,!0)),R(e,i)}),V(r),b((e,n,i)=>{K(r,`aria-label`,e),K(o,`aria-pressed`,X(a)===`all`),s=D(o,1,``,null,s,{active:X(a)===`all`}),t(c,`${n??``} `),t(d,i)},[()=>Q(`quotas.filter`),()=>Q(`quotas.all`),()=>n.accounts.filter(e=>X(p).includes(e.provider)).length]),l(`click`,o,()=>M(a,`all`)),R(e,r)};z(ae,e=>{X(p).length>1&&e(oe)});var se=m(ae,2),ce=S(se),le=S(ce);Re(le,{size:18});var ue=m(le);N(ue),V(ce);var de=m(ce),fe=S(de),Z=C(fe,!0);fe.value=fe.__value=`name`;var pe=m(fe),me=C(pe,!0);pe.value=pe.__value=`remaining`,V(de),w(de),V(se);var he=m(se,2),ge=e=>{var t=Dn(),r=S(t);{let e=W(()=>Q(`common.noAccountConnected`)),t=W(()=>Q(`quotas.emptyDescription`)),i=W(()=>Q(`common.connectAccount`));wn(r,{get title(){return X(e)},get description(){return X(t)},get action(){return X(i)},get onclick(){return n.connect}})}V(t),R(e,t)},_e=e=>{var t=Dn(),n=S(t);{let e=W(()=>Q(`common.noMatchingAccount`)),t=W(()=>Q(`common.tryOtherName`));wn(n,{get title(){return X(e)},get description(){return X(t)}})}V(t),R(e,t)},ve=e=>{var r=Wn();i(r,21,()=>X(g),e=>e.id,(e,r)=>{var a=Un(),o=S(a),s=S(o);st(s,{get provider(){return X(r).id},size:29});var d=m(s),f=C(d,!0),p=m(d),h=C(p,!0),g=m(p),E=e=>{var i=On(),a=x(i),o=S(a),s=C(o,!0),u=m(o),d=S(u),f=C(d,!0);d.value=d.__value=`accounts`;var p=m(d),h=C(p,!0);p.value=p.__value=`average`,V(u);var g;w(u),V(a);var y=m(a),T=S(y);We(T,{size:16});var E=m(T,1,!0);V(y),b((e,i,o,l,d,p,m)=>{K(a,`title`,e),t(s,i),u.disabled=!!n.busy,t(f,o),t(h,l),g!==(g=d)&&(u.value=(u.__value=g)??``,re(u,g)),K(y,`aria-expanded`,X(c)===X(r).id),K(y,`aria-controls`,`windows-${X(r).id??``}`),K(y,`title`,p),t(E,m)},[()=>Q(`quotas.displayTitle`,{provider:Ut(X(r).id)}),()=>Q(`quotas.displayLabel`),()=>Q(`quotas.perAccount`),()=>Q(`quotas.average`),()=>_(X(r).id),()=>Q(`quotas.windowsTitle`,{provider:Ut(X(r).id)}),()=>Q(`quotas.windows`)]),l(`change`,u,e=>v(X(r).id,e.currentTarget)),l(`click`,y,()=>M(c,X(c)===X(r).id?null:X(r).id,!0)),R(e,i)};z(g,e=>{n.settings&&e(E)}),V(o);var A=m(o,2),j=e=>{let a=W(()=>T(X(r).id));var o=Mn(),s=S(o);i(s,17,()=>y(X(r).id),e=>e.id,(e,i)=>{let o=W(()=>X(a).primary===X(i).id),s=W(()=>X(o)||!X(a).hidden.includes(X(i).id));var c=kn();let u;var d=S(c),f=C(d,!0),p=m(d,2);let h;var g=S(p);Ke(g,{size:16});var _=m(g,1,!0);V(p);var v=m(p,2);let y;V(c),b((e,r,i)=>{u=D(c,1,`window-choice svelte-137c7x1`,null,u,{"hidden-window":!X(s)}),t(f,e),h=D(p,1,`primary-choice svelte-137c7x1`,null,h,{on:X(o)}),K(p,`aria-pressed`,X(o)),p.disabled=!!n.busy,t(_,r),y=D(v,1,`switch`,null,y,{on:X(s)}),K(v,`aria-checked`,X(s)),K(v,`aria-label`,i),v.disabled=!!n.busy||X(o)},[()=>Zt(X(i).label),()=>Q(X(o)?`quotas.primary`:`quotas.makePrimary`),()=>Q(`quotas.showWindow`,{label:Zt(X(i).label)})]),l(`click`,p,()=>k(X(r).id,X(o)?null:X(i).id)),l(`click`,v,()=>O(X(r).id,X(i).id)),R(e,c)},e=>{var n=An(),r=C(n,!0);b(e=>t(r,e),[()=>Q(`quotas.noWindow`)]),R(e,n)});var c=m(s,2),u=e=>{var n=jn(),r=C(n,!0);b(e=>t(r,e),[()=>Q(`quotas.defaultWindow`)]),R(e,n)},d=W(()=>!X(a).primary&&y(X(r).id).length);z(c,e=>{X(d)&&e(u)}),V(o),b(e=>{K(o,`id`,`windows-${X(r).id??``}`),K(o,`aria-label`,e)},[()=>Q(`quotas.windowsLabel`,{provider:Ut(X(r).id)})]),R(e,o)};z(A,e=>{n.settings&&X(c)===X(r).id&&e(j)});var N=m(A,2);i(N,21,()=>X(r).accounts,e=>e.id,(e,r)=>{let a=W(()=>n.quotas.find(e=>e.account_id===X(r).id)),o=W(()=>X(a)?.subscription??X(r).subscription);var s=Hn();let c;var d=S(s),f=S(d);nn(f,{get account(){return X(r)},get rename(){return n.rename},get busy(){return n.busy}});var p=m(f),h=e=>{var n=Nn(),i=C(n,!0);b(()=>t(i,X(o)?.label??X(r).plan)),R(e,n)};z(p,e=>{(X(o)?.label||X(r).plan)&&e(h)});var g=m(p),_=e=>{ln(e,{get email(){return X(r).email}})};z(g,e=>{X(r).email&&e(_)}),yn(m(g),{get account(){return X(r)},get busy(){return n.busy},get updated(){return n.resetUpdated}}),V(d);var v=m(d,2),y=S(v),w=e=>{var n=In(),i=S(n),o=C(i,!0),s=m(i),c=e=>{var n=Pn(),i=S(n,!0);He(m(i),{size:16}),V(n),b((e,r)=>{K(n,`href`,e),t(i,r)},[()=>`/admin/api/accounts/${encodeURIComponent(X(r).id)}/verification`,()=>Q(`common.verifyGoogle`)]),R(e,n)},l=e=>{var n=Fn(),r=C(n,!0);b(e=>t(r,e),[()=>Q(`common.openAntigravity`)]),R(e,n)};z(s,e=>{X(a).verification_available?e(c):e(l,-1)}),V(n),b(e=>t(o,e),[()=>Q(`quotas.googleVerify`)]),R(e,n)};z(y,e=>{X(a)?.verification_required&&e(w)});var T=m(y,2),E=S(T),O=e=>{var n=u(),r=x(n);i(r,17,()=>X(a).windows,e=>e.id,(e,n)=>{var r=Ln(),i=S(r);{let e=W(()=>Zt(X(n).label));Ct(i,{get value(){return X(n).remaining_percent},get label(){return X(e)}})}var a=m(i),o=S(a);Ae(o,{size:16});var s=m(o,1,!0);V(a),V(r),b((e,n)=>{K(a,`title`,e),t(s,n)},[()=>X(n).reset_at?Q(`quotas.resetAt`,{date:qt(X(n).reset_at)}):void 0,()=>Jt(X(n).reset_at)]),R(e,r)}),R(e,n)},k=e=>{var n=An(),r=C(n,!0);b(e=>t(r,e),[()=>X(a)?.error?Rt(X(a).error):Q(`quotas.notReported`)]),R(e,n)};z(E,e=>{X(a)?.windows.length?e(O):X(a)?.verification_required||e(k,1)}),V(T);var A=m(T,2),j=e=>{var n=Vn();i(n,21,()=>X(a).credits,e=>e.id,(e,n)=>{var r=Bn(),i=S(r),a=S(i),o=C(a,!0),s=m(a),c=S(s,!0),l=m(c),u=e=>{var n=Rn(),r=C(n,!0);b(e=>t(r,e),[()=>` ${Q(`quotas.remaining`)}`]),R(e,n)};z(l,e=>{X(n).enabled!==!1&&X(n).remaining!=null&&e(u)}),V(s),V(i);var d=m(i),f=e=>{var r=Fn(),i=C(r,!0);b(e=>t(i,e),[()=>X(n).limit==null?Q(`quotas.used`,{used:Yt(X(n).used,X(n).unit)}):Q(`quotas.usedOf`,{used:Yt(X(n).used,X(n).unit),limit:Yt(X(n).limit,X(n).unit)})]),R(e,r)};z(d,e=>{X(n).used!=null&&e(f)});var p=m(d),h=e=>{var r=zn(),i=S(r);Ae(i,{size:16});var a=m(i,1,!0);V(r),b(e=>t(a,e),[()=>Jt(X(n).reset_at)]),R(e,r)};z(p,e=>{X(n).reset_at&&e(h)}),V(r),b((e,n)=>{t(o,e),t(c,n)},[()=>Zt(X(n).label),()=>X(n).enabled===!1?Q(`common.disabled`):X(n).unlimited?Q(`quotas.unlimited`):Yt(X(n).remaining,X(n).unit)]),R(e,r)}),V(n),R(e,n)};z(A,e=>{X(a)?.credits?.length&&e(j)}),V(v);var M=m(v,2),N=S(M);let P;var F=m(S(N),1,!0);V(N);var I=m(N);Ae(S(I),{size:19}),V(I),V(M),V(s),b((e,i,a,o)=>{c=D(s,1,`quota-row svelte-137c7x1`,null,c,{"disabled-row":!X(r).enabled}),P=D(N,1,`state-badge`,null,P,{warning:e,inactive:!X(r).enabled}),t(F,i),I.disabled=!!n.busy,K(I,`title`,a),K(I,`aria-label`,o)},[()=>!!X(a)?.error||Ht(X(r))||X(r).enabled&&!!X(r).reserve_reached,()=>X(r).enabled?X(a)?.error?Q(`status.check`):X(r).reserve_reached&&[`ready`,`active`].includes(X(r).status)?Q(`status.reserveReached`):Vt(X(r)):Q(`common.disabled`),()=>Q(`quotas.refreshAccount`),()=>Q(`quotas.refreshNamed`,{name:Rt(X(r).name)})]),l(`click`,I,()=>n.refresh(X(r).id)),R(e,s)}),V(N),V(a),b((e,n,r)=>{K(a,`aria-label`,e),t(f,n),t(h,r)},[()=>Q(`quotas.group`,{provider:Ut(X(r).id)}),()=>Ut(X(r).id),()=>Q(X(r).accounts.length===1?`common.accountCount.one`:`common.accountCount.other`,{count:X(r).accounts.length})]),R(e,a)}),V(r),R(e,r)};z(he,e=>{n.accounts.length?X(h).length?e(ve,-1):e(_e,1):e(ge)}),b((e,r,i,a,o,s,c,l)=>{t(H,e),G.disabled=!!n.busy||!n.accounts.length,t(te,r),t(ie,i),K(ue,`placeholder`,a),K(ue,`aria-label`,o),K(de,`aria-label`,s),t(Z,c),t(me,l)},[()=>Q(`nav.quotas`),()=>Q(`quotas.refresh`),()=>Q(`common.connectAccount`),()=>Q(`quotas.search`),()=>Q(`common.searchAccount`),()=>Q(`quotas.sort`),()=>Q(`quotas.byName`),()=>Q(`quotas.byRemaining`)]),l(`click`,G,()=>n.refresh()),l(`click`,q,function(...e){n.connect?.apply(this,e)}),Y(ue,()=>X(o),e=>M(o,e)),P(de,()=>X(s),e=>M(s,e)),R(e,j),L()}s([`click`,`change`]);var qn=new Set([`$$slots`,`$$events`,`$$legacy`]);function Jn(e,t){let n=T(t,qn),r=[[`path`,{d:`M12 3v12`}],[`path`,{d:`m17 8-5-5-5 5`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`}]];Z(e,G({name:`upload`},()=>n,{get iconNode(){return r}}))}var Yn=new Set([`$$slots`,`$$events`,`$$legacy`]);function Xn(e,t){let n=T(t,Yn),r=[[`path`,{d:`M10 11v6`}],[`path`,{d:`M14 11v6`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`}],[`path`,{d:`M3 6h18`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`}]];Z(e,G({name:`trash-2`},()=>n,{get iconNode(){return r}}))}var Zn=new Set([`$$slots`,`$$events`,`$$legacy`]);function Qn(e,t){let n=T(t,Zn),r=[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`}],[`path`,{d:`m9 12 2 2 4-4`}]];Z(e,G({name:`shield-check`},()=>n,{get iconNode(){return r}}))}var $n=d(``),er=d(`
`),tr=d(``),nr=d(``),rr=d(`
`),ir=d(`

`),ar=d(`

`),or=d(` `,1);function sr(n,r){E(r,!0);let a=J(!1),o=J(``),s=J(e([])),c=J(!1),d=J(``),f=J(void 0),p=W(()=>r.account.reserve_percent??null),g=W(()=>r.account.reserve_windows??[]),_=W(()=>At.filter(e=>X(g).includes(e)||r.quota?.windows.some(t=>t.remaining_percent!=null&&Mt(t.id)===e))),v=W(()=>At.filter(e=>X(g).includes(e)).map(jt).join(` + `));async function w(){M(o,X(p)==null?``:String(X(p)),!0),M(s,[...X(g)],!0),M(d,``),M(a,!0),await y(),X(f)?.focus(),X(f)?.select()}function T(e){M(s,X(s).includes(e)?X(s).filter(t=>t!==e):[...X(s),e],!0)}async function A(e,t){if(!(X(c)||r.busy)){if(e===X(p)&&t.length===X(g).length&&t.every(e=>X(g).includes(e)))M(a,!1);else{M(c,!0),M(d,``);try{await r.save(r.account,e,t)?M(a,!1):M(d,Q(`reserve.notSaved`),!0)}finally{M(c,!1)}}}}function j(){let e=X(o).trim().replace(`,`,`.`);if(!e)return A(null,[]);let t=Number(e);if(!/^\d+(\.\d+)?$/.test(e)||t>=100)M(d,Q(`reserve.invalid`),!0);else return t===0?A(null,[]):A(t,X(s))}var P=u(),F=x(P),I=e=>{var n=rr(),u=S(n),g=S(u),v=C(g,!0),y=m(g);N(y),O(y,e=>M(f,e),()=>X(f)),k(),V(u);var x=m(u,2),w=S(x);Dt(S(w),{size:20}),V(w);var E=m(w);Pe(S(E),{size:20}),V(E),V(x);var P=m(x,2),F=e=>{var n=er(),r=S(n);let a;var o=C(r,!0),u=m(r,2);i(u,16,()=>X(_),e=>e,(e,n)=>{var r=$n();let i;var a=C(r,!0);b((e,n,o)=>{i=D(r,1,`chip svelte-c6cuiu`,null,i,{on:e}),K(r,`aria-pressed`,n),r.disabled=X(c),t(a,o)},[()=>X(s).includes(n),()=>X(s).includes(n),()=>jt(n)]),l(`click`,r,()=>T(n)),R(e,r)}),V(n),b((e,i,l)=>{K(n,`aria-label`,e),a=D(r,1,`chip svelte-c6cuiu`,null,a,{on:!X(s).length}),K(r,`aria-pressed`,!X(s).length),K(r,`title`,i),r.disabled=X(c),t(o,l)},[()=>Q(`reserve.watched`),()=>Q(`reserve.longestTitle`),()=>Q(`reserve.longest`)]),l(`click`,r,()=>M(s,[],!0)),R(e,n)};z(P,e=>{X(_).length>1&&e(F)});var I=m(P,2),L=e=>{var n=tr(),i=C(n,!0);b(e=>{n.disabled=X(c)||!!r.busy,t(i,e)},[()=>Q(`reserve.remove`)]),l(`click`,n,()=>A(null,[])),R(e,n)};z(I,e=>{X(p)!=null&&e(L)});var B=m(I,2),H=e=>{var n=nr(),r=C(n,!0);b(()=>t(r,X(d))),R(e,n)};z(B,e=>{X(d)&&e(H)}),V(n),b((e,n,i,a,o,s)=>{t(v,e),K(y,`aria-label`,n),y.disabled=X(c),K(w,`aria-label`,i),K(w,`title`,a),w.disabled=X(c)||!!r.busy,K(E,`aria-label`,o),K(E,`title`,s),E.disabled=X(c)},[()=>Q(`reserve.keepAtLeast`),()=>Q(`reserve.input`),()=>Q(`reserve.save`),()=>Q(`common.save`),()=>Q(`common.cancel`),()=>Q(`common.cancel`)]),h(`submit`,n,e=>{e.preventDefault(),j()}),l(`keydown`,y,e=>{e.key===`Escape`&&!X(c)&&M(a,!1)}),Y(y,()=>X(o),e=>M(o,e)),l(`click`,E,()=>M(a,!1)),R(e,n)},B=e=>{var n=or(),i=x(n);let a;var o=S(i);Qn(o,{size:16});var s=m(o,1,!0);V(i);var c=m(i,2),u=e=>{var n=ir(),r=C(n,!0);b(e=>t(r,e),[()=>Q(`reserve.reached`)]),R(e,n)},d=e=>{var n=ar(),r=C(n,!0);b(e=>t(r,e),[()=>Q(X(g).length?`reserve.inactiveWindows`:`reserve.inactiveAccount`)]),R(e,n)};z(c,e=>{X(p)!=null&&r.account.enabled&&r.account.reserve_reached?e(u):X(p)!=null&&r.account.reserve_measured===!1&&e(d,1)}),b((e,n)=>{a=D(i,1,`reserve svelte-c6cuiu`,null,a,{set:X(p)!=null}),i.disabled=!!r.busy,K(i,`title`,e),t(s,n)},[()=>X(g).length?Q(`reserve.titleWatched`,{windows:X(v)}):Q(`reserve.titleLongest`),()=>X(p)==null?Q(`reserve.add`):`${Q(`reserve.label`,{percent:Wt(X(p))})}${X(g).length?` · ${X(v)}`:``}`]),l(`click`,i,w),R(e,n)};z(F,e=>{X(a)?e(I):e(B,-1)}),R(n,P),L()}s([`keydown`,`click`]);var cr=d(``),lr=d(`
`),ur=d(` `),dr=d(` `),fr=d(`
`);function pr(e,n){E(n,!0);let r=J(!1),a=J(``),o=J(``),s=J(``),c=J(``),d=J(``),f=W(()=>kt(n.account.dialect??``));function p(){M(a,n.account.route??``,!0),M(o,n.account.base_url??``,!0),M(s,n.account.dialect??``,!0),M(c,(n.account.models??[]).join(`, `),!0),M(d,``),M(r,!0)}async function g(e){e.preventDefault();let t={},i=X(a).trim().toLowerCase();i&&i!==(n.account.route??``)&&(t.route=i),X(o).trim()&&X(o).trim()!==(n.account.base_url??``)&&(t.base_url=X(o).trim()),(X(s)||null)!==(n.account.dialect??null)&&(t.dialect=X(s)||null);let l=X(c).split(`,`).map(e=>e.trim()).filter(Boolean);l.join(`,`)!==(n.account.models??[]).join(`,`)&&(t.models=l),X(d).trim()&&(t.api_key=X(d).trim()),Object.keys(t).length?await n.save(n.account,t)&&(M(r,!1),M(d,``)):M(r,!1)}var _=u(),v=x(_),y=e=>{var u=lr(),f=S(u),p=S(f,!0),_=m(p);N(_),K(_,`pattern`,`[a-z0-9][a-z0-9_\\-]{0,31}`),V(f);var v=m(f,2),y=S(v,!0),x=m(y);N(x),V(v);var T=m(v,2),E=S(T,!0),D=m(E);i(D,20,()=>Ot,e=>e,(e,n)=>{var r=cr(),i=C(r,!0),a={};b(e=>{t(i,e),a!==(a=n)&&(r.value=(r.__value=a)??``)},[()=>kt(n)]),R(e,r)}),V(D),w(D),V(T);var O=m(T,2),k=S(O,!0),A=m(k);N(A),V(O);var j=m(O,2),F=S(j,!0),I=m(F);N(I),V(j);var L=m(j,2),z=S(L),B=C(z,!0),H=m(z),U=C(H,!0);V(L),V(u),b((e,r,i,a,o,s,c,l,u)=>{t(p,e),t(y,r),t(E,i),t(k,a),K(A,`placeholder`,o),t(F,s),K(I,`placeholder`,c),z.disabled=!!n.busy,t(B,l),t(U,u)},[()=>Q(`endpoint.route`),()=>Q(`endpoint.url`),()=>Q(`endpoint.format`),()=>Q(`endpoint.models`),()=>Q(`endpoint.modelsPlaceholder`),()=>Q(`endpoint.newKey`),()=>Q(`endpoint.unchanged`),()=>Q(`common.save`),()=>Q(`common.cancel`)]),h(`submit`,u,g),Y(_,()=>X(a),e=>M(a,e)),Y(x,()=>X(o),e=>M(o,e)),P(D,()=>X(s),e=>M(s,e)),Y(A,()=>X(c),e=>M(c,e)),Y(I,()=>X(d),e=>M(d,e)),l(`click`,H,()=>{M(r,!1),M(d,``)}),R(e,u)},T=e=>{var r=fr(),i=S(r),a=e=>{var r=ur(),i=C(r);b(()=>t(i,`${n.account.route??``}/`)),R(e,r)};z(i,e=>{n.account.route&&e(a)});var o=m(i,2),s=C(o,!0),c=m(o,2),u=e=>{var n=dr(),r=C(n,!0);b(()=>t(r,X(f))),R(e,n)};z(c,e=>{X(f)&&e(u)});var d=m(c,2);Tt(S(d),{size:15}),V(d),V(r),b((e,r)=>{K(o,`title`,n.account.base_url??``),t(s,n.account.base_url),K(d,`aria-label`,e),K(d,`title`,r),d.disabled=!!n.busy},[()=>Q(`endpoint.edit`),()=>Q(`endpoint.edit`)]),l(`click`,d,p),R(e,r)};z(v,e=>{X(r)?e(y):(n.account.route||n.account.base_url)&&e(T,1)}),R(e,_),L()}s([`click`]);var mr=d(`

`),hr=d(``),gr=d(`

`),_r=d(`
`),vr=d(``),yr=d(`

`,1);function br(e,n){E(n,!0);let r=J(``),a=J(null),o,s=W(()=>n.accounts.filter(e=>`${e.name} ${e.provider} ${e.route??``} ${e.email??``}`.toLowerCase().includes(X(r).toLowerCase()))),c=J(!1);var u=yr(),d=x(u),f=S(d),p=C(f,!0),g=m(f),_=S(g),v=S(_);Jn(v,{size:18});var y=m(v,1,!0);V(_);var w=m(_),T=S(w);Be(T,{size:20});var k=m(T,1,!0);V(w),V(g),V(d);var A=m(d,2);O(A,e=>o=e,()=>o);var j=m(A,2),P=S(j),F=C(P,!0),I=m(P),B=S(I);Re(B,{size:18});var H=m(B);N(H),V(I),V(j);var U=m(j,2);let G;var ee=S(U);Jn(ee,{size:19});var te=m(ee),q=C(te,!0);V(U);var ne=m(U,2),re=S(ne),ie=e=>{{let t=W(()=>Q(`common.noAccountConnected`)),r=W(()=>Q(`accounts.emptyDescription`)),i=W(()=>Q(`common.connectAccount`));wn(e,{get title(){return X(t)},get description(){return X(r)},get action(){return X(i)},get onclick(){return n.connect}})}},ae=e=>{{let t=W(()=>Q(`common.noMatchingAccount`)),n=W(()=>Q(`common.tryOtherName`));wn(e,{get title(){return X(t)},get description(){return X(n)}})}},oe=e=>{var r=vr(),o=S(r),c=S(o),u=S(c),d=S(u),f=C(d,!0),p=m(d),h=C(p,!0),g=m(p),_=C(g,!0),v=m(g),y=C(v,!0),x=m(v),w=C(x,!0),T=m(x),E=C(T,!0);V(u),V(c);var O=m(c);i(O,21,()=>X(s),e=>e.id,(e,r)=>{let i=W(()=>n.quotas.find(e=>e.account_id===X(r).id));var o=_r(),s=S(o),c=S(s);nn(c,{get account(){return X(r)},get rename(){return n.rename},get busy(){return n.busy}});var u=m(c),d=e=>{ln(e,{get email(){return X(r).email}})};z(u,e=>{X(r).email&&e(d)});var f=m(u),p=e=>{pr(e,{get account(){return X(r)},get busy(){return n.busy},get save(){return n.updateEndpoint}})};z(f,e=>{X(r).provider===`openai_compatible`&&e(p)});var h=m(f),g=e=>{var n=mr(),i=C(n,!0);b(e=>t(i,e),[()=>Rt(X(r).last_error)]),R(e,n)};z(h,e=>{X(r).last_error&&e(g)}),V(s);var _=m(s),v=S(_),y=S(v);st(y,{get provider(){return X(r).provider},size:23});var x=m(y,1,!0);V(v);var w=m(v),T=e=>{var n=hr(),a=C(n,!0);b(()=>t(a,X(i)?.subscription?.label??X(r).subscription?.label??X(r).plan)),R(e,n)};z(w,e=>{(X(i)?.subscription?.label||X(r).subscription?.label||X(r).plan)&&e(T)}),V(_);var E=m(_),O=S(E);let k;var A=m(S(O),1,!0);V(O),V(E);var j=m(E);sr(S(j),{get account(){return X(r)},get quota(){return X(i)},get busy(){return n.busy},get save(){return n.setReserve}}),V(j);var N=m(j),P=C(N,!0),F=m(N),I=S(F),L=S(I);let B;var H=m(L);Xn(S(H),{size:20}),V(H),V(I);var U=m(I),G=e=>{var i=gr(),o=S(i),s=C(o,!0),c=m(o),u=C(c,!0),d=m(c),f=C(d,!0);V(i),b((e,r,i)=>{t(s,e),c.disabled=!!n.busy,t(u,r),t(f,i)},[()=>Q(`accounts.deleteConfirm`),()=>Q(`accounts.deleteButton`),()=>Q(`common.cancel`)]),l(`click`,c,()=>{n.remove(X(r)),M(a,null)}),l(`click`,d,()=>M(a,null)),R(e,i)};z(U,e=>{X(a)===X(r).id&&e(G)}),V(F),V(o),b((e,i,a,o,s,c,l,u)=>{t(x,e),k=D(O,1,`state-badge`,null,k,{inactive:!X(r).enabled,warning:i}),t(A,a),K(N,`data-label`,o),t(P,s),B=D(L,1,`switch`,null,B,{on:X(r).enabled}),K(L,`aria-checked`,X(r).enabled),K(L,`aria-label`,c),L.disabled=!!n.busy,K(H,`aria-label`,l),K(H,`title`,u),H.disabled=!!n.busy},[()=>Ut(X(r).provider),()=>Ht(X(r)),()=>Vt(X(r)),()=>Q(`accounts.verifiedPrefix`),()=>X(i)?.updated_at?qt(X(i).updated_at):Q(`accounts.notVerified`),()=>Q(`common.enable`,{name:Rt(X(r).name)}),()=>Q(`accounts.delete`,{name:Rt(X(r).name)}),()=>Q(`accounts.deleteTitle`)]),l(`click`,L,()=>n.toggle(X(r))),l(`click`,H,()=>M(a,X(r).id,!0)),R(e,o)}),V(O),V(o),V(r),b((e,n,r,i,a,o)=>{t(f,e),t(h,n),t(_,r),t(y,i),t(w,a),t(E,o)},[()=>Q(`accounts.colAccount`),()=>Q(`accounts.colSubscription`),()=>Q(`accounts.colStatus`),()=>Q(`accounts.colReserve`),()=>Q(`accounts.colVerified`),()=>Q(`accounts.colActions`)]),R(e,r)};z(re,e=>{n.accounts.length?X(s).length?e(oe,-1):e(ae,1):e(ie)}),V(ne),b((e,r,i,a,o,s,l,u)=>{t(p,e),_.disabled=!!n.busy,t(y,r),t(k,i),t(F,a),K(H,`placeholder`,o),K(H,`aria-label`,s),G=D(U,1,`drop-zone svelte-1x1hfd6`,null,G,{dragging:X(c)}),K(U,`aria-label`,l),t(q,u)},[()=>Q(`accounts.title`),()=>Q(`common.import`),()=>Q(`common.connectAccount`),()=>Q(n.accounts.length===1?`common.accountCount.one`:`common.accountCount.other`,{count:n.accounts.length}),()=>Q(`common.searchAccount`),()=>Q(`common.searchAccount`),()=>Q(`accounts.dropLabel`),()=>Q(`accounts.drop`)]),l(`click`,_,()=>o.click()),l(`click`,w,function(...e){n.connect?.apply(this,e)}),l(`change`,A,e=>{e.currentTarget.files?.length&&n.importFiles(e.currentTarget.files),e.currentTarget.value=``}),Y(H,()=>X(r),e=>M(r,e)),h(`dragover`,U,e=>{e.preventDefault(),M(c,!0)}),h(`dragleave`,U,()=>M(c,!1)),h(`drop`,U,e=>{e.preventDefault(),M(c,!1),e.dataTransfer?.files.length&&n.importFiles(e.dataTransfer.files)}),R(e,u),L()}s([`click`,`change`]);var xr=new Set([`$$slots`,`$$events`,`$$legacy`]);function Sr(e,t){let n=T(t,xr),r=[[`path`,{d:`M12 7v6`}],[`path`,{d:`M12 9h2`}],[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.74 9.74 0 0 0-6.74 2.74L3 8`}],[`path`,{d:`M3 3v5h5`}],[`circle`,{cx:`12`,cy:`15`,r:`2`}]];Z(e,G({name:`rotate-ccw-key`},()=>n,{get iconNode(){return r}}))}var Cr=new Set([`$$slots`,`$$events`,`$$legacy`]);function wr(e,t){let n=T(t,Cr),r=[[`rect`,{width:`18`,height:`11`,x:`3`,y:`11`,rx:`2`,ry:`2`}],[`path`,{d:`M7 11V7a5 5 0 0 1 10 0v4`}]];Z(e,G({name:`lock`},()=>n,{get iconNode(){return r}}))}var Tr=new Set([`$$slots`,`$$events`,`$$legacy`]);function Er(e,t){let n=T(t,Tr),r=[[`circle`,{cx:`12`,cy:`12`,r:`10`}],[`path`,{d:`M12 16v-4`}],[`path`,{d:`M12 8h.01`}]];Z(e,G({name:`info`},()=>n,{get iconNode(){return r}}))}var Dr=new Set([`$$slots`,`$$events`,`$$legacy`]);function Or(e,t){let n=T(t,Dr),r=[[`path`,{d:`M21 12c.552 0 1.005-.449.95-.998a10 10 0 0 0-8.953-8.951c-.55-.055-.998.398-.998.95v8a1 1 0 0 0 1 1z`}],[`path`,{d:`M21.21 15.89A10 10 0 1 1 8 2.83`}]];Z(e,G({name:`chart-pie`},()=>n,{get iconNode(){return r}}))}var kr=d(`

`);function Ar(e,n){E(n,!0);let r=I(n,`locked`,3,!1),i=I(n,`wide`,3,!1),a;U(()=>(a.showModal(),()=>a.close()));var o=kr();let s;var c=S(o),u=S(c),d=C(u,!0),f=m(u);Pe(S(f),{size:20}),V(f),V(c);var p=m(c,2);_(p,()=>n.children),V(o),O(o,e=>a=e,()=>a),b(e=>{s=D(o,1,`modal svelte-1k2jq0p`,null,s,{wide:i()}),t(d,n.title),K(f,`aria-label`,e),f.disabled=r()},[()=>Q(`common.close`)]),h(`cancel`,o,e=>{e.preventDefault(),r()||n.close()}),l(`click`,f,function(...e){n.close?.apply(this,e)}),R(e,o),L()}s([`click`]);var jr=d(``),Mr=d(`
`),Nr=d(`
`),Pr=d(``),Fr=d(``),Ir=d(`

`),Lr=d(``),Rr=d(`

`);function zr(n,r){E(r,!0);let a=o(()=>q(r.client)),s=J(e(a?.name??``)),c=J(e(a?.access.all??!0)),u=J(e([...a?.access.pools??[]])),d=J(e([...a?.access.accounts??[]])),f=e(Object.fromEntries(Object.entries(a?.shares??{}).map(([e,t])=>[e,String(t)]))),p=J(!1),g=J(``),_=W(()=>Lt(r.accounts)),v=W(()=>X(_).filter(e=>X(c)||X(u).includes(e.id)||e.accounts.some(e=>X(d).includes(e.id))));function y(e){return r.clients.reduce((t,n)=>n.id===a?.id?t:t+(n.shares[e]??0),0)}function x(e){let t=Number((f[e]??``).trim().replace(`,`,`.`));return Number.isFinite(t)&&t>0?t:0}function w(e){return 100-y(e)-x(e)}function T(e){M(u,X(u).includes(e)?X(u).filter(t=>t!==e):[...X(u),e],!0)}function O(e){M(d,X(d).includes(e)?X(d).filter(t=>t!==e):[...X(d),e],!0)}async function A(e){if(e.preventDefault(),X(p))return;M(g,``);let t=X(c)?[]:X(_).filter(e=>X(u).includes(e.id)).map(e=>e.id),n=X(c)?[]:r.accounts.filter(e=>X(d).includes(e.id)&&!t.includes(e.route||e.provider)).map(e=>e.id);if(!X(c)&&!t.length&&!n.length){M(g,Q(`clients.pickAccess`),!0);return}let i={};for(let e of X(v)){let t=(f[e.id]??``).trim().replace(`,`,`.`);if(!t)continue;let n=Number(t);if(!/^\d+(\.\d+)?$/.test(t)||n<=0||n>100){M(g,Q(`clients.shareInvalid`),!0);return}i[e.id]=n}let o={name:X(s).trim(),access:{all:X(c),pools:t,accounts:n},shares:i};M(p,!0);try{r.saved(a?await $.updateClient(a.id,o):await $.createClient(o),!a)}catch(e){M(g,e.message,!0)}finally{M(p,!1)}}{let e=W(()=>a?Q(`clients.editTitle`,{name:a.name}):Q(`clients.new`));Ar(n,{get title(){return X(e)},get close(){return r.close},get locked(){return X(p)},wide:!0,children:(e,n)=>{var o=Rr(),y=S(o),x=S(y),E=C(x,!0),j=m(x);N(j),V(y);var P=m(y,2),F=S(P),I=C(F,!0),L=m(F,2),B=S(L),U=S(B),G=C(U,!0),ee=m(U),te=C(ee,!0);V(B);var q=m(B);V(L);var J=m(L,2),ne=e=>{var n=Nr();i(n,21,()=>X(_),e=>e.id,(e,n)=>{let r=W(()=>X(u).includes(X(n).id));var a=Mr(),o=S(a),s=S(o);N(s);var c=m(s);st(c,{get provider(){return X(n).provider},size:20});var f=m(c),p=C(f,!0);V(o);var h=m(o,2);i(h,21,()=>X(n).accounts,e=>e.id,(e,n)=>{let i=W(()=>X(r)||X(d).includes(X(n).id));var a=jr(),o=C(a,!0);b(e=>{D(a,1,ae([`chip`,X(i)&&`on`]),`svelte-vb71yz`),K(a,`aria-pressed`,X(i)),a.disabled=X(r),t(o,e)},[()=>Rt(X(n).name)]),l(`click`,a,()=>O(X(n).id)),R(e,a)}),V(h),V(a),b(e=>{K(o,`title`,e),H(s,X(r)),t(p,X(n).name)},[()=>Q(`clients.wholePool`,{pool:X(n).name})]),l(`change`,s,()=>T(X(n).id)),R(e,a)}),V(n),R(e,n)};z(J,e=>{X(c)||e(ne)}),V(P);var re=m(P,2),ie=S(re),oe=S(ie,!0),se=m(oe);Er(S(se),{size:16}),V(se),V(ie);var ce=m(ie,2),le=e=>{var n=Fr();i(n,21,()=>X(v),e=>e.id,(e,n)=>{let r=W(()=>w(X(n).id));var i=Pr(),a=S(i),o=S(a);st(o,{get provider(){return X(n).provider},size:22});var s=m(o,1,!0);V(a);var c=m(a),l=S(c);N(l),k(),V(c);var u=m(c),d=C(u,!0);V(i),b((e,i)=>{t(s,X(n).name),K(l,`aria-label`,e),D(u,1,ae([`share-common`,X(r)<0&&`over`]),`svelte-vb71yz`),t(d,i)},[()=>Q(`clients.shareOf`,{pool:X(n).name}),()=>X(r)<0?Q(`clients.overbooked`):Q(`clients.common`,{value:Wt(X(r))})]),Y(l,()=>f[X(n).id],e=>f[X(n).id]=e),R(e,i)}),V(n),R(e,n)},ue=e=>{var n=Ir(),r=C(n,!0);b(e=>t(r,e),[()=>Q(`clients.noPool`)]),R(e,n)};z(ce,e=>{X(v).length?e(le):e(ue,-1)}),V(re);var de=m(re,2),fe=e=>{var n=Lr(),r=C(n,!0);b(()=>t(r,X(g))),R(e,n)};z(de,e=>{X(g)&&e(fe)});var Z=m(de,2),pe=S(Z),me=C(pe,!0),he=m(pe),ge=C(he,!0);V(Z),V(o),b((e,n,r,i,a,o,s,l,u,d,f,m)=>{t(E,e),K(j,`placeholder`,n),t(I,r),t(G,i),t(te,a),D(q,1,ae([`switch`,X(c)&&`on`])),K(q,`aria-checked`,X(c)),K(q,`aria-label`,o),t(oe,s),K(se,`title`,l),K(se,`aria-label`,u),pe.disabled=X(p),t(me,d),he.disabled=f,t(ge,m)},[()=>Q(`clients.name`),()=>Q(`clients.namePlaceholder`),()=>Q(`clients.access`),()=>Q(`clients.allAccounts`),()=>Q(`clients.allAccountsHint`),()=>Q(`clients.allAccounts`),()=>Q(`clients.shares`),()=>Q(`clients.sharesInfo`),()=>Q(`clients.sharesInfo`),()=>Q(`common.cancel`),()=>X(p)||!X(s).trim(),()=>Q(a?`common.save`:`clients.create`)]),h(`submit`,o,A),Y(j,()=>X(s),e=>M(s,e)),l(`click`,q,()=>M(c,!X(c))),l(`click`,pe,function(...e){r.close?.apply(this,e)}),R(e,o)},$$slots:{default:!0}})}L()}s([`click`,`change`]);var Br=new Set([`$$slots`,`$$events`,`$$legacy`]);function Vr(e,t){let n=T(t,Br),r=[[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`}],[`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`}]];Z(e,G({name:`copy`},()=>n,{get iconNode(){return r}}))}async function Hr(e){try{if(navigator.clipboard?.writeText){await navigator.clipboard.writeText(e);return}}catch{}let t=document.activeElement instanceof HTMLElement?document.activeElement:null,n=t instanceof HTMLInputElement||t instanceof HTMLTextAreaElement?t:null,r=n?.selectionStart!=null&&n.selectionEnd!=null?{start:n.selectionStart,end:n.selectionEnd,direction:n.selectionDirection}:null,i=document.getSelection(),a=i?Array.from({length:i.rangeCount},(e,t)=>i.getRangeAt(t).cloneRange()):[],o=document.createElement(`textarea`);o.value=e,o.readOnly=!0,o.tabIndex=-1,o.setAttribute(`aria-hidden`,`true`),o.style.cssText=`position:fixed;top:0;left:0;opacity:0;pointer-events:none;font-size:16px`;try{if((t?.closest(`dialog[open]`)??document.body).append(o),o.focus({preventScroll:!0}),o.select(),o.setSelectionRange(0,e.length),!document.execCommand(`copy`))throw Error(`Clipboard copy failed.`)}finally{if(o.remove(),t?.focus({preventScroll:!0}),i){i.removeAllRanges();for(let e of a)i.addRange(e)}n&&r&&n.setSelectionRange(r.start,r.end,r.direction??void 0)}}var Ur=d(` `,1),Wr=d(``),Gr=d(`

`,1);function Kr(e,n){E(n,!0);let r=J(!1),i=J(``);async function a(){try{await Hr(n.key),M(r,!0),M(i,``)}catch{M(r,!1),M(i,Q(`common.copyRefused`),!0)}}{let o=W(()=>Q(`clients.keyTitle`,{name:n.name}));Ar(e,{get title(){return X(o)},get close(){return n.close},children:(e,o)=>{var s=Gr(),c=x(s),u=S(c);be(u,{size:17});var d=m(u,1,!0);V(c);var f=m(c,2),p=S(f),h=C(p,!0),g=m(p),_=S(g),v=e=>{var n=Ur(),r=x(n);Dt(r,{size:17});var i=m(r,1,!0);b(e=>t(i,e),[()=>Q(`clients.copied`)]),R(e,n)},y=e=>{var n=Ur(),r=x(n);Vr(r,{size:17});var i=m(r,1,!0);b(e=>t(i,e),[()=>Q(`clients.copyKey`)]),R(e,n)};z(_,e=>{X(r)?e(v):e(y,-1)}),V(g),V(f);var w=m(f,2),T=C(w,!0),E=m(w,2),D=e=>{var n=Wr(),r=C(n,!0);b(()=>t(r,X(i))),R(e,n)};z(E,e=>{X(i)&&e(D)});var O=m(E,2),k=S(O),A=C(k,!0);V(O),b((e,r,i)=>{t(d,e),t(h,n.key),t(T,r),t(A,i)},[()=>Q(`clients.keyOnce`),()=>Q(`clients.keyBoite`),()=>Q(`common.close`)]),l(`click`,g,a),l(`click`,k,function(...e){n.close?.apply(this,e)}),R(e,s)},$$slots:{default:!0}})}L()}s([`click`]);var qr=new Set([`$$slots`,`$$events`,`$$legacy`]);function Jr(e,t){let n=T(t,qr),r=[[`path`,{d:`m6 9 6 6 6-6`}]];Z(e,G({name:`chevron-down`},()=>n,{get iconNode(){return r}}))}var Yr=d(``),Xr=d(``),Zr=d(``),Qr=d(``),$r=d(`

`),ei=d(`

`),ti=d(`

`),ni=d(` `,1),ri=d(` `),ii=d(`
`),ai=d(`
`),oi=d(`
`),si=d(`

`),ci=d(`

`);function li(n,r){E(r,!0);let o=[{id:`day`,hours:24},{id:`week`,hours:168},{id:`month`,hours:720}],s=J(e(o[0])),c=J(null),d=J(``),f=J(null),p=J(null),g=W(()=>new Map(r.clients.map(e=>[e.id,e.name])));a(()=>{let e=X(s).hours;r.version;let t=!0;return $.clientStats(e).then(e=>{t&&(M(c,e),M(d,``))},e=>{t&&M(d,e.message,!0)}),()=>{t=!1}});function _(e){return e?X(g).has(e)?{id:e,label:X(g).get(e),color:r.colors.get(e)??r.noKeyColor}:{id:`former`,label:Q(`clients.former`),color:r.formerColor}:{id:`no-key`,label:Q(`clients.noKey`),color:r.noKeyColor}}let v=W(()=>{let e=new Map;for(let t of r.clients)e.set(t.id,{..._(t.id),calls:0,errors:0,input:0,output:0,cache:0,latency:0,last:``,models:[]});for(let t of X(c)?.totals??[]){let n=_(t.client_id),r=e.get(n.id);r||(r={...n,calls:0,errors:0,input:0,output:0,cache:0,latency:0,last:``,models:[]},e.set(n.id,r)),y(r,t),t.last_at>r.last&&(r.last=t.last_at);let i=`${t.provider}/${t.model}`,a=r.models.find(e=>e.key===i);a||(a={key:i,provider:t.provider,model:t.model,calls:0,errors:0,input:0,output:0,cache:0,latency:0},r.models.push(a)),y(a,t)}for(let t of e.values())t.models.sort((e,t)=>t.input+t.output-(e.input+e.output));return[...e.values()].sort((e,t)=>t.input+t.output-(e.input+e.output)||t.calls-e.calls||e.label.localeCompare(t.label))});function y(e,t){e.calls+=t.calls,e.errors+=t.errors,e.input+=t.input_tokens,e.output+=t.output_tokens,e.cache+=t.cache_read_tokens,e.latency+=t.latency_ms}let w=W(()=>X(v).reduce((e,t)=>({calls:e.calls+t.calls,errors:e.errors+t.errors,tokens:e.tokens+t.input+t.output}),{calls:0,errors:0,tokens:0})),T=W(()=>X(v).filter(e=>e.calls>0).length),O=W(()=>{let e=X(s).hours<=24,t=new Date,n=X(c)?new Date(X(c).since):new Date(t.getTime()-X(s).hours*36e5),r=[],i=e=>r.push({start:e,label:``,values:new Map,total:0});if(e){let e=Math.floor(n.getTime()/36e5)*36e5;for(let n=e;n<=t.getTime();n+=36e5)i(new Date(n))}else{let e=new Date(t.getFullYear(),t.getMonth(),t.getDate());for(let t=new Date(n.getFullYear(),n.getMonth(),n.getDate());t<=e;t=new Date(t.getFullYear(),t.getMonth(),t.getDate()+1))i(t)}let a=new Intl.DateTimeFormat(vt(),e?{hour:_t()===`en`?`numeric`:`2-digit`,minute:`2-digit`}:{weekday:X(s).hours<=168?`short`:void 0,day:`numeric`,month:`short`});for(let e of r)e.label=a.format(e.start);for(let t of X(c)?.hours??[]){let n=new Date(`${t.hour}:00:00Z`),i=e?r.findIndex(e=>e.start.getTime()===n.getTime()):r.findIndex(e=>e.start.getFullYear()===n.getFullYear()&&e.start.getMonth()===n.getMonth()&&e.start.getDate()===n.getDate());if(i<0)continue;let a=_(t.client_id).id;r[i].values.set(a,(r[i].values.get(a)??0)+t.tokens),r[i].total+=t.tokens}return r}),k=W(()=>Math.max(1,...X(O).map(e=>e.total))),A=W(()=>X(v).filter(e=>e.input+e.output>0));function j(e,t){return t?e/t*100:0}function N(e){return Q(`common.percent`,{value:Wt(e)})}function P(e){let t=X(O)[e];return`${t.label}: ${X(A).filter(e=>t.values.get(e.id)).map(e=>`${e.label} ${Gt(t.values.get(e.id))}`).join(`, `)||Q(`stats.none`)}`}var F=ci(),I=S(F),B=S(I),H=S(B,!0),U=m(H);Er(S(U),{size:16}),V(U),V(B);var G=m(B,2);i(G,21,()=>o,e=>e.id,(e,n)=>{var r=Yr();let i;var a=C(r,!0);b(e=>{K(r,`aria-pressed`,X(s).id===X(n).id),i=D(r,1,`svelte-1gmdt1j`,null,i,{active:X(s).id===X(n).id}),t(a,e)},[()=>Q(`stats.${X(n).id}`)]),l(`click`,r,()=>{M(s,X(n),!0),M(p,null)}),R(e,r)}),V(G),V(I);var ee=m(I,2),te=e=>{var n=Xr(),r=C(n,!0);b(()=>t(r,X(d))),R(e,n)};z(ee,e=>{X(d)&&e(te)});var q=m(ee,2),Y=S(q),ne=S(Y),re=S(ne),ie=C(re,!0),ae=m(re),se=C(ae,!0);V(ne);var ce=m(ne,2),le=S(ce),ue=C(le,!0),de=m(le),fe=C(de,!0);V(ce);var Z=m(ce,2),pe=S(Z),me=C(pe,!0),he=m(pe),ge=C(he,!0);V(Z);var _e=m(Z,2),ve=S(_e),ye=C(ve,!0),be=m(ve);let xe;var Se=C(be,!0);V(_e),V(Y);var Ce=m(Y,2),we=S(Ce),Te=C(we,!0),Ee=m(we,2);let De;i(Ee,23,()=>X(O),e=>e.start.getTime(),(e,t,n)=>{var r=Qr();let a;var o=S(r);let s;i(o,21,()=>X(A),e=>e.id,(e,n)=>{let r=W(()=>X(t).values.get(X(n).id)??0);var i=u(),a=x(i),o=e=>{var t=Zr();let i;b(()=>i=oe(t,``,i,{"flex-grow":X(r),background:X(n).color})),R(e,t)};z(a,e=>{X(r)&&e(o)}),R(e,i)}),V(o),V(r),b((e,t)=>{a=D(r,1,`column svelte-1gmdt1j`,null,a,{dim:X(p)!=null&&X(p)!==X(n)}),K(r,`aria-label`,e),s=oe(o,``,s,{height:t})},[()=>P(X(n)),()=>`${j(X(t).total,X(k))??``}%`]),h(`mouseenter`,r,()=>M(p,X(n),!0)),h(`focus`,r,()=>M(p,X(n),!0)),h(`blur`,r,()=>M(p,null)),R(e,r)}),V(Ee);var Oe=m(Ee,2),ke=S(Oe),Ae=C(ke,!0),je=m(ke),Me=C(je,!0),Ne=m(je),Pe=C(Ne,!0);V(Oe);var Fe=m(Oe,2),Ie=e=>{let n=W(()=>X(O)[X(p)]);var r=ti();let a,o;var s=S(r),c=C(s,!0),l=m(s,2);i(l,17,()=>X(A).filter(e=>X(n).values.get(e.id)),e=>e.id,(e,r)=>{var i=$r(),a=S(i);let o;var s=m(a,1,!0),c=m(s),l=C(c,!0);V(i),b(e=>{o=oe(a,``,o,{background:X(r).color}),t(s,X(r).label),t(l,e)},[()=>Gt(X(n).values.get(X(r).id))]),R(e,i)},e=>{var n=ei(),r=C(n,!0);b(e=>t(r,e),[()=>Q(`stats.none`)]),R(e,n)}),V(r),b(()=>{a=D(r,1,`tip svelte-1gmdt1j`,null,a,{right:X(p)>X(O).length/2}),o=oe(r,``,o,{left:`${(X(p)+.5)/X(O).length*100}%`}),t(c,X(n).label)}),R(e,r)};z(Fe,e=>{X(p)!=null&&e(Ie)}),V(Ce);var Le=m(Ce,2);i(Le,21,()=>X(v),e=>e.id,(e,n)=>{let r=W(()=>X(n).input+X(n).output);var a=oi();let o;var s=S(a),c=S(s),u=S(c);let d;var p=m(u),h=C(p,!0);V(c);var g=m(c,2),_=S(g),v=S(_);let y;V(_);var T=m(_),E=C(T,!0);V(g);var O=m(g,2),k=e=>{var i=ni(),a=x(i),o=S(a),s=C(o,!0),c=m(o);V(a);var l=m(a,2),u=S(l),d=C(u,!0),f=m(u);V(l);var p=m(l,2),h=C(p,!0),g=m(p,2);let _;var v=C(g,!0),y=m(g,2),w=C(y,!0);Jr(m(y,2),{size:18,class:`chevron`}),b((e,r,i,a,o,l,u,m)=>{t(s,e),t(c,` ${r??``}`),t(d,i),t(f,` ${a??``}`),K(p,`title`,o),t(h,l),_=D(g,1,`figure tabular errors svelte-1gmdt1j`,null,_,{bad:X(n).errors>0}),t(v,u),t(w,m)},[()=>Gt(X(r)),()=>Q(`stats.tokensUnit`),()=>Gt(X(n).calls),()=>Q(`stats.callsUnit`),()=>Q(`stats.cacheInfo`),()=>Q(`stats.cache`,{value:Wt(j(X(n).cache,X(n).input))}),()=>X(n).errors?Q(`stats.errorCount`,{count:Gt(X(n).errors)}):Q(`stats.noError`),()=>qt(X(n).last)]),R(e,i)},A=e=>{var n=ri(),r=C(n,!0);b(e=>t(r,e),[()=>Q(`stats.idle`)]),R(e,n)};z(O,e=>{X(n).calls?e(k):e(A,-1)}),V(s);var P=m(s,2),F=e=>{var r=ai(),a=S(r),o=S(a),s=C(o,!0),c=m(o),l=C(c,!0),u=m(c),d=C(u,!0),f=m(u),p=C(f,!0),h=m(f),g=C(h,!0),_=m(h),v=C(_,!0),y=m(_),x=C(y,!0);V(a);var w=m(a,2);i(w,17,()=>X(n).models,e=>e.key,(e,n)=>{var r=ii(),i=S(r),a=S(i);st(a,{get provider(){return X(n).provider},size:16});var o=m(a,1,!0);V(i);var s=m(i),c=C(s,!0),l=m(s),u=C(l,!0),d=m(l),f=C(d,!0),p=m(d),h=C(p,!0),g=m(p),_=C(g,!0),v=m(g);let y;var x=C(v,!0);V(r),b((e,r,i,a,s,l)=>{t(o,X(n).model),t(c,e),t(u,r),t(f,i),t(h,a),t(_,s),y=D(v,1,`tabular svelte-1gmdt1j`,null,y,{bad:X(n).errors>0}),t(x,l)},[()=>Gt(X(n).calls),()=>Gt(X(n).input),()=>Gt(X(n).output),()=>Gt(X(n).cache),()=>X(n).calls?`${Wt(X(n).latency/X(n).calls/1e3)} s`:`-`,()=>Gt(X(n).errors)]),R(e,r)}),V(r),b((e,n,r,i,a,o,c)=>{t(s,e),t(l,n),t(d,r),t(p,i),t(g,a),t(v,o),t(x,c)},[()=>Q(`stats.model`),()=>Q(`stats.calls`),()=>Q(`stats.input`),()=>Q(`stats.output`),()=>Q(`stats.cacheRead`),()=>Q(`stats.latency`),()=>Q(`stats.errors`)]),R(e,r)};z(P,e=>{X(f)===X(n).id&&e(F)}),V(a),b((e,r)=>{o=D(a,1,`client-row svelte-1gmdt1j`,null,o,{idle:!X(n).calls}),K(s,`aria-expanded`,X(f)===X(n).id),s.disabled=!X(n).calls,d=oe(u,``,d,{background:X(n).color}),t(h,X(n).label),y=oe(v,``,y,{width:e,background:X(n).color}),t(E,r)},[()=>`${j(X(r),X(w).tokens)??``}%`,()=>X(n).calls?N(j(X(r),X(w).tokens)):``]),l(`click`,s,()=>M(f,X(f)===X(n).id?null:X(n).id,!0)),R(e,a)},e=>{var n=si(),r=C(n,!0);b(e=>t(r,e),[()=>Q(`stats.empty`)]),R(e,n)}),V(Le),V(q),V(F),b((e,n,r,i,a,o,s,c,l,u,d,f,p,m,h)=>{t(H,e),K(U,`title`,n),K(U,`aria-label`,r),K(G,`aria-label`,i),t(ie,a),t(se,o),t(ue,s),t(fe,c),t(me,l),t(ge,X(T)),t(ye,u),xe=D(be,1,`tabular svelte-1gmdt1j`,null,xe,{bad:X(w).errors>0}),t(Se,d),K(Ce,`aria-label`,f),t(Te,p),De=oe(Ee,``,De,{"--count":X(O).length}),t(Ae,X(O)[0]?.label),t(Me,m),t(Pe,h)},[()=>Q(`stats.title`),()=>Q(`stats.info`),()=>Q(`stats.info`),()=>Q(`stats.period`),()=>Q(`stats.tokens`),()=>Gt(X(w).tokens),()=>Q(`stats.calls`),()=>Gt(X(w).calls),()=>Q(`stats.activeClients`),()=>Q(`stats.errors`),()=>X(w).calls?N(j(X(w).errors,X(w).calls)):`-`,()=>Q(`stats.chart`),()=>Gt(X(k)===1?0:X(k)),()=>X(O)[Math.floor(X(O).length/2)]?.label,()=>X(O).at(-1)?.label]),h(`mouseleave`,Ce,()=>M(p,null)),R(n,F),L()}s([`click`]);var ui=d(`

`),di=d(`
`),fi=d(` `),pi=d(` `),mi=d(` `),hi=d(` `,1),gi=d(``),_i=d(` `),vi=d(``),yi=d(`
`),bi=d(`

`),xi=d(`

`),Si=d(`

`),Ci=d(` `),wi=d(`

`),Ti=d(``),Ei=d(`
`),Di=d(``),Oi=d(`

`),ki=d(`
`),Ai=d(`

`,1),ji=d(`

`),Mi=d(`

`),Ni=d(`

`,1),Pi=d(``),Fi=d(`
`,1),Ii=d(`

`,1);function Li(e,n){E(n,!0);let r=`#d6def0`,a=`#9b8ec4`,o=[`#7899ff`,`#4dd4ac`,`#f4c154`,`#c792ea`,`#5ccfe6`,`#ff9e7a`,`#a3e635`,`#f78fb3`],s=W(()=>n.report?.clients??[]),c=W(()=>n.report?.usage??[]),u=W(()=>Lt(n.accounts)),d=J(null),f=J(null),p=J(null),h=J(!1),g=J(``),_=W(()=>new Map(X(s).map((e,t)=>[e.id,o[t%o.length]]))),v=W(()=>new Map(X(s).map(e=>[e.id,e.name]))),y=W(()=>X(c).some(e=>(e.clients[``]??0)>0)),w=W(()=>X(c).some(e=>Object.entries(e.clients).some(([e,t])=>e&&!X(v).has(e)&&t>0)));function T(e){return Q(`common.percent`,{value:Wt(e)})}function O(e){return X(u).find(t=>t.id===e)??{id:e,provider:e,name:e,accounts:[]}}function k(e){let t=n.accounts.find(t=>t.id===e);return t?Rt(t.name):Q(`activity.unknownAccount`)}function A(e,t){return At.indexOf(e.kind)-At.indexOf(t.kind)}function N(e,t){return e.access.all||e.access.pools.includes(t.id)||t.accounts.some(t=>e.access.accounts.includes(t.id))}function P(e){return[...new Set([...X(u).filter(t=>N(e,t)).map(e=>e.id),...Object.keys(e.shares)])].map(t=>{let n=O(t),r=new Map;for(let t of X(c)){if(!n.accounts.some(e=>e.id===t.account_id))continue;let i=t.clients[e.id]??0,a=r.get(t.kind);(!a||i>a.points)&&r.set(t.kind,{kind:t.kind,points:i,account:t.account_id})}return{pool:n,share:e.shares[t]??null,kinds:[...r.values()].sort(A)}}).filter(e=>e.kinds.length||e.share!=null)}function F(e){let t=[];for(let n of X(s)){let r=e.clients[n.id]??0;r>0&&t.push({id:n.id,label:n.name,points:r,color:X(_).get(n.id)??o[0],kind:`client`})}let n=e.clients[``]??0;n>0&&t.push({id:`no-key`,label:Q(`clients.noKey`),points:n,color:r,kind:`client`});let i=Object.entries(e.clients).reduce((e,[t,n])=>t&&!X(v).has(t)?e+n:e,0);i>0&&t.push({id:`former`,label:Q(`clients.former`),points:i,color:a,kind:`client`}),e.outside>0&&t.push({id:`outside`,label:Q(`clients.outside`),points:e.outside,color:`#6f80a0`,kind:`outside`});let c=e.used-t.reduce((e,t)=>e+t.points,0);return c>.05&&t.push({id:`rest`,label:Q(`clients.unexplained`),points:c,color:``,kind:`rest`}),t}let I=W(()=>{let e=[],t=new Set;for(let n of X(u))for(let r of n.accounts){let n=X(c).filter(e=>e.account_id===r.id).sort(A);if(t.add(r.id),!n.length)continue;let i=e.find(e=>e.provider===r.provider);i||(i={provider:r.provider,name:Ut(r.provider),accounts:[]},e.push(i)),i.accounts.push({id:r.id,rows:n})}let n=[...new Set(X(c).filter(e=>!t.has(e.account_id)).map(e=>e.account_id))];return n.length&&e.push({provider:``,name:Q(`activity.unknownAccount`),accounts:n.map(e=>({id:e,rows:X(c).filter(t=>t.account_id===e).sort(A)}))}),e});function B(e){return{whole:e.access.pools.map(O),single:n.accounts.filter(t=>e.access.accounts.includes(t.id)&&!e.access.pools.includes(t.route||t.provider)),missing:e.access.accounts.filter(e=>!n.accounts.some(t=>t.id===e))}}function H(e,t){M(d,null),e.key&&M(f,{name:e.client.name,key:e.key},!0),n.updated(Q(t?`notice.clientCreated`:`notice.clientSaved`))}async function U(){let e=X(p);if(e&&!X(h)){M(h,!0),M(g,``);try{if(e.kind===`rotate`){let t=await $.updateClient(e.client.id,{rotate_key:!0});M(p,null),t.key&&M(f,{name:t.client.name,key:t.key},!0),n.updated(Q(`notice.keyReplaced`))}else await $.deleteClient(e.client.id),M(p,null),n.updated(Q(`notice.clientDeleted`))}catch(e){M(g,e.message,!0)}finally{M(h,!1)}}}var G=Ii(),ee=x(G),te=S(ee),q=S(te),Y=C(q,!0),ne=m(q,2),re=e=>{var n=ui(),r=S(n),i=S(r);wr(i,{size:14});var a=m(i,1,!0);V(r),V(n),b((e,n)=>{K(r,`title`,e),t(a,n)},[()=>Q(`clients.enforcedInfo`),()=>Q(`clients.enforced`)]),R(e,n)};z(ne,e=>{n.report&&e(re)}),V(te);var ie=m(te,2),se=S(ie),ce=S(se);Be(ce,{size:20});var le=m(ce,1,!0);V(se),V(ie),V(ee);var ue=m(ee,2),de=e=>{li(e,{get clients(){return X(s)},get colors(){return X(_)},noKeyColor:r,formerColor:a,get version(){return n.report}})};z(ue,e=>{n.report&&e(de)});var fe=m(ue,2),Z=e=>{var t=di(),n=S(t);{let e=W(()=>Q(`clients.emptyTitle`)),t=W(()=>Q(`clients.emptyDescription`)),r=W(()=>Q(`clients.new`));wn(n,{get title(){return X(e)},get description(){return X(t)},get action(){return X(r)},onclick:()=>M(d,{client:null},!0)})}V(t),R(e,t)},pe=e=>{var o=Ai(),c=x(o),u=S(c),f=C(u,!0);V(c);var h=m(c,2);i(h,21,()=>X(s),e=>e.id,(e,r)=>{let a=W(()=>B(X(r))),o=W(()=>Object.entries(X(r).shares));var s=Si();let c;var u=S(s),f=S(u),h=m(S(f)),v=C(h,!0),y=m(h),w=C(y,!0);V(f);var E=m(f,2),A=S(E);Tt(S(A),{size:18}),V(A);var N=m(A,2);Sr(S(N),{size:18}),V(N);var F=m(N,2);Xn(S(F),{size:18}),V(F),V(E),V(u);var I=m(u,2),L=S(I),H=e=>{var n=fi(),r=C(n,!0);b(e=>t(r,e),[()=>Q(`clients.allAccounts`)]),R(e,n)},U=e=>{var n=hi(),r=x(n);i(r,17,()=>X(a).whole,e=>e.id,(e,n)=>{var r=pi(),i=S(r);st(i,{get provider(){return X(n).provider},size:17});var a=m(i,1,!0);V(r),b(()=>t(a,X(n).name)),R(e,r)});var o=m(r,2);i(o,17,()=>X(a).single,e=>e.id,(e,n)=>{var r=pi(),i=S(r);st(i,{get provider(){return X(n).provider},size:17});var a=m(i,1,!0);V(r),b(e=>t(a,e),[()=>Rt(X(n).name)]),R(e,r)});var s=m(o,2);i(s,16,()=>X(a).missing,e=>e,(e,n)=>{var r=mi(),i=C(r,!0);b(e=>t(i,e),[()=>Q(`activity.unknownAccount`)]),R(e,r)});var c=m(s,2),l=e=>{var n=mi(),r=C(n,!0);b(e=>t(r,e),[()=>Q(`clients.noAccess`)]),R(e,n)};z(c,e=>{!X(a).whole.length&&!X(a).single.length&&!X(a).missing.length&&e(l)}),R(e,n)};z(L,e=>{X(r).access.all?e(H):e(U,-1)}),V(I);var G=m(I,2);i(G,21,()=>X(o),([e,t])=>e,(e,n)=>{var r=W(()=>j(X(n),2));let i=()=>X(r)[0],a=()=>X(r)[1],o=W(()=>O(i()));var s=gi(),c=S(s);Or(c,{size:15});var l=m(c,1,!0),u=m(l),d=C(u,!0);V(s),b((e,n)=>{K(s,`title`,e),t(l,X(o).name),t(d,n)},[()=>Q(`clients.shareOf`,{pool:X(o).name}),()=>T(a())]),R(e,s)},e=>{var n=_i(),r=C(n,!0);b(e=>t(r,e),[()=>Q(`clients.noShare`)]),R(e,n)}),V(G);var ee=m(G,2);i(ee,17,()=>P(X(r)),e=>e.pool.id,(e,n)=>{var r=xi(),a=S(r),o=S(a);st(o,{get provider(){return X(n).pool.provider},size:18});var s=m(o,1,!0);V(a);var c=m(a,2);i(c,17,()=>X(n).kinds,e=>e.kind,(e,r)=>{var i=yi(),a=S(i),o=C(a,!0),s=m(a,2),c=S(s);let l;var u=m(c),d=e=>{var t=vi();let r;b(e=>r=oe(t,``,r,{left:e}),[()=>`${Math.min(100,X(n).share)}%`]),R(e,t)};z(u,e=>{X(n).share!=null&&e(d)}),V(s);var f=m(s,2);let p;var h=C(f,!0);V(i),b((e,a,s,u)=>{K(i,`title`,e),t(o,a),l=oe(c,``,l,{width:s}),p=D(f,1,`usage-value tabular svelte-15ihc32`,null,p,{over:X(n).share!=null&&X(r).points>=X(n).share}),t(h,u)},[()=>X(n).pool.accounts.length>1?Q(`clients.highest`,{name:k(X(r).account)}):void 0,()=>jt(X(r).kind),()=>`${Math.min(100,X(r).points)}%`,()=>X(n).share==null?T(X(r).points):Q(`clients.ofShare`,{used:Wt(X(r).points),share:Wt(X(n).share)})]),R(e,i)},e=>{var n=bi(),r=C(n,!0);b(e=>t(r,e),[()=>Q(`clients.notMeasured`)]),R(e,n)}),V(r),b(()=>t(s,X(n).pool.name)),R(e,r)}),V(s),b((e,i,a,o,l,u,d,f)=>{c=oe(s,``,c,{"--client":e}),t(v,X(r).name),K(y,`title`,i),t(w,X(r).key_hint),K(A,`title`,a),K(A,`aria-label`,o),A.disabled=!!n.busy,K(N,`title`,l),K(N,`aria-label`,u),N.disabled=!!n.busy,K(F,`title`,d),K(F,`aria-label`,f),F.disabled=!!n.busy},[()=>X(_).get(X(r).id),()=>Q(`clients.createdAt`,{date:qt(X(r).created_at)}),()=>Q(`clients.editTitle`,{name:X(r).name}),()=>Q(`clients.editTitle`,{name:X(r).name}),()=>Q(`clients.rotate`),()=>Q(`clients.rotateNamed`,{name:X(r).name}),()=>Q(`clients.delete`),()=>Q(`clients.deleteNamed`,{name:X(r).name})]),l(`click`,A,()=>M(d,{client:X(r)},!0)),l(`click`,N,()=>{M(g,``),M(p,{kind:`rotate`,client:X(r)},!0)}),l(`click`,F,()=>{M(g,``),M(p,{kind:`delete`,client:X(r)},!0)}),R(e,s)}),V(h);var v=m(h,2),E=S(v),A=S(E,!0),N=m(A);Er(S(N),{size:16}),V(N),V(E);var L=m(E,2),H=S(L);i(H,17,()=>X(s),e=>e.id,(e,n)=>{var r=Ci(),i=S(r);let a;var o=m(i,1,!0);V(r),b(e=>{a=oe(i,``,a,{background:e}),t(o,X(n).name)},[()=>X(_).get(X(n).id)]),R(e,r)});var U=m(H,2),G=e=>{var n=Ci(),i=S(n);oe(i,``,{},{background:r});var a=m(i,1,!0);V(n),b(e=>t(a,e),[()=>Q(`clients.noKey`)]),R(e,n)};z(U,e=>{X(y)&&e(G)});var ee=m(U,2),te=e=>{var n=Ci(),r=S(n);oe(r,``,{},{background:a});var i=m(r,1,!0);V(n),b(e=>t(i,e),[()=>Q(`clients.former`)]),R(e,n)};z(ee,e=>{X(w)&&e(te)});var q=m(ee,2),J=S(q);oe(J,``,{},{background:`#6f80a0`});var Y=m(J,1,!0);V(q);var ne=m(q,2),re=m(S(ne),1,!0);V(ne),V(L),V(v);var ie=m(v,2),se=e=>{var n=wi(),r=S(n),i=C(r,!0);V(n),b(e=>t(i,e),[()=>Q(`clients.breakdownEmpty`)]),R(e,n)},ce=e=>{var n=ki();i(n,21,()=>X(I),e=>e.provider,(e,n)=>{var r=Oi(),a=S(r),o=S(a),s=e=>{st(e,{get provider(){return X(n).provider},size:24})};z(o,e=>{X(n).provider&&e(s)});var c=m(o),l=C(c,!0);V(a);var u=m(a,2);i(u,17,()=>X(n).accounts,e=>e.id,(e,n)=>{var r=Di(),a=S(r),o=C(a,!0),s=m(a,2);i(s,21,()=>X(n).rows,e=>e.kind,(e,n)=>{var r=Ei(),a=S(r),o=C(a,!0),s=m(a,2);i(s,21,()=>F(X(n)),e=>e.id,(e,t)=>{var n=Ti();let r;b((e,i)=>{D(n,1,ae([`segment`,X(t).kind]),`svelte-15ihc32`),K(n,`title`,`${X(t).label??``}: ${e??``}`),r=oe(n,``,r,{width:i,background:X(t).color||void 0})},[()=>T(X(t).points),()=>`${Math.min(100,X(t).points)}%`]),R(e,n)}),V(s);var c=m(s,2),l=C(c,!0),u=m(c,2),d=S(u);Ae(d,{size:14});var f=m(d,1,!0);V(u),V(r),b((e,n,r,i,a)=>{t(o,e),K(s,`aria-label`,n),t(l,r),K(u,`title`,i),t(f,a)},[()=>jt(X(n).kind),()=>F(X(n)).map(e=>`${e.label} ${T(e.points)}`).join(`, `),()=>Q(`clients.used`,{value:Wt(X(n).used)}),()=>Q(`quotas.resetAt`,{date:qt(new Date(X(n).reset*1e3).toISOString())}),()=>Jt(new Date(X(n).reset*1e3).toISOString())]),R(e,r)}),V(s),V(r),b(e=>t(o,e),[()=>k(X(n).id)]),R(e,r)}),V(r),b(()=>t(l,X(n).name)),R(e,r)}),V(n),R(e,n)};z(ie,e=>{X(I).length?e(ce,-1):e(se)}),b((e,n,r,i,a,o)=>{t(f,e),t(A,n),K(N,`title`,r),K(N,`aria-label`,i),t(Y,a),t(re,o)},[()=>Q(`clients.keys`),()=>Q(`clients.breakdown`),()=>Q(`clients.breakdownInfo`),()=>Q(`clients.breakdownInfo`),()=>Q(`clients.outside`),()=>Q(`clients.unexplained`)]),R(e,o)};z(fe,e=>{n.report&&!X(s).length?e(Z):X(s).length&&e(pe,1)});var me=m(fe,2),he=e=>{zr(e,{get client(){return X(d).client},get clients(){return X(s)},get accounts(){return n.accounts},close:()=>M(d,null),saved:H})};z(me,e=>{X(d)&&e(he)});var ge=m(me,2),_e=e=>{Kr(e,{get name(){return X(f).name},get key(){return X(f).key},close:()=>M(f,null)})};z(ge,e=>{X(f)&&e(_e)});var ve=m(ge,2),ye=e=>{let n=W(()=>X(p));{let r=W(()=>Q(X(n).kind===`rotate`?`clients.rotateTitle`:`clients.deleteTitle`,{name:X(n).client.name}));Ar(e,{get title(){return X(r)},close:()=>M(p,null),get locked(){return X(h)},children:(e,r)=>{var i=Fi(),a=x(i),o=e=>{var n=ji(),r=C(n,!0);b(e=>t(r,e),[()=>Q(`clients.rotateText`)]),R(e,n)},c=e=>{var n=Ni(),r=x(n),i=C(r,!0),a=m(r),o=e=>{var n=Mi(),r=C(n,!0);b(e=>t(r,e),[()=>Q(`clients.deleteLast`)]),R(e,n)};z(a,e=>{X(s).length===1&&e(o)}),b(e=>t(i,e),[()=>Q(`clients.deleteText`)]),R(e,n)};z(a,e=>{X(n).kind===`rotate`?e(o):e(c,-1)});var u=m(a,2),d=e=>{var n=Pi(),r=C(n,!0);b(()=>t(r,X(g))),R(e,n)};z(u,e=>{X(g)&&e(d)});var f=m(u,2),_=S(f),v=C(_,!0),y=m(_),w=C(y,!0);V(f),b((e,r)=>{_.disabled=X(h),t(v,e),D(y,1,ae([`button`,X(n).kind===`delete`?`danger`:`primary`])),y.disabled=X(h),t(w,r)},[()=>Q(`common.cancel`),()=>Q(X(n).kind===`rotate`?`clients.rotateButton`:`clients.deleteButton`)]),l(`click`,_,()=>M(p,null)),l(`click`,y,U),R(e,i)},$$slots:{default:!0}})}};z(ve,e=>{X(p)&&e(ye)}),b((e,r)=>{t(Y,e),se.disabled=!n.report||!!n.busy,t(le,r)},[()=>Q(`clients.title`),()=>Q(`clients.new`)]),l(`click`,se,()=>M(d,{client:null},!0)),R(e,G),L()}s([`click`]);var Ri=new Set([`$$slots`,`$$events`,`$$legacy`]);function zi(e,t){let n=T(t,Ri),r=[[`path`,{d:`M7 7h10v10`}],[`path`,{d:`M7 17 17 7`}]];Z(e,G({name:`arrow-up-right`},()=>n,{get iconNode(){return r}}))}var Bi=d(` `),Vi=d(`
`),Hi=d(`

`,1),Ui=d(` `),Wi=d(`

/v1/models

`,1),Gi=d(` `),Ki=d(`

`),qi=d(` `),Ji=d(`
`),Yi=d(`

`,1),Xi=d(`

`),Zi=d(`

`),Qi=d(`

dk_...

`),$i=d(``),ea=d(`

Claude Code

 

`),ta=d(``),na=d(`

`,1);function ra(e,n){E(n,!0);let r=I(n,`clients`,19,()=>[]),a=I(n,`showEmails`,3,!1),o=J(``),s=J(!1),c=J(!1),d=J(``),f=J(`openai`),p=W(()=>n.models.filter(e=>`${e.id} ${e.name} ${e.provider}`.toLowerCase().includes(X(o).toLowerCase()))),h=W(()=>new Map(r().map(e=>[e.id,e.name]))),g=W(()=>n.calls.filter(e=>(!X(s)||e.status>=400||e.error)&&`${e.model} ${e.provider} ${e.account_id} ${e.client_id?X(h).get(e.client_id)??``:``}`.toLowerCase().includes(X(o).toLowerCase()))),_=W(()=>n.summary?.requests?Math.round((n.summary.requests-n.summary.errors)/n.summary.requests*100):null),v=W(()=>n.summary?.client_api_base_url??(typeof window>`u`?``:`${window.location.origin}/v1`)),y=W(()=>`$env:ANTHROPIC_BASE_URL = '${X(v).replace(/\/v1$/,``).replace(/'/g,`''`)}'\n$env:ANTHROPIC_AUTH_TOKEN = 'dk_...'\nclaude`);async function w(e){try{await Hr(e),M(c,!0),M(d,``)}catch{M(c,!1),M(d,Q(`common.copyRefused`),!0)}}var T=u(),O=x(T),A=e=>{var r=Hi(),a=x(r),o=S(a),s=S(o),c=C(s,!0),u=m(s),d=C(u,!0);V(o);var f=m(o);let p;var h=m(S(f),1,!0);V(f),V(a);var g=m(a,2),v=S(g),y=S(v),w=C(y,!0),T=m(y),E=C(T,!0),O=m(T),k=C(O,!0);V(v);var A=m(v),j=S(A),M=C(j,!0),N=m(j),P=C(N,!0),F=m(N),I=C(F,!0);V(A);var L=m(A),B=S(L),H=C(B,!0),U=m(B),G=C(U,!0),K=m(U),ee=C(K,!0);V(L);var te=m(L),q=S(te),J=C(q,!0),Y=m(q),ne=C(Y,!0),re=m(Y),ie=C(re,!0);V(te);var ae=m(te),oe=S(ae),se=C(oe,!0),ce=m(oe),le=C(ce,!0),ue=m(ce),de=C(ue,!0);V(ae),V(g);var fe=m(g,2),Z=S(fe),pe=S(Z),me=C(pe,!0),he=m(pe),ge=C(he,!0);V(Z);var _e=m(Z),ve=S(_e,!0);zi(m(ve),{size:14}),V(_e),V(fe);var ye=m(fe,2),be=S(ye),xe=e=>{{let t=W(()=>Q(`overview.emptyTitle`)),r=W(()=>Q(`overview.emptyDescription`)),i=W(()=>Q(`overview.openQuickstart`));wn(e,{get title(){return X(t)},get description(){return X(r)},get action(){return X(i)},onclick:()=>n.navigate(`quickstart`)})}},Se=e=>{var r=Vi(),a=S(r),o=S(a),s=S(o),c=S(s),l=C(c,!0),u=m(c),d=C(u,!0),f=m(u),p=C(f,!0),h=m(f),g=C(h,!0),_=m(h),v=C(_,!0);V(s),V(o);var y=m(o);i(y,21,()=>n.calls.slice(0,8),e=>e.id,(e,n)=>{var r=Bi(),i=S(r),a=C(i,!0),o=m(i),s=C(o,!0),c=m(o),l=C(c,!0),u=m(c),d=S(u);let f;var p=C(d,!0);V(u);var h=m(u),g=C(h,!0);V(r),b((e,r,i)=>{t(a,X(n).model),t(s,e),t(l,r),f=D(d,1,`http-status svelte-15ozkp9`,null,f,{error:X(n).status>=400||!!X(n).error}),t(p,i),t(g,X(n).latency_ms==null?`-`:`${X(n).latency_ms} ms`)},[()=>Ut(X(n).provider),()=>qt(X(n).started_at),()=>X(n).error?Q(`table.error`):X(n).status]),R(e,r)}),V(y),V(a),V(r),b((e,n,r,i,a)=>{t(l,e),t(d,n),t(p,r),t(g,i),t(v,a)},[()=>Q(`table.model`),()=>Q(`table.provider`),()=>Q(`table.time`),()=>Q(`table.status`),()=>Q(`table.duration`)]),R(e,r)};z(be,e=>{n.calls.length?e(Se,-1):e(xe)}),V(ye),b((e,r,i,a,o,s,l,u,m,g,_,v,y,b,x,S,C,T,O,A)=>{t(c,e),t(d,r),p=D(f,1,`state-badge`,null,p,{inactive:!n.summary}),t(h,i),t(w,a),t(E,n.summary?n.summary.enabled_accounts:`-`),t(k,o),t(M,s),t(P,l),t(I,u),t(H,m),t(G,g),t(ee,_),t(J,v),t(ne,y),t(ie,b),t(se,x),t(le,S),t(de,C),t(me,T),t(ge,O),t(ve,A)},[()=>Q(`nav.overview`),()=>Q(`overview.description`),()=>Q(n.summary?`overview.connected`:`overview.disconnected`),()=>Q(`overview.activeAccounts`),()=>Q(`overview.ofAccounts`,{count:n.summary?.accounts??0}),()=>Q(`overview.requests`),()=>Gt(n.summary?.requests),()=>Q(`overview.inFlight`,{count:n.summary?.in_flight??0}),()=>Q(`overview.tokens`),()=>n.summary?Gt(n.summary.input_tokens+n.summary.output_tokens):`-`,()=>Q(`overview.tokensDetail`),()=>Q(`overview.cache`),()=>n.summary?Gt(n.summary.cache_read_tokens??0):`-`,()=>Q(`overview.cacheDetail`),()=>Q(`overview.success`),()=>X(_)==null?`-`:Q(`common.percent`,{value:X(_)}),()=>Q(`overview.errors`,{count:n.summary?.errors??0}),()=>Q(`overview.recent`),()=>Q(`overview.recentDescription`),()=>Q(`overview.viewAll`)]),l(`click`,_e,()=>n.navigate(`activity`)),R(e,r)},j=e=>{var r=Wi(),a=x(r),s=S(a),c=S(s),u=C(c,!0),d=m(c),f=C(d,!0);V(s);var h=m(s),g=C(h,!0);V(a);var _=m(a,2),v=S(_),y=S(v);k(),V(v);var w=m(v),T=S(w);Re(T,{size:15});var E=m(T);N(E),V(w),V(_);var O=m(_,2),A=S(O),j=e=>{{let t=W(()=>Q(`models.emptyTitle`)),r=W(()=>Q(`models.emptyDescription`)),i=W(()=>Q(`models.addAccount`));wn(e,{get title(){return X(t)},get description(){return X(r)},get action(){return X(i)},onclick:()=>n.navigate(`accounts`)})}},P=e=>{{let t=W(()=>Q(`models.noMatchTitle`)),n=W(()=>Q(`models.noMatchDescription`));wn(e,{get title(){return X(t)},get description(){return X(n)}})}},F=e=>{var r=Vi(),a=S(r),o=S(a),s=S(o),c=S(s),u=C(c,!0),d=m(c),f=C(d,!0),h=m(d),g=C(h,!0),_=m(h),v=C(_,!0),y=m(_),x=C(y,!0);V(s),V(o);var w=m(o);i(w,21,()=>X(p),e=>`${e.provider}:${e.id}`,(e,r)=>{var i=Ui(),a=S(i),o=C(a,!0),s=m(a),c=C(s,!0),u=m(s),d=S(u),f=S(d);st(f,{get provider(){return X(r).provider},size:17});var p=m(f,1,!0);V(d),V(u);var h=m(u),g=C(h,!0),_=m(h),v=S(_);let y;V(_),V(i),b((e,i,a)=>{t(o,X(r).name??X(r).id),t(c,X(r).id),t(p,e),t(g,i),y=D(v,1,`switch`,null,y,{on:X(r).enabled!==!1}),K(v,`aria-checked`,X(r).enabled!==!1),K(v,`aria-label`,a),v.disabled=!!n.busy},[()=>Ut(X(r).provider),()=>Gt(X(r).context_length??void 0),()=>Q(`common.enable`,{name:X(r).name??X(r).id})]),l(`click`,v,()=>n.toggleModel(X(r))),R(e,i)}),V(w),V(a),V(r),b((e,n,r,i,a)=>{t(u,e),t(f,n),t(g,r),t(v,i),t(x,a)},[()=>Q(`table.model`),()=>Q(`table.id`),()=>Q(`table.provider`),()=>Q(`table.context`),()=>Q(`table.available`)]),R(e,r)};z(A,e=>{n.models.length?X(p).length?e(F,-1):e(P,1):e(j)}),V(O),b((e,n,r,i,a,o)=>{t(u,e),t(f,n),t(g,r),t(y,`${i??``} `),K(E,`aria-label`,a),K(E,`placeholder`,o)},[()=>Q(`nav.models`),()=>Q(`models.description`),()=>Q(`models.count`,{count:n.models.length}),()=>Q(`models.endpoint`),()=>Q(`models.search`),()=>Q(`models.search`)]),Y(E,()=>X(o),e=>M(o,e)),R(e,r)},P=e=>{var r=Yi(),c=x(r),l=S(c),u=S(l),d=C(u,!0),f=m(u),p=C(f,!0);V(l);var _=m(l),v=C(_,!0);V(c);var y=m(c,2),w=S(y),T=S(w);N(T);var E=m(T,1,!0);V(w);var O=m(w),k=S(O);Re(k,{size:15});var A=m(k);N(A),V(O),V(y);var j=m(y,2),P=S(j),F=e=>{{let t=W(()=>Q(n.calls.length?`activity.noMatchTitle`:`activity.emptyTitle`)),r=W(()=>Q(n.calls.length?`activity.noMatchDescription`:`activity.emptyDescription`));wn(e,{get title(){return X(t)},get description(){return X(r)}})}},I=e=>{var r=Ji(),o=S(r),s=S(o),c=S(s),l=S(c),u=C(l,!0),d=m(l),f=C(d,!0),p=m(d),_=C(p,!0),v=m(p),y=C(v,!0),x=m(v),w=C(x,!0),T=m(x),E=C(T,!0);V(c),V(s);var O=m(s);i(O,21,()=>X(g),e=>e.id,(e,r)=>{var i=qi(),o=S(i),s=C(o,!0),c=m(o),l=S(c,!0),u=m(l),d=S(u,!0),f=m(d),p=e=>{var n=Gi(),i=C(n,!0);b((e,r)=>{K(n,`title`,e),t(i,r)},[()=>Q(`activity.client`,{name:X(h).get(X(r).client_id)??``}),()=>X(h).get(X(r).client_id)]),R(e,n)},g=W(()=>X(r).client_id&&X(h).has(X(r).client_id));z(f,e=>{X(g)&&e(p)}),V(u);var _=m(u),v=e=>{var n=Ki(),i=C(n,!0);b(()=>t(i,X(r).error)),R(e,n)};z(_,e=>{X(r).error&&e(v)}),V(c);var y=m(c),x=C(y,!0),w=m(y),T=S(w);let E;var O=C(T,!0);V(w);var k=m(w),A=C(k,!0),j=m(k),M=C(j,!0);V(i),b((e,n,i,a,o)=>{t(s,e),t(l,X(r).model),t(d,n),t(x,i),E=D(T,1,`http-status svelte-15ozkp9`,null,E,{error:X(r).status>=400||!!X(r).error}),t(O,a),t(A,X(r).latency_ms==null?`-`:`${X(r).latency_ms} ms`),t(M,o)},[()=>qt(X(r).started_at),()=>Rt(n.accounts.find(e=>e.id===X(r).account_id)?.name??X(r).account_id??Q(`activity.unknownAccount`),a()),()=>Ut(X(r).provider),()=>X(r).error?Q(`table.error`):X(r).status,()=>Gt((X(r).input_tokens??0)+(X(r).output_tokens??0))]),R(e,i)}),V(O),V(o),V(r),b((e,n,r,i,a,o)=>{t(u,e),t(f,n),t(_,r),t(y,i),t(w,a),t(E,o)},[()=>Q(`table.time`),()=>Q(`table.modelAccount`),()=>Q(`table.provider`),()=>Q(`table.status`),()=>Q(`table.duration`),()=>Q(`table.tokens`)]),R(e,r)};z(P,e=>{X(g).length?e(I,-1):e(F)}),V(j),b((e,n,r,i,a,o)=>{t(d,e),t(p,n),t(v,r),t(E,i),K(A,`aria-label`,a),K(A,`placeholder`,o)},[()=>Q(`activity.title`),()=>Q(`activity.description`),()=>Q(`activity.count`,{count:n.calls.length}),()=>Q(`activity.onlyErrors`),()=>Q(`activity.search`),()=>Q(`activity.searchPlaceholder`)]),B(T,()=>X(s),e=>M(s,e)),Y(A,()=>X(o),e=>M(o,e)),R(e,r)},F=e=>{var r=na(),i=x(r),a=S(i),o=C(a,!0);V(i);var s=m(i,2),u=S(s);let p;var h=C(u,!0),g=m(u);let _;V(s);var T=m(s,2),E=S(T),O=e=>{var r=Xi(),i=S(r),a=S(i),o=C(a,!0),s=m(a),c=S(s,!0);zi(m(c),{size:18}),V(s),V(i),V(r),b((e,n)=>{t(o,e),t(c,n)},[()=>Q(`common.connectAccount`),()=>Q(`quickstart.openAccounts`)]),l(`click`,s,()=>n.navigate(`accounts`)),R(e,r)};z(E,e=>{n.accounts.length||e(O)});var k=m(E,2),A=e=>{var r=Qi(),i=S(r),a=S(i),o=C(a,!0),s=m(a),u=S(s),d=C(u,!0),f=m(u),p=S(f),h=e=>{Dt(e,{size:20})},g=e=>{Vr(e,{size:20})};z(p,e=>{X(c)?e(h):e(g,-1)}),V(f),V(s);var _=m(s),y=S(_,!0),x=m(y,2,!0);V(_);var T=m(_),E=e=>{var n=Zi(),r=C(n,!0);b(e=>t(r,e),[()=>Q(`quickstart.keyRequired`)]),R(e,n)};z(T,e=>{n.summary&&!n.summary.clients&&e(E)});var D=m(T),O=S(D,!0);zi(m(O),{size:18}),V(D),V(i),V(r),b((e,n,r,i,a)=>{t(o,e),t(d,X(v)),K(f,`aria-label`,n),t(y,r),t(x,i),t(O,a)},[()=>Q(`quickstart.baseUrl`),()=>Q(`quickstart.copyUrl`),()=>Q(`quickstart.openaiHint1`),()=>Q(`quickstart.openaiHint2`),()=>Q(`quickstart.chooseModel`)]),l(`click`,f,()=>w(X(v))),l(`click`,D,()=>n.navigate(`models`)),R(e,r)},j=e=>{var r=ea(),i=S(r),a=m(S(i)),o=C(a,!0),s=m(a),u=S(s),d=S(u),f=C(d,!0);V(u);var p=m(u),h=S(p),g=e=>{Dt(e,{size:20})},_=e=>{Vr(e,{size:20})};z(h,e=>{X(c)?e(g):e(_,-1)}),V(p),V(s);var v=m(s),x=C(v,!0),T=m(v),E=e=>{var n=Zi(),r=C(n,!0);b(e=>t(r,e),[()=>Q(`quickstart.keyRequired`)]),R(e,n)};z(T,e=>{n.summary&&!n.summary.clients&&e(E)});var D=m(T),O=e=>{var r=$i(),i=S(r,!0);zi(m(i),{size:18}),V(r),b(e=>t(i,e),[()=>Q(`quickstart.connectClaude`)]),l(`click`,r,()=>n.navigate(`accounts`)),R(e,r)},k=W(()=>!n.accounts.some(e=>e.provider===`claude`&&e.enabled));z(D,e=>{X(k)&&e(O)}),V(i),V(r),b((e,n,r)=>{t(o,e),t(f,X(y)),K(p,`aria-label`,n),t(x,r)},[()=>Q(`quickstart.powershell`),()=>Q(`quickstart.copyClaude`),()=>Q(`quickstart.claudeHint`)]),l(`click`,p,()=>w(X(y))),R(e,r)};z(k,e=>{X(f)===`openai`?e(A):e(j,-1)});var N=m(k,2),P=e=>{var n=ta(),r=C(n,!0);b(()=>t(r,X(d))),R(e,n)};z(N,e=>{X(d)&&e(P)}),V(T),b((e,n,r)=>{t(o,e),K(s,`aria-label`,n),p=D(u,1,`button`,null,p,{primary:X(f)===`openai`}),K(u,`aria-pressed`,X(f)===`openai`),t(h,r),_=D(g,1,`button`,null,_,{primary:X(f)===`claude`}),K(g,`aria-pressed`,X(f)===`claude`)},[()=>Q(`nav.setupTool`),()=>Q(`quickstart.chooseTool`),()=>Q(`provider.openaiCompatible`)]),l(`click`,u,()=>{M(f,`openai`),M(c,!1),M(d,``)}),l(`click`,g,()=>{M(f,`claude`),M(c,!1),M(d,``)}),R(e,r)};z(O,e=>{n.screen===`overview`?e(A):n.screen===`models`?e(j,1):n.screen===`activity`?e(P,2):n.screen===`quickstart`&&e(F,3)}),R(e,T),L()}s([`click`]);var ia=new Set([`$$slots`,`$$events`,`$$legacy`]);function aa(e,t){let n=T(t,ia),r=[[`path`,{d:`M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z`}],[`path`,{d:`M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7`}],[`path`,{d:`M7 3v4a1 1 0 0 0 1 1h7`}]];Z(e,G({name:`save`},()=>n,{get iconNode(){return r}}))}var oa=new Set([`$$slots`,`$$events`,`$$legacy`]);function sa(e,t){let n=T(t,oa),r=[[`path`,{d:`M15 6a9 9 0 0 0-9 9V3`}],[`circle`,{cx:`18`,cy:`6`,r:`3`}],[`circle`,{cx:`6`,cy:`18`,r:`3`}]];Z(e,G({name:`git-branch`},()=>n,{get iconNode(){return r}}))}var ca=new Set([`$$slots`,`$$events`,`$$legacy`]);function la(e,t){let n=T(t,ca),r=[[`path`,{d:`m5 8 6 6`}],[`path`,{d:`m4 14 6-6 2-3`}],[`path`,{d:`M2 5h12`}],[`path`,{d:`M7 2h1`}],[`path`,{d:`m22 22-5-10-5 10`}],[`path`,{d:`M14 18h6`}]];Z(e,G({name:`languages`},()=>n,{get iconNode(){return r}}))}var ua=d(`

`);function da(e,n){E(n,!0);var r=ua(),i=S(r),a=S(i),o=C(a,!0),s=m(a),c=C(s,!0);V(i);var u=m(i,2),d=S(u);la(d,{size:18});var f=m(d),p=S(f),h=C(p,!0);p.value=p.__value=`auto`;var g=m(p),_=C(g,!0);g.value=g.__value=`en`;var v=m(g),y=C(v,!0);v.value=v.__value=`fr`,V(f);var x;w(f),V(u),V(r),b((e,n,r,i,a,s,l)=>{t(o,e),t(c,n),K(f,`aria-label`,r),t(h,i),t(_,a),t(y,s),x!==(x=l)&&(f.value=(f.__value=x)??``,re(f,x))},[()=>Q(`settings.language`),()=>Q(`settings.languageDescription`),()=>Q(`settings.language`),()=>Q(`settings.languageAuto`),()=>Q(`settings.languageEnglish`),()=>Q(`settings.languageFrench`),()=>gt()]),l(`change`,f,e=>bt(e.currentTarget.value)),R(e,r),L()}s([`change`]);var fa=new Set([`$$slots`,`$$events`,`$$legacy`]);function pa(e,t){let n=T(t,fa),r=[[`path`,{d:`M12 15V3`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`}],[`path`,{d:`m7 10 5 5 5-5`}]];Z(e,G({name:`download`},()=>n,{get iconNode(){return r}}))}var ma=new Set([`$$slots`,`$$events`,`$$legacy`]);function ha(e,t){let n=T(t,ma),r=[[`path`,{d:`m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3`}],[`path`,{d:`M12 9v4`}],[`path`,{d:`M12 17h.01`}]];Z(e,G({name:`triangle-alert`},()=>n,{get iconNode(){return r}}))}var ga=d(``),_a=d(`

`),va=d(`

`);function ya(e,n){E(n,!0);let r=J(!1),i=J(``),a=J(null),o=J(!1),s=J(void 0);async function c(){M(r,!0),M(i,``);try{let e=await $.exportConfig(),t=typeof e.exported_at==`string`?e.exported_at.slice(0,10):new Date().toISOString().slice(0,10),n=URL.createObjectURL(new Blob([JSON.stringify(e,null,2)],{type:`application/json`}));Object.assign(document.createElement(`a`),{href:n,download:`douane-export-${t}.json`}).click(),setTimeout(()=>URL.revokeObjectURL(n),1e3)}catch(e){M(i,e.message,!0)}finally{M(r,!1)}}async function u(e){M(i,``),M(a,null),M(o,!1);let t=e?.[0];if(X(s)&&(X(s).value=``),!t)return;if(t.size>33554432){M(i,Q(`backup.tooLarge`,{name:t.name}),!0);return}let n;try{n=JSON.parse(await t.text())}catch{M(i,Q(`notice.invalidJson`,{name:t.name}),!0);return}n?.format!==`douane-export`||!Array.isArray(n.accounts)?M(i,Q(`backup.notExport`,{name:t.name}),!0):M(a,{name:t.name,bundle:n,count:n.accounts.length},!0)}async function d(){X(a)&&await n.restore(X(a).bundle,X(o))&&M(a,null)}var f=va(),p=S(f),h=S(p),g=C(h,!0),_=m(h),v=C(_,!0);V(p);var y=m(p,2),x=S(y),w=S(x);ha(w,{size:18});var T=m(w),D=C(T,!0);V(x);var k=m(x,2),A=S(k),j=S(A);pa(j,{size:16});var P=m(j,1,!0);V(A);var F=m(A,2),I=S(F);Jn(I,{size:16});var H=m(I,1,!0);V(F);var U=m(F,2);O(U,e=>M(s,e),()=>X(s)),V(k);var W=m(k,2),G=e=>{var n=ga(),r=C(n,!0);b(()=>t(r,X(i))),R(e,n)};z(W,e=>{X(i)&&e(G)});var ee=m(W,2),te=e=>{var r=_a(),i=S(r),s=C(i,!0),c=m(i,2),u=S(c);N(u);var f=m(u),p=C(f,!0);V(c);var h=m(c,2),g=S(h),_=C(g,!0),v=m(g,2),y=C(v,!0);V(h),V(r),b((e,i,a,o,c)=>{K(r,`aria-label`,e),t(s,i),t(p,a),g.disabled=!!n.busy,t(_,o),v.disabled=n.busy===`restore`,t(y,c)},[()=>Q(`backup.restore`),()=>Q(X(a).count===1?`backup.confirm.one`:`backup.confirm.other`,{count:X(a).count,name:X(a).name}),()=>Q(`backup.withSettings`),()=>n.busy===`restore`?Q(`backup.restoring`):Q(`backup.confirmButton`),()=>Q(`common.cancel`)]),B(u,()=>X(o),e=>M(o,e)),l(`click`,g,d),l(`click`,v,()=>M(a,null)),R(e,r)};z(ee,e=>{X(a)&&e(te)}),V(y),V(f),b((e,i,a,o,s,c)=>{t(g,e),t(v,i),t(D,a),A.disabled=X(r)||!!n.busy,t(P,o),F.disabled=!!n.busy,t(H,s),K(U,`aria-label`,c)},[()=>Q(`backup.title`),()=>Q(`backup.description`),()=>Q(`backup.warning`),()=>X(r)?Q(`backup.exporting`):Q(`backup.export`),()=>Q(`backup.restore`),()=>Q(`backup.restore`)]),l(`click`,A,c),l(`click`,F,()=>X(s)?.click()),l(`change`,U,e=>u(e.currentTarget.files)),R(e,f),L()}s([`click`,`change`]);var ba=d(``),xa=d(``),Sa=d(``),Ca=d(`

`),wa=d(`

`,1);function Ta(n,r){E(r,!0);let a=J(e(o(()=>({...r.settings,provider_strategies:{...r.settings.provider_strategies}})))),s=[`round-robin`,`fill-first`,`reset-first`,`smart`];async function c(e){let t={strategy:X(a).strategy,provider_strategies:X(a).provider_strategies};M(a,{...X(a),...e},!0),await r.save(X(a))||M(a,{...X(a),...t},!0)}function u(e,t){let n={...X(a).provider_strategies};t?n[e]=t:delete n[e],c({provider_strategies:n})}var d=wa(),f=x(d),p=S(f),g=C(p,!0);V(f);var _=m(f,2),v=S(_);sa(v,{size:18});var y=m(v),T=C(y,!0);V(_);var O=m(_,2),k=S(O),A=S(k),j=S(A),I=C(j,!0),B=m(j),U=C(B,!0);V(A);var W=m(A);i(W,20,()=>s,e=>e,(e,n)=>{var i=ba();let o;var s=S(i);N(s);var u=m(s),d=S(u,!0),f=m(d),p=C(f,!0);V(u),V(i),b((e,c)=>{o=D(i,1,`strategy-option svelte-eyvqa5`,null,o,{chosen:X(a).strategy===n}),F(s,n),H(s,X(a).strategy===n),s.disabled=!!r.busy,t(d,e),t(p,c)},[()=>Q(`strategy.${n}.label`),()=>Q(`strategy.${n}.desc`)]),l(`change`,s,()=>c({strategy:n})),R(e,i)}),V(W),V(k);var G=m(k,2),K=S(G),ee=S(K),te=C(ee,!0),q=m(ee),ne=C(q,!0);V(K);var ie=m(K),ae=S(ie);i(ae,17,()=>r.providers,e=>e.id,(e,n)=>{var o=Sa(),c=S(o),d=S(c);st(d,{get provider(){return X(n).id},size:22});var f=m(d,1,!0);V(c);var p=m(c),h=S(p),g=C(h,!0);h.value=h.__value=``;var _=m(h);i(_,16,()=>s,e=>e,(e,n)=>{var r=xa(),i=C(r,!0),a={};b(e=>{t(i,e),a!==(a=n)&&(r.value=(r.__value=a)??``)},[()=>Q(`strategy.${n}.label`)]),R(e,r)}),V(p);var v;w(p),V(o),b((e,i)=>{t(f,e),p.disabled=!!r.busy,t(g,i),v!==(v=X(a).provider_strategies?.[X(n).id]??``)&&(p.value=(p.__value=v)??``,re(p,v))},[()=>Ut(X(n).id,X(n).name),()=>Q(`settings.defaultRule`)]),l(`change`,p,e=>u(X(n).id,e.currentTarget.value)),R(e,o)});var oe=m(ae),se=e=>{var n=Ca(),r=C(n,!0);b(e=>t(r,e),[()=>Q(`settings.noProviders`)]),R(e,n)};z(oe,e=>{r.providers.length||e(se)}),V(ie),V(G);var ce=m(G,2),le=S(ce),ue=S(le),de=C(ue,!0),fe=m(ue),Z=C(fe,!0);V(le);var pe=m(le),me=S(pe),he=S(me,!0),ge=m(he),_e=S(ge);N(_e);var ve=m(_e),ye=C(ve,!0);V(ge),V(me);var be=m(me),xe=S(be,!0),Se=m(xe),Ce=S(Se);N(Ce);var we=m(Ce),Te=C(we,!0);V(Se),V(be);var Ee=m(be),De=S(Ee,!0),Oe=m(De),ke=S(Oe),Ae=C(ke,!0);ke.value=(ke.__value=null,``);var je=m(ke);i(je,17,()=>r.providers,e=>e.id,(e,n)=>{var r=xa(),i=C(r,!0),a={};b(e=>{t(i,e),a!==(a=X(n).id)&&(r.value=(r.__value=a)??``)},[()=>Ut(X(n).id,X(n).name)]),R(e,r)}),V(Oe),w(Oe),V(Ee),V(pe),V(ce);var Me=m(ce,2),Ne=S(Me),Pe=S(Ne),Fe=C(Pe,!0),Ie=m(Pe),Le=C(Ie,!0);V(Ne);var Re=m(Ne),ze=S(Re),Be=S(ze,!0),Ve=m(Be),He=S(Ve);N(He);var Ue=m(He),We=C(Ue,!0);V(Ve),V(ze),V(Re),V(Me);var Ge=m(Me,2),Ke=S(Ge),qe=S(Ke);aa(qe,{size:14});var Je=m(qe,1,!0);V(Ke),V(Ge),V(O);var Ye=m(O,2);ya(Ye,{get busy(){return r.busy},get restore(){return r.restore}}),da(m(Ye,2),{}),b((e,n,i,a,o,s,c,l,u,d,f,p,m,h,_,v,y,b,x)=>{t(g,e),t(T,n),t(I,i),t(U,a),t(te,o),t(ne,s),t(de,c),t(Z,l),t(he,u),t(ye,d),t(xe,f),t(Te,p),t(De,m),t(Ae,h),t(Fe,_),t(Le,v),t(Be,y),t(We,b),Ke.disabled=!!r.busy,t(Je,x)},[()=>Q(`nav.settings`),()=>Q(`settings.sessionNote`),()=>Q(`settings.routing`),()=>Q(`settings.routingDescription`),()=>Q(`settings.perProvider`),()=>Q(`settings.perProviderDescription`),()=>Q(`settings.refresh`),()=>Q(`settings.refreshDescription`),()=>Q(`settings.refreshEvery`),()=>Q(`settings.seconds`),()=>Q(`settings.timeout`),()=>Q(`settings.seconds`),()=>Q(`settings.defaultProvider`),()=>Q(`settings.autoProvider`),()=>Q(`settings.weekEnd`),()=>Q(`settings.weekEndDescription`),()=>Q(`settings.freeBefore`),()=>Q(`settings.hours`),()=>r.busy===`settings`?Q(`settings.saving`):Q(`settings.save`)]),h(`submit`,O,e=>{e.preventDefault(),r.save(X(a))}),Y(_e,()=>X(a).quota_refresh_seconds,e=>X(a).quota_refresh_seconds=e),Y(Ce,()=>X(a).request_timeout_seconds,e=>X(a).request_timeout_seconds=e),P(Oe,()=>X(a).default_provider,e=>X(a).default_provider=e),Y(He,()=>X(a).free_before_reset_hours,e=>X(a).free_before_reset_hours=e),R(n,d),L()}s([`change`]);var Ea=d(`

`),Da=d(` `),Oa=d(`

`),ka=d(`

`),Aa=d(``),ja=d(`

`,1),Ma=d(`

`,1),Na=d(`

`),Pa=d(``),Fa=d(``),Ia=d(`

deepseek

`),La=d(`

`),Ra=d(``),za=d(`

`),Ba=d(`

`,1),Va=d(`

`),Ha=d(``),Ua=d(`

`);function Wa(e,n){E(n,!0);let r,o=J(void 0),s=J(null),c=J(``),d=J(!1),f=J(``),p=J(!1),g=J(!1),_=J(``),v=J(``),y=J(``),T=J(``),D=J(``),k=J(``),A=J(`chat`),j=W(()=>X(v)===`openai_compatible`),F=J(!1),I=!1,B={opencode_go:`https://opencode.ai/zen/go`,xai:`https://cli-chat-proxy.grok.com/v1`,openai_compatible:``,kimi:`https://api.kimi.com/coding/v1`,qwen:`https://portal.qwen.ai/v1`};U(()=>(I=!0,r.showModal(),()=>{I=!1,r.close(),M(T,``),M(c,``)}));async function H(e){M(d,!0),M(f,``),M(c,``),M(_,``),M(g,!1),M(F,!1);try{let t=await $.startOAuth(e);I&&(M(s,t),M(_,t.user_code?Q(`connect.waiting`):``,!0))}catch(e){I&&M(f,e.message,!0)}finally{M(d,!1)}}function G(){M(p,!0),M(g,!0),M(c,``),M(T,``),n.completed()}function ee(e,t){return!I||X(s)?.id!==e.id||!t.verification_required&&(e.provider!==`antigravity`||t.error_code!==`google_project_unavailable`)?!1:(M(s,{...e,error_code:t.error_code,verification_required:t.verification_required,verification_available:t.verification_available}),M(g,!0),M(c,``),M(f,``),M(_,``),!0)}async function te(e=!0){let t=X(s);if(!t||X(d)||X(g))return t?.interval??5;M(d,!0),e&&M(f,``);try{let e=await $.oauth(t.id);return!I||X(s)?.id!==t.id||ee(t,e)?5:((e.account_id||e.account?.id)&&[`complete`,`completed`,`connected`,`success`].includes(e.status)?G():e.status===`expired`?(M(g,!0),M(f,Q(`connect.expired`),!0)):e.error||e.status===`error`?(M(g,!0),M(f,e.error||Q(`connect.refused`),!0)):M(_,Q(e.status===`exchanging`?`connect.exchanging`:t.user_code?`connect.waiting`:`connect.stillWaiting`),!0),Math.min(60,Math.max(5,e.interval??t.interval??5)))}catch(e){return I&&M(f,e.message,!0),t.interval??5}finally{M(d,!1)}}a(()=>{let e=X(s);if(!e?.user_code||X(p)||X(g))return;let t=!1,n;async function r(){let i=document.hidden?e?.interval??5:await te(!1);t||(n=setTimeout(r,(i??5)*1e3))}return n=setTimeout(r,Math.max(5,e.interval??5)*1e3),()=>{t=!0,clearTimeout(n)}});async function q(e){e.preventDefault();let t=X(s);if(t&&!X(d)){M(d,!0),M(f,``);try{if(!(await $.oauthCallback(t.id,X(c).trim(),t.state)).account?.id)throw Error(Q(`connect.unconfirmed`));I&&G()}catch(e){I&&M(f,e.message,!0);try{let e=await $.oauth(t.id);I&&X(s)?.id===t.id&&(M(g,[`error`,`expired`].includes(e.status),!0),X(g)&&M(c,``),ee(t,e))}catch{}}finally{M(d,!1)}}}async function ne(e){e.preventDefault(),M(d,!0),M(f,``);try{let e=await $.importCredential({type:X(v),name:X(y),access_token:X(T),base_url:X(D),...X(j)?{route:X(k).trim().toLowerCase(),...X(A)?{dialect:X(A)}:{}}:{}});if(e.errors?.length||!e.imported)throw Error(e.errors?.length?zt(e.errors):Q(`connect.notAdded`));I&&G()}catch(e){I&&M(f,e.message,!0)}finally{M(d,!1)}}function re(){M(s,null),M(v,``),M(T,``),M(c,``),M(f,``),M(_,``),M(g,!1),M(k,``),M(A,`chat`)}async function ie(){if(X(s)?.user_code)try{await Hr(X(s).user_code),M(F,!0),X(f)===Q(`connect.copyRefused`)&&M(f,``)}catch{M(F,!1),M(f,Q(`connect.copyRefused`),!0)}}var ae=Ua(),oe=S(ae),se=S(oe),ce=S(se),le=C(ce,!0),ue=m(ce),de=C(ue,!0);V(se);var fe=m(se);Pe(S(fe),{size:18}),V(fe),V(oe);var Z=m(oe,2),pe=e=>{var r=Ea(),i=S(r);Dt(S(i),{size:24}),V(i);var a=m(i),o=C(a,!0),s=m(a),c=C(s,!0),u=m(s),d=C(u,!0);V(r),b((e,n,r)=>{t(o,e),t(c,n),t(d,r)},[()=>Q(`connect.success`),()=>Q(`connect.successText`),()=>Q(`connect.viewAccounts`)]),l(`click`,u,function(...e){n.close?.apply(this,e)}),R(e,r)},me=e=>{var n=u(),r=x(n),i=e=>{var n=ka(),r=S(n),i=C(r,!0),a=m(r,2),o=e=>{var n=Da(),r=S(n,!0);He(m(r),{size:16}),V(n),b((e,i)=>{K(n,`href`,e),t(r,i)},[()=>`/admin/api/oauth/${encodeURIComponent(X(s).id)}/verification`,()=>Q(`common.verifyGoogle`)]),R(e,n)},c=e=>{var n=Oa(),r=C(n,!0);b(e=>t(r,e),[()=>Q(`common.openAntigravity`)]),R(e,n)};z(a,e=>{X(s).verification_available?e(o):e(c,-1)});var u=m(a,2),f=C(u,!0),p=m(u,2),h=S(p),g=C(h,!0),_=m(h),v=C(_,!0);V(p),V(n),b((e,n,r,a)=>{t(i,e),t(f,n),h.disabled=X(d),t(g,r),_.disabled=X(d),t(v,a)},[()=>Q(`connect.googleVerify`),()=>Q(`connect.afterVerify`),()=>Q(`connect.restart`),()=>Q(`common.chooseOtherProvider`)]),l(`click`,h,()=>X(s)&&H(X(s).provider)),l(`click`,_,re),R(e,n)},a=e=>{var n=Aa(),r=S(n),i=C(r,!0),a=m(r,2),o=C(a,!0),c=m(a,2),u=C(c,!0),f=m(c,2),p=S(f,!0);He(m(p),{size:16}),V(f);var h=m(f,2),g=S(h),_=C(g,!0),v=m(g),y=C(v,!0);V(h),V(n),b((e,n,r,a,s,c)=>{t(i,e),t(o,n),t(u,r),t(p,a),g.disabled=X(d),t(_,s),v.disabled=X(d),t(y,c)},[()=>Q(`connect.antigravityTitle`),()=>Q(`connect.antigravityProject`),()=>Q(`connect.antigravityFirstUse`),()=>Q(`connect.antigravityGuide`),()=>Q(`connect.restart`),()=>Q(`common.chooseOtherProvider`)]),l(`click`,g,()=>X(s)&&H(X(s).provider)),l(`click`,v,re),R(e,n)},o=e=>{var n=Pa(),r=S(n),i=e=>{var n=ja(),r=x(n),i=C(r,!0),a=m(r),o=S(a),c=C(o,!0),u=m(o),d=S(u),f=e=>{Dt(e,{size:16})},p=e=>{Vr(e,{size:16})};z(d,e=>{X(F)?e(f):e(p,-1)}),V(u),V(a),b((e,n)=>{t(i,e),t(c,X(s).user_code),K(u,`aria-label`,n)},[()=>Q(`connect.enterCode`,{provider:Ut(X(s).provider)}),()=>Q(`connect.copyCode`)]),l(`click`,u,ie),R(e,n)},a=e=>{var n=Oa(),r=C(n,!0);b(e=>t(r,e),[()=>Q(`connect.authorize`)]),R(e,n)};z(r,e=>{X(s).user_code?e(i):e(a,-1)});var o=m(r,2),u=S(o,!0);He(m(u),{size:14}),V(o);var f=m(o,2),p=e=>{var n=Ma(),r=x(n),i=C(r,!0),a=m(r),o=S(a),s=C(o,!0),l=m(o);N(l);var u=m(l),f=C(u,!0);V(a),b((e,n,r,a,o)=>{t(i,e),t(s,n),K(l,`placeholder`,r),u.disabled=a,t(f,o)},[()=>Q(`connect.callbackHint`),()=>Q(`connect.callbackLabel`),()=>Q(`connect.callbackPlaceholder`),()=>X(d)||X(g)||!X(c).trim(),()=>Q(`connect.finish`)]),h(`submit`,a,q),Y(l,()=>X(c),e=>M(c,e)),R(e,n)};z(f,e=>{X(s).user_code||e(p)});var v=m(f,2),y=S(v),w=C(y,!0),T=m(y),E=C(T,!0);V(v);var D=m(v),O=e=>{var n=Na(),r=C(n,!0);b(()=>t(r,X(_))),R(e,n)};z(D,e=>{X(_)&&e(O)}),V(n),b((e,n,r)=>{K(o,`href`,X(s).url),t(u,e),y.disabled=X(d)||X(g),t(w,n),T.disabled=X(d),t(E,r)},[()=>Q(`connect.open`),()=>Q(`connect.check`),()=>Q(`common.chooseOtherProvider`)]),l(`click`,y,()=>te()),l(`click`,T,re),R(e,n)};z(r,e=>{X(s).verification_required?e(i):X(s).provider===`antigravity`&&X(s).error_code===`google_project_unavailable`?e(a,1):e(o,-1)}),R(e,n)},he=e=>{var n=Ia(),r=S(n),a=S(r,!0),o=m(a,2,!0),s=m(o),c=C(s,!0),u=m(s,1,!0);V(r);var f=m(r),p=S(f),g=C(p,!0),_=m(p);N(_);var v=m(_),x=C(v,!0),E=m(v);N(E),K(E,`pattern`,`[a-z0-9][a-z0-9_\\-]{0,31}`);var O=m(E),j=C(O,!0),F=m(O);N(F);var I=m(F),L=C(I,!0),z=m(I);i(z,20,()=>Ot,e=>e,(e,n)=>{var r=Fa(),i=C(r,!0),a={};b(e=>{t(i,e),a!==(a=n)&&(r.value=(r.__value=a)??``)},[()=>kt(n)]),R(e,r)}),V(z),w(z);var B=m(z),H=C(B,!0),U=m(B);N(U);var W=m(U),G=C(W,!0);V(f);var ee=m(f),te=C(ee,!0);V(n),b((e,n,r,i,s,l,f,p,m,h,_,v)=>{t(a,e),t(o,n),t(c,r),t(u,i),t(g,s),t(x,l),t(j,f),t(L,p),t(H,m),W.disabled=h,t(G,_),ee.disabled=X(d),t(te,v)},[()=>Q(`connect.customIntro1`),()=>Q(`connect.customIntro2`),()=>Q(`connect.customModel`),()=>Q(`connect.customIntro3`),()=>Q(`connect.name`),()=>Q(`endpoint.route`),()=>Q(`endpoint.url`),()=>Q(`endpoint.format`),()=>Q(`endpoint.key`),()=>X(d)||!X(T).trim()||!X(k).trim(),()=>Q(`connect.addEndpoint`),()=>Q(`common.chooseOtherProvider`)]),h(`submit`,f,ne),Y(_,()=>X(y),e=>M(y,e)),Y(E,()=>X(k),e=>M(k,e)),Y(F,()=>X(D),e=>M(D,e)),P(z,()=>X(A),e=>M(A,e)),Y(U,()=>X(T),e=>M(T,e)),l(`click`,ee,re),R(e,n)},ge=e=>{var n=La(),r=S(n),i=C(r,!0),a=m(r),o=S(a),s=C(o,!0),c=m(o);N(c);var u=m(c),f=C(u,!0),p=m(u);N(p);var g=m(p),_=C(g,!0),v=m(g);N(v);var x=m(v),w=C(x,!0);V(a);var E=m(a),O=C(E,!0);V(n),b((e,n,r,a,o,l,u,p,m)=>{t(i,e),t(s,n),K(c,`placeholder`,r),t(f,a),t(_,o),K(v,`placeholder`,l),x.disabled=u,t(w,p),E.disabled=X(d),t(O,m)},[()=>Q(`connect.tokenIntro`),()=>Q(`connect.accountName`),()=>Q(`connect.accountNamePlaceholder`),()=>Q(`connect.token`),()=>Q(`connect.providerUrl`),()=>Q(`connect.providerUrlPlaceholder`),()=>X(d)||!X(T).trim(),()=>Q(`connect.addAccount`),()=>Q(`common.chooseOtherProvider`)]),h(`submit`,a,ne),Y(c,()=>X(y),e=>M(y,e)),Y(p,()=>X(T),e=>M(T,e)),Y(v,()=>X(D),e=>M(D,e)),l(`click`,E,re),R(e,n)},_e=e=>{var r=Ba(),a=x(r),s=S(a);i(s,17,()=>n.providers,e=>e.id,(e,n)=>{var r=Ra(),i=S(r);st(S(i),{get provider(){return X(n).id},size:28}),V(i);var a=m(i),o=S(a,!0),s=m(o),c=C(s,!0);V(a),Ie(m(a),{size:15}),V(r),b((e,n)=>{r.disabled=X(d),t(o,e),t(c,n)},[()=>Ut(X(n).id,X(n).name),()=>Q(X(n).oauth?`connect.oauthOption`:X(n).id===`openai_compatible`?`connect.apiKeyOption`:`connect.tokenOption`)]),l(`click`,r,()=>{X(n).oauth?H(X(n).id):(M(v,X(n).id,!0),M(D,X(n).base_url??B[X(n).id]??``,!0),M(y,X(n).id===`openai_compatible`?``:Ut(X(n).id,X(n).name),!0))}),R(e,r)});var c=m(s),u=e=>{var n=za(),r=C(n,!0);b(e=>t(r,e),[()=>Q(`connect.noProvider`)]),R(e,n)};z(c,e=>{n.providers.length||e(u)}),V(a);var f=m(a,2),p=S(f),h=S(p),g=C(h,!0),_=m(h),w=C(_,!0);V(p);var T=m(p),E=S(T);Jn(E,{size:14});var k=m(E,1,!0);V(T);var A=m(T);O(A,e=>M(o,e),()=>X(o)),V(f),b((e,n,r)=>{t(g,e),t(w,n),T.disabled=X(d),t(k,r)},[()=>Q(`connect.haveFile`),()=>Q(`connect.importFiles`),()=>Q(`common.import`)]),l(`click`,T,()=>X(o)?.click()),l(`change`,A,e=>{e.currentTarget.files?.length&&(n.importFiles(e.currentTarget.files),n.close())}),R(e,r)};z(Z,e=>{X(p)?e(pe):X(s)?e(me,1):X(v)&&X(j)?e(he,2):X(v)?e(ge,3):e(_e,-1)});var ve=m(Z,2),ye=e=>{var n=Va(),r=C(n,!0);b(e=>t(r,e),[()=>Q(`connect.pending`)]),R(e,n)};z(ve,e=>{X(d)&&e(ye)});var be=m(ve,2),xe=e=>{var n=Ha(),r=C(n,!0);b(()=>t(r,X(f))),R(e,n)};z(be,e=>{X(f)&&e(xe)}),V(ae),O(ae,e=>r=e,()=>r),b((e,n,r)=>{t(le,e),t(de,n),K(fe,`aria-label`,r)},[()=>Q(`common.connectAccount`),()=>Q(`connect.subtitle`),()=>Q(`common.close`)]),h(`cancel`,ae,function(...e){n.close?.apply(this,e)}),l(`click`,fe,function(...e){n.close?.apply(this,e)}),R(e,ae),L()}s([`click`,`change`]);var Ga=p(``);function Ka(e,t){let n=I(t,`size`,3,38);var r=Ga();b(()=>{K(r,`width`,n()),K(r,`height`,n())}),R(e,r)}var qa=d(``),Ja=d(``),Ya=d(` `),Xa=d(``),Za=d(``),Qa=d(``),$a=d(`
`),eo=d(`
`),to=d(`

`,1),no=d(``),ro=d(`
`,1);function io(e,n){E(n,!0);let r=[{label:`nav.subscriptions`,items:[{id:`quotas`,label:`nav.quotas`,icon:me},{id:`overview`,label:`nav.overview`,icon:ge},{id:`accounts`,label:`nav.accounts`,icon:ve},{id:`clients`,label:`nav.clients`,icon:be},{id:`models`,label:`nav.models`,icon:Se}]},{label:`nav.service`,items:[{id:`activity`,label:`nav.activity`,icon:we},{id:`settings`,label:`nav.settings`,icon:Ee},{id:`quickstart`,label:`nav.quickstart`,icon:Oe}]}],a=r.flatMap(e=>e.items).filter(e=>[`quotas`,`accounts`,`activity`,`settings`].includes(e.id)),o=J(`quotas`),s=J(!1),d=J(!1),p=J([]),_=J([]),y=J([]),w=J([]),T=J([]),O=J(null),k=J(null),A=J(null),j=J(!0),N=J(``),P=J(``),F=J(``),I=W(()=>Q(r.flatMap(e=>e.items).find(e=>e.id===X(o))?.label??`nav.quotas`)),B=null;async function H(e=!1){if(B)return B;e||M(j,!0),B=(async()=>{let e=await Promise.allSettled([$.accounts(),$.quotas(),$.providers(),$.models(),$.calls(),$.status(),$.settings(),$.clients()]),t=[];e[0].status===`fulfilled`?M(p,e[0].value.accounts):t.push(e[0].reason.message),e[1].status===`fulfilled`?M(_,e[1].value.quotas):t.push(e[1].reason.message),e[2].status===`fulfilled`?M(y,e[2].value.providers):t.push(e[2].reason.message),e[3].status===`fulfilled`?M(w,e[3].value.models):t.push(e[3].reason.message),e[4].status===`fulfilled`?M(T,e[4].value.calls):t.push(e[4].reason.message),e[5].status===`fulfilled`?M(O,e[5].value):(M(O,null),t.push(e[5].reason.message)),e[6].status===`fulfilled`?M(k,e[6].value):t.push(e[6].reason.message),e[7].status===`fulfilled`?M(A,e[7].value):t.push(e[7].reason.message),M(P,[...new Set(t)].join(` `),!0),M(j,!1)})();try{await B}finally{B=null}}function G(e){M(o,e,!0),M(s,!1),M(P,``),M(F,``),location.hash=e,window.scrollTo(0,0)}function te(){let e=location.hash.slice(1);r.flatMap(e=>e.items).some(t=>t.id===e)&&M(o,e,!0)}async function q(e,t,n=``){if(X(N))return!1;M(N,e,!0),M(P,``),M(F,``);try{return await t(),B&&await B,await H(!0),M(F,n,!0),!0}catch(e){return M(P,e.message,!0),!1}finally{M(N,``)}}function Y(e){return q(`quotas`,()=>$.refreshQuotas(e))}async function ne(e,t){let n={...X(k)?.quota_display};t===`average`?n[e]=t:delete n[e],await q(`settings`,()=>$.settingsSave({quota_display:n}),Q(`notice.displaySaved`))}async function re(e,t){let n={...X(k)?.quota_windows};t.hidden?.length||t.primary?n[e]={hidden:t.hidden??[],primary:t.primary??null}:delete n[e],await q(`settings`,()=>$.settingsSave({quota_windows:n}),Q(`notice.windowsSaved`))}async function ae(e,t){if(X(N))throw Error(Q(`notice.busy`));M(N,`rename`);try{let n=await $.renameAccount(e.id,t);M(p,X(p).map(t=>t.id===e.id?n.account:t))}finally{M(N,``)}}function oe(e,t){return q(`endpoint`,()=>$.updateEndpoint(e.id,t),Q(`notice.endpointSaved`))}function se(e,t,n){return q(`reserve`,()=>$.setAccountReserve(e.id,t,n),Q(t==null?`notice.reserveRemoved`:`notice.reserveSaved`))}async function ce(e){let t=Array.from(e);await q(`import`,async()=>{let e=await Promise.all(t.map(async e=>{if(e.size>2097152)throw Error(Q(`notice.fileTooLarge`,{name:e.name}));try{return{name:e.name,content:JSON.parse(await e.text())}}catch{throw Error(Q(`notice.invalidJson`,{name:e.name}))}})),n=await $.importAccounts(e);if(n.errors?.length)throw await H(!0),Error(Q(`notice.partialImport`,{count:n.imported,errors:zt(n.errors)}));if(!n.imported)throw Error(Q(`notice.nothingImported`))},Q(`notice.imported`))}async function le(e,t){let n=0,r=await q(`restore`,async()=>{let r=await $.restore(e,t);if(n=r.restored,r.errors?.length)throw await H(!0),Error(Q(`notice.partialRestore`,{count:r.restored,errors:zt(r.errors)}))});return r&&M(F,Q(n===1?`notice.restored.one`:`notice.restored.other`,{count:n}),!0),r}U(()=>{te(),H();let e=setInterval(()=>{!document.hidden&&!X(N)&&H(!0)},15e3);return()=>clearInterval(e)});var ue=ro();g(`1uha8ag`,e=>{var t=qa();b(e=>K(t,`content`,e),[()=>Q(`page.description`)]),v(()=>{ee.title=`${X(I)??``} · douane`}),R(e,t)}),h(`hashchange`,c,te),h(`keydown`,c,e=>{e.key===`Escape`&&M(s,!1)}),h(`visibilitychange`,ee,()=>{document.hidden||H(!0)});var de=x(ue),fe=S(de),Z=e=>{var t=Ja();b(e=>K(t,`aria-label`,e),[()=>Q(`nav.closeMenu`)]),l(`click`,t,()=>M(s,!1)),R(e,t)};z(fe,e=>{X(s)&&e(Z)});var pe=m(fe,2);let he;var _e=S(pe),ye=S(_e);Ka(S(ye),{}),V(ye);var xe=m(ye,2);Pe(S(xe),{size:18}),V(xe),V(_e);var Ce=m(_e,2);i(Ce,21,()=>r,e=>e.label,(e,n)=>{var r=Za(),a=S(r),s=C(a,!0),c=m(a);i(c,17,()=>X(n).items,e=>e.id,(e,n)=>{let r=W(()=>X(n).icon);var i=Xa();let a;var s=S(i);ie(s,()=>X(r),(e,t)=>{t(e,{size:17})});var c=m(s),u=C(c,!0),d=m(c),f=e=>{var n=Ya(),r=C(n,!0);b(()=>t(r,X(p).length)),R(e,n)},h=e=>{var n=Ya(),r=C(n,!0);b(()=>t(r,X(A).clients.length)),R(e,n)};z(d,e=>{X(n).id===`accounts`&&X(p).length?e(f):X(n).id===`clients`&&X(A)?.clients.length&&e(h,1)}),V(i),b(e=>{a=D(i,1,`nav-link`,null,a,{active:X(o)===X(n).id}),K(i,`aria-current`,X(o)===X(n).id?`page`:void 0),t(u,e)},[()=>Q(X(n).label)]),l(`click`,i,()=>G(X(n).id)),R(e,i)}),V(r),b(e=>t(s,e),[()=>Q(X(n).label)]),R(e,r)}),V(Ce);var Te=m(Ce,2),De=S(Te),ke=S(De,!0);Ie(m(ke),{size:19}),V(De),V(Te),V(pe);var je=m(pe,2),Ne=S(je),Fe=S(Ne),Le=e=>{var n=Qa(),r=S(n),i=C(r,!0),a=m(r),o=C(a,!0);V(n),b(e=>{t(i,X(P)),a.disabled=X(j),t(o,e)},[()=>Q(`common.retry`)]),l(`click`,a,()=>H()),R(e,n)};z(Fe,e=>{X(P)&&e(Le)});var Re=m(Fe,2),ze=e=>{var n=$a(),r=S(n,!0),i=m(r);Pe(S(i),{size:14}),V(i),V(n),b(e=>{t(r,X(F)),K(i,`aria-label`,e)},[()=>Q(`page.dismissNotice`)]),l(`click`,i,()=>M(F,``)),R(e,n)};z(Re,e=>{X(F)&&e(ze)});var Be=m(Re,2),Ve=e=>{var n=eo(),r=S(n);Ae(r,{size:18,class:`spinning`});var i=m(r),a=C(i,!0);V(n),b(e=>t(a,e),[()=>Q(`page.loading`)]),R(e,n)};z(Be,e=>{X(j)&&!X(O)&&e(Ve)});var He=m(Be,2),Ue=e=>{Kn(e,{get accounts(){return X(p)},get quotas(){return X(_)},get providers(){return X(y)},get busy(){return X(N)},refresh:Y,rename:ae,get settings(){return X(k)},setQuotaDisplay:ne,setQuotaWindows:re,resetUpdated:()=>H(!0),connect:()=>M(d,!0)})},We=e=>{br(e,{get accounts(){return X(p)},get quotas(){return X(_)},get busy(){return X(N)},rename:ae,setReserve:se,updateEndpoint:oe,connect:()=>M(d,!0),importFiles:ce,toggle:e=>q(`account`,()=>$.setAccountEnabled(e.id,!e.enabled),Q(e.enabled?`notice.accountDisabled`:`notice.accountEnabled`)),remove:e=>q(`account`,()=>$.deleteAccount(e.id),Q(`notice.accountDeleted`))})},Ge=e=>{Li(e,{get report(){return X(A)},get accounts(){return X(p)},get busy(){return X(N)},updated:async e=>{await H(!0),M(F,e,!0)}})},Ke=e=>{var n=u(),r=x(n),i=e=>{var t=u(),n=x(t);f(n,()=>JSON.stringify(X(k)),e=>{Ta(e,{get settings(){return X(k)},get providers(){return X(y)},get busy(){return X(N)},restore:le,save:e=>q(`settings`,()=>$.settingsSave(e),Q(`notice.settingsSaved`))})}),R(e,t)},a=e=>{var n=to(),r=x(n),i=S(r),a=S(i),o=C(a,!0),s=m(a),c=C(s,!0);V(i),V(r),da(m(r),{}),b((e,n)=>{t(o,e),t(c,n)},[()=>Q(`nav.settings`),()=>Q(`page.settingsUnavailable`)]),R(e,n)};z(r,e=>{X(k)?e(i):e(a,-1)}),R(e,n)},qe=e=>{var t=u(),n=x(t);f(n,()=>X(o),e=>{{let t=W(()=>X(A)?.clients??[]);ra(e,{get screen(){return X(o)},get summary(){return X(O)},get calls(){return X(T)},get models(){return X(w)},get accounts(){return X(p)},get clients(){return X(t)},get busy(){return X(N)},navigate:G,toggleModel:e=>q(`model`,()=>$.setModelEnabled(e.id,e.enabled===!1),Q(`notice.modelUpdated`))})}}),R(e,t)};z(He,e=>{X(o)===`quotas`?e(Ue):X(o)===`accounts`?e(We,1):X(o)===`clients`?e(Ge,2):X(o)===`settings`?e(Ke,3):e(qe,-1)}),V(Ne),V(je),V(de);var Je=m(de,2),Ye=S(Je);i(Ye,17,()=>a,e=>e.id,(e,n)=>{let r=W(()=>X(n).icon);var i=no();let a;var s=S(i);ie(s,()=>X(r),(e,t)=>{t(e,{size:19})});var c=m(s),u=C(c,!0);V(i),b(e=>{K(i,`aria-current`,X(o)===X(n).id?`page`:void 0),a=D(i,1,``,null,a,{active:X(o)===X(n).id}),t(u,e)},[()=>Q(X(n).label)]),l(`click`,i,()=>G(X(n).id)),R(e,i)});var Xe=m(Ye),Ze=S(Xe);Me(Ze,{size:19});var Qe=m(Ze),$e=C(Qe,!0);V(Xe),V(Je);var et=m(Je,2),tt=e=>{Wa(e,{get providers(){return X(y)},close:()=>M(d,!1),completed:()=>{M(F,Q(`notice.accountConnected`),!0),H(!0)},importFiles:ce})};z(et,e=>{X(d)&&e(tt)}),b((e,n,r,i,a,o)=>{he=D(pe,1,`sidebar`,null,he,{"mobile-open":X(s)}),K(xe,`aria-label`,e),K(Ce,`aria-label`,n),t(ke,r),K(Je,`aria-label`,i),K(Xe,`aria-label`,a),K(Xe,`aria-expanded`,X(s)),t($e,o)},[()=>Q(`nav.closeMenu`),()=>Q(`nav.main`),()=>Q(`nav.setupTool`),()=>Q(`nav.mobile`),()=>Q(`nav.openMenu`),()=>Q(`nav.menu`)]),l(`click`,xe,()=>M(s,!1)),l(`click`,De,()=>G(`quickstart`)),l(`click`,Xe,()=>M(s,!0)),R(e,ue),L()}s([`click`]);export{io as component}; \ No newline at end of file diff --git a/dash/build/_app/immutable/nodes/2._6n1M84D.js b/dash/build/_app/immutable/nodes/2._6n1M84D.js new file mode 100644 index 0000000..8304ffe --- /dev/null +++ b/dash/build/_app/immutable/nodes/2._6n1M84D.js @@ -0,0 +1 @@ +import{$ as e,A as t,B as n,C as r,D as i,E as a,F as o,G as s,H as c,J as l,K as u,L as d,M as f,N as p,O as m,P as h,Q as g,R as _,S as v,T as y,U as b,W as x,X as S,Y as C,Z as w,_ as T,a as E,at as D,b as O,c as k,ct as A,d as j,et as M,f as N,ft as P,g as F,h as I,i as L,it as R,j as z,k as B,l as V,lt as H,m as ee,n as te,nt as U,o as W,ot as ne,p as G,pt as K,rt as q,tt as J,u as re,ut as Y,v as ie,w as ae,x as oe,y as se,z as X}from"../chunks/C2MtwMCw.js";import"../chunks/xihTtKlq.js";var ce={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":2,"stroke-linecap":`round`,"stroke-linejoin":`round`},le=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0;return!1},ue=Symbol(`lucide-context`),de=()=>R(ue),fe=new Set([`$$slots`,`$$events`,`$$legacy`,`name`,`color`,`size`,`strokeWidth`,`absoluteStrokeWidth`,`iconNode`,`children`]),pe=o(``);function Z(t,o){ne(o,!0);let s=de()??{},c=L(o,`color`,19,()=>s.color??`currentColor`),l=L(o,`size`,19,()=>s.size??24),u=L(o,`strokeWidth`,19,()=>s.strokeWidth??2),d=L(o,`absoluteStrokeWidth`,19,()=>s.absoluteStrokeWidth??!1),h=L(o,`iconNode`,19,()=>[]),g=E(o,fe),_=q(()=>d()?Number(u())*24/Number(l()):u());var v=pe();j(v,e=>({...ce,...e,...g,width:l(),height:l(),stroke:c(),"stroke-width":n(_),class:[`lucide-icon lucide`,s.class,o.name&&`lucide-${o.name}`,o.class]}),[()=>!o.children&&!le(g)&&{"aria-hidden":`true`}]);var y=S(v);i(y,17,h,m,(e,t)=>{var i=q(()=>K(n(t),2));let a=()=>n(i)[0],o=()=>n(i)[1];var s=p(),c=w(s);r(c,a,!0,(e,t)=>{j(e,()=>({...o()}))}),f(e,s)});var b=e(y);a(b,()=>o.children??P),Y(v),f(t,v),D()}var me=new Set([`$$slots`,`$$events`,`$$legacy`]);function he(e,t){let n=E(t,me),r=[[`path`,{d:`m12 14 4-4`}],[`path`,{d:`M3.34 19a10 10 0 1 1 17.32 0`}]];Z(e,W({name:`gauge`},()=>n,{get iconNode(){return r}}))}var ge=new Set([`$$slots`,`$$events`,`$$legacy`]);function _e(e,t){let n=E(t,ge),r=[[`rect`,{width:`7`,height:`9`,x:`3`,y:`3`,rx:`1`}],[`rect`,{width:`7`,height:`5`,x:`14`,y:`3`,rx:`1`}],[`rect`,{width:`7`,height:`9`,x:`14`,y:`12`,rx:`1`}],[`rect`,{width:`7`,height:`5`,x:`3`,y:`16`,rx:`1`}]];Z(e,W({name:`layout-dashboard`},()=>n,{get iconNode(){return r}}))}var ve=new Set([`$$slots`,`$$events`,`$$legacy`]);function ye(e,t){let n=E(t,ve),r=[[`path`,{d:`M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2`}],[`path`,{d:`M16 3.128a4 4 0 0 1 0 7.744`}],[`path`,{d:`M22 21v-2a4 4 0 0 0-3-3.87`}],[`circle`,{cx:`9`,cy:`7`,r:`4`}]];Z(e,W({name:`users`},()=>n,{get iconNode(){return r}}))}var be=new Set([`$$slots`,`$$events`,`$$legacy`]);function xe(e,t){let n=E(t,be),r=[[`path`,{d:`M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z`}],[`circle`,{cx:`16.5`,cy:`7.5`,r:`.5`,fill:`currentColor`}]];Z(e,W({name:`key-round`},()=>n,{get iconNode(){return r}}))}var Se=new Set([`$$slots`,`$$events`,`$$legacy`]);function Ce(e,t){let n=E(t,Se),r=[[`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`}],[`path`,{d:`m7 16.5-4.74-2.85`}],[`path`,{d:`m7 16.5 5-3`}],[`path`,{d:`M7 16.5v5.17`}],[`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`}],[`path`,{d:`m17 16.5-5-3`}],[`path`,{d:`m17 16.5 4.74-2.85`}],[`path`,{d:`M17 16.5v5.17`}],[`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`}],[`path`,{d:`M12 8 7.26 5.15`}],[`path`,{d:`m12 8 4.74-2.85`}],[`path`,{d:`M12 13.5V8`}]];Z(e,W({name:`boxes`},()=>n,{get iconNode(){return r}}))}var we=new Set([`$$slots`,`$$events`,`$$legacy`]);function Te(e,t){let n=E(t,we),r=[[`path`,{d:`M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2`}]];Z(e,W({name:`activity`},()=>n,{get iconNode(){return r}}))}var Ee=new Set([`$$slots`,`$$events`,`$$legacy`]);function De(e,t){let n=E(t,Ee),r=[[`path`,{d:`M14 17H5`}],[`path`,{d:`M19 7h-9`}],[`circle`,{cx:`17`,cy:`17`,r:`3`}],[`circle`,{cx:`7`,cy:`7`,r:`3`}]];Z(e,W({name:`settings-2`},()=>n,{get iconNode(){return r}}))}var Oe=new Set([`$$slots`,`$$events`,`$$legacy`]);function ke(e,t){let n=E(t,Oe),r=[[`path`,{d:`M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5`}],[`path`,{d:`M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09`}],[`path`,{d:`M9 12a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.4 22.4 0 0 1-4 2z`}],[`path`,{d:`M9 12H4s.55-3.03 2-4c1.62-1.08 5 .05 5 .05`}]];Z(e,W({name:`rocket`},()=>n,{get iconNode(){return r}}))}var Ae=new Set([`$$slots`,`$$events`,`$$legacy`]);function je(e,t){let n=E(t,Ae),r=[[`path`,{d:`M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8`}],[`path`,{d:`M21 3v5h-5`}],[`path`,{d:`M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16`}],[`path`,{d:`M8 16H3v5`}]];Z(e,W({name:`refresh-cw`},()=>n,{get iconNode(){return r}}))}var Me=new Set([`$$slots`,`$$events`,`$$legacy`]);function Ne(e,t){let n=E(t,Me),r=[[`path`,{d:`M4 5h16`}],[`path`,{d:`M4 12h16`}],[`path`,{d:`M4 19h16`}]];Z(e,W({name:`menu`},()=>n,{get iconNode(){return r}}))}var Pe=new Set([`$$slots`,`$$events`,`$$legacy`]);function Fe(e,t){let n=E(t,Pe),r=[[`path`,{d:`M18 6 6 18`}],[`path`,{d:`m6 6 12 12`}]];Z(e,W({name:`x`},()=>n,{get iconNode(){return r}}))}var Ie=new Set([`$$slots`,`$$events`,`$$legacy`]);function Le(e,t){let n=E(t,Ie),r=[[`path`,{d:`m9 18 6-6-6-6`}]];Z(e,W({name:`chevron-right`},()=>n,{get iconNode(){return r}}))}var Re=new Set([`$$slots`,`$$events`,`$$legacy`]);function ze(e,t){let n=E(t,Re),r=[[`path`,{d:`m21 21-4.34-4.34`}],[`circle`,{cx:`11`,cy:`11`,r:`8`}]];Z(e,W({name:`search`},()=>n,{get iconNode(){return r}}))}var Be=new Set([`$$slots`,`$$events`,`$$legacy`]);function Ve(e,t){let n=E(t,Be),r=[[`path`,{d:`M5 12h14`}],[`path`,{d:`M12 5v14`}]];Z(e,W({name:`plus`},()=>n,{get iconNode(){return r}}))}var He=new Set([`$$slots`,`$$events`,`$$legacy`]);function Ue(e,t){let n=E(t,He),r=[[`path`,{d:`M15 3h6v6`}],[`path`,{d:`M10 14 21 3`}],[`path`,{d:`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`}]];Z(e,W({name:`external-link`},()=>n,{get iconNode(){return r}}))}var We=new Set([`$$slots`,`$$events`,`$$legacy`]);function Ge(e,t){let n=E(t,We),r=[[`path`,{d:`M10 5H3`}],[`path`,{d:`M12 19H3`}],[`path`,{d:`M14 3v4`}],[`path`,{d:`M16 17v4`}],[`path`,{d:`M21 12h-9`}],[`path`,{d:`M21 19h-5`}],[`path`,{d:`M21 5h-7`}],[`path`,{d:`M8 10v4`}],[`path`,{d:`M8 12H3`}]];Z(e,W({name:`sliders-horizontal`},()=>n,{get iconNode(){return r}}))}var Ke=new Set([`$$slots`,`$$events`,`$$legacy`]);function qe(e,t){let n=E(t,Ke),r=[[`path`,{d:`M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z`}]];Z(e,W({name:`star`},()=>n,{get iconNode(){return r}}))}var Je=new Set([`$$slots`,`$$events`,`$$legacy`]);function Ye(e,t){let n=E(t,Je),r=[[`rect`,{x:`16`,y:`16`,width:`6`,height:`6`,rx:`1`}],[`rect`,{x:`2`,y:`16`,width:`6`,height:`6`,rx:`1`}],[`rect`,{x:`9`,y:`2`,width:`6`,height:`6`,rx:`1`}],[`path`,{d:`M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3`}],[`path`,{d:`M12 12V8`}]];Z(e,W({name:`network`},()=>n,{get iconNode(){return r}}))}var Xe=`data:image/svg+xml,%3csvg%20height='24'%20viewBox='0%200%2024%2024'%20width='24'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eClaude%3c/title%3e%3cpath%20d='M4.709%2015.955l4.72-2.647.08-.23-.08-.128H9.2l-.79-.048-2.698-.073-2.339-.097-2.266-.122-.571-.121L0%2011.784l.055-.352.48-.321.686.06%201.52.103%202.278.158%201.652.097%202.449.255h.389l.055-.157-.134-.098-.103-.097-2.358-1.596-2.552-1.688-1.336-.972-.724-.491-.364-.462-.158-1.008.656-.722.881.06.225.061.893.686%201.908%201.476%202.491%201.833.365.304.145-.103.019-.073-.164-.274-1.355-2.446-1.446-2.49-.644-1.032-.17-.619a2.97%202.97%200%2001-.104-.729L6.283.134%206.696%200l.996.134.42.364.62%201.414%201.002%202.229%201.555%203.03.456.898.243.832.091.255h.158V9.01l.128-1.706.237-2.095.23-2.695.08-.76.376-.91.747-.492.584.28.48.685-.067.444-.286%201.851-.559%202.903-.364%201.942h.212l.243-.242.985-1.306%201.652-2.064.73-.82.85-.904.547-.431h1.033l.76%201.129-.34%201.166-1.064%201.347-.881%201.142-1.264%201.7-.79%201.36.073.11.188-.02%202.856-.606%201.543-.28%201.841-.315.833.388.091.395-.328.807-1.969.486-2.309.462-3.439.813-.042.03.049.061%201.549.146.662.036h1.622l3.02.225.79.522.474.638-.079.485-1.215.62-1.64-.389-3.829-.91-1.312-.329h-.182v.11l1.093%201.068%202.006%201.81%202.509%202.33.127.578-.322.455-.34-.049-2.205-1.657-.851-.747-1.926-1.62h-.128v.17l.444.649%202.345%203.521.122%201.08-.17.353-.608.213-.668-.122-1.374-1.925-1.415-2.167-1.143-1.943-.14.08-.674%207.254-.316.37-.729.28-.607-.461-.322-.747.322-1.476.389-1.924.315-1.53.286-1.9.17-.632-.012-.042-.14.018-1.434%201.967-2.18%202.945-1.726%201.845-.414.164-.717-.37.067-.662.401-.589%202.388-3.036%201.44-1.882.93-1.086-.006-.158h-.055L4.132%2018.56l-1.13.146-.487-.456.061-.746.231-.243%201.908-1.312-.006.006z'%20fill='%23D97757'%20fill-rule='nonzero'%3e%3c/path%3e%3c/svg%3e`,Ze=`data:image/svg+xml,%3csvg%20fill='%23ffffff'%20fill-rule='evenodd'%20height='24'%20viewBox='0%200%2024%2024'%20width='24'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eOpenAI%3c/title%3e%3cpath%20d='M9.205%208.658v-2.26c0-.19.072-.333.238-.428l4.543-2.616c.619-.357%201.356-.523%202.117-.523%202.854%200%204.662%202.212%204.662%204.566%200%20.167%200%20.357-.024.547l-4.71-2.759a.797.797%200%2000-.856%200l-5.97%203.473zm10.609%208.8V12.06c0-.333-.143-.57-.429-.737l-5.97-3.473%201.95-1.118a.433.433%200%2001.476%200l4.543%202.617c1.309.76%202.189%202.378%202.189%203.948%200%201.808-1.07%203.473-2.76%204.163zM7.802%2012.703l-1.95-1.142c-.167-.095-.239-.238-.239-.428V5.899c0-2.545%201.95-4.472%204.591-4.472%201%200%201.927.333%202.712.928L8.23%205.067c-.285.166-.428.404-.428.737v6.898zM12%2015.128l-2.795-1.57v-3.33L12%208.658l2.795%201.57v3.33L12%2015.128zm1.796%207.23c-1%200-1.927-.332-2.712-.927l4.686-2.712c.285-.166.428-.404.428-.737v-6.898l1.974%201.142c.167.095.238.238.238.428v5.233c0%202.545-1.974%204.472-4.614%204.472zm-5.637-5.303l-4.544-2.617c-1.308-.761-2.188-2.378-2.188-3.948A4.482%204.482%200%20014.21%206.327v5.423c0%20.333.143.571.428.738l5.947%203.449-1.95%201.118a.432.432%200%2001-.476%200zm-.262%203.9c-2.688%200-4.662-2.021-4.662-4.519%200-.19.024-.38.047-.57l4.686%202.71c.286.167.571.167.856%200l5.97-3.448v2.26c0%20.19-.07.333-.237.428l-4.543%202.616c-.619.357-1.356.523-2.117.523zm5.899%202.83a5.947%205.947%200%20005.827-4.756C22.287%2018.339%2024%2015.84%2024%2013.296c0-1.665-.713-3.282-1.998-4.448.119-.5.19-.999.19-1.498%200-3.401-2.759-5.947-5.946-5.947-.642%200-1.26.095-1.88.31A5.962%205.962%200%200010.205%200a5.947%205.947%200%2000-5.827%204.757C1.713%205.447%200%207.945%200%2010.49c0%201.666.713%203.283%201.998%204.448-.119.5-.19%201-.19%201.499%200%203.401%202.759%205.946%205.946%205.946.642%200%201.26-.095%201.88-.309a5.96%205.96%200%20004.162%201.713z'%3e%3c/path%3e%3c/svg%3e`,Qe=`data:image/svg+xml,%3csvg%20fill='%23ffffff'%20fill-rule='evenodd'%20height='24'%20viewBox='0%200%2024%2024'%20width='24'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eOpenAI%3c/title%3e%3cpath%20d='M9.205%208.658v-2.26c0-.19.072-.333.238-.428l4.543-2.616c.619-.357%201.356-.523%202.117-.523%202.854%200%204.662%202.212%204.662%204.566%200%20.167%200%20.357-.024.547l-4.71-2.759a.797.797%200%2000-.856%200l-5.97%203.473zm10.609%208.8V12.06c0-.333-.143-.57-.429-.737l-5.97-3.473%201.95-1.118a.433.433%200%2001.476%200l4.543%202.617c1.309.76%202.189%202.378%202.189%203.948%200%201.808-1.07%203.473-2.76%204.163zM7.802%2012.703l-1.95-1.142c-.167-.095-.239-.238-.239-.428V5.899c0-2.545%201.95-4.472%204.591-4.472%201%200%201.927.333%202.712.928L8.23%205.067c-.285.166-.428.404-.428.737v6.898zM12%2015.128l-2.795-1.57v-3.33L12%208.658l2.795%201.57v3.33L12%2015.128zm1.796%207.23c-1%200-1.927-.332-2.712-.927l4.686-2.712c.285-.166.428-.404.428-.737v-6.898l1.974%201.142c.167.095.238.238.238.428v5.233c0%202.545-1.974%204.472-4.614%204.472zm-5.637-5.303l-4.544-2.617c-1.308-.761-2.188-2.378-2.188-3.948A4.482%204.482%200%20014.21%206.327v5.423c0%20.333.143.571.428.738l5.947%203.449-1.95%201.118a.432.432%200%2001-.476%200zm-.262%203.9c-2.688%200-4.662-2.021-4.662-4.519%200-.19.024-.38.047-.57l4.686%202.71c.286.167.571.167.856%200l5.97-3.448v2.26c0%20.19-.07.333-.237.428l-4.543%202.616c-.619.357-1.356.523-2.117.523zm5.899%202.83a5.947%205.947%200%20005.827-4.756C22.287%2018.339%2024%2015.84%2024%2013.296c0-1.665-.713-3.282-1.998-4.448.119-.5.19-.999.19-1.498%200-3.401-2.759-5.947-5.946-5.947-.642%200-1.26.095-1.88.31A5.962%205.962%200%200010.205%200a5.947%205.947%200%2000-5.827%204.757C1.713%205.447%200%207.945%200%2010.49c0%201.666.713%203.283%201.998%204.448-.119.5-.19%201-.19%201.499%200%203.401%202.759%205.946%205.946%205.946.642%200%201.26-.095%201.88-.309a5.96%205.96%200%20004.162%201.713z'%3e%3c/path%3e%3c/svg%3e`,$e=`data:image/svg+xml,%3csvg%20width='240'%20height='300'%20viewBox='0%200%20240%20300'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20clip-path='url(%23clip0_1401_86283)'%3e%3cmask%20id='mask0_1401_86283'%20style='mask-type:luminance'%20maskUnits='userSpaceOnUse'%20x='0'%20y='0'%20width='240'%20height='300'%3e%3cpath%20d='M240%200H0V300H240V0Z'%20fill='white'/%3e%3c/mask%3e%3cg%20mask='url(%23mask0_1401_86283)'%3e%3cpath%20d='M180%20240H60V120H180V240Z'%20fill='%234B4646'/%3e%3cpath%20d='M180%2060H60V240H180V60ZM240%20300H0V0H240V300Z'%20fill='%23F1ECEC'/%3e%3c/g%3e%3c/g%3e%3cdefs%3e%3cclipPath%20id='clip0_1401_86283'%3e%3crect%20width='240'%20height='300'%20fill='white'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e`,et=`data:image/svg+xml,%3csvg%20fill='%23ffffff'%20fill-rule='evenodd'%20height='24'%20viewBox='0%200%2024%2024'%20width='24'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eGrok%3c/title%3e%3cpath%20d='M9.27%2015.29l7.978-5.897c.391-.29.95-.177%201.137.272.98%202.369.542%205.215-1.41%207.169-1.951%201.954-4.667%202.382-7.149%201.406l-2.711%201.257c3.889%202.661%208.611%202.003%2011.562-.953%202.341-2.344%203.066-5.539%202.388-8.42l.006.007c-.983-4.232.242-5.924%202.75-9.383.06-.082.12-.164.179-.248l-3.301%203.305v-.01L9.267%2015.292M7.623%2016.723c-2.792-2.67-2.31-6.801.071-9.184%201.761-1.763%204.647-2.483%207.166-1.425l2.705-1.25a7.808%207.808%200%2000-1.829-1A8.975%208.975%200%20005.984%205.83c-2.533%202.536-3.33%206.436-1.962%209.764%201.022%202.487-.653%204.246-2.34%206.022-.599.63-1.199%201.259-1.682%201.925l7.62-6.815'%3e%3c/path%3e%3c/svg%3e`,tt=`data:image/svg+xml,%3csvg%20width='180'%20height='180'%20viewBox='0%200%20180%20180'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M144.248%20149.062C151.748%20154.688%20162.998%20150.938%20152.685%20140.625C121.748%20110.625%20128.31%2028.125%2089.8727%2028.125C51.4352%2028.125%2057.9977%20110.625%2027.0602%20140.625C15.8102%20151.875%2027.9977%20154.688%2035.4977%20149.062C64.5602%20129.375%2062.6852%2094.6875%2089.8727%2094.6875C117.06%2094.6875%20115.185%20129.375%20144.248%20149.062Z'%20fill='white'/%3e%3c/svg%3e`,nt=`data:image/svg+xml,%3csvg%20height='24'%20viewBox='0%200%2024%2024'%20width='24'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eGemini%3c/title%3e%3cpath%20d='M20.616%2010.835a14.147%2014.147%200%2001-4.45-3.001%2014.111%2014.111%200%2001-3.678-6.452.503.503%200%2000-.975%200%2014.134%2014.134%200%2001-3.679%206.452%2014.155%2014.155%200%2001-4.45%203.001c-.65.28-1.318.505-2.002.678a.502.502%200%20000%20.975c.684.172%201.35.397%202.002.677a14.147%2014.147%200%20014.45%203.001%2014.112%2014.112%200%20013.679%206.453.502.502%200%2000.975%200c.172-.685.397-1.351.677-2.003a14.145%2014.145%200%20013.001-4.45%2014.113%2014.113%200%20016.453-3.678.503.503%200%20000-.975%2013.245%2013.245%200%2001-2.003-.678z'%20fill='%233186FF'%3e%3c/path%3e%3cpath%20d='M20.616%2010.835a14.147%2014.147%200%2001-4.45-3.001%2014.111%2014.111%200%2001-3.678-6.452.503.503%200%2000-.975%200%2014.134%2014.134%200%2001-3.679%206.452%2014.155%2014.155%200%2001-4.45%203.001c-.65.28-1.318.505-2.002.678a.502.502%200%20000%20.975c.684.172%201.35.397%202.002.677a14.147%2014.147%200%20014.45%203.001%2014.112%2014.112%200%20013.679%206.453.502.502%200%2000.975%200c.172-.685.397-1.351.677-2.003a14.145%2014.145%200%20013.001-4.45%2014.113%2014.113%200%20016.453-3.678.503.503%200%20000-.975%2013.245%2013.245%200%2001-2.003-.678z'%20fill='url(%23lobe-icons-gemini-0-_R_0_)'%3e%3c/path%3e%3cpath%20d='M20.616%2010.835a14.147%2014.147%200%2001-4.45-3.001%2014.111%2014.111%200%2001-3.678-6.452.503.503%200%2000-.975%200%2014.134%2014.134%200%2001-3.679%206.452%2014.155%2014.155%200%2001-4.45%203.001c-.65.28-1.318.505-2.002.678a.502.502%200%20000%20.975c.684.172%201.35.397%202.002.677a14.147%2014.147%200%20014.45%203.001%2014.112%2014.112%200%20013.679%206.453.502.502%200%2000.975%200c.172-.685.397-1.351.677-2.003a14.145%2014.145%200%20013.001-4.45%2014.113%2014.113%200%20016.453-3.678.503.503%200%20000-.975%2013.245%2013.245%200%2001-2.003-.678z'%20fill='url(%23lobe-icons-gemini-1-_R_0_)'%3e%3c/path%3e%3cpath%20d='M20.616%2010.835a14.147%2014.147%200%2001-4.45-3.001%2014.111%2014.111%200%2001-3.678-6.452.503.503%200%2000-.975%200%2014.134%2014.134%200%2001-3.679%206.452%2014.155%2014.155%200%2001-4.45%203.001c-.65.28-1.318.505-2.002.678a.502.502%200%20000%20.975c.684.172%201.35.397%202.002.677a14.147%2014.147%200%20014.45%203.001%2014.112%2014.112%200%20013.679%206.453.502.502%200%2000.975%200c.172-.685.397-1.351.677-2.003a14.145%2014.145%200%20013.001-4.45%2014.113%2014.113%200%20016.453-3.678.503.503%200%20000-.975%2013.245%2013.245%200%2001-2.003-.678z'%20fill='url(%23lobe-icons-gemini-2-_R_0_)'%3e%3c/path%3e%3cdefs%3e%3clinearGradient%20gradientUnits='userSpaceOnUse'%20id='lobe-icons-gemini-0-_R_0_'%20x1='7'%20x2='11'%20y1='15.5'%20y2='12'%3e%3cstop%20stop-color='%2308B962'%3e%3c/stop%3e%3cstop%20offset='1'%20stop-color='%2308B962'%20stop-opacity='0'%3e%3c/stop%3e%3c/linearGradient%3e%3clinearGradient%20gradientUnits='userSpaceOnUse'%20id='lobe-icons-gemini-1-_R_0_'%20x1='8'%20x2='11.5'%20y1='5.5'%20y2='11'%3e%3cstop%20stop-color='%23F94543'%3e%3c/stop%3e%3cstop%20offset='1'%20stop-color='%23F94543'%20stop-opacity='0'%3e%3c/stop%3e%3c/linearGradient%3e%3clinearGradient%20gradientUnits='userSpaceOnUse'%20id='lobe-icons-gemini-2-_R_0_'%20x1='3.5'%20x2='17.5'%20y1='13.5'%20y2='12'%3e%3cstop%20stop-color='%23FABC12'%3e%3c/stop%3e%3cstop%20offset='.46'%20stop-color='%23FABC12'%20stop-opacity='0'%3e%3c/stop%3e%3c/linearGradient%3e%3c/defs%3e%3c/svg%3e`,rt=`data:image/svg+xml,%3csvg%20height='24'%20viewBox='0%200%2024%2024'%20width='24'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eKimi%3c/title%3e%3cpath%20d='M21.846%200a1.923%201.923%200%20110%203.846H20.15a.226.226%200%2001-.227-.226V1.923C19.923.861%2020.784%200%2021.846%200z'%20fill='%231783FF'%3e%3c/path%3e%3cpath%20d='M11.065%2011.199l7.257-7.2c.137-.136.06-.41-.116-.41H14.3a.164.164%200%2000-.117.051l-7.82%207.756c-.122.12-.302.013-.302-.179V3.82c0-.127-.083-.23-.185-.23H3.186c-.103%200-.186.103-.186.23V19.77c0%20.128.083.23.186.23h2.69c.103%200%20.186-.102.186-.23v-3.25c0-.069.025-.135.069-.178l2.424-2.406a.158.158%200%2001.205-.023l6.484%204.772a7.677%207.677%200%20003.453%201.283c.108.012.2-.095.2-.23v-3.06c0-.117-.07-.212-.164-.227a5.028%205.028%200%2001-2.027-.807l-5.613-4.064c-.117-.078-.132-.279-.028-.381z'%20fill='%23fff'%3e%3c/path%3e%3c/svg%3e`,it=`data:image/svg+xml,%3csvg%20height='24'%20viewBox='0%200%2024%2024'%20width='24'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eQwen%3c/title%3e%3cpath%20d='M12.604%201.34c.393.69.784%201.382%201.174%202.075a.18.18%200%2000.157.091h5.552c.174%200%20.322.11.446.327l1.454%202.57c.19.337.24.478.024.837-.26.43-.513.864-.76%201.3l-.367.658c-.106.196-.223.28-.04.512l2.652%204.637c.172.301.111.494-.043.77-.437.785-.882%201.564-1.335%202.34-.159.272-.352.375-.68.37-.777-.016-1.552-.01-2.327.016a.099.099%200%2000-.081.05%20575.097%20575.097%200%2001-2.705%204.74c-.169.293-.38.363-.725.364-.997.003-2.002.004-3.017.002a.537.537%200%2001-.465-.271l-1.335-2.323a.09.09%200%2000-.083-.049H4.982c-.285.03-.553-.001-.805-.092l-1.603-2.77a.543.543%200%2001-.002-.54l1.207-2.12a.198.198%200%20000-.197%20550.951%20550.951%200%2001-1.875-3.272l-.79-1.395c-.16-.31-.173-.496.095-.965.465-.813.927-1.625%201.387-2.436.132-.234.304-.334.584-.335a338.3%20338.3%200%20012.589-.001.124.124%200%2000.107-.063l2.806-4.895a.488.488%200%2001.422-.246c.524-.001%201.053%200%201.583-.006L11.704%201c.341-.003.724.032.9.34zm-3.432.403a.06.06%200%2000-.052.03L6.254%206.788a.157.157%200%2001-.135.078H3.253c-.056%200-.07.025-.041.074l5.81%2010.156c.025.042.013.062-.034.063l-2.795.015a.218.218%200%2000-.2.116l-1.32%202.31c-.044.078-.021.118.068.118l5.716.008c.046%200%20.08.02.104.061l1.403%202.454c.046.081.092.082.139%200l5.006-8.76.783-1.382a.055.055%200%2001.096%200l1.424%202.53a.122.122%200%2000.107.062l2.763-.02a.04.04%200%2000.035-.02.041.041%200%20000-.04l-2.9-5.086a.108.108%200%20010-.113l.293-.507%201.12-1.977c.024-.041.012-.062-.035-.062H9.2c-.059%200-.073-.026-.043-.077l1.434-2.505a.107.107%200%20000-.114L9.225%201.774a.06.06%200%2000-.053-.031zm6.29%208.02c.046%200%20.058.02.034.06l-.832%201.465-2.613%204.585a.056.056%200%2001-.05.029.058.058%200%2001-.05-.029L8.498%209.841c-.02-.034-.01-.052.028-.054l.216-.012%206.722-.012z'%20fill='url(%23lobe-icons-qwen-_R_0_)'%20fill-rule='nonzero'%3e%3c/path%3e%3cdefs%3e%3clinearGradient%20id='lobe-icons-qwen-_R_0_'%20x1='0%25'%20x2='100%25'%20y1='0%25'%20y2='0%25'%3e%3cstop%20offset='0%25'%20stop-color='%236336E7'%20stop-opacity='.84'%3e%3c/stop%3e%3cstop%20offset='100%25'%20stop-color='%236F69F7'%20stop-opacity='.84'%3e%3c/stop%3e%3c/linearGradient%3e%3c/defs%3e%3c/svg%3e`,at=`data:image/svg+xml,%3csvg%20fill='%23ffffff'%20fill-rule='evenodd'%20height='24'%20viewBox='0%200%2024%2024'%20width='24'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eGithubCopilot%3c/title%3e%3cpath%20d='M19.245%205.364c1.322%201.36%201.877%203.216%202.11%205.817.622%200%201.2.135%201.592.654l.73.964c.21.278.323.61.323.955v2.62c0%20.339-.173.669-.453.868C20.239%2019.602%2016.157%2021.5%2012%2021.5c-4.6%200-9.205-2.583-11.547-4.258-.28-.2-.452-.53-.453-.868v-2.62c0-.345.113-.679.321-.956l.73-.963c.392-.517.974-.654%201.593-.654l.029-.297c.25-2.446.81-4.213%202.082-5.52%202.461-2.54%205.71-2.851%207.146-2.864h.198c1.436.013%204.685.323%207.146%202.864zm-7.244%204.328c-.284%200-.613.016-.962.05-.123.447-.305.85-.57%201.108-1.05%201.023-2.316%201.18-2.994%201.18-.638%200-1.306-.13-1.851-.464-.516.165-1.012.403-1.044.996a65.882%2065.882%200%2000-.063%202.884l-.002.48c-.002.563-.005%201.126-.013%201.69.002.326.204.63.51.765%202.482%201.102%204.83%201.657%206.99%201.657%202.156%200%204.504-.555%206.985-1.657a.854.854%200%2000.51-.766c.03-1.682.006-3.372-.076-5.053-.031-.596-.528-.83-1.046-.996-.546.333-1.212.464-1.85.464-.677%200-1.942-.157-2.993-1.18-.266-.258-.447-.661-.57-1.108-.32-.032-.64-.049-.96-.05zm-2.525%204.013c.539%200%20.976.426.976.95v1.753c0%20.525-.437.95-.976.95a.964.964%200%2001-.976-.95v-1.752c0-.525.437-.951.976-.951zm5%200c.539%200%20.976.426.976.95v1.753c0%20.525-.437.95-.976.95a.964.964%200%2001-.976-.95v-1.752c0-.525.437-.951.976-.951zM7.635%205.087c-1.05.102-1.935.438-2.385.906-.975%201.037-.765%203.668-.21%204.224.405.394%201.17.657%201.995.657h.09c.649-.013%201.785-.176%202.73-1.11.435-.41.705-1.433.675-2.47-.03-.834-.27-1.52-.63-1.813-.39-.336-1.275-.482-2.265-.394zm6.465.394c-.36.292-.6.98-.63%201.813-.03%201.037.24%202.06.675%202.47.968.957%202.136%201.104%202.776%201.11h.044c.825%200%201.59-.263%201.995-.657.555-.556.765-3.187-.21-4.224-.45-.468-1.335-.804-2.385-.906-.99-.088-1.875.058-2.265.394zM12%207.615c-.24%200-.525.015-.84.044.03.16.045.336.06.526l-.001.159a2.94%202.94%200%2001-.014.25c.225-.022.425-.027.612-.028h.366c.187%200%20.387.006.612.028-.015-.146-.015-.277-.015-.409.015-.19.03-.365.06-.526a9.29%209.29%200%2000-.84-.044z'%3e%3c/path%3e%3c/svg%3e`,ot=h(``),st=h(``);function ct(e,r){let i=L(r,`size`,3,20),a={claude:Xe,codex:Ze,openai:Qe,opencode_go:$e,opencode:$e,xai:et,grok:et,antigravity:tt,gemini:nt,google:nt,kimi:rt,qwen:it,copilot:at},o=q(()=>a[r.provider]);var c=st();let l,u;var d=S(c),p=e=>{var t=ot();s(()=>{G(t,`src`,n(o)),G(t,`width`,i()),G(t,`height`,i())}),f(e,t)},m=e=>{Ye(e,{get size(){return i()},strokeWidth:1.6})};t(d,e=>{n(o)?e(p):e(m,-1)}),Y(c),s(()=>{l=O(c,1,`provider-mark svelte-1vulm01`,null,l,{"light-mat":r.provider===`qwen`}),u=se(c,``,u,{width:`${i()??``}px`,height:`${i()??``}px`})}),f(e,c)}var lt={"common.save":`Save`,"common.cancel":`Cancel`,"common.close":`Close`,"common.import":`Import`,"common.retry":`Retry`,"common.connectAccount":`Connect an account`,"common.chooseOtherProvider":`Choose another provider`,"common.searchAccount":`Search accounts`,"common.noAccountConnected":`No account connected`,"common.noMatchingAccount":`No matching account`,"common.tryOtherName":`Try another name or provider.`,"common.enable":`Enable {name}`,"common.disabled":`Disabled`,"common.verifyGoogle":`Verify the Google account`,"common.openAntigravity":`Open Antigravity with this account to finish verification.`,"common.percent":`{value}%`,"common.accountCount.one":`{count} account`,"common.accountCount.other":`{count} accounts`,"common.copyRefused":`Copy unavailable. Select the text to copy it.`,"nav.subscriptions":`Subscriptions`,"nav.quotas":`Quotas`,"nav.overview":`Overview`,"nav.accounts":`Accounts`,"nav.models":`Models`,"nav.service":`Service`,"nav.activity":`Requests`,"nav.settings":`Settings`,"nav.quickstart":`Quick start`,"nav.main":`Main navigation`,"nav.mobile":`Mobile navigation`,"nav.openMenu":`Open menu`,"nav.closeMenu":`Close menu`,"nav.menu":`Menu`,"nav.setupTool":`Set up a tool`,"page.description":`Manage your subscriptions, their quotas and your tools' requests.`,"page.loading":`Loading your subscriptions...`,"page.dismissNotice":`Dismiss notification`,"page.settingsUnavailable":`Settings will be available once the server responds.`,"notice.displaySaved":`Boite display saved.`,"notice.windowsSaved":`Windows shown in Boite saved.`,"notice.busy":`Another action is in progress.`,"notice.endpointSaved":`Endpoint saved.`,"notice.reserveRemoved":`Reserve removed.`,"notice.reserveSaved":`Reserve saved.`,"notice.fileTooLarge":`{name} is over the 2 MB limit.`,"notice.invalidJson":`{name}: the file must contain valid JSON.`,"notice.partialImport":`{count} account(s) imported. {errors}`,"notice.nothingImported":`The file added no accounts.`,"notice.imported":`Accounts imported.`,"notice.accountDisabled":`Account disabled.`,"notice.accountEnabled":`Account enabled.`,"notice.accountDeleted":`Account deleted.`,"notice.settingsSaved":`Settings saved.`,"notice.modelUpdated":`Model updated.`,"notice.modelsUpdated":`{count} models updated.`,"notice.accountConnected":`Account connected.`,"notice.partialRestore":`{count} account(s) restored. {errors}`,"notice.restored.one":`{count} account restored.`,"notice.restored.other":`{count} accounts restored.`,"api.serverStatus":`The server returned {status}.`,"api.errorPrefix":`{name}: {error}`,"private.account":`account`,"status.active":`Active`,"status.exhausted":`Quota used up`,"status.cooldown":`Paused`,"status.expired":`Sign-in expired`,"status.check":`Needs checking`,"status.reserveReached":`Reserve reached`,"date.unknown":`Date not reported`,"credit.unknown":`Not reported`,"credit.credits":`credits`,"usage.weekly":`Weekly`,"usage.monthly":`Monthly`,"usage.fiveHours":`5 hours`,"usage.extra":`Extra usage`,"usage.codexCredits":`Codex credits`,"usage.creditBalance":`Credit balance`,"usage.premiumRequests":`Premium requests`,"usage.chat":`Chat`,"usage.completions":`Completions`,"dialect.client":`Same as the client`,"reserveWindow.five-hour":`5 h`,"reserveWindow.daily":`Day`,"reserveWindow.weekly":`Week`,"reserveWindow.monthly":`Month`,"provider.openaiCompatible":`OpenAI-compatible`,"accounts.title":`Accounts`,"accounts.dropLabel":`Drop auth files`,"accounts.drop":`Drop your JSON files to import accounts`,"accounts.emptyDescription":`Connect a subscription or import its JSON file.`,"accounts.colAccount":`Account`,"accounts.colSubscription":`Subscription`,"accounts.colStatus":`Status`,"accounts.colReserve":`Reserve`,"accounts.colVerified":`Quotas checked`,"accounts.colActions":`Actions`,"accounts.verifiedPrefix":`Quotas checked: `,"accounts.notVerified":`Not checked`,"accounts.delete":`Delete {name}`,"accounts.deleteTitle":`Delete this account`,"accounts.deleteConfirm":`Delete this account from douane?`,"accounts.deleteButton":`Delete`,"name.invalid":`Enter a name of 1 to 120 characters.`,"name.input":`New account name`,"name.save":`Save name`,"name.cancel":`Cancel rename`,"name.rename":`Rename this account`,"reserve.notSaved":`The reserve was not saved.`,"reserve.invalid":`Enter a percentage from 0 to 99.`,"reserve.keepAtLeast":`Keep at least`,"reserve.input":`Minimum reserve in percent`,"reserve.save":`Save reserve`,"reserve.watched":`Watched limits`,"reserve.longestTitle":`The account's longest limit (month or week)`,"reserve.longest":`Longest`,"reserve.remove":`Remove reserve`,"reserve.titleWatched":`Douane stops using this account when one of these limits reaches this level: {windows}`,"reserve.titleLongest":`Douane stops using this account when its longest quota (month or week) reaches this level`,"reserve.add":`Add a reserve`,"reserve.label":`Reserve {percent}%`,"reserve.reached":`Reserve reached: douane no longer uses this account until the reset.`,"reserve.inactiveWindows":`Inactive: this account does not report these limits.`,"reserve.inactiveAccount":`Inactive: this provider does not report a quota for the whole account.`,"resets.reset":`Quota reset.`,"resets.alreadyRedeemed":`This reset was already applied.`,"resets.nothingToReset":`The quota is already available. No reset used.`,"resets.noCredit":`No reset available.`,"resets.unconfirmed":`The server did not confirm the reset result.`,"resets.resume":`Resume reset`,"resets.button":`Reset ({count})`,"resets.checking":`Checking resets`,"resets.none":`0 resets available`,"resets.check":`Check resets`,"resets.title":`Reset quota`,"resets.closeConfirmation":`Close confirmation`,"resets.warning":`This uses 1 reset to restore the account's quota. It cannot be undone.`,"resets.expiresFirst":`The reset that expires on {date} is used first.`,"resets.pending":`An attempt is waiting for confirmation. Retrying checks the same operation.`,"resets.running":`Resetting`,"resets.retrySame":`Retry the same reset`,"resets.use":`Use 1 reset`,"connect.copyRefused":`The browser refused the copy. Select the code to copy it.`,"connect.waiting":`Waiting for authorization. The connection is checked automatically.`,"connect.expired":`This connection expired. Choose the provider to start again.`,"connect.refused":`The provider refused the connection. Start again to retry.`,"connect.exchanging":`Authorization received, connecting the account.`,"connect.stillWaiting":`The connection is still waiting for your authorization.`,"connect.unconfirmed":`The server did not confirm the new account.`,"connect.notAdded":`The account was not added.`,"connect.subtitle":`Add a subscription to douane.`,"connect.success":`Account connected`,"connect.successText":`Your subscription is now available in douane.`,"connect.viewAccounts":`View my accounts`,"connect.googleVerify":`Google asks you to verify this account before connecting.`,"connect.afterVerify":`Once verification is done, start the connection again.`,"connect.restart":`Start again`,"connect.antigravityTitle":`Antigravity setup incomplete`,"connect.antigravityProject":`The Google sign-in worked, but Google did not provide the project this account needs.`,"connect.antigravityFirstUse":`If this is the first use, open the Antigravity app with this account and finish onboarding. If Antigravity also refuses the sign-in, follow Google's message.`,"connect.antigravityGuide":`Open the Antigravity guide`,"connect.enterCode":`Open the {provider} page and enter this code to authorize the connection.`,"connect.copyCode":`Copy code`,"connect.authorize":`Open the provider's page and authorize the connection.`,"connect.open":`Open sign-in`,"connect.callbackHint":`If the redirect to localhost does not load, copy its full URL. Claude can also show a code to paste here.`,"connect.callbackLabel":`Redirect URL or sign-in code`,"connect.callbackPlaceholder":`Redirect URL or code#state`,"connect.finish":`Finish connecting`,"connect.check":`Check connection`,"connect.customIntro1":`An API key becomes a model prefix: with `,"connect.customIntro2":`, its models are called `,"connect.customModel":`deepseek/model-name`,"connect.customIntro3":`. Several keys under the same prefix take turns. The key leaves this form once saved.`,"connect.name":`Name`,"connect.addEndpoint":`Add endpoint`,"connect.tokenIntro":`Add your subscription's access token. It leaves this form once saved.`,"connect.accountName":`Account name`,"connect.accountNamePlaceholder":`My subscription`,"connect.token":`Access token`,"connect.providerUrl":`Provider URL`,"connect.providerUrlPlaceholder":`https://your-provider/v1`,"connect.addAccount":`Add account`,"connect.oauthOption":`Connect my subscription`,"connect.apiKeyOption":`Add an API key`,"connect.tokenOption":`Add a token`,"connect.noProvider":`No provider available. Import an auth file to add an account.`,"connect.haveFile":`Already have a file?`,"connect.importFiles":`Import one or more JSON auth files.`,"connect.pending":`Connecting...`,"endpoint.route":`Model prefix`,"endpoint.url":`API URL`,"endpoint.format":`API format`,"endpoint.key":`API key`,"endpoint.models":`Served models`,"endpoint.modelsPlaceholder":`All models from the API`,"endpoint.newKey":`New API key`,"endpoint.unchanged":`Unchanged`,"endpoint.edit":`Edit endpoint`,"email.hide":`Hide this email`,"email.show":`Show this email`,"meter.left":`Quota left`,"meter.unavailable":`Unavailable`,"meter.valueLeft":`{value}% left`,"quotas.refresh":`Refresh quotas`,"quotas.filter":`Filter by provider`,"quotas.all":`All`,"quotas.search":`Search`,"quotas.sort":`Sort accounts`,"quotas.byName":`By name`,"quotas.byRemaining":`Quota left`,"quotas.emptyDescription":`Connect a subscription to see its quotas.`,"quotas.group":`{provider} quotas`,"quotas.displayTitle":`How {provider} quotas show in Boite and /v1/quotas clients`,"quotas.displayLabel":`In Boite / clients`,"quotas.perAccount":`Per account`,"quotas.average":`Account average`,"quotas.windowsTitle":`{provider} quota windows shown in Boite`,"quotas.windows":`Windows`,"quotas.windowsLabel":`{provider} windows in Boite`,"quotas.primary":`Main`,"quotas.makePrimary":`Make main`,"quotas.showWindow":`Show {label} in Boite`,"quotas.noWindow":`No window read for this provider.`,"quotas.defaultWindow":`Without a main window, Boite highlights the weekly one.`,"quotas.googleVerify":`Google asks you to verify this account.`,"quotas.resetAt":`Resets: {date}`,"quotas.notReported":`Quota not reported`,"quotas.unlimited":`Unlimited`,"quotas.remaining":`left`,"quotas.used":`{used} used`,"quotas.usedOf":`{used} used of {limit}`,"quotas.refreshAccount":`Refresh this account`,"quotas.refreshNamed":`Refresh {name}`,"overview.description":`Activity across your subscriptions`,"overview.connected":`Service connected`,"overview.disconnected":`Connection unavailable`,"overview.activeAccounts":`Active accounts`,"overview.ofAccounts":`of {count} accounts`,"overview.requests":`Requests`,"overview.inFlight":`{count} in progress`,"overview.tokens":`Tokens exchanged`,"overview.tokensDetail":`input and output`,"overview.cache":`Cache read`,"overview.cacheDetail":`tokens reused`,"overview.success":`Successful requests`,"overview.errors":`{count} errors`,"overview.recent":`Recent activity`,"overview.recentDescription":`The latest requests douane handled`,"overview.viewAll":`View all`,"overview.emptyTitle":`Your activity will show here`,"overview.emptyDescription":`Connect an account, then send a first request from your tool.`,"overview.openQuickstart":`Open quick start`,"table.model":`Model`,"table.provider":`Provider`,"table.time":`Time`,"table.status":`Status`,"table.duration":`Duration`,"table.id":`ID`,"table.context":`Context`,"table.available":`Available`,"table.modelAccount":`Model and account`,"table.tokens":`Tokens`,"table.error":`Error`,"models.description":`Models available with your accounts`,"models.count":`{count} models`,"models.endpoint":`OpenAI-compatible URL`,"models.search":`Search models`,"models.emptyTitle":`No model available`,"models.emptyDescription":`Add an account to load its subscription's models.`,"models.addAccount":`Add an account`,"models.noMatchTitle":`No matching model`,"models.noMatchDescription":`Try another model or provider name.`,"models.refreshAll":`Refresh all`,"models.refreshPool":`Refresh {name} models`,"models.enabledCount":`{enabled} of {count} enabled`,"models.expandAll":`Expand all`,"models.collapseAll":`Collapse all`,"models.enableShown":`Enable every shown {name} model`,"models.disableShown":`Disable every shown {name} model`,"models.stale":`Previous list`,"models.staleTitle":`{name} did not answer the last listing: its previous models stay served.`,"models.refreshed":`Updated {age}`,"models.poolEmpty":`No model read for this provider yet.`,"models.group":`{name} models`,"models.copyId":`Copy {id}`,"activity.title":`Request log`,"activity.description":`Each call, its account and its usage`,"activity.count":`Last {count} requests`,"activity.onlyErrors":`Show errors only`,"activity.search":`Search requests`,"activity.searchPlaceholder":`Model, account or provider`,"activity.noMatchTitle":`No matching request`,"activity.emptyTitle":`No requests yet`,"activity.noMatchDescription":`Change your search or the error filter.`,"activity.emptyDescription":`Your tools' calls will show here with their real result.`,"activity.unknownAccount":`Account not reported`,"quickstart.chooseTool":`Choose a tool`,"quickstart.openAccounts":`Open accounts`,"quickstart.baseUrl":`Base URL`,"quickstart.copyUrl":`Copy URL`,"quickstart.openaiHint1":`Pick your tool's OpenAI-compatible mode. As its API key, enter a client key `,"quickstart.openaiHint2":` from the Clients page.`,"quickstart.chooseModel":`Choose a model`,"quickstart.powershell":`Run these commands in PowerShell.`,"quickstart.copyClaude":`Copy the Claude Code setup`,"quickstart.claudeHint":`Replace dk_... with a client key from the Clients page. Claude Code will send its requests through the connected Claude account.`,"quickstart.connectClaude":`Connect a Claude account`,"strategy.round-robin.label":`Round robin`,"strategy.round-robin.desc":`Each active account takes requests in turn.`,"strategy.fill-first.label":`Use up one account`,"strategy.fill-first.desc":`Uses the first available account before moving to the next.`,"strategy.reset-first.label":`Nearest reset`,"strategy.reset-first.desc":`Uses the account whose weekly quota resets first. The others serve only when it is unavailable.`,"strategy.smart.label":`Smart split`,"strategy.smart.desc":`Within 48 h of the reset, 90% of new conversations use this account until it runs out.`,"settings.sessionNote":`A conversation keeps its account while it stays available. With Nearest reset, it returns to the account with the nearest reset as soon as that account is available.`,"settings.routing":`Request routing`,"settings.routingDescription":`The default rule applies to providers without their own choice. Each choice saves on click.`,"settings.perProvider":`Per provider`,"settings.perProviderDescription":`Adjust routing for each of your subscriptions.`,"settings.defaultRule":`Default rule`,"settings.noProviders":`Providers will show once the service is connected.`,"settings.refresh":`Refresh and timeouts`,"settings.refreshDescription":`Quotas and account selection are recomputed after each refresh.`,"settings.refreshEvery":`Refresh quotas every`,"settings.seconds":`seconds`,"settings.timeout":`Request timeout`,"settings.defaultProvider":`Default provider`,"settings.weekEnd":`End of the week`,"settings.weekEndDescription":`Before an account's weekly reset, its reserve and client shares stop applying, so what is left gets used. 0 keeps them to the end.`,"settings.freeBefore":`Lift limits before the reset`,"settings.hours":`hours`,"settings.autoProvider":`Automatic selection`,"settings.saving":`Saving...`,"settings.save":`Save settings`,"settings.language":`Language`,"settings.languageDescription":`Language of this dashboard, saved in this browser.`,"settings.languageAuto":`Automatic`,"settings.languageEnglish":`English`,"settings.languageFrench":`Français`,"backup.title":`Backup`,"backup.description":`Move this configuration to another douane: settings, disabled models and every account.`,"backup.warning":`The file holds live sign-ins and keys. Refresh tokens rotate, so an account works in one douane at a time: after a restore, remove it here. Keep the file private.`,"backup.export":`Export`,"backup.exporting":`Exporting...`,"backup.restore":`Restore`,"backup.restoring":`Restoring...`,"backup.confirm.one":`{name} holds {count} account. Accounts already here are updated, the others are added.`,"backup.confirm.other":`{name} holds {count} accounts. Accounts already here are updated, the others are added.`,"backup.withSettings":`Also apply its settings and disabled models`,"backup.confirmButton":`Restore accounts`,"backup.notExport":`{name} is not a douane export.`,"backup.tooLarge":`{name} is over the 32 MB limit.`,"nav.clients":`Clients`,"clients.enforcedInfo":`Every call needs a client key, so each call is counted for its client.`,"clients.keys":`Keys and limits`,"stats.title":`Consumption`,"stats.info":`Calls and tokens of each client, from the request log. Tokens count input, cache reads included, and output.`,"stats.period":`Period`,"stats.day":`24 h`,"stats.week":`7 days`,"stats.month":`30 days`,"stats.tokens":`Tokens`,"stats.calls":`Calls`,"stats.activeClients":`Active clients`,"stats.errors":`Errors`,"stats.chart":`Tokens by client over the period`,"stats.none":`No call`,"stats.tokensUnit":`tokens`,"stats.callsUnit":`calls`,"stats.cache":`cache {value}%`,"stats.cacheInfo":`Share of input tokens read from the prompt cache`,"stats.errorCount":`{count} errors`,"stats.noError":`no error`,"stats.idle":`No call over this period`,"stats.model":`Model`,"stats.input":`Input`,"stats.output":`Output`,"stats.cacheRead":`Cache read`,"stats.latency":`Avg. time`,"stats.empty":`No call over this period.`,"clients.title":`Clients`,"clients.new":`New client`,"clients.enforced":`Keys required`,"clients.emptyTitle":`No client yet`,"clients.emptyDescription":`douane refuses every call until a client exists. Give each Boite or tool its own key, the accounts it may use and, if you want, its share of each quota.`,"clients.allAccounts":`All accounts`,"clients.allAccountsHint":`Accounts connected later included`,"clients.noAccess":`No account`,"clients.noShare":`Common part only`,"clients.createdAt":`Created {date}`,"clients.ofShare":`{used} / {share}%`,"clients.highest":`Highest account: {name}`,"clients.notMeasured":`Not measured yet`,"clients.rotate":`New key`,"clients.rotateNamed":`New key for {name}`,"clients.delete":`Delete`,"clients.deleteNamed":`Delete {name}`,"clients.breakdown":`Breakdown`,"clients.breakdownInfo":`Each rise of a window goes to the clients whose calls ended on that account, weighted by tokens. A rise no call through douane explains counts as outside douane.`,"clients.breakdownEmpty":`No window measured since the first client.`,"clients.noKey":`Without key`,"clients.former":`Deleted clients`,"clients.outside":`Outside douane`,"clients.unexplained":`Unattributed`,"clients.used":`{value}% used`,"clients.editTitle":`Edit {name}`,"clients.name":`Name`,"clients.namePlaceholder":`Desktop`,"clients.access":`Accounts`,"clients.wholePool":`Every {pool} account, later ones included`,"clients.shares":`Quota shares`,"clients.sharesInfo":`A share reserves this percent of each window (5 h, day, week, month) of every account of the provider. An unused share frees up in the last seventh of the window. What no share covers is common to every client.`,"clients.shareOf":`Share of {pool}`,"clients.common":`Common {value}%`,"clients.overbooked":`Over 100%`,"clients.noPool":`Choose accounts first.`,"clients.shareInvalid":`A share is a number above 0 and at most 100.`,"clients.pickAccess":`Choose at least one account.`,"clients.create":`Create`,"clients.keyTitle":`Key for {name}`,"clients.keyOnce":`Shown once. Copy it now.`,"clients.keyBoite":`Paste it in Boite: Settings, subscription proxy, key.`,"clients.copyKey":`Copy`,"clients.copied":`Copied`,"clients.rotateTitle":`New key for {name}?`,"clients.rotateText":`The current key stops working at once. Paste the new one in the tool that uses it.`,"clients.rotateButton":`Replace the key`,"clients.deleteTitle":`Delete {name}?`,"clients.deleteText":`Calls with its key are refused.`,"clients.deleteLast":`It is the last client: douane will refuse every call until you create another.`,"clients.deleteButton":`Delete`,"notice.clientCreated":`Client created.`,"notice.clientSaved":`Client saved.`,"notice.clientDeleted":`Client deleted.`,"notice.keyReplaced":`Key replaced.`,"activity.client":`Client {name}`,"quickstart.keyRequired":`No client yet: create one on the Clients page first. douane refuses every call without a client key.`},ut={"common.save":`Enregistrer`,"common.cancel":`Annuler`,"common.close":`Fermer`,"common.import":`Importer`,"common.retry":`Réessayer`,"common.connectAccount":`Connecter un compte`,"common.chooseOtherProvider":`Choisir un autre fournisseur`,"common.searchAccount":`Rechercher un compte`,"common.noAccountConnected":`Aucun compte connecté`,"common.noMatchingAccount":`Aucun compte correspondant`,"common.tryOtherName":`Essayez un autre nom ou fournisseur.`,"common.enable":`Activer {name}`,"common.disabled":`Désactivé`,"common.verifyGoogle":`Vérifier le compte Google`,"common.openAntigravity":`Ouvrez Antigravity avec ce compte pour terminer la vérification.`,"common.percent":`{value} %`,"common.accountCount.one":`{count} compte`,"common.accountCount.other":`{count} comptes`,"common.copyRefused":`Copie indisponible. Sélectionnez le texte pour le copier.`,"nav.subscriptions":`Abonnements`,"nav.quotas":`Quotas`,"nav.overview":`Vue d'ensemble`,"nav.accounts":`Comptes`,"nav.models":`Modèles`,"nav.service":`Service`,"nav.activity":`Requêtes`,"nav.settings":`Réglages`,"nav.quickstart":`Démarrage rapide`,"nav.main":`Navigation principale`,"nav.mobile":`Navigation mobile`,"nav.openMenu":`Ouvrir le menu`,"nav.closeMenu":`Fermer le menu`,"nav.menu":`Menu`,"nav.setupTool":`Configurer un outil`,"page.description":`Gérez vos abonnements, leurs quotas et les requêtes de vos outils.`,"page.loading":`Chargement de vos abonnements...`,"page.dismissNotice":`Fermer la notification`,"page.settingsUnavailable":`Les réglages seront disponibles lorsque le serveur répondra.`,"notice.displaySaved":`Affichage dans Boite enregistré.`,"notice.windowsSaved":`Fenêtres affichées dans Boite enregistrées.`,"notice.busy":`Une action est déjà en cours.`,"notice.endpointSaved":`Endpoint enregistré.`,"notice.reserveRemoved":`Réserve retirée.`,"notice.reserveSaved":`Réserve enregistrée.`,"notice.fileTooLarge":`{name} dépasse la limite de 2 Mo.`,"notice.invalidJson":`{name} : le fichier doit contenir du JSON valide.`,"notice.partialImport":`{count} compte(s) importé(s). {errors}`,"notice.nothingImported":`Le fichier n'a ajouté aucun compte.`,"notice.imported":`Comptes importés.`,"notice.accountDisabled":`Compte désactivé.`,"notice.accountEnabled":`Compte activé.`,"notice.accountDeleted":`Compte supprimé.`,"notice.settingsSaved":`Réglages enregistrés.`,"notice.modelUpdated":`Modèle mis à jour.`,"notice.modelsUpdated":`{count} modèles mis à jour.`,"notice.accountConnected":`Compte connecté.`,"notice.partialRestore":`{count} compte(s) restauré(s). {errors}`,"notice.restored.one":`{count} compte restauré.`,"notice.restored.other":`{count} comptes restaurés.`,"api.serverStatus":`Le serveur a répondu {status}.`,"api.errorPrefix":`{name} : {error}`,"private.account":`compte`,"status.active":`Actif`,"status.exhausted":`Quota épuisé`,"status.cooldown":`En pause`,"status.expired":`Connexion expirée`,"status.check":`À vérifier`,"status.reserveReached":`Réserve atteinte`,"date.unknown":`Date non communiquée`,"credit.unknown":`Non communiqué`,"credit.credits":`crédits`,"usage.weekly":`Semaine`,"usage.monthly":`Mois`,"usage.fiveHours":`5 heures`,"usage.extra":`Usage supplémentaire`,"usage.codexCredits":`Crédits Codex`,"usage.creditBalance":`Solde des crédits`,"usage.premiumRequests":`Requêtes premium`,"usage.chat":`Chat`,"usage.completions":`Complétions`,"dialect.client":`Celui du client`,"reserveWindow.five-hour":`5 h`,"reserveWindow.daily":`Jour`,"reserveWindow.weekly":`Semaine`,"reserveWindow.monthly":`Mois`,"provider.openaiCompatible":`Compatible OpenAI`,"accounts.title":`Comptes`,"accounts.dropLabel":`Déposer des fichiers d'authentification`,"accounts.drop":`Déposez vos fichiers JSON pour importer des comptes`,"accounts.emptyDescription":`Connectez un abonnement ou importez son fichier JSON.`,"accounts.colAccount":`Compte`,"accounts.colSubscription":`Abonnement`,"accounts.colStatus":`État`,"accounts.colReserve":`Réserve`,"accounts.colVerified":`Quotas vérifiés`,"accounts.colActions":`Actions`,"accounts.verifiedPrefix":`Quotas vérifiés : `,"accounts.notVerified":`Non vérifiés`,"accounts.delete":`Supprimer {name}`,"accounts.deleteTitle":`Supprimer ce compte`,"accounts.deleteConfirm":`Supprimer ce compte de douane ?`,"accounts.deleteButton":`Supprimer`,"name.invalid":`Saisissez un nom de 1 à 120 caractères.`,"name.input":`Nouveau nom du compte`,"name.save":`Enregistrer le nom`,"name.cancel":`Annuler le renommage`,"name.rename":`Renommer ce compte`,"reserve.notSaved":`La réserve n'a pas été enregistrée.`,"reserve.invalid":`Saisissez un pourcentage entre 0 et 99.`,"reserve.keepAtLeast":`Garder au moins`,"reserve.input":`Réserve minimale en pourcentage`,"reserve.save":`Enregistrer la réserve`,"reserve.watched":`Limites surveillées`,"reserve.longestTitle":`La limite la plus longue du compte (mois ou semaine)`,"reserve.longest":`Plus longue`,"reserve.remove":`Retirer la réserve`,"reserve.titleWatched":`Douane cesse d'utiliser ce compte quand une de ces limites atteint ce seuil : {windows}`,"reserve.titleLongest":`Douane cesse d'utiliser ce compte quand son quota le plus long (mois ou semaine) atteint ce seuil`,"reserve.add":`Ajouter une réserve`,"reserve.label":`Réserve {percent} %`,"reserve.reached":`Réserve atteinte : douane n'utilise plus ce compte jusqu'à la réinitialisation.`,"reserve.inactiveWindows":`Inactive : ce compte ne communique pas ces limites.`,"reserve.inactiveAccount":`Inactive : ce fournisseur ne communique pas de quota pour l'ensemble du compte.`,"resets.reset":`Quota réinitialisé.`,"resets.alreadyRedeemed":`Ce reset a déjà été appliqué.`,"resets.nothingToReset":`Le quota est déjà disponible. Aucun reset utilisé.`,"resets.noCredit":`Aucun reset disponible.`,"resets.unconfirmed":`Le serveur n’a pas confirmé le résultat du reset.`,"resets.resume":`Reprendre le reset`,"resets.button":`Réinitialiser ({count})`,"resets.checking":`Vérification des resets`,"resets.none":`0 reset disponible`,"resets.check":`Vérifier les resets`,"resets.title":`Réinitialiser le quota`,"resets.closeConfirmation":`Fermer la confirmation`,"resets.warning":`Cette action consomme 1 reset pour rétablir le quota du compte. Elle est irréversible.`,"resets.expiresFirst":`Le reset qui expire le {date} sera utilisé en premier.`,"resets.pending":`Une tentative est en attente de confirmation. Réessayer vérifie la même opération.`,"resets.running":`Réinitialisation en cours`,"resets.retrySame":`Réessayer le même reset`,"resets.use":`Utiliser 1 reset`,"connect.copyRefused":`Copie refusée par le navigateur. Sélectionnez le code pour le copier.`,"connect.waiting":`En attente d'autorisation. La connexion est vérifiée automatiquement.`,"connect.expired":`Cette connexion a expiré. Choisissez le fournisseur pour recommencer.`,"connect.refused":`Le fournisseur a refusé la connexion. Recommencez pour réessayer.`,"connect.exchanging":`Autorisation reçue, connexion du compte en cours.`,"connect.stillWaiting":`La connexion attend encore votre autorisation.`,"connect.unconfirmed":`Le serveur n'a pas confirmé l'ajout du compte.`,"connect.notAdded":`Le compte n'a pas été ajouté.`,"connect.subtitle":`Ajoutez un abonnement à douane.`,"connect.success":`Compte connecté`,"connect.successText":`Votre abonnement est maintenant disponible dans douane.`,"connect.viewAccounts":`Voir mes comptes`,"connect.googleVerify":`Google demande de vérifier ce compte avant la connexion.`,"connect.afterVerify":`Une fois la vérification terminée, recommencez la connexion.`,"connect.restart":`Recommencer la connexion`,"connect.antigravityTitle":`Activation Antigravity incomplète`,"connect.antigravityProject":`La connexion Google a réussi, mais Google n'a pas fourni le projet nécessaire à ce compte.`,"connect.antigravityFirstUse":`Pour une première utilisation, ouvrez l'application Antigravity avec ce compte et terminez l'accueil. Si Antigravity refuse aussi la connexion, suivez le message affiché par Google.`,"connect.antigravityGuide":`Ouvrir le guide Antigravity`,"connect.enterCode":`Ouvrez la page {provider} et saisissez ce code pour autoriser la connexion.`,"connect.copyCode":`Copier le code`,"connect.authorize":`Ouvrez la page du fournisseur et autorisez la connexion.`,"connect.open":`Ouvrir la connexion`,"connect.callbackHint":`Si le retour vers localhost ne charge pas, copiez son URL complète. Claude peut aussi afficher un code à coller ici.`,"connect.callbackLabel":`URL de retour ou code de connexion`,"connect.callbackPlaceholder":`URL de retour ou code#state`,"connect.finish":`Terminer la connexion`,"connect.check":`Vérifier la connexion`,"connect.customIntro1":`Une clé d'API devient un préfixe de modèles : avec `,"connect.customIntro2":`, ses modèles s'appellent `,"connect.customModel":`deepseek/nom-du-modèle`,"connect.customIntro3":`. Plusieurs clés sous le même préfixe tournent entre elles. La clé disparaît de ce formulaire après l'enregistrement.`,"connect.name":`Nom`,"connect.addEndpoint":`Ajouter l'endpoint`,"connect.tokenIntro":`Ajoutez le jeton de connexion de votre abonnement. Il disparaît de ce formulaire après l'enregistrement.`,"connect.accountName":`Nom du compte`,"connect.accountNamePlaceholder":`Mon abonnement`,"connect.token":`Jeton de connexion`,"connect.providerUrl":`Adresse du fournisseur`,"connect.providerUrlPlaceholder":`https://votre-fournisseur/v1`,"connect.addAccount":`Ajouter le compte`,"connect.oauthOption":`Connecter mon abonnement`,"connect.apiKeyOption":`Ajouter une clé d'API`,"connect.tokenOption":`Ajouter un jeton`,"connect.noProvider":`Aucun fournisseur disponible. Importez un fichier d'authentification pour ajouter un compte.`,"connect.haveFile":`Vous avez déjà un fichier ?`,"connect.importFiles":`Importez un ou plusieurs fichiers d'authentification JSON.`,"connect.pending":`Connexion en cours...`,"endpoint.route":`Préfixe des modèles`,"endpoint.url":`Adresse de l'API`,"endpoint.format":`Format de l'API`,"endpoint.key":`Clé d'API`,"endpoint.models":`Modèles servis`,"endpoint.modelsPlaceholder":`Tous les modèles de l'API`,"endpoint.newKey":`Nouvelle clé d'API`,"endpoint.unchanged":`Inchangée`,"endpoint.edit":`Modifier l'endpoint`,"email.hide":`Masquer cet email`,"email.show":`Afficher cet email`,"meter.left":`Quota restant`,"meter.unavailable":`Indisponible`,"meter.valueLeft":`{value} % restants`,"quotas.refresh":`Actualiser les quotas`,"quotas.filter":`Filtrer par fournisseur`,"quotas.all":`Tous`,"quotas.search":`Rechercher`,"quotas.sort":`Trier les comptes`,"quotas.byName":`Par nom`,"quotas.byRemaining":`Quota restant`,"quotas.emptyDescription":`Connectez un abonnement pour afficher ses quotas.`,"quotas.group":`Quotas {provider}`,"quotas.displayTitle":`Affichage des quotas {provider} dans Boite et les clients de /v1/quotas`,"quotas.displayLabel":`Dans Boite / les clients`,"quotas.perAccount":`Détail par compte`,"quotas.average":`Moyenne des comptes`,"quotas.windowsTitle":`Fenêtres de quota {provider} montrées dans Boite`,"quotas.windows":`Fenêtres`,"quotas.windowsLabel":`Fenêtres {provider} dans Boite`,"quotas.primary":`Principale`,"quotas.makePrimary":`Rendre principale`,"quotas.showWindow":`Afficher {label} dans Boite`,"quotas.noWindow":`Aucune fenêtre lue pour ce fournisseur.`,"quotas.defaultWindow":`Sans fenêtre principale, Boite met la semaine en avant.`,"quotas.googleVerify":`Google demande de vérifier ce compte.`,"quotas.resetAt":`Réinitialisation : {date}`,"quotas.notReported":`Quota non communiqué`,"quotas.unlimited":`Illimités`,"quotas.remaining":`restants`,"quotas.used":`{used} utilisés`,"quotas.usedOf":`{used} utilisés sur {limit}`,"quotas.refreshAccount":`Actualiser ce compte`,"quotas.refreshNamed":`Actualiser {name}`,"overview.description":`L'activité de vos abonnements`,"overview.connected":`Service connecté`,"overview.disconnected":`Connexion indisponible`,"overview.activeAccounts":`Comptes actifs`,"overview.ofAccounts":`sur {count} comptes`,"overview.requests":`Requêtes`,"overview.inFlight":`{count} en cours`,"overview.tokens":`Tokens échangés`,"overview.tokensDetail":`entrée et sortie`,"overview.cache":`Cache relu`,"overview.cacheDetail":`tokens réutilisés`,"overview.success":`Requêtes réussies`,"overview.errors":`{count} erreurs`,"overview.recent":`Activité récente`,"overview.recentDescription":`Les dernières requêtes traitées par douane`,"overview.viewAll":`Tout voir`,"overview.emptyTitle":`Votre activité apparaîtra ici`,"overview.emptyDescription":`Connectez un compte puis envoyez une première requête depuis votre outil.`,"overview.openQuickstart":`Ouvrir le démarrage rapide`,"table.model":`Modèle`,"table.provider":`Fournisseur`,"table.time":`Heure`,"table.status":`Statut`,"table.duration":`Durée`,"table.id":`Identifiant`,"table.context":`Contexte`,"table.available":`Disponible`,"table.modelAccount":`Modèle et compte`,"table.tokens":`Tokens`,"table.error":`Erreur`,"models.description":`Les modèles disponibles avec vos comptes`,"models.count":`{count} modèles`,"models.endpoint":`Adresse compatible OpenAI`,"models.search":`Rechercher un modèle`,"models.emptyTitle":`Aucun modèle disponible`,"models.emptyDescription":`Ajoutez un compte pour charger les modèles de son abonnement.`,"models.addAccount":`Ajouter un compte`,"models.noMatchTitle":`Aucun modèle correspondant`,"models.noMatchDescription":`Essayez un autre nom de modèle ou de fournisseur.`,"models.refreshAll":`Tout actualiser`,"models.refreshPool":`Actualiser les modèles {name}`,"models.enabledCount":`{enabled} sur {count} actifs`,"models.expandAll":`Tout déplier`,"models.collapseAll":`Tout replier`,"models.enableShown":`Activer tous les modèles {name} affichés`,"models.disableShown":`Désactiver tous les modèles {name} affichés`,"models.stale":`Liste précédente`,"models.staleTitle":`{name} n'a pas répondu à la dernière lecture : ses modèles précédents restent servis.`,"models.refreshed":`Actualisé {age}`,"models.poolEmpty":`Aucun modèle lu pour ce fournisseur.`,"models.group":`Modèles {name}`,"models.copyId":`Copier {id}`,"activity.title":`Journal des requêtes`,"activity.description":`Chaque appel, son compte et sa consommation`,"activity.count":`{count} dernières requêtes`,"activity.onlyErrors":`Afficher les erreurs seulement`,"activity.search":`Rechercher une requête`,"activity.searchPlaceholder":`Modèle, compte ou fournisseur`,"activity.noMatchTitle":`Aucune requête correspondante`,"activity.emptyTitle":`Aucune requête pour le moment`,"activity.noMatchDescription":`Modifiez votre recherche ou le filtre des erreurs.`,"activity.emptyDescription":`Les appels de vos outils apparaîtront ici avec leur résultat réel.`,"activity.unknownAccount":`Compte non communiqué`,"quickstart.chooseTool":`Choisir un outil`,"quickstart.openAccounts":`Ouvrir les comptes`,"quickstart.baseUrl":`Adresse de base`,"quickstart.copyUrl":`Copier l'adresse`,"quickstart.openaiHint1":`Choisissez le mode compatible OpenAI de l'outil. Comme clé d'API, entrez une clé client `,"quickstart.openaiHint2":` de la page Clients.`,"quickstart.chooseModel":`Choisir un modèle`,"quickstart.powershell":`Exécutez ces commandes dans PowerShell.`,"quickstart.copyClaude":`Copier la configuration Claude Code`,"quickstart.claudeHint":`Remplacez dk_... par une clé client de la page Clients. Claude Code enverra ses requêtes via le compte Claude connecté.`,"quickstart.connectClaude":`Connecter un compte Claude`,"strategy.round-robin.label":`Rotation`,"strategy.round-robin.desc":`Chaque compte actif reçoit les requêtes à tour de rôle.`,"strategy.fill-first.label":`Épuiser un compte`,"strategy.fill-first.desc":`Utilise le premier compte disponible avant de passer au suivant.`,"strategy.reset-first.label":`Reset le plus proche`,"strategy.reset-first.desc":`Utilise le compte dont le quota hebdomadaire se réinitialise en premier. Les autres servent seulement s’il est indisponible.`,"strategy.smart.label":`Répartition intelligente`,"strategy.smart.desc":`À moins de 48 h du reset, 90 % des nouvelles conversations utilisent ce compte jusqu’à épuisement.`,"settings.sessionNote":`Une conversation garde son compte tant qu'il reste disponible. Avec Reset le plus proche, elle revient au compte dont le reset est le plus proche dès qu'il est disponible.`,"settings.routing":`Répartition des requêtes`,"settings.routingDescription":`La règle par défaut s'applique aux fournisseurs sans choix particulier. Chaque choix est enregistré dès le clic.`,"settings.perProvider":`Par fournisseur`,"settings.perProviderDescription":`Adaptez la répartition à chacun de vos abonnements.`,"settings.defaultRule":`Règle par défaut`,"settings.noProviders":`Les fournisseurs apparaîtront lorsque le service sera connecté.`,"settings.refresh":`Actualisation et délais`,"settings.refreshDescription":`Les quotas et la sélection des comptes sont recalculés après chaque actualisation.`,"settings.refreshEvery":`Actualiser les quotas toutes les`,"settings.seconds":`secondes`,"settings.timeout":`Délai maximal d'une requête`,"settings.defaultProvider":`Fournisseur par défaut`,"settings.weekEnd":`Fin de semaine`,"settings.weekEndDescription":`Avant le reset hebdomadaire d'un compte, sa réserve et les parts des clients ne s'appliquent plus, pour que le reste serve. 0 les garde jusqu'au bout.`,"settings.freeBefore":`Lever les limites avant le reset`,"settings.hours":`heures`,"settings.autoProvider":`Sélection automatique`,"settings.saving":`Enregistrement...`,"settings.save":`Enregistrer les réglages`,"settings.language":`Langue`,"settings.languageDescription":`Langue de ce tableau de bord, enregistrée dans ce navigateur.`,"settings.languageAuto":`Automatique`,"settings.languageEnglish":`English`,"settings.languageFrench":`Français`,"backup.title":`Sauvegarde`,"backup.description":`Déplacez cette configuration vers une autre douane : réglages, modèles désactivés et tous les comptes.`,"backup.warning":`Le fichier contient des connexions et des clés actives. Les jetons de renouvellement changent à chaque usage : un compte ne fonctionne que dans une douane à la fois. Après une restauration, retirez-le ici. Gardez le fichier privé.`,"backup.export":`Exporter`,"backup.exporting":`Export...`,"backup.restore":`Restaurer`,"backup.restoring":`Restauration...`,"backup.confirm.one":`{name} contient {count} compte. Les comptes déjà présents sont mis à jour, les autres sont ajoutés.`,"backup.confirm.other":`{name} contient {count} comptes. Les comptes déjà présents sont mis à jour, les autres sont ajoutés.`,"backup.withSettings":`Appliquer aussi ses réglages et modèles désactivés`,"backup.confirmButton":`Restaurer les comptes`,"backup.notExport":`{name} n'est pas un export douane.`,"backup.tooLarge":`{name} dépasse la limite de 32 Mo.`,"nav.clients":`Clients`,"clients.enforcedInfo":`Chaque appel exige une clé client, donc chaque appel est compté pour son client.`,"clients.keys":`Clés et limites`,"stats.title":`Consommation`,"stats.info":`Appels et tokens de chaque client, tirés du journal des requêtes. Les tokens comptent l’entrée, lectures de cache comprises, et la sortie.`,"stats.period":`Période`,"stats.day":`24 h`,"stats.week":`7 jours`,"stats.month":`30 jours`,"stats.tokens":`Tokens`,"stats.calls":`Appels`,"stats.activeClients":`Clients actifs`,"stats.errors":`Erreurs`,"stats.chart":`Tokens par client sur la période`,"stats.none":`Aucun appel`,"stats.tokensUnit":`tokens`,"stats.callsUnit":`appels`,"stats.cache":`cache {value} %`,"stats.cacheInfo":`Part des tokens d’entrée lus dans le cache de prompt`,"stats.errorCount":`{count} erreurs`,"stats.noError":`aucune erreur`,"stats.idle":`Aucun appel sur la période`,"stats.model":`Modèle`,"stats.input":`Entrée`,"stats.output":`Sortie`,"stats.cacheRead":`Cache lu`,"stats.latency":`Temps moyen`,"stats.empty":`Aucun appel sur la période.`,"clients.title":`Clients`,"clients.new":`Nouveau client`,"clients.enforced":`Clé obligatoire`,"clients.emptyTitle":`Aucun client`,"clients.emptyDescription":`douane refuse tout appel tant qu'aucun client n'existe. Donnez à chaque Boite ou outil sa clé, les comptes qu'il peut utiliser et, si vous voulez, sa part de chaque quota.`,"clients.allAccounts":`Tous les comptes`,"clients.allAccountsHint":`Comptes connectés plus tard compris`,"clients.noAccess":`Aucun compte`,"clients.noShare":`Part commune seulement`,"clients.createdAt":`Créé le {date}`,"clients.ofShare":`{used} / {share} %`,"clients.highest":`Compte le plus utilisé : {name}`,"clients.notMeasured":`Pas encore mesuré`,"clients.rotate":`Nouvelle clé`,"clients.rotateNamed":`Nouvelle clé pour {name}`,"clients.delete":`Supprimer`,"clients.deleteNamed":`Supprimer {name}`,"clients.breakdown":`Répartition`,"clients.breakdownInfo":`Chaque hausse d'une fenêtre revient aux clients dont les appels ont fini sur ce compte, au prorata des tokens. Une hausse qu'aucun appel par douane n'explique compte comme hors douane.`,"clients.breakdownEmpty":`Aucune fenêtre mesurée depuis le premier client.`,"clients.noKey":`Sans clé`,"clients.former":`Clients supprimés`,"clients.outside":`Hors douane`,"clients.unexplained":`Non attribué`,"clients.used":`{value} % utilisés`,"clients.editTitle":`Modifier {name}`,"clients.name":`Nom`,"clients.namePlaceholder":`PC fixe`,"clients.access":`Comptes`,"clients.wholePool":`Tous les comptes {pool}, futurs compris`,"clients.shares":`Parts de quota`,"clients.sharesInfo":`Une part réserve ce pourcentage de chaque fenêtre (5 h, jour, semaine, mois) de chaque compte du fournisseur. Une part inutilisée se libère dans le dernier septième de la fenêtre. Ce qu'aucune part ne couvre est commun à tous les clients.`,"clients.shareOf":`Part de {pool}`,"clients.common":`Commun {value} %`,"clients.overbooked":`Plus de 100 %`,"clients.noPool":`Choisissez d'abord des comptes.`,"clients.shareInvalid":`Une part est un nombre supérieur à 0 et au plus 100.`,"clients.pickAccess":`Choisissez au moins un compte.`,"clients.create":`Créer`,"clients.keyTitle":`Clé de {name}`,"clients.keyOnce":`Affichée une seule fois. Copiez-la maintenant.`,"clients.keyBoite":`Collez-la dans Boite : Réglages, proxy d'abonnements, clé.`,"clients.copyKey":`Copier`,"clients.copied":`Copiée`,"clients.rotateTitle":`Nouvelle clé pour {name} ?`,"clients.rotateText":`La clé actuelle cesse de fonctionner tout de suite. Collez la nouvelle dans l'outil qui l'utilise.`,"clients.rotateButton":`Remplacer la clé`,"clients.deleteTitle":`Supprimer {name} ?`,"clients.deleteText":`Les appels avec sa clé sont refusés.`,"clients.deleteLast":`C'est le dernier client : douane refusera tout appel jusqu'à ce que vous en créiez un autre.`,"clients.deleteButton":`Supprimer`,"notice.clientCreated":`Client créé.`,"notice.clientSaved":`Client enregistré.`,"notice.clientDeleted":`Client supprimé.`,"notice.keyReplaced":`Clé remplacée.`,"activity.client":`Client {name}`,"quickstart.keyRequired":`Aucun client pour l'instant : créez-en un sur la page Clients d'abord. douane refuse tout appel sans clé client.`},dt=`douane-language`,ft={en:lt,fr:ut},pt={en:`en-US`,fr:`fr-FR`};function mt(){try{let e=localStorage.getItem(dt);return e===`en`||e===`fr`?e:`auto`}catch{return`auto`}}function ht(){if(typeof navigator>`u`)return`en`;let e=navigator.languages?.length?navigator.languages:[navigator.language];for(let t of e){let e=t?.toLowerCase()??``;if(e.startsWith(`fr`))return`fr`;if(e.startsWith(`en`))return`en`}return`en`}var gt=M({choice:typeof window>`u`?`auto`:mt(),detected:ht()});function _t(){return gt.choice}function vt(){return gt.choice===`auto`?gt.detected:gt.choice}function yt(){return pt[vt()]}function bt(){typeof document<`u`&&(document.documentElement.lang=vt())}function xt(e){gt.choice=e;try{e===`auto`?localStorage.removeItem(dt):localStorage.setItem(dt,e)}catch{}bt()}typeof window<`u`&&(bt(),window.addEventListener(`languagechange`,()=>{gt.detected=ht(),bt()}));function Q(e,t){let n=ft[vt()][e]??lt[e];return t?n.replace(/\{(\w+)\}/g,(e,n)=>n in t?String(t[n]):e):n}var St=h(`
`),Ct=h(`
`);function wt(r,i){ne(i,!0);let a=L(i,`compact`,3,!1),o=q(()=>i.label??Q(`meter.left`)),c=q(()=>i.value==null?null:Math.min(100,Math.max(0,i.value)));var l=Ct();let u;var d=S(l),p=S(d),m=g(p,!0),h=e(p),_=g(h,!0);Y(d);var v=e(d,2),y=S(v),b=e=>{var t=St();let r,i;s(()=>{r=O(t,1,`meter-fill svelte-1dmbtuk`,null,r,{low:n(c)<25,medium:n(c)>=25&&n(c)<60}),i=se(t,``,i,{width:`${n(c)??``}%`})}),f(e,t)};t(y,e=>{n(c)!=null&&e(b)}),Y(v),Y(l),s((e,t)=>{u=O(l,1,`quota-meter svelte-1dmbtuk`,null,u,{compact:a()}),z(m,n(o)),z(_,e),G(v,`aria-label`,n(o)),G(v,`aria-valuenow`,n(c)??void 0),G(v,`aria-valuetext`,t)},[()=>n(c)==null?Q(`meter.unavailable`):Q(`common.percent`,{value:Math.round(n(c))}),()=>n(c)==null?Q(`meter.unavailable`):Q(`meter.valueLeft`,{value:Math.round(n(c))})]),f(r,l),D()}var Tt=new Set([`$$slots`,`$$events`,`$$legacy`]);function Et(e,t){let n=E(t,Tt),r=[[`path`,{d:`M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z`}],[`path`,{d:`m15 5 4 4`}]];Z(e,W({name:`pencil`},()=>n,{get iconNode(){return r}}))}var Dt=new Set([`$$slots`,`$$events`,`$$legacy`]);function Ot(e,t){let n=E(t,Dt),r=[[`path`,{d:`M20 6 9 17l-5-5`}]];Z(e,W({name:`check`},()=>n,{get iconNode(){return r}}))}var kt=[`chat`,`responses`,`messages`,``];function At(e){return e===``?Q(`dialect.client`):{chat:`Chat Completions`,responses:`Responses`,messages:`Messages (Anthropic)`}[e]}var jt=[`five-hour`,`daily`,`weekly`,`monthly`];function Mt(e){return Q(`reserveWindow.${e}`)}function Nt(e){return{"five-hour":`five-hour`,daily:`daily`,weekly:`weekly`,"seven-day":`weekly`,seven_day:`weekly`,monthly:`monthly`}[e]??null}var Pt=class extends Error{status;constructor(e,t){super(t),this.status=e}};async function Ft(e,t){let n=await fetch(`/admin/api${e}`,{...t,headers:{...t?.body?{"content-type":`application/json`}:{},...t?.headers}});if(!n.ok){let e=Q(`api.serverStatus`,{status:n.status});try{let t=await n.json();e=t.errors?.length?Bt(t.errors):typeof t.error==`string`?t.error:t.error?.message??t.message??e}catch{}throw new Pt(n.status,e)}return n.status===204?void 0:n.json()}var $={status:()=>Ft(`/summary`),providers:()=>Ft(`/providers`),accounts:()=>Ft(`/accounts`),quotas:()=>Ft(`/quotas`),models:()=>Ft(`/models`),refreshModels:e=>Ft(`/models/refresh${e?`?pool=${encodeURIComponent(e)}`:``}`,{method:`POST`}),setModelsEnabled:(e,t)=>Ft(`/models`,{method:`PATCH`,body:JSON.stringify({ids:e,enabled:t})}),calls:()=>Ft(`/calls?limit=100`),settings:()=>Ft(`/settings`),refreshQuotas:e=>Ft(`/quotas/refresh`,{method:`POST`,body:JSON.stringify({account_id:e})}),importAccounts:e=>Ft(`/accounts/import`,{method:`POST`,body:JSON.stringify({files:e})}),importCredential:e=>Ft(`/accounts/import`,{method:`POST`,body:JSON.stringify(e)}),updateEndpoint:(e,t)=>Ft(`/accounts/${encodeURIComponent(e)}`,{method:`PATCH`,body:JSON.stringify(t)}),setAccountEnabled:(e,t)=>Ft(`/accounts/${encodeURIComponent(e)}`,{method:`PATCH`,body:JSON.stringify({enabled:t})}),renameAccount:(e,t)=>Ft(`/accounts/${encodeURIComponent(e)}`,{method:`PATCH`,body:JSON.stringify({name:t})}),setAccountReserve:(e,t,n)=>Ft(`/accounts/${encodeURIComponent(e)}`,{method:`PATCH`,body:JSON.stringify({reserve_percent:t,reserve_windows:n})}),accountResets:e=>Ft(`/accounts/${encodeURIComponent(e)}/resets`),redeemReset:(e,t)=>Ft(`/accounts/${encodeURIComponent(e)}/resets/redeem`,{method:`POST`,body:JSON.stringify({confirmation:!0,request_id:t})}),deleteAccount:e=>Ft(`/accounts/${encodeURIComponent(e)}`,{method:`DELETE`}),startOAuth:e=>Ft(`/oauth/start`,{method:`POST`,body:JSON.stringify({provider:e})}),oauth:e=>Ft(`/oauth/${encodeURIComponent(e)}`),oauthCallback:(e,t,n)=>Ft(`/oauth/callback`,{method:`POST`,body:JSON.stringify({id:e,code:t,state:n})}),setModelEnabled:(e,t)=>Ft(`/models/${encodeURIComponent(e)}`,{method:`PATCH`,body:JSON.stringify({enabled:t})}),settingsSave:e=>Ft(`/settings`,{method:`PATCH`,body:JSON.stringify(e)}),clients:()=>Ft(`/clients`),clientStats:e=>Ft(`/clients/stats?hours=${e}`),createClient:e=>Ft(`/clients`,{method:`POST`,body:JSON.stringify(e)}),updateClient:(e,t)=>Ft(`/clients/${encodeURIComponent(e)}`,{method:`PATCH`,body:JSON.stringify(t)}),deleteClient:e=>Ft(`/clients/${encodeURIComponent(e)}`,{method:`DELETE`}),exportConfig:()=>Ft(`/export`),restore:(e,t)=>Ft(`/restore`,{method:`POST`,body:JSON.stringify({bundle:e,settings:t})})},It={codex:`Codex`,claude:`Claude`,gemini:`Gemini`,antigravity:`Antigravity`,qwen:`Qwen`,kimi:`Kimi`,copilot:`GitHub Copilot`,iflow:`iFlow`,opencode_go:`OpenCode Go`,xai:`Grok`,grok:`Grok`,openai_compatible:`OpenAI-compatible`};function Lt(e){return e.route||e.provider}function Rt(e){let t=new Map;for(let n of e){let e=Lt(n),r=t.get(e)??{id:e,provider:n.provider,name:n.route?n.name:Wt(n.provider),accounts:[]};r.accounts.push(n),t.set(e,r)}return[...t.values()]}function zt(e,t=!1){return t?e:e.replace(/[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}/gi,Q(`private.account`))}function Bt(e){return e.map(e=>typeof e==`string`?e:e.name?Q(`api.errorPrefix`,{name:zt(e.name),error:e.error}):e.error).join(` `)}var Vt={ready:`status.active`,active:`status.active`,disabled:`common.disabled`,exhausted:`status.exhausted`,cooldown:`status.cooldown`,expired:`status.expired`,error:`status.check`};function Ht(e){return Q(e.enabled?Vt[e.status]??`status.check`:`common.disabled`)}function Ut(e){return e.enabled&&(!!e.last_error||![`ready`,`active`].includes(e.status))}function Wt(e,t=e){return e===`openai_compatible`?Q(`provider.openaiCompatible`):It[e]??t}function Gt(e){return new Intl.NumberFormat(yt(),{maximumFractionDigits:1}).format(e)}function Kt(e){return e==null?`-`:new Intl.NumberFormat(yt(),{notation:e>=1e4?`compact`:`standard`,maximumFractionDigits:1}).format(e)}function qt(){return vt()===`en`?`numeric`:`2-digit`}function Jt(e){return e?new Intl.DateTimeFormat(yt(),{day:`2-digit`,month:`short`,hour:qt(),minute:`2-digit`}).format(new Date(e)):`-`}function Yt(e,t=Date.now()){let n=Math.round((new Date(e).getTime()-t)/1e3),r=new Intl.RelativeTimeFormat(yt(),{numeric:`auto`,style:`short`});return n>-45?r.format(0,`second`):n>-3600?r.format(Math.round(n/60),`minute`):n>-86400?r.format(Math.round(n/3600),`hour`):Jt(e)}function Xt(e){if(!e)return Q(`date.unknown`);let t=new Date(e);if(Number.isNaN(t.getTime()))return Q(`date.unknown`);let n=Math.abs(t.getTime()-Date.now())>6048e5;return new Intl.DateTimeFormat(yt(),{weekday:`long`,...n?{day:`numeric`,month:`short`}:{},hour:qt(),minute:`2-digit`}).format(t)}function Zt(e,t){return e==null?Q(`credit.unknown`):t===`USD`?new Intl.NumberFormat(yt(),{style:`currency`,currency:`USD`,maximumFractionDigits:2}).format(e):/^[A-Z]{3}_minor$/.test(t)?new Intl.NumberFormat(yt(),{style:`currency`,currency:t.slice(0,3),maximumFractionDigits:2}).format(e/100):`${new Intl.NumberFormat(yt(),{maximumFractionDigits:2}).format(e)} ${t===`credits`?Q(`credit.credits`):t}`}var Qt={weekly:`usage.weekly`,"codex weekly":`usage.weekly`,"grok weekly":`usage.weekly`,monthly:`usage.monthly`,"5 hours":`usage.fiveHours`,"five hour":`usage.fiveHours`,"extra usage":`usage.extra`,"additional usage":`usage.extra`,"codex credits":`usage.codexCredits`,"credit balance":`usage.creditBalance`,"premium requests":`usage.premiumRequests`,chat:`usage.chat`,completions:`usage.completions`};function $t(e){let t=Qt[e.toLowerCase()];return t?Q(t):e}function en(){if(typeof crypto.randomUUID==`function`)return crypto.randomUUID();let e=crypto.getRandomValues(new Uint8Array(16));e[6]=e[6]&15|64,e[8]=e[8]&63|128;let t=Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(``);return`${t.slice(0,8)}-${t.slice(8,12)}-${t.slice(12,16)}-${t.slice(16,20)}-${t.slice(20)}`}var tn=h(``),nn=h(`
`),rn=h(``);function an(r,i){ne(i,!0);let a=U(!1),o=U(``),l=U(!1),u=U(``),d=U(void 0);async function m(){J(o,i.account.name,!0),J(u,``),J(a,!0),await c(),n(d)?.focus(),n(d)?.select()}async function h(){if(n(l)||i.busy)return;let e=n(o).trim();if(!e||e.length>120||/[\x00-\x1f\x7f]/.test(e))J(u,Q(`name.invalid`),!0);else if(e===i.account.name)J(a,!1);else{J(l,!0),J(u,``);try{await i.rename(i.account,e),J(a,!1)}catch(e){J(u,zt(e.message),!0)}finally{J(l,!1)}}}var v=p(),y=w(v),b=r=>{var c=nn(),p=S(c);N(p),k(p,e=>J(d,e),()=>n(d));var m=e(p,2),v=S(m);Ot(S(v),{size:20}),Y(v);var y=e(v);Fe(S(y),{size:20}),Y(y),Y(m);var b=e(m,2),x=e=>{var t=tn(),r=g(t,!0);s(()=>z(r,n(u))),f(e,t)};t(b,e=>{n(u)&&e(x)}),Y(c),s((e,t,r,a,o)=>{G(p,`aria-label`,e),p.disabled=n(l),G(v,`aria-label`,t),G(v,`title`,r),v.disabled=n(l)||!!i.busy,G(y,`aria-label`,a),G(y,`title`,o),y.disabled=n(l)},[()=>Q(`name.input`),()=>Q(`name.save`),()=>Q(`common.save`),()=>Q(`name.cancel`),()=>Q(`common.cancel`)]),X(`submit`,c,e=>{e.preventDefault(),h()}),_(`keydown`,p,e=>{e.key===`Escape`&&!n(l)&&J(a,!1)}),re(p,()=>n(o),e=>J(o,e)),_(`click`,y,()=>J(a,!1)),f(r,c)},x=t=>{var n=rn(),r=S(n),a=g(r,!0);Et(e(r),{size:15}),Y(n),s((e,t)=>{G(n,`title`,e),n.disabled=!!i.busy,z(a,t)},[()=>Q(`name.rename`),()=>zt(i.account.name)]),_(`click`,n,m),f(t,n)};t(y,e=>{n(a)?e(b):e(x,-1)}),f(r,v),D()}d([`keydown`,`click`]);var on=new Set([`$$slots`,`$$events`,`$$legacy`]);function sn(e,t){let n=E(t,on),r=[[`path`,{d:`M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0`}],[`circle`,{cx:`12`,cy:`12`,r:`3`}]];Z(e,W({name:`eye`},()=>n,{get iconNode(){return r}}))}var cn=new Set([`$$slots`,`$$events`,`$$legacy`]);function ln(e,t){let n=E(t,cn),r=[[`path`,{d:`M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49`}],[`path`,{d:`M14.084 14.158a3 3 0 0 1-4.242-4.242`}],[`path`,{d:`M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143`}],[`path`,{d:`m2 2 20 20`}]];Z(e,W({name:`eye-off`},()=>n,{get iconNode(){return r}}))}var un=h(``);function dn(r,i){ne(i,!0);let a=U(!1);var o=un(),c=S(o);let l;var u=g(c,!0),d=e(c,2),p=e=>{ln(e,{size:16})},m=e=>{sn(e,{size:16})};t(d,e=>{n(a)?e(p):e(m,-1)}),Y(o),s((e,t)=>{G(o,`aria-label`,e),G(o,`aria-pressed`,n(a)),G(o,`title`,t),G(c,`aria-hidden`,!n(a)),l=O(c,1,`svelte-1n2y5u`,null,l,{blurred:!n(a)}),z(u,i.email)},[()=>Q(n(a)?`email.hide`:`email.show`),()=>Q(n(a)?`email.hide`:`email.show`)]),_(`click`,o,()=>J(a,!n(a))),f(r,o),D()}d([`click`]);var fn=h(``),pn=h(` `),mn=h(``),hn=h(``),gn=h(`

`),_n=h(`

`,1),vn=h(`

`),yn=h(`

`,1),bn=h(`

`,1);function xn(r,i){ne(i,!0);let a=U(null),o=U(!1),c=U(!1),l=U(``),d=U(``),m=U(!1),h=``,v=U(void 0),y=q(()=>i.account.enabled&&[`claude`,`codex`].includes(i.account.provider)),x=q(()=>`douane-reset-${i.account.id}`),C=q(()=>n(a)?.status===`ready`&&(n(a).available_count??0)>0);async function T(){if(n(y)&&!n(o)){J(o,!0),J(l,``);try{J(a,await $.accountResets(i.account.id)),n(a).pending_request_id&&(sessionStorage.setItem(n(x),n(a).pending_request_id),J(m,!0))}catch(e){J(l,zt(e.message),!0)}finally{J(o,!1)}}}u(()=>{n(y)?b(()=>{J(m,!!sessionStorage.getItem(n(x))),T()}):J(a,null)});function E(){h=n(a)?.pending_request_id??sessionStorage.getItem(n(x))??en(),J(l,``),J(d,``),n(v)?.showModal()}async function O(){if(!(n(c)||i.busy)){J(c,!0),J(l,``);try{sessionStorage.setItem(n(x),h),J(m,!0);let e={reset:`resets.reset`,already_redeemed:`resets.alreadyRedeemed`,nothing_to_reset:`resets.nothingToReset`,no_credit:`resets.noCredit`}[(await $.redeemReset(i.account.id,h)).outcome];if(!e)throw Error(Q(`resets.unconfirmed`));J(d,Q(e),!0),sessionStorage.removeItem(n(x)),J(m,!1),await T(),await i.updated()}catch(e){J(l,zt(e.message),!0)}finally{J(c,!1)}}}var A=p(),j=w(A),M=r=>{var u=bn(),p=w(u),h=S(p),y=t=>{var r=fn(),c=S(r);je(c,{size:17});var l=e(c,1,!0);Y(r),s(e=>{r.disabled=!!i.busy||n(o),z(l,e)},[()=>n(m)?Q(`resets.resume`):Q(`resets.button`,{count:n(a)?.available_count??0})]),_(`click`,r,E),f(t,r)},b=e=>{var t=pn(),n=g(t,!0);s(e=>z(n,e),[()=>Q(`resets.checking`)]),f(e,t)},x=e=>{var t=pn(),n=g(t,!0);s(e=>z(n,e),[()=>Q(`resets.none`)]),f(e,t)},D=e=>{var t=mn(),n=g(t,!0);s(e=>{t.disabled=!!i.busy,z(n,e)},[()=>Q(`resets.check`)]),_(`click`,t,T),f(e,t)};t(h,e=>{n(C)||n(m)?e(y):n(o)?e(b,1):n(a)?.status===`ready`?e(x,2):n(a)?.status!==`unsupported`&&e(D,3)});var A=e(h,2),j=e=>{var t=hn(),r=g(t,!0);s(()=>z(r,n(l))),f(e,t)};t(A,e=>{n(l)&&!n(v)?.open&&e(j)});var M=e(A,2),N=e=>{var t=gn(),r=g(t,!0);s(e=>z(r,e),[()=>zt(n(a).error)]),f(e,t)};t(M,e=>{n(a)?.error&&!n(l)&&n(a).status!==`unsupported`&&e(N)}),Y(p);var P=e(p,2),F=S(P),I=S(F),L=S(I),R=g(L,!0),B=e(L);Fe(S(B),{size:22}),Y(B),Y(I);var V=e(I,2),H=g(V,!0),ee=e(V,2),te=t=>{var r=_n(),i=w(r),a=g(i,!0),o=e(i),c=S(o),l=g(c,!0);Y(o),s(e=>{z(a,n(d)),z(l,e)},[()=>Q(`common.close`)]),_(`click`,c,()=>n(v)?.close()),f(t,r)},U=r=>{var o=yn(),u=w(o),d=g(u,!0),p=e(u,2),h=e=>{var t=vn(),r=g(t,!0);s(e=>z(r,e),[()=>Q(`resets.expiresFirst`,{date:Jt(n(a).next_expires_at)})]),f(e,t)};t(p,e=>{n(a)?.next_expires_at&&e(h)});var y=e(p,2),b=e=>{var t=vn(),n=g(t,!0);s(e=>z(n,e),[()=>Q(`resets.pending`)]),f(e,t)};t(y,e=>{n(m)&&e(b)});var x=e(y,2),C=e=>{var t=hn(),r=g(t,!0);s(()=>z(r,n(l))),f(e,t)};t(x,e=>{n(l)&&e(C)});var T=e(x,2),E=S(T),D=g(E,!0),k=e(E),A=g(k,!0);Y(T),s((e,t,r)=>{z(d,e),E.disabled=n(c),z(D,t),k.disabled=n(c)||!!i.busy,z(A,r)},[()=>Q(`resets.warning`),()=>Q(`common.cancel`),()=>n(c)?Q(`resets.running`):n(m)?Q(`resets.retrySame`):Q(`resets.use`)]),_(`click`,E,()=>n(v)?.close()),_(`click`,k,O),f(r,o)};t(ee,e=>{n(d)?e(te):e(U,-1)}),Y(F),Y(P),k(P,e=>J(v,e),()=>n(v)),s((e,t,r)=>{z(R,e),G(B,`aria-label`,t),B.disabled=n(c),z(H,r)},[()=>Q(`resets.title`),()=>Q(`resets.closeConfirmation`),()=>zt(i.account.name)]),X(`cancel`,P,e=>{n(c)&&e.preventDefault()}),_(`click`,B,()=>n(v)?.close()),f(r,u)};t(j,e=>{n(y)&&e(M)}),f(r,A),D()}d([`click`]);var Sn=new Set([`$$slots`,`$$events`,`$$legacy`]);function Cn(e,t){let n=E(t,Sn),r=[[`polyline`,{points:`22 12 16 12 14 15 10 15 8 12 2 12`}],[`path`,{d:`M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z`}]];Z(e,W({name:`inbox`},()=>n,{get iconNode(){return r}}))}var wn=h(``),Tn=h(`

`);function En(n,r){var i=Tn(),a=S(i);Cn(S(a),{size:22}),Y(a);var o=e(a,2),c=g(o,!0),l=e(o),u=g(l,!0),d=e(l,2),p=e=>{var t=wn(),n=g(t,!0);s(()=>z(n,r.action)),_(`click`,t,function(...e){r.onclick?.apply(this,e)}),f(e,t)};t(d,e=>{r.action&&r.onclick&&e(p)}),Y(i),s(()=>{z(c,r.title),z(u,r.description)}),f(n,i)}d([`click`]);var Dn=h(``),On=h(`
`),kn=h(`
`),An=h(``,1),jn=h(`
`),Mn=h(`

`),Nn=h(`

`),Pn=h(`
`),Fn=h(``),In=h(` `),Ln=h(`

`),Rn=h(`

`),zn=h(`

`),Bn=h(` `),Vn=h(`

`),Hn=h(`
`),Un=h(`
`),Wn=h(`
`),Gn=h(`

`),Kn=h(`
`),qn=h(`

`,1);function Jn(r,a){ne(a,!0);let o=L(a,`providers`,19,()=>[]),c=U(`all`),l=U(``),u=U(`name`),d=U(null),m=[`claude`,`codex`,`opencode_go`,`xai`],h=q(()=>new Set(o().filter(e=>!e.quota).map(e=>e.id))),v=q(()=>[...new Set(a.accounts.map(e=>e.provider).filter(e=>!n(h).has(e)))].sort((e,t)=>(m.indexOf(e)<0?99:m.indexOf(e))-(m.indexOf(t)<0?99:m.indexOf(t))||Wt(e).localeCompare(Wt(t)))),y=q(()=>a.accounts.filter(e=>(n(c)===`all`||!n(v).includes(n(c))||e.provider===n(c))&&`${e.name} ${e.email??``}`.toLowerCase().includes(n(l).toLowerCase())).sort((e,t)=>n(u)===`remaining`?(M(e.id)??101)-(M(t.id)??101):e.name.localeCompare(t.name))),b=q(()=>n(v).map(e=>({id:e,accounts:n(y).filter(t=>t.provider===e)})).filter(e=>e.accounts.length));function x(e){return a.settings?.quota_display?.[e]??`accounts`}async function C(e,t){await a.setQuotaDisplay(e,t.value),t.value=x(e)}function E(e){let t=new Set(a.accounts.filter(t=>t.provider===e).map(e=>e.id)),n=new Map;for(let e of a.quotas)if(t.has(e.account_id))for(let t of e.windows)n.has(t.id)||n.set(t.id,t);return[...n.values()]}function k(e){let t=a.settings?.quota_windows?.[e],n=t?.primary??null;return{hidden:(t?.hidden??[]).filter(e=>e!==n),primary:n}}function A(e,t){let n=k(e),r=n.hidden.includes(t)?n.hidden.filter(e=>e!==t):[...n.hidden,t];return a.setQuotaWindows(e,{...n,hidden:r})}function j(e,t){let n=k(e);return a.setQuotaWindows(e,{hidden:n.hidden.filter(e=>e!==t),primary:t})}function M(e){let t=a.quotas.find(t=>t.account_id===e)?.windows.map(e=>e.remaining_percent).filter(e=>e!=null)??[];return t.length?Math.min(...t):null}var P=qn(),I=w(P),R=S(I),B=g(R,!0),V=e(R,2),H=S(V),ee=S(H);{let e=q(()=>a.busy===`quotas`?`spinning`:``);je(ee,{size:18,get class(){return n(e)}})}var te=e(ee,1,!0);Y(H);var W=e(H),K=S(W);Ve(K,{size:20});var ae=e(K,1,!0);Y(W),Y(V),Y(I);var oe=e(I,2),se=t=>{var r=On(),o=S(r);let l;var u=S(o),d=e(u),p=g(d,!0);Y(o);var m=e(o,2);i(m,16,()=>n(v),e=>e,(t,r)=>{var i=Dn();let o;var l=S(i);ct(l,{get provider(){return r},size:22});var u=e(l,1,!0),d=e(u),p=g(d,!0);Y(i),s((e,t)=>{G(i,`aria-pressed`,n(c)===r),o=O(i,1,``,null,o,{active:n(c)===r}),z(u,e),z(p,t)},[()=>Wt(r),()=>a.accounts.filter(e=>e.provider===r).length]),_(`click`,i,()=>J(c,r,!0)),f(t,i)}),Y(r),s((e,t,i)=>{G(r,`aria-label`,e),G(o,`aria-pressed`,n(c)===`all`),l=O(o,1,``,null,l,{active:n(c)===`all`}),z(u,`${t??``} `),z(p,i)},[()=>Q(`quotas.filter`),()=>Q(`quotas.all`),()=>a.accounts.filter(e=>n(v).includes(e.provider)).length]),_(`click`,o,()=>J(c,`all`)),f(t,r)};t(oe,e=>{n(v).length>1&&e(se)});var X=e(oe,2),ce=S(X),le=S(ce);ze(le,{size:18});var ue=e(le);N(ue),Y(ce);var de=e(ce),fe=S(de),pe=g(fe,!0);fe.value=fe.__value=`name`;var Z=e(fe),me=g(Z,!0);Z.value=Z.__value=`remaining`,Y(de),T(de),Y(X);var he=e(X,2),ge=e=>{var t=kn(),r=S(t);{let e=q(()=>Q(`common.noAccountConnected`)),t=q(()=>Q(`quotas.emptyDescription`)),i=q(()=>Q(`common.connectAccount`));En(r,{get title(){return n(e)},get description(){return n(t)},get action(){return n(i)},get onclick(){return a.connect}})}Y(t),f(e,t)},_e=e=>{var t=kn(),r=S(t);{let e=q(()=>Q(`common.noMatchingAccount`)),t=q(()=>Q(`common.tryOtherName`));En(r,{get title(){return n(e)},get description(){return n(t)}})}Y(t),f(e,t)},ve=r=>{var o=Kn();i(o,21,()=>n(b),e=>e.id,(r,o)=>{var c=Gn(),l=S(c),u=S(l);ct(u,{get provider(){return n(o).id},size:29});var m=e(u),h=g(m,!0),v=e(m),y=g(v,!0),b=e(v),D=t=>{var r=An(),i=w(r),c=S(i),l=g(c,!0),u=e(c),p=S(u),m=g(p,!0);p.value=p.__value=`accounts`;var h=e(p),v=g(h,!0);h.value=h.__value=`average`,Y(u);var y;T(u),Y(i);var b=e(i),E=S(b);Ge(E,{size:16});var D=e(E,1,!0);Y(b),s((e,t,r,s,c,f,p)=>{G(i,`title`,e),z(l,t),u.disabled=!!a.busy,z(m,r),z(v,s),y!==(y=c)&&(u.value=(u.__value=y)??``,ie(u,y)),G(b,`aria-expanded`,n(d)===n(o).id),G(b,`aria-controls`,`windows-${n(o).id??``}`),G(b,`title`,f),z(D,p)},[()=>Q(`quotas.displayTitle`,{provider:Wt(n(o).id)}),()=>Q(`quotas.displayLabel`),()=>Q(`quotas.perAccount`),()=>Q(`quotas.average`),()=>x(n(o).id),()=>Q(`quotas.windowsTitle`,{provider:Wt(n(o).id)}),()=>Q(`quotas.windows`)]),_(`change`,u,e=>C(n(o).id,e.currentTarget)),_(`click`,b,()=>J(d,n(d)===n(o).id?null:n(o).id,!0)),f(t,r)};t(b,e=>{a.settings&&e(D)}),Y(l);var M=e(l,2),N=r=>{let c=q(()=>k(n(o).id));var l=Pn(),u=S(l);i(u,17,()=>E(n(o).id),e=>e.id,(t,r)=>{let i=q(()=>n(c).primary===n(r).id),l=q(()=>n(i)||!n(c).hidden.includes(n(r).id));var u=jn();let d;var p=S(u),m=g(p,!0),h=e(p,2);let v;var y=S(h);qe(y,{size:16});var b=e(y,1,!0);Y(h);var x=e(h,2);let C;Y(u),s((e,t,r)=>{d=O(u,1,`window-choice svelte-137c7x1`,null,d,{"hidden-window":!n(l)}),z(m,e),v=O(h,1,`primary-choice svelte-137c7x1`,null,v,{on:n(i)}),G(h,`aria-pressed`,n(i)),h.disabled=!!a.busy,z(b,t),C=O(x,1,`switch`,null,C,{on:n(l)}),G(x,`aria-checked`,n(l)),G(x,`aria-label`,r),x.disabled=!!a.busy||n(i)},[()=>$t(n(r).label),()=>Q(n(i)?`quotas.primary`:`quotas.makePrimary`),()=>Q(`quotas.showWindow`,{label:$t(n(r).label)})]),_(`click`,h,()=>j(n(o).id,n(i)?null:n(r).id)),_(`click`,x,()=>A(n(o).id,n(r).id)),f(t,u)},e=>{var t=Mn(),n=g(t,!0);s(e=>z(n,e),[()=>Q(`quotas.noWindow`)]),f(e,t)});var d=e(u,2),p=e=>{var t=Nn(),n=g(t,!0);s(e=>z(n,e),[()=>Q(`quotas.defaultWindow`)]),f(e,t)},m=q(()=>!n(c).primary&&E(n(o).id).length);t(d,e=>{n(m)&&e(p)}),Y(l),s(e=>{G(l,`id`,`windows-${n(o).id??``}`),G(l,`aria-label`,e)},[()=>Q(`quotas.windowsLabel`,{provider:Wt(n(o).id)})]),f(r,l)};t(M,e=>{a.settings&&n(d)===n(o).id&&e(N)});var P=e(M,2);i(P,21,()=>n(o).accounts,e=>e.id,(r,o)=>{let c=q(()=>a.quotas.find(e=>e.account_id===n(o).id)),l=q(()=>n(c)?.subscription??n(o).subscription);var u=Wn();let d;var m=S(u),h=S(m);an(h,{get account(){return n(o)},get rename(){return a.rename},get busy(){return a.busy}});var v=e(h),y=e=>{var t=Fn(),r=g(t,!0);s(()=>z(r,n(l)?.label??n(o).plan)),f(e,t)};t(v,e=>{(n(l)?.label||n(o).plan)&&e(y)});var b=e(v),x=e=>{dn(e,{get email(){return n(o).email}})};t(b,e=>{n(o).email&&e(x)}),xn(e(b),{get account(){return n(o)},get busy(){return a.busy},get updated(){return a.resetUpdated}}),Y(m);var C=e(m,2),T=S(C),E=r=>{var i=Rn(),a=S(i),l=g(a,!0),u=e(a),d=t=>{var r=In(),i=S(r,!0);Ue(e(i),{size:16}),Y(r),s((e,t)=>{G(r,`href`,e),z(i,t)},[()=>`/admin/api/accounts/${encodeURIComponent(n(o).id)}/verification`,()=>Q(`common.verifyGoogle`)]),f(t,r)},p=e=>{var t=Ln(),n=g(t,!0);s(e=>z(n,e),[()=>Q(`common.openAntigravity`)]),f(e,t)};t(u,e=>{n(c).verification_available?e(d):e(p,-1)}),Y(i),s(e=>z(l,e),[()=>Q(`quotas.googleVerify`)]),f(r,i)};t(T,e=>{n(c)?.verification_required&&e(E)});var D=e(T,2),k=S(D),A=t=>{var r=p(),a=w(r);i(a,17,()=>n(c).windows,e=>e.id,(t,r)=>{var i=zn(),a=S(i);{let e=q(()=>$t(n(r).label));wt(a,{get value(){return n(r).remaining_percent},get label(){return n(e)}})}var o=e(a),c=S(o);je(c,{size:16});var l=e(c,1,!0);Y(o),Y(i),s((e,t)=>{G(o,`title`,e),z(l,t)},[()=>n(r).reset_at?Q(`quotas.resetAt`,{date:Jt(n(r).reset_at)}):void 0,()=>Xt(n(r).reset_at)]),f(t,i)}),f(t,r)},j=e=>{var t=Mn(),r=g(t,!0);s(e=>z(r,e),[()=>n(c)?.error?zt(n(c).error):Q(`quotas.notReported`)]),f(e,t)};t(k,e=>{n(c)?.windows.length?e(A):n(c)?.verification_required||e(j,1)}),Y(D);var M=e(D,2),N=r=>{var a=Un();i(a,21,()=>n(c).credits,e=>e.id,(r,i)=>{var a=Hn(),o=S(a),c=S(o),l=g(c,!0),u=e(c),d=S(u,!0),p=e(d),m=e=>{var t=Bn(),n=g(t,!0);s(e=>z(n,e),[()=>` ${Q(`quotas.remaining`)}`]),f(e,t)};t(p,e=>{n(i).enabled!==!1&&n(i).remaining!=null&&e(m)}),Y(u),Y(o);var h=e(o),_=e=>{var t=Ln(),r=g(t,!0);s(e=>z(r,e),[()=>n(i).limit==null?Q(`quotas.used`,{used:Zt(n(i).used,n(i).unit)}):Q(`quotas.usedOf`,{used:Zt(n(i).used,n(i).unit),limit:Zt(n(i).limit,n(i).unit)})]),f(e,t)};t(h,e=>{n(i).used!=null&&e(_)});var v=e(h),y=t=>{var r=Vn(),a=S(r);je(a,{size:16});var o=e(a,1,!0);Y(r),s(e=>z(o,e),[()=>Xt(n(i).reset_at)]),f(t,r)};t(v,e=>{n(i).reset_at&&e(y)}),Y(a),s((e,t)=>{z(l,e),z(d,t)},[()=>$t(n(i).label),()=>n(i).enabled===!1?Q(`common.disabled`):n(i).unlimited?Q(`quotas.unlimited`):Zt(n(i).remaining,n(i).unit)]),f(r,a)}),Y(a),f(r,a)};t(M,e=>{n(c)?.credits?.length&&e(N)}),Y(C);var P=e(C,2),F=S(P);let I;var L=e(S(F),1,!0);Y(F);var R=e(F);je(S(R),{size:19}),Y(R),Y(P),Y(u),s((e,t,r,i)=>{d=O(u,1,`quota-row svelte-137c7x1`,null,d,{"disabled-row":!n(o).enabled}),I=O(F,1,`state-badge`,null,I,{warning:e,inactive:!n(o).enabled}),z(L,t),R.disabled=!!a.busy,G(R,`title`,r),G(R,`aria-label`,i)},[()=>!!n(c)?.error||Ut(n(o))||n(o).enabled&&!!n(o).reserve_reached,()=>n(o).enabled?n(c)?.error?Q(`status.check`):n(o).reserve_reached&&[`ready`,`active`].includes(n(o).status)?Q(`status.reserveReached`):Ht(n(o)):Q(`common.disabled`),()=>Q(`quotas.refreshAccount`),()=>Q(`quotas.refreshNamed`,{name:zt(n(o).name)})]),_(`click`,R,()=>a.refresh(n(o).id)),f(r,u)}),Y(P),Y(c),s((e,t,n)=>{G(c,`aria-label`,e),z(h,t),z(y,n)},[()=>Q(`quotas.group`,{provider:Wt(n(o).id)}),()=>Wt(n(o).id),()=>Q(n(o).accounts.length===1?`common.accountCount.one`:`common.accountCount.other`,{count:n(o).accounts.length})]),f(r,c)}),Y(o),f(r,o)};t(he,e=>{a.accounts.length?n(y).length?e(ve,-1):e(_e,1):e(ge)}),s((e,t,n,r,i,o,s,c)=>{z(B,e),H.disabled=!!a.busy||!a.accounts.length,z(te,t),z(ae,n),G(ue,`placeholder`,r),G(ue,`aria-label`,i),G(de,`aria-label`,o),z(pe,s),z(me,c)},[()=>Q(`nav.quotas`),()=>Q(`quotas.refresh`),()=>Q(`common.connectAccount`),()=>Q(`quotas.search`),()=>Q(`common.searchAccount`),()=>Q(`quotas.sort`),()=>Q(`quotas.byName`),()=>Q(`quotas.byRemaining`)]),_(`click`,H,()=>a.refresh()),_(`click`,W,function(...e){a.connect?.apply(this,e)}),re(ue,()=>n(l),e=>J(l,e)),F(de,()=>n(u),e=>J(u,e)),f(r,P),D()}d([`click`,`change`]);var Yn=new Set([`$$slots`,`$$events`,`$$legacy`]);function Xn(e,t){let n=E(t,Yn),r=[[`path`,{d:`M12 3v12`}],[`path`,{d:`m17 8-5-5-5 5`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`}]];Z(e,W({name:`upload`},()=>n,{get iconNode(){return r}}))}var Zn=new Set([`$$slots`,`$$events`,`$$legacy`]);function Qn(e,t){let n=E(t,Zn),r=[[`path`,{d:`M10 11v6`}],[`path`,{d:`M14 11v6`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`}],[`path`,{d:`M3 6h18`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`}]];Z(e,W({name:`trash-2`},()=>n,{get iconNode(){return r}}))}var $n=new Set([`$$slots`,`$$events`,`$$legacy`]);function er(e,t){let n=E(t,$n),r=[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`}],[`path`,{d:`m9 12 2 2 4-4`}]];Z(e,W({name:`shield-check`},()=>n,{get iconNode(){return r}}))}var tr=h(``),nr=h(`
`),rr=h(``),ir=h(``),ar=h(`
`),or=h(`

`),sr=h(`

`),cr=h(` `,1);function lr(r,a){ne(a,!0);let o=U(!1),l=U(``),u=U(M([])),d=U(!1),m=U(``),h=U(void 0),v=q(()=>a.account.reserve_percent??null),y=q(()=>a.account.reserve_windows??[]),b=q(()=>jt.filter(e=>n(y).includes(e)||a.quota?.windows.some(t=>t.remaining_percent!=null&&Nt(t.id)===e))),x=q(()=>jt.filter(e=>n(y).includes(e)).map(Mt).join(` + `));async function C(){J(l,n(v)==null?``:String(n(v)),!0),J(u,[...n(y)],!0),J(m,``),J(o,!0),await c(),n(h)?.focus(),n(h)?.select()}function T(e){J(u,n(u).includes(e)?n(u).filter(t=>t!==e):[...n(u),e],!0)}async function E(e,t){if(!(n(d)||a.busy)){if(e===n(v)&&t.length===n(y).length&&t.every(e=>n(y).includes(e)))J(o,!1);else{J(d,!0),J(m,``);try{await a.save(a.account,e,t)?J(o,!1):J(m,Q(`reserve.notSaved`),!0)}finally{J(d,!1)}}}}function A(){let e=n(l).trim().replace(`,`,`.`);if(!e)return E(null,[]);let t=Number(e);if(!/^\d+(\.\d+)?$/.test(e)||t>=100)J(m,Q(`reserve.invalid`),!0);else return t===0?E(null,[]):E(t,n(u))}var j=p(),P=w(j),F=r=>{var c=ar(),p=S(c),y=S(p),x=g(y,!0),C=e(y);N(C),k(C,e=>J(h,e),()=>n(h)),H(),Y(p);var w=e(p,2),D=S(w);Ot(S(D),{size:20}),Y(D);var j=e(D);Fe(S(j),{size:20}),Y(j),Y(w);var M=e(w,2),P=t=>{var r=nr(),a=S(r);let o;var c=g(a,!0),l=e(a,2);i(l,16,()=>n(b),e=>e,(e,t)=>{var r=tr();let i;var a=g(r,!0);s((e,t,o)=>{i=O(r,1,`chip svelte-c6cuiu`,null,i,{on:e}),G(r,`aria-pressed`,t),r.disabled=n(d),z(a,o)},[()=>n(u).includes(t),()=>n(u).includes(t),()=>Mt(t)]),_(`click`,r,()=>T(t)),f(e,r)}),Y(r),s((e,t,i)=>{G(r,`aria-label`,e),o=O(a,1,`chip svelte-c6cuiu`,null,o,{on:!n(u).length}),G(a,`aria-pressed`,!n(u).length),G(a,`title`,t),a.disabled=n(d),z(c,i)},[()=>Q(`reserve.watched`),()=>Q(`reserve.longestTitle`),()=>Q(`reserve.longest`)]),_(`click`,a,()=>J(u,[],!0)),f(t,r)};t(M,e=>{n(b).length>1&&e(P)});var F=e(M,2),I=e=>{var t=rr(),r=g(t,!0);s(e=>{t.disabled=n(d)||!!a.busy,z(r,e)},[()=>Q(`reserve.remove`)]),_(`click`,t,()=>E(null,[])),f(e,t)};t(F,e=>{n(v)!=null&&e(I)});var L=e(F,2),R=e=>{var t=ir(),r=g(t,!0);s(()=>z(r,n(m))),f(e,t)};t(L,e=>{n(m)&&e(R)}),Y(c),s((e,t,r,i,o,s)=>{z(x,e),G(C,`aria-label`,t),C.disabled=n(d),G(D,`aria-label`,r),G(D,`title`,i),D.disabled=n(d)||!!a.busy,G(j,`aria-label`,o),G(j,`title`,s),j.disabled=n(d)},[()=>Q(`reserve.keepAtLeast`),()=>Q(`reserve.input`),()=>Q(`reserve.save`),()=>Q(`common.save`),()=>Q(`common.cancel`),()=>Q(`common.cancel`)]),X(`submit`,c,e=>{e.preventDefault(),A()}),_(`keydown`,C,e=>{e.key===`Escape`&&!n(d)&&J(o,!1)}),re(C,()=>n(l),e=>J(l,e)),_(`click`,j,()=>J(o,!1)),f(r,c)},I=r=>{var i=cr(),o=w(i);let c;var l=S(o);er(l,{size:16});var u=e(l,1,!0);Y(o);var d=e(o,2),p=e=>{var t=or(),n=g(t,!0);s(e=>z(n,e),[()=>Q(`reserve.reached`)]),f(e,t)},m=e=>{var t=sr(),r=g(t,!0);s(e=>z(r,e),[()=>Q(n(y).length?`reserve.inactiveWindows`:`reserve.inactiveAccount`)]),f(e,t)};t(d,e=>{n(v)!=null&&a.account.enabled&&a.account.reserve_reached?e(p):n(v)!=null&&a.account.reserve_measured===!1&&e(m,1)}),s((e,t)=>{c=O(o,1,`reserve svelte-c6cuiu`,null,c,{set:n(v)!=null}),o.disabled=!!a.busy,G(o,`title`,e),z(u,t)},[()=>n(y).length?Q(`reserve.titleWatched`,{windows:n(x)}):Q(`reserve.titleLongest`),()=>n(v)==null?Q(`reserve.add`):`${Q(`reserve.label`,{percent:Gt(n(v))})}${n(y).length?` · ${n(x)}`:``}`]),_(`click`,o,C),f(r,i)};t(P,e=>{n(o)?e(F):e(I,-1)}),f(r,j),D()}d([`keydown`,`click`]);var ur=h(``),dr=h(`
`),fr=h(` `),pr=h(` `),mr=h(`
`);function hr(r,a){ne(a,!0);let o=U(!1),c=U(``),l=U(``),u=U(``),d=U(``),m=U(``),h=q(()=>At(a.account.dialect??``));function v(){J(c,a.account.route??``,!0),J(l,a.account.base_url??``,!0),J(u,a.account.dialect??``,!0),J(d,(a.account.models??[]).join(`, `),!0),J(m,``),J(o,!0)}async function y(e){e.preventDefault();let t={},r=n(c).trim().toLowerCase();r&&r!==(a.account.route??``)&&(t.route=r),n(l).trim()&&n(l).trim()!==(a.account.base_url??``)&&(t.base_url=n(l).trim()),(n(u)||null)!==(a.account.dialect??null)&&(t.dialect=n(u)||null);let i=n(d).split(`,`).map(e=>e.trim()).filter(Boolean);i.join(`,`)!==(a.account.models??[]).join(`,`)&&(t.models=i),n(m).trim()&&(t.api_key=n(m).trim()),Object.keys(t).length?await a.save(a.account,t)&&(J(o,!1),J(m,``)):J(o,!1)}var b=p(),x=w(b),C=t=>{var r=dr(),p=S(r),h=S(p,!0),v=e(h);N(v),G(v,`pattern`,`[a-z0-9][a-z0-9_\\-]{0,31}`),Y(p);var b=e(p,2),x=S(b,!0),C=e(x);N(C),Y(b);var w=e(b,2),E=S(w,!0),D=e(E);i(D,20,()=>kt,e=>e,(e,t)=>{var n=ur(),r=g(n,!0),i={};s(e=>{z(r,e),i!==(i=t)&&(n.value=(n.__value=i)??``)},[()=>At(t)]),f(e,n)}),Y(D),T(D),Y(w);var O=e(w,2),k=S(O,!0),A=e(k);N(A),Y(O);var j=e(O,2),M=S(j,!0),P=e(M);N(P),Y(j);var I=e(j,2),L=S(I),R=g(L,!0),B=e(L),V=g(B,!0);Y(I),Y(r),s((e,t,n,r,i,o,s,c,l)=>{z(h,e),z(x,t),z(E,n),z(k,r),G(A,`placeholder`,i),z(M,o),G(P,`placeholder`,s),L.disabled=!!a.busy,z(R,c),z(V,l)},[()=>Q(`endpoint.route`),()=>Q(`endpoint.url`),()=>Q(`endpoint.format`),()=>Q(`endpoint.models`),()=>Q(`endpoint.modelsPlaceholder`),()=>Q(`endpoint.newKey`),()=>Q(`endpoint.unchanged`),()=>Q(`common.save`),()=>Q(`common.cancel`)]),X(`submit`,r,y),re(v,()=>n(c),e=>J(c,e)),re(C,()=>n(l),e=>J(l,e)),F(D,()=>n(u),e=>J(u,e)),re(A,()=>n(d),e=>J(d,e)),re(P,()=>n(m),e=>J(m,e)),_(`click`,B,()=>{J(o,!1),J(m,``)}),f(t,r)},E=r=>{var i=mr(),o=S(i),c=e=>{var t=fr(),n=g(t);s(()=>z(n,`${a.account.route??``}/`)),f(e,t)};t(o,e=>{a.account.route&&e(c)});var l=e(o,2),u=g(l,!0),d=e(l,2),p=e=>{var t=pr(),r=g(t,!0);s(()=>z(r,n(h))),f(e,t)};t(d,e=>{n(h)&&e(p)});var m=e(d,2);Et(S(m),{size:15}),Y(m),Y(i),s((e,t)=>{G(l,`title`,a.account.base_url??``),z(u,a.account.base_url),G(m,`aria-label`,e),G(m,`title`,t),m.disabled=!!a.busy},[()=>Q(`endpoint.edit`),()=>Q(`endpoint.edit`)]),_(`click`,m,v),f(r,i)};t(x,e=>{n(o)?e(C):(a.account.route||a.account.base_url)&&e(E,1)}),f(r,b),D()}d([`click`]);var gr=h(`

`),_r=h(``),vr=h(`

`),yr=h(`
`),br=h(``),xr=h(`

`,1);function Sr(r,a){ne(a,!0);let o=U(``),c=U(null),l,u=q(()=>a.accounts.filter(e=>`${e.name} ${e.provider} ${e.route??``} ${e.email??``}`.toLowerCase().includes(n(o).toLowerCase()))),d=U(!1);var p=xr(),m=w(p),h=S(m),v=g(h,!0),y=e(h),b=S(y),x=S(b);Xn(x,{size:18});var C=e(x,1,!0);Y(b);var T=e(b),E=S(T);Ve(E,{size:20});var A=e(E,1,!0);Y(T),Y(y),Y(m);var j=e(m,2);k(j,e=>l=e,()=>l);var M=e(j,2),P=S(M),F=g(P,!0),I=e(P),L=S(I);ze(L,{size:18});var R=e(L);N(R),Y(I),Y(M);var B=e(M,2);let V;var H=S(B);Xn(H,{size:19});var ee=e(H),te=g(ee,!0);Y(B);var W=e(B,2),K=S(W),ie=e=>{{let t=q(()=>Q(`common.noAccountConnected`)),r=q(()=>Q(`accounts.emptyDescription`)),i=q(()=>Q(`common.connectAccount`));En(e,{get title(){return n(t)},get description(){return n(r)},get action(){return n(i)},get onclick(){return a.connect}})}},ae=e=>{{let t=q(()=>Q(`common.noMatchingAccount`)),r=q(()=>Q(`common.tryOtherName`));En(e,{get title(){return n(t)},get description(){return n(r)}})}},oe=r=>{var o=br(),l=S(o),d=S(l),p=S(d),m=S(p),h=g(m,!0),v=e(m),y=g(v,!0),b=e(v),x=g(b,!0),C=e(b),w=g(C,!0),T=e(C),E=g(T,!0),D=e(T),k=g(D,!0);Y(p),Y(d);var A=e(d);i(A,21,()=>n(u),e=>e.id,(r,i)=>{let o=q(()=>a.quotas.find(e=>e.account_id===n(i).id));var l=yr(),u=S(l),d=S(u);an(d,{get account(){return n(i)},get rename(){return a.rename},get busy(){return a.busy}});var p=e(d),m=e=>{dn(e,{get email(){return n(i).email}})};t(p,e=>{n(i).email&&e(m)});var h=e(p),v=e=>{hr(e,{get account(){return n(i)},get busy(){return a.busy},get save(){return a.updateEndpoint}})};t(h,e=>{n(i).provider===`openai_compatible`&&e(v)});var y=e(h),b=e=>{var t=gr(),r=g(t,!0);s(e=>z(r,e),[()=>zt(n(i).last_error)]),f(e,t)};t(y,e=>{n(i).last_error&&e(b)}),Y(u);var x=e(u),C=S(x),w=S(C);ct(w,{get provider(){return n(i).provider},size:23});var T=e(w,1,!0);Y(C);var E=e(C),D=e=>{var t=_r(),r=g(t,!0);s(()=>z(r,n(o)?.subscription?.label??n(i).subscription?.label??n(i).plan)),f(e,t)};t(E,e=>{(n(o)?.subscription?.label||n(i).subscription?.label||n(i).plan)&&e(D)}),Y(x);var k=e(x),A=S(k);let j;var M=e(S(A),1,!0);Y(A),Y(k);var N=e(k);lr(S(N),{get account(){return n(i)},get quota(){return n(o)},get busy(){return a.busy},get save(){return a.setReserve}}),Y(N);var P=e(N),F=g(P,!0),I=e(P),L=S(I),R=S(L);let B;var V=e(R);Qn(S(V),{size:20}),Y(V),Y(L);var H=e(L),ee=t=>{var r=vr(),o=S(r),l=g(o,!0),u=e(o),d=g(u,!0),p=e(u),m=g(p,!0);Y(r),s((e,t,n)=>{z(l,e),u.disabled=!!a.busy,z(d,t),z(m,n)},[()=>Q(`accounts.deleteConfirm`),()=>Q(`accounts.deleteButton`),()=>Q(`common.cancel`)]),_(`click`,u,()=>{a.remove(n(i)),J(c,null)}),_(`click`,p,()=>J(c,null)),f(t,r)};t(H,e=>{n(c)===n(i).id&&e(ee)}),Y(I),Y(l),s((e,t,r,o,s,c,l,u)=>{z(T,e),j=O(A,1,`state-badge`,null,j,{inactive:!n(i).enabled,warning:t}),z(M,r),G(P,`data-label`,o),z(F,s),B=O(R,1,`switch`,null,B,{on:n(i).enabled}),G(R,`aria-checked`,n(i).enabled),G(R,`aria-label`,c),R.disabled=!!a.busy,G(V,`aria-label`,l),G(V,`title`,u),V.disabled=!!a.busy},[()=>Wt(n(i).provider),()=>Ut(n(i)),()=>Ht(n(i)),()=>Q(`accounts.verifiedPrefix`),()=>n(o)?.updated_at?Jt(n(o).updated_at):Q(`accounts.notVerified`),()=>Q(`common.enable`,{name:zt(n(i).name)}),()=>Q(`accounts.delete`,{name:zt(n(i).name)}),()=>Q(`accounts.deleteTitle`)]),_(`click`,R,()=>a.toggle(n(i))),_(`click`,V,()=>J(c,n(i).id,!0)),f(r,l)}),Y(A),Y(l),Y(o),s((e,t,n,r,i,a)=>{z(h,e),z(y,t),z(x,n),z(w,r),z(E,i),z(k,a)},[()=>Q(`accounts.colAccount`),()=>Q(`accounts.colSubscription`),()=>Q(`accounts.colStatus`),()=>Q(`accounts.colReserve`),()=>Q(`accounts.colVerified`),()=>Q(`accounts.colActions`)]),f(r,o)};t(K,e=>{a.accounts.length?n(u).length?e(oe,-1):e(ae,1):e(ie)}),Y(W),s((e,t,r,i,o,s,c,l)=>{z(v,e),b.disabled=!!a.busy,z(C,t),z(A,r),z(F,i),G(R,`placeholder`,o),G(R,`aria-label`,s),V=O(B,1,`drop-zone svelte-1x1hfd6`,null,V,{dragging:n(d)}),G(B,`aria-label`,c),z(te,l)},[()=>Q(`accounts.title`),()=>Q(`common.import`),()=>Q(`common.connectAccount`),()=>Q(a.accounts.length===1?`common.accountCount.one`:`common.accountCount.other`,{count:a.accounts.length}),()=>Q(`common.searchAccount`),()=>Q(`common.searchAccount`),()=>Q(`accounts.dropLabel`),()=>Q(`accounts.drop`)]),_(`click`,b,()=>l.click()),_(`click`,T,function(...e){a.connect?.apply(this,e)}),_(`change`,j,e=>{e.currentTarget.files?.length&&a.importFiles(e.currentTarget.files),e.currentTarget.value=``}),re(R,()=>n(o),e=>J(o,e)),X(`dragover`,B,e=>{e.preventDefault(),J(d,!0)}),X(`dragleave`,B,()=>J(d,!1)),X(`drop`,B,e=>{e.preventDefault(),J(d,!1),e.dataTransfer?.files.length&&a.importFiles(e.dataTransfer.files)}),f(r,p),D()}d([`click`,`change`]);var Cr=new Set([`$$slots`,`$$events`,`$$legacy`]);function wr(e,t){let n=E(t,Cr),r=[[`path`,{d:`M12 7v6`}],[`path`,{d:`M12 9h2`}],[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.74 9.74 0 0 0-6.74 2.74L3 8`}],[`path`,{d:`M3 3v5h5`}],[`circle`,{cx:`12`,cy:`15`,r:`2`}]];Z(e,W({name:`rotate-ccw-key`},()=>n,{get iconNode(){return r}}))}var Tr=new Set([`$$slots`,`$$events`,`$$legacy`]);function Er(e,t){let n=E(t,Tr),r=[[`rect`,{width:`18`,height:`11`,x:`3`,y:`11`,rx:`2`,ry:`2`}],[`path`,{d:`M7 11V7a5 5 0 0 1 10 0v4`}]];Z(e,W({name:`lock`},()=>n,{get iconNode(){return r}}))}var Dr=new Set([`$$slots`,`$$events`,`$$legacy`]);function Or(e,t){let n=E(t,Dr),r=[[`circle`,{cx:`12`,cy:`12`,r:`10`}],[`path`,{d:`M12 16v-4`}],[`path`,{d:`M12 8h.01`}]];Z(e,W({name:`info`},()=>n,{get iconNode(){return r}}))}var kr=new Set([`$$slots`,`$$events`,`$$legacy`]);function Ar(e,t){let n=E(t,kr),r=[[`path`,{d:`M21 12c.552 0 1.005-.449.95-.998a10 10 0 0 0-8.953-8.951c-.55-.055-.998.398-.998.95v8a1 1 0 0 0 1 1z`}],[`path`,{d:`M21.21 15.89A10 10 0 1 1 8 2.83`}]];Z(e,W({name:`chart-pie`},()=>n,{get iconNode(){return r}}))}var jr=h(`

`);function Mr(t,n){ne(n,!0);let r=L(n,`locked`,3,!1),i=L(n,`wide`,3,!1),o;te(()=>(o.showModal(),()=>o.close()));var c=jr();let l;var u=S(c),d=S(u),p=g(d,!0),m=e(d);Fe(S(m),{size:20}),Y(m),Y(u);var h=e(u,2);a(h,()=>n.children),Y(c),k(c,e=>o=e,()=>o),s(e=>{l=O(c,1,`modal svelte-1k2jq0p`,null,l,{wide:i()}),z(p,n.title),G(m,`aria-label`,e),m.disabled=r()},[()=>Q(`common.close`)]),X(`cancel`,c,e=>{e.preventDefault(),r()||n.close()}),_(`click`,m,function(...e){n.close?.apply(this,e)}),f(t,c),D()}d([`click`]);var Nr=h(``),Pr=h(`
`),Fr=h(`
`),Ir=h(``),Lr=h(``),Rr=h(`

`),zr=h(``),Br=h(`

`);function Vr(r,a){ne(a,!0);let o=b(()=>A(a.client)),c=U(M(o?.name??``)),l=U(M(o?.access.all??!0)),u=U(M([...o?.access.pools??[]])),d=U(M([...o?.access.accounts??[]])),p=M(Object.fromEntries(Object.entries(o?.shares??{}).map(([e,t])=>[e,String(t)]))),m=U(!1),h=U(``),v=q(()=>Rt(a.accounts)),y=q(()=>n(v).filter(e=>n(l)||n(u).includes(e.id)||e.accounts.some(e=>n(d).includes(e.id))));function x(e){return a.clients.reduce((t,n)=>n.id===o?.id?t:t+(n.shares[e]??0),0)}function C(e){let t=Number((p[e]??``).trim().replace(`,`,`.`));return Number.isFinite(t)&&t>0?t:0}function w(e){return 100-x(e)-C(e)}function T(e){J(u,n(u).includes(e)?n(u).filter(t=>t!==e):[...n(u),e],!0)}function E(e){J(d,n(d).includes(e)?n(d).filter(t=>t!==e):[...n(d),e],!0)}async function k(e){if(e.preventDefault(),n(m))return;J(h,``);let t=n(l)?[]:n(v).filter(e=>n(u).includes(e.id)).map(e=>e.id),r=n(l)?[]:a.accounts.filter(e=>n(d).includes(e.id)&&!t.includes(e.route||e.provider)).map(e=>e.id);if(!n(l)&&!t.length&&!r.length){J(h,Q(`clients.pickAccess`),!0);return}let i={};for(let e of n(y)){let t=(p[e.id]??``).trim().replace(`,`,`.`);if(!t)continue;let n=Number(t);if(!/^\d+(\.\d+)?$/.test(t)||n<=0||n>100){J(h,Q(`clients.shareInvalid`),!0);return}i[e.id]=n}let s={name:n(c).trim(),access:{all:n(l),pools:t,accounts:r},shares:i};J(m,!0);try{a.saved(o?await $.updateClient(o.id,s):await $.createClient(s),!o)}catch(e){J(h,e.message,!0)}finally{J(m,!1)}}{let b=q(()=>o?Q(`clients.editTitle`,{name:o.name}):Q(`clients.new`));Mr(r,{get title(){return n(b)},get close(){return a.close},get locked(){return n(m)},wide:!0,children:(r,b)=>{var x=Br(),C=S(x),D=S(C),A=g(D,!0),j=e(D);N(j),Y(C);var M=e(C,2),P=S(M),F=g(P,!0),I=e(P,2),L=S(I),R=S(L),B=g(R,!0),V=e(R),te=g(V,!0);Y(L);var U=e(L);Y(I);var W=e(I,2),ne=t=>{var r=Fr();i(r,21,()=>n(v),e=>e.id,(t,r)=>{let a=q(()=>n(u).includes(n(r).id));var o=Pr(),c=S(o),l=S(c);N(l);var p=e(l);ct(p,{get provider(){return n(r).provider},size:20});var m=e(p),h=g(m,!0);Y(c);var v=e(c,2);i(v,21,()=>n(r).accounts,e=>e.id,(e,t)=>{let r=q(()=>n(a)||n(d).includes(n(t).id));var i=Nr(),o=g(i,!0);s(e=>{O(i,1,oe([`chip`,n(r)&&`on`]),`svelte-vb71yz`),G(i,`aria-pressed`,n(r)),i.disabled=n(a),z(o,e)},[()=>zt(n(t).name)]),_(`click`,i,()=>E(n(t).id)),f(e,i)}),Y(v),Y(o),s(e=>{G(c,`title`,e),ee(l,n(a)),z(h,n(r).name)},[()=>Q(`clients.wholePool`,{pool:n(r).name})]),_(`change`,l,()=>T(n(r).id)),f(t,o)}),Y(r),f(t,r)};t(W,e=>{n(l)||e(ne)}),Y(M);var K=e(M,2),ie=S(K),ae=S(ie,!0),se=e(ae);Or(S(se),{size:16}),Y(se),Y(ie);var ce=e(ie,2),le=t=>{var r=Lr();i(r,21,()=>n(y),e=>e.id,(t,r)=>{let i=q(()=>w(n(r).id));var a=Ir(),o=S(a),c=S(o);ct(c,{get provider(){return n(r).provider},size:22});var l=e(c,1,!0);Y(o);var u=e(o),d=S(u);N(d),H(),Y(u);var m=e(u),h=g(m,!0);Y(a),s((e,t)=>{z(l,n(r).name),G(d,`aria-label`,e),O(m,1,oe([`share-common`,n(i)<0&&`over`]),`svelte-vb71yz`),z(h,t)},[()=>Q(`clients.shareOf`,{pool:n(r).name}),()=>n(i)<0?Q(`clients.overbooked`):Q(`clients.common`,{value:Gt(n(i))})]),re(d,()=>p[n(r).id],e=>p[n(r).id]=e),f(t,a)}),Y(r),f(t,r)},ue=e=>{var t=Rr(),n=g(t,!0);s(e=>z(n,e),[()=>Q(`clients.noPool`)]),f(e,t)};t(ce,e=>{n(y).length?e(le):e(ue,-1)}),Y(K);var de=e(K,2),fe=e=>{var t=zr(),r=g(t,!0);s(()=>z(r,n(h))),f(e,t)};t(de,e=>{n(h)&&e(fe)});var pe=e(de,2),Z=S(pe),me=g(Z,!0),he=e(Z),ge=g(he,!0);Y(pe),Y(x),s((e,t,r,i,a,o,s,c,u,d,f,p)=>{z(A,e),G(j,`placeholder`,t),z(F,r),z(B,i),z(te,a),O(U,1,oe([`switch`,n(l)&&`on`])),G(U,`aria-checked`,n(l)),G(U,`aria-label`,o),z(ae,s),G(se,`title`,c),G(se,`aria-label`,u),Z.disabled=n(m),z(me,d),he.disabled=f,z(ge,p)},[()=>Q(`clients.name`),()=>Q(`clients.namePlaceholder`),()=>Q(`clients.access`),()=>Q(`clients.allAccounts`),()=>Q(`clients.allAccountsHint`),()=>Q(`clients.allAccounts`),()=>Q(`clients.shares`),()=>Q(`clients.sharesInfo`),()=>Q(`clients.sharesInfo`),()=>Q(`common.cancel`),()=>n(m)||!n(c).trim(),()=>Q(o?`common.save`:`clients.create`)]),X(`submit`,x,k),re(j,()=>n(c),e=>J(c,e)),_(`click`,U,()=>J(l,!n(l))),_(`click`,Z,function(...e){a.close?.apply(this,e)}),f(r,x)},$$slots:{default:!0}})}D()}d([`click`,`change`]);var Hr=new Set([`$$slots`,`$$events`,`$$legacy`]);function Ur(e,t){let n=E(t,Hr),r=[[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`}],[`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`}]];Z(e,W({name:`copy`},()=>n,{get iconNode(){return r}}))}async function Wr(e){try{if(navigator.clipboard?.writeText){await navigator.clipboard.writeText(e);return}}catch{}let t=document.activeElement instanceof HTMLElement?document.activeElement:null,n=t instanceof HTMLInputElement||t instanceof HTMLTextAreaElement?t:null,r=n?.selectionStart!=null&&n.selectionEnd!=null?{start:n.selectionStart,end:n.selectionEnd,direction:n.selectionDirection}:null,i=document.getSelection(),a=i?Array.from({length:i.rangeCount},(e,t)=>i.getRangeAt(t).cloneRange()):[],o=document.createElement(`textarea`);o.value=e,o.readOnly=!0,o.tabIndex=-1,o.setAttribute(`aria-hidden`,`true`),o.style.cssText=`position:fixed;top:0;left:0;opacity:0;pointer-events:none;font-size:16px`;try{if((t?.closest(`dialog[open]`)??document.body).append(o),o.focus({preventScroll:!0}),o.select(),o.setSelectionRange(0,e.length),!document.execCommand(`copy`))throw Error(`Clipboard copy failed.`)}finally{if(o.remove(),t?.focus({preventScroll:!0}),i){i.removeAllRanges();for(let e of a)i.addRange(e)}n&&r&&n.setSelectionRange(r.start,r.end,r.direction??void 0)}}var Gr=h(` `,1),Kr=h(``),qr=h(`

`,1);function Jr(r,i){ne(i,!0);let a=U(!1),o=U(``);async function c(){try{await Wr(i.key),J(a,!0),J(o,``)}catch{J(a,!1),J(o,Q(`common.copyRefused`),!0)}}{let l=q(()=>Q(`clients.keyTitle`,{name:i.name}));Mr(r,{get title(){return n(l)},get close(){return i.close},children:(r,l)=>{var u=qr(),d=w(u),p=S(d);xe(p,{size:17});var m=e(p,1,!0);Y(d);var h=e(d,2),v=S(h),y=g(v,!0),b=e(v),x=S(b),C=t=>{var n=Gr(),r=w(n);Ot(r,{size:17});var i=e(r,1,!0);s(e=>z(i,e),[()=>Q(`clients.copied`)]),f(t,n)},T=t=>{var n=Gr(),r=w(n);Ur(r,{size:17});var i=e(r,1,!0);s(e=>z(i,e),[()=>Q(`clients.copyKey`)]),f(t,n)};t(x,e=>{n(a)?e(C):e(T,-1)}),Y(b),Y(h);var E=e(h,2),D=g(E,!0),O=e(E,2),k=e=>{var t=Kr(),r=g(t,!0);s(()=>z(r,n(o))),f(e,t)};t(O,e=>{n(o)&&e(k)});var A=e(O,2),j=S(A),M=g(j,!0);Y(A),s((e,t,n)=>{z(m,e),z(y,i.key),z(D,t),z(M,n)},[()=>Q(`clients.keyOnce`),()=>Q(`clients.keyBoite`),()=>Q(`common.close`)]),_(`click`,b,c),_(`click`,j,function(...e){i.close?.apply(this,e)}),f(r,u)},$$slots:{default:!0}})}D()}d([`click`]);var Yr=new Set([`$$slots`,`$$events`,`$$legacy`]);function Xr(e,t){let n=E(t,Yr),r=[[`path`,{d:`m6 9 6 6 6-6`}]];Z(e,W({name:`chevron-down`},()=>n,{get iconNode(){return r}}))}var Zr=h(``),Qr=h(``),$r=h(``),ei=h(``),ti=h(`

`),ni=h(`

`),ri=h(`

`),ii=h(` `,1),ai=h(` `),oi=h(`
`),si=h(`
`),ci=h(`
`),li=h(`

`),ui=h(`

`);function di(r,a){ne(a,!0);let o=[{id:`day`,hours:24},{id:`week`,hours:168},{id:`month`,hours:720}],c=U(M(o[0])),l=U(null),d=U(``),m=U(null),h=U(null),v=q(()=>new Map(a.clients.map(e=>[e.id,e.name])));u(()=>{let e=n(c).hours;a.version;let t=!0;return $.clientStats(e).then(e=>{t&&(J(l,e),J(d,``))},e=>{t&&J(d,e.message,!0)}),()=>{t=!1}});function y(e){return e?n(v).has(e)?{id:e,label:n(v).get(e),color:a.colors.get(e)??a.noKeyColor}:{id:`former`,label:Q(`clients.former`),color:a.formerColor}:{id:`no-key`,label:Q(`clients.noKey`),color:a.noKeyColor}}let b=q(()=>{let e=new Map;for(let t of a.clients)e.set(t.id,{...y(t.id),calls:0,errors:0,input:0,output:0,cache:0,latency:0,last:``,models:[]});for(let t of n(l)?.totals??[]){let n=y(t.client_id),r=e.get(n.id);r||(r={...n,calls:0,errors:0,input:0,output:0,cache:0,latency:0,last:``,models:[]},e.set(n.id,r)),x(r,t),t.last_at>r.last&&(r.last=t.last_at);let i=`${t.provider}/${t.model}`,a=r.models.find(e=>e.key===i);a||(a={key:i,provider:t.provider,model:t.model,calls:0,errors:0,input:0,output:0,cache:0,latency:0},r.models.push(a)),x(a,t)}for(let t of e.values())t.models.sort((e,t)=>t.input+t.output-(e.input+e.output));return[...e.values()].sort((e,t)=>t.input+t.output-(e.input+e.output)||t.calls-e.calls||e.label.localeCompare(t.label))});function x(e,t){e.calls+=t.calls,e.errors+=t.errors,e.input+=t.input_tokens,e.output+=t.output_tokens,e.cache+=t.cache_read_tokens,e.latency+=t.latency_ms}let C=q(()=>n(b).reduce((e,t)=>({calls:e.calls+t.calls,errors:e.errors+t.errors,tokens:e.tokens+t.input+t.output}),{calls:0,errors:0,tokens:0})),T=q(()=>n(b).filter(e=>e.calls>0).length),E=q(()=>{let e=n(c).hours<=24,t=new Date,r=n(l)?new Date(n(l).since):new Date(t.getTime()-n(c).hours*36e5),i=[],a=e=>i.push({start:e,label:``,values:new Map,total:0});if(e){let e=Math.floor(r.getTime()/36e5)*36e5;for(let n=e;n<=t.getTime();n+=36e5)a(new Date(n))}else{let e=new Date(t.getFullYear(),t.getMonth(),t.getDate());for(let t=new Date(r.getFullYear(),r.getMonth(),r.getDate());t<=e;t=new Date(t.getFullYear(),t.getMonth(),t.getDate()+1))a(t)}let o=new Intl.DateTimeFormat(yt(),e?{hour:vt()===`en`?`numeric`:`2-digit`,minute:`2-digit`}:{weekday:n(c).hours<=168?`short`:void 0,day:`numeric`,month:`short`});for(let e of i)e.label=o.format(e.start);for(let t of n(l)?.hours??[]){let n=new Date(`${t.hour}:00:00Z`),r=e?i.findIndex(e=>e.start.getTime()===n.getTime()):i.findIndex(e=>e.start.getFullYear()===n.getFullYear()&&e.start.getMonth()===n.getMonth()&&e.start.getDate()===n.getDate());if(r<0)continue;let a=y(t.client_id).id;i[r].values.set(a,(i[r].values.get(a)??0)+t.tokens),i[r].total+=t.tokens}return i}),k=q(()=>Math.max(1,...n(E).map(e=>e.total))),A=q(()=>n(b).filter(e=>e.input+e.output>0));function j(e,t){return t?e/t*100:0}function N(e){return Q(`common.percent`,{value:Gt(e)})}function P(e){let t=n(E)[e];return`${t.label}: ${n(A).filter(e=>t.values.get(e.id)).map(e=>`${e.label} ${Kt(t.values.get(e.id))}`).join(`, `)||Q(`stats.none`)}`}var F=ui(),I=S(F),L=S(I),R=S(L,!0),B=e(R);Or(S(B),{size:16}),Y(B),Y(L);var V=e(L,2);i(V,21,()=>o,e=>e.id,(e,t)=>{var r=Zr();let i;var a=g(r,!0);s(e=>{G(r,`aria-pressed`,n(c).id===n(t).id),i=O(r,1,`svelte-1gmdt1j`,null,i,{active:n(c).id===n(t).id}),z(a,e)},[()=>Q(`stats.${n(t).id}`)]),_(`click`,r,()=>{J(c,n(t),!0),J(h,null)}),f(e,r)}),Y(V),Y(I);var H=e(I,2),ee=e=>{var t=Qr(),r=g(t,!0);s(()=>z(r,n(d))),f(e,t)};t(H,e=>{n(d)&&e(ee)});var te=e(H,2),W=S(te),K=S(W),re=S(K),ie=g(re,!0),ae=e(re),oe=g(ae,!0);Y(K);var ce=e(K,2),le=S(ce),ue=g(le,!0),de=e(le),fe=g(de,!0);Y(ce);var pe=e(ce,2),Z=S(pe),me=g(Z,!0),he=e(Z),ge=g(he,!0);Y(pe);var _e=e(pe,2),ve=S(_e),ye=g(ve,!0),be=e(ve);let xe;var Se=g(be,!0);Y(_e),Y(W);var Ce=e(W,2),we=S(Ce),Te=g(we,!0),Ee=e(we,2);let De;i(Ee,23,()=>n(E),e=>e.start.getTime(),(e,r,a)=>{var o=ei();let c;var l=S(o);let u;i(l,21,()=>n(A),e=>e.id,(e,i)=>{let a=q(()=>n(r).values.get(n(i).id)??0);var o=p(),c=w(o),l=e=>{var t=$r();let r;s(()=>r=se(t,``,r,{"flex-grow":n(a),background:n(i).color})),f(e,t)};t(c,e=>{n(a)&&e(l)}),f(e,o)}),Y(l),Y(o),s((e,t)=>{c=O(o,1,`column svelte-1gmdt1j`,null,c,{dim:n(h)!=null&&n(h)!==n(a)}),G(o,`aria-label`,e),u=se(l,``,u,{height:t})},[()=>P(n(a)),()=>`${j(n(r).total,n(k))??``}%`]),X(`mouseenter`,o,()=>J(h,n(a),!0)),X(`focus`,o,()=>J(h,n(a),!0)),X(`blur`,o,()=>J(h,null)),f(e,o)}),Y(Ee);var Oe=e(Ee,2),ke=S(Oe),Ae=g(ke,!0),je=e(ke),Me=g(je,!0),Ne=e(je),Pe=g(Ne,!0);Y(Oe);var Fe=e(Oe,2),Ie=t=>{let r=q(()=>n(E)[n(h)]);var a=ri();let o,c;var l=S(a),u=g(l,!0),d=e(l,2);i(d,17,()=>n(A).filter(e=>n(r).values.get(e.id)),e=>e.id,(t,i)=>{var a=ti(),o=S(a);let c;var l=e(o,1,!0),u=e(l),d=g(u,!0);Y(a),s(e=>{c=se(o,``,c,{background:n(i).color}),z(l,n(i).label),z(d,e)},[()=>Kt(n(r).values.get(n(i).id))]),f(t,a)},e=>{var t=ni(),n=g(t,!0);s(e=>z(n,e),[()=>Q(`stats.none`)]),f(e,t)}),Y(a),s(()=>{o=O(a,1,`tip svelte-1gmdt1j`,null,o,{right:n(h)>n(E).length/2}),c=se(a,``,c,{left:`${(n(h)+.5)/n(E).length*100}%`}),z(u,n(r).label)}),f(t,a)};t(Fe,e=>{n(h)!=null&&e(Ie)}),Y(Ce);var Le=e(Ce,2);i(Le,21,()=>n(b),e=>e.id,(r,a)=>{let o=q(()=>n(a).input+n(a).output);var c=ci();let l;var u=S(c),d=S(u),p=S(d);let h;var v=e(p),y=g(v,!0);Y(d);var b=e(d,2),x=S(b),T=S(x);let E;Y(x);var D=e(x),k=g(D,!0);Y(b);var A=e(b,2),M=t=>{var r=ii(),i=w(r),c=S(i),l=g(c,!0),u=e(c);Y(i);var d=e(i,2),p=S(d),m=g(p,!0),h=e(p);Y(d);var _=e(d,2),v=g(_,!0),y=e(_,2);let b;var x=g(y,!0),C=e(y,2),T=g(C,!0);Xr(e(C,2),{size:18,class:`chevron`}),s((e,t,r,i,o,s,c,d)=>{z(l,e),z(u,` ${t??``}`),z(m,r),z(h,` ${i??``}`),G(_,`title`,o),z(v,s),b=O(y,1,`figure tabular errors svelte-1gmdt1j`,null,b,{bad:n(a).errors>0}),z(x,c),z(T,d)},[()=>Kt(n(o)),()=>Q(`stats.tokensUnit`),()=>Kt(n(a).calls),()=>Q(`stats.callsUnit`),()=>Q(`stats.cacheInfo`),()=>Q(`stats.cache`,{value:Gt(j(n(a).cache,n(a).input))}),()=>n(a).errors?Q(`stats.errorCount`,{count:Kt(n(a).errors)}):Q(`stats.noError`),()=>Jt(n(a).last)]),f(t,r)},P=e=>{var t=ai(),n=g(t,!0);s(e=>z(n,e),[()=>Q(`stats.idle`)]),f(e,t)};t(A,e=>{n(a).calls?e(M):e(P,-1)}),Y(u);var F=e(u,2),I=t=>{var r=si(),o=S(r),c=S(o),l=g(c,!0),u=e(c),d=g(u,!0),p=e(u),m=g(p,!0),h=e(p),_=g(h,!0),v=e(h),y=g(v,!0),b=e(v),x=g(b,!0),C=e(b),w=g(C,!0);Y(o);var T=e(o,2);i(T,17,()=>n(a).models,e=>e.key,(t,r)=>{var i=oi(),a=S(i),o=S(a);ct(o,{get provider(){return n(r).provider},size:16});var c=e(o,1,!0);Y(a);var l=e(a),u=g(l,!0),d=e(l),p=g(d,!0),m=e(d),h=g(m,!0),_=e(m),v=g(_,!0),y=e(_),b=g(y,!0),x=e(y);let C;var w=g(x,!0);Y(i),s((e,t,i,a,o,s)=>{z(c,n(r).model),z(u,e),z(p,t),z(h,i),z(v,a),z(b,o),C=O(x,1,`tabular svelte-1gmdt1j`,null,C,{bad:n(r).errors>0}),z(w,s)},[()=>Kt(n(r).calls),()=>Kt(n(r).input),()=>Kt(n(r).output),()=>Kt(n(r).cache),()=>n(r).calls?`${Gt(n(r).latency/n(r).calls/1e3)} s`:`-`,()=>Kt(n(r).errors)]),f(t,i)}),Y(r),s((e,t,n,r,i,a,o)=>{z(l,e),z(d,t),z(m,n),z(_,r),z(y,i),z(x,a),z(w,o)},[()=>Q(`stats.model`),()=>Q(`stats.calls`),()=>Q(`stats.input`),()=>Q(`stats.output`),()=>Q(`stats.cacheRead`),()=>Q(`stats.latency`),()=>Q(`stats.errors`)]),f(t,r)};t(F,e=>{n(m)===n(a).id&&e(I)}),Y(c),s((e,t)=>{l=O(c,1,`client-row svelte-1gmdt1j`,null,l,{idle:!n(a).calls}),G(u,`aria-expanded`,n(m)===n(a).id),u.disabled=!n(a).calls,h=se(p,``,h,{background:n(a).color}),z(y,n(a).label),E=se(T,``,E,{width:e,background:n(a).color}),z(k,t)},[()=>`${j(n(o),n(C).tokens)??``}%`,()=>n(a).calls?N(j(n(o),n(C).tokens)):``]),_(`click`,u,()=>J(m,n(m)===n(a).id?null:n(a).id,!0)),f(r,c)},e=>{var t=li(),n=g(t,!0);s(e=>z(n,e),[()=>Q(`stats.empty`)]),f(e,t)}),Y(Le),Y(te),Y(F),s((e,t,r,i,a,o,s,c,l,u,d,f,p,m,h)=>{z(R,e),G(B,`title`,t),G(B,`aria-label`,r),G(V,`aria-label`,i),z(ie,a),z(oe,o),z(ue,s),z(fe,c),z(me,l),z(ge,n(T)),z(ye,u),xe=O(be,1,`tabular svelte-1gmdt1j`,null,xe,{bad:n(C).errors>0}),z(Se,d),G(Ce,`aria-label`,f),z(Te,p),De=se(Ee,``,De,{"--count":n(E).length}),z(Ae,n(E)[0]?.label),z(Me,m),z(Pe,h)},[()=>Q(`stats.title`),()=>Q(`stats.info`),()=>Q(`stats.info`),()=>Q(`stats.period`),()=>Q(`stats.tokens`),()=>Kt(n(C).tokens),()=>Q(`stats.calls`),()=>Kt(n(C).calls),()=>Q(`stats.activeClients`),()=>Q(`stats.errors`),()=>n(C).calls?N(j(n(C).errors,n(C).calls)):`-`,()=>Q(`stats.chart`),()=>Kt(n(k)===1?0:n(k)),()=>n(E)[Math.floor(n(E).length/2)]?.label,()=>n(E).at(-1)?.label]),X(`mouseleave`,Ce,()=>J(h,null)),f(r,F),D()}d([`click`]);var fi=h(`

`),pi=h(`
`),mi=h(` `),hi=h(` `),gi=h(` `),_i=h(` `,1),vi=h(``),yi=h(` `),bi=h(``),xi=h(`
`),Si=h(`

`),Ci=h(`

`),wi=h(`

`),Ti=h(` `),Ei=h(`

`),Di=h(``),Oi=h(`
`),ki=h(``),Ai=h(`

`),ji=h(`
`),Mi=h(`

`,1),Ni=h(`

`),Pi=h(`

`),Fi=h(`

`,1),Ii=h(``),Li=h(`
`,1),Ri=h(`

`,1);function zi(r,a){ne(a,!0);let o=`#d6def0`,c=`#9b8ec4`,l=[`#7899ff`,`#4dd4ac`,`#f4c154`,`#c792ea`,`#5ccfe6`,`#ff9e7a`,`#a3e635`,`#f78fb3`],u=q(()=>a.report?.clients??[]),d=q(()=>a.report?.usage??[]),p=q(()=>Rt(a.accounts)),m=U(null),h=U(null),v=U(null),y=U(!1),b=U(``),x=q(()=>new Map(n(u).map((e,t)=>[e.id,l[t%l.length]]))),C=q(()=>new Map(n(u).map(e=>[e.id,e.name]))),T=q(()=>n(d).some(e=>(e.clients[``]??0)>0)),E=q(()=>n(d).some(e=>Object.entries(e.clients).some(([e,t])=>e&&!n(C).has(e)&&t>0)));function k(e){return Q(`common.percent`,{value:Gt(e)})}function A(e){return n(p).find(t=>t.id===e)??{id:e,provider:e,name:e,accounts:[]}}function j(e){let t=a.accounts.find(t=>t.id===e);return t?zt(t.name):Q(`activity.unknownAccount`)}function M(e,t){return jt.indexOf(e.kind)-jt.indexOf(t.kind)}function N(e,t){return e.access.all||e.access.pools.includes(t.id)||t.accounts.some(t=>e.access.accounts.includes(t.id))}function P(e){return[...new Set([...n(p).filter(t=>N(e,t)).map(e=>e.id),...Object.keys(e.shares)])].map(t=>{let r=A(t),i=new Map;for(let t of n(d)){if(!r.accounts.some(e=>e.id===t.account_id))continue;let n=t.clients[e.id]??0,a=i.get(t.kind);(!a||n>a.points)&&i.set(t.kind,{kind:t.kind,points:n,account:t.account_id})}return{pool:r,share:e.shares[t]??null,kinds:[...i.values()].sort(M)}}).filter(e=>e.kinds.length||e.share!=null)}function F(e){let t=[];for(let r of n(u)){let i=e.clients[r.id]??0;i>0&&t.push({id:r.id,label:r.name,points:i,color:n(x).get(r.id)??l[0],kind:`client`})}let r=e.clients[``]??0;r>0&&t.push({id:`no-key`,label:Q(`clients.noKey`),points:r,color:o,kind:`client`});let i=Object.entries(e.clients).reduce((e,[t,r])=>t&&!n(C).has(t)?e+r:e,0);i>0&&t.push({id:`former`,label:Q(`clients.former`),points:i,color:c,kind:`client`}),e.outside>0&&t.push({id:`outside`,label:Q(`clients.outside`),points:e.outside,color:`#6f80a0`,kind:`outside`});let a=e.used-t.reduce((e,t)=>e+t.points,0);return a>.05&&t.push({id:`rest`,label:Q(`clients.unexplained`),points:a,color:``,kind:`rest`}),t}let I=q(()=>{let e=[],t=new Set;for(let r of n(p))for(let i of r.accounts){let r=n(d).filter(e=>e.account_id===i.id).sort(M);if(t.add(i.id),!r.length)continue;let a=e.find(e=>e.provider===i.provider);a||(a={provider:i.provider,name:Wt(i.provider),accounts:[]},e.push(a)),a.accounts.push({id:i.id,rows:r})}let r=[...new Set(n(d).filter(e=>!t.has(e.account_id)).map(e=>e.account_id))];return r.length&&e.push({provider:``,name:Q(`activity.unknownAccount`),accounts:r.map(e=>({id:e,rows:n(d).filter(t=>t.account_id===e).sort(M)}))}),e});function L(e){return{whole:e.access.pools.map(A),single:a.accounts.filter(t=>e.access.accounts.includes(t.id)&&!e.access.pools.includes(t.route||t.provider)),missing:e.access.accounts.filter(e=>!a.accounts.some(t=>t.id===e))}}function R(e,t){J(m,null),e.key&&J(h,{name:e.client.name,key:e.key},!0),a.updated(Q(t?`notice.clientCreated`:`notice.clientSaved`))}async function B(){let e=n(v);if(e&&!n(y)){J(y,!0),J(b,``);try{if(e.kind===`rotate`){let t=await $.updateClient(e.client.id,{rotate_key:!0});J(v,null),t.key&&J(h,{name:t.client.name,key:t.key},!0),a.updated(Q(`notice.keyReplaced`))}else await $.deleteClient(e.client.id),J(v,null),a.updated(Q(`notice.clientDeleted`))}catch(e){J(b,e.message,!0)}finally{J(y,!1)}}}var V=Ri(),H=w(V),ee=S(H),te=S(ee),W=g(te,!0),re=e(te,2),ie=t=>{var n=fi(),r=S(n),i=S(r);Er(i,{size:14});var a=e(i,1,!0);Y(r),Y(n),s((e,t)=>{G(r,`title`,e),z(a,t)},[()=>Q(`clients.enforcedInfo`),()=>Q(`clients.enforced`)]),f(t,n)};t(re,e=>{a.report&&e(ie)}),Y(ee);var ae=e(ee,2),X=S(ae),ce=S(X);Ve(ce,{size:20});var le=e(ce,1,!0);Y(X),Y(ae),Y(H);var ue=e(H,2),de=e=>{di(e,{get clients(){return n(u)},get colors(){return n(x)},noKeyColor:o,formerColor:c,get version(){return a.report}})};t(ue,e=>{a.report&&e(de)});var fe=e(ue,2),pe=e=>{var t=pi(),r=S(t);{let e=q(()=>Q(`clients.emptyTitle`)),t=q(()=>Q(`clients.emptyDescription`)),i=q(()=>Q(`clients.new`));En(r,{get title(){return n(e)},get description(){return n(t)},get action(){return n(i)},onclick:()=>J(m,{client:null},!0)})}Y(t),f(e,t)},Z=r=>{var l=Mi(),d=w(l),p=S(d),h=g(p,!0);Y(d);var y=e(d,2);i(y,21,()=>n(u),e=>e.id,(r,o)=>{let c=q(()=>L(n(o))),l=q(()=>Object.entries(n(o).shares));var u=wi();let d;var p=S(u),h=S(p),y=e(S(h)),C=g(y,!0),T=e(y),E=g(T,!0);Y(h);var D=e(h,2),M=S(D);Et(S(M),{size:18}),Y(M);var N=e(M,2);wr(S(N),{size:18}),Y(N);var F=e(N,2);Qn(S(F),{size:18}),Y(F),Y(D),Y(p);var I=e(p,2),R=S(I),B=e=>{var t=mi(),n=g(t,!0);s(e=>z(n,e),[()=>Q(`clients.allAccounts`)]),f(e,t)},V=r=>{var a=_i(),o=w(a);i(o,17,()=>n(c).whole,e=>e.id,(t,r)=>{var i=hi(),a=S(i);ct(a,{get provider(){return n(r).provider},size:17});var o=e(a,1,!0);Y(i),s(()=>z(o,n(r).name)),f(t,i)});var l=e(o,2);i(l,17,()=>n(c).single,e=>e.id,(t,r)=>{var i=hi(),a=S(i);ct(a,{get provider(){return n(r).provider},size:17});var o=e(a,1,!0);Y(i),s(e=>z(o,e),[()=>zt(n(r).name)]),f(t,i)});var u=e(l,2);i(u,16,()=>n(c).missing,e=>e,(e,t)=>{var n=gi(),r=g(n,!0);s(e=>z(r,e),[()=>Q(`activity.unknownAccount`)]),f(e,n)});var d=e(u,2),p=e=>{var t=gi(),n=g(t,!0);s(e=>z(n,e),[()=>Q(`clients.noAccess`)]),f(e,t)};t(d,e=>{!n(c).whole.length&&!n(c).single.length&&!n(c).missing.length&&e(p)}),f(r,a)};t(R,e=>{n(o).access.all?e(B):e(V,-1)}),Y(I);var H=e(I,2);i(H,21,()=>n(l),([e,t])=>e,(t,r)=>{var i=q(()=>K(n(r),2));let a=()=>n(i)[0],o=()=>n(i)[1],c=q(()=>A(a()));var l=vi(),u=S(l);Ar(u,{size:15});var d=e(u,1,!0),p=e(d),m=g(p,!0);Y(l),s((e,t)=>{G(l,`title`,e),z(d,n(c).name),z(m,t)},[()=>Q(`clients.shareOf`,{pool:n(c).name}),()=>k(o())]),f(t,l)},e=>{var t=yi(),n=g(t,!0);s(e=>z(n,e),[()=>Q(`clients.noShare`)]),f(e,t)}),Y(H);var ee=e(H,2);i(ee,17,()=>P(n(o)),e=>e.pool.id,(r,a)=>{var o=Ci(),c=S(o),l=S(c);ct(l,{get provider(){return n(a).pool.provider},size:18});var u=e(l,1,!0);Y(c);var d=e(c,2);i(d,17,()=>n(a).kinds,e=>e.kind,(r,i)=>{var o=xi(),c=S(o),l=g(c,!0),u=e(c,2),d=S(u);let p;var m=e(d),h=e=>{var t=bi();let r;s(e=>r=se(t,``,r,{left:e}),[()=>`${Math.min(100,n(a).share)}%`]),f(e,t)};t(m,e=>{n(a).share!=null&&e(h)}),Y(u);var _=e(u,2);let v;var y=g(_,!0);Y(o),s((e,t,r,s)=>{G(o,`title`,e),z(l,t),p=se(d,``,p,{width:r}),v=O(_,1,`usage-value tabular svelte-15ihc32`,null,v,{over:n(a).share!=null&&n(i).points>=n(a).share}),z(y,s)},[()=>n(a).pool.accounts.length>1?Q(`clients.highest`,{name:j(n(i).account)}):void 0,()=>Mt(n(i).kind),()=>`${Math.min(100,n(i).points)}%`,()=>n(a).share==null?k(n(i).points):Q(`clients.ofShare`,{used:Gt(n(i).points),share:Gt(n(a).share)})]),f(r,o)},e=>{var t=Si(),n=g(t,!0);s(e=>z(n,e),[()=>Q(`clients.notMeasured`)]),f(e,t)}),Y(o),s(()=>z(u,n(a).pool.name)),f(r,o)}),Y(u),s((e,t,r,i,s,c,l,f)=>{d=se(u,``,d,{"--client":e}),z(C,n(o).name),G(T,`title`,t),z(E,n(o).key_hint),G(M,`title`,r),G(M,`aria-label`,i),M.disabled=!!a.busy,G(N,`title`,s),G(N,`aria-label`,c),N.disabled=!!a.busy,G(F,`title`,l),G(F,`aria-label`,f),F.disabled=!!a.busy},[()=>n(x).get(n(o).id),()=>Q(`clients.createdAt`,{date:Jt(n(o).created_at)}),()=>Q(`clients.editTitle`,{name:n(o).name}),()=>Q(`clients.editTitle`,{name:n(o).name}),()=>Q(`clients.rotate`),()=>Q(`clients.rotateNamed`,{name:n(o).name}),()=>Q(`clients.delete`),()=>Q(`clients.deleteNamed`,{name:n(o).name})]),_(`click`,M,()=>J(m,{client:n(o)},!0)),_(`click`,N,()=>{J(b,``),J(v,{kind:`rotate`,client:n(o)},!0)}),_(`click`,F,()=>{J(b,``),J(v,{kind:`delete`,client:n(o)},!0)}),f(r,u)}),Y(y);var C=e(y,2),D=S(C),M=S(D,!0),N=e(M);Or(S(N),{size:16}),Y(N),Y(D);var R=e(D,2),B=S(R);i(B,17,()=>n(u),e=>e.id,(t,r)=>{var i=Ti(),a=S(i);let o;var c=e(a,1,!0);Y(i),s(e=>{o=se(a,``,o,{background:e}),z(c,n(r).name)},[()=>n(x).get(n(r).id)]),f(t,i)});var V=e(B,2),H=t=>{var n=Ti(),r=S(n);se(r,``,{},{background:o});var i=e(r,1,!0);Y(n),s(e=>z(i,e),[()=>Q(`clients.noKey`)]),f(t,n)};t(V,e=>{n(T)&&e(H)});var ee=e(V,2),te=t=>{var n=Ti(),r=S(n);se(r,``,{},{background:c});var i=e(r,1,!0);Y(n),s(e=>z(i,e),[()=>Q(`clients.former`)]),f(t,n)};t(ee,e=>{n(E)&&e(te)});var U=e(ee,2),W=S(U);se(W,``,{},{background:`#6f80a0`});var ne=e(W,1,!0);Y(U);var re=e(U,2),ie=e(S(re),1,!0);Y(re),Y(R),Y(C);var ae=e(C,2),X=e=>{var t=Ei(),n=S(t),r=g(n,!0);Y(t),s(e=>z(r,e),[()=>Q(`clients.breakdownEmpty`)]),f(e,t)},ce=r=>{var a=ji();i(a,21,()=>n(I),e=>e.provider,(r,a)=>{var o=Ai(),c=S(o),l=S(c),u=e=>{ct(e,{get provider(){return n(a).provider},size:24})};t(l,e=>{n(a).provider&&e(u)});var d=e(l),p=g(d,!0);Y(c);var m=e(c,2);i(m,17,()=>n(a).accounts,e=>e.id,(t,r)=>{var a=ki(),o=S(a),c=g(o,!0),l=e(o,2);i(l,21,()=>n(r).rows,e=>e.kind,(t,r)=>{var a=Oi(),o=S(a),c=g(o,!0),l=e(o,2);i(l,21,()=>F(n(r)),e=>e.id,(e,t)=>{var r=Di();let i;s((e,a)=>{O(r,1,oe([`segment`,n(t).kind]),`svelte-15ihc32`),G(r,`title`,`${n(t).label??``}: ${e??``}`),i=se(r,``,i,{width:a,background:n(t).color||void 0})},[()=>k(n(t).points),()=>`${Math.min(100,n(t).points)}%`]),f(e,r)}),Y(l);var u=e(l,2),d=g(u,!0),p=e(u,2),m=S(p);je(m,{size:14});var h=e(m,1,!0);Y(p),Y(a),s((e,t,n,r,i)=>{z(c,e),G(l,`aria-label`,t),z(d,n),G(p,`title`,r),z(h,i)},[()=>Mt(n(r).kind),()=>F(n(r)).map(e=>`${e.label} ${k(e.points)}`).join(`, `),()=>Q(`clients.used`,{value:Gt(n(r).used)}),()=>Q(`quotas.resetAt`,{date:Jt(new Date(n(r).reset*1e3).toISOString())}),()=>Xt(new Date(n(r).reset*1e3).toISOString())]),f(t,a)}),Y(l),Y(a),s(e=>z(c,e),[()=>j(n(r).id)]),f(t,a)}),Y(o),s(()=>z(p,n(a).name)),f(r,o)}),Y(a),f(r,a)};t(ae,e=>{n(I).length?e(ce,-1):e(X)}),s((e,t,n,r,i,a)=>{z(h,e),z(M,t),G(N,`title`,n),G(N,`aria-label`,r),z(ne,i),z(ie,a)},[()=>Q(`clients.keys`),()=>Q(`clients.breakdown`),()=>Q(`clients.breakdownInfo`),()=>Q(`clients.breakdownInfo`),()=>Q(`clients.outside`),()=>Q(`clients.unexplained`)]),f(r,l)};t(fe,e=>{a.report&&!n(u).length?e(pe):n(u).length&&e(Z,1)});var me=e(fe,2),he=e=>{Vr(e,{get client(){return n(m).client},get clients(){return n(u)},get accounts(){return a.accounts},close:()=>J(m,null),saved:R})};t(me,e=>{n(m)&&e(he)});var ge=e(me,2),_e=e=>{Jr(e,{get name(){return n(h).name},get key(){return n(h).key},close:()=>J(h,null)})};t(ge,e=>{n(h)&&e(_e)});var ve=e(ge,2),ye=r=>{let i=q(()=>n(v));{let a=q(()=>Q(n(i).kind===`rotate`?`clients.rotateTitle`:`clients.deleteTitle`,{name:n(i).client.name}));Mr(r,{get title(){return n(a)},close:()=>J(v,null),get locked(){return n(y)},children:(r,a)=>{var o=Li(),c=w(o),l=e=>{var t=Ni(),n=g(t,!0);s(e=>z(n,e),[()=>Q(`clients.rotateText`)]),f(e,t)},d=r=>{var i=Fi(),a=w(i),o=g(a,!0),c=e(a),l=e=>{var t=Pi(),n=g(t,!0);s(e=>z(n,e),[()=>Q(`clients.deleteLast`)]),f(e,t)};t(c,e=>{n(u).length===1&&e(l)}),s(e=>z(o,e),[()=>Q(`clients.deleteText`)]),f(r,i)};t(c,e=>{n(i).kind===`rotate`?e(l):e(d,-1)});var p=e(c,2),m=e=>{var t=Ii(),r=g(t,!0);s(()=>z(r,n(b))),f(e,t)};t(p,e=>{n(b)&&e(m)});var h=e(p,2),x=S(h),C=g(x,!0),T=e(x),E=g(T,!0);Y(h),s((e,t)=>{x.disabled=n(y),z(C,e),O(T,1,oe([`button`,n(i).kind===`delete`?`danger`:`primary`])),T.disabled=n(y),z(E,t)},[()=>Q(`common.cancel`),()=>Q(n(i).kind===`rotate`?`clients.rotateButton`:`clients.deleteButton`)]),_(`click`,x,()=>J(v,null)),_(`click`,T,B),f(r,o)},$$slots:{default:!0}})}};t(ve,e=>{n(v)&&e(ye)}),s((e,t)=>{z(W,e),X.disabled=!a.report||!!a.busy,z(le,t)},[()=>Q(`clients.title`),()=>Q(`clients.new`)]),_(`click`,X,()=>J(m,{client:null},!0)),f(r,V),D()}d([`click`]);var Bi=new Set([`$$slots`,`$$events`,`$$legacy`]);function Vi(e,t){let n=E(t,Bi),r=[[`path`,{d:`M7 7h10v10`}],[`path`,{d:`M7 17 17 7`}]];Z(e,W({name:`arrow-up-right`},()=>n,{get iconNode(){return r}}))}var Hi=h(` `),Ui=h(`
`),Wi=h(`

`,1),Gi=h(` `),Ki=h(`

`),qi=h(` `),Ji=h(`
`),Yi=h(`

`,1),Xi=h(`

`),Zi=h(`

`),Qi=h(`

dk_...

`),$i=h(``),ea=h(`

Claude Code

 

`),ta=h(``),na=h(`

`,1);function ra(r,a){ne(a,!0);let o=L(a,`clients`,19,()=>[]),c=L(a,`showEmails`,3,!1),l=U(``),u=U(!1),d=U(!1),m=U(``),h=U(`openai`),v=q(()=>new Map(o().map(e=>[e.id,e.name]))),y=q(()=>a.calls.filter(e=>(!n(u)||e.status>=400||e.error)&&`${e.model} ${e.provider} ${e.account_id} ${e.client_id?n(v).get(e.client_id)??``:``}`.toLowerCase().includes(n(l).toLowerCase()))),b=q(()=>a.summary?.requests?Math.round((a.summary.requests-a.summary.errors)/a.summary.requests*100):null),x=q(()=>a.summary?.client_api_base_url??(typeof window>`u`?``:`${window.location.origin}/v1`)),C=q(()=>`$env:ANTHROPIC_BASE_URL = '${n(x).replace(/\/v1$/,``).replace(/'/g,`''`)}'\n$env:ANTHROPIC_AUTH_TOKEN = 'dk_...'\nclaude`);async function T(e){try{await Wr(e),J(d,!0),J(m,``)}catch{J(d,!1),J(m,Q(`common.copyRefused`),!0)}}var E=p(),k=w(E),A=r=>{var o=Wi(),c=w(o),l=S(c),u=S(l),d=g(u,!0),p=e(u),m=g(p,!0);Y(l);var h=e(l);let v;var y=e(S(h),1,!0);Y(h),Y(c);var x=e(c,2),C=S(x),T=S(C),E=g(T,!0),D=e(T),k=g(D,!0),A=e(D),j=g(A,!0);Y(C);var M=e(C),N=S(M),P=g(N,!0),F=e(N),I=g(F,!0),L=e(F),R=g(L,!0);Y(M);var B=e(M),V=S(B),H=g(V,!0),ee=e(V),te=g(ee,!0),U=e(ee),W=g(U,!0);Y(B);var ne=e(B),G=S(ne),K=g(G,!0),J=e(G),re=g(J,!0),ie=e(J),ae=g(ie,!0);Y(ne);var oe=e(ne),se=S(oe),X=g(se,!0),ce=e(se),le=g(ce,!0),ue=e(ce),de=g(ue,!0);Y(oe),Y(x);var fe=e(x,2),pe=S(fe),Z=S(pe),me=g(Z,!0),he=e(Z),ge=g(he,!0);Y(pe);var _e=e(pe),ve=S(_e,!0);Vi(e(ve),{size:14}),Y(_e),Y(fe);var ye=e(fe,2),be=S(ye),xe=e=>{{let t=q(()=>Q(`overview.emptyTitle`)),r=q(()=>Q(`overview.emptyDescription`)),i=q(()=>Q(`overview.openQuickstart`));En(e,{get title(){return n(t)},get description(){return n(r)},get action(){return n(i)},onclick:()=>a.navigate(`quickstart`)})}},Se=t=>{var r=Ui(),o=S(r),c=S(o),l=S(c),u=S(l),d=g(u,!0),p=e(u),m=g(p,!0),h=e(p),_=g(h,!0),v=e(h),y=g(v,!0),b=e(v),x=g(b,!0);Y(l),Y(c);var C=e(c);i(C,21,()=>a.calls.slice(0,8),e=>e.id,(t,r)=>{var i=Hi(),a=S(i),o=g(a,!0),c=e(a),l=g(c,!0),u=e(c),d=g(u,!0),p=e(u),m=S(p);let h;var _=g(m,!0);Y(p);var v=e(p),y=g(v,!0);Y(i),s((e,t,i)=>{z(o,n(r).model),z(l,e),z(d,t),h=O(m,1,`http-status svelte-15ozkp9`,null,h,{error:n(r).status>=400||!!n(r).error}),z(_,i),z(y,n(r).latency_ms==null?`-`:`${n(r).latency_ms} ms`)},[()=>Wt(n(r).provider),()=>Jt(n(r).started_at),()=>n(r).error?Q(`table.error`):n(r).status]),f(t,i)}),Y(C),Y(o),Y(r),s((e,t,n,r,i)=>{z(d,e),z(m,t),z(_,n),z(y,r),z(x,i)},[()=>Q(`table.model`),()=>Q(`table.provider`),()=>Q(`table.time`),()=>Q(`table.status`),()=>Q(`table.duration`)]),f(t,r)};t(be,e=>{a.calls.length?e(Se,-1):e(xe)}),Y(ye),s((e,t,n,r,i,o,s,c,l,u,f,p,g,_,b,x,S,C,w,T)=>{z(d,e),z(m,t),v=O(h,1,`state-badge`,null,v,{inactive:!a.summary}),z(y,n),z(E,r),z(k,a.summary?a.summary.enabled_accounts:`-`),z(j,i),z(P,o),z(I,s),z(R,c),z(H,l),z(te,u),z(W,f),z(K,p),z(re,g),z(ae,_),z(X,b),z(le,x),z(de,S),z(me,C),z(ge,w),z(ve,T)},[()=>Q(`nav.overview`),()=>Q(`overview.description`),()=>Q(a.summary?`overview.connected`:`overview.disconnected`),()=>Q(`overview.activeAccounts`),()=>Q(`overview.ofAccounts`,{count:a.summary?.accounts??0}),()=>Q(`overview.requests`),()=>Kt(a.summary?.requests),()=>Q(`overview.inFlight`,{count:a.summary?.in_flight??0}),()=>Q(`overview.tokens`),()=>a.summary?Kt(a.summary.input_tokens+a.summary.output_tokens):`-`,()=>Q(`overview.tokensDetail`),()=>Q(`overview.cache`),()=>a.summary?Kt(a.summary.cache_read_tokens??0):`-`,()=>Q(`overview.cacheDetail`),()=>Q(`overview.success`),()=>n(b)==null?`-`:Q(`common.percent`,{value:n(b)}),()=>Q(`overview.errors`,{count:a.summary?.errors??0}),()=>Q(`overview.recent`),()=>Q(`overview.recentDescription`),()=>Q(`overview.viewAll`)]),_(`click`,_e,()=>a.navigate(`activity`)),f(r,o)},j=r=>{var o=Yi(),d=w(o),p=S(d),m=S(p),h=g(m,!0),_=e(m),b=g(_,!0);Y(p);var x=e(p),C=g(x,!0);Y(d);var T=e(d,2),E=S(T),D=S(E);N(D);var k=e(D,1,!0);Y(E);var A=e(E),j=S(A);ze(j,{size:15});var M=e(j);N(M),Y(A),Y(T);var P=e(T,2),F=S(P),I=e=>{{let t=q(()=>Q(a.calls.length?`activity.noMatchTitle`:`activity.emptyTitle`)),r=q(()=>Q(a.calls.length?`activity.noMatchDescription`:`activity.emptyDescription`));En(e,{get title(){return n(t)},get description(){return n(r)}})}},L=r=>{var o=Ji(),l=S(o),u=S(l),d=S(u),p=S(d),m=g(p,!0),h=e(p),_=g(h,!0),b=e(h),x=g(b,!0),C=e(b),w=g(C,!0),T=e(C),E=g(T,!0),D=e(T),k=g(D,!0);Y(d),Y(u);var A=e(u);i(A,21,()=>n(y),e=>e.id,(r,i)=>{var o=qi(),l=S(o),u=g(l,!0),d=e(l),p=S(d,!0),m=e(p),h=S(m,!0),_=e(h),y=e=>{var t=Gi(),r=g(t,!0);s((e,n)=>{G(t,`title`,e),z(r,n)},[()=>Q(`activity.client`,{name:n(v).get(n(i).client_id)??``}),()=>n(v).get(n(i).client_id)]),f(e,t)},b=q(()=>n(i).client_id&&n(v).has(n(i).client_id));t(_,e=>{n(b)&&e(y)}),Y(m);var x=e(m),C=e=>{var t=Ki(),r=g(t,!0);s(()=>z(r,n(i).error)),f(e,t)};t(x,e=>{n(i).error&&e(C)}),Y(d);var w=e(d),T=g(w,!0),E=e(w),D=S(E);let k;var A=g(D,!0);Y(E);var j=e(E),M=g(j,!0),N=e(j),P=g(N,!0);Y(o),s((e,t,r,a,o)=>{z(u,e),z(p,n(i).model),z(h,t),z(T,r),k=O(D,1,`http-status svelte-15ozkp9`,null,k,{error:n(i).status>=400||!!n(i).error}),z(A,a),z(M,n(i).latency_ms==null?`-`:`${n(i).latency_ms} ms`),z(P,o)},[()=>Jt(n(i).started_at),()=>zt(a.accounts.find(e=>e.id===n(i).account_id)?.name??n(i).account_id??Q(`activity.unknownAccount`),c()),()=>Wt(n(i).provider),()=>n(i).error?Q(`table.error`):n(i).status,()=>Kt((n(i).input_tokens??0)+(n(i).output_tokens??0))]),f(r,o)}),Y(A),Y(l),Y(o),s((e,t,n,r,i,a)=>{z(m,e),z(_,t),z(x,n),z(w,r),z(E,i),z(k,a)},[()=>Q(`table.time`),()=>Q(`table.modelAccount`),()=>Q(`table.provider`),()=>Q(`table.status`),()=>Q(`table.duration`),()=>Q(`table.tokens`)]),f(r,o)};t(F,e=>{n(y).length?e(L,-1):e(I)}),Y(P),s((e,t,n,r,i,a)=>{z(h,e),z(b,t),z(C,n),z(k,r),G(M,`aria-label`,i),G(M,`placeholder`,a)},[()=>Q(`activity.title`),()=>Q(`activity.description`),()=>Q(`activity.count`,{count:a.calls.length}),()=>Q(`activity.onlyErrors`),()=>Q(`activity.search`),()=>Q(`activity.searchPlaceholder`)]),V(D,()=>n(u),e=>J(u,e)),re(M,()=>n(l),e=>J(l,e)),f(r,o)},M=r=>{var i=na(),o=w(i),c=S(o),l=g(c,!0);Y(o);var u=e(o,2),p=S(u);let v;var y=g(p,!0),b=e(p);let E;Y(u);var D=e(u,2),k=S(D),A=t=>{var n=Xi(),r=S(n),i=S(r),o=g(i,!0),c=e(i),l=S(c,!0);Vi(e(l),{size:18}),Y(c),Y(r),Y(n),s((e,t)=>{z(o,e),z(l,t)},[()=>Q(`common.connectAccount`),()=>Q(`quickstart.openAccounts`)]),_(`click`,c,()=>a.navigate(`accounts`)),f(t,n)};t(k,e=>{a.accounts.length||e(A)});var j=e(k,2),M=r=>{var i=Qi(),o=S(i),c=S(o),l=g(c,!0),u=e(c),p=S(u),m=g(p,!0),h=e(p),v=S(h),y=e=>{Ot(e,{size:20})},b=e=>{Ur(e,{size:20})};t(v,e=>{n(d)?e(y):e(b,-1)}),Y(h),Y(u);var C=e(u),w=S(C,!0),E=e(w,2,!0);Y(C);var D=e(C),O=e=>{var t=Zi(),n=g(t,!0);s(e=>z(n,e),[()=>Q(`quickstart.keyRequired`)]),f(e,t)};t(D,e=>{a.summary&&!a.summary.clients&&e(O)});var k=e(D),A=S(k,!0);Vi(e(A),{size:18}),Y(k),Y(o),Y(i),s((e,t,r,i,a)=>{z(l,e),z(m,n(x)),G(h,`aria-label`,t),z(w,r),z(E,i),z(A,a)},[()=>Q(`quickstart.baseUrl`),()=>Q(`quickstart.copyUrl`),()=>Q(`quickstart.openaiHint1`),()=>Q(`quickstart.openaiHint2`),()=>Q(`quickstart.chooseModel`)]),_(`click`,h,()=>T(n(x))),_(`click`,k,()=>a.navigate(`models`)),f(r,i)},N=r=>{var i=ea(),o=S(i),c=e(S(o)),l=g(c,!0),u=e(c),p=S(u),m=S(p),h=g(m,!0);Y(p);var v=e(p),y=S(v),b=e=>{Ot(e,{size:20})},x=e=>{Ur(e,{size:20})};t(y,e=>{n(d)?e(b):e(x,-1)}),Y(v),Y(u);var w=e(u),E=g(w,!0),D=e(w),O=e=>{var t=Zi(),n=g(t,!0);s(e=>z(n,e),[()=>Q(`quickstart.keyRequired`)]),f(e,t)};t(D,e=>{a.summary&&!a.summary.clients&&e(O)});var k=e(D),A=t=>{var n=$i(),r=S(n,!0);Vi(e(r),{size:18}),Y(n),s(e=>z(r,e),[()=>Q(`quickstart.connectClaude`)]),_(`click`,n,()=>a.navigate(`accounts`)),f(t,n)},j=q(()=>!a.accounts.some(e=>e.provider===`claude`&&e.enabled));t(k,e=>{n(j)&&e(A)}),Y(o),Y(i),s((e,t,r)=>{z(l,e),z(h,n(C)),G(v,`aria-label`,t),z(E,r)},[()=>Q(`quickstart.powershell`),()=>Q(`quickstart.copyClaude`),()=>Q(`quickstart.claudeHint`)]),_(`click`,v,()=>T(n(C))),f(r,i)};t(j,e=>{n(h)===`openai`?e(M):e(N,-1)});var P=e(j,2),F=e=>{var t=ta(),r=g(t,!0);s(()=>z(r,n(m))),f(e,t)};t(P,e=>{n(m)&&e(F)}),Y(D),s((e,t,r)=>{z(l,e),G(u,`aria-label`,t),v=O(p,1,`button`,null,v,{primary:n(h)===`openai`}),G(p,`aria-pressed`,n(h)===`openai`),z(y,r),E=O(b,1,`button`,null,E,{primary:n(h)===`claude`}),G(b,`aria-pressed`,n(h)===`claude`)},[()=>Q(`nav.setupTool`),()=>Q(`quickstart.chooseTool`),()=>Q(`provider.openaiCompatible`)]),_(`click`,p,()=>{J(h,`openai`),J(d,!1),J(m,``)}),_(`click`,b,()=>{J(h,`claude`),J(d,!1),J(m,``)}),f(r,i)};t(k,e=>{a.screen===`overview`?e(A):a.screen===`activity`?e(j,1):a.screen===`quickstart`&&e(M,2)}),f(r,E),D()}d([`click`]);function ia(e){let t=e-1;return t*t*t+1}function aa(e,t,n){return Number.isNaN(t)?``:`${e}: ${n*t}px;`}function oa(e,{delay:t=0,duration:n=400,easing:r=ia,axis:i=`y`}={}){let a=getComputedStyle(e),o=+a.opacity,s=i===`y`?`height`:`width`,c=parseFloat(a[s]),l=i===`y`?[`top`,`bottom`]:[`left`,`right`],u=l.map(e=>`${e[0].toUpperCase()}${e.slice(1)}`),d=parseFloat(a[`padding${u[0]}`]),f=parseFloat(a[`padding${u[1]}`]),p=parseFloat(a[`margin${u[0]}`]),m=parseFloat(a[`margin${u[1]}`]),h=parseFloat(a[`border${u[0]}Width`]),g=parseFloat(a[`border${u[1]}Width`]);return{delay:t,duration:n,easing:r,css:e=>`overflow: hidden;opacity: ${Math.min(e*20,1)*o};`+aa(s,c,e)+aa(`padding-${l[0]}`,d,e)+aa(`padding-${l[1]}`,f,e)+aa(`margin-${l[0]}`,p,e)+aa(`margin-${l[1]}`,m,e)+aa(`border-${l[0]}-width`,h,e)+aa(`border-${l[1]}-width`,g,e)+`min-${s}: 0`}}var sa=new Set([`$$slots`,`$$events`,`$$legacy`]);function ca(e,t){let n=E(t,sa),r=[[`path`,{d:`m7 15 5 5 5-5`}],[`path`,{d:`m7 9 5-5 5 5`}]];Z(e,W({name:`chevrons-up-down`},()=>n,{get iconNode(){return r}}))}var la=h(``),ua=h(`
`),da=h(` `),fa=h(` `),pa=h(`

`),ma=h(` `),ha=h(`
`),ga=h(`
`),_a=h(`
`),va=h(`
`),ya=h(`

/v1/models

`,1);function ba(r,a){ne(a,!0);let o=L(a,`listings`,19,()=>({})),c=`douane-models-open`,l=U(``),u=U(M(x())),d=U(M([])),p=U(``),m,h=q(()=>{let e=new Map(Rt(a.accounts).map(e=>[e.id,{id:e.id,provider:e.provider,name:e.name,models:[]}]));for(let t of a.models){let n=t.route||t.provider,r=e.get(n)??{id:n,provider:t.provider,name:t.route??Wt(t.provider),models:[]};r.models.push(t),e.set(n,r)}return[...e.values()].sort((e,t)=>e.name.localeCompare(t.name))}),v=q(()=>n(l).trim().toLowerCase()),y=q(()=>n(h).map(e=>({...e,shown:!n(v)||e.name.toLowerCase().includes(n(v))?e.models:e.models.filter(e=>`${e.id} ${e.name??``}`.toLowerCase().includes(n(v)))})).filter(e=>!n(v)||e.shown.length)),b=q(()=>n(y).length>0&&n(y).every(e=>T(e.id)));function x(){try{return JSON.parse(localStorage.getItem(c)??`{}`)}catch{return{}}}function C(){try{localStorage.setItem(c,JSON.stringify(n(u)))}catch{}}function T(e){return n(v)?!n(d).includes(e):n(u)[e]??n(h).length===1}function E(e){n(v)?J(d,n(d).includes(e)?n(d).filter(t=>t!==e):[...n(d),e],!0):(J(u,{...n(u),[e]:!T(e)},!0),C())}function k(){let e=!n(b);n(v)?J(d,e?[]:n(y).map(e=>e.id),!0):(J(u,Object.fromEntries(n(h).map(t=>[t.id,e])),!0),C())}function A(e){let t=!e.every(e=>e.enabled!==!1),n=e.filter(e=>e.enabled!==!1!==t).map(e=>e.id);n.length&&a.setModels(n,t)}async function j(e){try{await Wr(e),J(p,e,!0),clearTimeout(m),m=setTimeout(()=>J(p,``),1500)}catch{J(p,``)}}var P=ya(),F=w(P),I=S(F),R=S(I),B=g(R,!0),V=e(R),ee=g(V,!0);Y(I);var te=e(I,2),W=S(te),K=g(W,!0),ie=e(W),oe=S(ie);{let e=q(()=>a.busy===`models:*`?`spinning`:``);je(oe,{size:18,get class(){return n(e)}})}var se=e(oe,1,!0);Y(ie),Y(te),Y(F);var X=e(F,2),ce=S(X),le=S(ce);H(),Y(ce);var ue=e(ce,2),de=S(ue),fe=t=>{var r=la(),i=S(r);ca(i,{size:17});var a=e(i,1,!0);Y(r),s(e=>z(a,e),[()=>Q(n(b)?`models.collapseAll`:`models.expandAll`)]),_(`click`,r,k),f(t,r)};t(de,e=>{n(y).length>1&&e(fe)});var pe=e(de,2),Z=S(pe);ze(Z,{size:15});var me=e(Z);N(me),Y(pe),Y(ue),Y(X);var he=e(X,2),ge=e=>{var t=ua(),r=S(t);{let e=q(()=>Q(`models.emptyTitle`)),t=q(()=>Q(`models.emptyDescription`)),i=q(()=>Q(`models.addAccount`));En(r,{get title(){return n(e)},get description(){return n(t)},get action(){return n(i)},onclick:()=>a.navigate(`accounts`)})}Y(t),f(e,t)},_e=e=>{var t=ua(),r=S(t);{let e=q(()=>Q(`models.noMatchTitle`)),t=q(()=>Q(`models.noMatchDescription`));En(r,{get title(){return n(e)},get description(){return n(t)}})}Y(t),f(e,t)},ve=r=>{var c=va();i(c,21,()=>n(y),e=>e.id,(r,c)=>{let l=q(()=>T(n(c).id)),u=q(()=>n(c).models.filter(e=>e.enabled!==!1).length),d=q(()=>n(c).shown.length>0&&n(c).shown.every(e=>e.enabled!==!1)),m=q(()=>n(c).shown.some(e=>e.enabled!==!1)),h=q(()=>o()[n(c).id]);var v=_a();let y;var b=S(v),x=S(b),C=S(x);Le(C,{size:18,class:`chevron`});var w=e(C,2);ct(w,{get provider(){return n(c).provider},size:26});var D=e(w,2),k=g(D,!0),M=e(D,2),N=g(M,!0);Y(x);var P=e(x,2),F=S(P),I=t=>{var r=da(),i=e(S(r),1,!0);Y(r),s((e,t)=>{G(r,`title`,e),z(i,t)},[()=>Q(`models.staleTitle`,{name:n(c).name}),()=>Q(`models.stale`)]),f(t,r)},L=e=>{var t=fa(),r=g(t,!0);s((e,n)=>{G(t,`title`,e),z(r,n)},[()=>new Date(n(h).refreshed_at).toLocaleString(),()=>Q(`models.refreshed`,{age:Yt(n(h).refreshed_at)})]),f(e,t)};t(F,e=>{n(h)?.stale?e(I):n(h)&&e(L,1)});var R=e(F,2),B=S(R);{let e=q(()=>a.busy===`models:${n(c).id}`||a.busy===`models:*`?`spinning`:``);je(B,{size:18,get class(){return n(e)}})}Y(R);var V=e(R,2);let H;Y(P),Y(b);var ee=e(b,2),te=r=>{var o=ga(),l=S(o),u=e=>{var t=pa(),n=g(t,!0);s(e=>z(n,e),[()=>Q(`models.poolEmpty`)]),f(e,t)},d=r=>{var o=ha(),l=S(o),u=S(l),d=S(u),m=S(d),h=g(m,!0),v=e(m),y=g(v,!0),b=e(v),x=g(b,!0);Y(d),Y(u);var C=e(u);i(C,21,()=>n(c).shown,e=>e.id,(r,i)=>{var o=ma();let c;var l=S(o),u=S(l),d=g(u,!0),m=e(u),h=S(m,!0),v=e(h),y=e=>{Ot(e,{size:14})},b=e=>{Ur(e,{size:14})};t(v,e=>{n(p)===n(i).id?e(y):e(b,-1)}),Y(m),Y(l);var x=e(l),C=g(x,!0),w=e(x),T=S(w);let E;Y(w),Y(o),s((e,t,r,s)=>{c=O(o,1,`svelte-1muslrs`,null,c,{off:n(i).enabled===!1}),z(d,n(i).name??n(i).id),G(m,`title`,e),G(m,`aria-label`,t),z(h,n(i).id),z(C,r),E=O(T,1,`switch svelte-1muslrs`,null,E,{on:n(i).enabled!==!1}),G(T,`aria-checked`,n(i).enabled!==!1),G(T,`aria-label`,s),T.disabled=!!a.busy},[()=>Q(`models.copyId`,{id:n(i).id}),()=>Q(`models.copyId`,{id:n(i).id}),()=>Kt(n(i).context_length??void 0),()=>Q(`common.enable`,{name:n(i).name??n(i).id})]),_(`click`,m,()=>j(n(i).id)),_(`click`,T,()=>a.toggleModel(n(i))),f(r,o)}),Y(C),Y(l),Y(o),s((e,t,n)=>{z(h,e),z(y,t),z(x,n)},[()=>Q(`table.model`),()=>Q(`table.context`),()=>Q(`table.available`)]),f(r,o)};t(l,e=>{n(c).shown.length?e(d,-1):e(u)}),Y(o),s(()=>G(o,`id`,`models-${n(c).id??``}`)),ae(3,o,()=>oa,()=>({duration:180})),f(r,o)};t(ee,e=>{n(l)&&e(te)}),Y(v),s((e,t,r,i,o,s)=>{y=O(v,1,`model-group svelte-1muslrs`,null,y,{open:n(l)}),G(v,`aria-label`,e),G(x,`aria-expanded`,n(l)),G(x,`aria-controls`,`models-${n(c).id??``}`),z(k,n(c).name),z(N,t),R.disabled=!!a.busy,G(R,`title`,r),G(R,`aria-label`,i),H=O(V,1,`switch svelte-1muslrs`,null,H,{on:n(d),partial:n(m)&&!n(d)}),G(V,`aria-checked`,n(d)?`true`:n(m)?`mixed`:`false`),G(V,`title`,o),G(V,`aria-label`,s),V.disabled=!!a.busy||!n(c).shown.length},[()=>Q(`models.group`,{name:n(c).name}),()=>Q(`models.enabledCount`,{enabled:n(u),count:n(c).models.length}),()=>Q(`models.refreshPool`,{name:n(c).name}),()=>Q(`models.refreshPool`,{name:n(c).name}),()=>Q(n(d)?`models.disableShown`:`models.enableShown`,{name:n(c).name}),()=>Q(n(d)?`models.disableShown`:`models.enableShown`,{name:n(c).name})]),_(`click`,x,()=>E(n(c).id)),_(`click`,R,()=>a.refreshModels(n(c).id)),_(`click`,V,()=>A(n(c).shown)),f(r,v)}),Y(c),f(r,c)};t(he,e=>{n(h).length?n(y).length?e(ve,-1):e(_e,1):e(ge)}),s((e,t,n,r,i,o,s)=>{z(B,e),z(ee,t),z(K,n),ie.disabled=!!a.busy||!a.accounts.length,z(se,r),z(le,`${i??``} `),G(me,`aria-label`,o),G(me,`placeholder`,s)},[()=>Q(`nav.models`),()=>Q(`models.description`),()=>Q(`models.count`,{count:a.models.length}),()=>Q(`models.refreshAll`),()=>Q(`models.endpoint`),()=>Q(`models.search`),()=>Q(`models.search`)]),_(`click`,ie,()=>a.refreshModels()),_(`input`,me,()=>J(d,[],!0)),re(me,()=>n(l),e=>J(l,e)),f(r,P),D()}d([`click`,`input`]);var xa=new Set([`$$slots`,`$$events`,`$$legacy`]);function Sa(e,t){let n=E(t,xa),r=[[`path`,{d:`M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z`}],[`path`,{d:`M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7`}],[`path`,{d:`M7 3v4a1 1 0 0 0 1 1h7`}]];Z(e,W({name:`save`},()=>n,{get iconNode(){return r}}))}var Ca=new Set([`$$slots`,`$$events`,`$$legacy`]);function wa(e,t){let n=E(t,Ca),r=[[`path`,{d:`M15 6a9 9 0 0 0-9 9V3`}],[`circle`,{cx:`18`,cy:`6`,r:`3`}],[`circle`,{cx:`6`,cy:`18`,r:`3`}]];Z(e,W({name:`git-branch`},()=>n,{get iconNode(){return r}}))}var Ta=new Set([`$$slots`,`$$events`,`$$legacy`]);function Ea(e,t){let n=E(t,Ta),r=[[`path`,{d:`m5 8 6 6`}],[`path`,{d:`m4 14 6-6 2-3`}],[`path`,{d:`M2 5h12`}],[`path`,{d:`M7 2h1`}],[`path`,{d:`m22 22-5-10-5 10`}],[`path`,{d:`M14 18h6`}]];Z(e,W({name:`languages`},()=>n,{get iconNode(){return r}}))}var Da=h(`

`);function Oa(t,n){ne(n,!0);var r=Da(),i=S(r),a=S(i),o=g(a,!0),c=e(a),l=g(c,!0);Y(i);var u=e(i,2),d=S(u);Ea(d,{size:18});var p=e(d),m=S(p),h=g(m,!0);m.value=m.__value=`auto`;var v=e(m),y=g(v,!0);v.value=v.__value=`en`;var b=e(v),x=g(b,!0);b.value=b.__value=`fr`,Y(p);var C;T(p),Y(u),Y(r),s((e,t,n,r,i,a,s)=>{z(o,e),z(l,t),G(p,`aria-label`,n),z(h,r),z(y,i),z(x,a),C!==(C=s)&&(p.value=(p.__value=C)??``,ie(p,C))},[()=>Q(`settings.language`),()=>Q(`settings.languageDescription`),()=>Q(`settings.language`),()=>Q(`settings.languageAuto`),()=>Q(`settings.languageEnglish`),()=>Q(`settings.languageFrench`),()=>_t()]),_(`change`,p,e=>xt(e.currentTarget.value)),f(t,r),D()}d([`change`]);var ka=new Set([`$$slots`,`$$events`,`$$legacy`]);function Aa(e,t){let n=E(t,ka),r=[[`path`,{d:`M12 15V3`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`}],[`path`,{d:`m7 10 5 5 5-5`}]];Z(e,W({name:`download`},()=>n,{get iconNode(){return r}}))}var ja=new Set([`$$slots`,`$$events`,`$$legacy`]);function Ma(e,t){let n=E(t,ja),r=[[`path`,{d:`m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3`}],[`path`,{d:`M12 9v4`}],[`path`,{d:`M12 17h.01`}]];Z(e,W({name:`triangle-alert`},()=>n,{get iconNode(){return r}}))}var Na=h(``),Pa=h(`

`),Fa=h(`

`);function Ia(r,i){ne(i,!0);let a=U(!1),o=U(``),c=U(null),l=U(!1),u=U(void 0);async function d(){J(a,!0),J(o,``);try{let e=await $.exportConfig(),t=typeof e.exported_at==`string`?e.exported_at.slice(0,10):new Date().toISOString().slice(0,10),n=URL.createObjectURL(new Blob([JSON.stringify(e,null,2)],{type:`application/json`}));Object.assign(document.createElement(`a`),{href:n,download:`douane-export-${t}.json`}).click(),setTimeout(()=>URL.revokeObjectURL(n),1e3)}catch(e){J(o,e.message,!0)}finally{J(a,!1)}}async function p(e){J(o,``),J(c,null),J(l,!1);let t=e?.[0];if(n(u)&&(n(u).value=``),!t)return;if(t.size>33554432){J(o,Q(`backup.tooLarge`,{name:t.name}),!0);return}let r;try{r=JSON.parse(await t.text())}catch{J(o,Q(`notice.invalidJson`,{name:t.name}),!0);return}r?.format!==`douane-export`||!Array.isArray(r.accounts)?J(o,Q(`backup.notExport`,{name:t.name}),!0):J(c,{name:t.name,bundle:r,count:r.accounts.length},!0)}async function m(){n(c)&&await i.restore(n(c).bundle,n(l))&&J(c,null)}var h=Fa(),v=S(h),y=S(v),b=g(y,!0),x=e(y),C=g(x,!0);Y(v);var w=e(v,2),T=S(w),E=S(T);Ma(E,{size:18});var O=e(E),A=g(O,!0);Y(T);var j=e(T,2),M=S(j),P=S(M);Aa(P,{size:16});var F=e(P,1,!0);Y(M);var I=e(M,2),L=S(I);Xn(L,{size:16});var R=e(L,1,!0);Y(I);var B=e(I,2);k(B,e=>J(u,e),()=>n(u)),Y(j);var H=e(j,2),ee=e=>{var t=Na(),r=g(t,!0);s(()=>z(r,n(o))),f(e,t)};t(H,e=>{n(o)&&e(ee)});var te=e(H,2),W=t=>{var r=Pa(),a=S(r),o=g(a,!0),u=e(a,2),d=S(u);N(d);var p=e(d),h=g(p,!0);Y(u);var v=e(u,2),y=S(v),b=g(y,!0),x=e(y,2),C=g(x,!0);Y(v),Y(r),s((e,t,n,a,s)=>{G(r,`aria-label`,e),z(o,t),z(h,n),y.disabled=!!i.busy,z(b,a),x.disabled=i.busy===`restore`,z(C,s)},[()=>Q(`backup.restore`),()=>Q(n(c).count===1?`backup.confirm.one`:`backup.confirm.other`,{count:n(c).count,name:n(c).name}),()=>Q(`backup.withSettings`),()=>i.busy===`restore`?Q(`backup.restoring`):Q(`backup.confirmButton`),()=>Q(`common.cancel`)]),V(d,()=>n(l),e=>J(l,e)),_(`click`,y,m),_(`click`,x,()=>J(c,null)),f(t,r)};t(te,e=>{n(c)&&e(W)}),Y(w),Y(h),s((e,t,r,o,s,c)=>{z(b,e),z(C,t),z(A,r),M.disabled=n(a)||!!i.busy,z(F,o),I.disabled=!!i.busy,z(R,s),G(B,`aria-label`,c)},[()=>Q(`backup.title`),()=>Q(`backup.description`),()=>Q(`backup.warning`),()=>n(a)?Q(`backup.exporting`):Q(`backup.export`),()=>Q(`backup.restore`),()=>Q(`backup.restore`)]),_(`click`,M,d),_(`click`,I,()=>n(u)?.click()),_(`change`,B,e=>p(e.currentTarget.files)),f(r,h),D()}d([`click`,`change`]);var La=h(``),Ra=h(``),za=h(``),Ba=h(`

`),Va=h(`

`,1);function Ha(r,a){ne(a,!0);let o=U(M(b(()=>({...a.settings,provider_strategies:{...a.settings.provider_strategies}})))),c=[`round-robin`,`fill-first`,`reset-first`,`smart`];async function l(e){let t={strategy:n(o).strategy,provider_strategies:n(o).provider_strategies};J(o,{...n(o),...e},!0),await a.save(n(o))||J(o,{...n(o),...t},!0)}function u(e,t){let r={...n(o).provider_strategies};t?r[e]=t:delete r[e],l({provider_strategies:r})}var d=Va(),p=w(d),m=S(p),h=g(m,!0);Y(p);var v=e(p,2),y=S(v);wa(y,{size:18});var x=e(y),C=g(x,!0);Y(v);var E=e(v,2),k=S(E),A=S(k),j=S(A),P=g(j,!0),L=e(j),R=g(L,!0);Y(A);var B=e(A);i(B,20,()=>c,e=>e,(t,r)=>{var i=La();let c;var u=S(i);N(u);var d=e(u),p=S(d,!0),m=e(p),h=g(m,!0);Y(d),Y(i),s((e,t)=>{c=O(i,1,`strategy-option svelte-eyvqa5`,null,c,{chosen:n(o).strategy===r}),I(u,r),ee(u,n(o).strategy===r),u.disabled=!!a.busy,z(p,e),z(h,t)},[()=>Q(`strategy.${r}.label`),()=>Q(`strategy.${r}.desc`)]),_(`change`,u,()=>l({strategy:r})),f(t,i)}),Y(B),Y(k);var V=e(k,2),H=S(V),te=S(H),W=g(te,!0),G=e(te),K=g(G,!0);Y(H);var q=e(H),ae=S(q);i(ae,17,()=>a.providers,e=>e.id,(t,r)=>{var l=za(),d=S(l),p=S(d);ct(p,{get provider(){return n(r).id},size:22});var m=e(p,1,!0);Y(d);var h=e(d),v=S(h),y=g(v,!0);v.value=v.__value=``;var b=e(v);i(b,16,()=>c,e=>e,(e,t)=>{var n=Ra(),r=g(n,!0),i={};s(e=>{z(r,e),i!==(i=t)&&(n.value=(n.__value=i)??``)},[()=>Q(`strategy.${t}.label`)]),f(e,n)}),Y(h);var x;T(h),Y(l),s((e,t)=>{z(m,e),h.disabled=!!a.busy,z(y,t),x!==(x=n(o).provider_strategies?.[n(r).id]??``)&&(h.value=(h.__value=x)??``,ie(h,x))},[()=>Wt(n(r).id,n(r).name),()=>Q(`settings.defaultRule`)]),_(`change`,h,e=>u(n(r).id,e.currentTarget.value)),f(t,l)});var oe=e(ae),se=e=>{var t=Ba(),n=g(t,!0);s(e=>z(n,e),[()=>Q(`settings.noProviders`)]),f(e,t)};t(oe,e=>{a.providers.length||e(se)}),Y(q),Y(V);var ce=e(V,2),le=S(ce),ue=S(le),de=g(ue,!0),fe=e(ue),pe=g(fe,!0);Y(le);var Z=e(le),me=S(Z),he=S(me,!0),ge=e(he),_e=S(ge);N(_e);var ve=e(_e),ye=g(ve,!0);Y(ge),Y(me);var be=e(me),xe=S(be,!0),Se=e(xe),Ce=S(Se);N(Ce);var we=e(Ce),Te=g(we,!0);Y(Se),Y(be);var Ee=e(be),De=S(Ee,!0),Oe=e(De),ke=S(Oe),Ae=g(ke,!0);ke.value=(ke.__value=null,``);var je=e(ke);i(je,17,()=>a.providers,e=>e.id,(e,t)=>{var r=Ra(),i=g(r,!0),a={};s(e=>{z(i,e),a!==(a=n(t).id)&&(r.value=(r.__value=a)??``)},[()=>Wt(n(t).id,n(t).name)]),f(e,r)}),Y(Oe),T(Oe),Y(Ee),Y(Z),Y(ce);var Me=e(ce,2),Ne=S(Me),Pe=S(Ne),Fe=g(Pe,!0),Ie=e(Pe),Le=g(Ie,!0);Y(Ne);var Re=e(Ne),ze=S(Re),Be=S(ze,!0),Ve=e(Be),He=S(Ve);N(He);var Ue=e(He),We=g(Ue,!0);Y(Ve),Y(ze),Y(Re),Y(Me);var Ge=e(Me,2),Ke=S(Ge),qe=S(Ke);Sa(qe,{size:14});var Je=e(qe,1,!0);Y(Ke),Y(Ge),Y(E);var Ye=e(E,2);Ia(Ye,{get busy(){return a.busy},get restore(){return a.restore}}),Oa(e(Ye,2),{}),s((e,t,n,r,i,o,s,c,l,u,d,f,p,m,g,_,v,y,b)=>{z(h,e),z(C,t),z(P,n),z(R,r),z(W,i),z(K,o),z(de,s),z(pe,c),z(he,l),z(ye,u),z(xe,d),z(Te,f),z(De,p),z(Ae,m),z(Fe,g),z(Le,_),z(Be,v),z(We,y),Ke.disabled=!!a.busy,z(Je,b)},[()=>Q(`nav.settings`),()=>Q(`settings.sessionNote`),()=>Q(`settings.routing`),()=>Q(`settings.routingDescription`),()=>Q(`settings.perProvider`),()=>Q(`settings.perProviderDescription`),()=>Q(`settings.refresh`),()=>Q(`settings.refreshDescription`),()=>Q(`settings.refreshEvery`),()=>Q(`settings.seconds`),()=>Q(`settings.timeout`),()=>Q(`settings.seconds`),()=>Q(`settings.defaultProvider`),()=>Q(`settings.autoProvider`),()=>Q(`settings.weekEnd`),()=>Q(`settings.weekEndDescription`),()=>Q(`settings.freeBefore`),()=>Q(`settings.hours`),()=>a.busy===`settings`?Q(`settings.saving`):Q(`settings.save`)]),X(`submit`,E,e=>{e.preventDefault(),a.save(n(o))}),re(_e,()=>n(o).quota_refresh_seconds,e=>n(o).quota_refresh_seconds=e),re(Ce,()=>n(o).request_timeout_seconds,e=>n(o).request_timeout_seconds=e),F(Oe,()=>n(o).default_provider,e=>n(o).default_provider=e),re(He,()=>n(o).free_before_reset_hours,e=>n(o).free_before_reset_hours=e),f(r,d),D()}d([`change`]);var Ua=h(`

`),Wa=h(` `),Ga=h(`

`),Ka=h(`

`),qa=h(``),Ja=h(`

`,1),Ya=h(`

`,1),Xa=h(`

`),Za=h(``),Qa=h(``),$a=h(`

deepseek

`),eo=h(`

`),to=h(``),no=h(`

`),ro=h(`

`,1),io=h(`

`),ao=h(``),oo=h(`

`);function so(r,a){ne(a,!0);let o,c=U(void 0),l=U(null),d=U(``),m=U(!1),h=U(``),v=U(!1),y=U(!1),b=U(``),x=U(``),C=U(``),E=U(``),O=U(``),A=U(``),j=U(`chat`),M=q(()=>n(x)===`openai_compatible`),P=U(!1),I=!1,L={opencode_go:`https://opencode.ai/zen/go`,xai:`https://cli-chat-proxy.grok.com/v1`,openai_compatible:``,kimi:`https://api.kimi.com/coding/v1`,qwen:`https://portal.qwen.ai/v1`};te(()=>(I=!0,o.showModal(),()=>{I=!1,o.close(),J(E,``),J(d,``)}));async function R(e){J(m,!0),J(h,``),J(d,``),J(b,``),J(y,!1),J(P,!1);try{let t=await $.startOAuth(e);I&&(J(l,t),J(b,t.user_code?Q(`connect.waiting`):``,!0))}catch(e){I&&J(h,e.message,!0)}finally{J(m,!1)}}function B(){J(v,!0),J(y,!0),J(d,``),J(E,``),a.completed()}function V(e,t){return!I||n(l)?.id!==e.id||!t.verification_required&&(e.provider!==`antigravity`||t.error_code!==`google_project_unavailable`)?!1:(J(l,{...e,error_code:t.error_code,verification_required:t.verification_required,verification_available:t.verification_available}),J(y,!0),J(d,``),J(h,``),J(b,``),!0)}async function H(e=!0){let t=n(l);if(!t||n(m)||n(y))return t?.interval??5;J(m,!0),e&&J(h,``);try{let e=await $.oauth(t.id);return!I||n(l)?.id!==t.id||V(t,e)?5:((e.account_id||e.account?.id)&&[`complete`,`completed`,`connected`,`success`].includes(e.status)?B():e.status===`expired`?(J(y,!0),J(h,Q(`connect.expired`),!0)):e.error||e.status===`error`?(J(y,!0),J(h,e.error||Q(`connect.refused`),!0)):J(b,Q(e.status===`exchanging`?`connect.exchanging`:t.user_code?`connect.waiting`:`connect.stillWaiting`),!0),Math.min(60,Math.max(5,e.interval??t.interval??5)))}catch(e){return I&&J(h,e.message,!0),t.interval??5}finally{J(m,!1)}}u(()=>{let e=n(l);if(!e?.user_code||n(v)||n(y))return;let t=!1,r;async function i(){let n=document.hidden?e?.interval??5:await H(!1);t||(r=setTimeout(i,(n??5)*1e3))}return r=setTimeout(i,Math.max(5,e.interval??5)*1e3),()=>{t=!0,clearTimeout(r)}});async function ee(e){e.preventDefault();let t=n(l);if(t&&!n(m)){J(m,!0),J(h,``);try{if(!(await $.oauthCallback(t.id,n(d).trim(),t.state)).account?.id)throw Error(Q(`connect.unconfirmed`));I&&B()}catch(e){I&&J(h,e.message,!0);try{let e=await $.oauth(t.id);I&&n(l)?.id===t.id&&(J(y,[`error`,`expired`].includes(e.status),!0),n(y)&&J(d,``),V(t,e))}catch{}}finally{J(m,!1)}}}async function W(e){e.preventDefault(),J(m,!0),J(h,``);try{let e=await $.importCredential({type:n(x),name:n(C),access_token:n(E),base_url:n(O),...n(M)?{route:n(A).trim().toLowerCase(),...n(j)?{dialect:n(j)}:{}}:{}});if(e.errors?.length||!e.imported)throw Error(e.errors?.length?Bt(e.errors):Q(`connect.notAdded`));I&&B()}catch(e){I&&J(h,e.message,!0)}finally{J(m,!1)}}function K(){J(l,null),J(x,``),J(E,``),J(d,``),J(h,``),J(b,``),J(y,!1),J(A,``),J(j,`chat`)}async function ie(){if(n(l)?.user_code)try{await Wr(n(l).user_code),J(P,!0),n(h)===Q(`connect.copyRefused`)&&J(h,``)}catch{J(P,!1),J(h,Q(`connect.copyRefused`),!0)}}var ae=oo(),oe=S(ae),se=S(oe),ce=S(se),le=g(ce,!0),ue=e(ce),de=g(ue,!0);Y(se);var fe=e(se);Fe(S(fe),{size:18}),Y(fe),Y(oe);var pe=e(oe,2),Z=t=>{var n=Ua(),r=S(n);Ot(S(r),{size:24}),Y(r);var i=e(r),o=g(i,!0),c=e(i),l=g(c,!0),u=e(c),d=g(u,!0);Y(n),s((e,t,n)=>{z(o,e),z(l,t),z(d,n)},[()=>Q(`connect.success`),()=>Q(`connect.successText`),()=>Q(`connect.viewAccounts`)]),_(`click`,u,function(...e){a.close?.apply(this,e)}),f(t,n)},me=r=>{var i=p(),a=w(i),o=r=>{var i=Ka(),a=S(i),o=g(a,!0),c=e(a,2),u=t=>{var r=Wa(),i=S(r,!0);Ue(e(i),{size:16}),Y(r),s((e,t)=>{G(r,`href`,e),z(i,t)},[()=>`/admin/api/oauth/${encodeURIComponent(n(l).id)}/verification`,()=>Q(`common.verifyGoogle`)]),f(t,r)},d=e=>{var t=Ga(),n=g(t,!0);s(e=>z(n,e),[()=>Q(`common.openAntigravity`)]),f(e,t)};t(c,e=>{n(l).verification_available?e(u):e(d,-1)});var p=e(c,2),h=g(p,!0),v=e(p,2),y=S(v),b=g(y,!0),x=e(y),C=g(x,!0);Y(v),Y(i),s((e,t,r,i)=>{z(o,e),z(h,t),y.disabled=n(m),z(b,r),x.disabled=n(m),z(C,i)},[()=>Q(`connect.googleVerify`),()=>Q(`connect.afterVerify`),()=>Q(`connect.restart`),()=>Q(`common.chooseOtherProvider`)]),_(`click`,y,()=>n(l)&&R(n(l).provider)),_(`click`,x,K),f(r,i)},c=t=>{var r=qa(),i=S(r),a=g(i,!0),o=e(i,2),c=g(o,!0),u=e(o,2),d=g(u,!0),p=e(u,2),h=S(p,!0);Ue(e(h),{size:16}),Y(p);var v=e(p,2),y=S(v),b=g(y,!0),x=e(y),C=g(x,!0);Y(v),Y(r),s((e,t,r,i,o,s)=>{z(a,e),z(c,t),z(d,r),z(h,i),y.disabled=n(m),z(b,o),x.disabled=n(m),z(C,s)},[()=>Q(`connect.antigravityTitle`),()=>Q(`connect.antigravityProject`),()=>Q(`connect.antigravityFirstUse`),()=>Q(`connect.antigravityGuide`),()=>Q(`connect.restart`),()=>Q(`common.chooseOtherProvider`)]),_(`click`,y,()=>n(l)&&R(n(l).provider)),_(`click`,x,K),f(t,r)},u=r=>{var i=Za(),a=S(i),o=r=>{var i=Ja(),a=w(i),o=g(a,!0),c=e(a),u=S(c),d=g(u,!0),p=e(u),m=S(p),h=e=>{Ot(e,{size:16})},v=e=>{Ur(e,{size:16})};t(m,e=>{n(P)?e(h):e(v,-1)}),Y(p),Y(c),s((e,t)=>{z(o,e),z(d,n(l).user_code),G(p,`aria-label`,t)},[()=>Q(`connect.enterCode`,{provider:Wt(n(l).provider)}),()=>Q(`connect.copyCode`)]),_(`click`,p,ie),f(r,i)},c=e=>{var t=Ga(),n=g(t,!0);s(e=>z(n,e),[()=>Q(`connect.authorize`)]),f(e,t)};t(a,e=>{n(l).user_code?e(o):e(c,-1)});var u=e(a,2),p=S(u,!0);Ue(e(p),{size:14}),Y(u);var h=e(u,2),v=t=>{var r=Ya(),i=w(r),a=g(i,!0),o=e(i),c=S(o),l=g(c,!0),u=e(c);N(u);var p=e(u),h=g(p,!0);Y(o),s((e,t,n,r,i)=>{z(a,e),z(l,t),G(u,`placeholder`,n),p.disabled=r,z(h,i)},[()=>Q(`connect.callbackHint`),()=>Q(`connect.callbackLabel`),()=>Q(`connect.callbackPlaceholder`),()=>n(m)||n(y)||!n(d).trim(),()=>Q(`connect.finish`)]),X(`submit`,o,ee),re(u,()=>n(d),e=>J(d,e)),f(t,r)};t(h,e=>{n(l).user_code||e(v)});var x=e(h,2),C=S(x),T=g(C,!0),E=e(C),D=g(E,!0);Y(x);var O=e(x),k=e=>{var t=Xa(),r=g(t,!0);s(()=>z(r,n(b))),f(e,t)};t(O,e=>{n(b)&&e(k)}),Y(i),s((e,t,r)=>{G(u,`href`,n(l).url),z(p,e),C.disabled=n(m)||n(y),z(T,t),E.disabled=n(m),z(D,r)},[()=>Q(`connect.open`),()=>Q(`connect.check`),()=>Q(`common.chooseOtherProvider`)]),_(`click`,C,()=>H()),_(`click`,E,K),f(r,i)};t(a,e=>{n(l).verification_required?e(o):n(l).provider===`antigravity`&&n(l).error_code===`google_project_unavailable`?e(c,1):e(u,-1)}),f(r,i)},he=t=>{var r=$a(),a=S(r),o=S(a,!0),c=e(o,2,!0),l=e(c),u=g(l,!0),d=e(l,1,!0);Y(a);var p=e(a),h=S(p),v=g(h,!0),y=e(h);N(y);var b=e(y),x=g(b,!0),w=e(b);N(w),G(w,`pattern`,`[a-z0-9][a-z0-9_\\-]{0,31}`);var D=e(w),k=g(D,!0),M=e(D);N(M);var P=e(M),I=g(P,!0),L=e(P);i(L,20,()=>kt,e=>e,(e,t)=>{var n=Qa(),r=g(n,!0),i={};s(e=>{z(r,e),i!==(i=t)&&(n.value=(n.__value=i)??``)},[()=>At(t)]),f(e,n)}),Y(L),T(L);var R=e(L),B=g(R,!0),V=e(R);N(V);var H=e(V),ee=g(H,!0);Y(p);var te=e(p),U=g(te,!0);Y(r),s((e,t,r,i,a,s,l,f,p,h,g,_)=>{z(o,e),z(c,t),z(u,r),z(d,i),z(v,a),z(x,s),z(k,l),z(I,f),z(B,p),H.disabled=h,z(ee,g),te.disabled=n(m),z(U,_)},[()=>Q(`connect.customIntro1`),()=>Q(`connect.customIntro2`),()=>Q(`connect.customModel`),()=>Q(`connect.customIntro3`),()=>Q(`connect.name`),()=>Q(`endpoint.route`),()=>Q(`endpoint.url`),()=>Q(`endpoint.format`),()=>Q(`endpoint.key`),()=>n(m)||!n(E).trim()||!n(A).trim(),()=>Q(`connect.addEndpoint`),()=>Q(`common.chooseOtherProvider`)]),X(`submit`,p,W),re(y,()=>n(C),e=>J(C,e)),re(w,()=>n(A),e=>J(A,e)),re(M,()=>n(O),e=>J(O,e)),F(L,()=>n(j),e=>J(j,e)),re(V,()=>n(E),e=>J(E,e)),_(`click`,te,K),f(t,r)},ge=t=>{var r=eo(),i=S(r),a=g(i,!0),o=e(i),c=S(o),l=g(c,!0),u=e(c);N(u);var d=e(u),p=g(d,!0),h=e(d);N(h);var v=e(h),y=g(v,!0),b=e(v);N(b);var x=e(b),w=g(x,!0);Y(o);var T=e(o),D=g(T,!0);Y(r),s((e,t,r,i,o,s,c,d,f)=>{z(a,e),z(l,t),G(u,`placeholder`,r),z(p,i),z(y,o),G(b,`placeholder`,s),x.disabled=c,z(w,d),T.disabled=n(m),z(D,f)},[()=>Q(`connect.tokenIntro`),()=>Q(`connect.accountName`),()=>Q(`connect.accountNamePlaceholder`),()=>Q(`connect.token`),()=>Q(`connect.providerUrl`),()=>Q(`connect.providerUrlPlaceholder`),()=>n(m)||!n(E).trim(),()=>Q(`connect.addAccount`),()=>Q(`common.chooseOtherProvider`)]),X(`submit`,o,W),re(u,()=>n(C),e=>J(C,e)),re(h,()=>n(E),e=>J(E,e)),re(b,()=>n(O),e=>J(O,e)),_(`click`,T,K),f(t,r)},_e=r=>{var o=ro(),l=w(o),u=S(l);i(u,17,()=>a.providers,e=>e.id,(t,r)=>{var i=to(),a=S(i);ct(S(a),{get provider(){return n(r).id},size:28}),Y(a);var o=e(a),c=S(o,!0),l=e(c),u=g(l,!0);Y(o),Le(e(o),{size:15}),Y(i),s((e,t)=>{i.disabled=n(m),z(c,e),z(u,t)},[()=>Wt(n(r).id,n(r).name),()=>Q(n(r).oauth?`connect.oauthOption`:n(r).id===`openai_compatible`?`connect.apiKeyOption`:`connect.tokenOption`)]),_(`click`,i,()=>{n(r).oauth?R(n(r).id):(J(x,n(r).id,!0),J(O,n(r).base_url??L[n(r).id]??``,!0),J(C,n(r).id===`openai_compatible`?``:Wt(n(r).id,n(r).name),!0))}),f(t,i)});var d=e(u),p=e=>{var t=no(),n=g(t,!0);s(e=>z(n,e),[()=>Q(`connect.noProvider`)]),f(e,t)};t(d,e=>{a.providers.length||e(p)}),Y(l);var h=e(l,2),v=S(h),y=S(v),b=g(y,!0),T=e(y),E=g(T,!0);Y(v);var D=e(v),A=S(D);Xn(A,{size:14});var j=e(A,1,!0);Y(D);var M=e(D);k(M,e=>J(c,e),()=>n(c)),Y(h),s((e,t,r)=>{z(b,e),z(E,t),D.disabled=n(m),z(j,r)},[()=>Q(`connect.haveFile`),()=>Q(`connect.importFiles`),()=>Q(`common.import`)]),_(`click`,D,()=>n(c)?.click()),_(`change`,M,e=>{e.currentTarget.files?.length&&(a.importFiles(e.currentTarget.files),a.close())}),f(r,o)};t(pe,e=>{n(v)?e(Z):n(l)?e(me,1):n(x)&&n(M)?e(he,2):n(x)?e(ge,3):e(_e,-1)});var ve=e(pe,2),ye=e=>{var t=io(),n=g(t,!0);s(e=>z(n,e),[()=>Q(`connect.pending`)]),f(e,t)};t(ve,e=>{n(m)&&e(ye)});var be=e(ve,2),xe=e=>{var t=ao(),r=g(t,!0);s(()=>z(r,n(h))),f(e,t)};t(be,e=>{n(h)&&e(xe)}),Y(ae),k(ae,e=>o=e,()=>o),s((e,t,n)=>{z(le,e),z(de,t),G(fe,`aria-label`,n)},[()=>Q(`common.connectAccount`),()=>Q(`connect.subtitle`),()=>Q(`common.close`)]),X(`cancel`,ae,function(...e){a.close?.apply(this,e)}),_(`click`,fe,function(...e){a.close?.apply(this,e)}),f(r,ae),D()}d([`click`,`change`]);var co=o(``);function lo(e,t){let n=L(t,`size`,3,38);var r=co();s(()=>{G(r,`width`,n()),G(r,`height`,n())}),f(e,r)}var uo=h(``),fo=h(``),po=h(` `),mo=h(``),ho=h(``),go=h(``),_o=h(`
`),vo=h(`
`),yo=h(`

`,1),bo=h(``),xo=h(`
`,1);function So(r,a){ne(a,!0);let o=[{label:`nav.subscriptions`,items:[{id:`quotas`,label:`nav.quotas`,icon:he},{id:`overview`,label:`nav.overview`,icon:_e},{id:`accounts`,label:`nav.accounts`,icon:ye},{id:`clients`,label:`nav.clients`,icon:xe},{id:`models`,label:`nav.models`,icon:Ce}]},{label:`nav.service`,items:[{id:`activity`,label:`nav.activity`,icon:Te},{id:`settings`,label:`nav.settings`,icon:De},{id:`quickstart`,label:`nav.quickstart`,icon:ke}]}],c=o.flatMap(e=>e.items).filter(e=>[`quotas`,`accounts`,`activity`,`settings`].includes(e.id)),u=U(`quotas`),d=U(!1),m=U(!1),h=U([]),b=U([]),T=U([]),E=U([]),k=U({}),A=U([]),j=U(null),M=U(null),N=U(null),P=U(!0),F=U(``),I=U(``),L=U(``),R=q(()=>Q(o.flatMap(e=>e.items).find(e=>e.id===n(u))?.label??`nav.quotas`)),V=null;async function H(e=!1){if(V)return V;e||J(P,!0),V=(async()=>{let e=await Promise.allSettled([$.accounts(),$.quotas(),$.providers(),$.models(),$.calls(),$.status(),$.settings(),$.clients()]),t=[];e[0].status===`fulfilled`?J(h,e[0].value.accounts):t.push(e[0].reason.message),e[1].status===`fulfilled`?J(b,e[1].value.quotas):t.push(e[1].reason.message),e[2].status===`fulfilled`?J(T,e[2].value.providers):t.push(e[2].reason.message),e[3].status===`fulfilled`?(J(E,e[3].value.models),J(k,e[3].value.listings??{})):t.push(e[3].reason.message),e[4].status===`fulfilled`?J(A,e[4].value.calls):t.push(e[4].reason.message),e[5].status===`fulfilled`?J(j,e[5].value):(J(j,null),t.push(e[5].reason.message)),e[6].status===`fulfilled`?J(M,e[6].value):t.push(e[6].reason.message),e[7].status===`fulfilled`?J(N,e[7].value):t.push(e[7].reason.message),J(I,[...new Set(t)].join(` `),!0),J(P,!1)})();try{await V}finally{V=null}}function ee(e){J(u,e,!0),J(d,!1),J(I,``),J(L,``),location.hash=e,window.scrollTo(0,0)}function W(){let e=location.hash.slice(1);o.flatMap(e=>e.items).some(t=>t.id===e)&&J(u,e,!0)}async function K(e,t,r=``){if(n(F))return!1;J(F,e,!0),J(I,``),J(L,``);try{return await t(),V&&await V,await H(!0),J(L,r,!0),!0}catch(e){return J(I,e.message,!0),!1}finally{J(F,``)}}function re(e){return K(`quotas`,()=>$.refreshQuotas(e))}async function ie(e,t){let r={...n(M)?.quota_display};t===`average`?r[e]=t:delete r[e],await K(`settings`,()=>$.settingsSave({quota_display:r}),Q(`notice.displaySaved`))}async function ae(e,t){let r={...n(M)?.quota_windows};t.hidden?.length||t.primary?r[e]={hidden:t.hidden??[],primary:t.primary??null}:delete r[e],await K(`settings`,()=>$.settingsSave({quota_windows:r}),Q(`notice.windowsSaved`))}async function oe(e,t){if(n(F))throw Error(Q(`notice.busy`));J(F,`rename`);try{let r=await $.renameAccount(e.id,t);J(h,n(h).map(t=>t.id===e.id?r.account:t))}finally{J(F,``)}}function se(e,t){return K(`endpoint`,()=>$.updateEndpoint(e.id,t),Q(`notice.endpointSaved`))}function ce(e,t,n){return K(`reserve`,()=>$.setAccountReserve(e.id,t,n),Q(t==null?`notice.reserveRemoved`:`notice.reserveSaved`))}async function le(e){let t=Array.from(e);await K(`import`,async()=>{let e=await Promise.all(t.map(async e=>{if(e.size>2097152)throw Error(Q(`notice.fileTooLarge`,{name:e.name}));try{return{name:e.name,content:JSON.parse(await e.text())}}catch{throw Error(Q(`notice.invalidJson`,{name:e.name}))}})),n=await $.importAccounts(e);if(n.errors?.length)throw await H(!0),Error(Q(`notice.partialImport`,{count:n.imported,errors:Bt(n.errors)}));if(!n.imported)throw Error(Q(`notice.nothingImported`))},Q(`notice.imported`))}async function ue(e,t){let n=0,r=await K(`restore`,async()=>{let r=await $.restore(e,t);if(n=r.restored,r.errors?.length)throw await H(!0),Error(Q(`notice.partialRestore`,{count:r.restored,errors:Bt(r.errors)}))});return r&&J(L,Q(n===1?`notice.restored.one`:`notice.restored.other`,{count:n}),!0),r}te(()=>{W(),H();let e=setInterval(()=>{!document.hidden&&!n(F)&&H(!0)},15e3);return()=>clearInterval(e)});var de=xo();v(`1uha8ag`,e=>{var t=uo();s(e=>G(t,`content`,e),[()=>Q(`page.description`)]),x(()=>{l.title=`${n(R)??``} · douane`}),f(e,t)}),X(`hashchange`,C,W),X(`keydown`,C,e=>{e.key===`Escape`&&J(d,!1)}),X(`visibilitychange`,l,()=>{document.hidden||H(!0)});var fe=w(de),pe=S(fe),Z=e=>{var t=fo();s(e=>G(t,`aria-label`,e),[()=>Q(`nav.closeMenu`)]),_(`click`,t,()=>J(d,!1)),f(e,t)};t(pe,e=>{n(d)&&e(Z)});var me=e(pe,2);let ge;var ve=S(me),be=S(ve);lo(S(be),{}),Y(be);var Se=e(be,2);Fe(S(Se),{size:18}),Y(Se),Y(ve);var we=e(ve,2);i(we,21,()=>o,e=>e.label,(r,a)=>{var o=ho(),c=S(o),l=g(c,!0),d=e(c);i(d,17,()=>n(a).items,e=>e.id,(r,i)=>{let a=q(()=>n(i).icon);var o=mo();let c;var l=S(o);y(l,()=>n(a),(e,t)=>{t(e,{size:17})});var d=e(l),p=g(d,!0),m=e(d),v=e=>{var t=po(),r=g(t,!0);s(()=>z(r,n(h).length)),f(e,t)},b=e=>{var t=po(),r=g(t,!0);s(()=>z(r,n(N).clients.length)),f(e,t)};t(m,e=>{n(i).id===`accounts`&&n(h).length?e(v):n(i).id===`clients`&&n(N)?.clients.length&&e(b,1)}),Y(o),s(e=>{c=O(o,1,`nav-link`,null,c,{active:n(u)===n(i).id}),G(o,`aria-current`,n(u)===n(i).id?`page`:void 0),z(p,e)},[()=>Q(n(i).label)]),_(`click`,o,()=>ee(n(i).id)),f(r,o)}),Y(o),s(e=>z(l,e),[()=>Q(n(a).label)]),f(r,o)}),Y(we);var Ee=e(we,2),Oe=S(Ee),Ae=S(Oe,!0);Le(e(Ae),{size:19}),Y(Oe),Y(Ee),Y(me);var Me=e(me,2),Pe=S(Me),Ie=S(Pe),Re=t=>{var r=go(),i=S(r),a=g(i,!0),o=e(i),c=g(o,!0);Y(r),s(e=>{z(a,n(I)),o.disabled=n(P),z(c,e)},[()=>Q(`common.retry`)]),_(`click`,o,()=>H()),f(t,r)};t(Ie,e=>{n(I)&&e(Re)});var ze=e(Ie,2),Be=t=>{var r=_o(),i=S(r,!0),a=e(i);Fe(S(a),{size:14}),Y(a),Y(r),s(e=>{z(i,n(L)),G(a,`aria-label`,e)},[()=>Q(`page.dismissNotice`)]),_(`click`,a,()=>J(L,``)),f(t,r)};t(ze,e=>{n(L)&&e(Be)});var Ve=e(ze,2),He=t=>{var n=vo(),r=S(n);je(r,{size:18,class:`spinning`});var i=e(r),a=g(i,!0);Y(n),s(e=>z(a,e),[()=>Q(`page.loading`)]),f(t,n)};t(Ve,e=>{n(P)&&!n(j)&&e(He)});var Ue=e(Ve,2),We=e=>{Jn(e,{get accounts(){return n(h)},get quotas(){return n(b)},get providers(){return n(T)},get busy(){return n(F)},refresh:re,rename:oe,get settings(){return n(M)},setQuotaDisplay:ie,setQuotaWindows:ae,resetUpdated:()=>H(!0),connect:()=>J(m,!0)})},Ge=e=>{Sr(e,{get accounts(){return n(h)},get quotas(){return n(b)},get busy(){return n(F)},rename:oe,setReserve:ce,updateEndpoint:se,connect:()=>J(m,!0),importFiles:le,toggle:e=>K(`account`,()=>$.setAccountEnabled(e.id,!e.enabled),Q(e.enabled?`notice.accountDisabled`:`notice.accountEnabled`)),remove:e=>K(`account`,()=>$.deleteAccount(e.id),Q(`notice.accountDeleted`))})},Ke=e=>{zi(e,{get report(){return n(N)},get accounts(){return n(h)},get busy(){return n(F)},updated:async e=>{await H(!0),J(L,e,!0)}})},qe=r=>{var i=p(),a=w(i),o=e=>{var t=p(),r=w(t);B(r,()=>JSON.stringify(n(M)),e=>{Ha(e,{get settings(){return n(M)},get providers(){return n(T)},get busy(){return n(F)},restore:ue,save:e=>K(`settings`,()=>$.settingsSave(e),Q(`notice.settingsSaved`))})}),f(e,t)},c=t=>{var n=yo(),r=w(n),i=S(r),a=S(i),o=g(a,!0),c=e(a),l=g(c,!0);Y(i),Y(r),Oa(e(r),{}),s((e,t)=>{z(o,e),z(l,t)},[()=>Q(`nav.settings`),()=>Q(`page.settingsUnavailable`)]),f(t,n)};t(a,e=>{n(M)?e(o):e(c,-1)}),f(r,i)},Je=e=>{ba(e,{get models(){return n(E)},get listings(){return n(k)},get accounts(){return n(h)},get busy(){return n(F)},navigate:ee,toggleModel:e=>K(`model`,()=>$.setModelEnabled(e.id,e.enabled===!1),Q(`notice.modelUpdated`)),setModels:(e,t)=>K(`models`,()=>$.setModelsEnabled(e,t),Q(`notice.modelsUpdated`,{count:e.length})),refreshModels:e=>K(`models:${e??`*`}`,()=>$.refreshModels(e))})},Ye=e=>{var t=p(),r=w(t);B(r,()=>n(u),e=>{{let t=q(()=>n(N)?.clients??[]);ra(e,{get screen(){return n(u)},get summary(){return n(j)},get calls(){return n(A)},get accounts(){return n(h)},get clients(){return n(t)},navigate:ee})}}),f(e,t)};t(Ue,e=>{n(u)===`quotas`?e(We):n(u)===`accounts`?e(Ge,1):n(u)===`clients`?e(Ke,2):n(u)===`settings`?e(qe,3):n(u)===`models`?e(Je,4):e(Ye,-1)}),Y(Pe),Y(Me),Y(fe);var Xe=e(fe,2),Ze=S(Xe);i(Ze,17,()=>c,e=>e.id,(t,r)=>{let i=q(()=>n(r).icon);var a=bo();let o;var c=S(a);y(c,()=>n(i),(e,t)=>{t(e,{size:19})});var l=e(c),d=g(l,!0);Y(a),s(e=>{G(a,`aria-current`,n(u)===n(r).id?`page`:void 0),o=O(a,1,``,null,o,{active:n(u)===n(r).id}),z(d,e)},[()=>Q(n(r).label)]),_(`click`,a,()=>ee(n(r).id)),f(t,a)});var Qe=e(Ze),$e=S(Qe);Ne($e,{size:19});var et=e($e),tt=g(et,!0);Y(Qe),Y(Xe);var nt=e(Xe,2),rt=e=>{so(e,{get providers(){return n(T)},close:()=>J(m,!1),completed:()=>{J(L,Q(`notice.accountConnected`),!0),H(!0)},importFiles:le})};t(nt,e=>{n(m)&&e(rt)}),s((e,t,r,i,a,o)=>{ge=O(me,1,`sidebar`,null,ge,{"mobile-open":n(d)}),G(Se,`aria-label`,e),G(we,`aria-label`,t),z(Ae,r),G(Xe,`aria-label`,i),G(Qe,`aria-label`,a),G(Qe,`aria-expanded`,n(d)),z(tt,o)},[()=>Q(`nav.closeMenu`),()=>Q(`nav.main`),()=>Q(`nav.setupTool`),()=>Q(`nav.mobile`),()=>Q(`nav.openMenu`),()=>Q(`nav.menu`)]),_(`click`,Se,()=>J(d,!1)),_(`click`,Oe,()=>ee(`quickstart`)),_(`click`,Qe,()=>J(d,!0)),f(r,de),D()}d([`click`]);export{So as component}; \ No newline at end of file diff --git a/dash/build/_app/version.json b/dash/build/_app/version.json index f80962a..1ded142 100644 --- a/dash/build/_app/version.json +++ b/dash/build/_app/version.json @@ -1 +1 @@ -{"version":"1792658081259"} \ No newline at end of file +{"version":"1792699939959"} \ No newline at end of file diff --git a/dash/build/index.html b/dash/build/index.html index bd73f02..1d67639 100644 --- a/dash/build/index.html +++ b/dash/build/index.html @@ -6,12 +6,12 @@ douane - - - - + + + + - + @@ -19,7 +19,7 @@
+ +
+

{t('nav.models')}

{t('models.description')}

+
{t('models.count', { count: models.length })}
+
+
+

{t('models.endpoint')} /v1/models

+
+ {#if shown.length > 1}{/if} + +
+
+ +{#if !groups.length}
navigate('accounts')}/>
+{:else if !shown.length}
+{:else} +
+ {#each shown as group (group.id)} + {@const expanded = isOpen(group.id)} + {@const enabled = group.models.filter(model => model.enabled !== false).length} + {@const allOn = group.shown.length > 0 && group.shown.every(model => model.enabled !== false)} + {@const someOn = group.shown.some(model => model.enabled !== false)} + {@const listing = listings[group.id]} +
+
+ +
+ {#if listing?.stale}{t('models.stale')} + {:else if listing}{t('models.refreshed', { age: ageLabel(listing.refreshed_at) })}{/if} + + +
+
+ {#if expanded} +
+ {#if !group.shown.length}

{t('models.poolEmpty')}

+ {:else}
+ {#each group.shown as model (model.id)} + + + + + + {/each} +
{t('table.model')}{t('table.context')}{t('table.available')}
{model.name ?? model.id}{formatCount(model.context_length ?? undefined)}
{/if} +
+ {/if} +
+ {/each} +
+{/if} + + diff --git a/dash/src/lib/management.ts b/dash/src/lib/management.ts index 6956a7c..d644e8d 100644 --- a/dash/src/lib/management.ts +++ b/dash/src/lib/management.ts @@ -22,7 +22,10 @@ export type CreditUsage = { id: string; label: string; used?: number | null; lim export type Quota = { account_id: string; windows: QuotaWindow[]; subscription?: Subscription | null; credits?: CreditUsage[]; updated_at?: string | null; error?: string | null; verification_required?: boolean; verification_available?: boolean }; export type ResetAvailability = { account_id: string; provider: string; status: 'ready' | 'unsupported' | 'unavailable' | 'ineligible' | 'disabled'; available_count: number | null; next_expires_at: string | null; pending_request_id?: string | null; error: string | null }; export type ResetResult = { request_id: string; outcome: 'reset' | 'nothing_to_reset' | 'no_credit' | 'already_redeemed' }; -export type Model = { id: string; provider: string; name?: string; context_length?: number | null; enabled?: boolean }; +export type Model = { id: string; provider: string; name?: string; context_length?: number | null; enabled?: boolean; route?: string | null }; +/** When a pool's catalog was last read; `stale` when its live listing failed and the previous catalog stays. */ +export type ModelListing = { refreshed_at: string; stale: boolean }; +export type ModelsReport = { models: Model[]; listings?: Record }; export type Call = { id: string | number; started_at: string; model: string; provider: string; account_id?: string | null; status: number; latency_ms?: number; input_tokens?: number; output_tokens?: number; cache_read_tokens?: number; cache_write_tokens?: number; error?: string | null; client_id?: string | null }; export type Status = { version: string; uptime_seconds: number; in_flight: number; requests: number; errors: number; accounts: number; enabled_accounts: number; providers: number; input_tokens: number; output_tokens: number; cache_read_tokens?: number; cache_write_tokens?: number; client_api_base_url?: string | null; clients?: number }; /** The accounts a client key may use; `all` includes accounts connected later. */ @@ -75,7 +78,9 @@ export const management = { providers: () => request<{ providers: Provider[] }>('/providers'), accounts: () => request<{ accounts: Account[] }>('/accounts'), quotas: () => request<{ quotas: Quota[] }>('/quotas'), - models: () => request<{ models: Model[] }>('/models'), + models: () => request('/models'), + refreshModels: (pool?: string) => request(`/models/refresh${pool ? `?pool=${encodeURIComponent(pool)}` : ''}`, { method: 'POST' }), + setModelsEnabled: (ids: string[], enabled: boolean) => request('/models', { method: 'PATCH', body: JSON.stringify({ ids, enabled }) }), calls: () => request<{ calls: Call[] }>('/calls?limit=100'), settings: () => request('/settings'), refreshQuotas: (account_id?: string) => request('/quotas/refresh', { method: 'POST', body: JSON.stringify({ account_id }) }), @@ -131,6 +136,15 @@ export function formatCount(value: number | undefined) { return value == null ? /** A 12-hour English clock reads `1:49 PM`, not `01:49 PM`; French keeps `13:49`. */ function hour() { return language() === 'en' ? 'numeric' as const : '2-digit' as const; } export function formatDate(value?: string | null) { return value ? new Intl.DateTimeFormat(locale(), { day: '2-digit', month: 'short', hour: hour(), minute: '2-digit' }).format(new Date(value)) : '-'; } +/** How long ago `value` was, `5 min ago`; a date past a day. */ +export function ageLabel(value: string, now = Date.now()) { + const seconds = Math.round((new Date(value).getTime() - now) / 1000); + const format = new Intl.RelativeTimeFormat(locale(), { numeric: 'auto', style: 'short' }); + if (seconds > -45) return format.format(0, 'second'); + if (seconds > -3600) return format.format(Math.round(seconds / 60), 'minute'); + if (seconds > -86400) return format.format(Math.round(seconds / 3600), 'hour'); + return formatDate(value); +} export function resetLabel(value?: string | null) { if (!value) return t('date.unknown'); const date = new Date(value); diff --git a/dash/src/lib/strings/en.ts b/dash/src/lib/strings/en.ts index 90f277e..a136e45 100644 --- a/dash/src/lib/strings/en.ts +++ b/dash/src/lib/strings/en.ts @@ -56,6 +56,7 @@ export const en = { 'notice.accountDeleted': 'Account deleted.', 'notice.settingsSaved': 'Settings saved.', 'notice.modelUpdated': 'Model updated.', + 'notice.modelsUpdated': '{count} models updated.', 'notice.accountConnected': 'Account connected.', 'notice.partialRestore': '{count} account(s) restored. {errors}', 'notice.restored.one': '{count} account restored.', @@ -284,6 +285,19 @@ export const en = { 'models.addAccount': 'Add an account', 'models.noMatchTitle': 'No matching model', 'models.noMatchDescription': 'Try another model or provider name.', + 'models.refreshAll': 'Refresh all', + 'models.refreshPool': 'Refresh {name} models', + 'models.enabledCount': '{enabled} of {count} enabled', + 'models.expandAll': 'Expand all', + 'models.collapseAll': 'Collapse all', + 'models.enableShown': 'Enable every shown {name} model', + 'models.disableShown': 'Disable every shown {name} model', + 'models.stale': 'Previous list', + 'models.staleTitle': '{name} did not answer the last listing: its previous models stay served.', + 'models.refreshed': 'Updated {age}', + 'models.poolEmpty': 'No model read for this provider yet.', + 'models.group': '{name} models', + 'models.copyId': 'Copy {id}', 'activity.title': 'Request log', 'activity.description': 'Each call, its account and its usage', 'activity.count': 'Last {count} requests', diff --git a/dash/src/lib/strings/fr.ts b/dash/src/lib/strings/fr.ts index a107eec..688bbd0 100644 --- a/dash/src/lib/strings/fr.ts +++ b/dash/src/lib/strings/fr.ts @@ -58,6 +58,7 @@ export const fr: Record = { 'notice.accountDeleted': 'Compte supprimé.', 'notice.settingsSaved': 'Réglages enregistrés.', 'notice.modelUpdated': 'Modèle mis à jour.', + 'notice.modelsUpdated': '{count} modèles mis à jour.', 'notice.accountConnected': 'Compte connecté.', 'notice.partialRestore': '{count} compte(s) restauré(s). {errors}', 'notice.restored.one': '{count} compte restauré.', @@ -286,6 +287,19 @@ export const fr: Record = { 'models.addAccount': 'Ajouter un compte', 'models.noMatchTitle': 'Aucun modèle correspondant', 'models.noMatchDescription': 'Essayez un autre nom de modèle ou de fournisseur.', + 'models.refreshAll': 'Tout actualiser', + 'models.refreshPool': 'Actualiser les modèles {name}', + 'models.enabledCount': '{enabled} sur {count} actifs', + 'models.expandAll': 'Tout déplier', + 'models.collapseAll': 'Tout replier', + 'models.enableShown': 'Activer tous les modèles {name} affichés', + 'models.disableShown': 'Désactiver tous les modèles {name} affichés', + 'models.stale': 'Liste précédente', + 'models.staleTitle': "{name} n'a pas répondu à la dernière lecture : ses modèles précédents restent servis.", + 'models.refreshed': 'Actualisé {age}', + 'models.poolEmpty': 'Aucun modèle lu pour ce fournisseur.', + 'models.group': 'Modèles {name}', + 'models.copyId': 'Copier {id}', 'activity.title': 'Journal des requêtes', 'activity.description': 'Chaque appel, son compte et sa consommation', 'activity.count': '{count} dernières requêtes', diff --git a/dash/src/routes/+page.svelte b/dash/src/routes/+page.svelte index e0f4945..9f2ec61 100644 --- a/dash/src/routes/+page.svelte +++ b/dash/src/routes/+page.svelte @@ -16,10 +16,11 @@ import AccountsView from '$lib/components/accounts-view.svelte'; import ClientsView from '$lib/components/clients-view.svelte'; import DataViews from '$lib/components/data-views.svelte'; + import ModelsView from '$lib/components/models-view.svelte'; import SettingsView from '$lib/components/settings-view.svelte'; import ConnectDialog from '$lib/components/connect-dialog.svelte'; import DouaneMark from '$lib/components/douane-mark.svelte'; - import { management, importErrors, type Account, type Quota, type Provider, type Model, type Call, type Status, type Settings, type QuotaDisplay, type QuotaWindowChoice, type ReserveWindow, type EndpointPatch, type ClientsReport } from '$lib/management'; + import { management, importErrors, type Account, type Quota, type Provider, type Model, type ModelListing, type Call, type Status, type Settings, type QuotaDisplay, type QuotaWindowChoice, type ReserveWindow, type EndpointPatch, type ClientsReport } from '$lib/management'; import LanguageSetting from '$lib/components/language-setting.svelte'; import { t, type StringKey } from '$lib/i18n.svelte'; const groups: { label: StringKey; items: { id: string; label: StringKey; icon: typeof Gauge }[] }[] = [ @@ -34,6 +35,7 @@ let quotas = $state.raw([]); let providers = $state.raw([]); let models = $state.raw([]); + let modelListings = $state.raw>({}); let calls = $state.raw([]); let summary = $state.raw(null); let settings = $state.raw(null); @@ -53,7 +55,7 @@ if (responses[0].status === 'fulfilled') accounts = responses[0].value.accounts; else errors.push(responses[0].reason.message); if (responses[1].status === 'fulfilled') quotas = responses[1].value.quotas; else errors.push(responses[1].reason.message); if (responses[2].status === 'fulfilled') providers = responses[2].value.providers; else errors.push(responses[2].reason.message); - if (responses[3].status === 'fulfilled') models = responses[3].value.models; else errors.push(responses[3].reason.message); + if (responses[3].status === 'fulfilled') { models = responses[3].value.models; modelListings = responses[3].value.listings ?? {}; } else errors.push(responses[3].reason.message); if (responses[4].status === 'fulfilled') calls = responses[4].value.calls; else errors.push(responses[4].reason.message); if (responses[5].status === 'fulfilled') summary = responses[5].value; else { summary = null; errors.push(responses[5].reason.message); } if (responses[6].status === 'fulfilled') settings = responses[6].value; else errors.push(responses[6].reason.message); @@ -136,7 +138,8 @@ {:else if screen === 'accounts'} connectOpen = true} {importFiles} toggle={(account) => mutate('account',() => management.setAccountEnabled(account.id,!account.enabled),t(account.enabled ? 'notice.accountDisabled' : 'notice.accountEnabled'))} remove={(account) => mutate('account',() => management.deleteAccount(account.id),t('notice.accountDeleted'))}/> {:else if screen === 'clients'} { await load(true); notice = message; }}/> {:else if screen === 'settings'}{#if settings}{#key JSON.stringify(settings)} mutate('settings',() => management.settingsSave(next),t('notice.settingsSaved'))}/>{/key}{:else}

{t('nav.settings')}

{t('page.settingsUnavailable')}

{/if} - {:else}{#key screen} mutate('model',() => management.setModelEnabled(model.id,model.enabled === false),t('notice.modelUpdated'))}/>{/key}{/if} + {:else if screen === 'models'} mutate('model',() => management.setModelEnabled(model.id,model.enabled === false),t('notice.modelUpdated'))} setModels={(ids, enabled) => mutate('models',() => management.setModelsEnabled(ids,enabled),t('notice.modelsUpdated', { count: ids.length }))} refreshModels={(pool) => mutate(`models:${pool ?? '*'}`,() => management.refreshModels(pool))}/> + {:else}{#key screen}{/key}{/if}
From b0232a7046c11afd331a3ab13854a07993bfe195 Mon Sep 17 00:00:00 2001 From: meetsu <96637888+klNuno@users.noreply.github.com> Date: Thu, 22 Oct 2026 22:20:51 +0200 Subject: [PATCH 2/4] fix: serialize catalog refreshes and mark failed Copilot and Antigravity reads --- crates/douane/src/state.rs | 104 ++++++++++++++++++++++--------- crates/douane/tests/endpoints.rs | 60 ++++++++++++++++++ 2 files changed, 133 insertions(+), 31 deletions(-) diff --git a/crates/douane/src/state.rs b/crates/douane/src/state.rs index 47e149e..d2c1e2b 100644 --- a/crates/douane/src/state.rs +++ b/crates/douane/src/state.rs @@ -110,6 +110,9 @@ pub struct AppState { /// When each pool's catalog was last read, and whether its live listing /// failed; the background loop rereads a stale pool until it answers. pub model_listings: Mutex>, + /// One catalog refresh at a time: each one starts from the rows the + /// last one published. + model_refresh: tokio::sync::Mutex<()>, pub scheduler: Mutex, pub affinity: Mutex, pub(crate) antigravity_replay: Mutex, @@ -165,6 +168,7 @@ impl AppState { client, models: RwLock::new(vec![]), model_listings: Mutex::new(BTreeMap::new()), + model_refresh: tokio::sync::Mutex::new(()), scheduler: Mutex::new(Scheduler::default()), affinity: Mutex::new(crate::affinity::Affinity::default()), antigravity_replay: Mutex::new(crate::antigravity_replay::ReplayCache::default()), @@ -224,17 +228,19 @@ impl AppState { /// Rereads the catalog of one pool, or of every pool; the other pools /// keep their rows untouched. pub async fn refresh_models_in(&self, only: Option<&str>) { + let _refresh = self.model_refresh.lock().await; let bundled = catalog(); let previous = self.models.read().await.clone(); let mut read: BTreeSet = BTreeSet::new(); - let mut stale: BTreeSet = BTreeSet::new(); + let mut failed: BTreeSet = BTreeSet::new(); + // A pool another account read live is fresh despite one failure. + let mut answered: BTreeSet = BTreeSet::new(); let mut models: BTreeMap = BTreeMap::new(); if let Some(pool) = only { for model in previous.iter().filter(|m| !in_pool(m, pool)) { models.insert(model.id.clone(), model.clone()); } } - let disabled = self.config.read().await.disabled_models.clone(); for summary in self.accounts.list().await { let Some(account) = self.accounts.get(&summary.id).await else { continue; @@ -242,7 +248,22 @@ impl AppState { if only.is_some_and(|pool| pool != account.pool()) { continue; } - read.insert(account.pool().to_owned()); + let pool = account.pool(); + read.insert(pool.to_owned()); + // What the last refresh read for this account, within its own + // model list, for when a live listing fails. + let kept: Vec = previous + .iter() + .filter(|m| { + m.provider == account.provider + && in_pool(m, pool) + && (account.models.is_empty() || account.models.contains(&m.upstream_id)) + }) + .map(|m| Model { + id: m.upstream_id.clone(), + ..m.clone() + }) + .collect(); let mut available: Vec = if account.models.is_empty() { bundled .iter() @@ -298,6 +319,7 @@ impl AppState { None => None, }; if let Some(data) = data.as_ref().and_then(|v| v["data"].as_array()) { + answered.insert(pool.to_owned()); available = data .iter() .filter_map(|m| { @@ -324,23 +346,9 @@ impl AppState { // model list. An account that names its models keeps // them without a listing, so only one that names // none is retried in the background. - let pool = account.pool(); tracing::warn!(pool = %pool, "model listing unavailable, keeping the previous catalog"); - let kept: Vec = previous - .iter() - .filter(|m| { - m.provider == account.provider - && in_pool(m, pool) - && (account.models.is_empty() - || account.models.contains(&m.upstream_id)) - }) - .map(|m| Model { - id: m.upstream_id.clone(), - ..m.clone() - }) - .collect(); if account.models.is_empty() { - available = kept; + available = kept.clone(); } else { // Every named model stays, with what the last // listing said about it when it said something. @@ -353,35 +361,69 @@ impl AppState { } } if account.models.is_empty() { - stale.insert(pool.to_owned()); + failed.insert(pool.to_owned()); } } } } + // A failed live read keeps the previous rows, or the bundled + // ones on a first read, and is retried like a failed listing. if account.provider == SubscriptionProvider::Antigravity && account.models.is_empty() { - if let Some(live) = self.antigravity_models(&summary.id).await { - available = live; + match self.antigravity_models(&summary.id).await { + Some(live) => { + available = live; + answered.insert(pool.to_owned()); + } + None => { + if !kept.is_empty() { + available = kept.clone(); + } + failed.insert(pool.to_owned()); + } } } if account.provider == SubscriptionProvider::Copilot { - if let Some(live) = self.copilot_models(&account).await { - available = live - .into_iter() - .filter(|m| account.models.is_empty() || account.models.contains(&m.id)) - .filter(|m| !self.copilot_refuses(&account.id, &m.id)) - .collect(); + match self.copilot_models(&account).await { + Some(live) => { + answered.insert(pool.to_owned()); + available = live + .into_iter() + .filter(|m| account.models.is_empty() || account.models.contains(&m.id)) + .filter(|m| !self.copilot_refuses(&account.id, &m.id)) + .collect(); + } + None => { + if !kept.is_empty() { + available = kept + .iter() + .filter(|m| !self.copilot_refuses(&account.id, &m.id)) + .cloned() + .collect(); + } + failed.insert(pool.to_owned()); + } } } for mut model in available { model.upstream_id = model.id.clone(); model.route = account.route.clone(); model.id = format!("{}/{}", account.pool(), model.upstream_id); - model.enabled = - !disabled.contains(&model.id) && !disabled.contains(&model.upstream_id); models.insert(model.id.clone(), model); } } - *self.models.write().await = models.into_values().collect(); + // A model switched while the listings were read must keep its new + // state: read the disabled list once the catalog is locked. + let mut published = self.models.write().await; + let disabled = self.config.read().await.disabled_models.clone(); + *published = models + .into_values() + .map(|mut model| { + model.enabled = + !disabled.contains(&model.id) && !disabled.contains(&model.upstream_id); + model + }) + .collect(); + drop(published); let now = time::OffsetDateTime::now_utc() .format(&time::format_description::well_known::Rfc3339) .unwrap_or_default(); @@ -396,7 +438,7 @@ impl AppState { None => listings.clear(), } for pool in read { - let stale = stale.contains(&pool); + let stale = failed.contains(&pool) && !answered.contains(&pool); listings.insert( pool, ModelListing { diff --git a/crates/douane/tests/endpoints.rs b/crates/douane/tests/endpoints.rs index b1199bc..c8eabca 100644 --- a/crates/douane/tests/endpoints.rs +++ b/crates/douane/tests/endpoints.rs @@ -486,6 +486,66 @@ async fn a_pool_refresh_rereads_only_that_pool() { ); } +#[tokio::test] +async fn an_overlapping_refresh_keeps_newer_rows_and_switches() { + // A slow pool's refresh must not publish its old copy of another pool + // over a newer read, nor turn back on a model switched off meanwhile. + let second = Arc::new(Mutex::new(vec!["x"])); + let ids = second.clone(); + let slow = serve(Router::new().route( + "/v1/models", + get(|| async { + tokio::time::sleep(Duration::from_millis(400)).await; + Json(json!({"data":[{"id":"a"}]})) + }), + )) + .await; + let fast = serve(Router::new().route( + "/v1/models", + get(move || { + let data: Vec = ids + .lock() + .unwrap() + .iter() + .map(|id| json!({ "id": id })) + .collect(); + async move { Json(json!({ "data": data })) } + }), + )) + .await; + let gateway = Gateway::new(&[ + endpoint("one", &slow.url, "key"), + endpoint("two", &fast.url, "key"), + ]) + .await; + assert_eq!(gateway.model_ids().await, ["one/a", "two/x"]); + + second.lock().unwrap().push("y"); + let state = gateway.state.clone(); + let slow_refresh = tokio::spawn(async move { state.refresh_models_in(Some("one")).await }); + tokio::time::sleep(Duration::from_millis(100)).await; + gateway + .admin( + reqwest::Method::PATCH, + "/models", + Some(json!({"ids":["two/x"],"enabled":false})), + ) + .await; + gateway.state.refresh_models_in(Some("two")).await; + slow_refresh.await.unwrap(); + assert_eq!(gateway.model_ids().await, ["one/a", "two/y"]); +} + +#[tokio::test] +async fn a_failed_copilot_listing_is_marked_and_retried() { + let server = serve(Router::new()).await; + let gateway = Gateway::new(&[ + json!({"type":"copilot","access_token":"gho_fixture","base_url":server.url}), + ]) + .await; + assert_eq!(gateway.state.stale_pools(), ["copilot"]); +} + #[tokio::test] async fn a_whole_provider_turns_off_in_one_call() { let server = serve(Router::new().route( From 34dd88bea0578eea6497c04367c702a3228a0c7a Mon Sep 17 00:00:00 2001 From: meetsu <96637888+klNuno@users.noreply.github.com> Date: Thu, 22 Oct 2026 22:23:31 +0200 Subject: [PATCH 3/4] fix: keep a pool stale while any of its accounts fails to list --- crates/douane/src/state.rs | 7 +------ crates/douane/tests/endpoints.rs | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/crates/douane/src/state.rs b/crates/douane/src/state.rs index d2c1e2b..94d9d1d 100644 --- a/crates/douane/src/state.rs +++ b/crates/douane/src/state.rs @@ -233,8 +233,6 @@ impl AppState { let previous = self.models.read().await.clone(); let mut read: BTreeSet = BTreeSet::new(); let mut failed: BTreeSet = BTreeSet::new(); - // A pool another account read live is fresh despite one failure. - let mut answered: BTreeSet = BTreeSet::new(); let mut models: BTreeMap = BTreeMap::new(); if let Some(pool) = only { for model in previous.iter().filter(|m| !in_pool(m, pool)) { @@ -319,7 +317,6 @@ impl AppState { None => None, }; if let Some(data) = data.as_ref().and_then(|v| v["data"].as_array()) { - answered.insert(pool.to_owned()); available = data .iter() .filter_map(|m| { @@ -372,7 +369,6 @@ impl AppState { match self.antigravity_models(&summary.id).await { Some(live) => { available = live; - answered.insert(pool.to_owned()); } None => { if !kept.is_empty() { @@ -385,7 +381,6 @@ impl AppState { if account.provider == SubscriptionProvider::Copilot { match self.copilot_models(&account).await { Some(live) => { - answered.insert(pool.to_owned()); available = live .into_iter() .filter(|m| account.models.is_empty() || account.models.contains(&m.id)) @@ -438,7 +433,7 @@ impl AppState { None => listings.clear(), } for pool in read { - let stale = failed.contains(&pool) && !answered.contains(&pool); + let stale = failed.contains(&pool); listings.insert( pool, ModelListing { diff --git a/crates/douane/tests/endpoints.rs b/crates/douane/tests/endpoints.rs index c8eabca..08ac1f2 100644 --- a/crates/douane/tests/endpoints.rs +++ b/crates/douane/tests/endpoints.rs @@ -546,6 +546,20 @@ async fn a_failed_copilot_listing_is_marked_and_retried() { assert_eq!(gateway.state.stale_pools(), ["copilot"]); } +#[tokio::test] +async fn one_answering_account_does_not_hide_another_ones_failure() { + // Plans differ, so one Copilot account's catalog cannot vouch for + // another's: the pool stays stale and retried until both answer. + let (answering, _) = copilot().await; + let failing = serve(Router::new()).await; + let gateway = Gateway::new(&[ + json!({"type":"copilot","access_token":"gho_one","base_url":answering.url}), + json!({"type":"copilot","access_token":"gho_two","base_url":failing.url}), + ]) + .await; + assert_eq!(gateway.state.stale_pools(), ["copilot"]); +} + #[tokio::test] async fn a_whole_provider_turns_off_in_one_call() { let server = serve(Router::new().route( From 4a07b0e531e8c3cd64bd56311b2326ae0be00c5b Mon Sep 17 00:00:00 2001 From: meetsu <96637888+klNuno@users.noreply.github.com> Date: Thu, 22 Oct 2026 22:30:48 +0200 Subject: [PATCH 4/4] test: run the websocket heartbeat test on real time with a short beat --- crates/douane/src/socket.rs | 12 ++++++--- crates/douane/src/state.rs | 4 +++ crates/douane/tests/transports.rs | 44 +++++++++---------------------- 3 files changed, 26 insertions(+), 34 deletions(-) diff --git a/crates/douane/src/socket.rs b/crates/douane/src/socket.rs index 8fe9cfd..90cb5c7 100644 --- a/crates/douane/src/socket.rs +++ b/crates/douane/src/socket.rs @@ -458,7 +458,13 @@ async fn run(mut downstream: WebSocket, state: Arc, headers: HeaderMap track_call(&mut calls, &state, &account, &initial, client.as_ref()); // Retain at most one request, and release its payload on the first forwarded event. let mut retry_request = Some(initial); - let mut heartbeat = tokio::time::interval(Duration::from_secs(25)); + let beat = Duration::from_millis( + state + .socket_heartbeat_ms + .load(std::sync::atomic::Ordering::Relaxed), + ); + let silence = beat * 18 / 5; + let mut heartbeat = tokio::time::interval(beat); heartbeat.set_missed_tick_behavior(tokio::time::MissedTickBehavior::Delay); heartbeat.tick().await; let mut last_upstream = tokio::time::Instant::now(); @@ -648,11 +654,11 @@ async fn run(mut downstream: WebSocket, state: Arc, headers: HeaderMap } } _ = heartbeat.tick() => { - if last_downstream.elapsed() > Duration::from_secs(90) { + if last_downstream.elapsed() > silence { close_for_recovery(&mut downstream).await; break; } - if last_upstream.elapsed() > Duration::from_secs(90) { + if last_upstream.elapsed() > silence { reject(&mut downstream, "upstream websocket heartbeat timed out").await; break; } diff --git a/crates/douane/src/state.rs b/crates/douane/src/state.rs index 94d9d1d..b6bb5b3 100644 --- a/crates/douane/src/state.rs +++ b/crates/douane/src/state.rs @@ -113,6 +113,9 @@ pub struct AppState { /// One catalog refresh at a time: each one starts from the rows the /// last one published. model_refresh: tokio::sync::Mutex<()>, + /// Milliseconds between native WebSocket pings; a peer silent for 3.6 + /// of them (90 s at the default 25 s) is dropped. Tests shorten it. + pub socket_heartbeat_ms: std::sync::atomic::AtomicU64, pub scheduler: Mutex, pub affinity: Mutex, pub(crate) antigravity_replay: Mutex, @@ -169,6 +172,7 @@ impl AppState { models: RwLock::new(vec![]), model_listings: Mutex::new(BTreeMap::new()), model_refresh: tokio::sync::Mutex::new(()), + socket_heartbeat_ms: std::sync::atomic::AtomicU64::new(25_000), scheduler: Mutex::new(Scheduler::default()), affinity: Mutex::new(crate::affinity::Affinity::default()), antigravity_replay: Mutex::new(crate::antigravity_replay::ReplayCache::default()), diff --git a/crates/douane/tests/transports.rs b/crates/douane/tests/transports.rs index 6afcf86..46e3f8e 100644 --- a/crates/douane/tests/transports.rs +++ b/crates/douane/tests/transports.rs @@ -1625,20 +1625,15 @@ async fn native_websocket_concurrent_lanes_fail_explicitly_without_replay() { assert_eq!(fixture.state.ledger.in_flight.load(Ordering::Relaxed), 0); } -async fn wall_barrier(mut ready: impl FnMut() -> bool) { - let started = std::time::Instant::now(); - while !ready() { - assert!( - started.elapsed() < WAIT, - "network barrier timed out with the Tokio clock paused" - ); - tokio::task::yield_now().await; - } -} - #[tokio::test] async fn native_websocket_heartbeat_expires_silent_downstream_with_healthy_upstream() { + // Real time on a short beat: a paused clock left the loopback sockets + // unpolled on Windows runners and timed the test out. let fixture = Fixture::new(&[("codex", "alpha")], Strategy::FillFirst).await; + fixture + .state + .socket_heartbeat_ms + .store(200, Ordering::Relaxed); let mut socket = fixture.socket("native-downstream-heartbeat").await; send( &mut socket, @@ -1646,24 +1641,6 @@ async fn native_websocket_heartbeat_expires_silent_downstream_with_healthy_upstr ) .await; assert_eq!(next(&mut socket).await["type"], "response.completed"); - tokio::time::pause(); - // Prevent auto-advance while real network I/O is pending. Barriers observe sent pongs. - let runnable = tokio::spawn(async { - loop { - tokio::task::yield_now().await; - } - }); - for tick in 1..=3 { - tokio::time::advance(Duration::from_secs(25)).await; - wall_barrier(|| fixture.mock.native_pings.load(Ordering::Relaxed) >= tick).await; - for _ in 0..100 { - tokio::task::yield_now().await; - } - } - tokio::time::advance(Duration::from_secs(25)).await; - wall_barrier(|| fixture.mock.closed.load(Ordering::Relaxed) == 1).await; - runnable.abort(); - tokio::time::resume(); let MaybeTlsStream::Plain(stream) = socket.get_mut() else { panic!("local fixture must use a plain socket"); }; @@ -1693,11 +1670,16 @@ async fn native_websocket_heartbeat_expires_silent_downstream_with_healthy_upstr }) .await .unwrap(); + fixture.closed(1).await; + assert!( + pings >= 2, + "the silent peer was dropped after {pings} pings" + ); assert_eq!( - pings, 3, + fixture.mock.native_pings.load(Ordering::Relaxed), + pings, "both peers must be pinged on the same heartbeat cadence" ); - assert_eq!(fixture.mock.native_pings.load(Ordering::Relaxed), 3); } #[tokio::test]