PageSourceSearch

https://onehop.ai/platform/assets/v0.49.3/index-KAwi3tPy.js

js onehop.ai collected 2026-10-05 12:22:46 UTC 3,579,441 bytes, 972 lines download raw bytes

vendor: 7,276 bytes, lines 1-18
1const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/v0.49.3/mermaid-GHXKKRXX-CGcEX0fW.js","assets/v0.49.3/mermaid-GHXKKRXX-_oI6jiaa.css"])))=>i.map(i=>d[i]);
2var Zte=Object.defineProperty;var bI=e=>{throw TypeError(e)};var Jte=(e,t,n)=>t in e?Zte(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var Bo=(e,t,n)=>Jte(e,typeof t!="symbol"?t+"":t,n),d1=(e,t,n)=>t.has(e)||bI("Cannot "+n);var J=(e,t,n)=>(d1(e,t,"read from private field"),n?n.call(e):t.get(e)),We=(e,t,n)=>t.has(e)?bI("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n),Le=(e,t,n,a)=>(d1(e,t,"write to private field"),a?a.call(e,n):t.set(e,n),n),pt=(e,t,n)=>(d1(e,t,"access private method"),n);var Yv=(e,t,n,a)=>({set _(s){Le(e,t,s,n)},get _(){return J(e,t,a)}});function ene(e,t){for(var n=0;n<t.length;n++){const a=t[n];if(typeof a!="string"&&!Array.isArray(a)){for(const s in a)if(s!=="default"&&!(s in e)){const r=Object.getOwnPropertyDescriptor(a,s);r&&Object.defineProperty(e,s,r.get?r:{enumerable:!0,get:()=>a[s]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))a(s);new MutationObserver(s=>{for(const r of s)if(r.type==="childList")for(const i of r.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&a(i)}).observe(document,{childList:!0,subtree:!0});function n(s){const r={};return s.integrity&&(r.integrity=s.integrity),s.referrerPolicy&&(r.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?r.credentials="include":s.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function a(s){if(s.ep)return;s.ep=!0;const r=n(s);fetch(s.href,r)}})();var xI=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function il(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var u1={exports:{}},Yf={};/**
3 * @license React
4 * react-jsx-runtime.production.js
5 *
6 * Copyright (c) Meta Platforms, Inc. and affiliates.
7 *
8 * This source code is licensed under the MIT license found in the
9 * LICENSE file in the root directory of this source tree.
10 */var $I;function tne(){if($I)return Yf;$I=1;var e=Symbol.for("react.transitional.element"),t=Symbol.for("react.fragment");function n(a,s,r){var i=null;if(r!==void 0&&(i=""+r),s.key!==void 0&&(i=""+s.key),"key"in s){r={};for(var c in s)c!=="key"&&(r[c]=s[c])}else r=s;return s=r.ref,{$$typeof:e,type:a,key:i,ref:s!==void 0?s:null,props:r}}return Yf.Fragment=t,Yf.jsx=n,Yf.jsxs=n,Yf}var wI;function nne(){return wI||(wI=1,u1.exports=tne()),u1.exports}var o=nne(),m1={exports:{}},lt={};/**
11 * @license React
12 * react.production.js
13 *
14 * Copyright (c) Meta Platforms, Inc. and affiliates.
15 *
16 * This source code is licensed under the MIT license found in the
17 * LICENSE file in the root directory of this source tree.
18 */var kI;function ane(){if(kI)return lt;kI=1;var e=Symbol.for("react.transitional.element"),t=Symbol.for("react.portal"),n=Symbol.for("react.fragment"),a=Symbol.for("react.strict_mode"),s=Symbol.for("react.profiler"),r=Symbol.for("react.consumer"),i=Symbol.for("react.context"),c=Symbol.for("react.forward_ref"),d=Symbol.for("react.suspense"),m=Symbol.for("react.memo"),f=Symbol.for("react.lazy"),p=Symbol.for("react.activity"),y=Symbol.iterator;function v(B){return B===null||typeof B!="object"?null:(B=y&&B[y]||B["@@iterator"],typeof B=="function"?B:null)}var $={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},x=Object.assign,w={};function S(B,G,Q){this.props=B,this.context=G,this.refs=w,this.updater=Q||$}S.prototype.isReactComponent={},S.prototype.setState=function(B,G){if(typeof B!="object"&&typeof B!="function"&&B!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,B,G,"setState")},S.prototype.forceUpdate=function(B){this.updater.enqueueForceUpdate(this,B,"forceUpdate")};function k(){}k.prototype=S.prototype;function T(B,G,Q){this.props=B,this.context=G,this.refs=w,this.updater=Q||$}var R=T.prototype=new k;R.constructor=T,x(R,S.prototype),R.isPureReactComponent=!0;var _=Array.isArray;function P(){}var j={H:null,A:null,T:null,S:null},N=Object.prototype.hasOwnProperty;function I(B,G,Q){var de=Q.ref;return{$$typeof:e,type:B,key:G,ref:de!==void 0?de:null,props:Q}}function z(B,G){return I(B.type,G,B.props)}function E(B){return typeof B=="object"&&B!==null&&B.$$typeof===e}function L(B){var G={"=":"=0",":":"=2"};return"$"+B.replace(/[=:]/g,function(Q){return G[Q]})}var O=/\/+/g;function V(B,G){return typeof B=="object"&&B!==null&&B.key!=null?L(""+B.key):G.toString(36)}function ne(B){switch(B.status){case"fulfilled":return B.value;case"rejected":throw B.reason;default:switch(typeof B.status=="string"?B.then(P,P):(B.status="pending",B.then(function(G){B.status==="pending"&&(B.status="fulfilled",B.value=G)},function(G){B.status==="pending"&&(B.status="rejected",B.reason=G)})),B.status){case"fulfilled":return B.value;case"rejected":throw B.reason}}throw B}function q(B,G,Q,de,Y){var pe=typeof B;(pe==="undefined"||pe==="boolean")&&(B=null);var se=!1;if(B===null)se=!0;else switch(pe){case"bigint":case"string":case"number":se=!0;break;case"object":switch(B.$$typeof){case e:case t:se=!0;break;case f:return se=B._init,q(se(B._payload),G,Q,de,Y)}}if(se)return Y=Y(B),se=de===""?"."+V(B,0):de,_(Y)?(Q="",se!=null&&(Q=se.replace(O,"$&/")+"/"),q(Y,G,Q,"",function(ye){return ye})):Y!=null&&(E(Y)&&(Y=z(Y,Q+(Y.key==null||B&&B.key===Y.key?"":(""+Y.key).replace(O,"$&/")+"/")+se)),G.push(Y)),1;se=0;var we=de===""?".":de+":";if(_(B))for(var me=0;me<B.length;me++)de=B[me],pe=we+V(de,me),se+=q(de,G,Q,pe,Y);else if(me=v(B),typeof me=="function")for(B=me.call(B),me=0;!(de=B.next()).done;)de=de.value,pe=we+V(de,me++),se+=q(de,G,Q,pe,Y);else if(pe==="object"){if(typeof B.then=="function")return q(ne(B),G,Q,de,Y);throw G=String(B),Error("Objects are not valid as a React child (found: "+(G==="[object Object]"?"object with keys {"+Object.keys(B).join(", ")+"}":G)+"). If you meant to render a collection of children, use an array instead.")}return se}function M(B,G,Q){if(B==null)return B;var de=[],Y=0;return q(B,de,"","",function(pe){return G.call(Q,pe,Y++)}),de}function F(B){if(B._status===-1){var G=B._result;G=G(),G.then(function(Q){(B._status===0||B._status===-1)&&(B._status=1,B._result=Q)},function(Q){(B._status===0||B._status===-1)&&(B._status=2,B._result=Q)}),B._status===-1&&(B._status=0,B._result=G)}if(B._status===1)return B._result.default;throw B._result}var H=typeof reportError=="function"?reportError:function(B){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var G=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof B=="object"&&B!==null&&typeof B.message=="string"?String(B.message):String(B),error:B});if(!window.dispatchEvent(G))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",B);return}console.error(B)}
vendor: 2,715 bytes, line 18
18,ee={map:M,forEach:function(B,G,Q){M(B,function(){G.apply(this,arguments)},Q)},count:function(B){var G=0;return M(B,function(){G++}),G},toArray:function(B){return M(B,function(G){return G})||[]},only:function(B){if(!E(B))throw Error("React.Children.only expected to receive a single React element child.");return B}};return lt.Activity=p,lt.Children=ee,lt.Component=S,lt.Fragment=n,lt.Profiler=s,lt.PureComponent=T,lt.StrictMode=a,lt.Suspense=d,lt.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=j,lt.__COMPILER_RUNTIME={__proto__:null,c:function(B){return j.H.useMemoCache(B)}},lt.cache=function(B){return function(){return B.apply(null,arguments)}},lt.cacheSignal=function(){return null},lt.cloneElement=function(B,G,Q){if(B==null)throw Error("The argument must be a React element, but you passed "+B+".");var de=x({},B.props),Y=B.key;if(G!=null)for(pe in G.key!==void 0&&(Y=""+G.key),G)!N.call(G,pe)||pe==="key"||pe==="__self"||pe==="__source"||pe==="ref"&&G.ref===void 0||(de[pe]=G[pe]);var pe=arguments.length-2;if(pe===1)de.children=Q;else if(1<pe){for(var se=Array(pe),we=0;we<pe;we++)se[we]=arguments[we+2];de.children=se}return I(B.type,Y,de)},lt.createContext=function(B){return B={$$typeof:i,_currentValue:B,_currentValue2:B,_threadCount:0,Provider:null,Consumer:null},B.Provider=B,B.Consumer={$$typeof:r,_context:B},B},lt.createElement=function(B,G,Q){var de,Y={},pe=null;if(G!=null)for(de in G.key!==void 0&&(pe=""+G.key),G)N.call(G,de)&&de!=="key"&&de!=="__self"&&de!=="__source"&&(Y[de]=G[de]);var se=arguments.length-2;if(se===1)Y.children=Q;else if(1<se){for(var we=Array(se),me=0;me<se;me++)we[me]=arguments[me+2];Y.children=we}if(B&&B.defaultProps)for(de in se=B.defaultProps,se)Y[de]===void 0&&(Y[de]=se[de]);return I(B,pe,Y)},lt.createRef=function(){return{current:null}},lt.forwardRef=function(B){return{$$typeof:c,render:B}},lt.isValidElement=E,lt.lazy=function(B){return{$$typeof:f,_payload:{_status:-1,_result:B},_init:F}},lt.memo=function(B,G){return{$$typeof:m,type:B,compare:G===void 0?null:G}},lt.startTransition=function(B){var G=j.T,Q={};j.T=Q;try{var de=B(),Y=j.S;Y!==null&&Y(Q,de),typeof de=="object"&&de!==null&&typeof de.then=="function"&&de.then(P,H)}catch(pe){H(pe)}finally{G!==null&&Q.types!==null&&(G.types=Q.types),j.T=G}},lt.unstable_useCacheRefresh=function(){return j.H.useCacheRefresh()},lt.use=function(B){return j.H.use(B)},lt.useActionState=function(B,G,Q){return j.H.useActionState(B,G,Q)},lt.useCallback=function(B,G){return j.H.useCallback(B,G)},lt.useContext=function(B){return j.H.useContext(B)},lt.useDebugValue=function(){},lt.useDeferredValue=function(B,G){return j.H.useDeferredValue(B,G)},lt.useEffect=function(B,G){return j.H.useEffect(B,G)}
vendor: 6,201 bytes, lines 18-34
18,lt.useEffectEvent=function(B){return j.H.useEffectEvent(B)},lt.useId=function(){return j.H.useId()},lt.useImperativeHandle=function(B,G,Q){return j.H.useImperativeHandle(B,G,Q)},lt.useInsertionEffect=function(B,G){return j.H.useInsertionEffect(B,G)},lt.useLayoutEffect=function(B,G){return j.H.useLayoutEffect(B,G)},lt.useMemo=function(B,G){return j.H.useMemo(B,G)},lt.useOptimistic=function(B,G){return j.H.useOptimistic(B,G)},lt.useReducer=function(B,G,Q){return j.H.useReducer(B,G,Q)},lt.useRef=function(B){return j.H.useRef(B)},lt.useState=function(B){return j.H.useState(B)},lt.useSyncExternalStore=function(B,G,Q){return j.H.useSyncExternalStore(B,G,Q)},lt.useTransition=function(){return j.H.useTransition()},lt.version="19.2.6",lt}var CI;function jp(){return CI||(CI=1,m1.exports=ane()),m1.exports}var h=jp();const Se=il(h),Lh=ene({__proto__:null,default:Se},[h]);var p1={exports:{}},Qf={},f1={exports:{}},g1={};/**
19 * @license React
20 * scheduler.production.js
21 *
22 * Copyright (c) Meta Platforms, Inc. and affiliates.
23 *
24 * This source code is licensed under the MIT license found in the
25 * LICENSE file in the root directory of this source tree.
26 */var SI;function one(){return SI||(SI=1,(function(e){function t(q,M){var F=q.length;q.push(M);e:for(;0<F;){var H=F-1>>>1,ee=q[H];if(0<s(ee,M))q[H]=M,q[F]=ee,F=H;else break e}}function n(q){return q.length===0?null:q[0]}function a(q){if(q.length===0)return null;var M=q[0],F=q.pop();if(F!==M){q[0]=F;e:for(var H=0,ee=q.length,B=ee>>>1;H<B;){var G=2*(H+1)-1,Q=q[G],de=G+1,Y=q[de];if(0>s(Q,F))de<ee&&0>s(Y,Q)?(q[H]=Y,q[de]=F,H=de):(q[H]=Q,q[G]=F,H=G);else if(de<ee&&0>s(Y,F))q[H]=Y,q[de]=F,H=de;else break e}}return M}function s(q,M){var F=q.sortIndex-M.sortIndex;return F!==0?F:q.id-M.id}if(e.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var r=performance;e.unstable_now=function(){return r.now()}}else{var i=Date,c=i.now();e.unstable_now=function(){return i.now()-c}}var d=[],m=[],f=1,p=null,y=3,v=!1,$=!1,x=!1,w=!1,S=typeof setTimeout=="function"?setTimeout:null,k=typeof clearTimeout=="function"?clearTimeout:null,T=typeof setImmediate<"u"?setImmediate:null;function R(q){for(var M=n(m);M!==null;){if(M.callback===null)a(m);else if(M.startTime<=q)a(m),M.sortIndex=M.expirationTime,t(d,M);else break;M=n(m)}}function _(q){if(x=!1,R(q),!$)if(n(d)!==null)$=!0,P||(P=!0,L());else{var M=n(m);M!==null&&ne(_,M.startTime-q)}}var P=!1,j=-1,N=5,I=-1;function z(){return w?!0:!(e.unstable_now()-I<N)}function E(){if(w=!1,P){var q=e.unstable_now();I=q;var M=!0;try{e:{$=!1,x&&(x=!1,k(j),j=-1),v=!0;var F=y;try{t:{for(R(q),p=n(d);p!==null&&!(p.expirationTime>q&&z());){var H=p.callback;if(typeof H=="function"){p.callback=null,y=p.priorityLevel;var ee=H(p.expirationTime<=q);if(q=e.unstable_now(),typeof ee=="function"){p.callback=ee,R(q),M=!0;break t}p===n(d)&&a(d),R(q)}else a(d);p=n(d)}if(p!==null)M=!0;else{var B=n(m);B!==null&&ne(_,B.startTime-q),M=!1}}break e}finally{p=null,y=F,v=!1}M=void 0}}finally{M?L():P=!1}}}var L;if(typeof T=="function")L=function(){T(E)};else if(typeof MessageChannel<"u"){var O=new MessageChannel,V=O.port2;O.port1.onmessage=E,L=function(){V.postMessage(null)}}else L=function(){S(E,0)};function ne(q,M){j=S(function(){q(e.unstable_now())},M)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(q){q.callback=null},e.unstable_forceFrameRate=function(q){0>q||125<q?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):N=0<q?Math.floor(1e3/q):5},e.unstable_getCurrentPriorityLevel=function(){return y},e.unstable_next=function(q){switch(y){case 1:case 2:case 3:var M=3;break;default:M=y}var F=y;y=M;try{return q()}finally{y=F}},e.unstable_requestPaint=function(){w=!0},e.unstable_runWithPriority=function(q,M){switch(q){case 1:case 2:case 3:case 4:case 5:break;default:q=3}var F=y;y=q;try{return M()}finally{y=F}},e.unstable_scheduleCallback=function(q,M,F){var H=e.unstable_now();switch(typeof F=="object"&&F!==null?(F=F.delay,F=typeof F=="number"&&0<F?H+F:H):F=H,q){case 1:var ee=-1;break;case 2:ee=250;break;case 5:ee=1073741823;break;case 4:ee=1e4;break;default:ee=5e3}return ee=F+ee,q={id:f++,callback:M,priorityLevel:q,startTime:F,expirationTime:ee,sortIndex:-1},F>H?(q.sortIndex=F,t(m,q),n(d)===null&&q===n(m)&&(x?(k(j),j=-1):x=!0,ne(_,F-H))):(q.sortIndex=ee,t(d,q),$||v||($=!0,P||(P=!0,L()))),q},e.unstable_shouldYield=z,e.unstable_wrapCallback=function(q){var M=y;return function(){var F=y;y=M;try{return q.apply(this,arguments)}finally{y=F}}}})(g1)),g1}var AI;function sne(){return AI||(AI=1,f1.exports=one()),f1.exports}var h1={exports:{}},ja={};/**
27 * @license React
28 * react-dom.production.js
29 *
30 * Copyright (c) Meta Platforms, Inc. and affiliates.
31 *
32 * This source code is licensed under the MIT license found in the
33 * LICENSE file in the root directory of this source tree.
34 */var TI;function rne(){if(TI)return ja;TI=1;var e=jp();function t(d){var m="https://react.dev/errors/"+d;if(1<arguments.length){m+="?args[]="+encodeURIComponent(arguments[1]);for(var f=2;f<arguments.length;f++)m+="&args[]="+encodeURIComponent(arguments[f])}return"Minified React error #"+d+"; visit "+m+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function n(){}var a={d:{f:n,r:function(){throw Error(t(522))},D:n,C:n,L:n,m:n,X:n,S:n,M:n},p:0,findDOMNode:null},s=Symbol.for("react.portal");function r(d,m,f){var p=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:s,key:p==null?null:""+p,children:d,containerInfo:m,implementation:f}}var i=e.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function c(d,m){if(d==="font")return"";if(typeof m=="string")return m==="use-credentials"?m:""}return ja.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=a,ja.createPortal=function(d,m){var f=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!m||m.nodeType!==1&&m.nodeType!==9&&m.nodeType!==11)throw Error(t(299));return r(d,m,null,f)}
vendor: 7,651 bytes, lines 34-44
34,ja.flushSync=function(d){var m=i.T,f=a.p;try{if(i.T=null,a.p=2,d)return d()}finally{i.T=m,a.p=f,a.d.f()}},ja.preconnect=function(d,m){typeof d=="string"&&(m?(m=m.crossOrigin,m=typeof m=="string"?m==="use-credentials"?m:"":void 0):m=null,a.d.C(d,m))},ja.prefetchDNS=function(d){typeof d=="string"&&a.d.D(d)},ja.preinit=function(d,m){if(typeof d=="string"&&m&&typeof m.as=="string"){var f=m.as,p=c(f,m.crossOrigin),y=typeof m.integrity=="string"?m.integrity:void 0,v=typeof m.fetchPriority=="string"?m.fetchPriority:void 0;f==="style"?a.d.S(d,typeof m.precedence=="string"?m.precedence:void 0,{crossOrigin:p,integrity:y,fetchPriority:v}):f==="script"&&a.d.X(d,{crossOrigin:p,integrity:y,fetchPriority:v,nonce:typeof m.nonce=="string"?m.nonce:void 0})}},ja.preinitModule=function(d,m){if(typeof d=="string")if(typeof m=="object"&&m!==null){if(m.as==null||m.as==="script"){var f=c(m.as,m.crossOrigin);a.d.M(d,{crossOrigin:f,integrity:typeof m.integrity=="string"?m.integrity:void 0,nonce:typeof m.nonce=="string"?m.nonce:void 0})}}else m==null&&a.d.M(d)},ja.preload=function(d,m){if(typeof d=="string"&&typeof m=="object"&&m!==null&&typeof m.as=="string"){var f=m.as,p=c(f,m.crossOrigin);a.d.L(d,f,{crossOrigin:p,integrity:typeof m.integrity=="string"?m.integrity:void 0,nonce:typeof m.nonce=="string"?m.nonce:void 0,type:typeof m.type=="string"?m.type:void 0,fetchPriority:typeof m.fetchPriority=="string"?m.fetchPriority:void 0,referrerPolicy:typeof m.referrerPolicy=="string"?m.referrerPolicy:void 0,imageSrcSet:typeof m.imageSrcSet=="string"?m.imageSrcSet:void 0,imageSizes:typeof m.imageSizes=="string"?m.imageSizes:void 0,media:typeof m.media=="string"?m.media:void 0})}},ja.preloadModule=function(d,m){if(typeof d=="string")if(m){var f=c(m.as,m.crossOrigin);a.d.m(d,{as:typeof m.as=="string"&&m.as!=="script"?m.as:void 0,crossOrigin:f,integrity:typeof m.integrity=="string"?m.integrity:void 0})}else a.d.m(d)},ja.requestFormReset=function(d){a.d.r(d)},ja.unstable_batchedUpdates=function(d,m){return d(m)},ja.useFormState=function(d,m,f){return i.H.useFormState(d,m,f)},ja.useFormStatus=function(){return i.H.useHostTransitionStatus()},ja.version="19.2.6",ja}var RI;function q8(){if(RI)return h1.exports;RI=1;function e(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}return e(),h1.exports=rne(),h1.exports}/**
35 * @license React
36 * react-dom-client.production.js
37 *
38 * Copyright (c) Meta Platforms, Inc. and affiliates.
39 *
40 * This source code is licensed under the MIT license found in the
41 * LICENSE file in the root directory of this source tree.
42 */var PI;function ine(){if(PI)return Qf;PI=1;var e=sne(),t=jp(),n=q8();function a(l){var u="https://react.dev/errors/"+l;if(1<arguments.length){u+="?args[]="+encodeURIComponent(arguments[1]);for(var g=2;g<arguments.length;g++)u+="&args[]="+encodeURIComponent(arguments[g])}return"Minified React error #"+l+"; visit "+u+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function s(l){return!(!l||l.nodeType!==1&&l.nodeType!==9&&l.nodeType!==11)}function r(l){var u=l,g=l;if(l.alternate)for(;u.return;)u=u.return;else{l=u;do u=l,(u.flags&4098)!==0&&(g=u.return),l=u.return;while(l)}return u.tag===3?g:null}function i(l){if(l.tag===13){var u=l.memoizedState;if(u===null&&(l=l.alternate,l!==null&&(u=l.memoizedState)),u!==null)return u.dehydrated}return null}function c(l){if(l.tag===31){var u=l.memoizedState;if(u===null&&(l=l.alternate,l!==null&&(u=l.memoizedState)),u!==null)return u.dehydrated}return null}function d(l){if(r(l)!==l)throw Error(a(188))}function m(l){var u=l.alternate;if(!u){if(u=r(l),u===null)throw Error(a(188));return u!==l?null:l}for(var g=l,b=u;;){var C=g.return;if(C===null)break;var A=C.alternate;if(A===null){if(b=C.return,b!==null){g=b;continue}break}if(C.child===A.child){for(A=C.child;A;){if(A===g)return d(C),l;if(A===b)return d(C),u;A=A.sibling}throw Error(a(188))}if(g.return!==b.return)g=C,b=A;else{for(var D=!1,U=C.child;U;){if(U===g){D=!0,g=C,b=A;break}if(U===b){D=!0,b=C,g=A;break}U=U.sibling}if(!D){for(U=A.child;U;){if(U===g){D=!0,g=A,b=C;break}if(U===b){D=!0,b=A,g=C;break}U=U.sibling}if(!D)throw Error(a(189))}}if(g.alternate!==b)throw Error(a(190))}if(g.tag!==3)throw Error(a(188));return g.stateNode.current===g?l:u}function f(l){var u=l.tag;if(u===5||u===26||u===27||u===6)return l;for(l=l.child;l!==null;){if(u=f(l),u!==null)return u;l=l.sibling}return null}var p=Object.assign,y=Symbol.for("react.element"),v=Symbol.for("react.transitional.element"),$=Symbol.for("react.portal"),x=Symbol.for("react.fragment"),w=Symbol.for("react.strict_mode"),S=Symbol.for("react.profiler"),k=Symbol.for("react.consumer"),T=Symbol.for("react.context"),R=Symbol.for("react.forward_ref"),_=Symbol.for("react.suspense"),P=Symbol.for("react.suspense_list"),j=Symbol.for("react.memo"),N=Symbol.for("react.lazy"),I=Symbol.for("react.activity"),z=Symbol.for("react.memo_cache_sentinel"),E=Symbol.iterator;function L(l){return l===null||typeof l!="object"?null:(l=E&&l[E]||l["@@iterator"],typeof l=="function"?l:null)}var O=Symbol.for("react.client.reference");function V(l){if(l==null)return null;if(typeof l=="function")return l.$$typeof===O?null:l.displayName||l.name||null;if(typeof l=="string")return l;switch(l){case x:return"Fragment";case S:return"Profiler";case w:return"StrictMode";case _:return"Suspense";case P:return"SuspenseList";case I:return"Activity"}if(typeof l=="object")switch(l.$$typeof){case $:return"Portal";case T:return l.displayName||"Context";case k:return(l._context.displayName||"Context")+".Consumer";case R:var u=l.render;return l=l.displayName,l||(l=u.displayName||u.name||"",l=l!==""?"ForwardRef("+l+")":"ForwardRef"),l;case j:return u=l.displayName||null,u!==null?u:V(l.type)||"Memo";case N:u=l._payload,l=l._init;try{return V(l(u))}catch{}}return null}var ne=Array.isArray,q=t.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,M=n.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,F={pending:!1,data:null,method:null,action:null},H=[],ee=-1;function B(l){return{current:l}}function G(l){0>ee||(l.current=H[ee],H[ee]=null,ee--)}function Q(l,u){ee++,H[ee]=l.current,l.current=u}var de=B(null),Y=B(null),pe=B(null),se=B(null);function we(l,u){switch(Q(pe,u),Q(Y,l),Q(de,null),u.nodeType){case 9:case 11:l=(l=u.documentElement)&&(l=l.namespaceURI)?zE(l):0;break;default:if(l=u.tagName,u=u.namespaceURI)u=zE(u),l=qE(u,l);else switch(l){case"svg":l=1;break;case"math":l=2;break;default:l=0}}G(de),Q(de,l)}function me(){G(de),G(Y),G(pe)}function ye(l){l.memoizedState!==null&&Q(se,l);var u=de.current,g=qE(u,l.type);u!==g&&(Q(Y,l),Q(de,g))}function _e(l){Y.current===l&&(G(de),G(Y)),se.current===l&&(G(se),Vf._currentValue=F)}var ae,Je;function Ae(l){if(ae===void 0)try{throw Error()}catch(g){var u=g.stack.trim().match(/\n( *(at )?)/);ae=u&&u[1]||"",Je=-1<g.stack.indexOf(`
43    at`)?" (<anonymous>)":-1<g.stack.indexOf("@")?"@unknown:0:0":""}return`
44`+ae+l+Je}var tt=!1;function Tt(l,u){if(!l||tt)return"";tt=!0;var g=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var b={DetermineComponentFrameRoot:function(){try{if(u){var $e=function(){throw Error()};if(Object.defineProperty($e.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct($e,[])}catch(he){var ue=he}Reflect.construct(l,[],$e)}else{try{$e.call()}catch(he){ue=he}l.call($e.prototype)}}else{try{throw Error()}catch(he){ue=he}($e=l())&&typeof $e.catch=="function"&&$e.catch(function(){})}}
vendor: 10,882 bytes, lines 44-49
44catch(he){if(he&&ue&&typeof he.stack=="string")return[he.stack,ue.stack]}return[null,null]}};b.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var C=Object.getOwnPropertyDescriptor(b.DetermineComponentFrameRoot,"name");C&&C.configurable&&Object.defineProperty(b.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var A=b.DetermineComponentFrameRoot(),D=A[0],U=A[1];if(D&&U){var Z=D.split(`
45`),le=U.split(`
46`);for(C=b=0;b<Z.length&&!Z[b].includes("DetermineComponentFrameRoot");)b++;for(;C<le.length&&!le[C].includes("DetermineComponentFrameRoot");)C++;if(b===Z.length||C===le.length)for(b=Z.length-1,C=le.length-1;1<=b&&0<=C&&Z[b]!==le[C];)C--;for(;1<=b&&0<=C;b--,C--)if(Z[b]!==le[C]){if(b!==1||C!==1)do if(b--,C--,0>C||Z[b]!==le[C]){var be=`
47`+Z[b].replace(" at new "," at ");return l.displayName&&be.includes("<anonymous>")&&(be=be.replace("<anonymous>",l.displayName)),be}while(1<=b&&0<=C);break}}}finally{tt=!1,Error.prepareStackTrace=g}return(g=l?l.displayName||l.name:"")?Ae(g):""}function an(l,u){switch(l.tag){case 26:case 27:case 5:return Ae(l.type);case 16:return Ae("Lazy");case 13:return l.child!==u&&u!==null?Ae("Suspense Fallback"):Ae("Suspense");case 19:return Ae("SuspenseList");case 0:case 15:return Tt(l.type,!1);case 11:return Tt(l.type.render,!1);case 1:return Tt(l.type,!0);case 31:return Ae("Activity");default:return""}}function ta(l){try{var u="",g=null;do u+=an(l,g),g=l,l=l.return;while(l);return u}catch(b){return`
48Error generating stack: `+b.message+`
49`+b.stack}}var lo=Object.prototype.hasOwnProperty,qs=e.unstable_scheduleCallback,yt=e.unstable_cancelCallback,fe=e.unstable_shouldYield,Ne=e.unstable_requestPaint,rt=e.unstable_now,na=e.unstable_getCurrentPriorityLevel,cn=e.unstable_ImmediatePriority,vn=e.unstable_UserBlockingPriority,ds=e.unstable_NormalPriority,Vc=e.unstable_LowPriority,Kc=e.unstable_IdlePriority,Q0=e.log,Ey=e.unstable_setDisableYieldValue,hi=null,Mn=null;function Hs(l){if(typeof Q0=="function"&&Ey(l),Mn&&typeof Mn.setStrictMode=="function")try{Mn.setStrictMode(hi,l)}catch{}}var En=Math.clz32?Math.clz32:Iy,X0=Math.log,Z0=Math.LN2;function Iy(l){return l>>>=0,l===0?32:31-(X0(l)/Z0|0)|0}var Gc=256,_u=262144,vl=4194304;function _a(l){var u=l&42;if(u!==0)return u;switch(l&-l){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return l&261888;case 262144:case 524288:case 1048576:case 2097152:return l&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return l&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return l}}function ju(l,u,g){var b=l.pendingLanes;if(b===0)return 0;var C=0,A=l.suspendedLanes,D=l.pingedLanes;l=l.warmLanes;var U=b&134217727;return U!==0?(b=U&~A,b!==0?C=_a(b):(D&=U,D!==0?C=_a(D):g||(g=U&~l,g!==0&&(C=_a(g))))):(U=b&~A,U!==0?C=_a(U):D!==0?C=_a(D):g||(g=b&~l,g!==0&&(C=_a(g)))),C===0?0:u!==0&&u!==C&&(u&A)===0&&(A=C&-C,g=u&-u,A>=g||A===32&&(g&4194048)!==0)?u:C}function nt(l,u){return(l.pendingLanes&~(l.suspendedLanes&~l.pingedLanes)&u)===0}function Et(l,u){switch(l){case 1:case 2:case 4:case 8:case 64:return u+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return u+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function Jt(){var l=vl;return vl<<=1,(vl&62914560)===0&&(vl=4194304),l}function Wa(l){for(var u=[],g=0;31>g;g++)u.push(l);return u}function ha(l,u){l.pendingLanes|=u,u!==268435456&&(l.suspendedLanes=0,l.pingedLanes=0,l.warmLanes=0)}function Rr(l,u,g,b,C,A){var D=l.pendingLanes;l.pendingLanes=g,l.suspendedLanes=0,l.pingedLanes=0,l.warmLanes=0,l.expiredLanes&=g,l.entangledLanes&=g,l.errorRecoveryDisabledLanes&=g,l.shellSuspendCounter=0;var U=l.entanglements,Z=l.expirationTimes,le=l.hiddenUpdates;for(g=D&~g;0<g;){var be=31-En(g),$e=1<<be;U[be]=0,Z[be]=-1;var ue=le[be];if(ue!==null)for(le[be]=null,be=0;be<ue.length;be++){var he=ue[be];he!==null&&(he.lane&=-536870913)}g&=~$e}b!==0&&Pr(l,b,0),A!==0&&C===0&&l.tag!==0&&(l.suspendedLanes|=A&~(D&~u))}function Pr(l,u,g){l.pendingLanes|=u,l.suspendedLanes&=~u;var b=31-En(u);l.entangledLanes|=u,l.entanglements[b]=l.entanglements[b]|1073741824|g&261930}function co(l,u){var g=l.entangledLanes|=u;for(l=l.entanglements;g;){var b=31-En(g),C=1<<b;C&u|l[b]&u&&(l[b]|=u),g&=~C}}function Vs(l,u){var g=u&-u;return g=(g&42)!==0?1:J0(g),(g&(l.suspendedLanes|u))!==0?0:g}function J0(l){switch(l){case 2:l=1;break;case 8:l=4;break;case 32:l=16;break;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:l=128;break;case 268435456:l=134217728;break;default:l=0}return l}function ek(l){return l&=-l,2<l?8<l?(l&134217727)!==0?32:268435456:8:2}function TN(){var l=M.p;return l!==0?l:(l=window.event,l===void 0?32:mI(l.type))}function RN(l,u){var g=M.p;try{return M.p=l,u()}finally{M.p=g}}var bl=Math.random().toString(36).slice(2),ya="__reactFiber$"+bl,uo="__reactProps$"+bl,Nu="__reactContainer$"+bl,tk="__reactEvents$"+bl,FJ="__reactListeners$"+bl,zJ="__reactHandles$"+bl,PN="__reactResources$"+bl,sf="__reactMarker$"+bl;function nk(l){delete l[ya],delete l[uo],delete l[tk],delete l[FJ],delete l[zJ]}function Du(l){var u=l[ya];if(u)return u;for(var g=l.parentNode;g;){if(u=g[Nu]||g[ya]){if(g=u.alternate,u.child!==null||g!==null&&g.child!==null)for(l=QE(l);l!==null;){if(g=l[ya])return g;l=QE(l)}return u}l=g,g=l.parentNode}return null}function Mu(l){if(l=l[ya]||l[Nu]){var u=l.tag;if(u===5||u===6||u===13||u===31||u===26||u===27||u===3)return l}return null}function rf(l){var u=l.tag;if(u===5||u===26||u===27||u===6)return l.stateNode;throw Error(a(33))}function Eu(l){var u=l[PN];return u||(u=l[PN]={hoistableStyles:new Map,hoistableScripts:new Map}),u}function aa(l){l[sf]=!0}var _N=new Set,jN={};function Wc(l,u){Iu(l,u),Iu(l+"Capture",u)}function Iu(l,u){for(jN[l]=u,l=0;l<u.length;l++)_N.add(u[l])}var qJ=RegExp("^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$"),NN={},DN={};function HJ(l){return lo.call(DN,l)?!0:lo.call(NN,l)?!1:qJ.test(l)?DN[l]=!0:(NN[l]=!0,!1)}function Oy(l,u,g){if(HJ(u))if(g===null)l.removeAttribute(u);else{switch(typeof g){case"undefined":case"function":case"symbol":l.removeAttribute(u);return;case"boolean":var b=u.toLowerCase().slice(0,5);if(b!=="data-"&&b!=="aria-"){l.removeAttribute(u);return}}l.setAttribute(u,""+g)}}function Ly(l,u,g){if(g===null)l.removeAttribute(u);else{switch(typeof g){case"undefined":case"function":case"symbol":case"boolean":l.removeAttribute(u);return}l.setAttribute(u,""+g)}}function yi(l,u,g,b){if(b===null)l.removeAttribute(g);else{switch(typeof b){case"undefined":case"function":case"symbol":case"boolean":l.removeAttribute(g);return}l.setAttributeNS(u,g,""+b)}}function us(l){switch(typeof l){case"bigint":case"boolean":case"number":case"string":case"undefined":return l;case"object":return l;default:return""}}function MN(l){var u=l.type;return(l=l.nodeName)&&l.toLowerCase()==="input"&&(u==="checkbox"||u==="radio")}function VJ(l,u,g){var b=Object.getOwnPropertyDescriptor(l.constructor.prototype,u);if(!l.hasOwnProperty(u)&&typeof b<"u"&&typeof b.get=="function"&&typeof b.set=="function"){var C=b.get,A=b.set;return Object.defineProperty(l,u,{configurable:!0,get:function(){return C.call(this)},set:function(D){g=""+D,A.call(this,D)}}),Object.defineProperty(l,u,{enumerable:b.enumerable}),{getValue:function(){return g},setValue:function(D){g=""+D},stopTracking:function(){l._valueTracker=null,delete l[u]}}}}function ak(l){if(!l._valueTracker){var u=MN(l)?"checked":"value";l._valueTracker=VJ(l,u,""+l[u])}}function EN(l){if(!l)return!1;var u=l._valueTracker;if(!u)return!0;var g=u.getValue(),b="";return l&&(b=MN(l)?l.checked?"true":"false":l.value),l=b,l!==g?(u.setValue(l),!0):!1}function Uy(l){if(l=l||(typeof document<"u"?document:void 0),typeof l>"u")return null;try{return l.activeElement||l.body}catch{return l.body}}var KJ=/[\n"\\]/g;function ms(l){return l.replace(KJ,function(u){return"\\"+u.charCodeAt(0).toString(16)+" "})}function ok(l,u,g,b,C,A,D,U){l.name="",D!=null&&typeof D!="function"&&typeof D!="symbol"&&typeof D!="boolean"?l.type=D:l.removeAttribute("type"),u!=null?D==="number"?(u===0&&l.value===""||l.value!=u)&&(l.value=""+us(u)):l.value!==""+us(u)&&(l.value=""+us(u)):D!=="submit"&&D!=="reset"||l.removeAttribute("value"),u!=null?sk(l,D,us(u)):g!=null?sk(l,D,us(g)):b!=null&&l.removeAttribute("value"),C==null&&A!=null&&(l.defaultChecked=!!A),C!=null&&(l.checked=C&&typeof C!="function"&&typeof C!="symbol"),U!=null&&typeof U!="function"&&typeof U!="symbol"&&typeof U!="boolean"?l.name=""+us(U):l.removeAttribute("name")}function IN(l,u,g,b,C,A,D,U){if(A!=null&&typeof A!="function"&&typeof A!="symbol"&&typeof A!="boolean"&&(l.type=A),u!=null||g!=null){if(!(A!=="submit"&&A!=="reset"||u!=null)){ak(l);return}g=g!=null?""+us(g):"",u=u!=null?""+us(u):g,U||u===l.value||(l.value=u),l.defaultValue=u}b=b??C,b=typeof b!="function"&&typeof b!="symbol"&&!!b,l.checked=U?l.checked:!!b,l.defaultChecked=!!b,D!=null&&typeof D!="function"&&typeof D!="symbol"&&typeof D!="boolean"&&(l.name=D),ak(l)}function sk(l,u,g){u==="number"&&Uy(l.ownerDocument)===l||l.defaultValue===""+g||(l.defaultValue=""+g)}function Ou(l,u,g,b){if(l=l.options,u){u={};for(var C=0;C<g.length;C++)u["$"+g[C]]=!0;for(g=0;g<l.length;g++)C=u.hasOwnProperty("$"+l[g].value),l[g].selected!==C&&(l[g].selected=C),C&&b&&(l[g].defaultSelected=!0)}else{for(g=""+us(g),u=null,C=0;C<l.length;C++){if(l[C].value===g){l[C].selected=!0,b&&(l[C].defaultSelected=!0);return}u!==null||l[C].disabled||(u=l[C])}u!==null&&(u.selected=!0)}}function ON(l,u,g){if(u!=null&&(u=""+us(u),u!==l.value&&(l.value=u),g==null)){l.defaultValue!==u&&(l.defaultValue=u);return}l.defaultValue=g!=null?""+us(g):""}function LN(l,u,g,b){if(u==null){if(b!=null){if(g!=null)throw Error(a(92));if(ne(b)){if(1<b.length)throw Error(a(93));b=b[0]}g=b}g==null&&(g=""),u=g}g=us(u),l.defaultValue=g,b=l.textContent,b===g&&b!==""&&b!==null&&(l.value=b),ak(l)}function Lu(l,u){if(u){var g=l.firstChild;
vendor: 4,140 bytes, line 49
49if(g&&g===l.lastChild&&g.nodeType===3){g.nodeValue=u;return}}l.textContent=u}var GJ=new Set("animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative flexOrder gridArea gridRow gridRowEnd gridRowSpan gridRowStart gridColumn gridColumnEnd gridColumnSpan gridColumnStart fontWeight lineClamp lineHeight opacity order orphans scale tabSize widows zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex MozBoxFlexGroup MozLineClamp msAnimationIterationCount msFlex msZoom msFlexGrow msFlexNegative msFlexOrder msFlexPositive msFlexShrink msGridColumn msGridColumnSpan msGridRow msGridRowSpan WebkitAnimationIterationCount WebkitBoxFlex WebKitBoxFlexGroup WebkitBoxOrdinalGroup WebkitColumnCount WebkitColumns WebkitFlex WebkitFlexGrow WebkitFlexPositive WebkitFlexShrink WebkitLineClamp".split(" "));function UN(l,u,g){var b=u.indexOf("--")===0;g==null||typeof g=="boolean"||g===""?b?l.setProperty(u,""):u==="float"?l.cssFloat="":l[u]="":b?l.setProperty(u,g):typeof g!="number"||g===0||GJ.has(u)?u==="float"?l.cssFloat=g:l[u]=(""+g).trim():l[u]=g+"px"}function BN(l,u,g){if(u!=null&&typeof u!="object")throw Error(a(62));if(l=l.style,g!=null){for(var b in g)!g.hasOwnProperty(b)||u!=null&&u.hasOwnProperty(b)||(b.indexOf("--")===0?l.setProperty(b,""):b==="float"?l.cssFloat="":l[b]="");for(var C in u)b=u[C],u.hasOwnProperty(C)&&g[C]!==b&&UN(l,C,b)}else for(var A in u)u.hasOwnProperty(A)&&UN(l,A,u[A])}function rk(l){if(l.indexOf("-")===-1)return!1;switch(l){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var WJ=new Map([["acceptCharset","accept-charset"],["htmlFor","for"],["httpEquiv","http-equiv"],["crossOrigin","crossorigin"],["accentHeight","accent-height"],["alignmentBaseline","alignment-baseline"],["arabicForm","arabic-form"],["baselineShift","baseline-shift"],["capHeight","cap-height"],["clipPath","clip-path"],["clipRule","clip-rule"],["colorInterpolation","color-interpolation"],["colorInterpolationFilters","color-interpolation-filters"],["colorProfile","color-profile"],["colorRendering","color-rendering"],["dominantBaseline","dominant-baseline"],["enableBackground","enable-background"],["fillOpacity","fill-opacity"],["fillRule","fill-rule"],["floodColor","flood-color"],["floodOpacity","flood-opacity"],["fontFamily","font-family"],["fontSize","font-size"],["fontSizeAdjust","font-size-adjust"],["fontStretch","font-stretch"],["fontStyle","font-style"],["fontVariant","font-variant"],["fontWeight","font-weight"],["glyphName","glyph-name"],["glyphOrientationHorizontal","glyph-orientation-horizontal"],["glyphOrientationVertical","glyph-orientation-vertical"],["horizAdvX","horiz-adv-x"],["horizOriginX","horiz-origin-x"],["imageRendering","image-rendering"],["letterSpacing","letter-spacing"],["lightingColor","lighting-color"],["markerEnd","marker-end"],["markerMid","marker-mid"],["markerStart","marker-start"],["overlinePosition","overline-position"],["overlineThickness","overline-thickness"],["paintOrder","paint-order"],["panose-1","panose-1"],["pointerEvents","pointer-events"],["renderingIntent","rendering-intent"],["shapeRendering","shape-rendering"],["stopColor","stop-color"],["stopOpacity","stop-opacity"],["strikethroughPosition","strikethrough-position"],["strikethroughThickness","strikethrough-thickness"],["strokeDasharray","stroke-dasharray"],["strokeDashoffset","stroke-dashoffset"],["strokeLinecap","stroke-linecap"],["strokeLinejoin","stroke-linejoin"],["strokeMiterlimit","stroke-miterlimit"],["strokeOpacity","stroke-opacity"],["strokeWidth","stroke-width"],["textAnchor","text-anchor"],["textDecoration","text-decoration"],["textRendering","text-rendering"],["transformOrigin","transform-origin"],["underlinePosition","underline-position"],["underlineThickness","underline-thickness"],["unicodeBidi","unicode
49-bidi"],["unicodeRange","unicode-range"],["unitsPerEm","units-per-em"],["vAlphabetic","v-alphabetic"],["vHanging","v-hanging"],["vIdeographic","v-ideographic"],["vMathematical","v-mathematical"],["vectorEffect","vector-effect"],["vertAdvY","vert-adv-y"],["vertOriginX","vert-origin-x"],["vertOriginY","vert-origin-y"],["wordSpacing","word-spacing"],["writingMode","writing-mode"],["xmlnsXlink","xmlns:xlink"],["xHeight","x-height"]]),YJ=/^[\u0000-\u001F ]*j[\r\n\t]*a[\r\n\t]*v[\r\n\t]*a[\r\n\t]*s[\r\n\t]*c[\r\n\t]*r[\r\n\t]*i[\r\n\t]*p[\r\n\t]*t[\r\n\t]*:/i;function By(l){return YJ.test(""+l)?"javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')":l}function vi(){}var ik=null;function lk(l){return l=l.target||l.srcElement||window,l.correspondingUseElement&&(l=l.correspondingUseElement),l.nodeType===3?l.parentNode:l}var Uu=null,Bu=null;function FN(l){var u=Mu(l);if(u&&(l=u.stateNode)){var g=l[uo]||null;e:switch(l=u.stateNode,u.type){case"input":if(ok(l,g.value,g.defaultValue,g.defaultValue,g.checked,g.defaultChecked,g.type,g.name),u=g.name,g.type==="radio"&&u!=null){for(g=l;g.parentNode;)g=g.parentNode;for(g=g.querySelectorAll('input[name="'+ms(""+u)+'"][type="radio"]'),u=0;u<g.length;u++){var b=g[u];if(b!==l&&b.form===l.form){var C=b[uo]||null;if(!C)throw Error(a(90));ok(b,C.value,C.defaultValue,C.defaultValue,C.checked,C.defaultChecked,C.type,C.name)}}for(u=0;u<g.length;u++)b=g[u],b.form===l.form&&EN(b)}break e;case"textarea":ON(l,g.value,g.defaultValue);break e;case"select":u=g.value,u!=null&&Ou(l,!!g.multiple,u,!1)}}}var ck=!1;function zN(l,u,g){if(ck)return l(u,g);ck=!0;try{var b=l(u);return b}finally{if(ck=!1,(Uu!==null||Bu!==null)&&(Tv(),Uu&&(u=Uu,l=Bu,Bu=Uu=null,FN(u),l)))for(u=0;u<l.length;u++)FN(l[u])}}function lf(l,u){var g=l.stateNode;if(g===null)return null;var b=g[uo]||null;if(b===null)return null;g=b[u];e:switch(u){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(b=!b.disabled)||(l=l.type,b=!(l==="button"||l==="input"||l==="select"||l==="textarea")),l=!b;break e;default:l=!1}if(l)return null;if(g&&typeof g!="function")throw Error(a(231,u,typeof g));return g}var bi=!(typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),dk=!1;if(bi)try{var cf={};Object.defineProperty(cf,"passive",{get:function(){dk=!0}}),window.addEventListener("test",cf,cf),window.removeEventListener("test",cf,cf)}catch{dk=!1}var xl=null,uk=null,Fy=null;function qN(){if(Fy)return Fy;var l,u=uk,g=u.length,b,C="value"in xl?xl.value:xl.textContent,A=C.length;for(l=0;l<g&&u[l]===C[l];l++);var D=g-l;for(b=1;b<=D&&u[g-b]===C[A-b];b++);return Fy=C.slice(l,1<b?1-b:void 0)}function zy(l){var u=l.keyCode;return"charCode"in l?(l=l.charCode,l===0&&u===13&&(l=13)):l=u,l===10&&(l=13),32<=l||l===13?l:0}function qy(){return!0}function HN(){return!1}function mo(l){function u(g,b,C,A,D){this._reactName=g,this._targetInst=C,this.type=b,this.nativeEvent=A,this.target=D,this.currentTarget=null;for(var U in l)l.hasOwnProperty(U)&&(g=l[U],this[U]=g?g(A):A[U]);return this.isDefaultPrevented=(A.defaultPrevented!=null?A.defaultPrevented:A.returnValue===!1)?qy:HN,this.isPropagationStopped=HN,this}return p(u.prototype,{preventDefault:function(){this.defaultPrevented=!0;var g=this.nativeEvent;g&&(g.preventDefault?g.preventDefault():typeof g.returnValue!="unknown"&&(g.returnValue=!1),this.isDefaultPrevented=qy)},stopPropagation:function(){var g=this.nativeEvent;g&&(g.stopPropagation?g.stopPropagation():typeof g.cancelBubble!="unknown"&&(g.cancelBubble=!0),this.isPropagationStopped=qy)},persist:function(){},isPersistent:qy}),u}var Yc={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(l){return l.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},Hy=mo(Yc),df=p({},Yc,{view:0,detail:0}),QJ=mo(df),mk,pk,uf,Vy=p({},df,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:gk,button:0,buttons:0,relatedTarget:function(l){return l.relatedTarget===void 0?l.fromElement===l.srcElement?l.toElement:l.fromElement:l.relatedTarget},movementX:function(l){return"movementX"in l?l.movementX:(l!==uf&&(uf&&l.type==="mousemove"?(mk=l.screenX-uf.screenX,pk=l.screenY-uf.screenY):pk=mk=0,uf=l),mk)},movementY:function(l){return"movementY"in l?l.movementY:pk}}),VN=mo(Vy),XJ=p({},Vy,{dataTransfer:0}),ZJ=mo(XJ),JJ=p({},df,{relatedTarget:0}),fk=mo(JJ),eee=p({},Yc,{animationName:0,elapsedTime:0,pseudoElement:0}),tee=mo(eee),nee=p({},Yc,{clipboardData:function(l){return"clipboardData"in l?l.clipboardData:window.clipboardData}}),aee=mo(nee),oee=p({},Yc,{data:0}),KN=mo(oee),see={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},ree={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},iee={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function lee(l){var u=this.nativeEvent;return u.getModifierState?u.getModifierState(l):(l=iee[l])?!!u[l]:!1}function gk(){return lee}var cee=p({},df,{key:function(l){if(l.key){var u=see[l.key]||l.key;if(u!=="Unidentified")return u}
vendor: 4,899 bytes, line 49
49return l.type==="keypress"?(l=zy(l),l===13?"Enter":String.fromCharCode(l)):l.type==="keydown"||l.type==="keyup"?ree[l.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:gk,charCode:function(l){return l.type==="keypress"?zy(l):0},keyCode:function(l){return l.type==="keydown"||l.type==="keyup"?l.keyCode:0},which:function(l){return l.type==="keypress"?zy(l):l.type==="keydown"||l.type==="keyup"?l.keyCode:0}}),dee=mo(cee),uee=p({},Vy,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),GN=mo(uee),mee=p({},df,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:gk}),pee=mo(mee),fee=p({},Yc,{propertyName:0,elapsedTime:0,pseudoElement:0}),gee=mo(fee),hee=p({},Vy,{deltaX:function(l){return"deltaX"in l?l.deltaX:"wheelDeltaX"in l?-l.wheelDeltaX:0},deltaY:function(l){return"deltaY"in l?l.deltaY:"wheelDeltaY"in l?-l.wheelDeltaY:"wheelDelta"in l?-l.wheelDelta:0},deltaZ:0,deltaMode:0}),yee=mo(hee),vee=p({},Yc,{newState:0,oldState:0}),bee=mo(vee),xee=[9,13,27,32],hk=bi&&"CompositionEvent"in window,mf=null;bi&&"documentMode"in document&&(mf=document.documentMode);var $ee=bi&&"TextEvent"in window&&!mf,WN=bi&&(!hk||mf&&8<mf&&11>=mf),YN=" ",QN=!1;function XN(l,u){switch(l){case"keyup":return xee.indexOf(u.keyCode)!==-1;case"keydown":return u.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function ZN(l){return l=l.detail,typeof l=="object"&&"data"in l?l.data:null}var Fu=!1;function wee(l,u){switch(l){case"compositionend":return ZN(u);case"keypress":return u.which!==32?null:(QN=!0,YN);case"textInput":return l=u.data,l===YN&&QN?null:l;default:return null}}function kee(l,u){if(Fu)return l==="compositionend"||!hk&&XN(l,u)?(l=qN(),Fy=uk=xl=null,Fu=!1,l):null;switch(l){case"paste":return null;case"keypress":if(!(u.ctrlKey||u.altKey||u.metaKey)||u.ctrlKey&&u.altKey){if(u.char&&1<u.char.length)return u.char;if(u.which)return String.fromCharCode(u.which)}return null;case"compositionend":return WN&&u.locale!=="ko"?null:u.data;default:return null}}var Cee={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function JN(l){var u=l&&l.nodeName&&l.nodeName.toLowerCase();return u==="input"?!!Cee[l.type]:u==="textarea"}function eD(l,u,g,b){Uu?Bu?Bu.push(b):Bu=[b]:Uu=b,u=Mv(u,"onChange"),0<u.length&&(g=new Hy("onChange","change",null,g,b),l.push({event:g,listeners:u}))}var pf=null,ff=null;function See(l){IE(l,0)}function Ky(l){var u=rf(l);if(EN(u))return l}function tD(l,u){if(l==="change")return u}var nD=!1;if(bi){var yk;if(bi){var vk="oninput"in document;if(!vk){var aD=document.createElement("div");aD.setAttribute("oninput","return;"),vk=typeof aD.oninput=="function"}yk=vk}else yk=!1;nD=yk&&(!document.documentMode||9<document.documentMode)}function oD(){pf&&(pf.detachEvent("onpropertychange",sD),ff=pf=null)}function sD(l){if(l.propertyName==="value"&&Ky(ff)){var u=[];eD(u,ff,l,lk(l)),zN(See,u)}}function Aee(l,u,g){l==="focusin"?(oD(),pf=u,ff=g,pf.attachEvent("onpropertychange",sD)):l==="focusout"&&oD()}function Tee(l){if(l==="selectionchange"||l==="keyup"||l==="keydown")return Ky(ff)}function Ree(l,u){if(l==="click")return Ky(u)}function Pee(l,u){if(l==="input"||l==="change")return Ky(u)}function _ee(l,u){return l===u&&(l!==0||1/l===1/u)||l!==l&&u!==u}var Do=typeof Object.is=="function"?Object.is:_ee;function gf(l,u){if(Do(l,u))return!0;if(typeof l!="object"||l===null||typeof u!="object"||u===null)return!1;var g=Object.keys(l),b=Object.keys(u);if(g.length!==b.length)return!1;for(b=0;b<g.length;b++){var C=g[b];if(!lo.call(u,C)||!Do(l[C],u[C]))return!1}return!0}function rD(l){for(;l&&l.firstChild;)l=l.firstChild;return l}function iD(l,u){var g=rD(l);l=0;for(var b;g;){if(g.nodeType===3){if(b=l+g.textContent.length,l<=u&&b>=u)return{node:g,offset:u-l};l=b}e:{for(;g;){if(g.nextSibling){g=g.nextSibling;break e}g=g.parentNode}g=void 0}g=rD(g)}}function lD(l,u){return l&&u?l===u?!0:l&&l.nodeType===3?!1:u&&u.nodeType===3?lD(l,u.parentNode):"contains"in l?l.contains(u):l.compareDocumentPosition?!!(l.compareDocumentPosition(u)&16):!1:!1}function cD(l){l=l!=null&&l.ownerDocument!=null&&l.ownerDocument.defaultView!=null?l.ownerDocument.defaultView:window;for(var u=Uy(l.document);u instanceof l.HTMLIFrameElement;){try{var g=typeof u.contentWindow.location.href=="string"}catch{g=!1}if(g)l=u.contentWindow;else break;u=Uy(l.document)}return u}function bk(l){var u=l&&l.nodeName&&l.nodeName.toLowerCase();return u&&(u==="input"&&(l.type==="text"||l.type==="search"||l.type==="tel"||l.type==="url"||l.type==="password")||u==="textarea"||l.contentEditable==="true")}var jee=bi&&"documentMode"in document&&11>=document.documentMode,zu=null,xk=null,hf=null,$k=!1;
vendor: 21,352 bytes, line 49
49function dD(l,u,g){var b=g.window===g?g.document:g.nodeType===9?g:g.ownerDocument;$k||zu==null||zu!==Uy(b)||(b=zu,"selectionStart"in b&&bk(b)?b={start:b.selectionStart,end:b.selectionEnd}:(b=(b.ownerDocument&&b.ownerDocument.defaultView||window).getSelection(),b={anchorNode:b.anchorNode,anchorOffset:b.anchorOffset,focusNode:b.focusNode,focusOffset:b.focusOffset}),hf&&gf(hf,b)||(hf=b,b=Mv(xk,"onSelect"),0<b.length&&(u=new Hy("onSelect","select",null,u,g),l.push({event:u,listeners:b}),u.target=zu)))}function Qc(l,u){var g={};return g[l.toLowerCase()]=u.toLowerCase(),g["Webkit"+l]="webkit"+u,g["Moz"+l]="moz"+u,g}var qu={animationend:Qc("Animation","AnimationEnd"),animationiteration:Qc("Animation","AnimationIteration"),animationstart:Qc("Animation","AnimationStart"),transitionrun:Qc("Transition","TransitionRun"),transitionstart:Qc("Transition","TransitionStart"),transitioncancel:Qc("Transition","TransitionCancel"),transitionend:Qc("Transition","TransitionEnd")},wk={},uD={};bi&&(uD=document.createElement("div").style,"AnimationEvent"in window||(delete qu.animationend.animation,delete qu.animationiteration.animation,delete qu.animationstart.animation),"TransitionEvent"in window||delete qu.transitionend.transition);function Xc(l){if(wk[l])return wk[l];if(!qu[l])return l;var u=qu[l],g;for(g in u)if(u.hasOwnProperty(g)&&g in uD)return wk[l]=u[g];return l}var mD=Xc("animationend"),pD=Xc("animationiteration"),fD=Xc("animationstart"),Nee=Xc("transitionrun"),Dee=Xc("transitionstart"),Mee=Xc("transitioncancel"),gD=Xc("transitionend"),hD=new Map,kk="abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");kk.push("scrollEnd");function Ks(l,u){hD.set(l,u),Wc(u,[l])}var Gy=typeof reportError=="function"?reportError:function(l){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var u=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof l=="object"&&l!==null&&typeof l.message=="string"?String(l.message):String(l),error:l});if(!window.dispatchEvent(u))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",l);return}console.error(l)},ps=[],Hu=0,Ck=0;function Wy(){for(var l=Hu,u=Ck=Hu=0;u<l;){var g=ps[u];ps[u++]=null;var b=ps[u];ps[u++]=null;var C=ps[u];ps[u++]=null;var A=ps[u];if(ps[u++]=null,b!==null&&C!==null){var D=b.pending;D===null?C.next=C:(C.next=D.next,D.next=C),b.pending=C}A!==0&&yD(g,C,A)}}function Yy(l,u,g,b){ps[Hu++]=l,ps[Hu++]=u,ps[Hu++]=g,ps[Hu++]=b,Ck|=b,l.lanes|=b,l=l.alternate,l!==null&&(l.lanes|=b)}function Sk(l,u,g,b){return Yy(l,u,g,b),Qy(l)}function Zc(l,u){return Yy(l,null,null,u),Qy(l)}function yD(l,u,g){l.lanes|=g;var b=l.alternate;b!==null&&(b.lanes|=g);for(var C=!1,A=l.return;A!==null;)A.childLanes|=g,b=A.alternate,b!==null&&(b.childLanes|=g),A.tag===22&&(l=A.stateNode,l===null||l._visibility&1||(C=!0)),l=A,A=A.return;return l.tag===3?(A=l.stateNode,C&&u!==null&&(C=31-En(g),l=A.hiddenUpdates,b=l[C],b===null?l[C]=[u]:b.push(u),u.lane=g|536870912),A):null}function Qy(l){if(50<Lf)throw Lf=0,MC=null,Error(a(185));for(var u=l.return;u!==null;)l=u,u=l.return;return l.tag===3?l.stateNode:null}var Vu={};function Eee(l,u,g,b){this.tag=l,this.key=g,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.refCleanup=this.ref=null,this.pendingProps=u,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=b,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Mo(l,u,g,b){return new Eee(l,u,g,b)}function Ak(l){return l=l.prototype,!(!l||!l.isReactComponent)}function xi(l,u){var g=l.alternate;return g===null?(g=Mo(l.tag,u,l.key,l.mode),g.elementType=l.elementType,g.type=l.type,g.stateNode=l.stateNode,g.alternate=l,l.alternate=g):(g.pendingProps=u,g.type=l.type,g.flags=0,g.subtreeFlags=0,g.deletions=null),g.flags=l.flags&65011712,g.childLanes=l.childLanes,g.lanes=l.lanes,g.child=l.child,g.memoizedProps=l.memoizedProps,g.memoizedState=l.memoizedState,g.updateQueue=l.updateQueue,u=l.dependencies,g.dependencies=u===null?null:{lanes:u.lanes,firstContext:u.firstContext},g.sibling=l.sibling,g.index=l.index,g.ref=l.ref,g.refCleanup=l.refCleanup,g}function vD(l,u){l.flags&=65011714;var g=l.alternate;return g===null?(l.childLanes=0,l.lanes=u,l.child=null,l.subtreeFlags=0,l.memoizedProps=null,l.memoizedState=null,l.updateQueue=null,l.dependencies=null,l.stateNode=null):(l.childLanes=g.childLanes,l.lanes=g.lanes,l.child=g.child,l.subtreeFlags=0,l.deletions=null,l.memoizedProps=g.memoizedProps,l.memoizedState=g.memoizedState,l.updateQueue=g.updateQueue,l.type=g.type,u=g.dependencies,l.dependencies=u===null?null:{lanes:u.lanes,firstContext:u.firstContext}),l}function Xy(l,u,g,b,C,A){var D=0;if(b=l,typeof l=="function")Ak(l)&&(D=1);else if(typeof l=="string")D=Bte(l,g,de.current)?26:l==="html"||l==="head"||l==="body"?27:5;else e:switch(l){case I:return l=Mo(31,g,u,C),l.elementType=I,l.lanes=A,l;case x:return Jc(g.children,C,A,u);case w:D=8,C|=24;break;case S:return l=Mo(12,g,u,C|2),l.elementType=S,l.lanes=A,l;case _:return l=Mo(13,g,u,C),l.elementType=_,l.lanes=A,l;case P:return l=Mo(19,g,u,C),l.elementType=P,l.lanes=A,l;default:if(typeof l=="object"&&l!==null)switch(l.$$typeof){case T:D=10;break e;case k:D=9;break e;case R:D=11;break e;case j:D=14;break e;case N:D=16,b=null;break e}D=29,g=Error(a(130,l===null?"null":typeof l,"")),b=null}return u=Mo(D,g,u,C),u.elementType=l,u.type=b,u.lanes=A,u}function Jc(l,u,g,b){return l=Mo(7,l,b,u),l.lanes=g,l}function Tk(l,u,g){return l=Mo(6,l,null,u),l.lanes=g,l}function bD(l){var u=Mo(18,null,null,0);return u.stateNode=l,u}function Rk(l,u,g){return u=Mo(4,l.children!==null?l.children:[],l.key,u),u.lanes=g,u.stateNode={containerInfo:l.containerInfo,pendingChildren:null,implementation:l.implementation},u}var xD=new WeakMap;function fs(l,u){if(typeof l=="object"&&l!==null){var g=xD.get(l);return g!==void 0?g:(u={value:l,source:u,stack:ta(u)},xD.set(l,u),u)}return{value:l,source:u,stack:ta(u)}}var Ku=[],Gu=0,Zy=null,yf=0,gs=[],hs=0,$l=null,_r=1,jr="";function $i(l,u){Ku[Gu++]=yf,Ku[Gu++]=Zy,Zy=l,yf=u}function $D(l,u,g){gs[hs++]=_r,gs[hs++]=jr,gs[hs++]=$l,$l=l;var b=_r;l=jr;var C=32-En(b)-1;b&=~(1<<C),g+=1;var A=32-En(u)+C;if(30<A){var D=C-C%5;A=(b&(1<<D)-1).toString(32),b>>=D,C-=D,_r=1<<32-En(u)+C|g<<C|b,jr=A+l}else _r=1<<A|g<<C|b,jr=l}function Pk(l){l.return!==null&&($i(l,1),$D(l,1,0))}function _k(l){for(;l===Zy;)Zy=Ku[--Gu],Ku[Gu]=null,yf=Ku[--Gu],Ku[Gu]=null;for(;l===$l;)$l=gs[--hs],gs[hs]=null,jr=gs[--hs],gs[hs]=null,_r=gs[--hs],gs[hs]=null}function wD(l,u){gs[hs++]=_r,gs[hs++]=jr,gs[hs++]=$l,_r=u.id,jr=u.overflow,$l=l}var va=null,dn=null,kt=!1,wl=null,ys=!1,jk=Error(a(519));function kl(l){var u=Error(a(418,1<arguments.length&&arguments[1]!==void 0&&arguments[1]?"text":"HTML",""));throw vf(fs(u,l)),jk}function kD(l){var u=l.stateNode,g=l.type,b=l.memoizedProps;switch(u[ya]=l,u[uo]=b,g){case"dialog":xt("cancel",u),xt("close",u);break;case"iframe":case"object":case"embed":xt("load",u);break;case"video":case"audio":for(g=0;g<Bf.length;g++)xt(Bf[g],u);break;case"source":xt("error",u);break;case"img":case"image":case"link":xt("error",u),xt("load",u);break;case"details":xt("toggle",u);break;case"input":xt("invalid",u),IN(u,b.value,b.defaultValue,b.checked,b.defaultChecked,b.type,b.name,!0);break;case"select":xt("invalid",u);break;case"textarea":xt("invalid",u),LN(u,b.value,b.defaultValue,b.children)}g=b.children,typeof g!="string"&&typeof g!="number"&&typeof g!="bigint"||u.textContent===""+g||b.suppressHydrationWarning===!0||BE(u.textContent,g)?(b.popover!=null&&(xt("beforetoggle",u),xt("toggle",u)),b.onScroll!=null&&xt("scroll",u),b.onScrollEnd!=null&&xt("scrollend",u),b.onClick!=null&&(u.onclick=vi),u=!0):u=!1,u||kl(l,!0)}function CD(l){for(va=l.return;va;)switch(va.tag){case 5:case 31:case 13:ys=!1;return;case 27:case 3:ys=!0;return;default:va=va.return}}function Wu(l){if(l!==va)return!1;if(!kt)return CD(l),kt=!0,!1;var u=l.tag,g;if((g=u!==3&&u!==27)&&((g=u===5)&&(g=l.type,g=!(g!=="form"&&g!=="button")||YC(l.type,l.memoizedProps)),g=!g),g&&dn&&kl(l),CD(l),u===13){if(l=l.memoizedState,l=l!==null?l.dehydrated:null,!l)throw Error(a(317));dn=YE(l)}else if(u===31){if(l=l.memoizedState,l=l!==null?l.dehydrated:null,!l)throw Error(a(317));dn=YE(l)}else u===27?(u=dn,Ol(l.type)?(l=e1,e1=null,dn=l):dn=u):dn=va?bs(l.stateNode.nextSibling):null;return!0}function ed(){dn=va=null,kt=!1}function Nk(){var l=wl;return l!==null&&(ho===null?ho=l:ho.push.apply(ho,l),wl=null),l}function vf(l){wl===null?wl=[l]:wl.push(l)}var Dk=B(null),td=null,wi=null;function Cl(l,u,g){Q(Dk,u._currentValue),u._currentValue=g}function ki(l){l._currentValue=Dk.current,G(Dk)}function Mk(l,u,g){for(;l!==null;){var b=l.alternate;if((l.childLanes&u)!==u?(l.childLanes|=u,b!==null&&(b.childLanes|=u)):b!==null&&(b.childLanes&u)!==u&&(b.childLanes|=u),l===g)break;l=l.return}}function Ek(l,u,g,b){var C=l.child;for(C!==null&&(C.return=l);C!==null;){var A=C.dependencies;if(A!==null){var D=C.child;A=A.firstContext;e:for(;A!==null;){var U=A;A=C;for(var Z=0;Z<u.length;Z++)if(U.context===u[Z]){A.lanes|=g,U=A.alternate,U!==null&&(U.lanes|=g),Mk(A.return,g,l),b||(D=null);break e}A=U.next}}else if(C.tag===18){if(D=C.return,D===null)throw Error(a(341));D.lanes|=g,A=D.alternate,A!==null&&(A.lanes|=g),Mk(D,g,l),D=null}else D=C.child;if(D!==null)D.return=C;else for(D=C;D!==null;){if(D===l){D=null;break}if(C=D.sibling,C!==null){C.return=D.return,D=C;break}D=D.return}C=D}}function Yu(l,u,g,b){l=null;for(var C=u,A=!1;C!==null;){if(!A){if((C.flags&524288)!==0)A=!0;else if((C.flags&262144)!==0)break}if(C.tag===10){var D=C.alternate;if(D===null)throw Error(a(387));if(D=D.memoizedProps,D!==null){var U=C.type;Do(C.pendingProps.value,D.value)||(l!==null?l.push(U):l=[U])}}else if(C===se.current){if(D=C.alternate,D===null)throw Error(a(387));D.memoizedState.memoizedState!==C.memoizedState.memoizedState&&(l!==null?l.push(Vf):l=[Vf])}C=C.return}l!==null&&Ek(u,l,g,b),u.flags|=262144}function Jy(l){for(l=l.firstContext;l!==null;){if(!Do(l.context._currentValue,l.memoizedValue))return!0;l=l.next}return!1}function nd(l){td=l,wi=null,l=l.dependencies,l!==null&&(l.firstContext=null)}function ba(l){return SD(td,l)}function ev(l,u){return td===null&&nd(l),SD(l,u)}function SD(l,u){var g=u._currentValue;if(u={context:u,memoizedValue:g,next:null},wi===null){if(l===null)throw Error(a(308));wi=u,l.dependencies={lanes:0,firstContext:u},l.flags|=524288}else wi=wi.next=u;return g}var Iee=typeof AbortController<"u"?AbortController:function(){var l=[],u=this.signal={aborted:!1,addEventListener:function(g,b){l.push(b)}};this.abort=function(){u.aborted=!0,l.forEach(function(g){return g()})}},Oee=e.unstable_scheduleCallback,Lee=e.unstable_NormalPriority,In={$$typeof:T,Consumer:null,Provider:null,_currentValue:null,_currentValue2:null,_threadCount:0};function Ik(){return{controller:new Iee,data:new Map,refCount:0}}function bf(l){l.refCount--,l.refCount===0&&Oee(Lee,function(){l.controller.abort()})}var xf=null,Ok=0,Qu=0,Xu=null;function Uee(l,u){if(xf===null){var g=xf=[];Ok=0,Qu=BC(),Xu={status:"pending",value:void 0,then:function(b){g.push(b)}}}return Ok++,u.then(AD,AD),u}function AD(){if(--Ok===0&&xf!==null){Xu!==null&&(Xu.status="fulfilled");var l=xf;xf=null,Qu=0,Xu=null;for(var u=0;u<l.length;u++)(0,l[u])()}}function Bee(l,u){var g=[],b={status:"pending",value:null,reason:null,then:function(C){g.push(C)}};return l.then(function(){b.status="fulfilled",b.value=u;for(var C=0;C<g.length;C++)(0,g[C])(u)},function(C){for(b.status="rejected",b.reason=C,C=0;C<g.length;C++)(0,g[C])(void 0)}),b}var TD=q.S;q.S=function(l,u){dE=rt(),typeof u=="object"&&u!==null&&typeof u.then=="function"&&Uee(l,u),TD!==null&&TD(l,u)};var ad=B(null);function Lk(){var l=ad.current;return l!==null?l:en.pooledCache}function tv(l,u){u===null?Q(ad,ad.current):Q(ad,u.pool)}function RD(){var l=Lk();return l===null?null:{parent:In._currentValue,pool:l}}var Zu=Error(a(460)),Uk=Error(a(474)),nv=Error(a(542)),av={then:function(){}};function PD(l){return l=l.status,l==="fulfilled"||l==="rejected"}function _D(l,u,g){switch(g=l[g],g===void 0?l.push(u):g!==u&&(u.then(vi,vi),u=g),u.status){case"fulfilled":return u.value;case"rejected":throw l=u.reason,ND(l),l;default:if(typeof u.status=="string")u.then(vi,vi);else{if(l=en,l!==null&&100<l.shellSuspendCounter)throw Error(a(482));l=u,l.status="pending",l.then(function(b){if(u.status==="pending"){var C=u;C.status="fulfilled",C.value=b}},function(b){if(u.status==="pending"){var C=u;C.status="rejected",C.reason=b}})}switch(u.status){case"fulfilled":return u.value;case"rejected":throw l=u.reason,ND(l),l}throw sd=u,Zu}}function od(l){try{var u=l._init;return u(l._payload)}catch(g){throw g!==null&&typeof g=="object"&&typeof g.then=="function"?(sd=g,Zu):g}}var sd=null;function jD(){if(sd===null)throw Error(a(459));var l=sd;return sd=null,l}function ND(l){if(l===Zu||l===nv)throw Error(a(483))}var Ju=null,$f=0;function ov(l){var u=$f;return $f+=1,Ju===null&&(Ju=[]),_D(Ju,l,u)}function wf(l,u){u=u.props.ref,l.ref=u!==void 0?u:null}function sv(l,u){throw u.$$typeof===y?Error(a(525)):(l=Object.prototype.toString.call(u),Error(a(31,l==="[object Object]"?"object with keys {"+Object.keys(u).join(", ")+"}":l)))}function DD(l){function u(oe,te){if(l){var re=oe.deletions;re===null?(oe.deletions=[te],oe.flags|=16):re.push(te)}}function g(oe,te){if(!l)return null;for(;te!==null;)u(oe,te),te=te.sibling;return null}function b(oe){for(var te=new Map;oe!==null;)oe.key!==null?te.set(oe.key,oe):te.set(oe.index,oe),oe=oe.sibling;return te}function C(oe,te){return oe=xi(oe,te),oe.index=0,oe.sibling=null,oe}function A(oe,te,re){return oe.index=re,l?(re=oe.alternate,re!==null?(re=re.index,re<te?(oe.flags|=67108866,te):re):(oe.flags|=67108866,te)):(oe.flags|=1048576,te)}function D(oe){return l&&oe.alternate===null&&(oe.flags|=67108866),oe}function U(oe,te,re,xe){return te===null||te.tag!==6?(te=Tk(re,oe.mode,xe),te.return=oe,te):(te=C(te,re),te.return=oe,te)}function Z(oe,te,re,xe){var Xe=re.type;return Xe===x?be(oe,te,re.props.children,xe,re.key):te!==null&&(te.elementType===Xe||typeof Xe=="object"&&Xe!==null&&Xe.$$typeof===N&&od(Xe)===te.type)?(te=C(te,re.props),wf(te,re),te.return=oe,te):(te=Xy(re.type,re.key,re.props,null,oe.mode,xe),wf(te,re),te.return=oe,te)}function le(oe,te,re,xe){return te===null||te.tag!==4||te.stateNode.containerInfo!==re.containerInfo||te.stateNode.implementation!==re.implementation?(te=Rk(re,oe.mode,xe),te.return=oe,te):(te=C(te,re.children||[]),te.return=oe,te)}function be(oe,te,re,xe,Xe){return te===null||te.tag!==7?(te=Jc(re,oe.mode,xe,Xe),te.return=oe,te):(te=C(te,re),te.return=oe,te)}function $e(oe,te,re){if(typeof te=="string"&&te!==""||typeof te=="number"||typeof te=="bigint")return te=Tk(""+te,oe.mode,re),te.return=oe,te;if(typeof te=="object"&&te!==null){switch(te.$$typeof){case v:return re=Xy(te.type,te.key,te.props,null,oe.mode,re),wf(re,te),re.return=oe,re;case $:return te=Rk(te,oe.mode,re),te.return=oe,te;case N:return te=od(te),$e(oe,te,re)}if(ne(te)||L(te))return te=Jc(te,oe.mode,re,null),te.return=oe,te;if(typeof te.then=="function")return $e(oe,ov(te),re);if(te.$$typeof===T)return $e(oe,ev(oe,te),re);sv(oe,te)}return null}function ue(oe,te,re,xe){var Xe=te!==null?te.key:null;if(typeof re=="string"&&re!==""||typeof re=="number"||typeof re=="bigint")return Xe!==null?null:U(oe,te,""+re,xe);if(typeof re=="object"&&re!==null){switch(re.$$typeof){case v:return re.key===Xe?Z(oe,te,re,xe):null;case $:return re.key===Xe?le(oe,te,re,xe):null;case N:return re=od(re),ue(oe,te,re,xe)}if(ne(re)||L(re))return Xe!==null?null:be(oe,te,re,xe,null);if(typeof re.then=="function")return ue(oe,te,ov(re),xe);if(re.$$typeof===T)return ue(oe,te,ev(oe,re),xe);sv(oe,re)}return null}function he(oe,te,re,xe,Xe){if(typeof xe=="string"&&xe!==""||typeof xe=="number"||typeof xe=="bigint")return oe=oe.get(re)||null,U(te,oe,""+xe,Xe);if(typeof xe=="object"&&xe!==null){switch(xe.$$typeof){case v:return oe=oe.get(xe.key===null?re:xe.key)||null,Z(te,oe,xe,Xe);case $:return oe=oe.get(xe.key===null?re:xe.key)||null,le(te,oe,xe,Xe);case N:return xe=od(xe),he(oe,te,re,xe,Xe)}if(ne(xe)||L(xe))return oe=oe.get(re)||null,be(te,oe,xe,Xe,null);if(typeof xe.then=="function")return he(oe,te,re,ov(xe),Xe);if(xe.$$typeof===T)return he(oe,te,re,ev(te,xe),Xe);sv(te,xe)}return null}function Ve(oe,te,re,xe){for(var Xe=null,_t=null,Ke=te,mt=te=0,wt=null;Ke!==null&&mt<re.length;mt++){Ke.index>mt?(wt=Ke,Ke=null):wt=Ke.sibling;var jt=ue(oe,Ke,re[mt],xe);if(jt===null){Ke===null&&(Ke=wt);break}l&&Ke&&jt.alternate===null&&u(oe,Ke),te=A(jt,te,mt),_t===null?Xe=jt:_t.sibling=jt,_t=jt,Ke=wt}if(mt===re.length)return g(oe,Ke),kt&&$i(oe,mt),Xe;if(Ke===null){for(;mt<re.length;mt++)Ke=$e(oe,re[mt],xe),Ke!==null&&(te=A(Ke,te,mt),_t===null?Xe=Ke:_t.sibling=Ke,_t=Ke);return kt&&$i(oe,mt),Xe}for(Ke=b(Ke);mt<re.length;mt++)wt=he(Ke,oe,mt,re[mt],xe),wt!==null&&(l&&wt.alternate!==null&&Ke.delete(wt.key===null?mt:wt.key),te=A(wt,te,mt),_t===null?Xe=wt:_t.sibling=wt,_t=wt);return l&&Ke.forEach(function(zl){return u(oe,zl)}),kt&&$i(oe,mt),Xe}function et(oe,te,re,xe){if(re==null)throw Error(a(151));for(var Xe=null,_t=null,Ke=te,mt=te=0,wt=null,jt=re.next();Ke!==null&&!jt.done;mt++,jt=re.next()){Ke.index>mt?(wt=Ke,Ke=null):wt=Ke.sibling;var zl=ue(oe,Ke,jt.value,xe);if(zl===null){Ke===null&&(Ke=wt);break}l&&Ke&&zl.alternate===null&&u(oe,Ke),te=A(zl,te,mt),_t===null?Xe=zl:_t.sibling=zl,_t=zl,Ke=wt}if(jt.done)return g(oe,Ke),kt&&$i(oe,mt),Xe;if(Ke===null){for(;!jt.done;mt++,jt=re.next())jt=$e(oe,jt.value,xe),jt!==null&&(te=A(jt,te,mt),_t===null?Xe=jt:_t.sibling=jt,_t=jt);return kt&&$i(oe,mt),Xe}for(Ke=b(Ke);!jt.done;mt++,jt=re.next())jt=he(Ke,oe,mt,jt.value,xe),jt!==null&&(l&&jt.alternate!==null&&Ke.delete(jt.key===null?mt:jt.key),te=A(jt,te,mt),_t===null?Xe=jt:_t.sibling=jt,_t=jt);return l&&Ke.forEach(function(Xte){return u(oe,Xte)}),kt&&$i(oe,mt),Xe}function Wt(oe,te,re,xe){if(typeof re=="object"&&re!==null&&re.type===x&&re.key===null&&(re=re.props.children),typeof re=="object"&&re!==null){switch(re.$$typeof){case v:e:{for(var Xe=re.key;te!==null;){if(te.key===Xe){if(Xe=re.type,Xe===x){if(te.tag===7){g(oe,te.sibling),xe=C(te,re.props.children),xe.return=oe,oe=xe;break e}}else if(te.elementType===Xe||typeof Xe=="object"&&Xe!==null&&Xe.$$typeof===N&&od(Xe)===te.type){g(oe,te.sibling),xe=C(te,re.props),wf(xe,re),xe.return=oe,oe=xe;break e}g(oe,te);break}else u(oe,te);te=te.sibling}re.type===x?(xe=Jc(re.props.children,oe.mode,xe,re.key),xe.return=oe,oe=xe):(xe=Xy(re.type,re.key,re.props,null,oe.mode,xe),wf(xe,re),xe.return=oe,oe=xe)}return D(oe);case $:e:{for(Xe=re.key;te!==null;){if(te.key===Xe)if(te.tag===4&&te.stateNode.containerInfo===re.containerInfo&&te.stateNode.implementation===re.implementation){g(oe,te.sibling),xe=C(te,re.children||[]),xe.return=oe,oe=xe;break e}else{g(oe,te);break}else u(oe,te);te=te.sibling}xe=Rk(re,oe.mode,xe),xe.return=oe,oe=xe}return D(oe);case N:return re=od(re),Wt(oe,te,re,xe)}if(ne(re))return Ve(oe,te,re,xe);if(L(re)){if(Xe=L(re),typeof Xe!="function")throw Error(a(150));return re=Xe.call(re),et(oe,te,re,xe)}if(typeof re.then=="function")return Wt(oe,te,ov(re),xe);if(re.$$typeof===T)return Wt(oe,te,ev(oe,re),xe);sv(oe,re)}return typeof re=="string"&&re!==""||typeof re=="number"||typeof re=="bigint"?(re=""+re,te!==null&&te.tag===6?(g(oe,te.sibling),xe=C(te,re),xe.return=oe,oe=xe):(g(oe,te),xe=Tk(re,oe.mode,xe),xe.return=oe,oe=xe),D(oe)):g(oe,te)}return function(oe,te,re,xe){try{$f=0;var Xe=Wt(oe,te,re,xe);return Ju=null,Xe}catch(Ke){if(Ke===Zu||Ke===nv)throw Ke;var _t=Mo(29,Ke,null,oe.mode);return _t.lanes=xe,_t.return=oe,_t}finally{}}}var rd=DD(!0),MD=DD(!1),Sl=!1;function Bk(l){l.updateQueue={baseState:l.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Fk(l,u){l=l.updateQueue,u.updateQueue===l&&(u.updateQueue={baseState:l.baseState,firstBaseUpdate:l.firstBaseUpdate,lastBaseUpdate:l.lastBaseUpdate,shared:l.shared,callbacks:null})}function Al(l){return{lane:l,tag:0,payload:null,callback:null,next:null}}function Tl(l,u,g){var b=l.updateQueue;if(b===null)return null;if(b=b.shared,(Dt&2)!==0){var C=b.pending;return C===null?u.next=u:(u.next=C.next,C.next=u),b.pending=u,u=Qy(l),yD(l,null,g),u}return Yy(l,b,u,g),Qy(l)}function kf(l,u,g){if(u=u.updateQueue,u!==null&&(u=u.shared,(g&4194048)!==0)){var b=u.lanes;b&=l.pendingLanes,g|=b,u.lanes=g,co(l,g)}}function zk(l,u){var g=l.updateQueue,b=l.alternate;if(b!==null&&(b=b.updateQueue,g===b)){var C=null,A=null;if(g=g.firstBaseUpdate,g!==null){do{var D={lane:g.lane,tag:g.tag,payload:g.payload,callback:null,next:null};A===null?C=A=D:A=A.next=D,g=g.next}
vendor: 6,831 bytes, line 49
49while(g!==null);A===null?C=A=u:A=A.next=u}else C=A=u;g={baseState:b.baseState,firstBaseUpdate:C,lastBaseUpdate:A,shared:b.shared,callbacks:b.callbacks},l.updateQueue=g;return}l=g.lastBaseUpdate,l===null?g.firstBaseUpdate=u:l.next=u,g.lastBaseUpdate=u}var qk=!1;function Cf(){if(qk){var l=Xu;if(l!==null)throw l}}function Sf(l,u,g,b){qk=!1;var C=l.updateQueue;Sl=!1;var A=C.firstBaseUpdate,D=C.lastBaseUpdate,U=C.shared.pending;if(U!==null){C.shared.pending=null;var Z=U,le=Z.next;Z.next=null,D===null?A=le:D.next=le,D=Z;var be=l.alternate;be!==null&&(be=be.updateQueue,U=be.lastBaseUpdate,U!==D&&(U===null?be.firstBaseUpdate=le:U.next=le,be.lastBaseUpdate=Z))}if(A!==null){var $e=C.baseState;D=0,be=le=Z=null,U=A;do{var ue=U.lane&-536870913,he=ue!==U.lane;if(he?($t&ue)===ue:(b&ue)===ue){ue!==0&&ue===Qu&&(qk=!0),be!==null&&(be=be.next={lane:0,tag:U.tag,payload:U.payload,callback:null,next:null});e:{var Ve=l,et=U;ue=u;var Wt=g;switch(et.tag){case 1:if(Ve=et.payload,typeof Ve=="function"){$e=Ve.call(Wt,$e,ue);break e}$e=Ve;break e;case 3:Ve.flags=Ve.flags&-65537|128;case 0:if(Ve=et.payload,ue=typeof Ve=="function"?Ve.call(Wt,$e,ue):Ve,ue==null)break e;$e=p({},$e,ue);break e;case 2:Sl=!0}}ue=U.callback,ue!==null&&(l.flags|=64,he&&(l.flags|=8192),he=C.callbacks,he===null?C.callbacks=[ue]:he.push(ue))}else he={lane:ue,tag:U.tag,payload:U.payload,callback:U.callback,next:null},be===null?(le=be=he,Z=$e):be=be.next=he,D|=ue;if(U=U.next,U===null){if(U=C.shared.pending,U===null)break;he=U,U=he.next,he.next=null,C.lastBaseUpdate=he,C.shared.pending=null}}while(!0);be===null&&(Z=$e),C.baseState=Z,C.firstBaseUpdate=le,C.lastBaseUpdate=be,A===null&&(C.shared.lanes=0),Nl|=D,l.lanes=D,l.memoizedState=$e}}function ED(l,u){if(typeof l!="function")throw Error(a(191,l));l.call(u)}function ID(l,u){var g=l.callbacks;if(g!==null)for(l.callbacks=null,l=0;l<g.length;l++)ED(g[l],u)}var em=B(null),rv=B(0);function OD(l,u){l=Ni,Q(rv,l),Q(em,u),Ni=l|u.baseLanes}function Hk(){Q(rv,Ni),Q(em,em.current)}function Vk(){Ni=rv.current,G(em),G(rv)}var Eo=B(null),vs=null;function Rl(l){var u=l.alternate;Q(Pn,Pn.current&1),Q(Eo,l),vs===null&&(u===null||em.current!==null||u.memoizedState!==null)&&(vs=l)}function Kk(l){Q(Pn,Pn.current),Q(Eo,l),vs===null&&(vs=l)}function LD(l){l.tag===22?(Q(Pn,Pn.current),Q(Eo,l),vs===null&&(vs=l)):Pl()}function Pl(){Q(Pn,Pn.current),Q(Eo,Eo.current)}function Io(l){G(Eo),vs===l&&(vs=null),G(Pn)}var Pn=B(0);function iv(l){for(var u=l;u!==null;){if(u.tag===13){var g=u.memoizedState;if(g!==null&&(g=g.dehydrated,g===null||ZC(g)||JC(g)))return u}else if(u.tag===19&&(u.memoizedProps.revealOrder==="forwards"||u.memoizedProps.revealOrder==="backwards"||u.memoizedProps.revealOrder==="unstable_legacy-backwards"||u.memoizedProps.revealOrder==="together")){if((u.flags&128)!==0)return u}else if(u.child!==null){u.child.return=u,u=u.child;continue}if(u===l)break;for(;u.sibling===null;){if(u.return===null||u.return===l)return null;u=u.return}u.sibling.return=u.return,u=u.sibling}return null}var Ci=0,ut=null,Kt=null,On=null,lv=!1,tm=!1,id=!1,cv=0,Af=0,nm=null,Fee=0;function wn(){throw Error(a(321))}function Gk(l,u){if(u===null)return!1;for(var g=0;g<u.length&&g<l.length;g++)if(!Do(l[g],u[g]))return!1;return!0}function Wk(l,u,g,b,C,A){return Ci=A,ut=u,u.memoizedState=null,u.updateQueue=null,u.lanes=0,q.H=l===null||l.memoizedState===null?$M:cC,id=!1,A=g(b,C),id=!1,tm&&(A=BD(u,g,b,C)),UD(l),A}function UD(l){q.H=Pf;var u=Kt!==null&&Kt.next!==null;if(Ci=0,On=Kt=ut=null,lv=!1,Af=0,nm=null,u)throw Error(a(300));l===null||Ln||(l=l.dependencies,l!==null&&Jy(l)&&(Ln=!0))}function BD(l,u,g,b){ut=l;var C=0;do{if(tm&&(nm=null),Af=0,tm=!1,25<=C)throw Error(a(301));if(C+=1,On=Kt=null,l.updateQueue!=null){var A=l.updateQueue;A.lastEffect=null,A.events=null,A.stores=null,A.memoCache!=null&&(A.memoCache.index=0)}q.H=wM,A=u(g,b)}while(tm);return A}function zee(){var l=q.H,u=l.useState()[0];return u=typeof u.then=="function"?Tf(u):u,l=l.useState()[0],(Kt!==null?Kt.memoizedState:null)!==l&&(ut.flags|=1024),u}function Yk(){var l=cv!==0;return cv=0,l}function Qk(l,u,g){u.updateQueue=l.updateQueue,u.flags&=-2053,l.lanes&=~g}function Xk(l){if(lv){for(l=l.memoizedState;l!==null;){var u=l.queue;u!==null&&(u.pending=null),l=l.next}lv=!1}Ci=0,On=Kt=ut=null,tm=!1,Af=cv=0,nm=null}function Ya(){var l={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return On===null?ut.memoizedState=On=l:On=On.next=l,On}function _n(){if(Kt===null){var l=ut.alternate;l=l!==null?l.memoizedState:null}else l=Kt.next;var u=On===null?ut.memoizedState:On.next;if(u!==null)On=u,Kt=l;else{if(l===null)throw ut.alternate===null?Error(a(467)):Error(a(310));Kt=l,l={memoizedState:Kt.memoizedState,baseState:Kt.baseState,baseQueue:Kt.baseQueue,queue:Kt.queue,next:null},On===null?ut.memoizedState=On=l:On=On.next=l}return On}function dv(){return{lastEffect:null,events:null,stores:null,memoCache:null}}function Tf(l){var u=Af;return Af+=1,nm===null&&(nm=[]),l=_D(nm,l,u),u=ut,(On===null?u.memoizedState:On.next)===null&&(u=u.alternate,q.H=u===null||u.memoizedState===null?$M:cC),l}function uv(l){if(l!==null&&typeof l=="object"){if(typeof l.then=="function")return Tf(l);if(l.$$typeof===T)return ba(l)}throw Error(a(438,String(l)))}function Zk(l){var u=null,g=ut.updateQueue;if(g!==null&&(u=g.memoCache),u==null){var b=ut.alternate;b!==null&&(b=b.updateQueue,b!==null&&(b=b.memoCache,b!=null&&(u={data:b.data.map(function(C){return C.slice()}),index:0})))}if(u==null&&(u={data:[],index:0}),g===null&&(g=dv(),ut.updateQueue=g),g.memoCache=u,g=u.data[u.index],g===void 0)for(g=u.data[u.index]=Array(l),b=0;b<l;b++)g[b]=z;return u.index++,g}function Si(l,u){return typeof u=="function"?u(l):u}function mv(l){var u=_n();return Jk(u,Kt,l)}function Jk(l,u,g){var b=l.queue;if(b===null)throw Error(a(311));b.lastRenderedReducer=g;var C=l.baseQueue,A=b.pending;if(A!==null){if(C!==null){var D=C.next;C.next=A.next,A.next=D}u.baseQueue=C=A,b.pending=null}if(A=l.baseState,C===null)l.memoizedState=A;else{u=C.next;var U=D=null,Z=null,le=u,be=!1;do{var $e=le.lane&-536870913;if($e!==le.lane?($t&$e)===$e:(Ci&$e)===$e){var ue=le.revertLane;if(ue===0)Z!==null&&(Z=Z.next={lane:0,revertLane:0,gesture:null,action:le.action,hasEagerState:le.hasEagerState,eagerState:le.eagerState,next:null}),$e===Qu&&(be=!0);else if((Ci&ue)===ue){le=le.next,ue===Qu&&(be=!0);continue}else $e={lane:0,revertLane:le.revertLane,gesture:null,action:le.action,hasEagerState:le.hasEagerState,eagerState:le.eagerState,next:null},Z===null?(U=Z=$e,D=A):Z=Z.next=$e,ut.lanes|=ue,Nl|=ue;$e=le.action,id&&g(A,$e),A=le.hasEagerState?le.eagerState:g(A,$e)}else ue={lane:$e,revertLane:le.revertLane,gesture:le.gesture,action:le.action,hasEagerState:le.hasEagerState,eagerState:le.eagerState,next:null},Z===null?(U=Z=ue,D=A):Z=Z.next=ue,ut.lanes|=$e,Nl|=$e;le=le.next}
vendor: 14,006 bytes, line 49
49while(le!==null&&le!==u);if(Z===null?D=A:Z.next=U,!Do(A,l.memoizedState)&&(Ln=!0,be&&(g=Xu,g!==null)))throw g;l.memoizedState=A,l.baseState=D,l.baseQueue=Z,b.lastRenderedState=A}return C===null&&(b.lanes=0),[l.memoizedState,b.dispatch]}function eC(l){var u=_n(),g=u.queue;if(g===null)throw Error(a(311));g.lastRenderedReducer=l;var b=g.dispatch,C=g.pending,A=u.memoizedState;if(C!==null){g.pending=null;var D=C=C.next;do A=l(A,D.action),D=D.next;while(D!==C);Do(A,u.memoizedState)||(Ln=!0),u.memoizedState=A,u.baseQueue===null&&(u.baseState=A),g.lastRenderedState=A}return[A,b]}function FD(l,u,g){var b=ut,C=_n(),A=kt;if(A){if(g===void 0)throw Error(a(407));g=g()}else g=u();var D=!Do((Kt||C).memoizedState,g);if(D&&(C.memoizedState=g,Ln=!0),C=C.queue,aC(HD.bind(null,b,C,l),[l]),C.getSnapshot!==u||D||On!==null&&On.memoizedState.tag&1){if(b.flags|=2048,am(9,{destroy:void 0},qD.bind(null,b,C,g,u),null),en===null)throw Error(a(349));A||(Ci&127)!==0||zD(b,u,g)}return g}function zD(l,u,g){l.flags|=16384,l={getSnapshot:u,value:g},u=ut.updateQueue,u===null?(u=dv(),ut.updateQueue=u,u.stores=[l]):(g=u.stores,g===null?u.stores=[l]:g.push(l))}function qD(l,u,g,b){u.value=g,u.getSnapshot=b,VD(u)&&KD(l)}function HD(l,u,g){return g(function(){VD(u)&&KD(l)})}function VD(l){var u=l.getSnapshot;l=l.value;try{var g=u();return!Do(l,g)}catch{return!0}}function KD(l){var u=Zc(l,2);u!==null&&yo(u,l,2)}function tC(l){var u=Ya();if(typeof l=="function"){var g=l;if(l=g(),id){Hs(!0);try{g()}finally{Hs(!1)}}}return u.memoizedState=u.baseState=l,u.queue={pending:null,lanes:0,dispatch:null,lastRenderedReducer:Si,lastRenderedState:l},u}function GD(l,u,g,b){return l.baseState=g,Jk(l,Kt,typeof b=="function"?b:Si)}function qee(l,u,g,b,C){if(gv(l))throw Error(a(485));if(l=u.action,l!==null){var A={payload:C,action:l,next:null,isTransition:!0,status:"pending",value:null,reason:null,listeners:[],then:function(D){A.listeners.push(D)}};q.T!==null?g(!0):A.isTransition=!1,b(A),g=u.pending,g===null?(A.next=u.pending=A,WD(u,A)):(A.next=g.next,u.pending=g.next=A)}}function WD(l,u){var g=u.action,b=u.payload,C=l.state;if(u.isTransition){var A=q.T,D={};q.T=D;try{var U=g(C,b),Z=q.S;Z!==null&&Z(D,U),YD(l,u,U)}catch(le){nC(l,u,le)}finally{A!==null&&D.types!==null&&(A.types=D.types),q.T=A}}else try{A=g(C,b),YD(l,u,A)}catch(le){nC(l,u,le)}}function YD(l,u,g){g!==null&&typeof g=="object"&&typeof g.then=="function"?g.then(function(b){QD(l,u,b)},function(b){return nC(l,u,b)}):QD(l,u,g)}function QD(l,u,g){u.status="fulfilled",u.value=g,XD(u),l.state=g,u=l.pending,u!==null&&(g=u.next,g===u?l.pending=null:(g=g.next,u.next=g,WD(l,g)))}function nC(l,u,g){var b=l.pending;if(l.pending=null,b!==null){b=b.next;do u.status="rejected",u.reason=g,XD(u),u=u.next;while(u!==b)}l.action=null}function XD(l){l=l.listeners;for(var u=0;u<l.length;u++)(0,l[u])()}function ZD(l,u){return u}function JD(l,u){if(kt){var g=en.formState;if(g!==null){e:{var b=ut;if(kt){if(dn){t:{for(var C=dn,A=ys;C.nodeType!==8;){if(!A){C=null;break t}if(C=bs(C.nextSibling),C===null){C=null;break t}}A=C.data,C=A==="F!"||A==="F"?C:null}if(C){dn=bs(C.nextSibling),b=C.data==="F!";break e}}kl(b)}b=!1}b&&(u=g[0])}}return g=Ya(),g.memoizedState=g.baseState=u,b={pending:null,lanes:0,dispatch:null,lastRenderedReducer:ZD,lastRenderedState:u},g.queue=b,g=vM.bind(null,ut,b),b.dispatch=g,b=tC(!1),A=lC.bind(null,ut,!1,b.queue),b=Ya(),C={state:u,dispatch:null,action:l,pending:null},b.queue=C,g=qee.bind(null,ut,C,A,g),C.dispatch=g,b.memoizedState=l,[u,g,!1]}function eM(l){var u=_n();return tM(u,Kt,l)}function tM(l,u,g){if(u=Jk(l,u,ZD)[0],l=mv(Si)[0],typeof u=="object"&&u!==null&&typeof u.then=="function")try{var b=Tf(u)}catch(D){throw D===Zu?nv:D}else b=u;u=_n();var C=u.queue,A=C.dispatch;return g!==u.memoizedState&&(ut.flags|=2048,am(9,{destroy:void 0},Hee.bind(null,C,g),null)),[b,A,l]}function Hee(l,u){l.action=u}function nM(l){var u=_n(),g=Kt;if(g!==null)return tM(u,g,l);_n(),u=u.memoizedState,g=_n();var b=g.queue.dispatch;return g.memoizedState=l,[u,b,!1]}function am(l,u,g,b){return l={tag:l,create:g,deps:b,inst:u,next:null},u=ut.updateQueue,u===null&&(u=dv(),ut.updateQueue=u),g=u.lastEffect,g===null?u.lastEffect=l.next=l:(b=g.next,g.next=l,l.next=b,u.lastEffect=l),l}function aM(){return _n().memoizedState}function pv(l,u,g,b){var C=Ya();ut.flags|=l,C.memoizedState=am(1|u,{destroy:void 0},g,b===void 0?null:b)}function fv(l,u,g,b){var C=_n();b=b===void 0?null:b;var A=C.memoizedState.inst;Kt!==null&&b!==null&&Gk(b,Kt.memoizedState.deps)?C.memoizedState=am(u,A,g,b):(ut.flags|=l,C.memoizedState=am(1|u,A,g,b))}function oM(l,u){pv(8390656,8,l,u)}function aC(l,u){fv(2048,8,l,u)}function Vee(l){ut.flags|=4;var u=ut.updateQueue;if(u===null)u=dv(),ut.updateQueue=u,u.events=[l];else{var g=u.events;g===null?u.events=[l]:g.push(l)}}function sM(l){var u=_n().memoizedState;return Vee({ref:u,nextImpl:l}),function(){if((Dt&2)!==0)throw Error(a(440));return u.impl.apply(void 0,arguments)}}function rM(l,u){return fv(4,2,l,u)}function iM(l,u){return fv(4,4,l,u)}function lM(l,u){if(typeof u=="function"){l=l();var g=u(l);return function(){typeof g=="function"?g():u(null)}}if(u!=null)return l=l(),u.current=l,function(){u.current=null}}function cM(l,u,g){g=g!=null?g.concat([l]):null,fv(4,4,lM.bind(null,u,l),g)}function oC(){}function dM(l,u){var g=_n();u=u===void 0?null:u;var b=g.memoizedState;return u!==null&&Gk(u,b[1])?b[0]:(g.memoizedState=[l,u],l)}function uM(l,u){var g=_n();u=u===void 0?null:u;var b=g.memoizedState;if(u!==null&&Gk(u,b[1]))return b[0];if(b=l(),id){Hs(!0);try{l()}finally{Hs(!1)}}return g.memoizedState=[b,u],b}function sC(l,u,g){return g===void 0||(Ci&1073741824)!==0&&($t&261930)===0?l.memoizedState=u:(l.memoizedState=g,l=mE(),ut.lanes|=l,Nl|=l,g)}function mM(l,u,g,b){return Do(g,u)?g:em.current!==null?(l=sC(l,g,b),Do(l,u)||(Ln=!0),l):(Ci&42)===0||(Ci&1073741824)!==0&&($t&261930)===0?(Ln=!0,l.memoizedState=g):(l=mE(),ut.lanes|=l,Nl|=l,u)}function pM(l,u,g,b,C){var A=M.p;M.p=A!==0&&8>A?A:8;var D=q.T,U={};q.T=U,lC(l,!1,u,g);try{var Z=C(),le=q.S;if(le!==null&&le(U,Z),Z!==null&&typeof Z=="object"&&typeof Z.then=="function"){var be=Bee(Z,b);Rf(l,u,be,Uo(l))}else Rf(l,u,b,Uo(l))}catch($e){Rf(l,u,{then:function(){},status:"rejected",reason:$e},Uo())}finally{M.p=A,D!==null&&U.types!==null&&(D.types=U.types),q.T=D}}function Kee(){}function rC(l,u,g,b){if(l.tag!==5)throw Error(a(476));var C=fM(l).queue;pM(l,C,u,F,g===null?Kee:function(){return gM(l),g(b)})}function fM(l){var u=l.memoizedState;if(u!==null)return u;u={memoizedState:F,baseState:F,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Si,lastRenderedState:F},next:null};var g={};return u.next={memoizedState:g,baseState:g,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Si,lastRenderedState:g},next:null},l.memoizedState=u,l=l.alternate,l!==null&&(l.memoizedState=u),u}function gM(l){var u=fM(l);u.next===null&&(u=l.alternate.memoizedState),Rf(l,u.next.queue,{},Uo())}function iC(){return ba(Vf)}function hM(){return _n().memoizedState}function yM(){return _n().memoizedState}function Gee(l){for(var u=l.return;u!==null;){switch(u.tag){case 24:case 3:var g=Uo();l=Al(g);var b=Tl(u,l,g);b!==null&&(yo(b,u,g),kf(b,u,g)),u={cache:Ik()},l.payload=u;return}u=u.return}}function Wee(l,u,g){var b=Uo();g={lane:b,revertLane:0,gesture:null,action:g,hasEagerState:!1,eagerState:null,next:null},gv(l)?bM(u,g):(g=Sk(l,u,g,b),g!==null&&(yo(g,l,b),xM(g,u,b)))}function vM(l,u,g){var b=Uo();Rf(l,u,g,b)}function Rf(l,u,g,b){var C={lane:b,revertLane:0,gesture:null,action:g,hasEagerState:!1,eagerState:null,next:null};if(gv(l))bM(u,C);else{var A=l.alternate;if(l.lanes===0&&(A===null||A.lanes===0)&&(A=u.lastRenderedReducer,A!==null))try{var D=u.lastRenderedState,U=A(D,g);if(C.hasEagerState=!0,C.eagerState=U,Do(U,D))return Yy(l,u,C,0),en===null&&Wy(),!1}catch{}finally{}if(g=Sk(l,u,C,b),g!==null)return yo(g,l,b),xM(g,u,b),!0}return!1}function lC(l,u,g,b){if(b={lane:2,revertLane:BC(),gesture:null,action:b,hasEagerState:!1,eagerState:null,next:null},gv(l)){if(u)throw Error(a(479))}else u=Sk(l,g,b,2),u!==null&&yo(u,l,2)}function gv(l){var u=l.alternate;return l===ut||u!==null&&u===ut}function bM(l,u){tm=lv=!0;var g=l.pending;g===null?u.next=u:(u.next=g.next,g.next=u),l.pending=u}function xM(l,u,g){if((g&4194048)!==0){var b=u.lanes;b&=l.pendingLanes,g|=b,u.lanes=g,co(l,g)}}var Pf={readContext:ba,use:uv,useCallback:wn,useContext:wn,useEffect:wn,useImperativeHandle:wn,useLayoutEffect:wn,useInsertionEffect:wn,useMemo:wn,useReducer:wn,useRef:wn,useState:wn,useDebugValue:wn,useDeferredValue:wn,useTransition:wn,useSyncExternalStore:wn,useId:wn,useHostTransitionStatus:wn,useFormState:wn,useActionState:wn,useOptimistic:wn,useMemoCache:wn,useCacheRefresh:wn};Pf.useEffectEvent=wn;var $M={readContext:ba,use:uv,useCallback:function(l,u){return Ya().memoizedState=[l,u===void 0?null:u],l},useContext:ba,useEffect:oM,useImperativeHandle:function(l,u,g){g=g!=null?g.concat([l]):null,pv(4194308,4,lM.bind(null,u,l),g)},useLayoutEffect:function(l,u){return pv(4194308,4,l,u)},useInsertionEffect:function(l,u){pv(4,2,l,u)},useMemo:function(l,u){var g=Ya();u=u===void 0?null:u;var b=l();if(id){Hs(!0);try{l()}finally{Hs(!1)}}return g.memoizedState=[b,u],b},useReducer:function(l,u,g){var b=Ya();if(g!==void 0){var C=g(u);if(id){Hs(!0);try{g(u)}finally{Hs(!1)}}}else C=u;return b.memoizedState=b.baseState=C,l={pending:null,lanes:0,dispatch:null,lastRenderedReducer:l,lastRenderedState:C},b.queue=l,l=l.dispatch=Wee.bind(null,ut,l),[b.memoizedState,l]},useRef:function(l){var u=Ya();return l={current:l},u.memoizedState=l},useState:function(l){l=tC(l);var u=l.queue,g=vM.bind(null,ut,u);return u.dispatch=g,[l.memoizedState,g]},useDebugValue:oC,useDeferredValue:function(l,u){var g=Ya();return sC(g,l,u)},useTransition:function(){var l=tC(!1);return l=pM.bind(null,ut,l.queue,!0,!1),Ya().memoizedState=l,[!1,l]},useSyncExternalStore:function(l,u,g){var b=ut,C=Ya();if(kt){if(g===void 0)throw Error(a(407));g=g()}else{if(g=u(),en===null)throw Error(a(349));($t&127)!==0||zD(b,u,g)}C.memoizedState=g;var A={value:g,getSnapshot:u};return C.queue=A,oM(HD.bind(null,b,A,l),[l]),b.flags|=2048,am(9,{destroy:void 0},qD.bind(null,b,A,g,u),null),g},useId:function(){var l=Ya(),u=en.identifierPrefix;if(kt){var g=jr,b=_r;g=(b&~(1<<32-En(b)-1)).toString(32)+g,u="_"+u+"R_"+g,g=cv++,0<g&&(u+="H"+g.toString(32)),u+="_"}else g=Fee++,u="_"+u+"r_"+g.toString(32)+"_";return l.memoizedState=u},useHostTransitionStatus:iC,useFormState:JD,useActionState:JD,useOptimistic:function(l){var u=Ya();u.memoizedState=u.baseState=l;var g={pending:null,lanes:0,dispatch:null,lastRenderedReducer:null,lastRenderedState:null};return u.queue=g,u=lC.bind(null,ut,!0,g),g.dispatch=u,[l,u]},useMemoCache:Zk,useCacheRefresh:function(){return Ya().memoizedState=Gee.bind(null,ut)},useEffectEvent:function(l){var u=Ya(),g={impl:l};return u.memoizedState=g,function(){if((Dt&2)!==0)throw Error(a(440));return g.impl.apply(void 0,arguments)}}},cC={readContext:ba,use:uv,useCallback:dM,useContext:ba,useEffect:aC,useImperativeHandle:cM,useInsertionEffect:rM,useLayoutEffect:iM,useMemo:uM,useReducer:mv,useRef:aM,useState:function(){return mv(Si)},useDebugValue:oC,useDeferredValue:function(l,u){var g=_n();return mM(g,Kt.memoizedState,l,u)},useTransition:function(){var l=mv(Si)[0],u=_n().memoizedState;return[typeof l=="boolean"?l:Tf(l),u]},useSyncExternalStore:FD,useId:hM,useHostTransitionStatus:iC,useFormState:eM,useActionState:eM,useOptimistic:function(l,u){var g=_n();return GD(g,Kt,l,u)},useMemoCache:Zk,useCacheRefresh:yM};cC.useEffectEvent=sM;var wM={readContext:ba,use:uv,useCallback:dM,useContext:ba,useEffect:aC,useImperativeHandle:cM,useInsertionEffect:rM,useLayoutEffect:iM,useMemo:uM,useReducer:eC,useRef:aM,useState:function(){return eC(Si)},useDebugValue:oC,useDeferredValue:function(l,u){var g=_n();return Kt===null?sC(g,l,u):mM(g,Kt.memoizedState,l,u)},useTransition:function(){var l=eC(Si)[0],u=_n().memoizedState;return[typeof l=="boolean"?l:Tf(l),u]},useSyncExternalStore:FD,useId:hM,useHostTransitionStatus:iC,useFormState:nM,useActionState:nM,useOptimistic:function(l,u){var g=_n();return Kt!==null?GD(g,Kt,l,u):(g.baseState=l,[l,g.queue.dispatch])},useMemoCache:Zk,useCacheRefresh:yM};wM.useEffectEvent=sM;function dC(l,u,g,b){u=l.memoizedState,g=g(b,u),g=g==null?u:p({},u,g),l.memoizedState=g,l.lanes===0&&(l.updateQueue.baseState=g)}var uC={enqueueSetState:function(l,u,g){l=l._reactInternals;var b=Uo(),C=Al(b);C.payload=u,g!=null&&(C.callback=g),u=Tl(l,C,b),u!==null&&(yo(u,l,b),kf(u,l,b))},enqueueReplaceState:function(l,u,g){l=l._reactInternals;var b=Uo(),C=Al(b);C.tag=1,C.payload=u,g!=null&&(C.callback=g),u=Tl(l,C,b),u!==null&&(yo(u,l,b),kf(u,l,b))},enqueueForceUpdate:function(l,u){l=l._reactInternals;var g=Uo(),b=Al(g);b.tag=2,u!=null&&(b.callback=u),u=Tl(l,b,g),u!==null&&(yo(u,l,g),kf(u,l,g))}};function kM(l,u,g,b,C,A,D){return l=l.stateNode,typeof l.shouldComponentUpdate=="function"?l.shouldComponentUpdate(b,A,D):u.prototype&&u.prototype.isPureReactComponent?!gf(g,b)||!gf(C,A):!0}function CM(l,u,g,b){l=u.state,typeof u.componentWillReceiveProps=="function"&&u.componentWillReceiveProps(g,b),typeof u.UNSAFE_componentWillReceiveProps=="function"&&u.UNSAFE_componentWillReceiveProps(g,b),u.state!==l&&uC.enqueueReplaceState(u,u.state,null)}function ld(l,u){var g=u;if("ref"in u){g={};for(var b in u)b!=="ref"&&(g[b]=u[b])}if(l=l.defaultProps){g===u&&(g=p({},g));for(var C in l)g[C]===void 0&&(g[C]=l[C])}return g}function SM(l){Gy(l)}function AM(l){console.error(l)}function TM(l){Gy(l)}function hv(l,u){try{var g=l.onUncaughtError;g(u.value,{componentStack:u.stack})}catch(b){setTimeout(function(){throw b})}}function RM(l,u,g){try{var b=l.onCaughtError;b(g.value,{componentStack:g.stack,errorBoundary:u.tag===1?u.stateNode:null})}catch(C){setTimeout(function(){throw C})}}function mC(l,u,g){return g=Al(g),g.tag=3,g.payload={element:null},g.callback=function(){hv(l,u)},g}function PM(l){return l=Al(l),l.tag=3,l}
vendor: 11,936 bytes, line 49
49function _M(l,u,g,b){var C=g.type.getDerivedStateFromError;if(typeof C=="function"){var A=b.value;l.payload=function(){return C(A)},l.callback=function(){RM(u,g,b)}}var D=g.stateNode;D!==null&&typeof D.componentDidCatch=="function"&&(l.callback=function(){RM(u,g,b),typeof C!="function"&&(Dl===null?Dl=new Set([this]):Dl.add(this));var U=b.stack;this.componentDidCatch(b.value,{componentStack:U!==null?U:""})})}function Yee(l,u,g,b,C){if(g.flags|=32768,b!==null&&typeof b=="object"&&typeof b.then=="function"){if(u=g.alternate,u!==null&&Yu(u,g,C,!0),g=Eo.current,g!==null){switch(g.tag){case 31:case 13:return vs===null?Rv():g.alternate===null&&kn===0&&(kn=3),g.flags&=-257,g.flags|=65536,g.lanes=C,b===av?g.flags|=16384:(u=g.updateQueue,u===null?g.updateQueue=new Set([b]):u.add(b),OC(l,b,C)),!1;case 22:return g.flags|=65536,b===av?g.flags|=16384:(u=g.updateQueue,u===null?(u={transitions:null,markerInstances:null,retryQueue:new Set([b])},g.updateQueue=u):(g=u.retryQueue,g===null?u.retryQueue=new Set([b]):g.add(b)),OC(l,b,C)),!1}throw Error(a(435,g.tag))}return OC(l,b,C),Rv(),!1}if(kt)return u=Eo.current,u!==null?((u.flags&65536)===0&&(u.flags|=256),u.flags|=65536,u.lanes=C,b!==jk&&(l=Error(a(422),{cause:b}),vf(fs(l,g)))):(b!==jk&&(u=Error(a(423),{cause:b}),vf(fs(u,g))),l=l.current.alternate,l.flags|=65536,C&=-C,l.lanes|=C,b=fs(b,g),C=mC(l.stateNode,b,C),zk(l,C),kn!==4&&(kn=2)),!1;var A=Error(a(520),{cause:b});if(A=fs(A,g),Of===null?Of=[A]:Of.push(A),kn!==4&&(kn=2),u===null)return!0;b=fs(b,g),g=u;do{switch(g.tag){case 3:return g.flags|=65536,l=C&-C,g.lanes|=l,l=mC(g.stateNode,b,l),zk(g,l),!1;case 1:if(u=g.type,A=g.stateNode,(g.flags&128)===0&&(typeof u.getDerivedStateFromError=="function"||A!==null&&typeof A.componentDidCatch=="function"&&(Dl===null||!Dl.has(A))))return g.flags|=65536,C&=-C,g.lanes|=C,C=PM(C),_M(C,l,g,b),zk(g,C),!1}g=g.return}while(g!==null);return!1}var pC=Error(a(461)),Ln=!1;function xa(l,u,g,b){u.child=l===null?MD(u,null,g,b):rd(u,l.child,g,b)}function jM(l,u,g,b,C){g=g.render;var A=u.ref;if("ref"in b){var D={};for(var U in b)U!=="ref"&&(D[U]=b[U])}else D=b;return nd(u),b=Wk(l,u,g,D,A,C),U=Yk(),l!==null&&!Ln?(Qk(l,u,C),Ai(l,u,C)):(kt&&U&&Pk(u),u.flags|=1,xa(l,u,b,C),u.child)}function NM(l,u,g,b,C){if(l===null){var A=g.type;return typeof A=="function"&&!Ak(A)&&A.defaultProps===void 0&&g.compare===null?(u.tag=15,u.type=A,DM(l,u,A,b,C)):(l=Xy(g.type,null,b,u,u.mode,C),l.ref=u.ref,l.return=u,u.child=l)}if(A=l.child,!$C(l,C)){var D=A.memoizedProps;if(g=g.compare,g=g!==null?g:gf,g(D,b)&&l.ref===u.ref)return Ai(l,u,C)}return u.flags|=1,l=xi(A,b),l.ref=u.ref,l.return=u,u.child=l}function DM(l,u,g,b,C){if(l!==null){var A=l.memoizedProps;if(gf(A,b)&&l.ref===u.ref)if(Ln=!1,u.pendingProps=b=A,$C(l,C))(l.flags&131072)!==0&&(Ln=!0);else return u.lanes=l.lanes,Ai(l,u,C)}return fC(l,u,g,b,C)}function MM(l,u,g,b){var C=b.children,A=l!==null?l.memoizedState:null;if(l===null&&u.stateNode===null&&(u.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),b.mode==="hidden"){if((u.flags&128)!==0){if(A=A!==null?A.baseLanes|g:g,l!==null){for(b=u.child=l.child,C=0;b!==null;)C=C|b.lanes|b.childLanes,b=b.sibling;b=C&~A}else b=0,u.child=null;return EM(l,u,A,g,b)}if((g&536870912)!==0)u.memoizedState={baseLanes:0,cachePool:null},l!==null&&tv(u,A!==null?A.cachePool:null),A!==null?OD(u,A):Hk(),LD(u);else return b=u.lanes=536870912,EM(l,u,A!==null?A.baseLanes|g:g,g,b)}else A!==null?(tv(u,A.cachePool),OD(u,A),Pl(),u.memoizedState=null):(l!==null&&tv(u,null),Hk(),Pl());return xa(l,u,C,g),u.child}function _f(l,u){return l!==null&&l.tag===22||u.stateNode!==null||(u.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),u.sibling}function EM(l,u,g,b,C){var A=Lk();return A=A===null?null:{parent:In._currentValue,pool:A},u.memoizedState={baseLanes:g,cachePool:A},l!==null&&tv(u,null),Hk(),LD(u),l!==null&&Yu(l,u,b,!0),u.childLanes=C,null}function yv(l,u){return u=bv({mode:u.mode,children:u.children},l.mode),u.ref=l.ref,l.child=u,u.return=l,u}function IM(l,u,g){return rd(u,l.child,null,g),l=yv(u,u.pendingProps),l.flags|=2,Io(u),u.memoizedState=null,l}function Qee(l,u,g){var b=u.pendingProps,C=(u.flags&128)!==0;if(u.flags&=-129,l===null){if(kt){if(b.mode==="hidden")return l=yv(u,b),u.lanes=536870912,_f(null,l);if(Kk(u),(l=dn)?(l=WE(l,ys),l=l!==null&&l.data==="&"?l:null,l!==null&&(u.memoizedState={dehydrated:l,treeContext:$l!==null?{id:_r,overflow:jr}:null,retryLane:536870912,hydrationErrors:null},g=bD(l),g.return=u,u.child=g,va=u,dn=null)):l=null,l===null)throw kl(u);return u.lanes=536870912,null}return yv(u,b)}var A=l.memoizedState;if(A!==null){var D=A.dehydrated;if(Kk(u),C)if(u.flags&256)u.flags&=-257,u=IM(l,u,g);else if(u.memoizedState!==null)u.child=l.child,u.flags|=128,u=null;else throw Error(a(558));else if(Ln||Yu(l,u,g,!1),C=(g&l.childLanes)!==0,Ln||C){if(b=en,b!==null&&(D=Vs(b,g),D!==0&&D!==A.retryLane))throw A.retryLane=D,Zc(l,D),yo(b,l,D),pC;Rv(),u=IM(l,u,g)}else l=A.treeContext,dn=bs(D.nextSibling),va=u,kt=!0,wl=null,ys=!1,l!==null&&wD(u,l),u=yv(u,b),u.flags|=4096;return u}return l=xi(l.child,{mode:b.mode,children:b.children}),l.ref=u.ref,u.child=l,l.return=u,l}function vv(l,u){var g=u.ref;if(g===null)l!==null&&l.ref!==null&&(u.flags|=4194816);else{if(typeof g!="function"&&typeof g!="object")throw Error(a(284));(l===null||l.ref!==g)&&(u.flags|=4194816)}}function fC(l,u,g,b,C){return nd(u),g=Wk(l,u,g,b,void 0,C),b=Yk(),l!==null&&!Ln?(Qk(l,u,C),Ai(l,u,C)):(kt&&b&&Pk(u),u.flags|=1,xa(l,u,g,C),u.child)}function OM(l,u,g,b,C,A){return nd(u),u.updateQueue=null,g=BD(u,b,g,C),UD(l),b=Yk(),l!==null&&!Ln?(Qk(l,u,A),Ai(l,u,A)):(kt&&b&&Pk(u),u.flags|=1,xa(l,u,g,A),u.child)}function LM(l,u,g,b,C){if(nd(u),u.stateNode===null){var A=Vu,D=g.contextType;typeof D=="object"&&D!==null&&(A=ba(D)),A=new g(b,A),u.memoizedState=A.state!==null&&A.state!==void 0?A.state:null,A.updater=uC,u.stateNode=A,A._reactInternals=u,A=u.stateNode,A.props=b,A.state=u.memoizedState,A.refs={},Bk(u),D=g.contextType,A.context=typeof D=="object"&&D!==null?ba(D):Vu,A.state=u.memoizedState,D=g.getDerivedStateFromProps,typeof D=="function"&&(dC(u,g,D,b),A.state=u.memoizedState),typeof g.getDerivedStateFromProps=="function"||typeof A.getSnapshotBeforeUpdate=="function"||typeof A.UNSAFE_componentWillMount!="function"&&typeof A.componentWillMount!="function"||(D=A.state,typeof A.componentWillMount=="function"&&A.componentWillMount(),typeof A.UNSAFE_componentWillMount=="function"&&A.UNSAFE_componentWillMount(),D!==A.state&&uC.enqueueReplaceState(A,A.state,null),Sf(u,b,A,C),Cf(),A.state=u.memoizedState),typeof A.componentDidMount=="function"&&(u.flags|=4194308),b=!0}else if(l===null){A=u.stateNode;var U=u.memoizedProps,Z=ld(g,U);A.props=Z;var le=A.context,be=g.contextType;D=Vu,typeof be=="object"&&be!==null&&(D=ba(be));var $e=g.getDerivedStateFromProps;be=typeof $e=="function"||typeof A.getSnapshotBeforeUpdate=="function",U=u.pendingProps!==U,be||typeof A.UNSAFE_componentWillReceiveProps!="function"&&typeof A.componentWillReceiveProps!="function"||(U||le!==D)&&CM(u,A,b,D),Sl=!1;var ue=u.memoizedState;A.state=ue,Sf(u,b,A,C),Cf(),le=u.memoizedState,U||ue!==le||Sl?(typeof $e=="function"&&(dC(u,g,$e,b),le=u.memoizedState),(Z=Sl||kM(u,g,Z,b,ue,le,D))?(be||typeof A.UNSAFE_componentWillMount!="function"&&typeof A.componentWillMount!="function"||(typeof A.componentWillMount=="function"&&A.componentWillMount(),typeof A.UNSAFE_componentWillMount=="function"&&A.UNSAFE_componentWillMount()),typeof A.componentDidMount=="function"&&(u.flags|=4194308)):(typeof A.componentDidMount=="function"&&(u.flags|=4194308),u.memoizedProps=b,u.memoizedState=le),A.props=b,A.state=le,A.context=D,b=Z):(typeof A.componentDidMount=="function"&&(u.flags|=4194308),b=!1)}else{A=u.stateNode,Fk(l,u),D=u.memoizedProps,be=ld(g,D),A.props=be,$e=u.pendingProps,ue=A.context,le=g.contextType,Z=Vu,typeof le=="object"&&le!==null&&(Z=ba(le)),U=g.getDerivedStateFromProps,(le=typeof U=="function"||typeof A.getSnapshotBeforeUpdate=="function")||typeof A.UNSAFE_componentWillReceiveProps!="function"&&typeof A.componentWillReceiveProps!="function"||(D!==$e||ue!==Z)&&CM(u,A,b,Z),Sl=!1,ue=u.memoizedState,A.state=ue,Sf(u,b,A,C),Cf();var he=u.memoizedState;D!==$e||ue!==he||Sl||l!==null&&l.dependencies!==null&&Jy(l.dependencies)?(typeof U=="function"&&(dC(u,g,U,b),he=u.memoizedState),(be=Sl||kM(u,g,be,b,ue,he,Z)||l!==null&&l.dependencies!==null&&Jy(l.dependencies))?(le||typeof A.UNSAFE_componentWillUpdate!="function"&&typeof A.componentWillUpdate!="function"||(typeof A.componentWillUpdate=="function"&&A.componentWillUpdate(b,he,Z),typeof A.UNSAFE_componentWillUpdate=="function"&&A.UNSAFE_componentWillUpdate(b,he,Z)),typeof A.componentDidUpdate=="function"&&(u.flags|=4),typeof A.getSnapshotBeforeUpdate=="function"&&(u.flags|=1024)):(typeof A.componentDidUpdate!="function"||D===l.memoizedProps&&ue===l.memoizedState||(u.flags|=4),typeof A.getSnapshotBeforeUpdate!="function"||D===l.memoizedProps&&ue===l.memoizedState||(u.flags|=1024),u.memoizedProps=b,u.memoizedState=he),A.props=b,A.state=he,A.context=Z,b=be):(typeof A.componentDidUpdate!="function"||D===l.memoizedProps&&ue===l.memoizedState||(u.flags|=4),typeof A.getSnapshotBeforeUpdate!="function"||D===l.memoizedProps&&ue===l.memoizedState||(u.flags|=1024),b=!1)}return A=b,vv(l,u),b=(u.flags&128)!==0,A||b?(A=u.stateNode,g=b&&typeof g.getDerivedStateFromError!="function"?null:A.render(),u.flags|=1,l!==null&&b?(u.child=rd(u,l.child,null,C),u.child=rd(u,null,g,C)):xa(l,u,g,C),u.memoizedState=A.state,l=u.child):l=Ai(l,u,C),l}function UM(l,u,g,b){return ed(),u.flags|=256,xa(l,u,g,b),u.child}var gC={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function hC(l){return{baseLanes:l,cachePool:RD()}}function yC(l,u,g){return l=l!==null?l.childLanes&~g:0,u&&(l|=Lo),l}function BM(l,u,g){var b=u.pendingProps,C=!1,A=(u.flags&128)!==0,D;if((D=A)||(D=l!==null&&l.memoizedState===null?!1:(Pn.current&2)!==0),D&&(C=!0,u.flags&=-129),D=(u.flags&32)!==0,u.flags&=-33,l===null){if(kt){if(C?Rl(u):Pl(),(l=dn)?(l=WE(l,ys),l=l!==null&&l.data!=="&"?l:null,l!==null&&(u.memoizedState={dehydrated:l,treeContext:$l!==null?{id:_r,overflow:jr}:null,retryLane:536870912,hydrationErrors:null},g=bD(l),g.return=u,u.child=g,va=u,dn=null)):l=null,l===null)throw kl(u);return JC(l)?u.lanes=32:u.lanes=536870912,null}var U=b.children;return b=b.fallback,C?(Pl(),C=u.mode,U=bv({mode:"hidden",children:U},C),b=Jc(b,C,g,null),U.return=u,b.return=u,U.sibling=b,u.child=U,b=u.child,b.memoizedState=hC(g),b.childLanes=yC(l,D,g),u.memoizedState=gC,_f(null,b)):(Rl(u),vC(u,U))}var Z=l.memoizedState;if(Z!==null&&(U=Z.dehydrated,U!==null)){if(A)u.flags&256?(Rl(u),u.flags&=-257,u=bC(l,u,g)):u.memoizedState!==null?(Pl(),u.child=l.child,u.flags|=128,u=null):(Pl(),U=b.fallback,C=u.mode,b=bv({mode:"visible",children:b.children},C),U=Jc(U,C,g,null),U.flags|=2,b.return=u,U.return=u,b.sibling=U,u.child=b,rd(u,l.child,null,g),b=u.child,b.memoizedState=hC(g),b.childLanes=yC(l,D,g),u.memoizedState=gC,u=_f(null,b));else if(Rl(u),JC(U)){if(D=U.nextSibling&&U.nextSibling.dataset,D)var le=D.dgst;D=le,b=Error(a(419)),b.stack="",b.digest=D,vf({value:b,source:null,stack:null}),u=bC(l,u,g)}else if(Ln||Yu(l,u,g,!1),D=(g&l.childLanes)!==0,Ln||D){if(D=en,D!==null&&(b=Vs(D,g),b!==0&&b!==Z.retryLane))throw Z.retryLane=b,Zc(l,b),yo(D,l,b),pC;ZC(U)||Rv(),u=bC(l,u,g)}else ZC(U)?(u.flags|=192,u.child=l.child,u=null):(l=Z.treeContext,dn=bs(U.nextSibling),va=u,kt=!0,wl=null,ys=!1,l!==null&&wD(u,l),u=vC(u,b.children),u.flags|=4096);return u}return C?(Pl(),U=b.fallback,C=u.mode,Z=l.child,le=Z.sibling,b=xi(Z,{mode:"hidden",children:b.children}),b.subtreeFlags=Z.subtreeFlags&65011712,le!==null?U=xi(le,U):(U=Jc(U,C,g,null),U.flags|=2),U.return=u,b.return=u,b.sibling=U,u.child=b,_f(null,b),b=u.child,U=l.child.memoizedState,U===null?U=hC(g):(C=U.cachePool,C!==null?(Z=In._currentValue,C=C.parent!==Z?{parent:Z,pool:Z}
vendor: 5,170 bytes, line 49
49:C):C=RD(),U={baseLanes:U.baseLanes|g,cachePool:C}),b.memoizedState=U,b.childLanes=yC(l,D,g),u.memoizedState=gC,_f(l.child,b)):(Rl(u),g=l.child,l=g.sibling,g=xi(g,{mode:"visible",children:b.children}),g.return=u,g.sibling=null,l!==null&&(D=u.deletions,D===null?(u.deletions=[l],u.flags|=16):D.push(l)),u.child=g,u.memoizedState=null,g)}function vC(l,u){return u=bv({mode:"visible",children:u},l.mode),u.return=l,l.child=u}function bv(l,u){return l=Mo(22,l,null,u),l.lanes=0,l}function bC(l,u,g){return rd(u,l.child,null,g),l=vC(u,u.pendingProps.children),l.flags|=2,u.memoizedState=null,l}function FM(l,u,g){l.lanes|=u;var b=l.alternate;b!==null&&(b.lanes|=u),Mk(l.return,u,g)}function xC(l,u,g,b,C,A){var D=l.memoizedState;D===null?l.memoizedState={isBackwards:u,rendering:null,renderingStartTime:0,last:b,tail:g,tailMode:C,treeForkCount:A}:(D.isBackwards=u,D.rendering=null,D.renderingStartTime=0,D.last=b,D.tail=g,D.tailMode=C,D.treeForkCount=A)}function zM(l,u,g){var b=u.pendingProps,C=b.revealOrder,A=b.tail;b=b.children;var D=Pn.current,U=(D&2)!==0;if(U?(D=D&1|2,u.flags|=128):D&=1,Q(Pn,D),xa(l,u,b,g),b=kt?yf:0,!U&&l!==null&&(l.flags&128)!==0)e:for(l=u.child;l!==null;){if(l.tag===13)l.memoizedState!==null&&FM(l,g,u);else if(l.tag===19)FM(l,g,u);else if(l.child!==null){l.child.return=l,l=l.child;continue}if(l===u)break e;for(;l.sibling===null;){if(l.return===null||l.return===u)break e;l=l.return}l.sibling.return=l.return,l=l.sibling}switch(C){case"forwards":for(g=u.child,C=null;g!==null;)l=g.alternate,l!==null&&iv(l)===null&&(C=g),g=g.sibling;g=C,g===null?(C=u.child,u.child=null):(C=g.sibling,g.sibling=null),xC(u,!1,C,g,A,b);break;case"backwards":case"unstable_legacy-backwards":for(g=null,C=u.child,u.child=null;C!==null;){if(l=C.alternate,l!==null&&iv(l)===null){u.child=C;break}l=C.sibling,C.sibling=g,g=C,C=l}xC(u,!0,g,null,A,b);break;case"together":xC(u,!1,null,null,void 0,b);break;default:u.memoizedState=null}return u.child}function Ai(l,u,g){if(l!==null&&(u.dependencies=l.dependencies),Nl|=u.lanes,(g&u.childLanes)===0)if(l!==null){if(Yu(l,u,g,!1),(g&u.childLanes)===0)return null}else return null;if(l!==null&&u.child!==l.child)throw Error(a(153));if(u.child!==null){for(l=u.child,g=xi(l,l.pendingProps),u.child=g,g.return=u;l.sibling!==null;)l=l.sibling,g=g.sibling=xi(l,l.pendingProps),g.return=u;g.sibling=null}return u.child}function $C(l,u){return(l.lanes&u)!==0?!0:(l=l.dependencies,!!(l!==null&&Jy(l)))}function Xee(l,u,g){switch(u.tag){case 3:we(u,u.stateNode.containerInfo),Cl(u,In,l.memoizedState.cache),ed();break;case 27:case 5:ye(u);break;case 4:we(u,u.stateNode.containerInfo);break;case 10:Cl(u,u.type,u.memoizedProps.value);break;case 31:if(u.memoizedState!==null)return u.flags|=128,Kk(u),null;break;case 13:var b=u.memoizedState;if(b!==null)return b.dehydrated!==null?(Rl(u),u.flags|=128,null):(g&u.child.childLanes)!==0?BM(l,u,g):(Rl(u),l=Ai(l,u,g),l!==null?l.sibling:null);Rl(u);break;case 19:var C=(l.flags&128)!==0;if(b=(g&u.childLanes)!==0,b||(Yu(l,u,g,!1),b=(g&u.childLanes)!==0),C){if(b)return zM(l,u,g);u.flags|=128}if(C=u.memoizedState,C!==null&&(C.rendering=null,C.tail=null,C.lastEffect=null),Q(Pn,Pn.current),b)break;return null;case 22:return u.lanes=0,MM(l,u,g,u.pendingProps);case 24:Cl(u,In,l.memoizedState.cache)}return Ai(l,u,g)}function qM(l,u,g){if(l!==null)if(l.memoizedProps!==u.pendingProps)Ln=!0;else{if(!$C(l,g)&&(u.flags&128)===0)return Ln=!1,Xee(l,u,g);Ln=(l.flags&131072)!==0}else Ln=!1,kt&&(u.flags&1048576)!==0&&$D(u,yf,u.index);switch(u.lanes=0,u.tag){case 16:e:{var b=u.pendingProps;if(l=od(u.elementType),u.type=l,typeof l=="function")Ak(l)?(b=ld(l,b),u.tag=1,u=LM(null,u,l,b,g)):(u.tag=0,u=fC(null,u,l,b,g));else{if(l!=null){var C=l.$$typeof;if(C===R){u.tag=11,u=jM(null,u,l,b,g);break e}else if(C===j){u.tag=14,u=NM(null,u,l,b,g);break e}}throw u=V(l)||l,Error(a(306,u,""))}}return u;case 0:return fC(l,u,u.type,u.pendingProps,g);case 1:return b=u.type,C=ld(b,u.pendingProps),LM(l,u,b,C,g);case 3:e:{if(we(u,u.stateNode.containerInfo),l===null)throw Error(a(387));b=u.pendingProps;var A=u.memoizedState;C=A.element,Fk(l,u),Sf(u,b,null,g);var D=u.memoizedState;if(b=D.cache,Cl(u,In,b),b!==A.cache&&Ek(u,[In],g,!0),Cf(),b=D.element,A.isDehydrated)if(A={element:b,isDehydrated:!1,cache:D.cache},u.updateQueue.baseState=A,u.memoizedState=A,u.flags&256){u=UM(l,u,b,g);break e}else if(b!==C){C=fs(Error(a(424)),u),vf(C),u=UM(l,u,b,g);break e}else{switch(l=u.stateNode.containerInfo,l.nodeType){case 9:l=l.body;break;default:l=l.nodeName==="HTML"?l.ownerDocument.body:l}for(dn=bs(l.firstChild),va=u,kt=!0,wl=null,ys=!0,g=MD(u,null,b,g),u.child=g;g;)g.flags=g.flags&-3|4096,g=g.sibling}else{if(ed(),b===C){u=Ai(l,u,g);break e}xa(l,u,b,g)}u=u.child}return u;case 26:return vv(l,u),l===null?(g=eI(u.type,null,u.pendingProps,null))?u.memoizedState=g:kt||(g=u.type,l=u.pendingProps,b=Ev(pe.current).createElement(g),b[ya]=u,b[uo]=l,$a(b,g,l),aa(b),u.stateNode=b):u.memoizedState=eI(u.type,l.memoizedProps,u.pendingProps,l.memoizedState),null;case 27:return ye(u),l===null&&kt&&(b=u.stateNode=XE(u.type,u.pendingProps,pe.current),va=u,ys=!0,C=dn,Ol(u.type)?(e1=C,dn=bs(b.firstChild)):dn=C),xa(l,u,u.pen
vendor: 4,633 bytes, line 49
49dingProps.children,g),vv(l,u),l===null&&(u.flags|=4194304),u.child;case 5:return l===null&&kt&&((C=b=dn)&&(b=Tte(b,u.type,u.pendingProps,ys),b!==null?(u.stateNode=b,va=u,dn=bs(b.firstChild),ys=!1,C=!0):C=!1),C||kl(u)),ye(u),C=u.type,A=u.pendingProps,D=l!==null?l.memoizedProps:null,b=A.children,YC(C,A)?b=null:D!==null&&YC(C,D)&&(u.flags|=32),u.memoizedState!==null&&(C=Wk(l,u,zee,null,null,g),Vf._currentValue=C),vv(l,u),xa(l,u,b,g),u.child;case 6:return l===null&&kt&&((l=g=dn)&&(g=Rte(g,u.pendingProps,ys),g!==null?(u.stateNode=g,va=u,dn=null,l=!0):l=!1),l||kl(u)),null;case 13:return BM(l,u,g);case 4:return we(u,u.stateNode.containerInfo),b=u.pendingProps,l===null?u.child=rd(u,null,b,g):xa(l,u,b,g),u.child;case 11:return jM(l,u,u.type,u.pendingProps,g);case 7:return xa(l,u,u.pendingProps,g),u.child;case 8:return xa(l,u,u.pendingProps.children,g),u.child;case 12:return xa(l,u,u.pendingProps.children,g),u.child;case 10:return b=u.pendingProps,Cl(u,u.type,b.value),xa(l,u,b.children,g),u.child;case 9:return C=u.type._context,b=u.pendingProps.children,nd(u),C=ba(C),b=b(C),u.flags|=1,xa(l,u,b,g),u.child;case 14:return NM(l,u,u.type,u.pendingProps,g);case 15:return DM(l,u,u.type,u.pendingProps,g);case 19:return zM(l,u,g);case 31:return Qee(l,u,g);case 22:return MM(l,u,g,u.pendingProps);case 24:return nd(u),b=ba(In),l===null?(C=Lk(),C===null&&(C=en,A=Ik(),C.pooledCache=A,A.refCount++,A!==null&&(C.pooledCacheLanes|=g),C=A),u.memoizedState={parent:b,cache:C},Bk(u),Cl(u,In,C)):((l.lanes&g)!==0&&(Fk(l,u),Sf(u,null,null,g),Cf()),C=l.memoizedState,A=u.memoizedState,C.parent!==b?(C={parent:b,cache:b},u.memoizedState=C,u.lanes===0&&(u.memoizedState=u.updateQueue.baseState=C),Cl(u,In,b)):(b=A.cache,Cl(u,In,b),b!==C.cache&&Ek(u,[In],g,!0))),xa(l,u,u.pendingProps.children,g),u.child;case 29:throw u.pendingProps}throw Error(a(156,u.tag))}function Ti(l){l.flags|=4}function wC(l,u,g,b,C){if((u=(l.mode&32)!==0)&&(u=!1),u){if(l.flags|=16777216,(C&335544128)===C)if(l.stateNode.complete)l.flags|=8192;else if(hE())l.flags|=8192;else throw sd=av,Uk}else l.flags&=-16777217}function HM(l,u){if(u.type!=="stylesheet"||(u.state.loading&4)!==0)l.flags&=-16777217;else if(l.flags|=16777216,!sI(u))if(hE())l.flags|=8192;else throw sd=av,Uk}function xv(l,u){u!==null&&(l.flags|=4),l.flags&16384&&(u=l.tag!==22?Jt():536870912,l.lanes|=u,im|=u)}function jf(l,u){if(!kt)switch(l.tailMode){case"hidden":u=l.tail;for(var g=null;u!==null;)u.alternate!==null&&(g=u),u=u.sibling;g===null?l.tail=null:g.sibling=null;break;case"collapsed":g=l.tail;for(var b=null;g!==null;)g.alternate!==null&&(b=g),g=g.sibling;b===null?u||l.tail===null?l.tail=null:l.tail.sibling=null:b.sibling=null}}function un(l){var u=l.alternate!==null&&l.alternate.child===l.child,g=0,b=0;if(u)for(var C=l.child;C!==null;)g|=C.lanes|C.childLanes,b|=C.subtreeFlags&65011712,b|=C.flags&65011712,C.return=l,C=C.sibling;else for(C=l.child;C!==null;)g|=C.lanes|C.childLanes,b|=C.subtreeFlags,b|=C.flags,C.return=l,C=C.sibling;return l.subtreeFlags|=b,l.childLanes=g,u}function Zee(l,u,g){var b=u.pendingProps;switch(_k(u),u.tag){case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return un(u),null;case 1:return un(u),null;case 3:return g=u.stateNode,b=null,l!==null&&(b=l.memoizedState.cache),u.memoizedState.cache!==b&&(u.flags|=2048),ki(In),me(),g.pendingContext&&(g.context=g.pendingContext,g.pendingContext=null),(l===null||l.child===null)&&(Wu(u)?Ti(u):l===null||l.memoizedState.isDehydrated&&(u.flags&256)===0||(u.flags|=1024,Nk())),un(u),null;case 26:var C=u.type,A=u.memoizedState;return l===null?(Ti(u),A!==null?(un(u),HM(u,A)):(un(u),wC(u,C,null,b,g))):A?A!==l.memoizedState?(Ti(u),un(u),HM(u,A)):(un(u),u.flags&=-16777217):(l=l.memoizedProps,l!==b&&Ti(u),un(u),wC(u,C,l,b,g)),null;case 27:if(_e(u),g=pe.current,C=u.type,l!==null&&u.stateNode!=null)l.memoizedProps!==b&&Ti(u);else{if(!b){if(u.stateNode===null)throw Error(a(166));return un(u),null}l=de.current,Wu(u)?kD(u):(l=XE(C,b,g),u.stateNode=l,Ti(u))}return un(u),null;case 5:if(_e(u),C=u.type,l!==null&&u.stateNode!=null)l.memoizedProps!==b&&Ti(u);else{if(!b){if(u.stateNode===null)throw Error(a(166));return un(u),null}if(A=de.current,Wu(u))kD(u);else{var D=Ev(pe.current);switch(A){case 1:A=D.createElementNS("http://www.w3.org/2000/svg",C);break;case 2:A=D.createElementNS("http://www.w3.org/1998/Math/MathML",C);break;default:switch(C){case"svg":A=D.createElementNS("http://www.w3.org/2000/svg",C);break;case"math":A=D.createElementNS("http://www.w3.org/1998/Math/MathML",C);break;case"script":A=D.createElement("div"),A.innerHTML="<script><\/script>",A=A.removeChild(A.firstChild);break;
vendor: 25,095 bytes, line 49
49case"select":A=typeof b.is=="string"?D.createElement("select",{is:b.is}):D.createElement("select"),b.multiple?A.multiple=!0:b.size&&(A.size=b.size);break;default:A=typeof b.is=="string"?D.createElement(C,{is:b.is}):D.createElement(C)}}A[ya]=u,A[uo]=b;e:for(D=u.child;D!==null;){if(D.tag===5||D.tag===6)A.appendChild(D.stateNode);else if(D.tag!==4&&D.tag!==27&&D.child!==null){D.child.return=D,D=D.child;continue}if(D===u)break e;for(;D.sibling===null;){if(D.return===null||D.return===u)break e;D=D.return}D.sibling.return=D.return,D=D.sibling}u.stateNode=A;e:switch($a(A,C,b),C){case"button":case"input":case"select":case"textarea":b=!!b.autoFocus;break e;case"img":b=!0;break e;default:b=!1}b&&Ti(u)}}return un(u),wC(u,u.type,l===null?null:l.memoizedProps,u.pendingProps,g),null;case 6:if(l&&u.stateNode!=null)l.memoizedProps!==b&&Ti(u);else{if(typeof b!="string"&&u.stateNode===null)throw Error(a(166));if(l=pe.current,Wu(u)){if(l=u.stateNode,g=u.memoizedProps,b=null,C=va,C!==null)switch(C.tag){case 27:case 5:b=C.memoizedProps}l[ya]=u,l=!!(l.nodeValue===g||b!==null&&b.suppressHydrationWarning===!0||BE(l.nodeValue,g)),l||kl(u,!0)}else l=Ev(l).createTextNode(b),l[ya]=u,u.stateNode=l}return un(u),null;case 31:if(g=u.memoizedState,l===null||l.memoizedState!==null){if(b=Wu(u),g!==null){if(l===null){if(!b)throw Error(a(318));if(l=u.memoizedState,l=l!==null?l.dehydrated:null,!l)throw Error(a(557));l[ya]=u}else ed(),(u.flags&128)===0&&(u.memoizedState=null),u.flags|=4;un(u),l=!1}else g=Nk(),l!==null&&l.memoizedState!==null&&(l.memoizedState.hydrationErrors=g),l=!0;if(!l)return u.flags&256?(Io(u),u):(Io(u),null);if((u.flags&128)!==0)throw Error(a(558))}return un(u),null;case 13:if(b=u.memoizedState,l===null||l.memoizedState!==null&&l.memoizedState.dehydrated!==null){if(C=Wu(u),b!==null&&b.dehydrated!==null){if(l===null){if(!C)throw Error(a(318));if(C=u.memoizedState,C=C!==null?C.dehydrated:null,!C)throw Error(a(317));C[ya]=u}else ed(),(u.flags&128)===0&&(u.memoizedState=null),u.flags|=4;un(u),C=!1}else C=Nk(),l!==null&&l.memoizedState!==null&&(l.memoizedState.hydrationErrors=C),C=!0;if(!C)return u.flags&256?(Io(u),u):(Io(u),null)}return Io(u),(u.flags&128)!==0?(u.lanes=g,u):(g=b!==null,l=l!==null&&l.memoizedState!==null,g&&(b=u.child,C=null,b.alternate!==null&&b.alternate.memoizedState!==null&&b.alternate.memoizedState.cachePool!==null&&(C=b.alternate.memoizedState.cachePool.pool),A=null,b.memoizedState!==null&&b.memoizedState.cachePool!==null&&(A=b.memoizedState.cachePool.pool),A!==C&&(b.flags|=2048)),g!==l&&g&&(u.child.flags|=8192),xv(u,u.updateQueue),un(u),null);case 4:return me(),l===null&&HC(u.stateNode.containerInfo),un(u),null;case 10:return ki(u.type),un(u),null;case 19:if(G(Pn),b=u.memoizedState,b===null)return un(u),null;if(C=(u.flags&128)!==0,A=b.rendering,A===null)if(C)jf(b,!1);else{if(kn!==0||l!==null&&(l.flags&128)!==0)for(l=u.child;l!==null;){if(A=iv(l),A!==null){for(u.flags|=128,jf(b,!1),l=A.updateQueue,u.updateQueue=l,xv(u,l),u.subtreeFlags=0,l=g,g=u.child;g!==null;)vD(g,l),g=g.sibling;return Q(Pn,Pn.current&1|2),kt&&$i(u,b.treeForkCount),u.child}l=l.sibling}b.tail!==null&&rt()>Sv&&(u.flags|=128,C=!0,jf(b,!1),u.lanes=4194304)}else{if(!C)if(l=iv(A),l!==null){if(u.flags|=128,C=!0,l=l.updateQueue,u.updateQueue=l,xv(u,l),jf(b,!0),b.tail===null&&b.tailMode==="hidden"&&!A.alternate&&!kt)return un(u),null}else 2*rt()-b.renderingStartTime>Sv&&g!==536870912&&(u.flags|=128,C=!0,jf(b,!1),u.lanes=4194304);b.isBackwards?(A.sibling=u.child,u.child=A):(l=b.last,l!==null?l.sibling=A:u.child=A,b.last=A)}return b.tail!==null?(l=b.tail,b.rendering=l,b.tail=l.sibling,b.renderingStartTime=rt(),l.sibling=null,g=Pn.current,Q(Pn,C?g&1|2:g&1),kt&&$i(u,b.treeForkCount),l):(un(u),null);case 22:case 23:return Io(u),Vk(),b=u.memoizedState!==null,l!==null?l.memoizedState!==null!==b&&(u.flags|=8192):b&&(u.flags|=8192),b?(g&536870912)!==0&&(u.flags&128)===0&&(un(u),u.subtreeFlags&6&&(u.flags|=8192)):un(u),g=u.updateQueue,g!==null&&xv(u,g.retryQueue),g=null,l!==null&&l.memoizedState!==null&&l.memoizedState.cachePool!==null&&(g=l.memoizedState.cachePool.pool),b=null,u.memoizedState!==null&&u.memoizedState.cachePool!==null&&(b=u.memoizedState.cachePool.pool),b!==g&&(u.flags|=2048),l!==null&&G(ad),null;case 24:return g=null,l!==null&&(g=l.memoizedState.cache),u.memoizedState.cache!==g&&(u.flags|=2048),ki(In),un(u),null;case 25:return null;case 30:return null}throw Error(a(156,u.tag))}function Jee(l,u){switch(_k(u),u.tag){case 1:return l=u.flags,l&65536?(u.flags=l&-65537|128,u):null;case 3:return ki(In),me(),l=u.flags,(l&65536)!==0&&(l&128)===0?(u.flags=l&-65537|128,u):null;case 26:case 27:case 5:return _e(u),null;case 31:if(u.memoizedState!==null){if(Io(u),u.alternate===null)throw Error(a(340));ed()}return l=u.flags,l&65536?(u.flags=l&-65537|128,u):null;case 13:if(Io(u),l=u.memoizedState,l!==null&&l.dehydrated!==null){if(u.alternate===null)throw Error(a(340));ed()}return l=u.flags,l&65536?(u.flags=l&-65537|128,u):null;case 19:return G(Pn),null;case 4:return me(),null;case 10:return ki(u.type),null;case 22:case 23:return Io(u),Vk(),l!==null&&G(ad),l=u.flags,l&65536?(u.flags=l&-65537|128,u):null;case 24:return ki(In),null;case 25:return null;default:return null}}function VM(l,u){switch(_k(u),u.tag){case 3:ki(In),me();break;case 26:case 27:case 5:_e(u);break;case 4:me();break;case 31:u.memoizedState!==null&&Io(u);break;case 13:Io(u);break;case 19:G(Pn);break;case 10:ki(u.type);break;case 22:case 23:Io(u),Vk(),l!==null&&G(ad);break;case 24:ki(In)}}function Nf(l,u){try{var g=u.updateQueue,b=g!==null?g.lastEffect:null;if(b!==null){var C=b.next;g=C;do{if((g.tag&l)===l){b=void 0;var A=g.create,D=g.inst;b=A(),D.destroy=b}g=g.next}while(g!==C)}}catch(U){Ft(u,u.return,U)}}function _l(l,u,g){try{var b=u.updateQueue,C=b!==null?b.lastEffect:null;if(C!==null){var A=C.next;b=A;do{if((b.tag&l)===l){var D=b.inst,U=D.destroy;if(U!==void 0){D.destroy=void 0,C=u;var Z=g,le=U;try{le()}catch(be){Ft(C,Z,be)}}}b=b.next}while(b!==A)}}catch(be){Ft(u,u.return,be)}}function KM(l){var u=l.updateQueue;if(u!==null){var g=l.stateNode;try{ID(u,g)}catch(b){Ft(l,l.return,b)}}}function GM(l,u,g){g.props=ld(l.type,l.memoizedProps),g.state=l.memoizedState;try{g.componentWillUnmount()}catch(b){Ft(l,u,b)}}function Df(l,u){try{var g=l.ref;if(g!==null){switch(l.tag){case 26:case 27:case 5:var b=l.stateNode;break;case 30:b=l.stateNode;break;default:b=l.stateNode}typeof g=="function"?l.refCleanup=g(b):g.current=b}}catch(C){Ft(l,u,C)}}function Nr(l,u){var g=l.ref,b=l.refCleanup;if(g!==null)if(typeof b=="function")try{b()}catch(C){Ft(l,u,C)}finally{l.refCleanup=null,l=l.alternate,l!=null&&(l.refCleanup=null)}else if(typeof g=="function")try{g(null)}catch(C){Ft(l,u,C)}else g.current=null}function WM(l){var u=l.type,g=l.memoizedProps,b=l.stateNode;try{e:switch(u){case"button":case"input":case"select":case"textarea":g.autoFocus&&b.focus();break e;case"img":g.src?b.src=g.src:g.srcSet&&(b.srcset=g.srcSet)}}catch(C){Ft(l,l.return,C)}}function kC(l,u,g){try{var b=l.stateNode;$te(b,l.type,g,u),b[uo]=u}catch(C){Ft(l,l.return,C)}}function YM(l){return l.tag===5||l.tag===3||l.tag===26||l.tag===27&&Ol(l.type)||l.tag===4}function CC(l){e:for(;;){for(;l.sibling===null;){if(l.return===null||YM(l.return))return null;l=l.return}for(l.sibling.return=l.return,l=l.sibling;l.tag!==5&&l.tag!==6&&l.tag!==18;){if(l.tag===27&&Ol(l.type)||l.flags&2||l.child===null||l.tag===4)continue e;l.child.return=l,l=l.child}if(!(l.flags&2))return l.stateNode}}function SC(l,u,g){var b=l.tag;if(b===5||b===6)l=l.stateNode,u?(g.nodeType===9?g.body:g.nodeName==="HTML"?g.ownerDocument.body:g).insertBefore(l,u):(u=g.nodeType===9?g.body:g.nodeName==="HTML"?g.ownerDocument.body:g,u.appendChild(l),g=g._reactRootContainer,g!=null||u.onclick!==null||(u.onclick=vi));else if(b!==4&&(b===27&&Ol(l.type)&&(g=l.stateNode,u=null),l=l.child,l!==null))for(SC(l,u,g),l=l.sibling;l!==null;)SC(l,u,g),l=l.sibling}function $v(l,u,g){var b=l.tag;if(b===5||b===6)l=l.stateNode,u?g.insertBefore(l,u):g.appendChild(l);else if(b!==4&&(b===27&&Ol(l.type)&&(g=l.stateNode),l=l.child,l!==null))for($v(l,u,g),l=l.sibling;l!==null;)$v(l,u,g),l=l.sibling}function QM(l){var u=l.stateNode,g=l.memoizedProps;try{for(var b=l.type,C=u.attributes;C.length;)u.removeAttributeNode(C[0]);$a(u,b,g),u[ya]=l,u[uo]=g}catch(A){Ft(l,l.return,A)}}var Ri=!1,Un=!1,AC=!1,XM=typeof WeakSet=="function"?WeakSet:Set,oa=null;function ete(l,u){if(l=l.containerInfo,GC=zv,l=cD(l),bk(l)){if("selectionStart"in l)var g={start:l.selectionStart,end:l.selectionEnd};else e:{g=(g=l.ownerDocument)&&g.defaultView||window;var b=g.getSelection&&g.getSelection();if(b&&b.rangeCount!==0){g=b.anchorNode;var C=b.anchorOffset,A=b.focusNode;b=b.focusOffset;try{g.nodeType,A.nodeType}catch{g=null;break e}var D=0,U=-1,Z=-1,le=0,be=0,$e=l,ue=null;t:for(;;){for(var he;$e!==g||C!==0&&$e.nodeType!==3||(U=D+C),$e!==A||b!==0&&$e.nodeType!==3||(Z=D+b),$e.nodeType===3&&(D+=$e.nodeValue.length),(he=$e.firstChild)!==null;)ue=$e,$e=he;for(;;){if($e===l)break t;if(ue===g&&++le===C&&(U=D),ue===A&&++be===b&&(Z=D),(he=$e.nextSibling)!==null)break;$e=ue,ue=$e.parentNode}$e=he}g=U===-1||Z===-1?null:{start:U,end:Z}}else g=null}g=g||{start:0,end:0}}else g=null;for(WC={focusedElem:l,selectionRange:g},zv=!1,oa=u;oa!==null;)if(u=oa,l=u.child,(u.subtreeFlags&1028)!==0&&l!==null)l.return=u,oa=l;else for(;oa!==null;){switch(u=oa,A=u.alternate,l=u.flags,u.tag){case 0:if((l&4)!==0&&(l=u.updateQueue,l=l!==null?l.events:null,l!==null))for(g=0;g<l.length;g++)C=l[g],C.ref.impl=C.nextImpl;break;case 11:case 15:break;case 1:if((l&1024)!==0&&A!==null){l=void 0,g=u,C=A.memoizedProps,A=A.memoizedState,b=g.stateNode;try{var Ve=ld(g.type,C);l=b.getSnapshotBeforeUpdate(Ve,A),b.__reactInternalSnapshotBeforeUpdate=l}catch(et){Ft(g,g.return,et)}}break;case 3:if((l&1024)!==0){if(l=u.stateNode.containerInfo,g=l.nodeType,g===9)XC(l);else if(g===1)switch(l.nodeName){case"HEAD":case"HTML":case"BODY":XC(l);break;default:l.textContent=""}}break;case 5:case 26:case 27:case 6:case 4:case 17:break;default:if((l&1024)!==0)throw Error(a(163))}if(l=u.sibling,l!==null){l.return=u.return,oa=l;break}oa=u.return}}function ZM(l,u,g){var b=g.flags;switch(g.tag){case 0:case 11:case 15:_i(l,g),b&4&&Nf(5,g);break;case 1:if(_i(l,g),b&4)if(l=g.stateNode,u===null)try{l.componentDidMount()}catch(D){Ft(g,g.return,D)}else{var C=ld(g.type,u.memoizedProps);u=u.memoizedState;try{l.componentDidUpdate(C,u,l.__reactInternalSnapshotBeforeUpdate)}catch(D){Ft(g,g.return,D)}}b&64&&KM(g),b&512&&Df(g,g.return);break;case 3:if(_i(l,g),b&64&&(l=g.updateQueue,l!==null)){if(u=null,g.child!==null)switch(g.child.tag){case 27:case 5:u=g.child.stateNode;break;case 1:u=g.child.stateNode}try{ID(l,u)}catch(D){Ft(g,g.return,D)}}break;case 27:u===null&&b&4&&QM(g);case 26:case 5:_i(l,g),u===null&&b&4&&WM(g),b&512&&Df(g,g.return);break;case 12:_i(l,g);break;case 31:_i(l,g),b&4&&tE(l,g);break;case 13:_i(l,g),b&4&&nE(l,g),b&64&&(l=g.memoizedState,l!==null&&(l=l.dehydrated,l!==null&&(g=cte.bind(null,g),Pte(l,g))));break;case 22:if(b=g.memoizedState!==null||Ri,!b){u=u!==null&&u.memoizedState!==null||Un,C=Ri;var A=Un;Ri=b,(Un=u)&&!A?ji(l,g,(g.subtreeFlags&8772)!==0):_i(l,g),Ri=C,Un=A}break;case 30:break;default:_i(l,g)}}function JM(l){var u=l.alternate;u!==null&&(l.alternate=null,JM(u)),l.child=null,l.deletions=null,l.sibling=null,l.tag===5&&(u=l.stateNode,u!==null&&nk(u)),l.stateNode=null,l.return=null,l.dependencies=null,l.memoizedProps=null,l.memoizedState=null,l.pendingProps=null,l.stateNode=null,l.updateQueue=null}var hn=null,po=!1;function Pi(l,u,g){for(g=g.child;g!==null;)eE(l,u,g),g=g.sibling}function eE(l,u,g){if(Mn&&typeof Mn.onCommitFiberUnmount=="function")try{Mn.onCommitFiberUnmount(hi,g)}catch{}switch(g.tag){case 26:Un||Nr(g,u),Pi(l,u,g),g.memoizedState?g.memoizedState.count--:g.stateNode&&(g=g.stateNode,g.parentNode.removeChild(g));break;case 27:Un||Nr(g,u);var b=hn,C=po;Ol(g.type)&&(hn=g.stateNode,po=!1),Pi(l,u,g),zf(g.stateNode),hn=b,po=C;break;case 5:Un||Nr(g,u);case 6:if(b=hn,C=po,hn=null,Pi(l,u,g),hn=b,po=C,hn!==null)if(po)try{(hn.nodeType===9?hn.body:hn.nodeName==="HTML"?hn.ownerDocument.body:hn).removeChild(g.stateNode)}catch(A){Ft(g,u,A)}else try{hn.removeChild(g.stateNode)}catch(A){Ft(g,u,A)}break;case 18:hn!==null&&(po?(l=hn,KE(l.nodeType===9?l.body:l.nodeName==="HTML"?l.ownerDocument.body:l,g.stateNode),gm(l)):KE(hn,g.stateNode));break;case 4:b=hn,C=po,hn=g.stateNode.containerInfo,po=!0,Pi(l,u,g),hn=b,po=C;break;case 0:case 11:case 14:case 15:_l(2,g,u),Un||_l(4,g,u),Pi(l,u,g);break;case 1:Un||(Nr(g,u),b=g.stateNode,typeof b.componentWillUnmount=="function"&&GM(g,u,b)),Pi(l,u,g);break;case 21:Pi(l,u,g);break;case 22:Un=(b=Un)||g.memoizedState!==null,Pi(l,u,g),Un=b;break;default:Pi(l,u,g)}}function tE(l,u){if(u.memoizedState===null&&(l=u.alternate,l!==null&&(l=l.memoizedState,l!==null))){l=l.dehydrated;try{gm(l)}catch(g){Ft(u,u.return,g)}}}function nE(l,u){if(u.memoizedState===null&&(l=u.alternate,l!==null&&(l=l.memoizedState,l!==null&&(l=l.dehydrated,l!==null))))try{gm(l)}catch(g){Ft(u,u.return,g)}}function tte(l){switch(l.tag){case 31:case 13:case 19:var u=l.stateNode;return u===null&&(u=l.stateNode=new XM),u;case 22:return l=l.stateNode,u=l._retryCache,u===null&&(u=l._retryCache=new XM),u;default:throw Error(a(435,l.tag))}}function wv(l,u){var g=tte(l);u.forEach(function(b){if(!g.has(b)){g.add(b);var C=dte.bind(null,l,b);b.then(C,C)}})}function fo(l,u){var g=u.deletions;if(g!==null)for(var b=0;b<g.length;b++){var C=g[b],A=l,D=u,U=D;e:for(;U!==null;){switch(U.tag){case 27:if(Ol(U.type)){hn=U.stateNode,po=!1;break e}break;case 5:hn=U.stateNode,po=!1;break e;case 3:case 4:hn=U.stateNode.containerInfo,po=!0;break e}U=U.return}if(hn===null)throw Error(a(160));eE(A,D,C),hn=null,po=!1,A=C.alternate,A!==null&&(A.return=null),C.return=null}if(u.subtreeFlags&13886)for(u=u.child;u!==null;)aE(u,l),u=u.sibling}var Gs=null;function aE(l,u){var g=l.alternate,b=l.flags;switch(l.tag){case 0:case 11:case 14:case 15:fo(u,l),go(l),b&4&&(_l(3,l,l.return),Nf(3,l),_l(5,l,l.return));break;case 1:fo(u,l),go(l),b&512&&(Un||g===null||Nr(g,g.return)),b&64&&Ri&&(l=l.updateQueue,l!==null&&(b=l.callbacks,b!==null&&(g=l.shared.hiddenCallbacks,l.shared.hiddenCallbacks=g===null?b:g.concat(b))));break;case 26:var C=Gs;if(fo(u,l),go(l),b&512&&(Un||g===null||Nr(g,g.return)),b&4){var A=g!==null?g.memoizedState:null;if(b=l.memoizedState,g===null)if(b===null)if(l.stateNode===null){e:{b=l.type,g=l.memoizedProps,C=C.ownerDocument||C;t:switch(b){case"title":A=C.getElementsByTagName("title")[0],(!A||A[sf]||A[ya]||A.namespaceURI==="http://www.w3.org/2000/svg"||A.hasAttribute("itemprop"))&&(A=C.createElement(b),C.head.insertBefore(A,C.querySelector("head > title"))),$a(A,b,g),A[ya]=l,aa(A),b=A;break e;case"link":var D=aI("link","href",C).get(b+(g.href||""));if(D){for(var U=0;U<D.length;U++)if(A=D[U],A.getAttribute("href")===(g.href==null||g.href===""?null:g.href)&&A.getAttribute("rel")===(g.rel==null?null:g.rel)&&A.getAttribute("title")===(g.title==null?null:g.title)&&A.getAttribute("crossorigin")===(g.crossOrigin==null?null:g.crossOrigin)){D.splice(U,1);break t}}A=C.createElement(b),$a(A,b,g),C.head.appendChild(A);break;case"meta":if(D=aI("meta","content",C).get(b+(g.content||""))){for(U=0;U<D.length;U++)if(A=D[U],A.getAttribute("content")===(g.content==null?null:""+g.content)&&A.getAttribute("name")===(g.name==null?null:g.name)&&A.getAttribute("property")===(g.property==null?null:g.property)&&A.getAttribute("http-equiv")===(g.httpEquiv==null?null:g.httpEquiv)&&A.getAttribute("charset")===(g.charSet==null?null:g.charSet)){D.splice(U,1);break t}}A=C.createElement(b),$a(A,b,g),C.head.appendChild(A);break;default:throw Error(a(468,b))}A[ya]=l,aa(A),b=A}l.stateNode=b}else oI(C,l.type,l.stateNode);else l.stateNode=nI(C,b,l.memoizedProps);else A!==b?(A===null?g.stateNode!==null&&(g=g.stateNode,g.parentNode.removeChild(g)):A.count--,b===null?oI(C,l.type,l.stateNode):nI(C,b,l.memoizedProps)):b===null&&l.stateNode!==null&&kC(l,l.memoizedProps,g.memoizedProps)}break;case 27:fo(u,l),go(l),b&512&&(Un||g===null||Nr(g,g.return)),g!==null&&b&4&&kC(l,l.memoizedProps,g.memoizedProps);break;case 5:if(fo(u,l),go(l),b&512&&(Un||g===null||Nr(g,g.return)),l.flags&32){C=l.stateNode;try{Lu(C,"")}catch(Ve){Ft(l,l.return,Ve)}}b&4&&l.stateNode!=null&&(C=l.memoizedProps,kC(l,C,g!==null?g.memoizedProps:C)),b&1024&&(AC=!0);break;case 6:if(fo(u,l),go(l),b&4){if(l.stateNode===null)throw Error(a(162));b=l.memoizedProps,g=l.stateNode;try{g.nodeValue=b}catch(Ve){Ft(l,l.return,Ve)}}break;case 3:if(Lv=null,C=Gs,Gs=Iv(u.containerInfo),fo(u,l),Gs=C,go(l),b&4&&g!==null&&g.memoizedState.isDehydrated)try{gm(u.containerInfo)}catch(Ve){Ft(l,l.return,Ve)}AC&&(AC=!1,oE(l));break;case 4:b=Gs,Gs=Iv(l.stateNode.containerInfo),fo(u,l),go(l),Gs=b;break;case 12:fo(u,l),go(l);break;case 31:fo(u,l),go(l),b&4&&(b=l.updateQueue,b!==null&&(l.updateQueue=null,wv(l,b)));break;case 13:fo(u,l),go(l),l.child.flags&8192&&l.memoizedState!==null!=(g!==null&&g.memoizedState!==null)&&(Cv=rt()),b&4&&(b=l.updateQueue,b!==null&&(l.updateQueue=null,wv(l,b)));break;case 22:C=l.memoizedState!==null;var Z=g!==null&&g.memoizedState!==null,le=Ri,be=Un;if(Ri=le||C,Un=be||Z,fo(u,l),Un=be,Ri=le,go(l),b&8192)e:for(u=l.stateNode,u._visibility=C?u._visibility&-2:u._visibility|1,C&&(g===null||Z||Ri||Un||cd(l)),g=null,u=l;;){if(u.tag===5||u.tag===26){if(g===null){Z=g=u;try{if(A=Z.stateNode,C)D=A.style,typeof D.setProperty=="function"?D.setProperty("display","none","important"):D.display="none";else{U=Z.stateNode;var $e=Z.memoizedProps.style,ue=$e!=null&&$e.hasOwnProperty("display")?$e.display:null;U.style.display=ue==null||typeof ue=="boolean"?"":(""+ue).trim()}}catch(Ve){Ft(Z,Z.return,Ve)}}}else if(u.tag===6){if(g===null){Z=u;try{Z.stateNode.nodeValue=C?"":Z.memoizedProps}catch(Ve){Ft(Z,Z.return,Ve)}}}else if(u.tag===18){if(g===null){Z=u;try{var he=Z.stateNode;C?GE(he,!0):GE(Z.stateNode,!1)}catch(Ve){Ft(Z,Z.return,Ve)}}}else if((u.tag!==22&&u.tag!==23||u.memoizedState===null||u===l)&&u.child!==null){u.child.return=u,u=u.child;continue}if(u===l)break e;for(;u.sibling===null;){if(u.return===null||u.return===l)break e;g===u&&(g=null),u=u.return}g===u&&(g=null),u.sibling.return=u.return,u=u.sibling}b&4&&(b=l.updateQueue,b!==null&&(g=b.retryQueue,g!==null&&(b.retryQueue=null,wv(l,g))));break;case 19:fo(u,l),go(l),b&4&&(b=l.updateQueue,b!==null&&(l.updateQueue=null,wv(l,b)));break;case 30:break;case 21:break;default:fo(u,l),go(l)}}function go(l){var u=l.flags;if(u&2){try{for(var g,b=l.return;b!==null;){if(YM(b)){g=b;break}b=b.return}if(g==null)throw Error(a(160));switch(g.tag){case 27:var C=g.stateNode,A=CC(l);$v(l,A,C);break;case 5:var D=g.stateNode;g.flags&32&&(Lu(D,""),g.flags&=-33);var U=CC(l);$v(l,U,D);break;case 3:case 4:var Z=g.stateNode.containerInfo,le=CC(l);SC(l,le,Z);break;default:throw Error(a(161))}}catch(be){Ft(l,l.return,be)}l.flags&=-3}u&4096&&(l.flags&=-4097)}function oE(l){if(l.subtreeFlags&1024)for(l=l.child;l!==null;){var u=l;oE(u),u.tag===5&&u.flags&1024&&u.stateNode.reset(),l=l.sibling}}function _i(l,u){if(u.subtreeFlags&8772)for(u=u.child;u!==null;)ZM(l,u.alternate,u),u=u.sibling}function cd(l){for(l=l.child;l!==null;){var u=l;switch(u.tag){case 0:case 11:case 14:case 15:_l(4,u,u.return),cd(u);break;case 1:Nr(u,u.return);var g=u.stateNode;typeof g.componentWillUnmount=="function"&&GM(u,u.return,g),cd(u);break;case 27:zf(u.stateNode);case 26:case 5:Nr(u,u.return),cd(u);break;case 22:u.memoizedState===null&&cd(u);break;case 30:cd(u);break;default:cd(u)}l=l.sibling}}function ji(l,u,g){for(g=g&&(u.subtreeFlags&8772)!==0,u=u.child;u!==null;){var b=u.alternate,C=l,A=u,D=A.flags;switch(A.tag){case 0:case 11:case 15:ji(C,A,g),Nf(4,A);break;case 1:if(ji(C,A,g),b=A,C=b.stateNode,typeof C.componentDidMount=="function")try{C.componentDidMount()}catch(le){Ft(b,b.return,le)}if(b=A,C=b.updateQueue,C!==null){var U=b.stateNode;try{var Z=C.shared.hiddenCallbacks;if(Z!==null)for(C.shared.hiddenCallbacks=null,C=0;C<Z.length;C++)ED(Z[C],U)}catch(le){Ft(b,b.return,le)}}g&&D&64&&KM(A),Df(A,A.return);break;case 27:QM(A);case 26:case 5:ji(C,A,g),g&&b===null&&D&4&&WM(A),Df(A,A.return);break;case 12:ji(C,A,g);break;case 31:ji(C,A,g),g&&D&4&&tE(C,A);break;case 13:ji(C,A,g),g&&D&4&&nE(C,A);break;case 22:A.memoizedState===null&&ji(C,A,g),Df(A,A.return);break;case 30:break;default:ji(C,A,g)}u=u.sibling}}function TC(l,u){var g=null;l!==null&&l.memoizedState!==null&&l.memoizedState.cachePool!==null&&(g=l.memoizedState.cachePool.pool),l=null,u.memoizedState!==null&&u.memoizedState.cachePool!==null&&(l=u.memoizedState.cachePool.pool),l!==g&&(l!=null&&l.refCount++,g!=null&&bf(g))}function RC(l,u){l=null,u.alternate!==null&&(l=u.alternate.memoizedState.cache),u=u.memoizedState.cache,u!==l&&(u.refCount++,l!=null&&bf(l))}function Ws(l,u,g,b){if(u.subtreeFlags&10256)for(u=u.child;u!==null;)sE(l,u,g,b),u=u.sibling}function sE(l,u,g,b){var C=u.flags;switch(u.tag){case 0:case 11:case 15:Ws(l,u,g,b),C&2048&&Nf(9,u);break;case 1:Ws(l,u,g,b);break;case 3:Ws(l,u,g,b),C&2048&&(l=null,u.alternate!==null&&(l=u.alternate.memoizedState.cache),u=u.memoizedState.cache,u!==l&&(u.refCount++,l!=null&&bf(l)));break;case 12:if(C&2048){Ws(l,u,g,b),l=u.stateNode;try{var A=u.memoizedProps,D=A.id,U=A.onPostCommit;typeof U=="function"&&U(D,u.alternate===null?"mount":"update",l.passiveEffectDuration,-0)}catch(Z){Ft(u,u.return,Z)}}else Ws(l,u,g,b);break;case 31:Ws(l,u,g,b);break;case 13:Ws(l,u,g,b);break;case 23:break;case 22:A=u.stateNode,D=u.alternate,u.memoizedState!==null?A._visibility&2?Ws(l,u,g,b):Mf(l,u):A._visibility&2?Ws(l,u,g,b):(A._visibility|=2,om(l,u,g,b,(u.subtreeFlags&10256)!==0||!1)),C&2048&&TC(D,u);break;case 24:Ws(l,u,g,b),C&2048&&RC(u.alternate,u);break;default:Ws(l,u,g,b)}}function om(l,u,g,b,C){for(C=C&&((u.subtreeFlags&10256)!==0||!1),u=u.child;u!==null;){var A=l,D=u,U=g,Z=b,le=D.flags;switch(D.tag){case 0:case 11:case 15:om(A,D,U,Z,C),Nf(8,D);break;case 23:break;case 22:var be=D.stateNode;D.memoizedState!==null?be._visibility&2?om(A,D,U,Z,C):Mf(A,D):(be._visibility|=2,om(A,D,U,Z,C)),C&&le&2048&&TC(D.alternate,D);break;case 24:om(A,D,U,Z,C),C&&le&2048&&RC(D.alternate,D);break;default:om(A,D,U,Z,C)}u=u.sibling}}function Mf(l,u){if(u.subtreeFlags&10256)for(u=u.child;u!==null;){var g=l,b=u,C=b.flags;switch(b.tag){case 22:Mf(g,b),C&2048&&TC(b.alternate,b);break;case 24:Mf(g,b),C&2048&&RC(b.alternate,b);break;default:Mf(g,b)}u=u.sibling}}var Ef=8192;function sm(l,u,g){if(l.subtreeFlags&Ef)for(l=l.child;l!==null;)rE(l,u,g),l=l.sibling}function rE(l,u,g){switch(l.tag){case 26:sm(l,u,g),l.flags&Ef&&l.memoizedState!==null&&Fte(g,Gs,l.memoizedState,l.memoizedProps);break;case 5:sm(l,u,g);break;case 3:case 4:var b=Gs;Gs=Iv(l.stateNode.containerInfo),sm(l,u,g),Gs=b;break;case 22:l.memoizedState===null&&(b=l.alternate,b!==null&&b.memoizedState!==null?(b=Ef,Ef=16777216,sm(l,u,g),Ef=b):sm(l,u,g));break;default:sm(l,u,g)}}function iE(l){var u=l.alternate;if(u!==null&&(l=u.child,l!==null)){u.child=null;do u=l.sibling,l.sibling=null,l=u;while(l!==null)}}function If(l){var u=l.deletions;if((l.flags&16)!==0){if(u!==null)for(var g=0;g<u.length;g++){var b=u[g];oa=b,cE(b,l)}iE(l)}if(l.subtreeFlags&10256)for(l=l.child;l!==null;)lE(l),l=l.sibling}function lE(l){switch(l.tag){case 0:case 11:case 15:If(l),l.flags&2048&&_l(9,l,l.return);break;case 3:If(l);break;case 12:If(l);break;case 22:var u=l.stateNode;l.memoizedState!==null&&u._visibility&2&&(l.return===null||l.return.tag!==13)?(u._visibility&=-3,kv(l)):If(l);break;default:If(l)}}function kv(l){var u=l.deletions;if((l.flags&16)!==0){if(u!==null)for(var g=0;g<u.length;g++){var b=u[g];oa=b,cE(b,l)}iE(l)}for(l=l.child;l!==null;){switch(u=l,u.tag){case 0:case 11:case 15:_l(8,u,u.return),kv(u);break;case 22:g=u.stateNode,g._visibility&2&&(g._visibility&=-3,kv(u));break;default:kv(u)}l=l.sibling}}function cE(l,u){for(;oa!==null;){var g=oa;switch(g.tag){case 0:case 11:case 15:_l(8,g,u);break;case 23:case 22:if(g.memoizedState!==null&&g.memoizedState.cachePool!==null){var b=g.memoizedState.cachePool.pool;b!=null&&b.refCount++}break;case 24:bf(g.memoizedState.cache)}if(b=g.child,b!==null)b.return=g,oa=b;else e:for(g=l;oa!==null;){b=oa;var C=b.sibling,A=b.return;if(JM(b),b===g){oa=null;break e}if(C!==null){C.return=A,oa=C;break e}oa=A}}}var nte={getCacheForType:function(l){var u=ba(In),g=u.data.get(l);return g===void 0&&(g=l(),u.data.set(l,g)),g},cacheSignal:function(){return ba(In).controller.signal}},ate=typeof WeakMap=="function"?WeakMap:Map,Dt=0,en=null,bt=null,$t=0,Bt=0,Oo=null,jl=!1,rm=!1,PC=!1,Ni=0,kn=0,Nl=0,dd=0,_C=0,Lo=0,im=0,Of=null,ho=null,jC=!1,Cv=0,dE=0,Sv=1/0,Av=null,Dl=null,Kn=0,Ml=null,lm=null,Di=0,NC=0,DC=null,uE=null,Lf=0,MC=null;function Uo(){return(Dt&2)!==0&&$t!==0?$t&-$t:q.T!==null?BC():TN()}function mE(){if(Lo===0)if(($t&536870912)===0||kt){var l=_u;_u<<=1,(_u&3932160)===0&&(_u=262144),Lo=l}else Lo=536870912;return l=Eo.current,l!==null&&(l.flags|=32),Lo}function yo(l,u,g){(l===en&&(Bt===2||Bt===9)||l.cancelPendingCommit!==null)&&(cm(l,0),El(l,$t,Lo,!1)),ha(l,g),((Dt&2)===0||l!==en)&&(l===en&&((Dt&2)===0&&(
vendor: 15,825 bytes, line 49
49dd|=g),kn===4&&El(l,$t,Lo,!1)),Dr(l))}function pE(l,u,g){if((Dt&6)!==0)throw Error(a(327));var b=!g&&(u&127)===0&&(u&l.expiredLanes)===0||nt(l,u),C=b?rte(l,u):IC(l,u,!0),A=b;do{if(C===0){rm&&!b&&El(l,u,0,!1);break}else{if(g=l.current.alternate,A&&!ote(g)){C=IC(l,u,!1),A=!1;continue}if(C===2){if(A=u,l.errorRecoveryDisabledLanes&A)var D=0;else D=l.pendingLanes&-536870913,D=D!==0?D:D&536870912?536870912:0;if(D!==0){u=D;e:{var U=l;C=Of;var Z=U.current.memoizedState.isDehydrated;if(Z&&(cm(U,D).flags|=256),D=IC(U,D,!1),D!==2){if(PC&&!Z){U.errorRecoveryDisabledLanes|=A,dd|=A,C=4;break e}A=ho,ho=C,A!==null&&(ho===null?ho=A:ho.push.apply(ho,A))}C=D}if(A=!1,C!==2)continue}}if(C===1){cm(l,0),El(l,u,0,!0);break}e:{switch(b=l,A=C,A){case 0:case 1:throw Error(a(345));case 4:if((u&4194048)!==u)break;case 6:El(b,u,Lo,!jl);break e;case 2:ho=null;break;case 3:case 5:break;default:throw Error(a(329))}if((u&62914560)===u&&(C=Cv+300-rt(),10<C)){if(El(b,u,Lo,!jl),ju(b,0,!0)!==0)break e;Di=u,b.timeoutHandle=HE(fE.bind(null,b,g,ho,Av,jC,u,Lo,dd,im,jl,A,"Throttled",-0,0),C);break e}fE(b,g,ho,Av,jC,u,Lo,dd,im,jl,A,null,-0,0)}}break}while(!0);Dr(l)}function fE(l,u,g,b,C,A,D,U,Z,le,be,$e,ue,he){if(l.timeoutHandle=-1,$e=u.subtreeFlags,$e&8192||($e&16785408)===16785408){$e={stylesheets:null,count:0,imgCount:0,imgBytes:0,suspenseyImages:[],waitingForImages:!0,waitingForViewTransition:!1,unsuspend:vi},rE(u,A,$e);var Ve=(A&62914560)===A?Cv-rt():(A&4194048)===A?dE-rt():0;if(Ve=zte($e,Ve),Ve!==null){Di=A,l.cancelPendingCommit=Ve(wE.bind(null,l,u,A,g,b,C,D,U,Z,be,$e,null,ue,he)),El(l,A,D,!le);return}}wE(l,u,A,g,b,C,D,U,Z)}function ote(l){for(var u=l;;){var g=u.tag;if((g===0||g===11||g===15)&&u.flags&16384&&(g=u.updateQueue,g!==null&&(g=g.stores,g!==null)))for(var b=0;b<g.length;b++){var C=g[b],A=C.getSnapshot;C=C.value;try{if(!Do(A(),C))return!1}catch{return!1}}if(g=u.child,u.subtreeFlags&16384&&g!==null)g.return=u,u=g;else{if(u===l)break;for(;u.sibling===null;){if(u.return===null||u.return===l)return!0;u=u.return}u.sibling.return=u.return,u=u.sibling}}return!0}function El(l,u,g,b){u&=~_C,u&=~dd,l.suspendedLanes|=u,l.pingedLanes&=~u,b&&(l.warmLanes|=u),b=l.expirationTimes;for(var C=u;0<C;){var A=31-En(C),D=1<<A;b[A]=-1,C&=~D}g!==0&&Pr(l,g,u)}function Tv(){return(Dt&6)===0?(Uf(0),!1):!0}function EC(){if(bt!==null){if(Bt===0)var l=bt.return;else l=bt,wi=td=null,Xk(l),Ju=null,$f=0,l=bt;for(;l!==null;)VM(l.alternate,l),l=l.return;bt=null}}function cm(l,u){var g=l.timeoutHandle;g!==-1&&(l.timeoutHandle=-1,Cte(g)),g=l.cancelPendingCommit,g!==null&&(l.cancelPendingCommit=null,g()),Di=0,EC(),en=l,bt=g=xi(l.current,null),$t=u,Bt=0,Oo=null,jl=!1,rm=nt(l,u),PC=!1,im=Lo=_C=dd=Nl=kn=0,ho=Of=null,jC=!1,(u&8)!==0&&(u|=u&32);var b=l.entangledLanes;if(b!==0)for(l=l.entanglements,b&=u;0<b;){var C=31-En(b),A=1<<C;u|=l[C],b&=~A}return Ni=u,Wy(),g}function gE(l,u){ut=null,q.H=Pf,u===Zu||u===nv?(u=jD(),Bt=3):u===Uk?(u=jD(),Bt=4):Bt=u===pC?8:u!==null&&typeof u=="object"&&typeof u.then=="function"?6:1,Oo=u,bt===null&&(kn=1,hv(l,fs(u,l.current)))}function hE(){var l=Eo.current;return l===null?!0:($t&4194048)===$t?vs===null:($t&62914560)===$t||($t&536870912)!==0?l===vs:!1}function yE(){var l=q.H;return q.H=Pf,l===null?Pf:l}function vE(){var l=q.A;return q.A=nte,l}function Rv(){kn=4,jl||($t&4194048)!==$t&&Eo.current!==null||(rm=!0),(Nl&134217727)===0&&(dd&134217727)===0||en===null||El(en,$t,Lo,!1)}function IC(l,u,g){var b=Dt;Dt|=2;var C=yE(),A=vE();(en!==l||$t!==u)&&(Av=null,cm(l,u)),u=!1;var D=kn;e:do try{if(Bt!==0&&bt!==null){var U=bt,Z=Oo;switch(Bt){case 8:EC(),D=6;break e;case 3:case 2:case 9:case 6:Eo.current===null&&(u=!0);var le=Bt;if(Bt=0,Oo=null,dm(l,U,Z,le),g&&rm){D=0;break e}break;default:le=Bt,Bt=0,Oo=null,dm(l,U,Z,le)}}ste(),D=kn;break}catch(be){gE(l,be)}while(!0);return u&&l.shellSuspendCounter++,wi=td=null,Dt=b,q.H=C,q.A=A,bt===null&&(en=null,$t=0,Wy()),D}function ste(){for(;bt!==null;)bE(bt)}function rte(l,u){var g=Dt;Dt|=2;var b=yE(),C=vE();en!==l||$t!==u?(Av=null,Sv=rt()+500,cm(l,u)):rm=nt(l,u);e:do try{if(Bt!==0&&bt!==null){u=bt;var A=Oo;t:switch(Bt){case 1:Bt=0,Oo=null,dm(l,u,A,1);break;case 2:case 9:if(PD(A)){Bt=0,Oo=null,xE(u);break}u=function(){Bt!==2&&Bt!==9||en!==l||(Bt=7),Dr(l)},A.then(u,u);break e;case 3:Bt=7;break e;case 4:Bt=5;break e;case 7:PD(A)?(Bt=0,Oo=null,xE(u)):(Bt=0,Oo=null,dm(l,u,A,7));break;case 5:var D=null;switch(bt.tag){case 26:D=bt.memoizedState;case 5:case 27:var U=bt;if(D?sI(D):U.stateNode.complete){Bt=0,Oo=null;var Z=U.sibling;if(Z!==null)bt=Z;else{var le=U.return;le!==null?(bt=le,Pv(le)):bt=null}break t}}Bt=0,Oo=null,dm(l,u,A,5);break;case 6:Bt=0,Oo=null,dm(l,u,A,6);break;case 8:EC(),kn=6;break e;default:throw Error(a(462))}}ite();break}catch(be){gE(l,be)}while(!0);return wi=td=null,q.H=b,q.A=C,Dt=g,bt!==null?0:(en=null,$t=0,Wy(),kn)}function ite(){for(;bt!==null&&!fe();)bE(bt)}function bE(l){var u=qM(l.alternate,l,Ni);l.memoizedProps=l.pendingProps,u===null?Pv(l):bt=u}function xE(l){var u=l,g=u.alternate;switch(u.tag){case 15:case 0:u=OM(g,u,u.pendingProps,u.type,void 0,$t);break;case 11:u=OM(g,u,u.pendingProps,u.type.render,u.ref,$t);break;case 5:Xk(u);default:VM(g,u),u=bt=vD(u,Ni),u=qM(g,u,Ni)}l.memoizedProps=l.pendingProps,u===null?Pv(l):bt=u}function dm(l,u,g,b){wi=td=null,Xk(u),Ju=null,$f=0;var C=u.return;try{if(Yee(l,C,u,g,$t)){kn=1,hv(l,fs(g,l.current)),bt=null;return}}catch(A){if(C!==null)throw bt=C,A;kn=1,hv(l,fs(g,l.current)),bt=null;return}u.flags&32768?(kt||b===1?l=!0:rm||($t&536870912)!==0?l=!1:(jl=l=!0,(b===2||b===9||b===3||b===6)&&(b=Eo.current,b!==null&&b.tag===13&&(b.flags|=16384))),$E(u,l)):Pv(u)}function Pv(l){var u=l;do{if((u.flags&32768)!==0){$E(u,jl);return}l=u.return;var g=Zee(u.alternate,u,Ni);if(g!==null){bt=g;return}if(u=u.sibling,u!==null){bt=u;return}bt=u=l}while(u!==null);kn===0&&(kn=5)}function $E(l,u){do{var g=Jee(l.alternate,l);if(g!==null){g.flags&=32767,bt=g;return}if(g=l.return,g!==null&&(g.flags|=32768,g.subtreeFlags=0,g.deletions=null),!u&&(l=l.sibling,l!==null)){bt=l;return}bt=l=g}while(l!==null);kn=6,bt=null}function wE(l,u,g,b,C,A,D,U,Z){l.cancelPendingCommit=null;do _v();while(Kn!==0);if((Dt&6)!==0)throw Error(a(327));if(u!==null){if(u===l.current)throw Error(a(177));if(A=u.lanes|u.childLanes,A|=Ck,Rr(l,g,A,D,U,Z),l===en&&(bt=en=null,$t=0),lm=u,Ml=l,Di=g,NC=A,DC=C,uE=b,(u.subtreeFlags&10256)!==0||(u.flags&10256)!==0?(l.callbackNode=null,l.callbackPriority=0,ute(ds,function(){return TE(),null})):(l.callbackNode=null,l.callbackPriority=0),b=(u.flags&13878)!==0,(u.subtreeFlags&13878)!==0||b){b=q.T,q.T=null,C=M.p,M.p=2,D=Dt,Dt|=4;try{ete(l,u,g)}finally{Dt=D,M.p=C,q.T=b}}Kn=1,kE(),CE(),SE()}}function kE(){if(Kn===1){Kn=0;var l=Ml,u=lm,g=(u.flags&13878)!==0;if((u.subtreeFlags&13878)!==0||g){g=q.T,q.T=null;var b=M.p;M.p=2;var C=Dt;Dt|=4;try{aE(u,l);var A=WC,D=cD(l.containerInfo),U=A.focusedElem,Z=A.selectionRange;if(D!==U&&U&&U.ownerDocument&&lD(U.ownerDocument.documentElement,U)){if(Z!==null&&bk(U)){var le=Z.start,be=Z.end;if(be===void 0&&(be=le),"selectionStart"in U)U.selectionStart=le,U.selectionEnd=Math.min(be,U.value.length);else{var $e=U.ownerDocument||document,ue=$e&&$e.defaultView||window;if(ue.getSelection){var he=ue.getSelection(),Ve=U.textContent.length,et=Math.min(Z.start,Ve),Wt=Z.end===void 0?et:Math.min(Z.end,Ve);!he.extend&&et>Wt&&(D=Wt,Wt=et,et=D);var oe=iD(U,et),te=iD(U,Wt);if(oe&&te&&(he.rangeCount!==1||he.anchorNode!==oe.node||he.anchorOffset!==oe.offset||he.focusNode!==te.node||he.focusOffset!==te.offset)){var re=$e.createRange();re.setStart(oe.node,oe.offset),he.removeAllRanges(),et>Wt?(he.addRange(re),he.extend(te.node,te.offset)):(re.setEnd(te.node,te.offset),he.addRange(re))}}}}for($e=[],he=U;he=he.parentNode;)he.nodeType===1&&$e.push({element:he,left:he.scrollLeft,top:he.scrollTop});for(typeof U.focus=="function"&&U.focus(),U=0;U<$e.length;U++){var xe=$e[U];xe.element.scrollLeft=xe.left,xe.element.scrollTop=xe.top}}zv=!!GC,WC=GC=null}finally{Dt=C,M.p=b,q.T=g}}l.current=u,Kn=2}}function CE(){if(Kn===2){Kn=0;var l=Ml,u=lm,g=(u.flags&8772)!==0;if((u.subtreeFlags&8772)!==0||g){g=q.T,q.T=null;var b=M.p;M.p=2;var C=Dt;Dt|=4;try{ZM(l,u.alternate,u)}finally{Dt=C,M.p=b,q.T=g}}Kn=3}}function SE(){if(Kn===4||Kn===3){Kn=0,Ne();var l=Ml,u=lm,g=Di,b=uE;(u.subtreeFlags&10256)!==0||(u.flags&10256)!==0?Kn=5:(Kn=0,lm=Ml=null,AE(l,l.pendingLanes));var C=l.pendingLanes;if(C===0&&(Dl=null),ek(g),u=u.stateNode,Mn&&typeof Mn.onCommitFiberRoot=="function")try{Mn.onCommitFiberRoot(hi,u,void 0,(u.current.flags&128)===128)}catch{}if(b!==null){u=q.T,C=M.p,M.p=2,q.T=null;try{for(var A=l.onRecoverableError,D=0;D<b.length;D++){var U=b[D];A(U.value,{componentStack:U.stack})}}finally{q.T=u,M.p=C}}(Di&3)!==0&&_v(),Dr(l),C=l.pendingLanes,(g&261930)!==0&&(C&42)!==0?l===MC?Lf++:(Lf=0,MC=l):Lf=0,Uf(0)}}function AE(l,u){(l.pooledCacheLanes&=u)===0&&(u=l.pooledCache,u!=null&&(l.pooledCache=null,bf(u)))}function _v(){return kE(),CE(),SE(),TE()}function TE(){if(Kn!==5)return!1;var l=Ml,u=NC;NC=0;var g=ek(Di),b=q.T,C=M.p;try{M.p=32>g?32:g,q.T=null,g=DC,DC=null;var A=Ml,D=Di;if(Kn=0,lm=Ml=null,Di=0,(Dt&6)!==0)throw Error(a(331));var U=Dt;if(Dt|=4,lE(A.current),sE(A,A.current,D,g),Dt=U,Uf(0,!1),Mn&&typeof Mn.onPostCommitFiberRoot=="function")try{Mn.onPostCommitFiberRoot(hi,A)}catch{}return!0}finally{M.p=C,q.T=b,AE(l,u)}}function RE(l,u,g){u=fs(g,u),u=mC(l.stateNode,u,2),l=Tl(l,u,2),l!==null&&(ha(l,2),Dr(l))}function Ft(l,u,g){if(l.tag===3)RE(l,l,g);else for(;u!==null;){if(u.tag===3){RE(u,l,g);break}else if(u.tag===1){var b=u.stateNode;if(typeof u.type.getDerivedStateFromError=="function"||typeof b.componentDidCatch=="function"&&(Dl===null||!Dl.has(b))){l=fs(g,l),g=PM(2),b=Tl(u,g,2),b!==null&&(_M(g,b,u,l),ha(b,2),Dr(b));break}}u=u.return}}function OC(l,u,g){var b=l.pingCache;if(b===null){b=l.pingCache=new ate;var C=new Set;b.set(u,C)}else C=b.get(u),C===void 0&&(C=new Set,b.set(u,C));C.has(g)||(PC=!0,C.add(g),l=lte.bind(null,l,u,g),u.then(l,l))}function lte(l,u,g){var b=l.pingCache;b!==null&&b.delete(u),l.pingedLanes|=l.suspendedLanes&g,l.warmLanes&=~g,en===l&&($t&g)===g&&(kn===4||kn===3&&($t&62914560)===$t&&300>rt()-Cv?(Dt&2)===0&&cm(l,0):_C|=g,im===$t&&(im=0)),Dr(l)}function PE(l,u){u===0&&(u=Jt()),l=Zc(l,u),l!==null&&(ha(l,u),Dr(l))}function cte(l){var u=l.memoizedState,g=0;u!==null&&(g=u.retryLane),PE(l,g)}function dte(l,u){var g=0;switch(l.tag){case 31:case 13:var b=l.stateNode,C=l.memoizedState;C!==null&&(g=C.retryLane);break;case 19:b=l.stateNode;break;case 22:b=l.stateNode._retryCache;break;default:throw Error(a(314))}b!==null&&b.delete(u),PE(l,g)}function ute(l,u){return qs(l,u)}var jv=null,um=null,LC=!1,Nv=!1,UC=!1,Il=0;function Dr(l){l!==um&&l.next===null&&(um===null?jv=um=l:um=um.next=l),Nv=!0,LC||(LC=!0,pte())}function Uf(l,u){if(!UC&&Nv){UC=!0;do for(var g=!1,b=jv;b!==null;){if(l!==0){var C=b.pendingLanes;if(C===0)var A=0;else{var D=b.suspendedLanes,U=b.pingedLanes;A=(1<<31-En(42|l)+1)-1,A&=C&~(D&~U),A=A&201326741?A&201326741|1:A?A|2:0}A!==0&&(g=!0,DE(b,A))}else A=$t,A=ju(b,b===en?A:0,b.cancelPendingCommit!==null||b.timeoutHandle!==-1),(A&3)===0||nt(b,A)||(g=!0,DE(b,A));b=b.next}while(g);UC=!1}}function mte(){_E()}function _E(){Nv=LC=!1;var l=0;Il!==0&&kte()&&(l=Il);for(var u=rt(),g=null,b=jv;b!==null;){var C=b.next,A=jE(b,u);A===0?(b.next=null,g===null?jv=C:g.next=C,C===null&&(um=g)):(g=b,(l!==0||(A&3)!==0)&&(Nv=!0)),b=C}Kn!==0&&Kn!==5||Uf(l),Il!==0&&(Il=0)}function jE(l,u){for(var g=l.suspendedLanes,b=l.pingedLanes,C=l.expirationTimes,A=l.pendingLanes&-62914561;0<A;){var D=31-En(A),U=1<<D,Z=C[D];Z===-1?((U&g)===0||(U&b)!==0)&&(C[D]=Et(U,u)):Z<=u&&(l.expiredLanes|=U),A&=~U}if(u=en,g=$t,g=ju(l,l===u?g:0,l.cancelPendingCommit!==null||l.timeoutHandle!==-1),b=l.callbackNode,g===0||l===u&&(Bt===2||Bt===9)||l.cancelPendingCommit!==null)return b!==null&&b!==null&&yt(b),l.callbackNode=null,l.callbackPriority=0;if((g&3)===0||nt(l,g)){if(u=g&-g,u===l.callbackPriority)return u;switch(b!==null&&yt(b),ek(g)){case 2:case 8:g=vn;break;case 32:g=ds;break;case 268435456:g=Kc;break;default:g=ds}return b=NE.bind(null,l),g=qs(g,b),l.callbackPriority=u,l.callbackNode=g,u}return b!==null&&b!==null&&yt(b),l.callbackPriority=2,l.callbackNode=null,2}function NE(l,u){if(Kn!==0&&Kn!==5)return l.callbackNode=null,l.callbackPriority=0,null;var g=l.callbackNode;if(_v()&&l.callbackNode!==g)return null;var b=$t;return b=ju(l,l===en?b:0,l.cancelPendingCommit!==null||l.timeoutHandle!==-1),b===0?null:(pE(l,b,u),jE(l,rt()),l.callbackNode!=null&&l.callbackNode===g?NE.bind(null,l):null)}function DE(l,u){if(_v())return null;pE(l,u,!0)}function pte(){Ste(function(){(Dt&6)!==0?qs(cn,mte):_E()})}function BC(){if(Il===0){var l=Qu;l===0&&(l=Gc,Gc<<=1,(Gc&261888)===0&&(Gc=256)),Il=l}return Il}function ME(l){return l==null||typeof l=="symbol"||typeof l=="boolean"?null:typeof l=="function"?l:By(""+l)}function EE(l,u){var g=u.ownerDocument.createElement("input");return g.name=u.name,g.value=u.value,l.id&&g.setAttribute("form",l.id),u.parentNode.insertBefore(g,u),l=new FormData(l),g.parentNode.removeChild(g),l}function fte(l,u,g,b,C){if(u==="submit"&&g&&g.stateNode===C){var A=ME((C[uo]||null).action),D=b.submitter;D&&(u=(u=D[uo]||null)?ME(u.formAction):D.getAttribute("formAction"),u!==null&&(A=u,D=null));var U=new Hy("action","action",null,b,C);l.push({event:U,listeners:[{instance:null,listener:function(){if(b.defaultPrevented){if(Il!==0){var Z=D?EE(C,D):new FormData(C);rC(g,{pending:!0,data:Z,method:C.method,action:A},null,Z)}}else typeof A=="function"&&(U.preventDefault(),Z=D?EE(C,D):new FormData(C),rC(g,{pending:!0,data:Z,method:C.method,action:A},A,Z))},currentTarget:C}]})}}for(var FC=0;FC<kk.length;FC++){var zC=kk[FC],gte=zC.toLowerCase(),hte=zC[0].toUpperCase()+zC.slice(1);Ks(gte,"on"+hte)}Ks(mD,"onAnimationEnd"),Ks(pD,"onAnimationIteration"),Ks(fD,"onAnimationStart"),Ks("dblclick","onDoubleClick"),Ks("focusin","onFocus"),Ks("focusout","onBlur"),Ks(Nee,"onTransitionRun"),Ks(Dee,"onTransitionStart"),Ks(Mee,"onTransitionCancel"),Ks(gD,"onTransitionEnd"),Iu("onMouseEnter",["mouseout","mouseover"]),Iu("onMouseLeave",["mouseout","mouseover"]),Iu("onPointerEnter",["pointerout","pointerover"]),Iu("onPointerLeave",["pointerout","pointerover"]),Wc("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),Wc("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),Wc("onBeforeInput",["compositionend","keypress","textInput","paste"]),Wc("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),Wc("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),Wc("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var Bf="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),yte=new Set("beforetoggle cancel close invalid load scroll scrollend toggle".split(" ").concat(Bf));function IE(l,u){u=(u&4)!==0;for(var g=0;g<l.length;g++){var b=l[g],C=b.event;b=b.listeners;e:{var A=void 0;if(u)for(var D=b.length-1;0<=D;D--){var U=b[D],Z=U.instance,le=U.currentTarget;if(U=U.listener,Z!==A&&C.isPropagationStopped())break e;A=U,C.currentTarget=le;try{A(C)}catch(be){Gy(be)}C.currentTarget=null,A=Z}else for(D=0;D<b.length;D++){if(U=b[D],Z=U.instance,le=U.currentTarget,U=U.listener,Z!==A&&C.isPropagationStopped())break e;A=U,C.currentTarget=le;try{A(C)}catch(be){Gy(be)}C.currentTarget=null,A=Z}}}}function xt(l,u){var g=u[tk];g===void 0&&(g=u[tk]=new Set);var b=l+"__bubble";g.has(b)||(OE(u,l,2,!1),g.add(b))}function qC(l,u,g){var b=0;u&&(b|=4),OE(g,l,b,u)}var Dv="_reactListening"+Math.random().toString(36).slice(2);
vendor: 3,508 bytes, line 49
49function HC(l){if(!l[Dv]){l[Dv]=!0,_N.forEach(function(g){g!=="selectionchange"&&(yte.has(g)||qC(g,!1,l),qC(g,!0,l))});var u=l.nodeType===9?l:l.ownerDocument;u===null||u[Dv]||(u[Dv]=!0,qC("selectionchange",!1,u))}}function OE(l,u,g,b){switch(mI(u)){case 2:var C=Vte;break;case 8:C=Kte;break;default:C=s1}g=C.bind(null,u,g,l),C=void 0,!dk||u!=="touchstart"&&u!=="touchmove"&&u!=="wheel"||(C=!0),b?C!==void 0?l.addEventListener(u,g,{capture:!0,passive:C}):l.addEventListener(u,g,!0):C!==void 0?l.addEventListener(u,g,{passive:C}):l.addEventListener(u,g,!1)}function VC(l,u,g,b,C){var A=b;if((u&1)===0&&(u&2)===0&&b!==null)e:for(;;){if(b===null)return;var D=b.tag;if(D===3||D===4){var U=b.stateNode.containerInfo;if(U===C)break;if(D===4)for(D=b.return;D!==null;){var Z=D.tag;if((Z===3||Z===4)&&D.stateNode.containerInfo===C)return;D=D.return}for(;U!==null;){if(D=Du(U),D===null)return;if(Z=D.tag,Z===5||Z===6||Z===26||Z===27){b=A=D;continue e}U=U.parentNode}}b=b.return}zN(function(){var le=A,be=lk(g),$e=[];e:{var ue=hD.get(l);if(ue!==void 0){var he=Hy,Ve=l;switch(l){case"keypress":if(zy(g)===0)break e;case"keydown":case"keyup":he=dee;break;case"focusin":Ve="focus",he=fk;break;case"focusout":Ve="blur",he=fk;break;case"beforeblur":case"afterblur":he=fk;break;case"click":if(g.button===2)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":he=VN;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":he=ZJ;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":he=pee;break;case mD:case pD:case fD:he=tee;break;case gD:he=gee;break;case"scroll":case"scrollend":he=QJ;break;case"wheel":he=yee;break;case"copy":case"cut":case"paste":he=aee;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":he=GN;break;case"toggle":case"beforetoggle":he=bee}var et=(u&4)!==0,Wt=!et&&(l==="scroll"||l==="scrollend"),oe=et?ue!==null?ue+"Capture":null:ue;et=[];for(var te=le,re;te!==null;){var xe=te;if(re=xe.stateNode,xe=xe.tag,xe!==5&&xe!==26&&xe!==27||re===null||oe===null||(xe=lf(te,oe),xe!=null&&et.push(Ff(te,xe,re))),Wt)break;te=te.return}0<et.length&&(ue=new he(ue,Ve,null,g,be),$e.push({event:ue,listeners:et}))}}if((u&7)===0){e:{if(ue=l==="mouseover"||l==="pointerover",he=l==="mouseout"||l==="pointerout",ue&&g!==ik&&(Ve=g.relatedTarget||g.fromElement)&&(Du(Ve)||Ve[Nu]))break e;if((he||ue)&&(ue=be.window===be?be:(ue=be.ownerDocument)?ue.defaultView||ue.parentWindow:window,he?(Ve=g.relatedTarget||g.toElement,he=le,Ve=Ve?Du(Ve):null,Ve!==null&&(Wt=r(Ve),et=Ve.tag,Ve!==Wt||et!==5&&et!==27&&et!==6)&&(Ve=null)):(he=null,Ve=le),he!==Ve)){if(et=VN,xe="onMouseLeave",oe="onMouseEnter",te="mouse",(l==="pointerout"||l==="pointerover")&&(et=GN,xe="onPointerLeave",oe="onPointerEnter",te="pointer"),Wt=he==null?ue:rf(he),re=Ve==null?ue:rf(Ve),ue=new et(xe,te+"leave",he,g,be),ue.target=Wt,ue.relatedTarget=re,xe=null,Du(be)===le&&(et=new et(oe,te+"enter",Ve,g,be),et.target=re,et.relatedTarget=Wt,xe=et),Wt=xe,he&&Ve)t:{for(et=vte,oe=he,te=Ve,re=0,xe=oe;xe;xe=et(xe))re++;xe=0;for(var Xe=te;Xe;Xe=et(Xe))xe++;for(;0<re-xe;)oe=et(oe),re--;for(;0<xe-re;)te=et(te),xe--;for(;re--;){if(oe===te||te!==null&&oe===te.alternate){et=oe;break t}oe=et(oe),te=et(te)}et=null}else et=null;he!==null&&LE($e,ue,he,et,!1),Ve!==null&&Wt!==null&&LE($e,Wt,Ve,et,!0)}}
vendor: 5,258 bytes, lines 49-50
49e:{if(ue=le?rf(le):window,he=ue.nodeName&&ue.nodeName.toLowerCase(),he==="select"||he==="input"&&ue.type==="file")var _t=tD;else if(JN(ue))if(nD)_t=Pee;else{_t=Tee;var Ke=Aee}else he=ue.nodeName,!he||he.toLowerCase()!=="input"||ue.type!=="checkbox"&&ue.type!=="radio"?le&&rk(le.elementType)&&(_t=tD):_t=Ree;if(_t&&(_t=_t(l,le))){eD($e,_t,g,be);break e}Ke&&Ke(l,ue,le),l==="focusout"&&le&&ue.type==="number"&&le.memoizedProps.value!=null&&sk(ue,"number",ue.value)}switch(Ke=le?rf(le):window,l){case"focusin":(JN(Ke)||Ke.contentEditable==="true")&&(zu=Ke,xk=le,hf=null);break;case"focusout":hf=xk=zu=null;break;case"mousedown":$k=!0;break;case"contextmenu":case"mouseup":case"dragend":$k=!1,dD($e,g,be);break;case"selectionchange":if(jee)break;case"keydown":case"keyup":dD($e,g,be)}var mt;if(hk)e:{switch(l){case"compositionstart":var wt="onCompositionStart";break e;case"compositionend":wt="onCompositionEnd";break e;case"compositionupdate":wt="onCompositionUpdate";break e}wt=void 0}else Fu?XN(l,g)&&(wt="onCompositionEnd"):l==="keydown"&&g.keyCode===229&&(wt="onCompositionStart");wt&&(WN&&g.locale!=="ko"&&(Fu||wt!=="onCompositionStart"?wt==="onCompositionEnd"&&Fu&&(mt=qN()):(xl=be,uk="value"in xl?xl.value:xl.textContent,Fu=!0)),Ke=Mv(le,wt),0<Ke.length&&(wt=new KN(wt,l,null,g,be),$e.push({event:wt,listeners:Ke}),mt?wt.data=mt:(mt=ZN(g),mt!==null&&(wt.data=mt)))),(mt=$ee?wee(l,g):kee(l,g))&&(wt=Mv(le,"onBeforeInput"),0<wt.length&&(Ke=new KN("onBeforeInput","beforeinput",null,g,be),$e.push({event:Ke,listeners:wt}),Ke.data=mt)),fte($e,l,le,g,be)}IE($e,u)})}function Ff(l,u,g){return{instance:l,listener:u,currentTarget:g}}function Mv(l,u){for(var g=u+"Capture",b=[];l!==null;){var C=l,A=C.stateNode;if(C=C.tag,C!==5&&C!==26&&C!==27||A===null||(C=lf(l,g),C!=null&&b.unshift(Ff(l,C,A)),C=lf(l,u),C!=null&&b.push(Ff(l,C,A))),l.tag===3)return b;l=l.return}return[]}function vte(l){if(l===null)return null;do l=l.return;while(l&&l.tag!==5&&l.tag!==27);return l||null}function LE(l,u,g,b,C){for(var A=u._reactName,D=[];g!==null&&g!==b;){var U=g,Z=U.alternate,le=U.stateNode;if(U=U.tag,Z!==null&&Z===b)break;U!==5&&U!==26&&U!==27||le===null||(Z=le,C?(le=lf(g,A),le!=null&&D.unshift(Ff(g,le,Z))):C||(le=lf(g,A),le!=null&&D.push(Ff(g,le,Z)))),g=g.return}D.length!==0&&l.push({event:u,listeners:D})}var bte=/\r\n?/g,xte=/\u0000|\uFFFD/g;function UE(l){return(typeof l=="string"?l:""+l).replace(bte,`
50`).replace(xte,"")}function BE(l,u){return u=UE(u),UE(l)===u}function Gt(l,u,g,b,C,A){switch(g){case"children":typeof b=="string"?u==="body"||u==="textarea"&&b===""||Lu(l,b):(typeof b=="number"||typeof b=="bigint")&&u!=="body"&&Lu(l,""+b);break;case"className":Ly(l,"class",b);break;case"tabIndex":Ly(l,"tabindex",b);break;case"dir":case"role":case"viewBox":case"width":case"height":Ly(l,g,b);break;case"style":BN(l,b,A);break;case"data":if(u!=="object"){Ly(l,"data",b);break}case"src":case"href":if(b===""&&(u!=="a"||g!=="href")){l.removeAttribute(g);break}if(b==null||typeof b=="function"||typeof b=="symbol"||typeof b=="boolean"){l.removeAttribute(g);break}b=By(""+b),l.setAttribute(g,b);break;case"action":case"formAction":if(typeof b=="function"){l.setAttribute(g,"javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')");break}else typeof A=="function"&&(g==="formAction"?(u!=="input"&&Gt(l,u,"name",C.name,C,null),Gt(l,u,"formEncType",C.formEncType,C,null),Gt(l,u,"formMethod",C.formMethod,C,null),Gt(l,u,"formTarget",C.formTarget,C,null)):(Gt(l,u,"encType",C.encType,C,null),Gt(l,u,"method",C.method,C,null),Gt(l,u,"target",C.target,C,null)));if(b==null||typeof b=="symbol"||typeof b=="boolean"){l.removeAttribute(g);break}b=By(""+b),l.setAttribute(g,b);break;case"onClick":b!=null&&(l.onclick=vi);break;case"onScroll":b!=null&&xt("scroll",l);break;case"onScrollEnd":b!=null&&xt("scrollend",l);break;case"dangerouslySetInnerHTML":if(b!=null){if(typeof b!="object"||!("__html"in b))throw Error(a(61));if(g=b.__html,g!=null){if(C.children!=null)throw Error(a(60));l.innerHTML=g}}break;case"multiple":l.multiple=b&&typeof b!="function"&&typeof b!="symbol";break;case"muted":l.muted=b&&typeof b!="function"&&typeof b!="symbol";break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"defaultValue":case"defaultChecked":case"innerHTML":case"ref":break;case"autoFocus":break;case"xlinkHref":if(b==null||typeof b=="function"||typeof b=="boolean"||typeof b=="symbol"){l.removeAttribute("xlink:href");break}g=By(""+b),l.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",g);break;case"contentEditable":case"spellCheck":case"draggable":case"value":case"autoReverse":case"externalResourcesRequired":case"focusable":case"preserveAlpha":b!=null&&typeof b!="function"&&typeof b!="symbol"?l.setAttribute(g,""+b):l.removeAttribute(g);break;case"inert":case"allowFullScreen":case"async":case"autoPlay":case"controls":case"default":case"defer":case"disabled":case"disablePictureInPicture":case"disableRemotePlayback":case"formNoValidate":case"hidden":case"loop":case"noModule":case"noValidate":case"open":case"playsInl
50ine":case"readOnly":case"required":case"reversed":case"scoped":case"seamless":case"itemScope":b&&typeof b!="function"&&typeof b!="symbol"?l.setAttribute(g,""):l.removeAttribute(g);break;case"capture":case"download":b===!0?l.setAttribute(g,""):b!==!1&&b!=null&&typeof b!="function"&&typeof b!="symbol"?l.setAttribute(g,b):l.removeAttribute(g);break;case"cols":case"rows":case"size":case"span":b!=null&&typeof b!="function"&&typeof b!="symbol"&&!isNaN(b)&&1<=b?l.setAttribute(g,b):l.removeAttribute(g);break;case"rowSpan":case"start":b==null||typeof b=="function"||typeof b=="symbol"||isNaN(b)?l.removeAttribute(g):l.setAttribute(g,b);break;case"popover":xt("beforetoggle",l),xt("toggle",l),Oy(l,"popover",b);break;case"xlinkActuate":yi(l,"http://www.w3.org/1999/xlink","xlink:actuate",b);break;case"xlinkArcrole":yi(l,"http://www.w3.org/1999/xlink","xlink:arcrole",b);break;case"xlinkRole":yi(l,"http://www.w3.org/1999/xlink","xlink:role",b);break;case"xlinkShow":yi(l,"http://www.w3.org/1999/xlink","xlink:show",b);break;case"xlinkTitle":yi(l,"http://www.w3.org/1999/xlink","xlink:title",b);break;case"xlinkType":yi(l,"http://www.w3.org/1999/xlink","xlink:type",b);break;case"xmlBase":yi(l,"http://www.w3.org/XML/1998/namespace","xml:base",b);break;case"xmlLang":yi(l,"http://www.w3.org/XML/1998/namespace","xml:lang",b);break;case"xmlSpace":yi(l,"http://www.w3.org/XML/1998/namespace","xml:space",b);break;case"is":Oy(l,"is",b);break;case"innerText":case"textContent":break;default:(!(2<g.length)||g[0]!=="o"&&g[0]!=="O"||g[1]!=="n"&&g[1]!=="N")&&(g=WJ.get(g)||g,Oy(l,g,b))}}function KC(l,u,g,b,C,A){switch(g){case"style":BN(l,b,A);break;case"dangerouslySetInnerHTML":if(b!=null){if(typeof b!="object"||!("__html"in b))throw Error(a(61));if(g=b.__html,g!=null){if(C.children!=null)throw Error(a(60));l.innerHTML=g}}break;case"children":typeof b=="string"?Lu(l,b):(typeof b=="number"||typeof b=="bigint")&&Lu(l,""+b);break;case"onScroll":b!=null&&xt("scroll",l);break;case"onScrollEnd":b!=null&&xt("scrollend",l);break;case"onClick":b!=null&&(l.onclick=vi);break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"innerHTML":case"ref":break;case"innerText":case"textContent":break;default:if(!jN.hasOwnProperty(g))e:{if(g[0]==="o"&&g[1]==="n"&&(C=g.endsWith("Capture"),u=g.slice(2,C?g.length-7:void 0),A=l[uo]||null,A=A!=null?A[g]:null,typeof A=="function"&&l.removeEventListener(u,A,C),typeof b=="function")){typeof A!="function"&&A!==null&&(g in l?l[g]=null:l.hasAttribute(g)&&l.removeAttribute(g)),l.addEventListener(u,b,C);break e}g in l?l[g]=b:b===!0?l.setAttribute(g,""):Oy(l,g,b)}}}function $a(l,u,g){switch(u){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"img":xt("error",l),xt("load",l);var b=!1,C=!1,A;for(A in g)if(g.hasOwnProperty(A)){var D=g[A];if(D!=null)switch(A){case"src":b=!0;break;case"srcSet":C=!0;break;case"children":case"dangerouslySetInnerHTML":throw Error(a(137,u));default:Gt(l,u,A,D,g,null)}}C&&Gt(l,u,"srcSet",g.srcSet,g,null),b&&Gt(l,u,"src",g.src,g,null);return;case"input":xt("invalid",l);var U=A=D=C=null,Z=null,le=null;for(b in g)if(g.hasOwnProperty(b)){var be=g[b];if(be!=null)switch(b){case"name":C=be;break;case"type":D=be;break;case"checked":Z=be;break;case"defaultChecked":le=be;break;case"value":A=be;break;case"defaultValue":U=be;break;case"children":case"dangerouslySetInnerHTML":if(be!=null)throw Error(a(137,u));break;default:Gt(l,u,b,be,g,null)}}IN(l,A,U,Z,le,D,C,!1);return;case"select":xt("invalid",l),b=D=A=null;for(C in g)if(g.hasOwnProperty(C)&&(U=g[C],U!=null))switch(C){case"value":A=U;break;case"defaultValue":D=U;break;case"multiple":b=U;default:Gt(l,u,C,U,g,null)}u=A,g=D,l.multiple=!!b,u!=null?Ou(l,!!b,u,!1):g!=null&&Ou(l,!!b,g,!0);return;case"textarea":xt("invalid",l),A=C=b=null;for(D in g)if(g.hasOwnProperty(D)&&(U=g[D],U!=null))switch(D){case"value":b=U;break;case"defaultValue":C=U;break;case"children":A=U;break;case"dangerouslySetInnerHTML":if(U!=null)throw Error(a(91));break;default:Gt(l,u,D,U,g,null)}LN(l,b,C,A);return;case"option":for(Z in g)if(g.hasOwnProperty(Z)&&(b=g[Z],b!=null))switch(Z){case"selected":l.selected=b&&typeof b!="function"&&typeof b!="symbol";break;default:Gt(l,u,Z,b,g,null)}return;case"dialog":xt("beforetoggle",l),xt("toggle",l),xt("cancel",l),xt("close",l);break;case"iframe":case"object":xt("load",l);break;case"video":case"audio":for(b=0;b<Bf.length;b++)xt(Bf[b],l);break;case"image":xt("error",l),xt("load",l);break;case"details":xt("toggle",l);break;case"embed":case"source":case"link":xt("error",l),xt("load",l);case"area":case"base":case"br":case"col":case"hr":case"keygen":case"meta":case"param":case"track":case"wbr":case"menuitem":for(le in g)if(g.hasOwnProperty(le)&&(b=g[le],b!=null))switch(le){case"children":case"dangerouslySetInnerHTML":throw Error(a(137,u));default:Gt(l,u,le,b,g,null)}return;default:if(rk(u)){for(be in g)g.hasOwnProperty(be)&&(b=g[be],b!==void 0&&KC(l,u,be,b,g,void 0));return}}for(U in g)g.hasOwnProperty(U)&&(b=g[U],b!=null&&Gt(l,u,U,b,g,null))}function $te(l,u,g,b){switch(u){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"input":var C=null,A=null,D=null,U=null,Z=null,le=null,be=null;for(he in g){var $e=g[he];if(g.hasOwnProperty(he)&&$e!=null)switch(he){case"checked":break;case"value":break;case"defaultValue":Z=$e;default:b.hasOwnProperty(he)||Gt(l,u,he,null,b,$e)}}for(var ue in b){var he=b[ue];if($e=g[ue],b.hasOwnProperty(ue)&&(he!=null||$e!=null))switch(ue){case"type":A=he;break;case"name":C=he;break;case"checked":le=he;break;case"defaultChecked":be=he;break;case"value":D=he;break;case"defaultValue":U=he;break;case"children":case"dangerouslySetInnerHTML":if(he!=null)throw Error(a(137,u));break;default:he!==$e&&Gt(l,u,ue,he,b,$e)}}ok(l,D,U,Z,le,be,A,C);return;case"select":he=D=U=ue=null;for(A in g)if(Z=g[A],g.hasOwnProperty(A)&&Z!=null)switch(A){case"value":break;case"multiple":he=Z;default:b.hasOwnProperty(A)||Gt(l,u,A,null,b,Z)}for(C in b)if(A=b[C],Z=g[C],b.hasOwnProperty(C)&&(A!=null||Z!=null))switch(C){case"value":ue=A;break;case"defaultValue":U=A;break;case"multiple":D=A;default:A!==Z&&Gt(l,u,C,A,b,Z)}u=U,g=D,b=he,ue!=null?Ou(l,!!g,ue,!1):!!b!=!!g&&(u!=null?Ou(l,!!g,u,!0):Ou(l,!!g,g?[]:"",!1));return;case"textarea":he=ue=null;for(U in g)if(C=g[U],g.hasOwnProperty(U)&&C!=null&&!b.hasOwnProperty(U))switch(U){case"value":break;case"children":break;default:Gt(l,u,U,null,b,C)}for(D in b)if(C=b[D],A=g[D],b.hasOwnProperty(D)&&(C!=null||A!=null))switch(D){case"value":ue=C;break;case"defaultValue":he=C;break;case"children":break;case"dangerouslySetInnerHTML":if(C!=null)throw Error(a(91));break;default:C!==A&&Gt(l,u,D,C,b,A)}ON(l,ue,he);return;case"option":for(var Ve in g)if(ue=g[Ve],g.hasOwnProperty(Ve)&&ue!=null&&!b.hasOwnProperty(Ve))switch(Ve){case"selected":l.selected=!1;break;default:Gt(l,u,Ve,null,b,ue)}for(Z in b)if(ue=b[Z],he=g[Z],b.hasOwnProperty(Z)&&ue!==he&&(ue!=null||he!=null))switch(Z){case"selected":l.selected=ue&&typeof ue!="function"&&typeof ue!="symbol";break;default:Gt(l,u,Z,ue,b,he)}return;case"img":case"link":case"area":case"base":case"br":case"col":case"embed":case"hr":case"keygen":case"meta":case"param":case"source":case"track":case"wbr":case"menuitem":for(var et in g)ue=g[et],g.hasOwnProperty(et)&&ue!=null&&!b.hasOwnProperty(et)&&Gt(l,u,et,null,b,ue);for(le in b)if(ue=b[le],he=g[le],b.hasOwnProperty(le)&&ue!==he&&(ue!=null||he!=null))switch(le){case"children":case"dangerouslySetInnerHTML":if(ue!=null)throw Error(a(137,u));break;default:Gt(l,u,le,ue,b,he)}return;default:if(rk(u)){for(var Wt in g)ue=g[Wt],g.hasOwnProperty(Wt)&&ue!==void 0&&!b.hasOwnProperty(Wt)&&KC(l,u,Wt,void 0,b,ue);for(be in b)ue=b[be],he=g[be],!b.hasOwnProperty(be)||ue===he||ue===void 0&&he===void 0||KC(l,u,be,ue,b,he);return}}for(var oe in g)ue=g[oe],g.hasOwnProperty(oe)&&ue!=null&&!b.hasOwnProperty(oe)&&Gt(l,u,oe,null,b,ue);for($e in b)ue=b[$e],he=g[$e],!b.hasOwnProperty($e)||ue===he||ue==null&&he==null||Gt(l,u,$e,ue,b,he)}function FE(l){switch(l){case"css":case"script":case"font":case"img":case"image":case"input":case"link":return!0;default:return!1}}function wte(){if(typeof performance.getEntriesByType=="function"){for(var l=0,u=0,g=performance.getEntriesByType("resource"),b=0;b<g.length;b++){var C=g[b],A=C.transferSize,D=C.initiatorType,U=C.duration;if(A&&U&&FE(D)){for(D=0,U=C.responseEnd,b+=1;b<g.length;b++){var Z=g[b],le=Z.startTime;if(le>U)break;var be=Z.transferSize,$e=Z.initiatorType;be&&FE($e)&&(Z=Z.responseEnd,D+=be*(Z<U?1:(U-le)/(Z-le)))}if(--b,u+=8*(A+D)/(C.duration/1e3),l++,10<l)break}}if(0<l)return u/l/1e6}return navigator.connection&&(l=navigator.connection.downlink,typeof l=="number")?l:5}var GC=null,WC=null;function Ev(l){return l.nodeType===9?l:l.ownerDocument}function zE(l){switch(l){case"http://www.w3.org/2000/svg":return 1;case"http://www.w3.org/1998/Math/MathML":return 2;default:return 0}}function qE(l,u){if(l===0)switch(u){case"svg":return 1;case"math":return 2;default:return 0}return l===1&&u==="foreignObject"?0:l}function YC(l,u){return l==="textarea"||l==="noscript"||typeof u.children=="string"||typeof u.children=="number"||typeof u.children=="bigint"||typeof u.dangerouslySetInnerHTML=="object"&&u.dangerouslySetInnerHTML!==null&&u.dangerouslySetInnerHTML.__html!=null}var QC=null;function kte(){var l=window.event;return l&&l.type==="popstate"?l===QC?!1:(QC=l,!0):(QC=null,!1)}var HE=typeof setTimeout=="function"?setTimeout:void 0,Cte=typeof clearTimeout=="function"?clearTimeout:void 0,VE=typeof Promise=="function"?Promise:void 0,Ste=typeof queueMicrotask=="function"?queueMicrotask:typeof VE<"u"?function(l){return VE.resolve(null).then(l).catch(Ate)}:HE;function Ate(l){setTimeout(function(){throw l})}function Ol(l){return l==="head"}function KE(l,u){var g=u,b=0;do{var C=g.nextSibling;if(l.removeChild(g),C&&C.nodeType===8)if(g=C.data,g==="/$"||g==="/&"){if(b===0){l.removeChild(C),gm(u);return}b--}else if(g==="$"||g==="$?"||g==="$~"||g==="$!"||g==="&")b++;else if(g==="html")zf(l.ownerDocument.documentElement);else if(g==="head"){g=l.ownerDocument.head,zf(g);for(var A=g.firstChild;A;){var D=A.nextSibling,U=A.nodeName;A[sf]||U==="SCRIPT"||U==="STYLE"||U==="LINK"&&A.rel.toLowerCase()==="stylesheet"||g.removeChild(A),A=D}}else g==="body"&&zf(l.ownerDocument.body);g=C}while(g);gm(u)}function GE(l,u){var g=l;l=0;do{var b=g.nextSibling;if(g.nodeType===1?u?(g._stashedDisplay=g.style.display,g.style.display="none"):(g.style.display=g._stashedDisplay||"",g.getAttribute("style")===""&&g.removeAttribute("style")):g.nodeType===3&&(u?(g._stashedText=g.nodeValue,g.nodeValue=""):g.nodeValue=g._stashedText||""),b&&b.nodeType===8)if(g=b.data,g==="/$"){if(l===0)break;l--}else g!=="$"&&g!=="$?"&&g!=="$~"&&g!=="$!"||l++;g=b}while(g)}function XC(l){var u=l.firstChild;for(u&&u.nodeType===10&&(u=u.nextSibling);u;){var g=u;switch(u=u.nextSibling,g.nodeName){case"HTML":case"HEAD":case"BODY":XC(g),nk(g);continue;case"SCRIPT":case"STYLE":continue;case"LINK":if(g.rel.toLowerCase()==="stylesheet")continue}l.removeChild(g)}}function Tte(l,u,g,b){for(;l.nodeType===1;
vendor: 10,823 bytes, line 50
50){var C=g;if(l.nodeName.toLowerCase()!==u.toLowerCase()){if(!b&&(l.nodeName!=="INPUT"||l.type!=="hidden"))break}else if(b){if(!l[sf])switch(u){case"meta":if(!l.hasAttribute("itemprop"))break;return l;case"link":if(A=l.getAttribute("rel"),A==="stylesheet"&&l.hasAttribute("data-precedence"))break;if(A!==C.rel||l.getAttribute("href")!==(C.href==null||C.href===""?null:C.href)||l.getAttribute("crossorigin")!==(C.crossOrigin==null?null:C.crossOrigin)||l.getAttribute("title")!==(C.title==null?null:C.title))break;return l;case"style":if(l.hasAttribute("data-precedence"))break;return l;case"script":if(A=l.getAttribute("src"),(A!==(C.src==null?null:C.src)||l.getAttribute("type")!==(C.type==null?null:C.type)||l.getAttribute("crossorigin")!==(C.crossOrigin==null?null:C.crossOrigin))&&A&&l.hasAttribute("async")&&!l.hasAttribute("itemprop"))break;return l;default:return l}}else if(u==="input"&&l.type==="hidden"){var A=C.name==null?null:""+C.name;if(C.type==="hidden"&&l.getAttribute("name")===A)return l}else return l;if(l=bs(l.nextSibling),l===null)break}return null}function Rte(l,u,g){if(u==="")return null;for(;l.nodeType!==3;)if((l.nodeType!==1||l.nodeName!=="INPUT"||l.type!=="hidden")&&!g||(l=bs(l.nextSibling),l===null))return null;return l}function WE(l,u){for(;l.nodeType!==8;)if((l.nodeType!==1||l.nodeName!=="INPUT"||l.type!=="hidden")&&!u||(l=bs(l.nextSibling),l===null))return null;return l}function ZC(l){return l.data==="$?"||l.data==="$~"}function JC(l){return l.data==="$!"||l.data==="$?"&&l.ownerDocument.readyState!=="loading"}function Pte(l,u){var g=l.ownerDocument;if(l.data==="$~")l._reactRetry=u;else if(l.data!=="$?"||g.readyState!=="loading")u();else{var b=function(){u(),g.removeEventListener("DOMContentLoaded",b)};g.addEventListener("DOMContentLoaded",b),l._reactRetry=b}}function bs(l){for(;l!=null;l=l.nextSibling){var u=l.nodeType;if(u===1||u===3)break;if(u===8){if(u=l.data,u==="$"||u==="$!"||u==="$?"||u==="$~"||u==="&"||u==="F!"||u==="F")break;if(u==="/$"||u==="/&")return null}}return l}var e1=null;function YE(l){l=l.nextSibling;for(var u=0;l;){if(l.nodeType===8){var g=l.data;if(g==="/$"||g==="/&"){if(u===0)return bs(l.nextSibling);u--}else g!=="$"&&g!=="$!"&&g!=="$?"&&g!=="$~"&&g!=="&"||u++}l=l.nextSibling}return null}function QE(l){l=l.previousSibling;for(var u=0;l;){if(l.nodeType===8){var g=l.data;if(g==="$"||g==="$!"||g==="$?"||g==="$~"||g==="&"){if(u===0)return l;u--}else g!=="/$"&&g!=="/&"||u++}l=l.previousSibling}return null}function XE(l,u,g){switch(u=Ev(g),l){case"html":if(l=u.documentElement,!l)throw Error(a(452));return l;case"head":if(l=u.head,!l)throw Error(a(453));return l;case"body":if(l=u.body,!l)throw Error(a(454));return l;default:throw Error(a(451))}}function zf(l){for(var u=l.attributes;u.length;)l.removeAttributeNode(u[0]);nk(l)}var xs=new Map,ZE=new Set;function Iv(l){return typeof l.getRootNode=="function"?l.getRootNode():l.nodeType===9?l:l.ownerDocument}var Mi=M.d;M.d={f:_te,r:jte,D:Nte,C:Dte,L:Mte,m:Ete,X:Ote,S:Ite,M:Lte};function _te(){var l=Mi.f(),u=Tv();return l||u}function jte(l){var u=Mu(l);u!==null&&u.tag===5&&u.type==="form"?gM(u):Mi.r(l)}var mm=typeof document>"u"?null:document;function JE(l,u,g){var b=mm;if(b&&typeof u=="string"&&u){var C=ms(u);C='link[rel="'+l+'"][href="'+C+'"]',typeof g=="string"&&(C+='[crossorigin="'+g+'"]'),ZE.has(C)||(ZE.add(C),l={rel:l,crossOrigin:g,href:u},b.querySelector(C)===null&&(u=b.createElement("link"),$a(u,"link",l),aa(u),b.head.appendChild(u)))}}function Nte(l){Mi.D(l),JE("dns-prefetch",l,null)}function Dte(l,u){Mi.C(l,u),JE("preconnect",l,u)}function Mte(l,u,g){Mi.L(l,u,g);var b=mm;if(b&&l&&u){var C='link[rel="preload"][as="'+ms(u)+'"]';u==="image"&&g&&g.imageSrcSet?(C+='[imagesrcset="'+ms(g.imageSrcSet)+'"]',typeof g.imageSizes=="string"&&(C+='[imagesizes="'+ms(g.imageSizes)+'"]')):C+='[href="'+ms(l)+'"]';var A=C;switch(u){case"style":A=pm(l);break;case"script":A=fm(l)}xs.has(A)||(l=p({rel:"preload",href:u==="image"&&g&&g.imageSrcSet?void 0:l,as:u},g),xs.set(A,l),b.querySelector(C)!==null||u==="style"&&b.querySelector(qf(A))||u==="script"&&b.querySelector(Hf(A))||(u=b.createElement("link"),$a(u,"link",l),aa(u),b.head.appendChild(u)))}}function Ete(l,u){Mi.m(l,u);var g=mm;if(g&&l){var b=u&&typeof u.as=="string"?u.as:"script",C='link[rel="modulepreload"][as="'+ms(b)+'"][href="'+ms(l)+'"]',A=C;switch(b){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":A=fm(l)}if(!xs.has(A)&&(l=p({rel:"modulepreload",href:l},u),xs.set(A,l),g.querySelector(C)===null)){switch(b){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(g.querySelector(Hf(A)))return}b=g.createElement("link"),$a(b,"link",l),aa(b),g.head.appendChild(b)}}}function Ite(l,u,g){Mi.S(l,u,g);var b=mm;if(b&&l){var C=Eu(b).hoistableStyles,A=pm(l);u=u||"default";var D=C.get(A);if(!D){var U={loading:0,preload:null};if(D=b.querySelector(qf(A)))U.loading=5;else{l=p({rel:"stylesheet",href:l,"data-precedence":u},g),(g=xs.get(A))&&t1(l,g);var Z=D=b.createElement("link");aa(Z),$a(Z,"link",l),Z._p=new Promise(function(le,be){Z.onload=le,Z.onerror=be}),Z.addEventListener("load",function(){U.loading|=1}),Z.addEventListener("error",function(){U.loading|=2}),U.loading|=4,Ov(D,u,b)}D={type:"stylesheet",instance:D,count:1,state:U},C.set(A,D)}}}function Ote(l,u){Mi.X(l,u);var g=mm;if(g&&l){var b=Eu(g).hoistableScripts,C=fm(l),A=b.get(C);A||(A=g.querySelector(Hf(C)),A||(l=p({src:l,async:!0},u),(u=xs.get(C))&&n1(l,u),A=g.createElement("script"),aa(A),$a(A,"link",l),g.head.appendChild(A)),A={type:"script",instance:A,count:1,state:null},b.set(C,A))}}function Lte(l,u){Mi.M(l,u);var g=mm;if(g&&l){var b=Eu(g).hoistableScripts,C=fm(l),A=b.get(C);A||(A=g.querySelector(Hf(C)),A||(l=p({src:l,async:!0,type:"module"},u),(u=xs.get(C))&&n1(l,u),A=g.createElement("script"),aa(A),$a(A,"link",l),g.head.appendChild(A)),A={type:"script",instance:A,count:1,state:null},b.set(C,A))}}function eI(l,u,g,b){var C=(C=pe.current)?Iv(C):null;if(!C)throw Error(a(446));switch(l){case"meta":case"title":return null;case"style":return typeof g.precedence=="string"&&typeof g.href=="string"?(u=pm(g.href),g=Eu(C).hoistableStyles,b=g.get(u),b||(b={type:"style",instance:null,count:0,state:null},g.set(u,b)),b):{type:"void",instance:null,count:0,state:null};case"link":if(g.rel==="stylesheet"&&typeof g.href=="string"&&typeof g.precedence=="string"){l=pm(g.href);var A=Eu(C).hoistableStyles,D=A.get(l);if(D||(C=C.ownerDocument||C,D={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},A.set(l,D),(A=C.querySelector(qf(l)))&&!A._p&&(D.instance=A,D.state.loading=5),xs.has(l)||(g={rel:"preload",as:"style",href:g.href,crossOrigin:g.crossOrigin,integrity:g.integrity,media:g.media,hrefLang:g.hrefLang,referrerPolicy:g.referrerPolicy},xs.set(l,g),A||Ute(C,l,g,D.state))),u&&b===null)throw Error(a(528,""));return D}if(u&&b!==null)throw Error(a(529,""));return null;case"script":return u=g.async,g=g.src,typeof g=="string"&&u&&typeof u!="function"&&typeof u!="symbol"?(u=fm(g),g=Eu(C).hoistableScripts,b=g.get(u),b||(b={type:"script",instance:null,count:0,state:null},g.set(u,b)),b):{type:"void",instance:null,count:0,state:null};default:throw Error(a(444,l))}}function pm(l){return'href="'+ms(l)+'"'}function qf(l){return'link[rel="stylesheet"]['+l+"]"}function tI(l){return p({},l,{"data-precedence":l.precedence,precedence:null})}function Ute(l,u,g,b){l.querySelector('link[rel="preload"][as="style"]['+u+"]")?b.loading=1:(u=l.createElement("link"),b.preload=u,u.addEventListener("load",function(){return b.loading|=1}),u.addEventListener("error",function(){return b.loading|=2}),$a(u,"link",g),aa(u),l.head.appendChild(u))}function fm(l){return'[src="'+ms(l)+'"]'}function Hf(l){return"script[async]"+l}function nI(l,u,g){if(u.count++,u.instance===null)switch(u.type){case"style":var b=l.querySelector('style[data-href~="'+ms(g.href)+'"]');if(b)return u.instance=b,aa(b),b;var C=p({},g,{"data-href":g.href,"data-precedence":g.precedence,href:null,precedence:null});return b=(l.ownerDocument||l).createElement("style"),aa(b),$a(b,"style",C),Ov(b,g.precedence,l),u.instance=b;case"stylesheet":C=pm(g.href);var A=l.querySelector(qf(C));if(A)return u.state.loading|=4,u.instance=A,aa(A),A;b=tI(g),(C=xs.get(C))&&t1(b,C),A=(l.ownerDocument||l).createElement("link"),aa(A);var D=A;return D._p=new Promise(function(U,Z){D.onload=U,D.onerror=Z}),$a(A,"link",b),u.state.loading|=4,Ov(A,g.precedence,l),u.instance=A;case"script":return A=fm(g.src),(C=l.querySelector(Hf(A)))?(u.instance=C,aa(C),C):(b=g,(C=xs.get(A))&&(b=p({},g),n1(b,C)),l=l.ownerDocument||l,C=l.createElement("script"),aa(C),$a(C,"link",b),l.head.appendChild(C),u.instance=C);case"void":return null;default:throw Error(a(443,u.type))}else u.type==="stylesheet"&&(u.state.loading&4)===0&&(b=u.instance,u.state.loading|=4,Ov(b,g.precedence,l));return u.instance}function Ov(l,u,g){for(var b=g.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),C=b.length?b[b.length-1]:null,A=C,D=0;D<b.length;D++){var U=b[D];if(U.dataset.precedence===u)A=U;else if(A!==C)break}A?A.parentNode.insertBefore(l,A.nextSibling):(u=g.nodeType===9?g.head:g,u.insertBefore(l,u.firstChild))}function t1(l,u){l.crossOrigin==null&&(l.crossOrigin=u.crossOrigin),l.referrerPolicy==null&&(l.referrerPolicy=u.referrerPolicy),l.title==null&&(l.title=u.title)}function n1(l,u){l.crossOrigin==null&&(l.crossOrigin=u.crossOrigin),l.referrerPolicy==null&&(l.referrerPolicy=u.referrerPolicy),l.integrity==null&&(l.integrity=u.integrity)}var Lv=null;function aI(l,u,g){if(Lv===null){var b=new Map,C=Lv=new Map;C.set(g,b)}else C=Lv,b=C.get(g),b||(b=new Map,C.set(g,b));if(b.has(l))return b;for(b.set(l,null),g=g.getElementsByTagName(l),C=0;C<g.length;C++){var A=g[C];if(!(A[sf]||A[ya]||l==="link"&&A.getAttribute("rel")==="stylesheet")&&A.namespaceURI!=="http://www.w3.org/2000/svg"){var D=A.getAttribute(u)||"";D=l+D;var U=b.get(D);U?U.push(A):b.set(D,[A])}}return b}function oI(l,u,g){l=l.ownerDocument||l,l.head.insertBefore(g,u==="title"?l.querySelector("head > title"):null)}function Bte(l,u,g){if(g===1||u.itemProp!=null)return!1;switch(l){case"meta":case"title":return!0;case"style":if(typeof u.precedence!="string"||typeof u.href!="string"||u.href==="")break;return!0;case"link":if(typeof u.rel!="string"||typeof u.href!="string"||u.href===""||u.onLoad||u.onError)break;switch(u.rel){case"stylesheet":return l=u.disabled,typeof u.precedence=="string"&&l==null;default:return!0}case"script":if(u.async&&typeof u.async!="function"&&typeof u.async!="symbol"&&!u.onLoad&&!u.onError&&u.src&&typeof u.src=="string")return!0}return!1}function sI(l){return!(l.type==="stylesheet"&&(l.state.loading&3)===0)}function Fte(l,u,g,b){if(g.type==="stylesheet"&&(typeof b.media!="str
50ing"||matchMedia(b.media).matches!==!1)&&(g.state.loading&4)===0){if(g.instance===null){var C=pm(b.href),A=u.querySelector(qf(C));if(A){u=A._p,u!==null&&typeof u=="object"&&typeof u.then=="function"&&(l.count++,l=Uv.bind(l),u.then(l,l)),g.state.loading|=4,g.instance=A,aa(A);return}A=u.ownerDocument||u,b=tI(b),(C=xs.get(C))&&t1(b,C),A=A.createElement("link"),aa(A);var D=A;D._p=new Promise(function(U,Z){D.onload=U,D.onerror=Z}),$a(A,"link",b),g.instance=A}l.stylesheets===null&&(l.stylesheets=new Map),l.stylesheets.set(g,u),(u=g.state.preload)&&(g.state.loading&3)===0&&(l.count++,g=Uv.bind(l),u.addEventListener("load",g),u.addEventListener("error",g))}}var a1=0;function zte(l,u){return l.stylesheets&&l.count===0&&Fv(l,l.stylesheets),0<l.count||0<l.imgCount?function(g){var b=setTimeout(function(){if(l.stylesheets&&Fv(l,l.stylesheets),l.unsuspend){var A=l.unsuspend;l.unsuspend=null,A()}},6e4+u);0<l.imgBytes&&a1===0&&(a1=62500*wte());var C=setTimeout(function(){if(l.waitingForImages=!1,l.count===0&&(l.stylesheets&&Fv(l,l.stylesheets),l.unsuspend)){var A=l.unsuspend;l.unsuspend=null,A()}},(l.imgBytes>a1?50:800)+u);return l.unsuspend=g,function(){l.unsuspend=null,clearTimeout(b),clearTimeout(C)}}:null}function Uv(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Fv(this,this.stylesheets);else if(this.unsuspend){var l=this.unsuspend;this.unsuspend=null,l()}}}var Bv=null;function Fv(l,u){l.stylesheets=null,l.unsuspend!==null&&(l.count++,Bv=new Map,u.forEach(qte,l),Bv=null,Uv.call(l))}function qte(l,u){if(!(u.state.loading&4)){var g=Bv.get(l);if(g)var b=g.get(null);else{g=new Map,Bv.set(l,g);for(var C=l.querySelectorAll("link[data-precedence],style[data-precedence]"),A=0;A<C.length;A++){var D=C[A];(D.nodeName==="LINK"||D.getAttribute("media")!=="not all")&&(g.set(D.dataset.precedence,D),b=D)}b&&g.set(null,b)}C=u.instance,D=C.getAttribute("data-precedence"),A=g.get(D)||b,A===b&&g.set(null,C),g.set(D,C),this.count++,b=Uv.bind(this),C.addEventListener("load",b),C.addEventListener("error",b),A?A.parentNode.insertBefore(C,A.nextSibling):(l=l.nodeType===9?l.head:l,l.insertBefore(C,l.firstChild)),u.state.loading|=4}}var Vf={$$typeof:T,Provider:null,Consumer:null,_currentValue:F,_currentValue2:F,_threadCount:0};function Hte(l,u,g,b,C,A,D,U,Z){this.tag=1,this.containerInfo=l,this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.next=this.pendingContext=this.context=this.cancelPendingCommit=null,this.callbackPriority=0,this.expirationTimes=Wa(-1),this.entangledLanes=this.shellSuspendCounter=this.errorRecoveryDisabledLanes=this.expiredLanes=this.warmLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Wa(0),this.hiddenUpdates=Wa(null),this.identifierPrefix=b,this.onUncaughtError=C,this.onCaughtError=A,this.onRecoverableError=D,this.pooledCache=null,this.pooledCacheLanes=0,this.formState=Z,this.incompleteTransitions=new Map}function rI(l,u,g,b,C,A,D,U,Z,le,be,$e){return l=new Hte(l,u,g,D,Z,le,be,$e,U),u=1,A===!0&&(u|=24),A=Mo(3,null,null,u),l.current=A,A.stateNode=l,u=Ik(),u.refCount++,l.pooledCache=u,u.refCount++,A.memoizedState={element:b,isDehydrated:g,cache:u},Bk(A),l}function iI(l){return l?(l=Vu,l):Vu}function lI(l,u,g,b,C,A){C=iI(C),b.context===null?b.context=C:b.pendingContext=C,b=Al(u),b.payload={element:g},A=A===void 0?null:A,A!==null&&(b.callback=A),g=Tl(l,b,u),g!==null&&(yo(g,l,u),kf(g,l,u))}function cI(l,u){if(l=l.memoizedState,l!==null&&l.dehydrated!==null){var g=l.retryLane;l.retryLane=g!==0&&g<u?g:u}}function o1(l,u){cI(l,u),(l=l.alternate)&&cI(l,u)}function dI(l){if(l.tag===13||l.tag===31){var u=Zc(l,67108864);u!==null&&yo(u,l,67108864),o1(l,67108864)}}function uI(l){if(l.tag===13||l.tag===31){var u=Uo();u=J0(u);var g=Zc(l,u);g!==null&&yo(g,l,u),o1(l,u)}}var zv=!0;function Vte(l,u,g,b){var C=q.T;q.T=null;var A=M.p;try{M.p=2,s1(l,u,g,b)}finally{M.p=A,q.T=C}}function Kte(l,u,g,b){var C=q.T;q.T=null;var A=M.p;try{M.p=8,s1(l,u,g,b)}finally{M.p=A,q.T=C}}function s1(l,u,g,b){if(zv){var C=r1(b);if(C===null)VC(l,u,b,qv,g),pI(l,b);else if(Wte(C,l,u,g,b))b.stopPropagation();else if(pI(l,b),u&4&&-1<Gte.indexOf(l)){for(;C!==null;){var A=Mu(C);if(A!==null)switch(A.tag){case 3:if(A=A.stateNode,A.current.memoizedState.isDehydrated){var D=_a(A.pendingLanes);if(D!==0){var U=A;for(U.pendingLanes|=2,U.entangledLanes|=2;D;){var Z=1<<31-En(D);U.entanglements[1]|=Z,D&=~Z}Dr(A),(Dt&6)===0&&(Sv=rt()+500,Uf(0))}}break;case 31:case 13:U=Zc(A,2),U!==null&&yo(U,A,2),Tv(),o1(A,2)}if(A=r1(b),A===null&&VC(l,u,b,qv,g),A===C)break;C=A}C!==null&&b.stopPropagation()}else VC(l,u,b,null,g)}}function r1(l){return l=lk(l),i1(l)}var qv=null;function i1(l){if(qv=null,l=Du(l),l!==null){var u=r(l);if(u===null)l=null;else{var g=u.tag;if(g===13){if(l=i(u),l!==null)return l;l=null}else if(g===31){if(l=c(u),l!==null)return l;l=null}else if(g===3){if(u.stateNode.current.memoizedState.isDehydrated)return u.tag===3?u.stateNode.containerInfo:null;l=null}else u!==l&&(l=null)}}return qv=l,null}function mI(l){switch(l){case"beforetoggle":case"cancel":case"click":case"close"
vendor: 4,145 bytes, line 50
50:case"contextmenu":case"copy":case"cut":case"auxclick":case"dblclick":case"dragend":case"dragstart":case"drop":case"focusin":case"focusout":case"input":case"invalid":case"keydown":case"keypress":case"keyup":case"mousedown":case"mouseup":case"paste":case"pause":case"play":case"pointercancel":case"pointerdown":case"pointerup":case"ratechange":case"reset":case"resize":case"seeked":case"submit":case"toggle":case"touchcancel":case"touchend":case"touchstart":case"volumechange":case"change":case"selectionchange":case"textInput":case"compositionstart":case"compositionend":case"compositionupdate":case"beforeblur":case"afterblur":case"beforeinput":case"blur":case"fullscreenchange":case"focus":case"hashchange":case"popstate":case"select":case"selectstart":return 2;case"drag":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"mousemove":case"mouseout":case"mouseover":case"pointermove":case"pointerout":case"pointerover":case"scroll":case"touchmove":case"wheel":case"mouseenter":case"mouseleave":case"pointerenter":case"pointerleave":return 8;case"message":switch(na()){case cn:return 2;case vn:return 8;case ds:case Vc:return 32;case Kc:return 268435456;default:return 32}default:return 32}}var l1=!1,Ll=null,Ul=null,Bl=null,Kf=new Map,Gf=new Map,Fl=[],Gte="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset".split(" ");function pI(l,u){switch(l){case"focusin":case"focusout":Ll=null;break;case"dragenter":case"dragleave":Ul=null;break;case"mouseover":case"mouseout":Bl=null;break;case"pointerover":case"pointerout":Kf.delete(u.pointerId);break;case"gotpointercapture":case"lostpointercapture":Gf.delete(u.pointerId)}}function Wf(l,u,g,b,C,A){return l===null||l.nativeEvent!==A?(l={blockedOn:u,domEventName:g,eventSystemFlags:b,nativeEvent:A,targetContainers:[C]},u!==null&&(u=Mu(u),u!==null&&dI(u)),l):(l.eventSystemFlags|=b,u=l.targetContainers,C!==null&&u.indexOf(C)===-1&&u.push(C),l)}function Wte(l,u,g,b,C){switch(u){case"focusin":return Ll=Wf(Ll,l,u,g,b,C),!0;case"dragenter":return Ul=Wf(Ul,l,u,g,b,C),!0;case"mouseover":return Bl=Wf(Bl,l,u,g,b,C),!0;case"pointerover":var A=C.pointerId;return Kf.set(A,Wf(Kf.get(A)||null,l,u,g,b,C)),!0;case"gotpointercapture":return A=C.pointerId,Gf.set(A,Wf(Gf.get(A)||null,l,u,g,b,C)),!0}return!1}function fI(l){var u=Du(l.target);if(u!==null){var g=r(u);if(g!==null){if(u=g.tag,u===13){if(u=i(g),u!==null){l.blockedOn=u,RN(l.priority,function(){uI(g)});return}}else if(u===31){if(u=c(g),u!==null){l.blockedOn=u,RN(l.priority,function(){uI(g)});return}}else if(u===3&&g.stateNode.current.memoizedState.isDehydrated){l.blockedOn=g.tag===3?g.stateNode.containerInfo:null;return}}}l.blockedOn=null}function Hv(l){if(l.blockedOn!==null)return!1;for(var u=l.targetContainers;0<u.length;){var g=r1(l.nativeEvent);if(g===null){g=l.nativeEvent;var b=new g.constructor(g.type,g);ik=b,g.target.dispatchEvent(b),ik=null}else return u=Mu(g),u!==null&&dI(u),l.blockedOn=g,!1;u.shift()}return!0}function gI(l,u,g){Hv(l)&&g.delete(u)}function Yte(){l1=!1,Ll!==null&&Hv(Ll)&&(Ll=null),Ul!==null&&Hv(Ul)&&(Ul=null),Bl!==null&&Hv(Bl)&&(Bl=null),Kf.forEach(gI),Gf.forEach(gI)}function Vv(l,u){l.blockedOn===u&&(l.blockedOn=null,l1||(l1=!0,e.unstable_scheduleCallback(e.unstable_NormalPriority,Yte)))}var Kv=null;function hI(l){Kv!==l&&(Kv=l,e.unstable_scheduleCallback(e.unstable_NormalPriority,function(){Kv===l&&(Kv=null);for(var u=0;u<l.length;u+=3){var g=l[u],b=l[u+1],C=l[u+2];if(typeof b!="function"){if(i1(b||g)===null)continue;break}var A=Mu(g);A!==null&&(l.splice(u,3),u-=3,rC(A,{pending:!0,data:C,method:g.method,action:b},b,C))}}))}function gm(l){function u(Z){return Vv(Z,l)}Ll!==null&&Vv(Ll,l),Ul!==null&&Vv(Ul,l),Bl!==null&&Vv(Bl,l),Kf.forEach(u),Gf.forEach(u);for(var g=0;g<Fl.length;g++){var b=Fl[g];b.blockedOn===l&&(b.blockedOn=null)}for(;0<Fl.length&&(g=Fl[0],g.blockedOn===null);)fI(g),g.blockedOn===null&&Fl.shift();if(g=(l.ownerDocument||l).$$reactFormReplay,g!=null)for(b=0;b<g.length;
vendor: 8,746 bytes, line 50
50b+=3){var C=g[b],A=g[b+1],D=C[uo]||null;if(typeof A=="function")D||hI(g);else if(D){var U=null;if(A&&A.hasAttribute("formAction")){if(C=A,D=A[uo]||null)U=D.formAction;else if(i1(C)!==null)continue}else U=D.action;typeof U=="function"?g[b+1]=U:(g.splice(b,3),b-=3),hI(g)}}}function yI(){function l(A){A.canIntercept&&A.info==="react-transition"&&A.intercept({handler:function(){return new Promise(function(D){return C=D})},focusReset:"manual",scroll:"manual"})}function u(){C!==null&&(C(),C=null),b||setTimeout(g,20)}function g(){if(!b&&!navigation.transition){var A=navigation.currentEntry;A&&A.url!=null&&navigation.navigate(A.url,{state:A.getState(),info:"react-transition",history:"replace"})}}if(typeof navigation=="object"){var b=!1,C=null;return navigation.addEventListener("navigate",l),navigation.addEventListener("navigatesuccess",u),navigation.addEventListener("navigateerror",u),setTimeout(g,100),function(){b=!0,navigation.removeEventListener("navigate",l),navigation.removeEventListener("navigatesuccess",u),navigation.removeEventListener("navigateerror",u),C!==null&&(C(),C=null)}}}function c1(l){this._internalRoot=l}Gv.prototype.render=c1.prototype.render=function(l){var u=this._internalRoot;if(u===null)throw Error(a(409));var g=u.current,b=Uo();lI(g,b,l,u,null,null)},Gv.prototype.unmount=c1.prototype.unmount=function(){var l=this._internalRoot;if(l!==null){this._internalRoot=null;var u=l.containerInfo;lI(l.current,2,null,l,null,null),Tv(),u[Nu]=null}};function Gv(l){this._internalRoot=l}Gv.prototype.unstable_scheduleHydration=function(l){if(l){var u=TN();l={blockedOn:null,target:l,priority:u};for(var g=0;g<Fl.length&&u!==0&&u<Fl[g].priority;g++);Fl.splice(g,0,l),g===0&&fI(l)}};var vI=t.version;if(vI!=="19.2.6")throw Error(a(527,vI,"19.2.6"));M.findDOMNode=function(l){var u=l._reactInternals;if(u===void 0)throw typeof l.render=="function"?Error(a(188)):(l=Object.keys(l).join(","),Error(a(268,l)));return l=m(u),l=l!==null?f(l):null,l=l===null?null:l.stateNode,l};var Qte={bundleType:0,version:"19.2.6",rendererPackageName:"react-dom",currentDispatcherRef:q,reconcilerVersion:"19.2.6"};if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"){var Wv=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!Wv.isDisabled&&Wv.supportsFiber)try{hi=Wv.inject(Qte),Mn=Wv}catch{}}return Qf.createRoot=function(l,u){if(!s(l))throw Error(a(299));var g=!1,b="",C=SM,A=AM,D=TM;return u!=null&&(u.unstable_strictMode===!0&&(g=!0),u.identifierPrefix!==void 0&&(b=u.identifierPrefix),u.onUncaughtError!==void 0&&(C=u.onUncaughtError),u.onCaughtError!==void 0&&(A=u.onCaughtError),u.onRecoverableError!==void 0&&(D=u.onRecoverableError)),u=rI(l,1,!1,null,null,g,b,null,C,A,D,yI),l[Nu]=u.current,HC(l),new c1(u)},Qf.hydrateRoot=function(l,u,g){if(!s(l))throw Error(a(299));var b=!1,C="",A=SM,D=AM,U=TM,Z=null;return g!=null&&(g.unstable_strictMode===!0&&(b=!0),g.identifierPrefix!==void 0&&(C=g.identifierPrefix),g.onUncaughtError!==void 0&&(A=g.onUncaughtError),g.onCaughtError!==void 0&&(D=g.onCaughtError),g.onRecoverableError!==void 0&&(U=g.onRecoverableError),g.formState!==void 0&&(Z=g.formState)),u=rI(l,1,!0,u,g??null,b,C,Z,A,D,U,yI),u.context=iI(null),g=u.current,b=Uo(),b=J0(b),C=Al(b),C.callback=null,Tl(g,C,b),g=b,u.current.lanes=g,ha(u,g),Dr(u),l[Nu]=u.current,HC(l),new Gv(u)},Qf.version="19.2.6",Qf}var _I;function lne(){if(_I)return p1.exports;_I=1;function e(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}return e(),p1.exports=ine(),p1.exports}var H8=lne(),Np=class{constructor(){this.listeners=new Set,this.subscribe=this.subscribe.bind(this)}subscribe(e){return this.listeners.add(e),this.onSubscribe(),()=>{this.listeners.delete(e),this.onUnsubscribe()}}hasListeners(){return this.listeners.size>0}onSubscribe(){}onUnsubscribe(){}},jd,sc,Zm,N8,cne=(N8=class extends Np{constructor(){super();We(this,jd);We(this,sc);We(this,Zm);Le(this,Zm,t=>{if(typeof window<"u"&&window.addEventListener){const n=()=>t();return window.addEventListener("visibilitychange",n,!1),()=>{window.removeEventListener("visibilitychange",n)}}})}onSubscribe(){J(this,sc)||this.setEventListener(J(this,Zm))}onUnsubscribe(){var t;this.hasListeners()||((t=J(this,sc))==null||t.call(this),Le(this,sc,void 0))}setEventListener(t){var n;Le(this,Zm,t),(n=J(this,sc))==null||n.call(this),Le(this,sc,t(a=>{typeof a=="boolean"?this.setFocused(a):this.onFocus()}))}setFocused(t){J(this,jd)!==t&&(Le(this,jd,t),this.onFocus())}onFocus(){const t=this.isFocused();this.listeners.forEach(n=>{n(t)})}isFocused(){return typeof J(this,jd)=="boolean"?J(this,jd):globalThis.document?.visibilityState!=="hidden"}},jd=new WeakMap,sc=new WeakMap,Zm=new WeakMap,N8),QP=new cne,dne={setTimeout:(e,t)=>setTimeout(e,t),clearTimeout:e=>clearTimeout(e),setInterval:(e,t)=>setInterval(e,t),clearInterval:e=>clearInterval(e)},rc,YP,D8,une=(D8=class{constructor(){We(this,rc,dne);We(this,YP,!1)}setTimeoutProvider(e){Le(this,rc,e)}setTimeout(e,t){return J(this,rc).setTimeout(e,t)}clearTimeout(e){J(this,rc).clearTimeout(e)}setInterval(e,t){return J(this,rc).setInterval(e,t)}clearInterval(e){J(this,rc).clearInterval(e)}},rc=new WeakMap,YP=new WeakMap,D8),Sd=new une;function mne(e){setTimeout(e,0)}var pne=typeof window>"u"||"Deno"in globalThis;function Za(){}function fne(e,t){return typeof e=="function"?e(t):e}function bT(e){return typeof e=="number"&&e>=0&&e!==1/0}function V8(e,t){return Math.max(e+(t||0)-Date.now(),0)}function vc(e,t){return typeof e=="function"?e(t):e}function qo(e,t){return typeof e=="function"?e(t):e}function jI(e,t){const{type:n="all",exact:a,fetchStatus:s,predicate:r,queryKey:i,stale:c}=e;if(i){if(a){if(t.queryHash!==XP(i,t.options))return!1}else if(!Vg(t.queryKey,i))return!1}if(n!=="all"){const d=t.isActive();if(n==="active"&&!d||n==="inactive"&&d)return!1}return!(typeof c=="boolean"&&t.isStale()!==c||s&&s!==t.state.fetchStatus||r&&!r(t))}function NI(e,t){const{exact:n,status:a,predicate:s,mutationKey:r}=e;if(r){if(!t.options.mutationKey)return!1;if(n){if(Kd(t.options.mutationKey)!==Kd(r))return!1}else if(!Vg(t.options.mutationKey,r))return!1}return!(a&&t.state.status!==a||s&&!s(t))}function XP(e,t){return(t?.queryKeyHashFn||Kd)(e)}function Kd(e){return JSON.stringify(e,(t,n)=>xT(n)?Object.keys(n).sort().reduce((a,s)=>(a[s]=n[s],a),{}):n)}function Vg(e,t){return e===t?!0:typeof e!=typeof t?!1:e&&t&&typeof e=="object"&&typeof t=="object"?Object.keys(t).every(n=>Vg(e[n],t[n])):!1}var gne=Object.prototype.hasOwnProperty;function K8(e,t,n=0){if(e===t)return e;if(n>500)return t;const a=DI(e)&&DI(t);if(!a&&!(xT(e)&&xT(t)))return t;const r=(a?e:Object.keys(e)).length,i=a?t:Object.keys(t),c=i.length,d=a?new Array(c):{};let m=0;for(let f=0;f<c;f++){const p=a?f:i[f],y=e[p],v=t[p];if(y===v){d[p]=y,(a?f<r:gne.call(e,p))&&m++;continue}if(y===null||v===null||typeof y!="object"||typeof v!="object"){d[p]=v;continue}const $=K8(y,v,n+1);d[p]=$,$===y&&m++}return r===c&&m===r?e:d}function $x(e,t){if(!t||Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(e[n]!==t[n])return!1;return!0}function DI(e){return Array.isArray(e)&&e.length===Object.keys(e).length}function xT(e){if(!MI(e))return!1;const t=e.constructor;if(t===void 0)return!0;const n=t.prototype;return!(!MI(n)||!n.hasOwnProperty("isPrototypeOf")||Object.getPrototypeOf(e)!==Object.prototype)}function MI(e){return Object.prototype.toString.call(e)==="[object Object]"}function hne(e){return new Promise(t=>{Sd.setTimeout(t,e)})}function $T(e,t,n){return typeof n.structuralSharing=="function"?n.structuralSharing(e,t):n.structuralSharing!==!1?K8(e,t):t}function yne(e,t,n=0){const a=[...e,t];return n&&a.length>n?a.slice(1):a}function vne(e,t,n=0){const a=[t,...e];return n&&a.length>n?a.slice(0,-1):a}var ZP=Symbol();function G8(e,t){return!e.queryFn&&t?.initialPromise?()=>t.initialPromise:!e.queryFn||e.queryFn===ZP?()=>Promise.reject(new Error(`Missing queryFn: '${e.queryHash}'`)):e.queryFn}function JP(e,t){return typeof e=="function"?e(...t):!!e}function bne(e,t,n){let a=!1,s;return Object.defineProperty(e,"signal",{enumerable:!0,get:()=>(s??(s=t()),a||(a=!0,s.aborted?n():s.addEventListener("abort",n,{once:!0})),s)}),e}var Kg=(()=>{let e=()=>pne;return{isServer(){return e()},setIsServer(t){e=t}}})();function wT(){let e,t;const n=new Promise((s,r)=>{e=s,t=r});n.status="pending",n.catch(()=>{});function a(s){Object.assign(n,s),delete n.resolve,delete n.reject}return n.resolve=s=>{a({status:"fulfilled",value:s}),e(s)},n.reject=s=>{a({status:"rejected",reason:s}),t(s)},n}var xne=mne;function $ne(){let e=[],t=0,n=c=>{c()},a=c=>{c()},s=xne;const r=c=>{t?e.push(c):s(()=>{n(c)})},i=()=>{const c=e;e=[],c.length&&s(()=>{a(()=>
50{c.forEach(d=>{n(d)})})})};return{batch:c=>{let d;t++;try{d=c()}finally{t--,t||i()}return d},batchCalls:c=>(...d)=>{r(()=>{c(...d)})},schedule:r,setNotifyFunction:c=>{n=c},setBatchNotifyFunction:c=>{a=c},setScheduler:c=>{s=c}}}var Xn=$ne(),Jm,ic,ep,M8,wne=(M8=class extends Np{constructor(){super();We(this,Jm,!0);We(this,ic);We(this,ep);Le(this,ep,t=>{if(typeof window<"u"&&window.addEventListener){const n=()=>t(!0),a=()=>t(!1);return window.addEventListener("online",n,!1),window.addEventListener("offline",a,!1),()=>{window.removeEventListener("online",n),window.removeEventListener("offline",a)}}})}onSubscribe(){J(this,ic)||this.setEventListener(J(this,ep))}onUnsubscribe(){var t;this.hasListeners()||((t=J(this,ic))==null||t.call(this),Le(this,ic,void 0))}setEventListener(t){var n;Le(this,ep,t),(n=J(this,ic))==null||n.call(this),Le(this,ic,t(this.setOnline.bind(this)))}setOnline(t){J(this,Jm)!==t&&(Le(this,Jm,t),this.listeners.forEach(a=>{a(t)}))}isOnline(){return J(this,Jm)}},Jm=new WeakMap,ic=new WeakMap,ep=new WeakMap,M8),wx=new wne;function kne(e){return Math.min(1e3*2**e,3e4)}function W8(e){return(e??"online")==="online"?wx.isOnline():!0}var kT=class extends Error{constructor(e){super("CancelledError"),this.revert=e?.revert,this.silent=e?.silent}};function Y8(e){let t=!1,n=0,a;const s=wT(),r=()=>s.status!=="pending",i=x=>{if(!r()){const w=new kT(x);y(w),e.onCancel?.(w)}},c=()=>{t=!0},d=()=>{t=!1},m=()=>QP.isFocused()&&(e.networkMode==="always"||wx.isOnline())&&e.canRun(),f=()=>W8(e.networkMode)&&e.canRun(),p=x=>{r()||(a?.(),s.resolve(x))},y=x=>{r()||(a?.(),s.reject(x))},v=()=>new Promise(x=>{a=w=>{(r()||m())&&x(w)},e.onPause?.()}).then(()=>{a=void 0,r()||e.onContinue?.()}),$=()=>{if(r())return;let x;const w=n===0?e.initialPromise:void 0;try{x=w??e.fn()}catch(S){x=Promise.reject(S)}Promise.resolve(x).then(p).catch(S=>{if(r())return;const k=e.retry??(Kg.isServer()?0:3),T=e.retryDelay??kne,R=typeof T=="function"?T(n,S):T,_=k===!0||typeof k=="number"&&n<k||typeof k=="function"&&k(n,S);if(t||!_){y(S);return}n++,e.onFail?.(n,S),hne(R).then(()=>m()?void 0:v()).then(()=>{t?y(S):$()})})};return{promise:s,status:()=>s.status,cancel:i,continue:()=>(a?.(),s),cancelRetry:c,continueRetry:d,canStart:f,start:()=>(f()?$():v().then($),s)}}var Nd,E8,Q8=(E8=class{constructor(){We(this,Nd)}destroy(){this.clearGcTimeout()}scheduleGc(){this.clearGcTimeout(),bT(this.gcTime)&&Le(this,Nd,Sd.setTimeout(()=>{this.optionalRemove()},this.gcTime))}updateGcTime(e){this.gcTime=Math.max(this.gcTime||0,e??(Kg.isServer()?1/0:300*1e3))}clearGcTimeout(){J(this,Nd)!==void 0&&(Sd.clearTimeout(J(this,Nd)),Le(this,Nd,void 0))}},Nd=new WeakMap,E8);function Cne(e){return{onFetch:(t,n)=>{const a=t.options,s=t.fetchOptions?.meta?.fetchMore?.direction,r=t.state.data?.pages||[],i=t.state.data?.pageParams||[];let c={pages:[],pageParams:[]},d=0;const m=async()=>{let f=!1;const p=$=>{bne($,()=>t.signal,()=>f=!0)},y=G8(t.options,t.fetchOptions),v=async($,x,w)=>{if(f)return Promise.reject(t.signal.reason);if(x==null&&$.pages.length)return Promise.resolve($);const k=(()=>{const P={client:t.client,queryKey:t.queryKey,pageParam:x,direction:w?"backward":"forward",meta:t.options.meta};return p(P),P})(),T=await y(k),{maxPages:R}=t.options,_=w?vne:yne;return{pages:_($.pages,T,R),pageParams:_($.pageParams,x,R)}};if(s&&r.length){const $=s==="backward",x=$?X8:CT,w={pages:r,pageParams:i},S=x(a,w);c=await v(w,S,$)}else{const $=e??r.length;do{const x=d===0?i[0]??a.initialPageParam:CT(a,c);if(d>0&&x==null)break;c=await v(c,x),d++}while(d<$)}return c};t.options.persister?t.fetchFn=()=>t.options.persister?.(m,{client:t.client,queryKey:t.queryKey,meta:t.options.meta,signal:t.signal},n):t.fetchFn=m}}}function CT(e,{pages:t,pageParams:n}){const a=t.length-1;return t.length>0?e.getNextPageParam(t[a],t,n[a],n):void 0}function X8(e,{pages:t,pageParams:n}){return t.length>0?e.getPreviousPageParam?.(t[0],t,n[0],n):void 0}function Sne(e,t){return t?CT(e,t)!=null:!1}function Ane(e,t){return!t||!e.getPreviousPageParam?!1:X8(e,t)!=null}var tp,Dd,np,Ts,Md,sa,Dh,Ed,zo,Z8,Oi,I8,Tne=(I8=class extends Q8{constructor(t){super();We(this,zo);We(this,tp);We(this,Dd);We(this,np);We(this,Ts);We(this,Md);We(this,sa);We(this,Dh);We(this,Ed);Le(this,Ed,!1),Le(this,Dh,t.defaultOptions),this.setOptions(t.options),this.observers=[],Le(this,Md,t.client),Le(this,Ts,J(this,Md).getQueryCache()),this.queryKey=t.queryKey,this.queryHash=t.queryHash,Le(this,Dd,II(this.options)),this.state=t.state??J(this,Dd),this.scheduleGc()}get meta(){return this.options.meta}get queryType(){return J(this,tp)}get promise(){return J(this,sa)?.promise}setOptions(t){if(this.options={...J(this,Dh),...t},t?._type&&Le(this,tp,t._type),this.updateGcTime(this.options.gcTime),this.state&&this.state.data===void 0){const n=II(this.options);n.data!==void 0&&(this.setState(EI(n.data,n.dataUpdatedAt)),Le(this,Dd,n))}}optionalRemove(){!this.observers.length&&this.state.fetchStatus==="idle"&&J(this,Ts).remove(this)}setData(t,n){const a=$T(this.state.data,t,this.options);return pt(this,zo,Oi).call(this,{data:a,type:"success",dataUpdatedAt:n?.updatedAt,manual:n?.manual}),a}setState(t){pt(this,zo,Oi).call(this,{type:"setState",state:t})}cancel(t){const n=J(this,sa)?.promise;
50return J(this,sa)?.cancel(t),n?n.then(Za).catch(Za):Promise.resolve()}destroy(){super.destroy(),this.cancel({silent:!0})}get resetState(){return J(this,Dd)}reset(){this.destroy(),this.setState(this.resetState)}isActive(){return this.observers.some(t=>qo(t.options.enabled,this)!==!1)}isDisabled(){return this.getObserversCount()>0?!this.isActive():this.options.queryFn===ZP||!this.isFetched()}isFetched(){return this.state.dataUpdateCount+this.state.errorUpdateCount>0}isStatic(){return this.getObserversCount()>0?this.observers.some(t=>vc(t.options.staleTime,this)==="static"):!1}isStale(){return this.getObserversCount()>0?this.observers.some(t=>t.getCurrentResult().isStale):this.state.data===void 0||this.state.isInvalidated}isStaleByTime(t=0){return this.state.data===void 0?!0:t==="static"?!1:this.state.isInvalidated?!0:!V8(this.state.dataUpdatedAt,t)}onFocus(){this.observers.find(n=>n.shouldFetchOnWindowFocus())?.refetch({cancelRefetch:!1}),J(this,sa)?.continue()}onOnline(){this.observers.find(n=>n.shouldFetchOnReconnect())?.refetch({cancelRefetch:!1}),J(this,sa)?.continue()}addObserver(t){this.observers.includes(t)||(this.observers.push(t),this.clearGcTimeout(),J(this,Ts).notify({type:"observerAdded",query:this,observer:t}))}removeObserver(t){this.observers.includes(t)&&(this.observers=this.observers.filter(n=>n!==t),this.observers.length||(J(this,sa)&&(J(this,Ed)||pt(this,zo,Z8).call(this)?J(this,sa).cancel({revert:!0}):J(this,sa).cancelRetry()),this.scheduleGc()),J(this,Ts).notify({type:"observerRemoved",query:this,observer:t}))}getObserversCount(){return this.observers.length}invalidate(){this.state.isInvalidated||pt(this,zo,Oi).call(this,{type:"invalidate"})}async fetch(t,n){if(this.state.fetchStatus!=="idle"&&J(this,sa)?.status()!=="rejected"){if(this.state.data!==void 0&&n?.cancelRefetch)this.cancel({silent:!0});else if(J(this,sa))return J(this,sa).continueRetry(),J(this,sa).promise}if(t&&this.setOptions(t),!this.options.queryFn){const m=this.observers.find(f=>f.options.queryFn);m&&this.setOptions(m.options)}const a=new AbortController,s=m=>{Object.defineProperty(m,"signal",{enumerable:!0,get:()=>(Le(this,Ed,!0),a.signal)})},r=()=>{const m=G8(this.options,n),p=(()=>{const y={client:J(this,Md),queryKey:this.queryKey,meta:this.meta};return s(y),y})();return Le(this,Ed,!1),this.options.persister?this.options.persister(m,p,this):m(p)},c=(()=>{const m={fetchOptions:n,options:this.options,queryKey:this.queryKey,client:J(this,Md),state:this.state,fetchFn:r};return s(m),m})();(J(this,tp)==="infinite"?Cne(this.options.pages):this.options.behavior)?.onFetch(c,this),Le(this,np,this.state),(this.state.fetchStatus==="idle"||this.state.fetchMeta!==c.fetchOptions?.meta)&&pt(this,zo,Oi).call(this,{type:"fetch",meta:c.fetchOptions?.meta}),Le(this,sa,Y8({initialPromise:n?.initialPromise,fn:c.fetchFn,onCancel:m=>{m instanceof kT&&m.revert&&this.setState({...J(this,np),fetchStatus:"idle"}),a.abort()},onFail:(m,f)=>{pt(this,zo,Oi).call(this,{type:"failed",failureCount:m,error:f})},onPause:()=>{pt(this,zo,Oi).call(this,{type:"pause"})},onContinue:()=>{pt(this,zo,Oi).call(this,{type:"continue"})},retry:c.options.retry,retryDelay:c.options.retryDelay,networkMode:c.options.networkMode,canRun:()=>!0}));try{const m=await J(this,sa).start();if(m===void 0)throw new Error(`${this.queryHash} data is undefined`);return this.setData(m),J(this,Ts).config.onSuccess?.(m,this),J(this,Ts).config.onSettled?.(m,this.state.error,this),m}catch(m){if(m instanceof kT){if(m.silent)return J(this,sa).promise;if(m.revert){if(this.state.data===void 0)throw m;return this.state.data}}throw pt(this,zo,Oi).call(this,{type:"error",error:m}),J(this,Ts).config.onError?.(m,this),J(this,Ts).config.onSettled?.(this.state.data,m,this),m}finally{this.scheduleGc()}}},tp=new WeakMap,Dd=new WeakMap,np=new WeakMap,Ts=new WeakMap,Md=new WeakMap,sa=new WeakMap,Dh=new WeakMap,Ed=new WeakMap,zo=new WeakSet,Z8=function(){return this.state.fetchStatus==="paused"&&this.state.status==="pending"},Oi=function(t){const n=a=>{switch(t.type){case"failed":return{...a,fetchFailureCount:t.failureCount,fetchFailureReason:t.error};case"pause":return{...a,fetchStatus:"paused"};case"continue":return{...a,fetchStatus:"fetching"};case"fetch":return{...a,...J8(a.data,this.options),fetchMeta:t.meta??null};case"success":const s={...a,...EI(t.data,t.dataUpdatedAt),dataUpdateCount:a.dataUpdateCount+1,...!t.manual&&{fetchStatus:"idle",fetchFailureCount:0,fetchFailureReason:null}};return Le(this,np,t.manual?s:void 0),s;case"error":const r=t.error;
50return{...a,error:r,errorUpdateCount:a.errorUpdateCount+1,errorUpdatedAt:Date.now(),fetchFailureCount:a.fetchFailureCount+1,fetchFailureReason:r,fetchStatus:"idle",status:"error",isInvalidated:!0};case"invalidate":return{...a,isInvalidated:!0};case"setState":return{...a,...t.state}}};this.state=n(this.state),Xn.batch(()=>{this.observers.forEach(a=>{a.onQueryUpdate()}),J(this,Ts).notify({query:this,type:"updated",action:t})})},I8);function J8(e,t){return{fetchFailureCount:0,fetchFailureReason:null,fetchStatus:W8(t.networkMode)?"fetching":"paused",...e===void 0&&{error:null,status:"pending"}}}function EI(e,t){return{data:e,dataUpdatedAt:t??Date.now(),error:null,isInvalidated:!1,status:"success"}}function II(e){const t=typeof e.initialData=="function"?e.initialData():e.initialData,n=t!==void 0,a=n?typeof e.initialDataUpdatedAt=="function"?e.initialDataUpdatedAt():e.initialDataUpdatedAt:0;return{data:t,dataUpdateCount:0,dataUpdatedAt:n?a??Date.now():0,error:null,errorUpdateCount:0,errorUpdatedAt:0,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null,isInvalidated:!1,status:n?"success":"pending",fetchStatus:"idle"}}var bo,Ct,Mh,Xa,Id,ap,Bi,lc,Eh,op,sp,Od,Ld,cc,rp,It,xg,ST,AT,TT,RT,PT,_T,jT,tF,O8,eF=(O8=class extends Np{constructor(t,n){super();We(this,It);We(this,bo);We(this,Ct);We(this,Mh);We(this,Xa);We(this,Id);We(this,ap);We(this,Bi);We(this,lc);We(this,Eh);We(this,op);We(this,sp);We(this,Od);We(this,Ld);We(this,cc);We(this,rp,new Set);this.options=n,Le(this,bo,t),Le(this,lc,null),Le(this,Bi,wT()),this.bindMethods(),this.setOptions(n)}bindMethods(){this.refetch=this.refetch.bind(this)}onSubscribe(){this.listeners.size===1&&(J(this,Ct).addObserver(this),OI(J(this,Ct),this.options)?pt(this,It,xg).call(this):this.updateResult(),pt(this,It,RT).call(this))}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return NT(J(this,Ct),this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return NT(J(this,Ct),this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,pt(this,It,PT).call(this),pt(this,It,_T).call(this),J(this,Ct).removeObserver(this)}setOptions(t){const n=this.options,a=J(this,Ct);if(this.options=J(this,bo).defaultQueryOptions(t),this.options.enabled!==void 0&&typeof this.options.enabled!="boolean"&&typeof this.options.enabled!="function"&&typeof qo(this.options.enabled,J(this,Ct))!="boolean")throw new Error("Expected enabled to be a boolean or a callback that returns a boolean");pt(this,It,jT).call(this),J(this,Ct).setOptions(this.options),n._defaulted&&!$x(this.options,n)&&J(this,bo).getQueryCache().notify({type:"observerOptionsUpdated",query:J(this,Ct),observer:this});const s=this.hasListeners();s&&LI(J(this,Ct),a,this.options,n)&&pt(this,It,xg).call(this),this.updateResult(),s&&(J(this,Ct)!==a||qo(this.options.enabled,J(this,Ct))!==qo(n.enabled,J(this,Ct))||vc(this.options.staleTime,J(this,Ct))!==vc(n.staleTime,J(this,Ct)))&&pt(this,It,ST).call(this);const r=pt(this,It,AT).call(this);s&&(J(this,Ct)!==a||qo(this.options.enabled,J(this,Ct))!==qo(n.enabled,J(this,Ct))||r!==J(this,cc))&&pt(this,It,TT).call(this,r)}getOptimisticResult(t){const n=J(this,bo).getQueryCache().build(J(this,bo),t),a=this.createResult(n,t);return Pne(this,a)&&(Le(this,Xa,a),Le(this,ap,this.options),Le(this,Id,J(this,Ct).state)),a}getCurrentResult(){return J(this,Xa)}trackResult(t,n){return new Proxy(t,{get:(a,s)=>(this.trackProp(s),n?.(s),s==="promise"&&(this.trackProp("data"),!this.options.experimental_prefetchInRender&&J(this,Bi).status==="pending"&&J(this,Bi).reject(new Error("experimental_prefetchInRender feature flag is not enabled"))),Reflect.get(a,s))})}trackProp(t){J(this,rp).add(t)}getCurrentQuery(){return J(this,Ct)}refetch({...t}={}){return this.fetch({...t})}fetchOptimistic(t){const n=J(this,bo).defaultQueryOptions(t),a=J(this,bo).getQueryCache().build(J(this,bo),n);return a.fetch().then(()=>this.createResult(a,n))}fetch(t){return pt(this,It,xg).call(this,{...t,cancelRefetch:t.cancelRefetch??!0}).then(()=>(this.updateResult(),J(this,Xa)))}createResult(t,n){const a=J(this,Ct),s=this.options,r=J(this,Xa),i=J(this,Id),c=J(this,ap),m=t!==a?t.state:J(this,Mh),{state:f}=t;let p={...f},y=!1,v;if(n._optimisticResults){const I=this.hasListeners(),z=!I&&OI(t,n),E=I&&LI(t,a,n,s);(z||E)&&(p={...p,...J8(f.data,t.options)}),n._optimisticResults==="isRestoring"&&(p.fetchStatus="idle")}let{error:$,errorUpdatedAt:x,status:w}=p;v=p.data;let S=!1;if(n.placeholderData!==void 0&&v===void 0&&w==="pending"){let I;r?.isPlaceholderData&&n.placeholderData===c?.placeholderData?(I=r.data,S=!0):I=typeof n.placeholderData=="function"?n.placeholderData(J(this,sp)?.state.data,J(this,sp)):n.placeholderData,I!==void 0&&(w="success",v=$T(r?.data,I,n),y=!0)}if(n.select&&v!==void 0&&!S)if(r&&v===i?.data&&n.select===J(this,Eh))v=J(this,op);else try{Le(this,Eh,n.select),v=n.select(v),v=$T(r?.data,v,n),Le(this,op,v),Le(this,lc,null)}catch(I){Le(this,lc,I)}J(this,lc)&&($=J(this,lc),v=J(this,op),x=Date.now(),w="error");const k=p.fetchStatus==="fetching",T=w==="pending",R=w==="error",_=T&&
50k,P=v!==void 0,N={status:w,fetchStatus:p.fetchStatus,isPending:T,isSuccess:w==="success",isError:R,isInitialLoading:_,isLoading:_,data:v,dataUpdatedAt:p.dataUpdatedAt,error:$,errorUpdatedAt:x,failureCount:p.fetchFailureCount,failureReason:p.fetchFailureReason,errorUpdateCount:p.errorUpdateCount,isFetched:t.isFetched(),isFetchedAfterMount:p.dataUpdateCount>m.dataUpdateCount||p.errorUpdateCount>m.errorUpdateCount,isFetching:k,isRefetching:k&&!T,isLoadingError:R&&!P,isPaused:p.fetchStatus==="paused",isPlaceholderData:y,isRefetchError:R&&P,isStale:e_(t,n),refetch:this.refetch,promise:J(this,Bi),isEnabled:qo(n.enabled,t)!==!1};if(this.options.experimental_prefetchInRender){const I=N.data!==void 0,z=N.status==="error"&&!I,E=V=>{z?V.reject(N.error):I&&V.resolve(N.data)},L=()=>{const V=Le(this,Bi,N.promise=wT());E(V)},O=J(this,Bi);switch(O.status){case"pending":t.queryHash===a.queryHash&&E(O);break;case"fulfilled":(z||N.data!==O.value)&&L();break;case"rejected":(!z||N.error!==O.reason)&&L();break}}return N}updateResult(){const t=J(this,Xa),n=this.createResult(J(this,Ct),this.options);if(Le(this,Id,J(this,Ct).state),Le(this,ap,this.options),J(this,Id).data!==void 0&&Le(this,sp,J(this,Ct)),$x(n,t))return;Le(this,Xa,n);const a=()=>{if(!t)return!0;const{notifyOnChangeProps:s}=this.options,r=typeof s=="function"?s():s;if(r==="all"||!r&&!J(this,rp).size)return!0;const i=new Set(r??J(this,rp));return this.options.throwOnError&&i.add("error"),Object.keys(J(this,Xa)).some(c=>{const d=c;return J(this,Xa)[d]!==t[d]&&i.has(d)})};pt(this,It,tF).call(this,{listeners:a()})}onQueryUpdate(){this.updateResult(),this.hasListeners()&&pt(this,It,RT).call(this)}},bo=new WeakMap,Ct=new WeakMap,Mh=new WeakMap,Xa=new WeakMap,Id=new WeakMap,ap=new WeakMap,Bi=new WeakMap,lc=new WeakMap,Eh=new WeakMap,op=new WeakMap,sp=new WeakMap,Od=new WeakMap,Ld=new WeakMap,cc=new WeakMap,rp=new WeakMap,It=new WeakSet,xg=function(t){pt(this,It,jT).call(this);let n=J(this,Ct).fetch(this.options,t);return t?.throwOnError||(n=n.catch(Za)),n},ST=function(){pt(this,It,PT).call(this);const t=vc(this.options.staleTime,J(this,Ct));if(Kg.isServer()||J(this,Xa).isStale||!bT(t))return;const a=V8(J(this,Xa).dataUpdatedAt,t)+1;Le(this,Od,Sd.setTimeout(()=>{J(this,Xa).isStale||this.updateResult()},a))},AT=function(){return(typeof this.options.refetchInterval=="function"?this.options.refetchInterval(J(this,Ct)):this.options.refetchInterval)??!1},TT=function(t){pt(this,It,_T).call(this),Le(this,cc,t),!(Kg.isServer()||qo(this.options.enabled,J(this,Ct))===!1||!bT(J(this,cc))||J(this,cc)===0)&&Le(this,Ld,Sd.setInterval(()=>{(this.options.refetchIntervalInBackground||QP.isFocused())&&pt(this,It,xg).call(this)},J(this,cc)))},RT=function(){pt(this,It,ST).call(this),pt(this,It,TT).call(this,pt(this,It,AT).call(this))},PT=function(){J(this,Od)!==void 0&&(Sd.clearTimeout(J(this,Od)),Le(this,Od,void 0))},_T=function(){J(this,Ld)!==void 0&&(Sd.clearInterval(J(this,Ld)),Le(this,Ld,void 0))},jT=function(){const t=J(this,bo).getQueryCache().build(J(this,bo),this.options);if(t===J(this,Ct))return;const n=J(this,Ct);Le(this,Ct,t),Le(this,Mh,t.state),this.hasListeners()&&(n?.removeObserver(this),t.addObserver(this))},tF=function(t){Xn.batch(()=>{t.listeners&&this.listeners.forEach(n=>{n(J(this,Xa))}),J(this,bo).getQueryCache().notify({query:J(this,Ct),type:"observerResultsUpdated"})})},O8);function Rne(e,t){return qo(t.enabled,e)!==!1&&e.state.data===void 0&&!(e.state.status==="error"&&qo(t.retryOnMount,e)===!1)}function OI(e,t){return Rne(e,t)||e.state.data!==void 0&&NT(e,t,t.refetchOnMount)}function NT(e,t,n){if(qo(t.enabled,e)!==!1&&vc(t.staleTime,e)!=="static"){const a=typeof n=="function"?n(e):n;return a==="always"||a!==!1&&e_(e,t)}return!1}function LI(e,t,n,a){return(e!==t||qo(a.enabled,e)===!1)&&(!n.suspense||e.state.status!=="error")&&e_(e,n)}function e_(e,t){return qo(t.enabled,e)!==!1&&e.isStaleByTime(vc(t.staleTime,e))}function Pne(e,t){return!$x(e.getCurrentResult(),t)}var _ne=class extends eF{constructor(e,t){super(e,t)}bindMethods(){super.bindMethods(),this.fetchNextPage=this.fetchNextPage.bind(this),this.fetchPreviousPage=this.fetchPreviousPage.bind(this)}setOptions(e){e._type="infinite",super.setOptions(e)}getOptimisticResult(e){return e._type="infinite",super.getOptimisticResult(e)}
50fetchNextPage(e){return this.fetch({...e,meta:{fetchMore:{direction:"forward"}}})}fetchPreviousPage(e){return this.fetch({...e,meta:{fetchMore:{direction:"backward"}}})}createResult(e,t){const{state:n}=e,a=super.createResult(e,t),{isFetching:s,isRefetching:r,isError:i,isRefetchError:c}=a,d=n.fetchMeta?.fetchMore?.direction,m=i&&d==="forward",f=s&&d==="forward",p=i&&d==="backward",y=s&&d==="backward";return{...a,fetchNextPage:this.fetchNextPage,fetchPreviousPage:this.fetchPreviousPage,hasNextPage:Sne(t,n.data),hasPreviousPage:Ane(t,n.data),isFetchNextPageError:m,isFetchingNextPage:f,isFetchPreviousPageError:p,isFetchingPreviousPage:y,isRefetchError:c&&!m&&!p,isRefetching:r&&!f&&!y}}},Ih,zr,Ma,Ud,qr,Wl,L8,jne=(L8=class extends Q8{constructor(t){super();We(this,qr);We(this,Ih);We(this,zr);We(this,Ma);We(this,Ud);Le(this,Ih,t.client),this.mutationId=t.mutationId,Le(this,Ma,t.mutationCache),Le(this,zr,[]),this.state=t.state||nF(),this.setOptions(t.options),this.scheduleGc()}setOptions(t){this.options=t,this.updateGcTime(this.options.gcTime)}get meta(){return this.options.meta}addObserver(t){J(this,zr).includes(t)||(J(this,zr).push(t),this.clearGcTimeout(),J(this,Ma).notify({type:"observerAdded",mutation:this,observer:t}))}removeObserver(t){Le(this,zr,J(this,zr).filter(n=>n!==t)),this.scheduleGc(),J(this,Ma).notify({type:"observerRemoved",mutation:this,observer:t})}optionalRemove(){J(this,zr).length||(this.state.status==="pending"?this.scheduleGc():J(this,Ma).remove(this))}continue(){return J(this,Ud)?.continue()??this.execute(this.state.variables)}async execute(t){const n=()=>{pt(this,qr,Wl).call(this,{type:"continue"})},a={client:J(this,Ih),meta:this.options.meta,mutationKey:this.options.mutationKey};Le(this,Ud,Y8({fn:()=>this.options.mutationFn?this.options.mutationFn(t,a):Promise.reject(new Error("No mutationFn found")),onFail:(i,c)=>{pt(this,qr,Wl).call(this,{type:"failed",failureCount:i,error:c})},onPause:()=>{pt(this,qr,Wl).call(this,{type:"pause"})},onContinue:n,retry:this.options.retry??0,retryDelay:this.options.retryDelay,networkMode:this.options.networkMode,canRun:()=>J(this,Ma).canRun(this)}));const s=this.state.status==="pending",r=!J(this,Ud).canStart();try{if(s)n();else{pt(this,qr,Wl).call(this,{type:"pending",variables:t,isPaused:r}),J(this,Ma).config.onMutate&&await J(this,Ma).config.onMutate(t,this,a);const c=await this.options.onMutate?.(t,a);c!==this.state.context&&pt(this,qr,Wl).call(this,{type:"pending",context:c,variables:t,isPaused:r})}const i=await J(this,Ud).start();return await J(this,Ma).config.onSuccess?.(i,t,this.state.context,this,a),await this.options.onSuccess?.(i,t,this.state.context,a),await J(this,Ma).config.onSettled?.(i,null,this.state.variables,this.state.context,this,a),await this.options.onSettled?.(i,null,t,this.state.context,a),pt(this,qr,Wl).call(this,{type:"success",data:i}),i}catch(i){try{await J(this,Ma).config.onError?.(i,t,this.state.context,this,a)}catch(c){Promise.reject(c)}try{await this.options.onError?.(i,t,this.state.context,a)}catch(c){Promise.reject(c)}try{await J(this,Ma).config.onSettled?.(void 0,i,this.state.variables,this.state.context,this,a)}catch(c){Promise.reject(c)}try{await this.options.onSettled?.(void 0,i,t,this.state.context,a)}catch(c){Promise.reject(c)}throw pt(this,qr,Wl).call(this,{type:"error",error:i}),i}finally{J(this,Ma).runNext(this)}}},Ih=new WeakMap,zr=new WeakMap,Ma=new WeakMap,Ud=new WeakMap,qr=new WeakSet,Wl=function(t){const n=a=>{switch(t.type){case"failed":return{...a,failureCount:t.failureCount,failureReason:t.error};case"pause":return{...a,isPaused:!0};case"continue":return{...a,isPaused:!1};case"pending":return{...a,context:t.context,data:void 0,failureCount:0,failureReason:null,error:null,isPaused:t.isPaused,status:"pending",variables:t.variables,submittedAt:Date.now()};case"success":return{...a,data:t.data,failureCount:0,failureReason:null,error:null,status:"success",isPaused:!1};case"error":return{...a,data:void 0,error:t.error,failureCount:a.failureCount+1,failureReason:t.error,isPaused:!1,status:"error"}}};this.state=n(this.state),Xn.batch(()=>{J(this,zr).forEach(a=>{a.onMutationUpdate(t)}),J(this,Ma).notify({mutation:this,type:"updated",action:t})})},L8);function nF(){return{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:"idle",variables:void 0,submittedAt:0}}var Fi,er,Oh,U8,Nne=(U8=class extends Np{constructor(t={}){super();We(this,Fi);We(this,er);
50We(this,Oh);this.config=t,Le(this,Fi,new Set),Le(this,er,new Map),Le(this,Oh,0)}build(t,n,a){const s=new jne({client:t,mutationCache:this,mutationId:++Yv(this,Oh)._,options:t.defaultMutationOptions(n),state:a});return this.add(s),s}add(t){J(this,Fi).add(t);const n=Qv(t);if(typeof n=="string"){const a=J(this,er).get(n);a?a.push(t):J(this,er).set(n,[t])}this.notify({type:"added",mutation:t})}remove(t){if(J(this,Fi).delete(t)){const n=Qv(t);if(typeof n=="string"){const a=J(this,er).get(n);if(a)if(a.length>1){const s=a.indexOf(t);s!==-1&&a.splice(s,1)}else a[0]===t&&J(this,er).delete(n)}}this.notify({type:"removed",mutation:t})}canRun(t){const n=Qv(t);if(typeof n=="string"){const s=J(this,er).get(n)?.find(r=>r.state.status==="pending");return!s||s===t}else return!0}runNext(t){const n=Qv(t);return typeof n=="string"?J(this,er).get(n)?.find(s=>s!==t&&s.state.isPaused)?.continue()??Promise.resolve():Promise.resolve()}clear(){Xn.batch(()=>{J(this,Fi).forEach(t=>{this.notify({type:"removed",mutation:t})}),J(this,Fi).clear(),J(this,er).clear()})}getAll(){return Array.from(J(this,Fi))}find(t){const n={exact:!0,...t};return this.getAll().find(a=>NI(n,a))}findAll(t={}){return this.getAll().filter(n=>NI(t,n))}notify(t){Xn.batch(()=>{this.listeners.forEach(n=>{n(t)})})}resumePausedMutations(){const t=this.getAll().filter(n=>n.state.isPaused);return Xn.batch(()=>Promise.all(t.map(n=>n.continue().catch(Za))))}},Fi=new WeakMap,er=new WeakMap,Oh=new WeakMap,U8);function Qv(e){return e.options.scope?.id}var zi,dc,xo,qi,Qi,Yb,DT,B8,Dne=(B8=class extends Np{constructor(n,a){super();We(this,Qi);We(this,zi);We(this,dc);We(this,xo);We(this,qi);Le(this,zi,n),this.setOptions(a),this.bindMethods(),pt(this,Qi,Yb).call(this)}bindMethods(){this.mutate=this.mutate.bind(this),this.reset=this.reset.bind(this)}setOptions(n){const a=this.options;this.options=J(this,zi).defaultMutationOptions(n),$x(this.options,a)||J(this,zi).getMutationCache().notify({type:"observerOptionsUpdated",mutation:J(this,xo),observer:this}),a?.mutationKey&&this.options.mutationKey&&Kd(a.mutationKey)!==Kd(this.options.mutationKey)?this.reset():J(this,xo)?.state.status==="pending"&&J(this,xo).setOptions(this.options)}onUnsubscribe(){this.hasListeners()||J(this,xo)?.removeObserver(this)}onMutationUpdate(n){pt(this,Qi,Yb).call(this),pt(this,Qi,DT).call(this,n)}getCurrentResult(){return J(this,dc)}reset(){J(this,xo)?.removeObserver(this),Le(this,xo,void 0),pt(this,Qi,Yb).call(this),pt(this,Qi,DT).call(this)}mutate(n,a){return Le(this,qi,a),J(this,xo)?.removeObserver(this),Le(this,xo,J(this,zi).getMutationCache().build(J(this,zi),this.options)),J(this,xo).addObserver(this),J(this,xo).execute(n)}},zi=new WeakMap,dc=new WeakMap,xo=new WeakMap,qi=new WeakMap,Qi=new WeakSet,Yb=function(){const n=J(this,xo)?.state??nF();Le(this,dc,{...n,isPending:n.status==="pending",isSuccess:n.status==="success",isError:n.status==="error",isIdle:n.status==="idle",mutate:this.mutate,reset:this.reset})},DT=function(n){Xn.batch(()=>{if(J(this,qi)&&this.hasListeners()){const a=J(this,dc).variables,s=J(this,dc).context,r={client:J(this,zi),meta:this.options.meta,mutationKey:this.options.mutationKey};if(n?.type==="success"){try{J(this,qi).onSuccess?.(n.data,a,s,r)}catch(i){Promise.reject(i)}try{J(this,qi).onSettled?.(n.data,null,a,s,r)}catch(i){Promise.reject(i)}}else if(n?.type==="error"){try{J(this,qi).onError?.(n.error,a,s,r)}catch(i){Promise.reject(i)}try{J(this,qi).onSettled?.(void 0,n.error,a,s,r)}catch(i){Promise.reject(i)}}}this.listeners.forEach(a=>{a(J(this,dc))})})},B8),Hr,F8,Mne=(F8=class extends Np{constructor(t={}){super();We(this,Hr);this.config=t,Le(this,Hr,new Map)}build(t,n,a){const s=n.queryKey,r=n.queryHash??XP(s,n);let i=this.get(r);return i||(i=new Tne({client:t,queryKey:s,queryHash:r,options:t.defaultQueryOptions(n),state:a,defaultOptions:t.getQueryDefaults(s)}),this.add(i)),i}add(t){J(this,Hr).has(t.queryHash)||(J(this,Hr).set(t.queryHash,t),this.notify({type:"added",query:t}))}remove(t){const n=J(this,Hr).get(t.queryHash);n&&(t.destroy(),n===t&&J(this,Hr).delete(t.queryHash),this.notify({type:"removed",query:t}))}clear(){Xn.batch(()=>
vendor: 4,127 bytes, line 50
50{this.getAll().forEach(t=>{this.remove(t)})})}get(t){return J(this,Hr).get(t)}getAll(){return[...J(this,Hr).values()]}find(t){const n={exact:!0,...t};return this.getAll().find(a=>jI(n,a))}findAll(t={}){const n=this.getAll();return Object.keys(t).length>0?n.filter(a=>jI(t,a)):n}notify(t){Xn.batch(()=>{this.listeners.forEach(n=>{n(t)})})}onFocus(){Xn.batch(()=>{this.getAll().forEach(t=>{t.onFocus()})})}onOnline(){Xn.batch(()=>{this.getAll().forEach(t=>{t.onOnline()})})}},Hr=new WeakMap,F8),Cn,uc,mc,ip,lp,pc,cp,dp,z8,Ene=(z8=class{constructor(e={}){We(this,Cn);We(this,uc);We(this,mc);We(this,ip);We(this,lp);We(this,pc);We(this,cp);We(this,dp);Le(this,Cn,e.queryCache||new Mne),Le(this,uc,e.mutationCache||new Nne),Le(this,mc,e.defaultOptions||{}),Le(this,ip,new Map),Le(this,lp,new Map),Le(this,pc,0)}mount(){Yv(this,pc)._++,J(this,pc)===1&&(Le(this,cp,QP.subscribe(async e=>{e&&(await this.resumePausedMutations(),J(this,Cn).onFocus())})),Le(this,dp,wx.subscribe(async e=>{e&&(await this.resumePausedMutations(),J(this,Cn).onOnline())})))}unmount(){var e,t;Yv(this,pc)._--,J(this,pc)===0&&((e=J(this,cp))==null||e.call(this),Le(this,cp,void 0),(t=J(this,dp))==null||t.call(this),Le(this,dp,void 0))}isFetching(e){return J(this,Cn).findAll({...e,fetchStatus:"fetching"}).length}isMutating(e){return J(this,uc).findAll({...e,status:"pending"}).length}getQueryData(e){const t=this.defaultQueryOptions({queryKey:e});return J(this,Cn).get(t.queryHash)?.state.data}ensureQueryData(e){const t=this.defaultQueryOptions(e),n=J(this,Cn).build(this,t),a=n.state.data;return a===void 0?this.fetchQuery(e):(e.revalidateIfStale&&n.isStaleByTime(vc(t.staleTime,n))&&this.prefetchQuery(t),Promise.resolve(a))}getQueriesData(e){return J(this,Cn).findAll(e).map(({queryKey:t,state:n})=>{const a=n.data;return[t,a]})}setQueryData(e,t,n){const a=this.defaultQueryOptions({queryKey:e}),r=J(this,Cn).get(a.queryHash)?.state.data,i=fne(t,r);if(i!==void 0)return J(this,Cn).build(this,a).setData(i,{...n,manual:!0})}setQueriesData(e,t,n){return Xn.batch(()=>J(this,Cn).findAll(e).map(({queryKey:a})=>[a,this.setQueryData(a,t,n)]))}getQueryState(e){const t=this.defaultQueryOptions({queryKey:e});return J(this,Cn).get(t.queryHash)?.state}removeQueries(e){const t=J(this,Cn);Xn.batch(()=>{t.findAll(e).forEach(n=>{t.remove(n)})})}resetQueries(e,t){const n=J(this,Cn);return Xn.batch(()=>(n.findAll(e).forEach(a=>{a.reset()}),this.refetchQueries({type:"active",...e},t)))}cancelQueries(e,t={}){const n={revert:!0,...t},a=Xn.batch(()=>J(this,Cn).findAll(e).map(s=>s.cancel(n)));return Promise.all(a).then(Za).catch(Za)}invalidateQueries(e,t={}){return Xn.batch(()=>(J(this,Cn).findAll(e).forEach(n=>{n.invalidate()}),e?.refetchType==="none"?Promise.resolve():this.refetchQueries({...e,type:e?.refetchType??e?.type??"active"},t)))}refetchQueries(e,t={}){const n={...t,cancelRefetch:t.cancelRefetch??!0},a=Xn.batch(()=>J(this,Cn).findAll(e).filter(s=>!s.isDisabled()&&!s.isStatic()).map(s=>{let r=s.fetch(void 0,n);return n.throwOnError||(r=r.catch(Za)),s.state.fetchStatus==="paused"?Promise.resolve():r}));return Promise.all(a).then(Za)}fetchQuery(e){const t=this.defaultQueryOptions(e);t.retry===void 0&&(t.retry=!1);const n=J(this,Cn).build(this,t);return n.isStaleByTime(vc(t.staleTime,n))?n.fetch(t):Promise.resolve(n.state.data)}prefetchQuery(e){return this.fetchQuery(e).then(Za).catch(Za)}fetchInfiniteQuery(e){return e._type="infinite",this.fetchQuery(e)}prefetchInfiniteQuery(e){return this.fetchInfiniteQuery(e).then(Za).catch(Za)}ensureInfiniteQueryData(e){return e._type="infinite",this.ensureQueryData(e)}resumePausedMutations(){return wx.isOnline()?J(this,uc).resumePausedMutations():Promise.resolve()}getQueryCache(){return J(this,Cn)}getMutationCache(){return J(this,uc)}getDefaultOptions(){return J(this,mc)}setDefaultOptions(e){Le(this,mc,e)}setQueryDefaults(e,t){J(this,ip).set(Kd(e),{queryKey:e,defaultOptions:t})}getQueryDefaults(e){const t=[...J(this,ip).values()],n={};return t.forEach(a=>{Vg(e,a.queryKey)&&Object.assign(n,a.defaultOptions)}),n}setMutationDefaults(e,t){J(this,lp).set(Kd(e),{mutationKey:e,defaultOptions:t})}
vendor: 4,308 bytes, line 50
50getMutationDefaults(e){const t=[...J(this,lp).values()],n={};return t.forEach(a=>{Vg(e,a.mutationKey)&&Object.assign(n,a.defaultOptions)}),n}defaultQueryOptions(e){if(e._defaulted)return e;const t={...J(this,mc).queries,...this.getQueryDefaults(e.queryKey),...e,_defaulted:!0};return t.queryHash||(t.queryHash=XP(t.queryKey,t)),t.refetchOnReconnect===void 0&&(t.refetchOnReconnect=t.networkMode!=="always"),t.throwOnError===void 0&&(t.throwOnError=!!t.suspense),!t.networkMode&&t.persister&&(t.networkMode="offlineFirst"),t.queryFn===ZP&&(t.enabled=!1),t}defaultMutationOptions(e){return e?._defaulted?e:{...J(this,mc).mutations,...e?.mutationKey&&this.getMutationDefaults(e.mutationKey),...e,_defaulted:!0}}clear(){J(this,Cn).clear(),J(this,uc).clear()}},Cn=new WeakMap,uc=new WeakMap,mc=new WeakMap,ip=new WeakMap,lp=new WeakMap,pc=new WeakMap,cp=new WeakMap,dp=new WeakMap,z8),aF=h.createContext(void 0),Re=e=>{const t=h.useContext(aF);if(!t)throw new Error("No QueryClient set, use QueryClientProvider to set one");return t},Ine=({client:e,children:t})=>(h.useEffect(()=>(e.mount(),()=>{e.unmount()}),[e]),o.jsx(aF.Provider,{value:e,children:t})),oF=h.createContext(!1),One=()=>h.useContext(oF);oF.Provider;function Lne(){let e=!1;return{clearReset:()=>{e=!1},reset:()=>{e=!0},isReset:()=>e}}var Une=h.createContext(Lne()),Bne=()=>h.useContext(Une),Fne=(e,t,n)=>{const a=n?.state.error&&typeof e.throwOnError=="function"?JP(e.throwOnError,[n.state.error,n]):e.throwOnError;(e.suspense||e.experimental_prefetchInRender||a)&&(t.isReset()||(e.retryOnMount=!1))},zne=e=>{h.useEffect(()=>{e.clearReset()},[e])},qne=({result:e,errorResetBoundary:t,throwOnError:n,query:a,suspense:s})=>e.isError&&!t.isReset()&&!e.isFetching&&a&&(s&&e.data===void 0||JP(n,[e.error,a])),Hne=e=>{if(e.suspense){const n=s=>s==="static"?s:Math.max(s??1e3,1e3),a=e.staleTime;e.staleTime=typeof a=="function"?(...s)=>n(a(...s)):n(a),typeof e.gcTime=="number"&&(e.gcTime=Math.max(e.gcTime,1e3))}},Vne=(e,t)=>e.isLoading&&e.isFetching&&!t,Kne=(e,t)=>e?.suspense&&t.isPending,UI=(e,t,n)=>t.fetchOptimistic(e).catch(()=>{n.clearReset()});function sF(e,t,n){const a=One(),s=Bne(),r=Re(),i=r.defaultQueryOptions(e);r.getDefaultOptions().queries?._experimental_beforeQuery?.(i);const c=r.getQueryCache().get(i.queryHash);i._optimisticResults=a?"isRestoring":"optimistic",Hne(i),Fne(i,s,c),zne(s);const d=!r.getQueryCache().get(i.queryHash),[m]=h.useState(()=>new t(r,i)),f=m.getOptimisticResult(i),p=!a&&e.subscribed!==!1;if(h.useSyncExternalStore(h.useCallback(y=>{const v=p?m.subscribe(Xn.batchCalls(y)):Za;return m.updateResult(),v},[m,p]),()=>m.getCurrentResult(),()=>m.getCurrentResult()),h.useEffect(()=>{m.setOptions(i)},[i,m]),Kne(i,f))throw UI(i,m,s);if(qne({result:f,errorResetBoundary:s,throwOnError:i.throwOnError,query:c,suspense:i.suspense}))throw f.error;return r.getDefaultOptions().queries?._experimental_afterQuery?.(i,f),i.experimental_prefetchInRender&&!Kg.isServer()&&Vne(f,a)&&(d?UI(i,m,s):c?.promise)?.catch(Za).finally(()=>{m.updateResult()}),i.notifyOnChangeProps?f:m.trackResult(f)}function Ue(e,t){return sF(e,eF)}function ke(e,t){const n=Re(),[a]=h.useState(()=>new Dne(n,e));h.useEffect(()=>{a.setOptions(e)},[a,e]);const s=h.useSyncExternalStore(h.useCallback(i=>a.subscribe(Xn.batchCalls(i)),[a]),()=>a.getCurrentResult(),()=>a.getCurrentResult()),r=h.useCallback((i,c)=>{a.mutate(i,c).catch(Za)},[a]);if(s.error&&JP(a.options.throwOnError,[s.error]))throw s.error;return{...s,mutate:r,mutateAsync:s.mutate}}function ll(e,t){return sF(e,_ne)}const Gne="modulepreload",Wne=function(e){return"/platform/"+e},BI={},rF=function(t,n,a){let s=Promise.resolve();if(n&&n.length>0){let i=function(m){return Promise.all(m.map(f=>Promise.resolve(f).then(p=>({status:"fulfilled",value:p}),p=>({status:"rejected",reason:p}))))};document.getElementsByTagName("link");const c=document.querySelector("meta[property=csp-nonce]"),d=c?.nonce||c?.getAttribute("nonce");s=i(n.map(m=>{if(m=Wne(m),m in BI)return;BI[m]=!0;const f=m.endsWith(".css"),p=f?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${m}"]${p}`))return;const y=document.createElement("link");if(y.rel=f?"stylesheet":Gne,f||(y.as="script"),y.crossOrigin="",y.href=m,d&&y.setAttribute("nonce",d),document.head.appendChild(y),f)return new Promise((v,$)=>
vendor: 10,944 bytes, lines 50-68
50{y.addEventListener("load",v),y.addEventListener("error",()=>$(new Error(`Unable to preload CSS for ${m}`)))})}))}function r(i){const c=new Event("vite:preloadError",{cancelable:!0});if(c.payload=i,window.dispatchEvent(c),!c.defaultPrevented)throw i}return s.then(i=>{for(const c of i||[])c.status==="rejected"&&r(c.reason);return t().catch(r)})};var li=q8();const iF=il(li);/**
51 * @remix-run/router v1.23.2
52 *
53 * Copyright (c) Remix Software Inc.
54 *
55 * This source code is licensed under the MIT license found in the
56 * LICENSE.md file in the root directory of this source tree.
57 *
58 * @license MIT
59 */function Gg(){return Gg=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},Gg.apply(this,arguments)}var fc;(function(e){e.Pop="POP",e.Push="PUSH",e.Replace="REPLACE"})(fc||(fc={}));const FI="popstate";function Yne(e){e===void 0&&(e={});function t(a,s){let{pathname:r,search:i,hash:c}=a.location;return MT("",{pathname:r,search:i,hash:c},s.state&&s.state.usr||null,s.state&&s.state.key||"default")}function n(a,s){return typeof s=="string"?s:kx(s)}return Xne(t,n,null,e)}function xn(e,t){if(e===!1||e===null||typeof e>"u")throw new Error(t)}function t_(e,t){if(!e){typeof console<"u"&&console.warn(t);try{throw new Error(t)}catch{}}}function Qne(){return Math.random().toString(36).substr(2,8)}function zI(e,t){return{usr:e.state,key:e.key,idx:t}}function MT(e,t,n,a){return n===void 0&&(n=null),Gg({pathname:typeof e=="string"?e:e.pathname,search:"",hash:""},typeof t=="string"?Dp(t):t,{state:n,key:t&&t.key||a||Qne()})}function kx(e){let{pathname:t="/",search:n="",hash:a=""}=e;return n&&n!=="?"&&(t+=n.charAt(0)==="?"?n:"?"+n),a&&a!=="#"&&(t+=a.charAt(0)==="#"?a:"#"+a),t}function Dp(e){let t={};if(e){let n=e.indexOf("#");n>=0&&(t.hash=e.substr(n),e=e.substr(0,n));let a=e.indexOf("?");a>=0&&(t.search=e.substr(a),e=e.substr(0,a)),e&&(t.pathname=e)}return t}function Xne(e,t,n,a){a===void 0&&(a={});let{window:s=document.defaultView,v5Compat:r=!1}=a,i=s.history,c=fc.Pop,d=null,m=f();m==null&&(m=0,i.replaceState(Gg({},i.state,{idx:m}),""));function f(){return(i.state||{idx:null}).idx}function p(){c=fc.Pop;let w=f(),S=w==null?null:w-m;m=w,d&&d({action:c,location:x.location,delta:S})}function y(w,S){c=fc.Push;let k=MT(x.location,w,S);m=f()+1;let T=zI(k,m),R=x.createHref(k);try{i.pushState(T,"",R)}catch(_){if(_ instanceof DOMException&&_.name==="DataCloneError")throw _;s.location.assign(R)}r&&d&&d({action:c,location:x.location,delta:1})}function v(w,S){c=fc.Replace;let k=MT(x.location,w,S);m=f();let T=zI(k,m),R=x.createHref(k);i.replaceState(T,"",R),r&&d&&d({action:c,location:x.location,delta:0})}function $(w){let S=s.location.origin!=="null"?s.location.origin:s.location.href,k=typeof w=="string"?w:kx(w);return k=k.replace(/ $/,"%20"),xn(S,"No window.location.(origin|href) available to create URL for href: "+k),new URL(k,S)}let x={get action(){return c},get location(){return e(s,i)},listen(w){if(d)throw new Error("A history only accepts one active listener");return s.addEventListener(FI,p),d=w,()=>{s.removeEventListener(FI,p),d=null}},createHref(w){return t(s,w)},createURL:$,encodeLocation(w){let S=$(w);return{pathname:S.pathname,search:S.search,hash:S.hash}},push:y,replace:v,go(w){return i.go(w)}};return x}var qI;(function(e){e.data="data",e.deferred="deferred",e.redirect="redirect",e.error="error"})(qI||(qI={}));function Zne(e,t,n){return n===void 0&&(n="/"),Jne(e,t,n)}function Jne(e,t,n,a){let s=typeof t=="string"?Dp(t):t,r=up(s.pathname||"/",n);if(r==null)return null;let i=lF(e);eae(i);let c=null;for(let d=0;c==null&&d<i.length;++d){let m=uae(r);c=cae(i[d],m)}return c}function lF(e,t,n,a){t===void 0&&(t=[]),n===void 0&&(n=[]),a===void 0&&(a="");let s=(r,i,c)=>{let d={relativePath:c===void 0?r.path||"":c,caseSensitive:r.caseSensitive===!0,childrenIndex:i,route:r};d.relativePath.startsWith("/")&&(xn(d.relativePath.startsWith(a),'Absolute route path "'+d.relativePath+'" nested under path '+('"'+a+'" is not valid. An absolute child route path ')+"must start with the combined path of all its parent routes."),d.relativePath=d.relativePath.slice(a.length));let m=bc([a,d.relativePath]),f=n.concat(d);r.children&&r.children.length>0&&(xn(r.index!==!0,"Index routes must not have child routes. Please remove "+('all child routes from route path "'+m+'".')),lF(r.children,t,f,m)),!(r.path==null&&!r.index)&&t.push({path:m,score:iae(m,r.index),routesMeta:f})};return e.forEach((r,i)=>{var c;if(r.path===""||!((c=r.path)!=null&&c.includes("?")))s(r,i);else for(let d of cF(r.path))s(r,i,d)}),t}function cF(e){let t=e.split("/");if(t.length===0)return[];let[n,...a]=t,s=n.endsWith("?"),r=n.replace(/\?$/,"");if(a.length===0)return s?[r,""]:[r];let i=cF(a.join("/")),c=[];return c.push(...i.map(d=>d===""?r:[r,d].join("/"))),s&&c.push(...i),c.map(d=>e.startsWith("/")&&d===""?"/":d)}function eae(e){e.sort((t,n)=>t.score!==n.score?n.score-t.score:lae(t.routesMeta.map(a=>a.childrenIndex),n.routesMeta.map(a=>a.childrenIndex)))}const tae=/^:[\w-]+$/,nae=3,aae=2,oae=1,sae=10,rae=-2,HI=e=>e==="*";function iae(e,t){let n=e.split("/"),a=n.length;return n.some(HI)&&(a+=rae),t&&(a+=aae),n.filter(s=>!HI(s)).reduce((s,r)=>s+(tae.test(r)?nae:r===""?oae:sae),a)}function lae(e,t){return e.length===t.length&&e.slice(0,-1).every((a,s)=>a===t[s])?e[e.length-1]-t[t.length-1]:0}function cae(e,t,n){let{routesMeta:a}=e,s={},r="/",i=[];for(let c=0;c<a.length;++c){let d=a[c],m=c===a.length-1,f=r==="/"?t:t.slice(r.length)||"/",p=ET({path:d.relativePath,caseSensitive:d.caseSensitive,end:m},f),y=d.route;if(!p)return null;Object.assign(s,p.params),i.push({params:s,pathname:bc([r,p.pathname]),pathnameBase:hae(bc([r,p.pathnameBase])),route:y}),p.pathnameBase!=="/"&&(r=bc([r,p.pathnameBase]))}return i}function ET(e,t){typeof e=="string"&&(e={path:e,caseSensitive:!1,end:!0});let[n,a]=dae(e.path,e.caseSensitive,e.end),s=t.match(n);if(!s)return null;let r=s[0],i=r.replace(/(.)\/+$/,"$1"),c=s.slice(1);return{params:a.reduce((m,f,p)=>{let{paramName:y,isOptional:v}=f;if(y==="*"){let x=c[p]||"";i=r.slice(0,r.length-x.length).replace(/(.)\/+$/,"$1")}const $=c[p];return v&&!$?m[y]=void 0:m[y]=($||"").replace(/%2F/g,"/"),m},{}),pathname:r,pathnameBase:i,pattern:e}}function dae(e,t,n){t===void 0&&(t=!1),n===void 0&&(n=!0),t_(e==="*"||!e.endsWith("*")||e.endsWith("/*"),'Route path "'+e+'" will be treated as if it were '+('"'+e.replace(/\*$/,"/*")+'" because the `*` character must ')+"always follow a `/` in the pattern. To get rid of this warning, "+('please change the route path to "'+e.replace(/\*$/,"/*")+'".'));let a=[],s="^"+e.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(i,c,d)=>(a.push({paramName:c,isOptional:d!=null}),d?"/?([^\\/]+)?":"/([^\\/]+)"));return e.endsWith("*")?(a.push({paramName:"*"}),s+=e==="*"||e==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):n?s+="\\/*$":e!==""&&e!=="/"&&(s+="(?:(?=\\/|$))"),[new RegExp(s,t?void 0:"i"),a]}function uae(e){try{return e.split("/").map(t=>decodeURIComponent(t).replace(/\//g,"%2F")).join("/")}catch(t){return t_(!1,'The URL path "'+e+'" could not be decoded because it is is a malformed URL segment. This is probably due to a bad percent '+("encoding ("+t+").")),e}}function up(e,t){if(t==="/")return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let n=t.endsWith("/")?t.length-1:t.length,a=e.charAt(n);return a&&a!=="/"?null:e.slice(n)||"/"}const mae=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,pae=e=>mae.test(e);function fae(e,t){t===void 0&&(t="/");let{pathname:n,search:a="",hash:s=""}=typeof e=="string"?Dp(e):e,r;if(n)if(pae(n))r=n;else{if(n.includes("//")){let i=n;n=n.replace(/\/\/+/g,"/"),t_(!1,"Pathnames cannot have embedded double slashes - normalizing "+(i+" -> "+n))}n.startsWith("/")?r=VI(n.substring(1),"/"):r=VI(n,t)}else r=t;return{pathname:r,search:yae(a),hash:vae(s)}}function VI(e,t){let n=t.replace(/\/+$/,"").split("/");return e.split("/").forEach(s=>{s===".."?n.length>1&&n.pop():s!=="."&&n.push(s)}),n.length>1?n.join("/"):"/"}function y1(e,t,n,a){return"Cannot include a '"+e+"' character in a manually specified "+("`to."+t+"` field ["+JSON.stringify(a)+"].  Please separate it out to the ")+("`to."+n+"` field. Alternatively you may provide the full path as ")+'a string in <Link to="..."> and the router will parse it for you.'}function gae(e){return e.filter((t,n)=>n===0||t.route.path&&t.route.path.length>0)}function n_(e,t){let n=gae(e);return t?n.map((a,s)=>s===n.length-1?a.pathname:a.pathnameBase):n.map(a=>a.pathnameBase)}function a_(e,t,n,a){a===void 0&&(a=!1);let s;typeof e=="string"?s=Dp(e):(s=Gg({},e),xn(!s.pathname||!s.pathname.includes("?"),y1("?","pathname","search",s)),xn(!s.pathname||!s.pathname.includes("#"),y1("#","pathname","hash",s)),xn(!s.search||!s.search.includes("#"),y1("#","search","hash",s)));let r=e===""||s.pathname==="",i=r?"/":s.pathname,c;if(i==null)c=n;else{let p=t.length-1;if(!a&&i.startsWith("..")){let y=i.split("/");for(;y[0]==="..";)y.shift(),p-=1;s.pathname=y.join("/")}c=p>=0?t[p]:"/"}let d=fae(s,c),m=i&&i!=="/"&&i.endsWith("/"),f=(r||i===".")&&n.endsWith("/");return!d.pathname.endsWith("/")&&(m||f)&&(d.pathname+="/"),d}const bc=e=>e.join("/").replace(/\/\/+/g,"/"),hae=e=>e.replace(/\/+$/,"").replace(/^\/*/,"/"),yae=e=>!e||e==="?"?"":e.startsWith("?")?e:"?"+e,vae=e=>!e||e==="#"?"":e.startsWith("#")?e:"#"+e;function bae(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.internal=="boolean"&&"data"in e}const dF=["post","put","patch","delete"];new Set(dF);const xae=["get",...dF];new Set(xae);/**
60 * React Router v6.30.3
61 *
62 * Copyright (c) Remix Software Inc.
63 *
64 * This source code is licensed under the MIT license found in the
65 * LICENSE.md file in the root directory of this source tree.
66 *
67 * @license MIT
68 */function Wg(){return Wg=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},Wg.apply(this,arguments)}const W$=h.createContext(null),uF=h.createContext(null),cl=h.createContext(null),Y$=h.createContext(null),ci=h.createContext({outlet:null,matches:[],isDataRoute:!1}),mF=h.createContext(null);function $ae(e,t){let{relative:n}=t===void 0?{}:t;Mp()||xn(!1);let{basename:a,navigator:s}=h.useContext(cl),{hash:r,pathname:i,search:c}=Q$(e,{relative:n}),d=i;return a!=="/"&&(d=i==="/"?a:bc([a,i])),s.createHref({pathname:d,search:c,hash:r})}function Mp(){return h.useContext(Y$)!=null}function ls(){return Mp()||xn(!1),h.useContext(Y$).location}function pF(e){h.useContext(cl).static||h.useLayoutEffect(e)}function No(){let{isDataRoute:e}=h.useContext(ci);return e?Iae():wae()}function wae(){Mp()||xn(!1);let e=h.useContext(W$),{basename:t,future:n,navigator:a}=h.useContext(cl),{matches:s}=h.useContext(ci),{pathname:r}
vendor: 4,421 bytes, line 68
68=ls(),i=JSON.stringify(n_(s,n.v7_relativeSplatPath)),c=h.useRef(!1);return pF(()=>{c.current=!0}),h.useCallback(function(m,f){if(f===void 0&&(f={}),!c.current)return;if(typeof m=="number"){a.go(m);return}let p=a_(m,JSON.parse(i),r,f.relative==="path");e==null&&t!=="/"&&(p.pathname=p.pathname==="/"?t:bc([t,p.pathname])),(f.replace?a.replace:a.push)(p,f.state,f)},[t,a,i,r,e])}const kae=h.createContext(null);function Cae(e){let t=h.useContext(ci).outlet;return t&&h.createElement(kae.Provider,{value:e},t)}function o_(){let{matches:e}=h.useContext(ci),t=e[e.length-1];return t?t.params:{}}function Q$(e,t){let{relative:n}=t===void 0?{}:t,{future:a}=h.useContext(cl),{matches:s}=h.useContext(ci),{pathname:r}=ls(),i=JSON.stringify(n_(s,a.v7_relativeSplatPath));return h.useMemo(()=>a_(e,JSON.parse(i),r,n==="path"),[e,i,r,n])}function Sae(e,t){return Aae(e,t)}function Aae(e,t,n,a){Mp()||xn(!1);let{navigator:s}=h.useContext(cl),{matches:r}=h.useContext(ci),i=r[r.length-1],c=i?i.params:{};i&&i.pathname;let d=i?i.pathnameBase:"/";i&&i.route;let m=ls(),f;if(t){var p;let w=typeof t=="string"?Dp(t):t;d==="/"||(p=w.pathname)!=null&&p.startsWith(d)||xn(!1),f=w}else f=m;let y=f.pathname||"/",v=y;if(d!=="/"){let w=d.replace(/^\//,"").split("/");v="/"+y.replace(/^\//,"").split("/").slice(w.length).join("/")}let $=Zne(e,{pathname:v}),x=jae($&&$.map(w=>Object.assign({},w,{params:Object.assign({},c,w.params),pathname:bc([d,s.encodeLocation?s.encodeLocation(w.pathname).pathname:w.pathname]),pathnameBase:w.pathnameBase==="/"?d:bc([d,s.encodeLocation?s.encodeLocation(w.pathnameBase).pathname:w.pathnameBase])})),r,n,a);return t&&x?h.createElement(Y$.Provider,{value:{location:Wg({pathname:"/",search:"",hash:"",state:null,key:"default"},f),navigationType:fc.Pop}},x):x}function Tae(){let e=Eae(),t=bae(e)?e.status+" "+e.statusText:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,s={padding:"0.5rem",backgroundColor:"rgba(200,200,200, 0.5)"};return h.createElement(h.Fragment,null,h.createElement("h2",null,"Unexpected Application Error!"),h.createElement("h3",{style:{fontStyle:"italic"}},t),n?h.createElement("pre",{style:s},n):null,null)}const Rae=h.createElement(Tae,null);class Pae extends h.Component{constructor(t){super(t),this.state={location:t.location,revalidation:t.revalidation,error:t.error}}static getDerivedStateFromError(t){return{error:t}}static getDerivedStateFromProps(t,n){return n.location!==t.location||n.revalidation!=="idle"&&t.revalidation==="idle"?{error:t.error,location:t.location,revalidation:t.revalidation}:{error:t.error!==void 0?t.error:n.error,location:n.location,revalidation:t.revalidation||n.revalidation}}componentDidCatch(t,n){console.error("React Router caught the following error during render",t,n)}render(){return this.state.error!==void 0?h.createElement(ci.Provider,{value:this.props.routeContext},h.createElement(mF.Provider,{value:this.state.error,children:this.props.component})):this.props.children}}function _ae(e){let{routeContext:t,match:n,children:a}=e,s=h.useContext(W$);return s&&s.static&&s.staticContext&&(n.route.errorElement||n.route.ErrorBoundary)&&(s.staticContext._deepestRenderedBoundaryId=n.route.id),h.createElement(ci.Provider,{value:t},a)}function jae(e,t,n,a){var s;if(t===void 0&&(t=[]),n===void 0&&(n=null),a===void 0&&(a=null),e==null){var r;if(!n)return null;if(n.errors)e=n.matches;else if((r=a)!=null&&r.v7_partialHydration&&t.length===0&&!n.initialized&&n.matches.length>0)e=n.matches;else return null}let i=e,c=(s=n)==null?void 0:s.errors;if(c!=null){let f=i.findIndex(p=>p.route.id&&c?.[p.route.id]!==void 0);f>=0||xn(!1),i=i.slice(0,Math.min(i.length,f+1))}let d=!1,m=-1;if(n&&a&&a.v7_partialHydration)for(let f=0;f<i.length;f++){let p=i[f];if((p.route.HydrateFallback||p.route.hydrateFallbackElement)&&(m=f),p.route.id){let{loaderData:y,errors:v}=n,$=p.route.loader&&y[p.route.id]===void 0&&(!v||v[p.route.id]===void 0);if(p.route.lazy||$){d=!0,m>=0?i=i.slice(0,m+1):i=[i[0]];break}}}return i.reduceRight((f,p,y)=>{let v,$=!1,x=null,w=null;n&&(v=c&&p.route.id?c[p.route.id]:void 0,x=p.route.errorElement||Rae,d&&(m<0&&y===0?(Oae("route-fallback"),$=!0,w=null):m===y&&($=!0,w=p.route.hydrateFallbackElement||null)));let S=t.concat(i.slice(0,y+1)),k=()=>{let T;return v?T=x:$?T=w:p.route.Component?T=h.createElement(p.route.Component,null):p.route.element?T=p.route.element:T=f,h.createElement(_ae,{match:p,routeC
68ontext:{outlet:f,matches:S,isDataRoute:n!=null},children:T})};return n&&(p.route.ErrorBoundary||p.route.errorElement||y===0)?h.createElement(Pae,{location:n.location,revalidation:n.revalidation,component:x,error:v,children:k(),routeContext:{outlet:null,matches:S,isDataRoute:!0}}):k()},null)}var fF=(function(e){return e.UseBlocker="useBlocker",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e})(fF||{}),gF=(function(e){return e.UseBlocker="useBlocker",e.UseLoaderData="useLoaderData",e.UseActionData="useActionData",e.UseRouteError="useRouteError",e.UseNavigation="useNavigation",e.UseRouteLoaderData="useRouteLoaderData",e.UseMatches="useMatches",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e.UseRouteId="useRouteId",e})(gF||{});function Nae(e){let t=h.useContext(W$);return t||xn(!1),t}function Dae(e){let t=h.useContext(uF);return t||xn(!1),t}function Mae(e){let t=h.useContext(ci);return t||xn(!1),t}function hF(e){let t=Mae(),n=t.matches[t.matches.length-1];return n.route.id||xn(!1),n.route.id}function Eae(){var e;let t=h.useContext(mF),n=Dae(),a=hF();return t!==void 0?t:(e=n.errors)==null?void 0:e[a]}function Iae(){let{router:e}=Nae(fF.UseNavigateStable),t=hF(gF.UseNavigateStable),n=h.useRef(!1);return pF(()=>{n.current=!0}),h.useCallback(function(s,r){r===void 0&&(r={}),n.current&&(typeof s=="number"?e.navigate(s):e.navigate(s,Wg({fromRouteId:t},r)))},[e,t])}const KI={};function Oae(e,t,n){KI[e]||(KI[e]=!0)}function Lae(e,t){e?.v7_startTransition,e?.v7_relativeSplatPath}function Gd(e){let{to:t,replace:n,state:a,relative:s}=e;Mp()||xn(!1);let{future:r,static:i}=h.useContext(cl),{matches:c}=h.useContext(ci),{pathname:d}=ls(),m=No(),f=a_(t,n_(c,r.v7_relativeSplatPath),d,s==="path"),p=JSON.stringify(f);return h.useEffect(()=>m(JSON.parse(p),{replace:n,state:a,relative:s}),[m,p,s,n,a]),null}function yF(e){return Cae(e.context)}function dt(e){xn(!1)}function Uae(e){let{basename:t="/",children:n=null,location:a,navigationType:s=fc.Pop,navigator:r,static:i=!1,future:c}=e;Mp()&&xn(!1);let d=t.replace(/^\/*/,"/"),m=h.useMemo(()=>({basename:d,navigator:r,static:i,future:Wg({v7_relativeSplatPath:!1},c)}),[d,c,r,i]);typeof a=="string"&&(a=Dp(a));let{pathname:f="/",search:p="",hash:y="",state:v=null,key:$="default"}=a,x=h.useMemo(()=>{let w=up(f,d);return w==null?null:{location:{pathname:w,search:p,hash:y,state:v,key:$},navigationType:s}},[d,f,p,y,v,$,s]);return x==null?null:h.createElement(cl.Provider,{value:m},h.createElement(Y$.Provider,{children:n,value:x}))}function IT(e){let{children:t,location:n}=e;return Sae(OT(t),n)}new Promise(()=>{});function OT(e,t){t===void 0&&(t=[]);let n=[];return h.Children.forEach(e,(a,s)=>{if(!h.isValidElement(a))return;let r=[...t,s];if(a.type===h.Fragment){n.push.apply(n,OT(a.props.children,r));return}a.type!==dt&&xn(!1),!a.props.index||!a.props.children||xn(!1);let i={id:a.props.id||r.join("-"),caseSensitive:a.props.caseSensitive,element:a.props.element,Component:a.props.Component,index:a.props.index,path:a.props.path,loader:a.props.loader,action:a.props.action,errorElement:a.props.errorElement,ErrorBoundary:a.props.ErrorBoundary,hasErrorBoundary:a.props.ErrorBoundary!=null||a.props.errorElement!=null,shouldRevalidate:a.props.shouldRevalidate,handle:a.props.handle,lazy:a.props.lazy};a.props.children&&(i.children=OT(a.props.children,r)),n.push(i)}),n}/**
69 * React Router DOM v6.30.3
70 *
71 * Copyright (c) Remix Software Inc.
72 *
73 * This source code is licensed under the MIT license found in the
74 * LICENSE.md file in the root directory of this source tree.
75 *
76 * @license MIT
77 */function Cx(){return Cx=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},Cx.apply(this,arguments)}function vF(e,t){if(e==null)return{};var n={},a=Object.keys(e),s,r;for(r=0;r<a.length;r++)s=a[r],!(t.indexOf(s)>=0)&&(n[s]=e[s]);return n}function Bae(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function Fae(e,t){return e.button===0&&(!t||t==="_self")&&!Bae(e)}function LT(e){return e===void 0&&(e=""),new URLSearchParams(typeof e=="string"||Array.isArray(e)||e instanceof URLSearchParams?e:Object.keys(e).reduce((t,n)=>{let a=e[n];return t.concat(Array.isArray(a)?a.map(s=>[n,s]):[[n,a]])},[]))}function zae(e,t){let n=LT(e);return t&&t.forEach((a,s)=>
77{n.has(s)||t.getAll(s).forEach(r=>{n.append(s,r)})}),n}const qae=["onClick","relative","reloadDocument","replace","state","target","to","preventScrollReset","viewTransition"],Hae=["aria-current","caseSensitive","className","end","style","to","viewTransition","children"],Vae="6";try{window.__reactRouterVersion=Vae}catch{}const Kae=h.createContext({isTransitioning:!1}),Gae="startTransition",GI=Lh[Gae];function Wae(e){let{basename:t,children:n,future:a,window:s}=e,r=h.useRef();r.current==null&&(r.current=Yne({window:s,v5Compat:!0}));let i=r.current,[c,d]=h.useState({action:i.action,location:i.location}),{v7_startTransition:m}=a||{},f=h.useCallback(p=>{m&&GI?GI(()=>d(p)):d(p)},[d,m]);return h.useLayoutEffect(()=>i.listen(f),[i,f]),h.useEffect(()=>Lae(a),[a]),h.createElement(Uae,{basename:t,children:n,location:c.location,navigationType:c.action,navigator:i,future:a})}const Yae=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",Qae=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,Ta=h.forwardRef(function(t,n){let{onClick:a,relative:s,reloadDocument:r,replace:i,state:c,target:d,to:m,preventScrollReset:f,viewTransition:p}=t,y=vF(t,qae),{basename:v}=h.useContext(cl),$,x=!1;if(typeof m=="string"&&Qae.test(m)&&($=m,Yae))try{let T=new URL(window.location.href),R=m.startsWith("//")?new URL(T.protocol+m):new URL(m),_=up(R.pathname,v);R.origin===T.origin&&_!=null?m=_+R.search+R.hash:x=!0}catch{}let w=$ae(m,{relative:s}),S=Zae(m,{replace:i,state:c,target:d,preventScrollReset:f,relative:s,viewTransition:p});function k(T){a&&a(T),T.defaultPrevented||S(T)}return h.createElement("a",Cx({},y,{href:$||w,onClick:x||r?a:k,ref:n,target:d}))}),Yg=h.forwardRef(function(t,n){let{"aria-current":a="page",caseSensitive:s=!1,className:r="",end:i=!1,style:c,to:d,viewTransition:m,children:f}=t,p=vF(t,Hae),y=Q$(d,{relative:p.relative}),v=ls(),$=h.useContext(uF),{navigator:x,basename:w}=h.useContext(cl),S=$!=null&&Jae(y)&&m===!0,k=x.encodeLocation?x.encodeLocation(y).pathname:y.pathname,T=v.pathname,R=$&&$.navigation&&$.navigation.location?$.navigation.location.pathname:null;s||(T=T.toLowerCase(),R=R?R.toLowerCase():null,k=k.toLowerCase()),R&&w&&(R=up(R,w)||R);const _=k!=="/"&&k.endsWith("/")?k.length-1:k.length;let P=T===k||!i&&T.startsWith(k)&&T.charAt(_)==="/",j=R!=null&&(R===k||!i&&R.startsWith(k)&&R.charAt(k.length)==="/"),N={isActive:P,isPending:j,isTransitioning:S},I=P?a:void 0,z;typeof r=="function"?z=r(N):z=[r,P?"active":null,j?"pending":null,S?"transitioning":null].filter(Boolean).join(" ");let E=typeof c=="function"?c(N):c;return h.createElement(Ta,Cx({},p,{"aria-current":I,className:z,ref:n,style:E,to:d,viewTransition:m}),typeof f=="function"?f(N):f)});var UT;(function(e){e.UseScrollRestoration="useScrollRestoration",e.UseSubmit="useSubmit",e.UseSubmitFetcher="useSubmitFetcher",e.UseFetcher="useFetcher",e.useViewTransitionState="useViewTransitionState"})(UT||(UT={}));var WI;(function(e){e.UseFetcher="useFetcher",e.UseFetchers="useFetchers",e.UseScrollRestoration="useScrollRestoration"})(WI||(WI={}));function Xae(e){let t=h.useContext(W$);return t||xn(!1),t}function Zae(e,t){let{target:n,replace:a,state:s,preventScrollReset:r,relative:i,viewTransition:c}=t===void 0?{}:t,d=No(),m=ls(),f=Q$(e,{relative:i});return h.useCallback(p=>{if(Fae(p,n)){p.preventDefault();let y=a!==void 0?a:kx(m)===kx(f);d(e,{replace:y,state:s,preventScrollReset:r,relative:i,viewTransition:c})}},[m,d,f,a,s,n,e,r,i,c])}function s_(e){let t=h.useRef(LT(e)),n=h.useRef(!1),a=ls(),s=h.useMemo(()=>zae(a.search,n.current?null:t.current),[a.search]),r=No(),i=h.useCallback((c,d)=>{const m=LT(typeof c=="function"?c(s):c);n.current=!0,r("?"+m,d)},[r,s]);return[s,i]}function Jae(e,t){t===void 0&&(t={});let n=h.useContext(Kae);n==null&&xn(!1);let{basename:a}=Xae(UT.useViewTransitionState),s=Q$(e,{relative:t.relative});if(!n.isTransitioning)return!1;let r=up(n.currentLocation.pathname,a)||n.currentLocation.pathname,i=up(n.nextLocation.pathname,a)||n.nextLocation.pathname;return ET(s.pathname,i)!=null||ET(s.pathname,r)!=null}const X$=["openai_chat","openai_responses","anthropic_messages","google_vertex_ai","openai_images","openai_sora"],eoe=["openai","anthropic","gemini"],Wd={openai_chat:{id:"openai_chat",label:"OpenAI Chat Completions",shortLabel:"OpenAI Chat",iconAuthor:"openai",baseUrlSegment:"v1",supportsStream:!0,sdks:["openai-python","openai-curl","openai-typescript"],feasibleOnPlatform:{openai:!0,anthropic:!1,gemini:!0},sub2apiSwitch:null},openai_responses:{id:"openai_responses",label:"OpenAI Responses",shortLabel:"Responses",iconAuthor:"openai",baseUrlSegment:"v1",supportsStream:!0,sdks:["openai-python","openai-curl"],feasibleOnPlatform:{openai:!0,anthropic:!1,gemini:!1},sub2apiSwitch:null},anthropic_messages:{id:"anthropic_messages",label:"Anthropic Messages",shortLabel:"Anthropic",iconAuthor:"anthropic",baseUrlSegment:"anthropic",supportsStream:!0,sdks:["anthropic-
77python","anthropic-curl"],feasibleOnPlatform:{openai:!0,anthropic:!0,gemini:!1},sub2apiSwitch:"allow_messages_dispatch"},google_vertex_ai:{id:"google_vertex_ai",label:"Google Vertex AI",shortLabel:"Vertex",iconAuthor:"google",baseUrlSegment:"vertex-ai",supportsStream:!0,sdks:["gemini-python"],feasibleOnPlatform:{openai:!1,anthropic:!1,gemini:!0},sub2apiSwitch:null},openai_images:{id:"openai_images",label:"OpenAI Images",shortLabel:"Images",iconAuthor:"openai",baseUrlSegment:"v1",supportsStream:!1,sdks:["openai-python","openai-curl"],feasibleOnPlatform:{openai:!0,anthropic:!1,gemini:!0},sub2apiSwitch:"allow_image_generation"},openai_sora:{id:"openai_sora",label:"OpenAI Sora",shortLabel:"Video",iconAuthor:"openai",baseUrlSegment:"v1",supportsStream:!1,sdks:["openai-curl"],feasibleOnPlatform:{openai:!0,anthropic:!1,gemini:!1},sub2apiSwitch:"allow_video_generation"}};function toe(e){return eoe.includes(e)?X$.filter(t=>Wd[t].feasibleOnPlatform[e]):[]}const Z$=["en","zh-Hans","zh-Hant","ja","ko","es","pt-BR","ru","de","fr","tr","ar"],r_=["en","zh-Hans","zh-Hant","ja","ko","es","pt-BR","ru","de","fr","tr","ar"],Xi="en",noe="zh-Hans",aoe=["ar"],Uh={en:"English","zh-Hans":"简体中文","zh-Hant":"繁體中文",ja:"日本語",ko:"한국어",es:"Español","pt-BR":"Português (Brasil)",ru:"Русский",de:"Deutsch",fr:"Français",tr:"Türkçe",ar:"العربية"},ooe=["en","es","pt-BR","ru","de","fr","tr","ar","ja","ko","zh-Hans","zh-Hant"];function i_(e){const t=new Set(e);return ooe.filter(n=>t.has(n))}function Yd(e){return Z$.includes(e)}function soe(e){return aoe.includes(e)?"rtl":"ltr"}function roe(e){for(const t of e){if(!t)continue;if(Yd(t))return t;if(t.startsWith("zh"))return t==="zh-TW"||t==="zh-HK"||t==="zh-MO"?"zh-Hant":"zh-Hans";if(t.startsWith("pt"))return"pt-BR";const n=t.split("-")[0];if(Yd(n))return n}return Xi}const BT="onehop.ai",ioe="api.onehop.ai",Mg={x:"https://x.com/OneHopAI",telegram:"https://t.me/+VlrbBvC2Clg2OGFh",discord:"https://discord.gg/c6m79xP4ed"},mp="/platform",l_="/docs";function loe(e){return e.startsWith("/")?e:`/${e}`}function coe(e){return e.length>1?e.replace(/\/+$/,""):e}const doe=[mp,l_];function uoe(e,t="/"){const n=coe(loe(t));return doe.some(a=>n===a||n.startsWith(`${a}/`))||e===Xi?n:n==="/"?`/${e}`:`/${e}${n}`}const moe=[{label:"Models",href:"/models"},{label:"Pricing",href:"/pricing"},{label:"Docs",href:l_}],bF=6.8,Be={login:"/login",chat:"/chat",logs:"/logs",apiKeys:"/keys",usage:"/usage",billing:"/billing",referrals:"/referrals",tasks:"/tasks",models:"/models",support:"/support",supportTicket:"/support/:publicId",settings:"/settings",admin:"/admin",adminDashboard:"/admin/dashboard",adminSupport:"/admin/support",adminSupportTicket:"/admin/support/:publicId",adminUsers:"/admin/users",adminUserDetail:"/admin/users/:publicId",adminBilling:"/admin/billing/wallets",adminUsage:"/admin/usage",adminRateLimits:"/admin/rate-limits",adminAccess:"/admin/access",adminDomainRules:"/admin/domain-rules",adminStaff:"/admin/staff",adminGrowth:"/admin/growth",adminCampaigns:"/admin/campaigns",adminModels:"/admin/models",adminAnnouncements:"/admin/announcements",adminUpstream:"/admin/upstream",adminAuditLogs:"/admin/audit-logs",adminWebhooks:"/admin/webhooks",adminContent:"/admin/content"};function Bh(e){return`/admin/users/${e}`}function FT(e){return`/support/${e}`}function YI(e){return`/admin/support/${e}`}const xF=["billing","technical","account","other"],$F=["open","pending","resolved","closed"],wF=["hot","benefit"],zT=["featured","newest","top_weekly","price_asc","price_desc","context"],poe="featured",QI=8,foe=2e3,goe=500,hoe=.5,kF="openai/gpt-4o-mini",VBs={textToVideo:"text_to_video",imageToVideo:"image_to_video",firstLastFrame:"first_last_frame",referenceImage:"reference_image"},ko={noContent:204,unauthorized:401,forbidden:403,notFound:404,conflict:409},XI={noResponse:0},$g={requestTimeout:"REQUEST_TIMEOUT",requestAborted:"REQUEST_ABORTED",csrfTokenMissing:"CSRF_TOKEN_MISSING",unauthenticated:"UNAUTHENTICATED",userSuspended:"USER_SUSPENDED",userInitializing:"USER_INITIALIZING"},yoe={owner:"*",admin:"*",support:["ops.users.read","ops.billing.read","ops.usage.read","ops.rate_limit.read","ops.sub2api.read","ops.audit.read","ops.models.read","ops.webhooks.read","ops.campaigns.read"]};function Go(e,t){if(!e)return!1;const n=e.permissions?.[t];if(n===!0)return!0;
vendor: 4,901 bytes, line 77
77if(n===!1)return!1;if(e.permissions?.all===!0)return!0;if(e.permissions?.all===!1)return!1;const a=yoe[e.role]??[];return a==="*"||a.includes(t)}function CF(e){var t,n,a="";if(typeof e=="string"||typeof e=="number")a+=e;else if(typeof e=="object")if(Array.isArray(e)){var s=e.length;for(t=0;t<s;t++)e[t]&&(n=CF(e[t]))&&(a&&(a+=" "),a+=n)}else for(n in e)e[n]&&(a&&(a+=" "),a+=n);return a}function Lt(){for(var e,t,n=0,a="",s=arguments.length;n<s;n++)(e=arguments[n])&&(t=CF(e))&&(a&&(a+=" "),a+=t);return a}const voe=(e,t)=>{const n=new Array(e.length+t.length);for(let a=0;a<e.length;a++)n[a]=e[a];for(let a=0;a<t.length;a++)n[e.length+a]=t[a];return n},boe=(e,t)=>({classGroupId:e,validator:t}),SF=(e=new Map,t=null,n)=>({nextPart:e,validators:t,classGroupId:n}),Sx="-",ZI=[],xoe="arbitrary..",$oe=e=>{const t=koe(e),{conflictingClassGroups:n,conflictingClassGroupModifiers:a}=e;return{getClassGroupId:i=>{if(i.startsWith("[")&&i.endsWith("]"))return woe(i);const c=i.split(Sx),d=c[0]===""&&c.length>1?1:0;return AF(c,d,t)},getConflictingClassGroupIds:(i,c)=>{if(c){const d=a[i],m=n[i];return d?m?voe(m,d):d:m||ZI}return n[i]||ZI}}},AF=(e,t,n)=>{if(e.length-t===0)return n.classGroupId;const s=e[t],r=n.nextPart.get(s);if(r){const m=AF(e,t+1,r);if(m)return m}const i=n.validators;if(i===null)return;const c=t===0?e.join(Sx):e.slice(t).join(Sx),d=i.length;for(let m=0;m<d;m++){const f=i[m];if(f.validator(c))return f.classGroupId}},woe=e=>e.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const t=e.slice(1,-1),n=t.indexOf(":"),a=t.slice(0,n);return a?xoe+a:void 0})(),koe=e=>{const{theme:t,classGroups:n}=e;return Coe(n,t)},Coe=(e,t)=>{const n=SF();for(const a in e){const s=e[a];c_(s,n,a,t)}return n},c_=(e,t,n,a)=>{const s=e.length;for(let r=0;r<s;r++){const i=e[r];Soe(i,t,n,a)}},Soe=(e,t,n,a)=>{if(typeof e=="string"){Aoe(e,t,n);return}if(typeof e=="function"){Toe(e,t,n,a);return}Roe(e,t,n,a)},Aoe=(e,t,n)=>{const a=e===""?t:TF(t,e);a.classGroupId=n},Toe=(e,t,n,a)=>{if(Poe(e)){c_(e(a),t,n,a);return}t.validators===null&&(t.validators=[]),t.validators.push(boe(n,e))},Roe=(e,t,n,a)=>{const s=Object.entries(e),r=s.length;for(let i=0;i<r;i++){const[c,d]=s[i];c_(d,TF(t,c),n,a)}},TF=(e,t)=>{let n=e;const a=t.split(Sx),s=a.length;for(let r=0;r<s;r++){const i=a[r];let c=n.nextPart.get(i);c||(c=SF(),n.nextPart.set(i,c)),n=c}return n},Poe=e=>"isThemeGetter"in e&&e.isThemeGetter===!0,_oe=e=>{if(e<1)return{get:()=>{},set:()=>{}};let t=0,n=Object.create(null),a=Object.create(null);const s=(r,i)=>{n[r]=i,t++,t>e&&(t=0,a=n,n=Object.create(null))};return{get(r){let i=n[r];if(i!==void 0)return i;if((i=a[r])!==void 0)return s(r,i),i},set(r,i){r in n?n[r]=i:s(r,i)}}},qT="!",JI=":",joe=[],eO=(e,t,n,a,s)=>({modifiers:e,hasImportantModifier:t,baseClassName:n,maybePostfixModifierPosition:a,isExternal:s}),Noe=e=>{const{prefix:t,experimentalParseClassName:n}=e;let a=s=>{const r=[];let i=0,c=0,d=0,m;const f=s.length;for(let x=0;x<f;x++){const w=s[x];if(i===0&&c===0){if(w===JI){r.push(s.slice(d,x)),d=x+1;continue}if(w==="/"){m=x;continue}}w==="["?i++:w==="]"?i--:w==="("?c++:w===")"&&c--}const p=r.length===0?s:s.slice(d);let y=p,v=!1;p.endsWith(qT)?(y=p.slice(0,-1),v=!0):p.startsWith(qT)&&(y=p.slice(1),v=!0);const $=m&&m>d?m-d:void 0;return eO(r,v,y,$)};if(t){const s=t+JI,r=a;a=i=>i.startsWith(s)?r(i.slice(s.length)):eO(joe,!1,i,void 0,!0)}if(n){const s=a;a=r=>n({className:r,parseClassName:s})}return a},Doe=e=>{const t=new Map;return e.orderSensitiveModifiers.forEach((n,a)=>{t.set(n,1e6+a)}),n=>{const a=[];let s=[];for(let r=0;r<n.length;r++){const i=n[r],c=i[0]==="[",d=t.has(i);c||d?(s.length>0&&(s.sort(),a.push(...s),s=[]),a.push(i)):s.push(i)}return s.length>0&&(s.sort(),a.push(...s)),a}},Moe=e=>({cache:_oe(e.cacheSize),parseClassName:Noe(e),sortModifiers:Doe(e),postfixLookupClassGroupIds:Eoe(e),...$oe(e)}),Eoe=e=>{const t=Object.create(null),n=e.postfixLookupClassGroups;if(n)for(let a=0;a<n.length;a++)t[n[a]]=!0;return t},Ioe=/\s+/,Ooe=(e,t)=>{const{parseClassName:n,getClassGroupId:a,getConflictingClassGroupIds:s,sortModifiers:r,postfixLookupClassGroupIds:i}=t,c=[],d=e.trim().split(Ioe);let m="";for(let f=d.length-1;f>=0;f-=1){const p=d[f],{isExternal:y,modifiers:v,hasImportantModifier:$,baseClassName:x,maybePostfixModifierPosition:w}=n(p);if(y){m=p+(m.length>0?" "+m:m);continue}let S=!!w,k;if(S){const j=x.substring(0,w);k=a(j);const N=k&&i[k]?a(x):void 0;N&&N!==k&&(k=N,S=!1)}else k=a(x);if(!k){if(!S){m=p+(m.length>0?" "+m:m);continue}if(k=a(x),!k){m=p+(m.length>0?" "+m:m);continue}S=!1}const T=v.length===0?"":v.length===1?v[0]:r(v).join(":"),R=$?T+qT:T,_=R+k;if(c.indexOf(_)>-1)continue;c.push(_);const P=s(k,S);for(let j=0;j<P.length;++j){const N=P[j];c.push(R+N)}m=p+(m.length>0?" "+m:m)}return m},Loe=(...e)=>{let t=0,n,a,s="";for(;t<e.length;)(n=e[t++])&&(a=RF(n))&&(s&&(s+=" "),s+=a);return s},RF=e=>{if(typeof e=="string")return e;let t,n="";for(let a=0;a<e.length;
vendor: 4,551 bytes, line 77
77a++)e[a]&&(t=RF(e[a]))&&(n&&(n+=" "),n+=t);return n},Uoe=(e,...t)=>{let n,a,s,r;const i=d=>{const m=t.reduce((f,p)=>p(f),e());return n=Moe(m),a=n.cache.get,s=n.cache.set,r=c,c(d)},c=d=>{const m=a(d);if(m)return m;const f=Ooe(d,n);return s(d,f),f};return r=i,(...d)=>r(Loe(...d))},Boe=[],Gn=e=>{const t=n=>n[e]||Boe;return t.isThemeGetter=!0,t},PF=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,_F=/^\((?:(\w[\w-]*):)?(.+)\)$/i,Foe=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,zoe=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,qoe=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,Hoe=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,Voe=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,Koe=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,ql=e=>Foe.test(e),gt=e=>!!e&&!Number.isNaN(Number(e)),Mr=e=>!!e&&Number.isInteger(Number(e)),v1=e=>e.endsWith("%")&&gt(e.slice(0,-1)),Ei=e=>zoe.test(e),jF=()=>!0,Goe=e=>qoe.test(e)&&!Hoe.test(e),d_=()=>!1,Woe=e=>Voe.test(e),Yoe=e=>Koe.test(e),Qoe=e=>!ze(e)&&!qe(e),Xoe=e=>e.startsWith("@container")&&(e[10]==="/"&&e[11]!==void 0||e[11]==="s"&&e[16]!==void 0&&e.startsWith("-size/",10)||e[11]==="n"&&e[18]!==void 0&&e.startsWith("-normal/",10)),Zoe=e=>Mc(e,MF,d_),ze=e=>PF.test(e),ud=e=>Mc(e,EF,Goe),tO=e=>Mc(e,rse,gt),Joe=e=>Mc(e,OF,jF),ese=e=>Mc(e,IF,d_),nO=e=>Mc(e,NF,d_),tse=e=>Mc(e,DF,Yoe),Xv=e=>Mc(e,LF,Woe),qe=e=>_F.test(e),Xf=e=>uu(e,EF),nse=e=>uu(e,IF),aO=e=>uu(e,NF),ase=e=>uu(e,MF),ose=e=>uu(e,DF),Zv=e=>uu(e,LF,!0),sse=e=>uu(e,OF,!0),Mc=(e,t,n)=>{const a=PF.exec(e);return a?a[1]?t(a[1]):n(a[2]):!1},uu=(e,t,n=!1)=>{const a=_F.exec(e);return a?a[1]?t(a[1]):n:!1},NF=e=>e==="position"||e==="percentage",DF=e=>e==="image"||e==="url",MF=e=>e==="length"||e==="size"||e==="bg-size",EF=e=>e==="length",rse=e=>e==="number",IF=e=>e==="family-name",OF=e=>e==="number"||e==="weight",LF=e=>e==="shadow",ise=()=>{const e=Gn("color"),t=Gn("font"),n=Gn("text"),a=Gn("font-weight"),s=Gn("tracking"),r=Gn("leading"),i=Gn("breakpoint"),c=Gn("container"),d=Gn("spacing"),m=Gn("radius"),f=Gn("shadow"),p=Gn("inset-shadow"),y=Gn("text-shadow"),v=Gn("drop-shadow"),$=Gn("blur"),x=Gn("perspective"),w=Gn("aspect"),S=Gn("ease"),k=Gn("animate"),T=()=>["auto","avoid","all","avoid-page","page","left","right","column"],R=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],_=()=>[...R(),qe,ze],P=()=>["auto","hidden","clip","visible","scroll"],j=()=>["auto","contain","none"],N=()=>[qe,ze,d],I=()=>[ql,"full","auto",...N()],z=()=>[Mr,"none","subgrid",qe,ze],E=()=>["auto",{span:["full",Mr,qe,ze]},Mr,qe,ze],L=()=>[Mr,"auto",qe,ze],O=()=>["auto","min","max","fr",qe,ze],V=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],ne=()=>["start","end","center","stretch","center-safe","end-safe"],q=()=>["auto",...N()],M=()=>[ql,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...N()],F=()=>[ql,"screen","full","dvw","lvw","svw","min","max","fit",...N()],H=()=>[ql,"screen","full","lh","dvh","lvh","svh","min","max","fit",...N()],ee=()=>[e,qe,ze],B=()=>[...R(),aO,nO,{position:[qe,ze]}],G=()=>["no-repeat",{repeat:["","x","y","space","round"]}],Q=()=>["auto","cover","contain",ase,Zoe,{size:[qe,ze]}],de=()=>[v1,Xf,ud],Y=()=>["","none","full",m,qe,ze],pe=()=>["",gt,Xf,ud],se=()=>["solid","dashed","dotted","double"],we=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],me=()=>[gt,v1,aO,nO],ye=()=>["","none",$,qe,ze],_e=()=>["none",gt,qe,ze],ae=()=>["none",gt,qe,ze],Je=()=>[gt,qe,ze],Ae=()=>[ql,"full",...N()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[Ei],breakpoint:[Ei],color:[jF],container:[Ei],"drop-shadow":[Ei],ease:["in","out","in-out"],font:[Qoe],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[Ei],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[Ei],shadow:[Ei],spacing:["px",gt],text:[Ei],"text-shadow":[Ei],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",ql,ze,qe,w]}],container:["container"],"container-type":[{"@container":["","normal","size",qe,ze]}
vendor: 6,104 bytes, line 77
77],"container-named":[Xoe],columns:[{columns:[gt,ze,qe,c]}],"break-after":[{"break-after":T()}],"break-before":[{"break-before":T()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:_()}],overflow:[{overflow:P()}],"overflow-x":[{"overflow-x":P()}],"overflow-y":[{"overflow-y":P()}],overscroll:[{overscroll:j()}],"overscroll-x":[{"overscroll-x":j()}],"overscroll-y":[{"overscroll-y":j()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:I()}],"inset-x":[{"inset-x":I()}],"inset-y":[{"inset-y":I()}],start:[{"inset-s":I(),start:I()}],end:[{"inset-e":I(),end:I()}],"inset-bs":[{"inset-bs":I()}],"inset-be":[{"inset-be":I()}],top:[{top:I()}],right:[{right:I()}],bottom:[{bottom:I()}],left:[{left:I()}],visibility:["visible","invisible","collapse"],z:[{z:[Mr,"auto",qe,ze]}],basis:[{basis:[ql,"full","auto",c,...N()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[gt,ql,"auto","initial","none",ze]}],grow:[{grow:["",gt,qe,ze]}],shrink:[{shrink:["",gt,qe,ze]}],order:[{order:[Mr,"first","last","none",qe,ze]}],"grid-cols":[{"grid-cols":z()}],"col-start-end":[{col:E()}],"col-start":[{"col-start":L()}],"col-end":[{"col-end":L()}],"grid-rows":[{"grid-rows":z()}],"row-start-end":[{row:E()}],"row-start":[{"row-start":L()}],"row-end":[{"row-end":L()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":O()}],"auto-rows":[{"auto-rows":O()}],gap:[{gap:N()}],"gap-x":[{"gap-x":N()}],"gap-y":[{"gap-y":N()}],"justify-content":[{justify:[...V(),"normal"]}],"justify-items":[{"justify-items":[...ne(),"normal"]}],"justify-self":[{"justify-self":["auto",...ne()]}],"align-content":[{content:["normal",...V()]}],"align-items":[{items:[...ne(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...ne(),{baseline:["","last"]}]}],"place-content":[{"place-content":V()}],"place-items":[{"place-items":[...ne(),"baseline"]}],"place-self":[{"place-self":["auto",...ne()]}],p:[{p:N()}],px:[{px:N()}],py:[{py:N()}],ps:[{ps:N()}],pe:[{pe:N()}],pbs:[{pbs:N()}],pbe:[{pbe:N()}],pt:[{pt:N()}],pr:[{pr:N()}],pb:[{pb:N()}],pl:[{pl:N()}],m:[{m:q()}],mx:[{mx:q()}],my:[{my:q()}],ms:[{ms:q()}],me:[{me:q()}],mbs:[{mbs:q()}],mbe:[{mbe:q()}],mt:[{mt:q()}],mr:[{mr:q()}],mb:[{mb:q()}],ml:[{ml:q()}],"space-x":[{"space-x":N()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":N()}],"space-y-reverse":["space-y-reverse"],size:[{size:M()}],"inline-size":[{inline:["auto",...F()]}],"min-inline-size":[{"min-inline":["auto",...F()]}],"max-inline-size":[{"max-inline":["none",...F()]}],"block-size":[{block:["auto",...H()]}],"min-block-size":[{"min-block":["auto",...H()]}],"max-block-size":[{"max-block":["none",...H()]}],w:[{w:[c,"screen",...M()]}],"min-w":[{"min-w":[c,"screen","none",...M()]}],"max-w":[{"max-w":[c,"screen","none","prose",{screen:[i]},...M()]}],h:[{h:["screen","lh",...M()]}],"min-h":[{"min-h":["screen","lh","none",...M()]}],"max-h":[{"max-h":["screen","lh",...M()]}],"font-size":[{text:["base",n,Xf,ud]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[a,sse,Joe]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",v1,ze]}],"font-family":[{font:[nse,ese,t]}],"font-features":[{"font-features":[ze]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[s,qe,ze]}],"line-clamp":[{"line-clamp":[gt,"none",qe,tO]}],leading:[{leading:[r,...N()]}],"list-image":[{"list-image":["none",qe,ze]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",qe,ze]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:ee()}],"text-color":[{text:ee()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...se(),"wavy"]}],"text-decoration-thickness":[{decoration:[gt,"from-font","auto",qe,ud]}],"text-decoration-color":[{decoration:ee()}],"underline-offset":[{"underline-offset":[gt,"auto",qe,ze]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:N()}],"tab-size":[{tab:[Mr,qe,ze]}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",qe,ze]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",qe,ze]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:B()}],"bg-repeat":[{bg:G()}],"bg-size":[{bg:Q()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},Mr,qe,ze],radial:["",qe,ze],conic:[Mr,qe,ze]},ose,tse]}],"bg-color":[{bg:ee()}
vendor: 7,489 bytes, line 77
77],"gradient-from-pos":[{from:de()}],"gradient-via-pos":[{via:de()}],"gradient-to-pos":[{to:de()}],"gradient-from":[{from:ee()}],"gradient-via":[{via:ee()}],"gradient-to":[{to:ee()}],rounded:[{rounded:Y()}],"rounded-s":[{"rounded-s":Y()}],"rounded-e":[{"rounded-e":Y()}],"rounded-t":[{"rounded-t":Y()}],"rounded-r":[{"rounded-r":Y()}],"rounded-b":[{"rounded-b":Y()}],"rounded-l":[{"rounded-l":Y()}],"rounded-ss":[{"rounded-ss":Y()}],"rounded-se":[{"rounded-se":Y()}],"rounded-ee":[{"rounded-ee":Y()}],"rounded-es":[{"rounded-es":Y()}],"rounded-tl":[{"rounded-tl":Y()}],"rounded-tr":[{"rounded-tr":Y()}],"rounded-br":[{"rounded-br":Y()}],"rounded-bl":[{"rounded-bl":Y()}],"border-w":[{border:pe()}],"border-w-x":[{"border-x":pe()}],"border-w-y":[{"border-y":pe()}],"border-w-s":[{"border-s":pe()}],"border-w-e":[{"border-e":pe()}],"border-w-bs":[{"border-bs":pe()}],"border-w-be":[{"border-be":pe()}],"border-w-t":[{"border-t":pe()}],"border-w-r":[{"border-r":pe()}],"border-w-b":[{"border-b":pe()}],"border-w-l":[{"border-l":pe()}],"divide-x":[{"divide-x":pe()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":pe()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...se(),"hidden","none"]}],"divide-style":[{divide:[...se(),"hidden","none"]}],"border-color":[{border:ee()}],"border-color-x":[{"border-x":ee()}],"border-color-y":[{"border-y":ee()}],"border-color-s":[{"border-s":ee()}],"border-color-e":[{"border-e":ee()}],"border-color-bs":[{"border-bs":ee()}],"border-color-be":[{"border-be":ee()}],"border-color-t":[{"border-t":ee()}],"border-color-r":[{"border-r":ee()}],"border-color-b":[{"border-b":ee()}],"border-color-l":[{"border-l":ee()}],"divide-color":[{divide:ee()}],"outline-style":[{outline:[...se(),"none","hidden"]}],"outline-offset":[{"outline-offset":[gt,qe,ze]}],"outline-w":[{outline:["",gt,Xf,ud]}],"outline-color":[{outline:ee()}],shadow:[{shadow:["","none",f,Zv,Xv]}],"shadow-color":[{shadow:ee()}],"inset-shadow":[{"inset-shadow":["none",p,Zv,Xv]}],"inset-shadow-color":[{"inset-shadow":ee()}],"ring-w":[{ring:pe()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:ee()}],"ring-offset-w":[{"ring-offset":[gt,ud]}],"ring-offset-color":[{"ring-offset":ee()}],"inset-ring-w":[{"inset-ring":pe()}],"inset-ring-color":[{"inset-ring":ee()}],"text-shadow":[{"text-shadow":["none",y,Zv,Xv]}],"text-shadow-color":[{"text-shadow":ee()}],opacity:[{opacity:[gt,qe,ze]}],"mix-blend":[{"mix-blend":[...we(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":we()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[gt]}],"mask-image-linear-from-pos":[{"mask-linear-from":me()}],"mask-image-linear-to-pos":[{"mask-linear-to":me()}],"mask-image-linear-from-color":[{"mask-linear-from":ee()}],"mask-image-linear-to-color":[{"mask-linear-to":ee()}],"mask-image-t-from-pos":[{"mask-t-from":me()}],"mask-image-t-to-pos":[{"mask-t-to":me()}],"mask-image-t-from-color":[{"mask-t-from":ee()}],"mask-image-t-to-color":[{"mask-t-to":ee()}],"mask-image-r-from-pos":[{"mask-r-from":me()}],"mask-image-r-to-pos":[{"mask-r-to":me()}],"mask-image-r-from-color":[{"mask-r-from":ee()}],"mask-image-r-to-color":[{"mask-r-to":ee()}],"mask-image-b-from-pos":[{"mask-b-from":me()}],"mask-image-b-to-pos":[{"mask-b-to":me()}],"mask-image-b-from-color":[{"mask-b-from":ee()}],"mask-image-b-to-color":[{"mask-b-to":ee()}],"mask-image-l-from-pos":[{"mask-l-from":me()}],"mask-image-l-to-pos":[{"mask-l-to":me()}],"mask-image-l-from-color":[{"mask-l-from":ee()}],"mask-image-l-to-color":[{"mask-l-to":ee()}],"mask-image-x-from-pos":[{"mask-x-from":me()}],"mask-image-x-to-pos":[{"mask-x-to":me()}],"mask-image-x-from-color":[{"mask-x-from":ee()}],"mask-image-x-to-color":[{"mask-x-to":ee()}],"mask-image-y-from-pos":[{"mask-y-from":me()}],"mask-image-y-to-pos":[{"mask-y-to":me()}],"mask-image-y-from-color":[{"mask-y-from":ee()}],"mask-image-y-to-color":[{"mask-y-to":ee()}],"mask-image-radial":[{"mask-radial":[qe,ze]}],"mask-image-radial-from-pos":[{"mask-radial-from":me()}],"mask-image-radial-to-pos":[{"mask-radial-to":me()}],"mask-image-radial-from-color":[{"mask-radial-from":ee()}],"mask-image-radial-to-color":[{"mask-radial-to":ee()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":R()}],"mask-image-conic-pos":[{"mask-conic":[gt]}],"mask-image-conic-from-pos":[{"mask-conic-from":me()}],"mask-image-conic-to-pos":[{"mask-conic-to":me()}],"mask-image-conic-from-color":[{"mask-conic-from":ee()}],"mask-image-conic-to-color":[{"mask-conic-to":ee()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:B()}],"mask-repeat":[{mask:G()}],"mask-size":[{mask:Q()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",qe,ze]}],filter:[{filter:["","none",qe,ze]}],blur:[{blur:ye()}],brightness:[{brightness:[gt,qe,ze]}],contrast:[{contrast:[gt,qe,ze]}],"drop-shadow":[{"drop-shadow":["","none",v,Zv,Xv]}],"drop-shadow-color":[{"drop-shadow":ee()}],grayscale:[{grayscale:["",gt,qe,ze]}],"hue-rotate":[{"hue-rotate":[gt,qe,ze]}],invert:[{invert:["",gt,qe,ze]}],saturate:[{saturate:[gt,qe,ze]}],sepia:[{sepia:["",gt,qe,ze]}],"backdrop-filter":[{"backdrop-filter":["","none",qe,ze]}],"backdrop-blur":[{"backdrop-blur":ye()}],"backdrop-brightness":[{"backdrop-brightness":[gt,qe,ze]}],"backdrop-contrast":[{"backdrop-contrast":[gt,qe,ze]}],"backdrop-grayscale":[{"backdrop-grayscale":["",gt,qe,ze]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[gt,qe,ze]}],"backdrop-invert":[{"backdrop-invert":["",gt,qe,ze]}],"backdrop-opacity":[{"backdrop-opacity":[gt,qe,ze]}],"backdrop-saturate":[{"backdrop-saturate":[gt,qe,ze]}],"backdrop-sepia":[{"backdrop-sepia":["",gt,qe,ze]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":N()}],"border-spacing-x":[{"border-spacing-x":N()}],"border-spacing-y":[{"border-spacing-y":N()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",qe,ze]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[gt,"initial",qe,ze]}],ease:[{ease:["linear","initial",S,qe,ze]}],delay:[{delay:[gt,qe,ze]}],animate:[{animate:["none",k,qe,ze]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[x,qe,ze]}],"perspective-origin":[{"perspective-origin":_()}],rotate:[{rotate:_e()}],"rotate-x":[{"rotate-x":_e()}],"rotate-y":[{"rotate-y":_e()}],"rotate-z":[{"rotate-z":_e()}],scale:[{scale:ae()}],"scale-x":[{"scale-x":ae()}],"scale-y":[{"scale-y":ae()}],"scale-z":[{"scale-z":ae()}],"scale-3d":["scale-3d"],skew:[{skew:Je()}],"skew-x":[{"skew-x":Je()}],"skew-y":[{"skew-y":Je()}],transform:[{transform:[qe,ze,"","none","gpu","cpu"]}],"transform-origin":[{origin:_()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:Ae()}],"translate-x":[{"translate-x":Ae()}],"translate-y":[{"translate-y":Ae()}],"translate-z":[{"translate-z":Ae()}],"translate-none":["translate-none"],zoom:[{zoom:[Mr,qe,ze]}],accent:[{accent:ee()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:ee()}
vendor: 5,127 bytes, line 77
77],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",qe,ze]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scrollbar-thumb-color":[{"scrollbar-thumb":ee()}],"scrollbar-track-color":[{"scrollbar-track":ee()}],"scrollbar-gutter":[{"scrollbar-gutter":["auto","stable","both"]}],"scrollbar-w":[{scrollbar:["auto","thin","none"]}],"scroll-m":[{"scroll-m":N()}],"scroll-mx":[{"scroll-mx":N()}],"scroll-my":[{"scroll-my":N()}],"scroll-ms":[{"scroll-ms":N()}],"scroll-me":[{"scroll-me":N()}],"scroll-mbs":[{"scroll-mbs":N()}],"scroll-mbe":[{"scroll-mbe":N()}],"scroll-mt":[{"scroll-mt":N()}],"scroll-mr":[{"scroll-mr":N()}],"scroll-mb":[{"scroll-mb":N()}],"scroll-ml":[{"scroll-ml":N()}],"scroll-p":[{"scroll-p":N()}],"scroll-px":[{"scroll-px":N()}],"scroll-py":[{"scroll-py":N()}],"scroll-ps":[{"scroll-ps":N()}],"scroll-pe":[{"scroll-pe":N()}],"scroll-pbs":[{"scroll-pbs":N()}],"scroll-pbe":[{"scroll-pbe":N()}],"scroll-pt":[{"scroll-pt":N()}],"scroll-pr":[{"scroll-pr":N()}],"scroll-pb":[{"scroll-pb":N()}],"scroll-pl":[{"scroll-pl":N()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",qe,ze]}],fill:[{fill:["none",...ee()]}],"stroke-w":[{stroke:[gt,Xf,ud,tO]}],stroke:[{stroke:["none",...ee()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{"container-named":["container-type"],overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","inset-bs","inset-be","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pbs","pbe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mbs","mbe","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-bs","border-w-be","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-bs","border-color-be","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mbs","scroll-mbe","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pbs","scroll-pbe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},postfixLookupClassGroups:["container-type"],orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},lse=Uoe(ise);function X(...e){return lse(Lt(e))}function oO(e,t){if(typeof e=="function")return e(t);
vendor: 5,567 bytes, lines 77-136
77e!=null&&(e.current=t)}function di(...e){return t=>{let n=!1;const a=e.map(s=>{const r=oO(s,t);return!n&&typeof r=="function"&&(n=!0),r});if(n)return()=>{for(let s=0;s<a.length;s++){const r=a[s];typeof r=="function"?r():oO(e[s],null)}}}}function vt(...e){return h.useCallback(di(...e),e)}var cse=Symbol.for("react.lazy"),Ax=Lh[" use ".trim().toString()];function dse(e){return typeof e=="object"&&e!==null&&"then"in e}function UF(e){return e!=null&&typeof e=="object"&&"$$typeof"in e&&e.$$typeof===cse&&"_payload"in e&&dse(e._payload)}function u_(e){const t=use(e),n=h.forwardRef((a,s)=>{let{children:r,...i}=a;UF(r)&&typeof Ax=="function"&&(r=Ax(r._payload));const c=h.Children.toArray(r),d=c.find(pse);if(d){const m=d.props.children,f=c.map(p=>p===d?h.Children.count(m)>1?h.Children.only(null):h.isValidElement(m)?m.props.children:null:p);return o.jsx(t,{...i,ref:s,children:h.isValidElement(m)?h.cloneElement(m,void 0,f):null})}return o.jsx(t,{...i,ref:s,children:r})});return n.displayName=`${e}.Slot`,n}var m_=u_("Slot");function use(e){const t=h.forwardRef((n,a)=>{let{children:s,...r}=n;if(UF(s)&&typeof Ax=="function"&&(s=Ax(s._payload)),h.isValidElement(s)){const i=gse(s),c=fse(r,s.props);return s.type!==h.Fragment&&(c.ref=a?di(a,i):i),h.cloneElement(s,c)}return h.Children.count(s)>1?h.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var mse=Symbol("radix.slottable");function pse(e){return h.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===mse}function fse(e,t){const n={...t};for(const a in t){const s=e[a],r=t[a];/^on[A-Z]/.test(a)?s&&r?n[a]=(...c)=>{const d=r(...c);return s(...c),d}:s&&(n[a]=s):a==="style"?n[a]={...s,...r}:a==="className"&&(n[a]=[s,r].filter(Boolean).join(" "))}return{...e,...n}}function gse(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}/**
78 * @license lucide-react v0.469.0 - ISC
79 *
80 * This source code is licensed under the ISC license.
81 * See the LICENSE file in the root directory of this source tree.
82 */const hse=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),BF=(...e)=>e.filter((t,n,a)=>!!t&&t.trim()!==""&&a.indexOf(t)===n).join(" ").trim();/**
83 * @license lucide-react v0.469.0 - ISC
84 *
85 * This source code is licensed under the ISC license.
86 * See the LICENSE file in the root directory of this source tree.
87 */var yse={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};/**
88 * @license lucide-react v0.469.0 - ISC
89 *
90 * This source code is licensed under the ISC license.
91 * See the LICENSE file in the root directory of this source tree.
92 */const vse=h.forwardRef(({color:e="currentColor",size:t=24,strokeWidth:n=2,absoluteStrokeWidth:a,className:s="",children:r,iconNode:i,...c},d)=>h.createElement("svg",{ref:d,...yse,width:t,height:t,stroke:e,strokeWidth:a?Number(n)*24/Number(t):n,className:BF("lucide",s),...c},[...i.map(([m,f])=>h.createElement(m,f)),...Array.isArray(r)?r:[r]]));/**
93 * @license lucide-react v0.469.0 - ISC
94 *
95 * This source code is licensed under the ISC license.
96 * See the LICENSE file in the root directory of this source tree.
97 */const oo=(e,t)=>{const n=h.forwardRef(({className:a,...s},r)=>h.createElement(vse,{ref:r,iconNode:t,className:BF(`lucide-${hse(e)}`,a),...s}));return n.displayName=`${e}`,n};/**
98 * @license lucide-react v0.469.0 - ISC
99 *
100 * This source code is licensed under the ISC license.
101 * See the LICENSE file in the root directory of this source tree.
102 */const FF=oo("Calendar",[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}]]);/**
103 * @license lucide-react v0.469.0 - ISC
104 *
105 * This source code is licensed under the ISC license.
106 * See the LICENSE file in the root directory of this source tree.
107 */const Ec=oo("Check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);/**
108 * @license lucide-react v0.469.0 - ISC
109 *
110 * This source code is licensed under the ISC license.
111 * See the LICENSE file in the root directory of this source tree.
112 */const Ic=oo("ChevronDown",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);/**
113 * @license lucide-react v0.469.0 - ISC
114 *
115 * This source code is licensed under the ISC license.
116 * See the LICENSE file in the root directory of this source tree.
117 */const p_=oo("ChevronLeft",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]);/**
118 * @license lucide-react v0.469.0 - ISC
119 *
120 * This source code is licensed under the ISC license.
121 * See the LICENSE file in the root directory of this source tree.
122 */const J$=oo("ChevronRight",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);/**
123 * @license lucide-react v0.469.0 - ISC
124 *
125 * This source code is licensed under the ISC license.
126 * See the LICENSE file in the root directory of this source tree.
127 */const bse=oo("ChevronUp",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]);/**
128 * @license lucide-react v0.469.0 - ISC
129 *
130 * This source code is licensed under the ISC license.
131 * See the LICENSE file in the root directory of this source tree.
132 */const xse=oo("Circle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);/**
133 * @license lucide-react v0.469.0 - ISC
134 *
135 * This source code is licensed under the ISC license.
136 * See the LICENSE file in the root directory of this source tree.
137 */const zF=oo("Copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);/**
138 * @license lucide-react v0.469.0 - ISC
139 *
140 * This source code is licensed under the ISC license.
141 * See the LICENSE file in the root directory of this source tree.
142 */const $se=oo("Globe",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]]);/**
143 * @license lucide-react v0.469.0 - ISC
144 *
145 * This source code is licensed under the ISC license.
146 * See the LICENSE file in the root directory of this source tree.
147 */const f_=oo("LoaderCircle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);/**
148 * @license lucide-react v0.469.0 - ISC
149 *
150 * This source code is licensed under the ISC license.
151 * See the LICENSE file in the root directory of this source tree.
152 */const wse=oo("MessageCircle",[["path",{d:"M7.9 20A9 9 0 1 0 4 16.1L2 22Z",key:"vv11sd"}]]);/**
153 * @license lucide-react v0.469.0 - ISC
154 *
155 * This source code is licensed under the ISC license.
156 * See the LICENSE file in the root directory of this source tree.
157 */const kse=oo("Minus",[["path",{d:"M5 12h14",key:"1ays0h"}]]);/**
158 * @license lucide-react v0.469.0 - ISC
159 *
160 * This source code is licensed under the ISC license.
161 * See the LICENSE file in the root directory of this source tree.
162 */const Cse=oo("Search",[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}]]);/**
163 * @license lucide-react v0.469.0 - ISC
164 *
165 * This source code is licensed under the ISC license.
166 * See the LICENSE file in the root directory of this source tree.
167 */const Sse=oo("SlidersHorizontal",[["line",{x1:"21",x2:"14",y1:"4",y2:"4",key:"obuewd"}],["line",{x1:"10",x2:"3",y1:"4",y2:"4",key:"1q6298"}],["line",{x1:"21",x2:"12",y1:"12",y2:"12",key:"1iu8h1"}],["line",{x1:"8",x2:"3",y1:"12",y2:"12",key:"ntss68"}],["line",{x1:"21",x2:"16",y1:"20",y2:"20",key:"14d8ph"}],["line",{x1:"12",x2:"3",y1:"20",y2:"20",key:"m0wm8r"}],["line",{x1:"14",x2:"14",y1:"2",y2:"6",key:"14e1ph"}],["line",{x1:"8",x2:"8",y1:"10",y2:"14",key:"1i6ji0"}],["line",{x1:"16",x2:"16",y1:"18",y2:"22",key:"1lctlv"}]]);/**
168 * @license lucide-react v0.469.0 - ISC
169 *
170 * This source code is licensed under the ISC license.
171 * See the LICENSE file in the root directory of this source tree.
172 */const Fh=oo("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]),sO=e=>typeof e=="boolean"?`${e}`:e===0?"0":e,rO=Lt,zh=(e,t)=>n=>{var a;if(t?.variants==null)return rO(e,n?.class,n?.className);const{variants:s,defaultVariants:r}=t,i=Object.keys(s).map(m=>{const f=n?.[m],p=r?.[m];if(f===null)return null;const y=sO(f)||sO(p);return s[m][y]}),c=n&&Object.entries(n).reduce((m,f)=>{let[p,y]=f;return y===void 0||(m[p]=y),m},{}),d=t==null||(a=t.compoundVariants)===null||a===void 0?void 0:a.reduce((m,f)=>{let{class:p,className:y,...v}=f;return Object.entries(v).every($=>{let[x,w]=$;return Array.isArray(w)?w.includes({...r,...c}[x]):{...r,...c}[x]===w})?[...m,p,y]:m},[]);return rO(e,i,d,n?.class,n?.className)},ur=zh("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[color:var(--ring)] disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"bg-[color:var(--primary)] text-[color:var(--primary-foreground)] hover:opacity-90",destructive:"bg-[color:var(--destructive)] text-[color:var(--destructive-foreground)] hover:opacity-90",outline:"border border-[color:var(--border)] bg-transparent hover:bg-[color:var(--accent)] hover:text-[color:var(--accent-foreground)]",secondary:"bg-[color:var(--secondary)] text-[color:var(--secondary-foreground)] hover:opacity-90",ghost:"hover:bg-[color:var(--accent)] hover:text-[color:var(--accent-foreground)]",link:"text-[color:var(--link)] underline underline-offset-[length:var(--link-underline-offset)] hover:decoration-2"},size:{sm:"h-8 px-3",md:"h-10 px-4",lg:"h-12 px-6 text-base",icon:"h-10 w-10"}},defaultVariants:{variant:"default",size:"md"}}),K=h.forwardRef(({className:e,variant:t,size:n,asChild:a,loading:s,disabled:r,children:i,...c},d)=>{const m=a?m_:"button";return o.jsx(m,{ref:d,className:X(ur({variant:t,size:n}),e),disabled:r||s,...c,children:a?i:o.jsxs(o.Fragment,{children:[s?o.jsx(f_,{className:"size-4 animate-spin","aria-hidden":!0}):null,i]})})});K.displayName="Button";const Ase=zh("grid place-items-center rounded-full text-[color:var(--muted-foreground)] transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[color:var(--ring)] disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{ghost:"hover:bg-[color:var(--muted)] hover:text-[color:var(--foreground)]",soft:"bg-[color:var(--secondary)] hover:bg-[color:var(--accent)] hover:text-[color:var(--foreground)]"},size:{md:"size-9",sm:"size-8"}},defaultVariants:{variant:"ghost",size:"md"}}),Aa=h.forwardRef(({className:e,variant:t,size:n,...a},s)=>o.jsx("button",{ref:s,className:X(Ase({variant:t,size:n}),e),...a}));Aa.displayName="IconButton";function qF({timeout:e=1500}={}){const[t,n]=h.useState(!1),a=h.useRef(void 0);h.useEffect(()=>()=>{a.current&&clearTimeout(a.current)},[]);const s=h.useCallback(async r=>{try{return navigator?.clipboard?(await navigator.clipboard.writeText(r),n(!0),a.current&&clearTimeout(a.current),a.current=setTimeout(()=>n(!1),e),!0):!1}catch{return!1}},[e]);return{copied:t,copy:s}}const ew="oh-input h-10 w-full rounded-md border border-[color:var(--input)] bg-[color:var(--background)] px-3 text-sm text-[color:var(--foreground)] outline-none transition-colors placeholder:text-[color:var(--muted-foreground)] focus-visible:border-[color:var(--ring)] disabled:cursor-not-allowed disabled:opacity-50",Tse=X(ew,"oh-native-select"),ge=h.forwardRef(({className:e,startIcon:t,endIcon:n,...a},s)=>{const r=o.jsx("input",{ref:s,className:X(ew,t&&"pl-9",n&&"pr-9",e),...a});return!t&&!n?r:o.jsxs("div",{className:"relative w-full",children:[t?o.jsx("span",{className:"pointer-events-none absolute inset-y-0 left-0 grid w-9 place-items-center text-[color:var(--muted-foreground)]",children:t}):null,r,n?o.jsx("span",{className:"absolute inset-y-0 right-0 grid w-9 place-items-center text-[color:var(--muted-foreground)]",children:n}):null]})});ge.displayName="TextInput";const HF=h.forwardRef(({className:e,...t},n)=>o.jsx("select",{ref:n,className:X(Tse,e),...t}));HF.displayName="NativeSelect";function je(e,t,{checkForDefaultPrevented:n=!0}={}){return function(s){if(e?.(s),n===!1||!s.defaultPrevented)return t?.(s)}}function Rse(e,t){const n=h.createContext(t),a=r=>{const{children:i,...c}=r,d=h.useMemo(()=>c,Object.values(c));return o.jsx(n.Provider,{value:d,children:i})};a.displayName=e+"Provider";function s(r){const i=h.useContext(n);if(i)return i;if(t!==void 0)return t;throw new Error(`\`${r}\` must be used within \`${e}\``)}return[a,s]}function so(e,t=[]){let n=[];function a(r,i){const c=h.createContext(i),d=n.length;n=[...n,i];const m=p=>{const{scope:y,children:v,...$}=p,x=y?.[e]?.[d]||c,w=h.useMemo(()=>$,Object.values($));return o.jsx(x.Provider,{value:w,children:v})};m.displayName=r+"Provider";function f(p,y){const v=y?.[e]?.[d]||c,$=h.useContext(v);if($)return $;if(i!==void 0)return i;throw new Error(`\`${p}\` must be used within \`${r}\``)}return[m,f]}const s=()=>{const r=n.map(i=>h.createContext(i));return function(c){const d=c?.[e]||r;return h.useMemo(()=>({[`__scope${e}`]:{...c,[e]:d}}),[c,d])}};return s.scopeName=e,[a,Pse(s,...t)]}function Pse(...e){const t=e[0];if(e.length===1)return t;const n=()=>{const a=e.map(s=>({useScope:s(),scopeName:s.scopeName}));return function(r){const i=a.reduce((c,{useScope:d,scopeName:m})=>{const p=d(r)[`__scope${m}`];return{...c,...p}},{});return h.useMemo(()=>({[`__scope${t.scopeName}`]:i}),[i])}};return n.scopeName=t.scopeName,n}function _se(e){const t=jse(e),n=h.forwardRef((a,s)=>{const{children:r,...i}=a,c=h.Children.toArray(r),d=c.find(Dse);if(d){const m=d.props.children,f=c.map(p=>p===d?h.Children.count(m)>1?h.Children.only(null):h.isValidElement(m)?m.props.children:null:p);return o.jsx(t,{...i,ref:s,children:h.isValidElement(m)?h.cloneElement(m,void 0,f):null})}return o.jsx(t,{...i,ref:s,children:r})});return n.displayName=`${e}.Slot`,n}function jse(e){const t=h.forwardRef((n,a)=>{const{children:s,...r}=n;if(h.isValidElement(s)){const i=Ese(s),c=Mse(r,s.props);return s.type!==h.Fragment&&(c.ref=a?di(a,i):i),h.cloneElement(s,c)}return h.Children.count(s)>1?h.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var Nse=Symbol("radix.slottable");function Dse(e){return h.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===Nse}function Mse(e,t){const n={...t};for(const a in t){const s=e[a],r=t[a];/^on[A-Z]/.test(a)?s&&r?n[a]=(...c)=>{const d=r(...c);return s(...c),d}:s&&(n[a]=s):a==="style"?n[a]={...s,...r}
vendor: 4,757 bytes, line 172
172:a==="className"&&(n[a]=[s,r].filter(Boolean).join(" "))}return{...e,...n}}function Ese(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var Ise=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],st=Ise.reduce((e,t)=>{const n=_se(`Primitive.${t}`),a=h.forwardRef((s,r)=>{const{asChild:i,...c}=s,d=i?n:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),o.jsx(d,{...c,ref:r})});return a.displayName=`Primitive.${t}`,{...e,[t]:a}},{});function VF(e,t){e&&li.flushSync(()=>e.dispatchEvent(t))}function oi(e){const t=h.useRef(e);return h.useEffect(()=>{t.current=e}),h.useMemo(()=>(...n)=>t.current?.(...n),[])}function Ose(e,t=globalThis?.document){const n=oi(e);h.useEffect(()=>{const a=s=>{s.key==="Escape"&&n(s)};return t.addEventListener("keydown",a,{capture:!0}),()=>t.removeEventListener("keydown",a,{capture:!0})},[n,t])}var Lse="DismissableLayer",HT="dismissableLayer.update",Use="dismissableLayer.pointerDownOutside",Bse="dismissableLayer.focusOutside",iO,KF=h.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),mu=h.forwardRef((e,t)=>{const{disableOutsidePointerEvents:n=!1,onEscapeKeyDown:a,onPointerDownOutside:s,onFocusOutside:r,onInteractOutside:i,onDismiss:c,...d}=e,m=h.useContext(KF),[f,p]=h.useState(null),y=f?.ownerDocument??globalThis?.document,[,v]=h.useState({}),$=vt(t,j=>p(j)),x=Array.from(m.layers),[w]=[...m.layersWithOutsidePointerEventsDisabled].slice(-1),S=x.indexOf(w),k=f?x.indexOf(f):-1,T=m.layersWithOutsidePointerEventsDisabled.size>0,R=k>=S,_=qse(j=>{const N=j.target,I=[...m.branches].some(z=>z.contains(N));!R||I||(s?.(j),i?.(j),j.defaultPrevented||c?.())},y),P=Hse(j=>{const N=j.target;[...m.branches].some(z=>z.contains(N))||(r?.(j),i?.(j),j.defaultPrevented||c?.())},y);return Ose(j=>{k===m.layers.size-1&&(a?.(j),!j.defaultPrevented&&c&&(j.preventDefault(),c()))},y),h.useEffect(()=>{if(f)return n&&(m.layersWithOutsidePointerEventsDisabled.size===0&&(iO=y.body.style.pointerEvents,y.body.style.pointerEvents="none"),m.layersWithOutsidePointerEventsDisabled.add(f)),m.layers.add(f),lO(),()=>{n&&m.layersWithOutsidePointerEventsDisabled.size===1&&(y.body.style.pointerEvents=iO)}},[f,y,n,m]),h.useEffect(()=>()=>{f&&(m.layers.delete(f),m.layersWithOutsidePointerEventsDisabled.delete(f),lO())},[f,m]),h.useEffect(()=>{const j=()=>v({});return document.addEventListener(HT,j),()=>document.removeEventListener(HT,j)},[]),o.jsx(st.div,{...d,ref:$,style:{pointerEvents:T?R?"auto":"none":void 0,...e.style},onFocusCapture:je(e.onFocusCapture,P.onFocusCapture),onBlurCapture:je(e.onBlurCapture,P.onBlurCapture),onPointerDownCapture:je(e.onPointerDownCapture,_.onPointerDownCapture)})});mu.displayName=Lse;var Fse="DismissableLayerBranch",zse=h.forwardRef((e,t)=>{const n=h.useContext(KF),a=h.useRef(null),s=vt(t,a);return h.useEffect(()=>{const r=a.current;if(r)return n.branches.add(r),()=>{n.branches.delete(r)}},[n.branches]),o.jsx(st.div,{...e,ref:s})});zse.displayName=Fse;function qse(e,t=globalThis?.document){const n=oi(e),a=h.useRef(!1),s=h.useRef(()=>{});return h.useEffect(()=>{const r=c=>{if(c.target&&!a.current){let d=function(){GF(Use,n,m,{discrete:!0})};const m={originalEvent:c};c.pointerType==="touch"?(t.removeEventListener("click",s.current),s.current=d,t.addEventListener("click",s.current,{once:!0})):d()}else t.removeEventListener("click",s.current);a.current=!1},i=window.setTimeout(()=>{t.addEventListener("pointerdown",r)},0);return()=>{window.clearTimeout(i),t.removeEventListener("pointerdown",r),t.removeEventListener("click",s.current)}},[t,n]),{onPointerDownCapture:()=>a.current=!0}}function Hse(e,t=globalThis?.document){const n=oi(e),a=h.useRef(!1);return h.useEffect(()=>{const s=r=>{r.target&&!a.current&&GF(Bse,n,{originalEvent:r},{discrete:!1})};return t.addEventListener("focusin",s),()=>t.removeEventListener("focusin",s)},[t,n]),{onFocusCapture:()=>a.current=!0,onBlurCapture:()=>a.current=!1}}function lO(){const e=new CustomEvent(HT);document.dispatchEvent(e)}function GF(e,t,n,{discrete:a}){const s=n.originalEvent.target,r=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&s.addEventListener(e,t,{once:!0}),a?VF(s,r):s.dispatchEvent(r)}var Ra=globalThis?.document?h.useLayoutEffect:()=>{},Vse=Lh[" useId ".trim().toString()]||(()=>{}),Kse=0;function To(e){const[t,n]=h.useState(Vse());return Ra(()=>{n(a=>a??String(Kse++))},[e]),e||(t?`radix-${t}`:"")}const Gse=["top","right","bottom","left"],wc=Math.min,Vo=Math.max,Tx=Math.round,Jv=Math.floor,ei=e=>({x:e,y:e}
vendor: 11,898 bytes, line 172
172),Wse={left:"right",right:"left",bottom:"top",top:"bottom"};function VT(e,t,n){return Vo(e,wc(t,n))}function Zi(e,t){return typeof e=="function"?e(t):e}function Ji(e){return e.split("-")[0]}function Ep(e){return e.split("-")[1]}function g_(e){return e==="x"?"y":"x"}function h_(e){return e==="y"?"height":"width"}function Yr(e){const t=e[0];return t==="t"||t==="b"?"y":"x"}function y_(e){return g_(Yr(e))}function Yse(e,t,n){n===void 0&&(n=!1);const a=Ep(e),s=y_(e),r=h_(s);let i=s==="x"?a===(n?"end":"start")?"right":"left":a==="start"?"bottom":"top";return t.reference[r]>t.floating[r]&&(i=Rx(i)),[i,Rx(i)]}function Qse(e){const t=Rx(e);return[KT(e),t,KT(t)]}function KT(e){return e.includes("start")?e.replace("start","end"):e.replace("end","start")}const cO=["left","right"],dO=["right","left"],Xse=["top","bottom"],Zse=["bottom","top"];function Jse(e,t,n){switch(e){case"top":case"bottom":return n?t?dO:cO:t?cO:dO;case"left":case"right":return t?Xse:Zse;default:return[]}}function ere(e,t,n,a){const s=Ep(e);let r=Jse(Ji(e),n==="start",a);return s&&(r=r.map(i=>i+"-"+s),t&&(r=r.concat(r.map(KT)))),r}function Rx(e){const t=Ji(e);return Wse[t]+e.slice(t.length)}function tre(e){return{top:0,right:0,bottom:0,left:0,...e}}function WF(e){return typeof e!="number"?tre(e):{top:e,right:e,bottom:e,left:e}}function Px(e){const{x:t,y:n,width:a,height:s}=e;return{width:a,height:s,top:n,left:t,right:t+a,bottom:n+s,x:t,y:n}}function uO(e,t,n){let{reference:a,floating:s}=e;const r=Yr(t),i=y_(t),c=h_(i),d=Ji(t),m=r==="y",f=a.x+a.width/2-s.width/2,p=a.y+a.height/2-s.height/2,y=a[c]/2-s[c]/2;let v;switch(d){case"top":v={x:f,y:a.y-s.height};break;case"bottom":v={x:f,y:a.y+a.height};break;case"right":v={x:a.x+a.width,y:p};break;case"left":v={x:a.x-s.width,y:p};break;default:v={x:a.x,y:a.y}}switch(Ep(t)){case"start":v[i]-=y*(n&&m?-1:1);break;case"end":v[i]+=y*(n&&m?-1:1);break}return v}async function nre(e,t){var n;t===void 0&&(t={});const{x:a,y:s,platform:r,rects:i,elements:c,strategy:d}=e,{boundary:m="clippingAncestors",rootBoundary:f="viewport",elementContext:p="floating",altBoundary:y=!1,padding:v=0}=Zi(t,e),$=WF(v),w=c[y?p==="floating"?"reference":"floating":p],S=Px(await r.getClippingRect({element:(n=await(r.isElement==null?void 0:r.isElement(w)))==null||n?w:w.contextElement||await(r.getDocumentElement==null?void 0:r.getDocumentElement(c.floating)),boundary:m,rootBoundary:f,strategy:d})),k=p==="floating"?{x:a,y:s,width:i.floating.width,height:i.floating.height}:i.reference,T=await(r.getOffsetParent==null?void 0:r.getOffsetParent(c.floating)),R=await(r.isElement==null?void 0:r.isElement(T))?await(r.getScale==null?void 0:r.getScale(T))||{x:1,y:1}:{x:1,y:1},_=Px(r.convertOffsetParentRelativeRectToViewportRelativeRect?await r.convertOffsetParentRelativeRectToViewportRelativeRect({elements:c,rect:k,offsetParent:T,strategy:d}):k);return{top:(S.top-_.top+$.top)/R.y,bottom:(_.bottom-S.bottom+$.bottom)/R.y,left:(S.left-_.left+$.left)/R.x,right:(_.right-S.right+$.right)/R.x}}const are=50,ore=async(e,t,n)=>{const{placement:a="bottom",strategy:s="absolute",middleware:r=[],platform:i}=n,c=i.detectOverflow?i:{...i,detectOverflow:nre},d=await(i.isRTL==null?void 0:i.isRTL(t));let m=await i.getElementRects({reference:e,floating:t,strategy:s}),{x:f,y:p}=uO(m,a,d),y=a,v=0;const $={};for(let x=0;x<r.length;x++){const w=r[x];if(!w)continue;const{name:S,fn:k}=w,{x:T,y:R,data:_,reset:P}=await k({x:f,y:p,initialPlacement:a,placement:y,strategy:s,middlewareData:$,rects:m,platform:c,elements:{reference:e,floating:t}});f=T??f,p=R??p,$[S]={...$[S],..._},P&&v<are&&(v++,typeof P=="object"&&(P.placement&&(y=P.placement),P.rects&&(m=P.rects===!0?await i.getElementRects({reference:e,floating:t,strategy:s}):P.rects),{x:f,y:p}=uO(m,y,d)),x=-1)}return{x:f,y:p,placement:y,strategy:s,middlewareData:$}},sre=e=>({name:"arrow",options:e,async fn(t){const{x:n,y:a,placement:s,rects:r,platform:i,elements:c,middlewareData:d}=t,{element:m,padding:f=0}=Zi(e,t)||{};if(m==null)return{};const p=WF(f),y={x:n,y:a},v=y_(s),$=h_(v),x=await i.getDimensions(m),w=v==="y",S=w?"top":"left",k=w?"bottom":"right",T=w?"clientHeight":"clientWidth",R=r.reference[$]+r.reference[v]-y[v]-r.floating[$],_=y[v]-r.reference[v],P=await(i.getOffsetParent==null?void 0:i.getOffsetParent(m));let j=P?P[T]:0;(!j||!await(i.isElement==null?void 0:i.isElement(P)))&&(j=c.floating[T]||r.floating[$]);const N=R/2-_/2,I=j/2-x[$]/2-1,z=wc(p[S],I),E=wc(p[k],I),L=z,O=j-x[$]-E,V=j/2-x[$]/2+N,ne=VT(L,V,O),q=!d.arrow&&Ep(s)!=null&&V!==ne&&r.reference[$]/2-(V<L?z:E)-x[$]/2<0,M=q?V<L?V-L:V-O:0;return{[v]:y[v]+M,data:{[v]:ne,centerOffset:V-ne-M,...q&&{alignmentOffset:M}},reset:q}}}),rre=function(e){return e===void 0&&(e={}),{name:"flip",options:e,async fn(t){var n,a;const{placement:s,middlewareData:r,rects:i,initialPlacement:c,platform:d,elements:m}=t,{mainAxis:f=!0,crossAxis:p=!0,fallbackPlacements:y,fallbackStrategy:v="bestFit",fallbackAxisSideDirection:$="none",flipAlignment:x=!0,...w}=Zi(e,t);if((n=r.arrow)!=null&&n.alignmentOffset)return{};const S=Ji(s),k=Yr(c),T=Ji(c)===c,R=await(d.isRTL==null?void 0:d.isRTL(m.floating)),_=y||(T||!x?[Rx(c)]:Qse(c)),P=$!=="none";!y&&P&&_.push(...ere(c,x,$,R));const j=[c,..._],N=await d.detectOverflow(t,w),I=[];let z=((a=r.flip)==null?void 0:a.overflows)||[];if(f&&I.push(N[S]),p){const V=Yse(s,i,R);I.push(N[V[0]],N[V[1]])}if(z=[...z,{placement:s,overflows:I}],!I.every(V=>V<=0)){var E,L;const V=(((E=r.flip)==null?void 0:E.index)||0)+1,ne=j[V];if(ne&&(!(p==="alignment"?k!==Yr(ne):!1)||z.every(F=>Yr(F.placement)===k?F.overflows[0]>0:!0)))return{data:{index:V,overflows:z},reset:{placement:ne}};let q=(L=z.filter(M=>M.overflows[0]<=0).sort((M,F)=>M.overflows[1]-F.overflows[1])[0])==null?void 0:L.placement;if(!q)switch(v){case"bestFit":{var O;const M=(O=z.filter(F=>{if(P){const H=Yr(F.placement);return H===k||H==="y"}return!0}).map(F=>[F.placement,F.overflows.filter(H=>H>0).reduce((H,ee)=>H+ee,0)]).sort((F,H)=>F[1]-H[1])[0])==null?void 0:O[0];M&&(q=M);break}case"initialPlacement":q=c;break}if(s!==q)return{reset:{placement:q}}}return{}}}};function mO(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function pO(e){return Gse.some(t=>e[t]>=0)}const ire=function(e){return e===void 0&&(e={}),{name:"hide",options:e,async fn(t){const{rects:n,platform:a}=t,{strategy:s="referenceHidden",...r}=Zi(e,t);switch(s){case"referenceHidden":{const i=await a.detectOverflow(t,{...r,elementContext:"reference"}),c=mO(i,n.reference);return{data:{referenceHiddenOffsets:c,referenceHidden:pO(c)}}}case"escaped":{const i=await a.detectOverflow(t,{...r,altBoundary:!0}),c=mO(i,n.floating);return{data:{escapedOffsets:c,escaped:pO(c)}}}default:return{}}}}},YF=new Set(["left","top"]);async function lre(e,t){const{placement:n,platform:a,elements:s}=e,r=await(a.isRTL==null?void 0:a.isRTL(s.floating)),i=Ji(n),c=Ep(n),d=Yr(n)==="y",m=YF.has(i)?-1:1,f=r&&d?-1:1,p=Zi(t,e);let{mainAxis:y,crossAxis:v,alignmentAxis:$}=typeof p=="number"?{mainAxis:p,crossAxis:0,alignmentAxis:null}:{mainAxis:p.mainAxis||0,crossAxis:p.crossAxis||0,alignmentAxis:p.alignmentAxis};return c&&typeof $=="number"&&(v=c==="end"?$*-1:$),d?{x:v*f,y:y*m}:{x:y*m,y:v*f}}const cre=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){var n,a;const{x:s,y:r,placement:i,middlewareData:c}=t,d=await lre(t,e);return i===((n=c.offset)==null?void 0:n.placement)&&(a=c.arrow)!=null&&a.alignmentOffset?{}:{x:s+d.x,y:r+d.y,data:{...d,placement:i}}}}},dre=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:a,placement:s,platform:r}=t,{mainAxis:i=!0,crossAxis:c=!1,limiter:d={fn:S=>{let{x:k,y:T}=S;return{x:k,y:T}}},...m}=Zi(e,t),f={x:n,y:a},p=await r.detectOverflow(t,m),y=Yr(Ji(s)),v=g_(y);let $=f[v],x=f[y];if(i){const S=v==="y"?"top":"left",k=v==="y"?"bottom":"right",T=$+p[S],R=$-p[k];$=VT(T,$,R)}if(c){const S=y==="y"?"top":"left",k=y==="y"?"bottom":"right",T=x+p[S],R=x-p[k];x=VT(T,x,R)}const w=d.fn({...t,[v]:$,[y]:x});return{...w,data:{x:w.x-n,y:w.y-a,enabled:{[v]:i,[y]:c}}}}}},ure=function(e){return e===void 0&&(e={}),{options:e,fn(t){const{x:n,y:a,placement:s,rects:r,middlewareData:i}=t,{offset:c=0,mainAxis:d=!0,crossAxis:m=!0}=Zi(e,t),f={x:n,y:a},p=Yr(s),y=g_(p);let v=f[y],$=f[p];const x=Zi(c,t),w=typeof x=="number"?{mainAxis:x,crossAxis:0}:{mainAxis:0,crossAxis:0,...x};if(d){const T=y==="y"?"height":"width",R=r.reference[y]-r.floating[T]+w.mainAxis,_=r.reference[y]+r.reference[T]-w.mainAxis;v<R?v=R:v>_&&(v=_)}if(m){var S,k;const T=y==="y"?"width":"height",R=YF.has(Ji(s)),_=r.reference[p]-r.floating[T]+(R&&((S=i.offset)==null?void 0:S[p])||0)+(R?0:w.crossAxis),P=r.reference[p]+r.reference[T]+(R?0:((k=i.offset)==null?void 0:k[p])||0)-(R?w.crossAxis:0);$<_?$=_:$>P&&($=P)}return{[y]:v,[p]:$}}}},mre=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(t){var n,a;const{placement:s,rects:r,platform:i,elements:c}=t,{apply:d=()=>{},...m}=Zi(e,t),f=await i.detectOverflow(t,m),p=Ji(s),y=Ep(s),v=Yr(s)==="y",{width:$,height:x}=r.floating;let w,S;p==="top"||p==="bottom"?(w=p,S=y===(await(i.isRTL==null?void 0:i.isRTL(c.floating))?"start":"end")?"left":"right"):(S=p,w=y==="end"?"top":"bottom");const k=x-f.top-f.bottom,T=$-f.left-f.right,R=wc(x-f[w],k),_=wc($-f[S],T),P=!t.middlewareData.shift;let j=R,N=_;if((n=t.middlewareData.shift)!=null&&n.enabled.x&&(N=T),(a=t.middlewareData.shift)!=null&&a.enabled.y&&(j=k),P&&!y){const z=Vo(f.left,0),E=Vo(f.right,0),L=Vo(f.top,0),O=Vo(f.bottom,0);v?N=$-2*(z!==0||E!==0?z+E:Vo(f.left,f.right)):j=x-2*(L!==0||O!==0?L+O:Vo(f.top,f.bottom))}await d({...t,availableWidth:N,availableHeight:j});const I=await i.getDimensions(c.floating);return $!==I.width||x!==I.height?{reset:{rects:!0}}:{}}}};function tw(){return typeof window<"u"}function Ip(e){return QF(e)?(e.nodeName||"").toLowerCase():"#document"}function Jo(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function ui(e){var t;return(t=(QF(e)?e.ownerDocument:e.document)||window.document)==null?void 0:t.documentElement}function QF(e){return tw()?e instanceof Node||e instanceof Jo(e).Node:!1}function mr(e){return tw()?e instanceof Element||e instanceof Jo(e).Element:!1}function dl(e){return tw()?e instanceof HTMLElement||e instanceof Jo(e).HTMLElement:!1}function fO(e){return!tw()||typeof ShadowRoot>"u"?!1:e instanceof ShadowRoot||e instanceof Jo(e).ShadowRoot}function qh(e){const{overflow:t,overflowX:n,overflowY:a,display:s}=pr(e);return/auto|scroll|overlay|hidden|clip/.test(t+a+n)&&s!=="inline"&&s!=="contents"}function pre(e){return/^(table|td|th)$/.test(Ip(e))}function nw(e){try{if(e.matches(":popover-open"))return!0}catch{}try{return e.matches(":modal")}catch{return!1}}const fre=/transform|translate|scale|rotate|perspective|filter/,gre=/paint|layout|strict|content/,md=e=>!!e&&e!=="none";let b1;function v_(e){const t=mr(e)?pr(e):e;return md(t.transform)||md(t.translate)||md(t.scale)||md(t.rotate)||md(t.perspective)||!b_()&&(md(t.backdropFilter)||md(t.filter))||fre.test(t.willChange||"")||gre.test(t.contain||"")}function hre(e){let t=kc(e);for(;dl(t)&&!pp(t);){if(v_(t))return t;if(nw(t))return null;t=kc(t)}return null}function b_(){return b1==null&&(b1=typeof CSS<"u"&&CSS.supports&&CSS.supports("-webkit-backdrop-filter","none")),b1}function pp(e){return/^(html|body|#document)$/.test(Ip(e))}function pr(e){return Jo(e).getComputedStyle(e)}function aw(e){return mr(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function kc(e){if(Ip(e)==="html")return e;const t=e.assignedSlot||e.parentNode||fO(e)&&e.host||ui(e);return fO(t)?t.host:t}function XF(e){const t=kc(e);return pp(t)?e.ownerDocument?e.ownerDocument.body:e.body:dl(t)&&qh(t)?t:XF(t)}function Qg(e,t,n){var a;t===void 0&&(t=[]),n===void 0&&(n=!0);const s=XF(e),r=s===((a=e.ownerDocument)==null?void 0:a.body),i=Jo(s);if(r){const c=GT(i);
vendor: 7,201 bytes, line 172
172return t.concat(i,i.visualViewport||[],qh(s)?s:[],c&&n?Qg(c):[])}else return t.concat(s,Qg(s,[],n))}function GT(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function ZF(e){const t=pr(e);let n=parseFloat(t.width)||0,a=parseFloat(t.height)||0;const s=dl(e),r=s?e.offsetWidth:n,i=s?e.offsetHeight:a,c=Tx(n)!==r||Tx(a)!==i;return c&&(n=r,a=i),{width:n,height:a,$:c}}function x_(e){return mr(e)?e:e.contextElement}function Fm(e){const t=x_(e);if(!dl(t))return ei(1);const n=t.getBoundingClientRect(),{width:a,height:s,$:r}=ZF(t);let i=(r?Tx(n.width):n.width)/a,c=(r?Tx(n.height):n.height)/s;return(!i||!Number.isFinite(i))&&(i=1),(!c||!Number.isFinite(c))&&(c=1),{x:i,y:c}}const yre=ei(0);function JF(e){const t=Jo(e);return!b_()||!t.visualViewport?yre:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function vre(e,t,n){return t===void 0&&(t=!1),!n||t&&n!==Jo(e)?!1:t}function Qd(e,t,n,a){t===void 0&&(t=!1),n===void 0&&(n=!1);const s=e.getBoundingClientRect(),r=x_(e);let i=ei(1);t&&(a?mr(a)&&(i=Fm(a)):i=Fm(e));const c=vre(r,n,a)?JF(r):ei(0);let d=(s.left+c.x)/i.x,m=(s.top+c.y)/i.y,f=s.width/i.x,p=s.height/i.y;if(r){const y=Jo(r),v=a&&mr(a)?Jo(a):a;let $=y,x=GT($);for(;x&&a&&v!==$;){const w=Fm(x),S=x.getBoundingClientRect(),k=pr(x),T=S.left+(x.clientLeft+parseFloat(k.paddingLeft))*w.x,R=S.top+(x.clientTop+parseFloat(k.paddingTop))*w.y;d*=w.x,m*=w.y,f*=w.x,p*=w.y,d+=T,m+=R,$=Jo(x),x=GT($)}}return Px({width:f,height:p,x:d,y:m})}function ow(e,t){const n=aw(e).scrollLeft;return t?t.left+n:Qd(ui(e)).left+n}function ez(e,t){const n=e.getBoundingClientRect(),a=n.left+t.scrollLeft-ow(e,n),s=n.top+t.scrollTop;return{x:a,y:s}}function bre(e){let{elements:t,rect:n,offsetParent:a,strategy:s}=e;const r=s==="fixed",i=ui(a),c=t?nw(t.floating):!1;if(a===i||c&&r)return n;let d={scrollLeft:0,scrollTop:0},m=ei(1);const f=ei(0),p=dl(a);if((p||!p&&!r)&&((Ip(a)!=="body"||qh(i))&&(d=aw(a)),p)){const v=Qd(a);m=Fm(a),f.x=v.x+a.clientLeft,f.y=v.y+a.clientTop}const y=i&&!p&&!r?ez(i,d):ei(0);return{width:n.width*m.x,height:n.height*m.y,x:n.x*m.x-d.scrollLeft*m.x+f.x+y.x,y:n.y*m.y-d.scrollTop*m.y+f.y+y.y}}function xre(e){return Array.from(e.getClientRects())}function $re(e){const t=ui(e),n=aw(e),a=e.ownerDocument.body,s=Vo(t.scrollWidth,t.clientWidth,a.scrollWidth,a.clientWidth),r=Vo(t.scrollHeight,t.clientHeight,a.scrollHeight,a.clientHeight);let i=-n.scrollLeft+ow(e);const c=-n.scrollTop;return pr(a).direction==="rtl"&&(i+=Vo(t.clientWidth,a.clientWidth)-s),{width:s,height:r,x:i,y:c}}const gO=25;function wre(e,t){const n=Jo(e),a=ui(e),s=n.visualViewport;let r=a.clientWidth,i=a.clientHeight,c=0,d=0;if(s){r=s.width,i=s.height;const f=b_();(!f||f&&t==="fixed")&&(c=s.offsetLeft,d=s.offsetTop)}const m=ow(a);if(m<=0){const f=a.ownerDocument,p=f.body,y=getComputedStyle(p),v=f.compatMode==="CSS1Compat"&&parseFloat(y.marginLeft)+parseFloat(y.marginRight)||0,$=Math.abs(a.clientWidth-p.clientWidth-v);$<=gO&&(r-=$)}else m<=gO&&(r+=m);return{width:r,height:i,x:c,y:d}}function kre(e,t){const n=Qd(e,!0,t==="fixed"),a=n.top+e.clientTop,s=n.left+e.clientLeft,r=dl(e)?Fm(e):ei(1),i=e.clientWidth*r.x,c=e.clientHeight*r.y,d=s*r.x,m=a*r.y;return{width:i,height:c,x:d,y:m}}function hO(e,t,n){let a;if(t==="viewport")a=wre(e,n);else if(t==="document")a=$re(ui(e));else if(mr(t))a=kre(t,n);else{const s=JF(e);a={x:t.x-s.x,y:t.y-s.y,width:t.width,height:t.height}}return Px(a)}function tz(e,t){const n=kc(e);return n===t||!mr(n)||pp(n)?!1:pr(n).position==="fixed"||tz(n,t)}function Cre(e,t){const n=t.get(e);if(n)return n;let a=Qg(e,[],!1).filter(c=>mr(c)&&Ip(c)!=="body"),s=null;const r=pr(e).position==="fixed";let i=r?kc(e):e;for(;mr(i)&&!pp(i);){const c=pr(i),d=v_(i);!d&&c.position==="fixed"&&(s=null),(r?!d&&!s:!d&&c.position==="static"&&!!s&&(s.position==="absolute"||s.position==="fixed")||qh(i)&&!d&&tz(e,i))?a=a.filter(f=>f!==i):s=c,i=kc(i)}return t.set(e,a),a}function Sre(e){let{element:t,boundary:n,rootBoundary:a,strategy:s}=e;const i=[...n==="clippingAncestors"?nw(t)?[]:Cre(t,this._c):[].concat(n),a],c=hO(t,i[0],s);let d=c.top,m=c.right,f=c.bottom,p=c.left;for(let y=1;y<i.length;y++){const v=hO(t,i[y],s);d=Vo(v.top,d),m=wc(v.right,m),f=wc(v.bottom,f),p=Vo(v.left,p)}return{width:m-p,height:f-d,x:p,y:d}}function Are(e){const{width:t,height:n}=ZF(e);return{width:t,height:n}}function Tre(e,t,n){const a=dl(t),s=ui(t),r=n==="fixed",i=Qd(e,!0,r,t);let c={scrollLeft:0,scrollTop:0};const d=ei(0);function m(){d.x=ow(s)}if(a||!a&&!r)if((Ip(t)!=="body"||qh(s))&&(c=aw(t)),a){const v=Qd(t,!0,r,t);d.x=v.x+t.clientLeft,d.y=v.y+t.clientTop}else s&&m();r&&!a&&s&&m();const f=s&&!a&&!r?ez(s,c):ei(0),p=i.left+c.scrollLeft-d.x-f.x,y=i.top+c.scrollTop-d.y-f.y;return{x:p,y,width:i.width,height:i.height}}function x1(e){return pr(e).position==="static"}function yO(e,t){if(!dl(e)||pr(e).position==="fixed")return null;if(t)return t(e);let n=e.offsetParent;return ui(e)===n&&(n=n.ownerDocument.body),n}function nz(e,t){const n=Jo(e);if(nw(e))return n;if(!dl(e)){let s=kc(e);for(;s&&!pp(s);){if(mr(s)&&!x1(s))return s;s=kc(s)}return n}let a=yO(e,t);for(;a&&pre(a)&&x1(a);)a=yO(a,t);return a&&pp(a)&&x1(a)&&!v_(a)?n:a||hre(e)||n}const Rre=async function(e){const t=this.getOffsetParent||nz,n=this.getDimensions,a=await n(e.floating);return{reference:Tre(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:a.width,height:a.height}}};function Pre(e){return pr(e).direction==="rtl"}const _re={convertOffsetParentRelativeRectToViewportRelativeRect:bre,getDocumentElement:ui,getClippingRect:Sre,getOffsetParent:nz,getElementRects:Rre,getClientRects:xre,getDimensions:Are,getScale:Fm,isElement:mr,isRTL:Pre};function az(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function jre(e,t){let n=null,a;const s=ui(e);function r(){var c;clearTimeout(a),(c=n)==null||c.disconnect(),n=null}function i(c,d){c===void 0&&(c=!1),d===void 0&&(d=1),r();const m=e.getBoundingClientRect(),{left:f,top:p,width:y,height:v}=m;if(c||t(),!y||!v)return;const $=Jv(p),x=Jv(s.clientWidth-(f+y)),w=Jv(s.clientHeight-(p+v)),S=Jv(f),T={rootMargin:-$+"px "+-x+"px "+-w+"px "+-S+"px",threshold:Vo(0,wc(1,d))||1};let R=!0;function _(P){const j=P[0].intersectionRatio;if(j!==d){if(!R)return i();j?i(!1,j):a=setTimeout(()=>{i(!1,1e-7)},1e3)}j===1&&!az(m,e.getBoundingClientRect())&&i(),R=!1}try{n=new IntersectionObserver(_,{...T,root:s.ownerDocument})}catch{n=new IntersectionObserver(_,T)}n.observe(e)}return i(!0),r}function Nre(e,t,n,a){a===void 0&&(a={});const{ancestorScroll:s=!0,ancestorResize:r=!0,elementResize:i=typeof ResizeObserver=="function",layoutShift:c=typeof IntersectionObserver=="function",animationFrame:d=!1}=a,m=x_(e),f=s||r?[...m?Qg(m):[],...t?Qg(t):[]]:[];f.forEach(S=>{s&&S.addEventListener("scroll",n,{passive:!0}),r&&S.addEventListener("resize",n)});const p=m&&c?jre(m,n):null;let y=-1,v=null;i&&(v=new ResizeObserver(S=>{let[k]=S;k&&k.target===m&&v&&t&&(v.unobserve(t),cancelAnimationFrame(y),y=requestAnimationFrame(()=>{var T;(T=v)==null||T.observe(t)})),n()}),m&&!d&&v.observe(m),t&&v.observe(t));let $,x=d?Qd(e):null;d&&w();function w(){const S=Qd(e);x&&!az(x,S)&&n(),x=S,$=requestAnimationFrame(w)}return n(),()=>{var S;f.forEach(k=>
vendor: 3,157 bytes, line 172
172{s&&k.removeEventListener("scroll",n),r&&k.removeEventListener("resize",n)}),p?.(),(S=v)==null||S.disconnect(),v=null,d&&cancelAnimationFrame($)}}const Dre=cre,Mre=dre,Ere=rre,Ire=mre,Ore=ire,vO=sre,Lre=ure,Ure=(e,t,n)=>{const a=new Map,s={platform:_re,...n},r={...s.platform,_c:a};return ore(e,t,{...s,platform:r})};var Bre=typeof document<"u",Fre=function(){},Qb=Bre?h.useLayoutEffect:Fre;function _x(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(typeof e=="function"&&e.toString()===t.toString())return!0;let n,a,s;if(e&&t&&typeof e=="object"){if(Array.isArray(e)){if(n=e.length,n!==t.length)return!1;for(a=n;a--!==0;)if(!_x(e[a],t[a]))return!1;return!0}if(s=Object.keys(e),n=s.length,n!==Object.keys(t).length)return!1;for(a=n;a--!==0;)if(!{}.hasOwnProperty.call(t,s[a]))return!1;for(a=n;a--!==0;){const r=s[a];if(!(r==="_owner"&&e.$$typeof)&&!_x(e[r],t[r]))return!1}return!0}return e!==e&&t!==t}function oz(e){return typeof window>"u"?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function bO(e,t){const n=oz(e);return Math.round(t*n)/n}function $1(e){const t=h.useRef(e);return Qb(()=>{t.current=e}),t}function zre(e){e===void 0&&(e={});const{placement:t="bottom",strategy:n="absolute",middleware:a=[],platform:s,elements:{reference:r,floating:i}={},transform:c=!0,whileElementsMounted:d,open:m}=e,[f,p]=h.useState({x:0,y:0,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[y,v]=h.useState(a);_x(y,a)||v(a);const[$,x]=h.useState(null),[w,S]=h.useState(null),k=h.useCallback(F=>{F!==P.current&&(P.current=F,x(F))},[]),T=h.useCallback(F=>{F!==j.current&&(j.current=F,S(F))},[]),R=r||$,_=i||w,P=h.useRef(null),j=h.useRef(null),N=h.useRef(f),I=d!=null,z=$1(d),E=$1(s),L=$1(m),O=h.useCallback(()=>{if(!P.current||!j.current)return;const F={placement:t,strategy:n,middleware:y};E.current&&(F.platform=E.current),Ure(P.current,j.current,F).then(H=>{const ee={...H,isPositioned:L.current!==!1};V.current&&!_x(N.current,ee)&&(N.current=ee,li.flushSync(()=>{p(ee)}))})},[y,t,n,E,L]);Qb(()=>{m===!1&&N.current.isPositioned&&(N.current.isPositioned=!1,p(F=>({...F,isPositioned:!1})))},[m]);const V=h.useRef(!1);Qb(()=>(V.current=!0,()=>{V.current=!1}),[]),Qb(()=>{if(R&&(P.current=R),_&&(j.current=_),R&&_){if(z.current)return z.current(R,_,O);O()}},[R,_,O,z,I]);const ne=h.useMemo(()=>({reference:P,floating:j,setReference:k,setFloating:T}),[k,T]),q=h.useMemo(()=>({reference:R,floating:_}),[R,_]),M=h.useMemo(()=>{const F={position:n,left:0,top:0};if(!q.floating)return F;const H=bO(q.floating,f.x),ee=bO(q.floating,f.y);return c?{...F,transform:"translate("+H+"px, "+ee+"px)",...oz(q.floating)>=1.5&&{willChange:"transform"}}:{position:n,left:H,top:ee}},[n,c,q.floating,f.x,f.y]);return h.useMemo(()=>({...f,update:O,refs:ne,elements:q,floatingStyles:M}),[f,O,ne,q,M])}const qre=e=>{function t(n){return{}.hasOwnProperty.call(n,"current")}return{name:"arrow",options:e,fn(n){const{element:a,padding:s}=typeof e=="function"?e(n):e;return a&&t(a)?a.current!=null?vO({element:a.current,padding:s}).fn(n):{}:a?vO({element:a,padding:s}).fn(n):{}}}},Hre=(e,t)=>{const n=Dre(e);return{name:n.name,fn:n.fn,options:[e,t]}},Vre=(e,t)=>
vendor: 10,728 bytes, line 172
172{const n=Mre(e);return{name:n.name,fn:n.fn,options:[e,t]}},Kre=(e,t)=>({fn:Lre(e).fn,options:[e,t]}),Gre=(e,t)=>{const n=Ere(e);return{name:n.name,fn:n.fn,options:[e,t]}},Wre=(e,t)=>{const n=Ire(e);return{name:n.name,fn:n.fn,options:[e,t]}},Yre=(e,t)=>{const n=Ore(e);return{name:n.name,fn:n.fn,options:[e,t]}},Qre=(e,t)=>{const n=qre(e);return{name:n.name,fn:n.fn,options:[e,t]}};var Xre="Arrow",sz=h.forwardRef((e,t)=>{const{children:n,width:a=10,height:s=5,...r}=e;return o.jsx(st.svg,{...r,ref:t,width:a,height:s,viewBox:"0 0 30 10",preserveAspectRatio:"none",children:e.asChild?n:o.jsx("polygon",{points:"0,0 30,0 15,10"})})});sz.displayName=Xre;var Zre=sz;function rz(e){const[t,n]=h.useState(void 0);return Ra(()=>{if(e){n({width:e.offsetWidth,height:e.offsetHeight});const a=new ResizeObserver(s=>{if(!Array.isArray(s)||!s.length)return;const r=s[0];let i,c;if("borderBoxSize"in r){const d=r.borderBoxSize,m=Array.isArray(d)?d[0]:d;i=m.inlineSize,c=m.blockSize}else i=e.offsetWidth,c=e.offsetHeight;n({width:i,height:c})});return a.observe(e,{box:"border-box"}),()=>a.unobserve(e)}else n(void 0)},[e]),t}var $_="Popper",[iz,mi]=so($_),[Jre,lz]=iz($_),cz=e=>{const{__scopePopper:t,children:n}=e,[a,s]=h.useState(null);return o.jsx(Jre,{scope:t,anchor:a,onAnchorChange:s,children:n})};cz.displayName=$_;var dz="PopperAnchor",uz=h.forwardRef((e,t)=>{const{__scopePopper:n,virtualRef:a,...s}=e,r=lz(dz,n),i=h.useRef(null),c=vt(t,i),d=h.useRef(null);return h.useEffect(()=>{const m=d.current;d.current=a?.current||i.current,m!==d.current&&r.onAnchorChange(d.current)}),a?null:o.jsx(st.div,{...s,ref:c})});uz.displayName=dz;var w_="PopperContent",[eie,tie]=iz(w_),mz=h.forwardRef((e,t)=>{const{__scopePopper:n,side:a="bottom",sideOffset:s=0,align:r="center",alignOffset:i=0,arrowPadding:c=0,avoidCollisions:d=!0,collisionBoundary:m=[],collisionPadding:f=0,sticky:p="partial",hideWhenDetached:y=!1,updatePositionStrategy:v="optimized",onPlaced:$,...x}=e,w=lz(w_,n),[S,k]=h.useState(null),T=vt(t,se=>k(se)),[R,_]=h.useState(null),P=rz(R),j=P?.width??0,N=P?.height??0,I=a+(r!=="center"?"-"+r:""),z=typeof f=="number"?f:{top:0,right:0,bottom:0,left:0,...f},E=Array.isArray(m)?m:[m],L=E.length>0,O={padding:z,boundary:E.filter(aie),altBoundary:L},{refs:V,floatingStyles:ne,placement:q,isPositioned:M,middlewareData:F}=zre({strategy:"fixed",placement:I,whileElementsMounted:(...se)=>Nre(...se,{animationFrame:v==="always"}),elements:{reference:w.anchor},middleware:[Hre({mainAxis:s+N,alignmentAxis:i}),d&&Vre({mainAxis:!0,crossAxis:!1,limiter:p==="partial"?Kre():void 0,...O}),d&&Gre({...O}),Wre({...O,apply:({elements:se,rects:we,availableWidth:me,availableHeight:ye})=>{const{width:_e,height:ae}=we.reference,Je=se.floating.style;Je.setProperty("--radix-popper-available-width",`${me}px`),Je.setProperty("--radix-popper-available-height",`${ye}px`),Je.setProperty("--radix-popper-anchor-width",`${_e}px`),Je.setProperty("--radix-popper-anchor-height",`${ae}px`)}}),R&&Qre({element:R,padding:c}),oie({arrowWidth:j,arrowHeight:N}),y&&Yre({strategy:"referenceHidden",...O})]}),[H,ee]=gz(q),B=oi($);Ra(()=>{M&&B?.()},[M,B]);const G=F.arrow?.x,Q=F.arrow?.y,de=F.arrow?.centerOffset!==0,[Y,pe]=h.useState();return Ra(()=>{S&&pe(window.getComputedStyle(S).zIndex)},[S]),o.jsx("div",{ref:V.setFloating,"data-radix-popper-content-wrapper":"",style:{...ne,transform:M?ne.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:Y,"--radix-popper-transform-origin":[F.transformOrigin?.x,F.transformOrigin?.y].join(" "),...F.hide?.referenceHidden&&{visibility:"hidden",pointerEvents:"none"}},dir:e.dir,children:o.jsx(eie,{scope:n,placedSide:H,onArrowChange:_,arrowX:G,arrowY:Q,shouldHideArrow:de,children:o.jsx(st.div,{"data-side":H,"data-align":ee,...x,ref:T,style:{...x.style,animation:M?void 0:"none"}})})})});mz.displayName=w_;var pz="PopperArrow",nie={top:"bottom",right:"left",bottom:"top",left:"right"},fz=h.forwardRef(function(t,n){const{__scopePopper:a,...s}=t,r=tie(pz,a),i=nie[r.placedSide];return o.jsx("span",{ref:r.onArrowChange,style:{position:"absolute",left:r.arrowX,top:r.arrowY,[i]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[r.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[r.placedSide],visibility:r.shouldHideArrow?"hidden":void 0},children:o.jsx(Zre,{...s,ref:n,style:{...s.style,display:"block"}})})});fz.displayName=pz;function aie(e){return e!==null}var oie=e=>({name:"transformOrigin",options:e,fn(t){const{placement:n,rects:a,middlewareData:s}=t,i=s.arrow?.centerOffset!==0,c=i?0:e.arrowWidth,d=i?0:e.arrowHeight,[m,f]=gz(n),p={start:"0%",center:"50%",end:"100%"}[f],y=(s.arrow?.x??0)+c/2,v=(s.arrow?.y??0)+d/2;let $="",x="";return m==="bottom"?($=i?p:`${y}px`,x=`${-d}px`):m==="top"?($=i?p:`${y}px`,x=`${a.floating.height+d}px`):m==="right"?($=`${-d}px`,x=i?p:`${v}px`):m==="left"&&($=`${a.floating.width+d}px`,x=i?p:`${v}px`),{data:{x:$,y:x}}}});function gz(e){const[t,n="center"]=e.split("-");return[t,n]}var Hh=cz,Op=uz,Vh=mz,Kh=fz,sie="Portal",pu=h.forwardRef((e,t)=>{const{container:n,...a}=e,[s,r]=h.useState(!1);Ra(()=>r(!0),[]);const i=n||s&&globalThis?.document?.body;return i?iF.createPortal(o.jsx(st.div,{...a,ref:t}),i):null});pu.displayName=sie;function rie(e,t){return h.useReducer((n,a)=>t[n][a]??n,e)}var za=e=>{const{present:t,children:n}=e,a=iie(t),s=typeof n=="function"?n({present:a.isPresent}):h.Children.only(n),r=vt(a.ref,lie(s));return typeof n=="function"||a.isPresent?h.cloneElement(s,{ref:r}):null};za.displayName="Presence";function iie(e){const[t,n]=h.useState(),a=h.useRef(null),s=h.useRef(e),r=h.useRef("none"),i=e?"mounted":"unmounted",[c,d]=rie(i,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return h.useEffect(()=>{const m=eb(a.current);r.current=c==="mounted"?m:"none"},[c]),Ra(()=>{const m=a.current,f=s.current;if(f!==e){const y=r.current,v=eb(m);e?d("MOUNT"):v==="none"||m?.display==="none"?d("UNMOUNT"):d(f&&y!==v?"ANIMATION_OUT":"UNMOUNT"),s.current=e}},[e,d]),Ra(()=>{if(t){let m;const f=t.ownerDocument.defaultView??window,p=v=>{const x=eb(a.current).includes(CSS.escape(v.animationName));if(v.target===t&&x&&(d("ANIMATION_END"),!s.current)){const w=t.style.animationFillMode;t.style.animationFillMode="forwards",m=f.setTimeout(()=>{t.style.animationFillMode==="forwards"&&(t.style.animationFillMode=w)})}},y=v=>{v.target===t&&(r.current=eb(a.current))};return t.addEventListener("animationstart",y),t.addEventListener("animationcancel",p),t.addEventListener("animationend",p),()=>{f.clearTimeout(m),t.removeEventListener("animationstart",y),t.removeEventListener("animationcancel",p),t.removeEventListener("animationend",p)}}else d("ANIMATION_END")},[t,d]),{isPresent:["mounted","unmountSuspended"].includes(c),ref:h.useCallback(m=>{a.current=m?getComputedStyle(m):null,n(m)},[])}}function eb(e){return e?.animationName||"none"}function lie(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var cie=Symbol("radix.slottable");function die(e){const t=({children:n})=>o.jsx(o.Fragment,{children:n});return t.displayName=`${e}.Slottable`,t.__radixId=cie,t}var uie=Lh[" useInsertionEffect ".trim().toString()]||Ra;function ts({prop:e,defaultProp:t,onChange:n=()=>{},caller:a}){const[s,r,i]=mie({defaultProp:t,onChange:n}),c=e!==void 0,d=c?e:s;{const f=h.useRef(e!==void 0);h.useEffect(()=>{const p=f.current;p!==c&&console.warn(`${a} is changing from ${p?"controlled":"uncontrolled"} to ${c?"controlled":"uncontrolled"}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),f.current=c},[c,a])}const m=h.useCallback(f=>{if(c){const p=pie(f)?f(e):f;p!==e&&i.current?.(p)}else r(f)},[c,e,r,i]);return[d,m]}function mie({defaultProp:e,onChange:t}){const[n,a]=h.useState(e),s=h.useRef(n),r=h.useRef(t);return uie(()=>{r.current=t},[t]),h.useEffect(()=>{s.current!==n&&(r.current?.(n),s.current=n)},[n,s]),[n,a,r]}function pie(e){return typeof e=="function"}var hz=Object.freeze({position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal"}),fie="VisuallyHidden",yz=h.forwardRef((e,t)=>o.jsx(st.span,{...e,ref:t,style:{...hz,...e.style}}));yz.displayName=fie;var gie=yz,[sw]=so("Tooltip",[mi]),rw=mi(),vz="TooltipProvider",hie=700,WT="tooltip.open",[yie,k_]=sw(vz),bz=e=>{const{__scopeTooltip:t,delayDuration:n=hie,skipDelayDuration:a=300,disableHoverableContent:s=!1,children:r}=e,i=h.useRef(!0),c=h.useRef(!1),d=h.useRef(0);return h.useEffect(()=>{const m=d.current;return()=>window.clearTimeout(m)},[]),o.jsx(yie,{scope:t,isOpenDelayedRef:i,delayDuration:n,onOpen:h.useCallback(()=>{window.clearTimeout(d.current),i.current=!1},[]),onClose:h.useCallback(()=>{window.clearTimeout(d.current),d.current=window.setTimeout(()=>i.current=!0,a)},[a]),isPointerInTransitRef:c,onPointerInTransitChange:h.useCallback(m=>{c.current=m},[]),disableHoverableContent:s,children:r})};bz.displayName=vz;var Xg="Tooltip",[vie,Gh]=sw(Xg),xz=e=>{const{__scopeTooltip:t,children:n,open:a,defaultOpen:s,onOpenChange:r,disableHoverableContent:i,delayDuration:c}=e,d=k_(Xg,e.__scopeTooltip),m=rw(t),[f,p]=h.useState(null),y=To(),v=h.useRef(0),$=i??d.disableHoverableContent,x=c??d.delayDuration,w=h.useRef(!1),[S,k]=ts({prop:a,defaultProp:s??!1,onChange:j=>{j?(d.onOpen(),document.dispatchEvent(new CustomEvent(WT))):d.onClose(),r?.(j)},caller:Xg}),T=h.useMemo(()=>S?w.current?"delayed-open":"instant-open":"closed",[S]),R=h.useCallback(()=>{window.clearTimeout(v.current),v.current=0,w.current=!1,k(!0)},[k]),_=h.useCallback(()=>{window.clearTimeout(v.current),v.current=0,k(!1)},[k]),P=h.useCallback(()=>{window.clearTimeout(v.current),v.current=window.setTimeout(()=>{w.current=!0,k(!0),v.current=0},x)},[x,k]);return h.useEffect(()=>()=>{v.current&&(window.clearTimeout(v.current),v.current=0)},[]),o.jsx(Hh,{...m,children:o.jsx(vie,{scope:t,contentId:y,open:S,stateAttribute:T,trigger:f,onTriggerChange:p,onTriggerEnter:h.useCallback(()=>{d.isOpenDelayedRef.current?P():R()},[d.isOpenDelayedRef,P,R]),onTriggerLeave:h.useCallback(()=>{$?_():(window.clearTimeout(v.current),v.current=0)},[_,$]),onOpen:R,onClose:_,disableHoverableContent:$,children:n})})};xz.displayName=Xg;var YT="TooltipTrigger",$z=h.forwardRef((e,t)=>
vendor: 4,455 bytes, line 172
172{const{__scopeTooltip:n,...a}=e,s=Gh(YT,n),r=k_(YT,n),i=rw(n),c=h.useRef(null),d=vt(t,c,s.onTriggerChange),m=h.useRef(!1),f=h.useRef(!1),p=h.useCallback(()=>m.current=!1,[]);return h.useEffect(()=>()=>document.removeEventListener("pointerup",p),[p]),o.jsx(Op,{asChild:!0,...i,children:o.jsx(st.button,{"aria-describedby":s.open?s.contentId:void 0,"data-state":s.stateAttribute,...a,ref:d,onPointerMove:je(e.onPointerMove,y=>{y.pointerType!=="touch"&&!f.current&&!r.isPointerInTransitRef.current&&(s.onTriggerEnter(),f.current=!0)}),onPointerLeave:je(e.onPointerLeave,()=>{s.onTriggerLeave(),f.current=!1}),onPointerDown:je(e.onPointerDown,()=>{s.open&&s.onClose(),m.current=!0,document.addEventListener("pointerup",p,{once:!0})}),onFocus:je(e.onFocus,()=>{m.current||s.onOpen()}),onBlur:je(e.onBlur,s.onClose),onClick:je(e.onClick,s.onClose)})})});$z.displayName=YT;var C_="TooltipPortal",[bie,xie]=sw(C_,{forceMount:void 0}),wz=e=>{const{__scopeTooltip:t,forceMount:n,children:a,container:s}=e,r=Gh(C_,t);return o.jsx(bie,{scope:t,forceMount:n,children:o.jsx(za,{present:n||r.open,children:o.jsx(pu,{asChild:!0,container:s,children:a})})})};wz.displayName=C_;var fp="TooltipContent",kz=h.forwardRef((e,t)=>{const n=xie(fp,e.__scopeTooltip),{forceMount:a=n.forceMount,side:s="top",...r}=e,i=Gh(fp,e.__scopeTooltip);return o.jsx(za,{present:a||i.open,children:i.disableHoverableContent?o.jsx(Cz,{side:s,...r,ref:t}):o.jsx($ie,{side:s,...r,ref:t})})}),$ie=h.forwardRef((e,t)=>{const n=Gh(fp,e.__scopeTooltip),a=k_(fp,e.__scopeTooltip),s=h.useRef(null),r=vt(t,s),[i,c]=h.useState(null),{trigger:d,onClose:m}=n,f=s.current,{onPointerInTransitChange:p}=a,y=h.useCallback(()=>{c(null),p(!1)},[p]),v=h.useCallback(($,x)=>{const w=$.currentTarget,S={x:$.clientX,y:$.clientY},k=Aie(S,w.getBoundingClientRect()),T=Tie(S,k),R=Rie(x.getBoundingClientRect()),_=_ie([...T,...R]);c(_),p(!0)},[p]);return h.useEffect(()=>()=>y(),[y]),h.useEffect(()=>{if(d&&f){const $=w=>v(w,f),x=w=>v(w,d);return d.addEventListener("pointerleave",$),f.addEventListener("pointerleave",x),()=>{d.removeEventListener("pointerleave",$),f.removeEventListener("pointerleave",x)}}},[d,f,v,y]),h.useEffect(()=>{if(i){const $=x=>{const w=x.target,S={x:x.clientX,y:x.clientY},k=d?.contains(w)||f?.contains(w),T=!Pie(S,i);k?y():T&&(y(),m())};return document.addEventListener("pointermove",$),()=>document.removeEventListener("pointermove",$)}},[d,f,i,m,y]),o.jsx(Cz,{...e,ref:r})}),[wie,kie]=sw(Xg,{isInside:!1}),Cie=die("TooltipContent"),Cz=h.forwardRef((e,t)=>{const{__scopeTooltip:n,children:a,"aria-label":s,onEscapeKeyDown:r,onPointerDownOutside:i,...c}=e,d=Gh(fp,n),m=rw(n),{onClose:f}=d;return h.useEffect(()=>(document.addEventListener(WT,f),()=>document.removeEventListener(WT,f)),[f]),h.useEffect(()=>{if(d.trigger){const p=y=>{y.target?.contains(d.trigger)&&f()};return window.addEventListener("scroll",p,{capture:!0}),()=>window.removeEventListener("scroll",p,{capture:!0})}},[d.trigger,f]),o.jsx(mu,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:r,onPointerDownOutside:i,onFocusOutside:p=>p.preventDefault(),onDismiss:f,children:o.jsxs(Vh,{"data-state":d.stateAttribute,...m,...c,ref:t,style:{...c.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"},children:[o.jsx(Cie,{children:a}),o.jsx(wie,{scope:n,isInside:!0,children:o.jsx(gie,{id:d.contentId,role:"tooltip",children:s||a})})]})})});kz.displayName=fp;var Sz="TooltipArrow",Sie=h.forwardRef((e,t)=>{const{__scopeTooltip:n,...a}=e,s=rw(n);return kie(Sz,n).isInside?null:o.jsx(Kh,{...s,...a,ref:t})});Sie.displayName=Sz;function Aie(e,t){const n=Math.abs(t.top-e.y),a=Math.abs(t.bottom-e.y),s=Math.abs(t.right-e.x),r=Math.abs(t.left-e.x);switch(Math.min(n,a,s,r)){case r:return"left";case s:return"right";case n:return"top";case a:return"bottom";default:throw new Error("unreachable")}}function Tie(e,t,n=5){const a=[];switch(t){case"top":a.push({x:e.x-n,y:e.y+n},{x:e.x+n,y:e.y+n});break;case"bottom":a.push({x:e.x-n,y:e.y-n},{x:e.x+n,y:e.y-n});break;case"left":a.push({x:e.x+n,y:e.y-n},{x:e.x+n,y:e.y+n});break;case"right":a.push({x:e.x-n,y:e.y-n},{x:e.x-n,y:e.y+n});break}return a}
172function Rie(e){const{top:t,right:n,bottom:a,left:s}=e;return[{x:s,y:t},{x:n,y:t},{x:n,y:a},{x:s,y:a}]}function Pie(e,t){const{x:n,y:a}=e;let s=!1;for(let r=0,i=t.length-1;r<t.length;i=r++){const c=t[r],d=t[i],m=c.x,f=c.y,p=d.x,y=d.y;f>a!=y>a&&n<(p-m)*(a-f)/(y-f)+m&&(s=!s)}return s}function _ie(e){const t=e.slice();return t.sort((n,a)=>n.x<a.x?-1:n.x>a.x?1:n.y<a.y?-1:n.y>a.y?1:0),jie(t)}function jie(e){if(e.length<=1)return e.slice();const t=[];for(let a=0;a<e.length;a++){const s=e[a];for(;t.length>=2;){const r=t[t.length-1],i=t[t.length-2];if((r.x-i.x)*(s.y-i.y)>=(r.y-i.y)*(s.x-i.x))t.pop();else break}t.push(s)}t.pop();const n=[];for(let a=e.length-1;a>=0;a--){const s=e[a];for(;n.length>=2;){const r=n[n.length-1],i=n[n.length-2];if((r.x-i.x)*(s.y-i.y)>=(r.y-i.y)*(s.x-i.x))n.pop();else break}n.push(s)}return n.pop(),t.length===1&&n.length===1&&t[0].x===n[0].x&&t[0].y===n[0].y?t:t.concat(n)}var Nie=bz,Die=xz,Mie=$z,Eie=wz,Az=kz;const Oc=Nie,Ls=Die,Us=Mie,cs=h.forwardRef(({className:e,sideOffset:t=4,...n},a)=>o.jsx(Eie,{children:o.jsx(Az,{ref:a,sideOffset:t,className:X("z-tooltip overflow-hidden rounded bg-[color:var(--foreground)] px-2 py-1.5 text-xs text-[color:var(--background)] shadow-md",e),...n})}));cs.displayName=Az.displayName;const S_=h.forwardRef(({value:e,copyLabel:t="Copy",copiedLabel:n="Copied",timeout:a,onCopied:s,onCopyError:r,tooltip:i=!0,size:c="sm",iconClassName:d,...m},f)=>{const{copied:p,copy:y}=qF({timeout:a}),v=p?n:t,$=w=>{w.stopPropagation(),y(e).then(S=>S?s?.():r?.())},x=o.jsx(Aa,{ref:f,type:"button",size:c,onClick:$,"aria-label":v,...m,children:p?o.jsx(Ec,{className:X("size-4 text-[color:var(--success)]",d),"aria-hidden":!0}):o.jsx(zF,{className:X("size-4",d),"aria-hidden":!0})});return i?o.jsx(Oc,{children:o.jsxs(Ls,{children:[o.jsx(Us,{asChild:!0,children:x}),o.jsx(cs,{children:v})]})}):x});S_.displayName="CopyButton";const Tz=h.forwardRef(({value:e,copyValue:t,mono:n,className:a,copyLabel:s="Copy",copiedLabel:r="Copied",timeout:i,onCopied:c,onCopyError:d,...m},f)=>{const{copied:p,copy:y}=qF({timeout:i}),v=p?r:s,$=x=>{x.stopPropagation(),y(t??e).then(w=>w?c?.():d?.())};return o.jsx(ge,{ref:f,readOnly:!0,spellCheck:!1,value:e,className:X(n&&"font-[family-name:var(--font-mono)] text-xs",a),endIcon:o.jsx(Oc,{children:o.jsxs(Ls,{children:[o.jsx(Us,{asChild:!0,children:o.jsx("button",{type:"button",onClick:$,"aria-label":v,className:"grid size-7 place-items-center rounded-md text-[color:var(--muted-foreground)] transition-colors hover:bg-[color:var(--muted)] hover:text-[color:var(--foreground)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[color:var(--ring)]",children:p?o.jsx(Ec,{className:"size-4 text-[color:var(--success)]","aria-hidden":!0}):o.jsx(zF,{className:"size-4","aria-hidden":!0})})}),o.jsx(cs,{children:v})]})}),...m})});Tz.displayName="CopyField";const Iie="inline-flex h-10 min-w-0 items-center gap-2 rounded-md border border-[color:var(--input)] bg-[color:var(--background)] px-3 text-sm text-[color:var(--foreground)] outline-none transition-colors hover:bg-[color:var(--muted)] focus-visible:border-[color:var(--ring)] disabled:pointer-events-none disabled:opacity-50",Oie="fixed z-tooltip max-h-80 overflow-y-auto rounded-md border border-[color:var(--border)] bg-[color:var(--popover)] p-1 text-[color:var(--popover-foreground)] shadow-[0_18px_60px_rgba(13,17,23,0.14)]",ti="grid gap-1.5 text-sm font-medium text-[color:var(--foreground)]",Qo=X(ti,"text-xs");function Rz(e){return typeof e=="string"||typeof e=="number"?String(e):Array.isArray(e)?e.map(Rz).join(""):""}function Lie(e){return h.Children.toArray(e).flatMap(t=>h.isValidElement(t)?t.type!=="option"?[]:[{value:t.props.value==null?Rz(t.props.children):String(t.props.value),label:t.props.children,disabled:t.props.disabled}]:[])}const ft=h.forwardRef(({value:e,options:t,children:n,placeholder:a,name:s,onChange:r,onValueChange:i,align:c="left",fullWidth:d=!0,menuClassName:m,renderValue:f,showChevron:p=!0,className:y,disabled:v,...$},x)=>{const[w,S]=h.useState(!1),[k,T]=h.useState(null),R=h.useId(),_=h.useRef(null),P=h.useRef(null),j=h.useRef(null),N=h.useCallback(L=>{P.current=L,typeof x=="function"?x(L):x&&(x.current=L)},[x]),I=h.useMemo(()=>t??Lie(n),[n,t]),z=I.find(L=>L.value===e);h.useEffect(()=>{if(!w)return;function L(V){const ne=V.target;_.current?.contains(ne)||j.current?.contains(ne)||S(!1)}function O(V){V.key==="Escape"&&S(!1)}return document.addEventListener("pointerdown",L),document.addEventListener("keydown",O),()=>{document.removeEventListener("pointerdown",L),document.removeEventListener("keydown",O)}},[w]),h.useLayoutEffect(()=>{if(!w){T(null);return}function L(){const O=P.current?.getBoundingClientRect();if(!O)return;const V=4,ne=8,q=Math.min(320,I.length*36+8),M=window.innerHeight-O.bottom,F=O.top,H=M<q&&F>M,ee=d?O.width:176,B=d?O.width:Math.max(O.width,176);let G=c==="right"?O.right-B:O.left;G=Math.max(ne,Math.min(G,window.innerWidth-B-ne));const Q=H?Math.max(ne,O.top-V-q):Math.min(O.bottom+V,window.innerHeight-ne);T({left:G,top:Q,width:B,minWidth:ee})}return L(),window.addEventListener("resize",L),window.addEventListener("scroll",L,!0),()=>{window.removeEventListener("resize",L),window.removeEventListener("scroll",L,!0)}},[c,d,w,I.length]);function E(L){L.disabled||(i?.(L.value),r?.({target:{name:s,value:L.value}}),S(!1))}return o.jsxs("div",{ref:_,className:X("relative min-w-0",d&&"w-full"),children:[s?o.jsx("input",{type:"hidden",name:s,value:e}):null,o.jsxs("button",{ref:N,type:"button",disabled:v,"aria-haspopup":"listbox","aria-expanded":w,"aria-controls":w?R:void 0,className:X(Iie,d?"w-full justify-between":"justify-center",y),onClick:()=>S(L=>!L),onKeyDown:L=>{(L.key==="ArrowDown"||L.key==="Enter"||L.key===" ")&&(L.preventDefault(),S(!0)),$.onKeyDown?.(L)},...$,children:[o.jsx("span",{className:"min-w-0 truncate text-left",children:f?f(z):z?.label??a}),p?o.jsx(Ic,{className:"size-4 shrink-0 text-[color:var(--muted-foreground)]"}):null]}),w&&k&&typeof document<"u"?li.createPortal(o.jsx("div",{ref:j,id:R,role:"listbox",style:{...k,pointerEvents:"auto"},className:X(Oie,m),children:I.map(L=>{const O=L.value===e;return o.jsxs("button",{type:"button",role:"option","aria-selected":O,disabled:L.disabled,className:X("flex h-9 w-full items-center gap-2 rounded px-2 text-left text-sm hover:bg-[color:var(--muted)] disabled:pointer-events-none disabled:opacity-50",O&&"font-medium"),onClick:()=>E(L),children:[o.jsx(Ec,{className:X("size-4 shrink-0",O?"opacity-100":"opacity-0")}),o.jsx("span",{className:"min-w-0 truncate",children:L.label})]},L.value)})}),document.body):null]})});ft.displayName="Select";const ca=h.forwardRef(({label:e,description:t,error:n,fieldClassName:a,className:s,...r},i)=>{const c=h.useId();return o.jsxs("div",{className:X(ti,a),children:[o.jsx("span",{id:c,children:e}),o.jsx(ft,{ref:i,className:s,"aria-labelledby":r["aria-label"]?void 0:c,...r,"aria-invalid":n?!0:r["aria-invalid"]}
172),t?o.jsx("span",{className:"text-xs font-normal text-[color:var(--muted-foreground)]",children:t}):null,n?o.jsx("span",{className:"text-xs font-normal text-[color:var(--destructive)]",children:n}):null]})});ca.displayName="SelectField";const Zn=h.forwardRef(({className:e,checked:t,indeterminate:n=!1,...a},s)=>{const r=h.useRef(null);return h.useImperativeHandle(s,()=>r.current),h.useEffect(()=>{r.current&&(r.current.indeterminate=n)},[n]),o.jsxs("span",{className:"relative inline-grid size-4 shrink-0 place-items-center",children:[o.jsx("input",{ref:r,type:"checkbox",checked:t,"aria-checked":n?"mixed":void 0,className:X("peer size-4 appearance-none rounded border border-[color:var(--input)] bg-[color:var(--background)] outline-none transition-colors checked:border-[color:var(--primary)] checked:bg-[color:var(--primary)] indeterminate:border-[color:var(--primary)] indeterminate:bg-[color:var(--primary)] focus-visible:ring-2 focus-visible:ring-[color:var(--ring)] disabled:cursor-not-allowed disabled:opacity-50",e),...a}),o.jsx(Ec,{className:"pointer-events-none absolute size-3 text-[color:var(--primary-foreground)] opacity-0 peer-checked:opacity-100 peer-indeterminate:opacity-0","aria-hidden":"true"}),o.jsx(kse,{className:"pointer-events-none absolute size-3 text-[color:var(--primary-foreground)] opacity-0 peer-indeterminate:opacity-100","aria-hidden":"true"})]})});Zn.displayName="Checkbox";function el({value:e,onValueChange:t,options:n,ariaLabel:a,className:s}){const r=h.useRef([]),i=Math.max(0,n.findIndex(f=>f.value===e));function c(f,p){const y=n.length;for(let v=1;v<=y;v+=1){const $=((f+p*v)%y+y)%y;if(!n[$]?.disabled)return $}return f}function d(f){const p=n[f];!p||p.disabled||(t(p.value),r.current[f]?.focus())}function m(f){switch(f.key){case"ArrowRight":case"ArrowDown":f.preventDefault(),d(c(i,1));break;case"ArrowLeft":case"ArrowUp":f.preventDefault(),d(c(i,-1));break;case"Home":f.preventDefault(),d(c(-1,1));break;case"End":f.preventDefault(),d(c(0,-1));break}}return o.jsx("div",{role:"radiogroup","aria-label":a,onKeyDown:m,className:X("inline-flex w-full min-w-0 overflow-x-auto rounded-md border border-[color:var(--border)] bg-[color:var(--muted)]/40 p-0.5 [scrollbar-width:none] sm:w-fit [&::-webkit-scrollbar]:hidden",s),children:n.map((f,p)=>{const y=f.value===e;return o.jsx("button",{ref:v=>{r.current[p]=v},type:"button",role:"radio","aria-checked":y,disabled:f.disabled,tabIndex:y?0:-1,onClick:()=>t(f.value),className:X("min-w-max rounded px-3 py-1.5 text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[color:var(--ring)] disabled:cursor-not-allowed disabled:opacity-50",y?"bg-[color:var(--primary)] text-[color:var(--primary-foreground)]":"text-[color:var(--muted-foreground)] hover:text-[color:var(--foreground)]"),children:f.label},f.value)})})}const Uie="box-border min-w-0 max-w-full rounded-lg border border-[color:var(--border)] bg-[color:var(--background)]",Ee=h.forwardRef(({className:e,...t},n)=>o.jsx("div",{ref:n,className:X(Uie,e),...t}));Ee.displayName="Surface";function Bie({value:e,options:t,onSelect:n,"aria-label":a="Language",showLabel:s}){const r=t.find(i=>i.value===e)?.label??e;return o.jsx(ft,{"aria-label":a,value:e,options:t,onValueChange:n,align:"right",fullWidth:!1,className:s?"h-8 rounded-full border px-3 text-xs text-[color:var(--muted-foreground)] hover:text-[color:var(--foreground)]":"size-9 rounded-full border-0 px-0",menuClassName:"w-44",showChevron:s??!1,renderValue:()=>s?o.jsx("span",{children:r}):o.jsx($se,{className:"size-5"})})}const tb=256,Pz=["#5b8ff9","#5ad8a6","#f6bd16","#e8684a","#6dc8ec","#9270ca","#ff9d4d","#269a99","#ff99c3","#5d7092","#a0d911","#d846a0"];function Fie(e){let t=5381;for(let n=0;n<e.length;n++)t=t*33^e.charCodeAt(n);return Math.abs(t)%Pz.length}function zie(e){const t=Pz[Fie(e)],n=parseInt(t.slice(1,3),16),a=parseInt(t.slice(3,5),16),s=parseInt(t.slice(5,7),16),r=n*.299+a*.587+s*.114;return{background:t,color:r>160?"#111":"#fff"}}function qie({initial:e,displayName:t,email:n,avatarUrl:a,children:s,menuSide:r="bottom",indicator:i,onOpenChange:c,className:d,"aria-label":m}){const[f,p]=h.useState(!1),y=P=>{p(j=>{const N=typeof P=="function"?P(j):P;return N!==j&&c?.(N),N})},[v,$]=h.useState(!1),x=h.useRef(null),w=h.useRef(null),[S,k]=h.useState(null),T=!!a&&!v;h.useEffect(()=>{$(!1)},[a]),h.useLayoutEffect(()=>{if(!f){k(null);return}function P(){const j=x.current?.getBoundingClientRect();if(!j)return;const N=8,I=8;let z=j.left;
172if(z+tb+I>window.innerWidth&&(z=j.right-tb),z=Math.max(I,Math.min(z,window.innerWidth-tb-I)),r==="top"){const E=Math.max(I,window.innerHeight-j.top+N);k({left:z,bottom:E,maxHeight:Math.max(160,j.top-N-I)})}else{const E=j.bottom+N;k({left:z,top:E,maxHeight:Math.max(160,window.innerHeight-E-I)})}}return P(),window.addEventListener("resize",P),window.addEventListener("scroll",P,!0),()=>{window.removeEventListener("resize",P),window.removeEventListener("scroll",P,!0)}},[f,r]),h.useEffect(()=>{if(!f)return;function P(N){const I=N.target;x.current?.contains(I)||w.current?.contains(I)||y(!1)}function j(N){N.key==="Escape"&&y(!1)}return document.addEventListener("pointerdown",P),document.addEventListener("keydown",j),()=>{document.removeEventListener("pointerdown",P),document.removeEventListener("keydown",j)}},[f]);const _=typeof document<"u"?x.current?.closest('[role="dialog"]')??document.body:null;return o.jsxs("div",{className:X("relative",d),children:[o.jsx("button",{ref:x,type:"button","aria-label":m??n,"aria-haspopup":"menu","aria-expanded":f,title:n,style:T?void 0:zie(n),className:"grid size-9 place-items-center rounded-full text-sm font-semibold transition-opacity hover:opacity-85 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[color:var(--ring)]",onClick:()=>y(P=>!P),children:T?o.jsx("img",{src:a??void 0,alt:"",className:"size-full rounded-full object-cover",referrerPolicy:"no-referrer",onError:()=>$(!0)}):e}),i,f&&S&&_?li.createPortal(o.jsxs("div",{ref:w,role:"menu",onClick:()=>y(!1),style:{...S,width:tb},className:"fixed z-tooltip overflow-y-auto rounded-md border border-[color:var(--border)] bg-[color:var(--popover)] p-1 text-[color:var(--popover-foreground)] shadow-[0_18px_60px_rgba(13,17,23,0.14)]",children:[o.jsxs("div",{className:"px-2 py-2",children:[o.jsx("p",{className:"truncate text-sm font-medium",children:t||n}),t?o.jsx("p",{className:"truncate text-xs text-[color:var(--muted-foreground)]",children:n}):null]}),o.jsx("div",{className:"my-1 h-px bg-[color:var(--border)]"}),s]}),_):null]})}const _z="flex h-9 w-full min-w-0 items-center gap-2 rounded-md px-2 text-left text-sm text-[color:var(--foreground)] outline-none transition-colors hover:bg-[color:var(--accent)] hover:text-[color:var(--accent-foreground)] focus-visible:bg-[color:var(--accent)] disabled:cursor-not-allowed disabled:opacity-50",tc=h.forwardRef(({className:e,asChild:t,...n},a)=>{const s=t?m_:"button";return o.jsx(s,{ref:a,role:"menuitem",className:X(_z,e),...t?{}:{type:"button"},...n})});tc.displayName="UserMenuItem";const jz=h.forwardRef(({className:e,checked:t,children:n,...a},s)=>o.jsxs("button",{ref:s,type:"button",role:"menuitemradio","aria-checked":t,className:X(_z,t&&"bg-[color:var(--accent)]/40",e),...a,children:[o.jsx("span",{className:"grid size-4 shrink-0 place-items-center",children:t?o.jsx(Ec,{className:"size-4","aria-hidden":!0}):null}),n]}));jz.displayName="UserMenuRadioItem";function wg({className:e}){return o.jsx("div",{className:X("my-1 h-px bg-[color:var(--border)]",e),role:"separator"})}const Nz=h.createContext({stickyHeader:!1});function Dz(e){return e==="left"?"oh-sticky-shadow-left":"oh-sticky-shadow-right"}function Hie(e){return e?X(e==="left"?"sticky left-0":"sticky right-0","z-10 bg-[color:var(--background)] group-hover/row:bg-[color:var(--muted)]",Dz(e)):""}function Vie(e,t){return!e&&!t?"":X("sticky",e==="left"?"left-0":e==="right"?"right-0":"",t&&"top-0",e&&t?"z-30":"z-20","bg-[color:var(--card)]",e&&Dz(e))}const Ua=h.forwardRef(({className:e,containerClassName:t,stickyHeader:n=!1,...a},s)=>{const r=h.useRef(null),i=h.useRef(null);return h.useImperativeHandle(s,()=>i.current),h.useEffect(()=>{const c=r.current;if(!c)return;const d=()=>{const f=c.scrollWidth-c.clientWidth;c.dataset.scrolledLeft=String(c.scrollLeft>1),c.dataset.scrolledRight=String(c.scrollLeft<f-1)};d(),c.addEventListener("scroll",d,{passive:!0});const m=new ResizeObserver(d);return i.current&&m.observe(i.current),m.observe(c),()=>{c.removeEventListener("scroll",d),m.disconnect()}},[]),o.jsx(Nz.Provider,{value:{stickyHeader:n},children:o.jsx("div",{ref:r,className:X("w-full overflow-auto",t),children:o.jsx("table",{ref:i,className:X("min-w-full caption-bottom border-collapse text-sm",e),...a})})})});Ua.displayName="Table";const Po=h.forwardRef(({className:e,...t},n)=>o.jsx("thead",{ref:n,className:X("border-b border-[color:var(--border)] bg-[color:var(--card)]",e),...t}));Po.displayName="TableHeader";const Ba=h.forwardRef(({className:e,...t},n)=>o.jsx("tbody",{ref:n,className:X("[&>tr]:border-[color:var(--table-divider)]",e),...t}));Ba.displayName="TableBody";const qt=h.forwardRef(({className:e,...t},n)=>o.jsx("tr",{ref:n,className:X("border-b border-[color:var(--border)] transition-colors hover:bg-[color:var(--muted)]",e),...t}));
172qt.displayName="TableRow";const Ie=h.forwardRef(({className:e,sticky:t,...n},a)=>{const{stickyHeader:s}=h.useContext(Nz);return o.jsx("th",{ref:a,className:X("h-11 whitespace-nowrap px-3 text-left align-middle text-xs font-semibold uppercase text-[color:var(--muted-foreground)] sm:px-5",Vie(t,s),e),...n})});Ie.displayName="TableHead";const Me=h.forwardRef(({className:e,sticky:t,...n},a)=>o.jsx("td",{ref:a,className:X("px-3 py-3 align-middle sm:px-5",Hie(t),e),...n}));Me.displayName="TableCell";const nb=(e,t)=>Array.from({length:Math.max(0,t-e+1)},(n,a)=>e+a);function Kie(e,t,n=1){const a=n*2+5;if(t<=a)return nb(1,t);const s=Math.max(e-n,1),r=Math.min(e+n,t),i=s>2,c=r<t-1,d=3+n*2;return!i&&c?[...nb(1,d),"ellipsis",t]:i&&!c?[1,"ellipsis",...nb(t-d+1,t)]:[1,"ellipsis",...nb(s,r),"ellipsis",t]}function A_({total:e,page:t,pageSize:n,pageSizeOptions:a,onPageChange:s,onPageSizeChange:r,labels:i,disabled:c=!1,className:d}){const m=Math.max(1,Math.ceil(e/Math.max(1,n))),f=Kie(t,m);return o.jsxs("div",{className:X("flex flex-wrap items-center justify-between gap-2 text-sm",d),children:[o.jsx("span",{className:"shrink-0 tabular-nums text-[color:var(--muted-foreground)]",children:i?.total?i.total(e):`${e} items`}),o.jsxs("div",{className:"-mx-1 flex min-w-0 flex-wrap items-center justify-end gap-1 px-1 pb-0.5 sm:mx-0 sm:flex-nowrap sm:px-0 sm:pb-0",children:[o.jsx(w1,{"aria-label":"Previous page",disabled:c||t<=1,onClick:()=>s(t-1),children:o.jsx(p_,{className:"size-4"})}),f.map((p,y)=>p==="ellipsis"?o.jsx("span",{className:"px-1 text-[color:var(--muted-foreground)] select-none",children:"…"},`ellipsis-${y}`):o.jsx(w1,{active:p===t,disabled:c,"aria-current":p===t?"page":void 0,onClick:()=>s(p),children:p},p)),o.jsx(w1,{"aria-label":"Next page",disabled:c||t>=m,onClick:()=>s(t+1),children:o.jsx(J$,{className:"size-4"})}),r&&a?.length?o.jsx(ft,{className:"h-8 shrink-0 sm:ml-2",value:String(n),fullWidth:!1,disabled:c,onChange:p=>r(Number(p.target.value)),children:a.map(p=>o.jsx("option",{value:p,children:i?.perPage?i.perPage(p):`${p} / page`},p))}):null]})]})}function w1({active:e,className:t,...n}){return o.jsx("button",{type:"button",className:X("inline-flex h-8 min-w-8 items-center justify-center rounded-md border px-2 text-sm tabular-nums transition-colors",e?"border-[color:var(--primary)] font-medium text-[color:var(--primary)]":"border-[color:var(--border)] text-[color:var(--foreground)] hover:border-[color:var(--primary)] hover:text-[color:var(--primary)]","disabled:pointer-events-none disabled:opacity-40",t),...n})}function Rt({className:e}){return o.jsx("div",{className:X("animate-pulse rounded-md bg-[color:var(--muted)] motion-reduce:animate-none",e)})}var Gie="Claude";function Zg(e){"@babel/helpers - typeof";return Zg=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Zg(e)}var Wie=["size","style"];function xO(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,a)}return n}function k1(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?xO(Object(n),!0).forEach(function(a){Yie(e,a,n[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):xO(Object(n)).forEach(function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(n,a))})}return e}function Yie(e,t,n){return t=Qie(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Qie(e){var t=Xie(e,"string");return Zg(t)=="symbol"?t:String(t)}function Xie(e,t){if(Zg(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var a=n.call(e,t);if(Zg(a)!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function Zie(e,t){if(e==null)return{};var n=Jie(e,t),a,s;if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(s=0;s<r.length;s++)a=r[s],!(t.indexOf(a)>=0)&&Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}function Jie(e,t){if(e==null)return{};var n={},a=Object.keys(e),s,r;for(r=0;r<a.length;r++)s=a[r],!(t.indexOf(s)>=0)&&(n[s]=e[s]);return n}var ele=h.memo(function(e){var t=e.size,n=t===void 0?"1em":t,a=e.style,s=Zie(e,Wie);return o.jsxs("svg",k1(k1({height:n,style:k1({flex:"none",lineHeight:1}
172,a),viewBox:"0 0 24 24",width:n,xmlns:"http://www.w3.org/2000/svg"},s),{},{children:[o.jsx("title",{children:Gie}),o.jsx("path",{d:"M4.709 15.955l4.72-2.647.08-.23-.08-.128H9.2l-.79-.048-2.698-.073-2.339-.097-2.266-.122-.571-.121L0 11.784l.055-.352.48-.321.686.06 1.52.103 2.278.158 1.652.097 2.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 1.908 1.476 2.491 1.833.365.304.145-.103.019-.073-.164-.274-1.355-2.446-1.446-2.49-.644-1.032-.17-.619a2.97 2.97 0 01-.104-.729L6.283.134 6.696 0l.996.134.42.364.62 1.414 1.002 2.229 1.555 3.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 1.851-.559 2.903-.364 1.942h.212l.243-.242.985-1.306 1.652-2.064.73-.82.85-.904.547-.431h1.033l.76 1.129-.34 1.166-1.064 1.347-.881 1.142-1.264 1.7-.79 1.36.073.11.188-.02 2.856-.606 1.543-.28 1.841-.315.833.388.091.395-.328.807-1.969.486-2.309.462-3.439.813-.042.03.049.061 1.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 1.068 2.006 1.81 2.509 2.33.127.578-.322.455-.34-.049-2.205-1.657-.851-.747-1.926-1.62h-.128v.17l.444.649 2.345 3.521.122 1.08-.17.353-.608.213-.668-.122-1.374-1.925-1.415-2.167-1.143-1.943-.14.08-.674 7.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 1.967-2.18 2.945-1.726 1.845-.414.164-.717-.37.067-.662.401-.589 2.388-3.036 1.44-1.882.93-1.086-.006-.158h-.055L4.132 18.56l-1.13.146-.487-.456.061-.746.231-.243 1.908-1.312-.006.006z",fill:"#D97757",fillRule:"nonzero"})]}))}),tle="DeepSeek";function Jg(e){"@babel/helpers - typeof";return Jg=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Jg(e)}var nle=["size","style"];function $O(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,a)}return n}function C1(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?$O(Object(n),!0).forEach(function(a){ale(e,a,n[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):$O(Object(n)).forEach(function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(n,a))})}return e}function ale(e,t,n){return t=ole(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ole(e){var t=sle(e,"string");return Jg(t)=="symbol"?t:String(t)}function sle(e,t){if(Jg(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var a=n.call(e,t);if(Jg(a)!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function rle(e,t){if(e==null)return{};var n=ile(e,t),a,s;if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(s=0;s<r.length;s++)a=r[s],!(t.indexOf(a)>=0)&&Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}function ile(e,t){if(e==null)return{};var n={},a=Object.keys(e),s,r;for(r=0;r<a.length;r++)s=a[r],!(t.indexOf(s)>=0)&&(n[s]=e[s]);return n}var lle=h.memo(function(e){var t=e.size,n=t===void 0?"1em":t,a=e.style,s=rle(e,nle);return o.jsxs("svg",C1(C1({height:n,style:C1({flex:"none",lineHeight:1},a),viewBox:"0 0 24 24",width:n,xmlns:"http://www.w3.org/2000/svg"},s),{},{children:[o.jsx("title",{children:tle}),o.jsx("path",{d:"M23.748 4.482c-.254-.124-.364.113-.512.234-.051.039-.094.09-.137.136-.372.397-.806.657-1.373.626-.829-.046-1.537.214-2.163.848-.133-.782-.575-1.248-1.247-1.548-.352-.156-.708-.311-.955-.65-.172-.241-.219-.51-.305-.774-.055-.16-.11-.323-.293-.35-.2-.031-.278.136-.356.276-.313.572-.434 1.202-.422 1.84.027 1.436.633 2.58 1.838 3.393.137.093.172.187.129.323-.082.28-.18.552-.266.833-.055.179-.137.217-.329.14a5.526 5.526 0 01-1.736-1.18c-.857-.828-1.631-1.742-2.597-2.458a11.365 11.365 0 00-.689-.471c-.985-.957.13-1.743.388-1.836.27-.098.093-.432-.779-.428-.872.004-1.67.295-2.687.684a3.055 3.055 0 01-.465.137 9.597 9.597 0 00-2.883-.102c-1.885.21-3.39 1.102-4.497 2.623C.082 8.606-.231 10.684.152 12.85c.403 2.284 1.569 4.175 3.36 5.653 1.858 1.533 3.997 2.284 6.438 2.14 1.482-.085 3.133-.284 4.994-1.86.47.234.962.327 1.78.397.63.059 1.236-.03 1.705-.128.735-.156.684-.837.419-.961-2.155-1.004-1.682-.595-2.113-.926 1.096-1.296 2.746-2.642 3.392-7.003.05-.347.007-.565 0-.845-.004-.17.035-.237.23-.256a4.173 4.173 
1720 001.545-.475c1.396-.763 1.96-2.015 2.093-3.517.02-.23-.004-.467-.247-.588zM11.581 18c-2.089-1.642-3.102-2.183-3.52-2.16-.392.024-.321.471-.235.763.09.288.207.486.371.739.114.167.192.416-.113.603-.673.416-1.842-.14-1.897-.167-1.361-.802-2.5-1.86-3.301-3.307-.774-1.393-1.224-2.887-1.298-4.482-.02-.386.093-.522.477-.592a4.696 4.696 0 011.529-.039c2.132.312 3.946 1.265 5.468 2.774.868.86 1.525 1.887 2.202 2.891.72 1.066 1.494 2.082 2.48 2.914.348.292.625.514.891.677-.802.09-2.14.11-3.054-.614zm1-6.44a.306.306 0 01.415-.287.302.302 0 01.2.288.306.306 0 01-.31.307.303.303 0 01-.304-.308zm3.11 1.596c-.2.081-.399.151-.59.16a1.245 1.245 0 01-.798-.254c-.274-.23-.47-.358-.552-.758a1.73 1.73 0 01.016-.588c.07-.327-.008-.537-.239-.727-.187-.156-.426-.199-.688-.199a.559.559 0 01-.254-.078c-.11-.054-.2-.19-.114-.358.028-.054.16-.186.192-.21.356-.202.767-.136 1.146.016.352.144.618.408 1.001.782.391.451.462.576.685.914.176.265.336.537.445.848.067.195-.019.354-.25.452z",fill:"#4D6BFE"})]}))}),cle="Google";function eh(e){"@babel/helpers - typeof";return eh=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},eh(e)}var dle=["size","style"];function wO(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,a)}return n}function S1(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?wO(Object(n),!0).forEach(function(a){ule(e,a,n[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):wO(Object(n)).forEach(function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(n,a))})}return e}function ule(e,t,n){return t=mle(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function mle(e){var t=ple(e,"string");return eh(t)=="symbol"?t:String(t)}function ple(e,t){if(eh(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var a=n.call(e,t);if(eh(a)!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function fle(e,t){if(e==null)return{};var n=gle(e,t),a,s;if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(s=0;s<r.length;s++)a=r[s],!(t.indexOf(a)>=0)&&Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}function gle(e,t){if(e==null)return{};var n={},a=Object.keys(e),s,r;for(r=0;r<a.length;r++)s=a[r],!(t.indexOf(s)>=0)&&(n[s]=e[s]);return n}var kO=h.memo(function(e){var t=e.size,n=t===void 0?"1em":t,a=e.style,s=fle(e,dle);return o.jsxs("svg",S1(S1({height:n,style:S1({flex:"none",lineHeight:1},a),viewBox:"0 0 24 24",width:n,xmlns:"http://www.w3.org/2000/svg"},s),{},{children:[o.jsx("title",{children:cle}),o.jsx("path",{d:"M23 12.245c0-.905-.075-1.565-.236-2.25h-10.54v4.083h6.186c-.124 1.014-.797 2.542-2.294 3.569l-.021.136 3.332 2.53.23.022C21.779 18.417 23 15.593 23 12.245z",fill:"#4285F4"}),o.jsx("path",{d:"M12.225 23c3.03 0 5.574-.978 7.433-2.665l-3.542-2.688c-.948.648-2.22 1.1-3.891 1.1a6.745 6.745 0 01-6.386-4.572l-.132.011-3.465 2.628-.045.124C4.043 20.531 7.835 23 12.225 23z",fill:"#34A853"}),o.jsx("path",{d:"M5.84 14.175A6.65 6.65 0 015.463 12c0-.758.138-1.491.361-2.175l-.006-.147-3.508-2.67-.115.054A10.831 10.831 0 001 12c0 1.772.436 3.447 1.197 4.938l3.642-2.763z",fill:"#FBBC05"}),o.jsx("path",{d:"M12.225 5.253c2.108 0 3.529.892 4.34 1.638l3.167-3.031C17.787 2.088 15.255 1 12.225 1 7.834 1 4.043 3.469 2.197 7.062l3.63 2.763a6.77 6.77 0 016.398-4.572z",fill:"#EB4335"})]}))});const hle=/\p{Lu}?\p{Ll}+|[0-9]+|\p{Lu}+(?!\p{Ll})|\p{Emoji_Presentation}|\p{Extended_Pictographic}|\p{L}+/gu;function yle(e){return Array.from(e.match(hle)??[])}function vle(e){return yle(e).map(n=>n.toLowerCase()).join("-")}var Mz=function(t){var n=h.useId(),a="lobe-icons-".concat(vle(t),"-").concat(n);return h.useMemo(function(){return{fill:"url(#".concat(a,")"),id:a}},[t])},CO="Minimax";function th(e){"@babel/helpers - typeof";return th=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},th(e)}var ble=["size","style"];function SO(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,a)}return n}function A1(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};
172t%2?SO(Object(n),!0).forEach(function(a){xle(e,a,n[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):SO(Object(n)).forEach(function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(n,a))})}return e}function xle(e,t,n){return t=$le(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function $le(e){var t=wle(e,"string");return th(t)=="symbol"?t:String(t)}function wle(e,t){if(th(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var a=n.call(e,t);if(th(a)!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function kle(e,t){if(e==null)return{};var n=Cle(e,t),a,s;if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(s=0;s<r.length;s++)a=r[s],!(t.indexOf(a)>=0)&&Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}function Cle(e,t){if(e==null)return{};var n={},a=Object.keys(e),s,r;for(r=0;r<a.length;r++)s=a[r],!(t.indexOf(s)>=0)&&(n[s]=e[s]);return n}var Sle=h.memo(function(e){var t=e.size,n=t===void 0?"1em":t,a=e.style,s=kle(e,ble),r=Mz(CO),i=r.id,c=r.fill;return o.jsxs("svg",A1(A1({height:n,style:A1({flex:"none",lineHeight:1},a),viewBox:"0 0 24 24",width:n,xmlns:"http://www.w3.org/2000/svg"},s),{},{children:[o.jsx("title",{children:CO}),o.jsx("defs",{children:o.jsxs("linearGradient",{id:i,x1:"0%",x2:"100.182%",y1:"50.057%",y2:"50.057%",children:[o.jsx("stop",{offset:"0%",stopColor:"#E2167E"}),o.jsx("stop",{offset:"100%",stopColor:"#FE603C"})]})}),o.jsx("path",{d:"M16.278 2c1.156 0 2.093.927 2.093 2.07v12.501a.74.74 0 00.744.709.74.74 0 00.743-.709V9.099a2.06 2.06 0 012.071-2.049A2.06 2.06 0 0124 9.1v6.561a.649.649 0 01-.652.645.649.649 0 01-.653-.645V9.1a.762.762 0 00-.766-.758.762.762 0 00-.766.758v7.472a2.037 2.037 0 01-2.048 2.026 2.037 2.037 0 01-2.048-2.026v-12.5a.785.785 0 00-.788-.753.785.785 0 00-.789.752l-.001 15.904A2.037 2.037 0 0113.441 22a2.037 2.037 0 01-2.048-2.026V18.04c0-.356.292-.645.652-.645.36 0 .652.289.652.645v1.934c0 .263.142.506.372.638.23.131.514.131.744 0a.734.734 0 00.372-.638V4.07c0-1.143.937-2.07 2.093-2.07zm-5.674 0c1.156 0 2.093.927 2.093 2.07v11.523a.648.648 0 01-.652.645.648.648 0 01-.652-.645V4.07a.785.785 0 00-.789-.78.785.785 0 00-.789.78v14.013a2.06 2.06 0 01-2.07 2.048 2.06 2.06 0 01-2.071-2.048V9.1a.762.762 0 00-.766-.758.762.762 0 00-.766.758v3.8a2.06 2.06 0 01-2.071 2.049A2.06 2.06 0 010 12.9v-1.378c0-.357.292-.646.652-.646.36 0 .653.29.653.646V12.9c0 .418.343.757.766.757s.766-.339.766-.757V9.099a2.06 2.06 0 012.07-2.048 2.06 2.06 0 012.071 2.048v8.984c0 .419.343.758.767.758.423 0 .766-.339.766-.758V4.07c0-1.143.937-2.07 2.093-2.07z",fill:c,fillRule:"nonzero"})]}))}),Ale="ByteDance";function nh(e){"@babel/helpers - typeof";return nh=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},nh(e)}var Tle=["size","style"];function AO(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,a)}return n}function T1(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?AO(Object(n),!0).forEach(function(a){Rle(e,a,n[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):AO(Object(n)).forEach(function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(n,a))})}return e}function Rle(e,t,n){return t=Ple(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Ple(e){var t=_le(e,"string");return nh(t)=="symbol"?t:String(t)}function _le(e,t){if(nh(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var a=n.call(e,t);if(nh(a)!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function jle(e,t){if(e==null)return{};var n=Nle(e,t),a,s;if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(s=0;s<r.length;s++)a=r[s],!(t.indexOf(a)>=0)&&Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}function Nle(e,t){if(e==null)return{};var n={},a=Object.keys(e),s,r;for(r=0;r<a.length;r++)s=a[r],!(t.indexOf(s)>=0)&&(n[s]=e[s]);return n}var Dle=h.memo(function(e){var t=e.size,n=t===void 0?"1em":t,a=e.style,s=jle(e,Tle);
172return o.jsxs("svg",T1(T1({height:n,style:T1({flex:"none",lineHeight:1},a),viewBox:"0 0 24 24",width:n,xmlns:"http://www.w3.org/2000/svg"},s),{},{children:[o.jsx("title",{children:Ale}),o.jsx("path",{d:"M14.944 18.587l-1.704-.445V10.01l1.824-.462c1-.254 1.84-.461 1.88-.453.032 0 .056 2.235.056 4.972v4.973l-.176-.008c-.104 0-.952-.207-1.88-.446z",fill:"#00C8D2",fillRule:"nonzero"}),o.jsx("path",{d:"M7 16.542c0-2.736.024-4.98.064-4.98.032-.008.872.2 1.88.454l1.816.461-.016 4.05-.024 4.049-1.632.422c-.896.23-1.736.445-1.856.469L7 21.523v-4.98z",fill:"#3C8CFF",fillRule:"nonzero"}),o.jsx("path",{d:"M19.24 12.477c0-9.03.008-9.515.144-9.475.072.024.784.207 1.576.406.792.207 1.576.405 1.744.445l.296.08-.016 8.56-.024 8.568-1.624.414c-.888.23-1.728.437-1.856.47l-.24.055v-9.523z",fill:"#78E6DC",fillRule:"nonzero"}),o.jsx("path",{d:"M1 12.509c0-4.678.024-8.505.064-8.505.032 0 .872.207 1.872.454l1.824.461v7.582c0 4.16-.016 7.574-.032 7.574-.024 0-.872.215-1.88.47L1 21.013v-8.505z",fill:"#325AB4"})]}))}),Mle="Zhipu";function ah(e){"@babel/helpers - typeof";return ah=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},ah(e)}var Ele=["size","style"];function TO(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,a)}return n}function R1(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?TO(Object(n),!0).forEach(function(a){Ile(e,a,n[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):TO(Object(n)).forEach(function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(n,a))})}return e}function Ile(e,t,n){return t=Ole(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Ole(e){var t=Lle(e,"string");return ah(t)=="symbol"?t:String(t)}function Lle(e,t){if(ah(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var a=n.call(e,t);if(ah(a)!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function Ule(e,t){if(e==null)return{};var n=Ble(e,t),a,s;if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(s=0;s<r.length;s++)a=r[s],!(t.indexOf(a)>=0)&&Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}function Ble(e,t){if(e==null)return{};var n={},a=Object.keys(e),s,r;for(r=0;r<a.length;r++)s=a[r],!(t.indexOf(s)>=0)&&(n[s]=e[s]);return n}var Fle=h.memo(function(e){var t=e.size,n=t===void 0?"1em":t,a=e.style,s=Ule(e,Ele);return o.jsxs("svg",R1(R1({height:n,style:R1({flex:"none",lineHeight:1},a),viewBox:"0 0 24 24",width:n,xmlns:"http://www.w3.org/2000/svg"},s),{},{children:[o.jsx("title",{children:Mle}),o.jsx("path",{d:"M11.991 23.503a.24.24 0 00-.244.248.24.24 0 00.244.249.24.24 0 00.245-.249.24.24 0 00-.22-.247l-.025-.001zM9.671 5.365a1.697 1.697 0 011.099 2.132l-.071.172-.016.04-.018.054c-.07.16-.104.32-.104.498-.035.71.47 1.279 1.186 1.314h.366c1.309.053 2.338 1.173 2.286 2.523-.052 1.332-1.152 2.38-2.478 2.327h-.174c-.715.018-1.274.64-1.239 1.368 0 .124.018.23.053.337.209.373.54.658.96.8.75.23 1.517-.125 1.9-.782l.018-.035c.402-.64 1.17-.96 1.92-.711.854.284 1.378 1.226 1.099 2.167a1.661 1.661 0 01-2.077 1.102 1.711 1.711 0 01-.907-.711l-.017-.035c-.2-.323-.463-.58-.851-.711l-.056-.018a1.646 1.646 0 00-1.954.746 1.66 1.66 0 01-1.065.764 1.677 1.677 0 01-1.989-1.279c-.209-.906.332-1.83 1.257-2.043a1.51 1.51 0 01.296-.035h.018c.68-.071 1.151-.622 1.116-1.333a1.307 1.307 0 00-.227-.693 2.515 2.515 0 01-.366-1.403 2.39 2.39 0 01.366-1.208c.14-.195.21-.444.227-.693.018-.71-.506-1.261-1.186-1.332l-.07-.018a1.43 1.43 0 01-.299-.07l-.05-.019a1.7 1.7 0 01-1.047-2.114 1.68 1.68 0 012.094-1.101zm-5.575 10.11c.26-.264.639-.367.994-.27.355.096.633.379.728.74.095.362-.007.748-.267 1.013-.402.41-1.053.41-1.455 0a1.062 1.062 0 010-1.482zm14.845-.294c.359
172-.09.738.024.992.297.254.274.344.665.237 1.025-.107.36-.396.634-.756.718-.551.128-1.1-.22-1.23-.781a1.05 1.05 0 01.757-1.26zm-.064-4.39c.314.32.49.753.49 1.206 0 .452-.176.886-.49 1.206-.315.32-.74.5-1.185.5-.444 0-.87-.18-1.184-.5a1.727 1.727 0 010-2.412 1.654 1.654 0 012.369 0zm-11.243.163c.364.484.447 1.128.218 1.691a1.665 1.665 0 01-2.188.923c-.855-.36-1.26-1.358-.907-2.228a1.68 1.68 0 011.33-1.038c.593-.08 1.183.169 1.547.652zm11.545-4.221c.368 0 .708.2.892.524.184.324.184.724 0 1.048a1.026 1.026 0 01-.892.524c-.568 0-1.03-.47-1.03-1.048 0-.579.462-1.048 1.03-1.048zm-14.358 0c.368 0 .707.2.891.524.184.324.184.724 0 1.048a1.026 1.026 0 01-.891.524c-.569 0-1.03-.47-1.03-1.048 0-.579.461-1.048 1.03-1.048zm10.031-1.475c.925 0 1.675.764 1.675 1.706s-.75 1.705-1.675 1.705-1.674-.763-1.674-1.705c0-.942.75-1.706 1.674-1.706zm-2.626-.684c.362-.082.653-.356.761-.718a1.062 1.062 0 00-.238-1.028 1.017 1.017 0 00-.996-.294c-.547.14-.881.7-.752 1.257.13.558.675.907 1.225.783zm0 16.876c.359-.087.644-.36.75-.72a1.062 1.062 0 00-.237-1.019 1.018 1.018 0 00-.985-.301 1.037 1.037 0 00-.762.717c-.108.361-.017.754.239 1.028.245.263.606.377.953.305l.043-.01zM17.19 3.5a.631.631 0 00.628-.64c0-.355-.279-.64-.628-.64a.631.631 0 00-.628.64c0 .355.28.64.628.64zm-10.38 0a.631.631 0 00.628-.64c0-.355-.28-.64-.628-.64a.631.631 0 00-.628.64c0 .355.279.64.628.64zm-5.182 7.852a.631.631 0 00-.628.64c0 .354.28.639.628.639a.63.63 0 00.627-.606l.001-.034a.62.62 0 00-.628-.64zm5.182 9.13a.631.631 0 00-.628.64c0 .355.279.64.628.64a.631.631 0 00.628-.64c0-.355-.28-.64-.628-.64zm10.38.018a.631.631 0 00-.628.64c0 .355.28.64.628.64a.631.631 0 00.628-.64c0-.355-.279-.64-.628-.64zm5.182-9.148a.631.631 0 00-.628.64c0 .354.279.639.628.639a.631.631 0 00.628-.64c0-.355-.28-.64-.628-.64zm-.384-4.992a.24.24 0 00.244-.249.24.24 0 00-.244-.249.24.24 0 00-.244.249c0 .142.122.249.244.249zM11.991.497a.24.24 0 00.245-.248A.24.24 0 0011.99 0a.24.24 0 00-.244.249c0 .133.108.236.223.247l.021.001zM2.011 6.36a.24.24 0 00.245-.249.24.24 0 00-.244-.249.24.24 0 00-.244.249.24.24 0 00.244.249zm0 11.263a.24.24 0 00-.243.248.24.24 0 00.244.249.24.24 0 00.244-.249.252.252 0 00-.244-.248zm19.995-.018a.24.24 0 00-.245.248.24.24 0 00.245.25.24.24 0 00.244-.25.252.252 0 00-.244-.248z",fill:"#3859FF",fillRule:"nonzero"})]}))}),RO="Qwen";function oh(e){"@babel/helpers - typeof";return oh=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},oh(e)}var zle=["size","style"];function PO(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,a)}return n}function P1(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?PO(Object(n),!0).forEach(function(a){qle(e,a,n[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):PO(Object(n)).forEach(function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(n,a))})}return e}function qle(e,t,n){return t=Hle(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Hle(e){var t=Vle(e,"string");return oh(t)=="symbol"?t:String(t)}function Vle(e,t){if(oh(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var a=n.call(e,t);if(oh(a)!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function Kle(e,t){if(e==null)return{};var n=Gle(e,t),a,s;if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(s=0;s<r.length;s++)a=r[s],!(t.indexOf(a)>=0)&&Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}function Gle(e,t){if(e==null)return{};var n={},a=Object.keys(e),s,r;for(r=0;r<a.length;r++)s=a[r],!(t.indexOf(s)>=0)&&(n[s]=e[s]);return n}var Wle=h.memo(function(e){var t=e.size,n=t===void 0?"1em":t,a=e.style,s=Kle(e,zle),r=Mz(RO),i=r.id,c=r.fill;return o.jsxs("svg",P1(P1({height:n,style:P1({flex:"none",lineHeight:1}
172,a),viewBox:"0 0 24 24",width:n,xmlns:"http://www.w3.org/2000/svg"},s),{},{children:[o.jsx("title",{children:RO}),o.jsx("path",{d:"M12.604 1.34c.393.69.784 1.382 1.174 2.075a.18.18 0 00.157.091h5.552c.174 0 .322.11.446.327l1.454 2.57c.19.337.24.478.024.837-.26.43-.513.864-.76 1.3l-.367.658c-.106.196-.223.28-.04.512l2.652 4.637c.172.301.111.494-.043.77-.437.785-.882 1.564-1.335 2.34-.159.272-.352.375-.68.37-.777-.016-1.552-.01-2.327.016a.099.099 0 00-.081.05 575.097 575.097 0 01-2.705 4.74c-.169.293-.38.363-.725.364-.997.003-2.002.004-3.017.002a.537.537 0 01-.465-.271l-1.335-2.323a.09.09 0 00-.083-.049H4.982c-.285.03-.553-.001-.805-.092l-1.603-2.77a.543.543 0 01-.002-.54l1.207-2.12a.198.198 0 000-.197 550.951 550.951 0 01-1.875-3.272l-.79-1.395c-.16-.31-.173-.496.095-.965.465-.813.927-1.625 1.387-2.436.132-.234.304-.334.584-.335a338.3 338.3 0 012.589-.001.124.124 0 00.107-.063l2.806-4.895a.488.488 0 01.422-.246c.524-.001 1.053 0 1.583-.006L11.704 1c.341-.003.724.032.9.34zm-3.432.403a.06.06 0 00-.052.03L6.254 6.788a.157.157 0 01-.135.078H3.253c-.056 0-.07.025-.041.074l5.81 10.156c.025.042.013.062-.034.063l-2.795.015a.218.218 0 00-.2.116l-1.32 2.31c-.044.078-.021.118.068.118l5.716.008c.046 0 .08.02.104.061l1.403 2.454c.046.081.092.082.139 0l5.006-8.76.783-1.382a.055.055 0 01.096 0l1.424 2.53a.122.122 0 00.107.062l2.763-.02a.04.04 0 00.035-.02.041.041 0 000-.04l-2.9-5.086a.108.108 0 010-.113l.293-.507 1.12-1.977c.024-.041.012-.062-.035-.062H9.2c-.059 0-.073-.026-.043-.077l1.434-2.505a.107.107 0 000-.114L9.225 1.774a.06.06 0 00-.053-.031zm6.29 8.02c.046 0 .058.02.034.06l-.832 1.465-2.613 4.585a.056.056 0 01-.05.029.058.058 0 01-.05-.029L8.498 9.841c-.02-.034-.01-.052.028-.054l.216-.012 6.722-.012z",fill:c,fillRule:"nonzero"}),o.jsx("defs",{children:o.jsxs("linearGradient",{id:i,x1:"0%",x2:"100%",y1:"0%",y2:"0%",children:[o.jsx("stop",{offset:"0%",stopColor:"#6336E7",stopOpacity:".84"}),o.jsx("stop",{offset:"100%",stopColor:"#6F69F7",stopOpacity:".84"})]})})]}))}),Yle="Kimi";function sh(e){"@babel/helpers - typeof";return sh=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},sh(e)}var Qle=["size","style"];function _O(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,a)}return n}function _1(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?_O(Object(n),!0).forEach(function(a){Xle(e,a,n[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):_O(Object(n)).forEach(function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(n,a))})}return e}function Xle(e,t,n){return t=Zle(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Zle(e){var t=Jle(e,"string");return sh(t)=="symbol"?t:String(t)}function Jle(e,t){if(sh(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var a=n.call(e,t);if(sh(a)!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function ece(e,t){if(e==null)return{};var n=tce(e,t),a,s;if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(s=0;s<r.length;s++)a=r[s],!(t.indexOf(a)>=0)&&Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}function tce(e,t){if(e==null)return{};var n={},a=Object.keys(e),s,r;for(r=0;r<a.length;r++)s=a[r],!(t.indexOf(s)>=0)&&(n[s]=e[s]);return n}var nce=h.memo(function(e){var t=e.size,n=t===void 0?"1em":t,a=e.style,s=ece(e,Qle);return o.jsxs("svg",_1(_1({fill:"currentColor",fillRule:"evenodd",height:n,style:_1({flex:"none",lineHeight:1},a),viewBox:"0 0 24 24",width:n,xmlns:"http://www.w3.org/2000/svg"},s),{},{children:[o.jsx("title",{children:Yle}),o.jsx("path",{d:"M21.846 0a1.923 1.923 0 110 3.846H20.15a.226.226 0 01-.227-.226V1.923C19.923.861 20.784 0 21.846 0z"}),o.jsx("path",{d:"M11.065 11.199l7.257-7.2c.137-.136.06-.41-.116-.41H14.3a.164.164 0 00-.117.051l-7.82 7.756c-.122.12-.302.013-.302-.179V3.82c0-.127-.083-.23-.185-.23H3.186c-.103 0-.186.103-.186.23V19.77c0 .128.083.23.186.23h2.69c.103 0 .186-.102.186-.23v-3.25c0-.069.025-.135.069-.178l2.424-2.406a.158.158 0 01.205-.023l6.484 4.772a7.677 7.677 0 003.453 1.283c.108.012.2-.095.2-.23v-3.06c0-.117-.07-.212-.164-.227a5.028 5.028 0 01-2.027-.807l-5.613-4.064c-.117-.078-.132-.279-.028-.381z"})]}))}),ace="OpenAI";function rh(e){"@babel/helpers - typeof";return rh=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},rh(e)}var oce=["size","style"];function jO(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,a)}return n}function j1(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};
172t%2?jO(Object(n),!0).forEach(function(a){sce(e,a,n[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):jO(Object(n)).forEach(function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(n,a))})}return e}function sce(e,t,n){return t=rce(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function rce(e){var t=ice(e,"string");return rh(t)=="symbol"?t:String(t)}function ice(e,t){if(rh(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var a=n.call(e,t);if(rh(a)!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function lce(e,t){if(e==null)return{};var n=cce(e,t),a,s;if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(s=0;s<r.length;s++)a=r[s],!(t.indexOf(a)>=0)&&Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}function cce(e,t){if(e==null)return{};var n={},a=Object.keys(e),s,r;for(r=0;r<a.length;r++)s=a[r],!(t.indexOf(s)>=0)&&(n[s]=e[s]);return n}var dce=h.memo(function(e){var t=e.size,n=t===void 0?"1em":t,a=e.style,s=lce(e,oce);return o.jsxs("svg",j1(j1({fill:"currentColor",fillRule:"evenodd",height:n,style:j1({flex:"none",lineHeight:1},a),viewBox:"0 0 24 24",width:n,xmlns:"http://www.w3.org/2000/svg"},s),{},{children:[o.jsx("title",{children:ace}),o.jsx("path",{d:"M9.205 8.658v-2.26c0-.19.072-.333.238-.428l4.543-2.616c.619-.357 1.356-.523 2.117-.523 2.854 0 4.662 2.212 4.662 4.566 0 .167 0 .357-.024.547l-4.71-2.759a.797.797 0 00-.856 0l-5.97 3.473zm10.609 8.8V12.06c0-.333-.143-.57-.429-.737l-5.97-3.473 1.95-1.118a.433.433 0 01.476 0l4.543 2.617c1.309.76 2.189 2.378 2.189 3.948 0 1.808-1.07 3.473-2.76 4.163zM7.802 12.703l-1.95-1.142c-.167-.095-.239-.238-.239-.428V5.899c0-2.545 1.95-4.472 4.591-4.472 1 0 1.927.333 2.712.928L8.23 5.067c-.285.166-.428.404-.428.737v6.898zM12 15.128l-2.795-1.57v-3.33L12 8.658l2.795 1.57v3.33L12 15.128zm1.796 7.23c-1 0-1.927-.332-2.712-.927l4.686-2.712c.285-.166.428-.404.428-.737v-6.898l1.974 1.142c.167.095.238.238.238.428v5.233c0 2.545-1.974 4.472-4.614 4.472zm-5.637-5.303l-4.544-2.617c-1.308-.761-2.188-2.378-2.188-3.948A4.482 4.482 0 014.21 6.327v5.423c0 .333.143.571.428.738l5.947 3.449-1.95 1.118a.432.432 0 01-.476 0zm-.262 3.9c-2.688 0-4.662-2.021-4.662-4.519 0-.19.024-.38.047-.57l4.686 2.71c.286.167.571.167.856 0l5.97-3.448v2.26c0 .19-.07.333-.237.428l-4.543 2.616c-.619.357-1.356.523-2.117.523zm5.899 2.83a5.947 5.947 0 005.827-4.756C22.287 18.339 24 15.84 24 13.296c0-1.665-.713-3.282-1.998-4.448.119-.5.19-.999.19-1.498 0-3.401-2.759-5.947-5.946-5.947-.642 0-1.26.095-1.88.31A5.962 5.962 0 0010.205 0a5.947 5.947 0 00-5.827 4.757C1.713 5.447 0 7.945 0 10.49c0 1.666.713 3.283 1.998 4.448-.119.5-.19 1-.19 1.499 0 3.401 2.759 5.946 5.946 5.946.642 0 1.26-.095 1.88-.309a5.96 5.96 0 004.162 1.713z"})]}))}),uce="XiaomiMiMo";function ih(e){"@babel/helpers - typeof";return ih=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},ih(e)}var mce=["size","style"];function NO(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,a)}return n}function N1(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?NO(Object(n),!0).forEach(function(a){pce(e,a,n[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):NO(Object(n)).forEach(function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(n,a))})}return e}function pce(e,t,n){return t=fce(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function fce(e){var t=gce(e,"string");return ih(t)=="symbol"?t:String(t)}function gce(e,t){if(ih(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var a=n.call(e,t);if(ih(a)!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function hce(e,t){if(e==null)return{};var n=yce(e,t),a,s;if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(s=0;s<r.length;s++)a=r[s],!(t.indexOf(a)>=0)&&Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}function yce(e,t){if(e==null)return{};var n={},a=Object.keys(e),s,r;for(r=0;r<a.length;r++)s=a[r],!(t.indexOf(s)>=0)&&(n[s]=e[s]);return n}var vce=h.memo(function(e){var t=e.size,n=t===void 0?"1em":t,a=e.style,s=hce(e,mce);
172return o.jsxs("svg",N1(N1({fill:"currentColor",fillRule:"evenodd",height:n,style:N1({flex:"none",lineHeight:1},a),viewBox:"0 0 24 24",width:n,xmlns:"http://www.w3.org/2000/svg"},s),{},{children:[o.jsx("title",{children:uce}),o.jsx("path",{d:"M.958 15.936a.459.459 0 01.459.44v2.729a.46.46 0 01-.918 0v-2.729a.459.459 0 01.459-.44zm4.814-2.035a.46.46 0 01.553.45v4.754a.458.458 0 11-.918 0V15.48L3.74 17.202a.462.462 0 01-.655.016.462.462 0 01-.065-.082L.628 14.67a.459.459 0 01.658-.637l2.124 2.187 2.127-2.188a.46.46 0 01.235-.13zm2.068.004a.46.46 0 01.458.445v4.755a.46.46 0 01-.458.458.459.459 0 01-.458-.458V14.35a.459.459 0 01.458-.445zm1.973 2.014a.46.46 0 01.46.457v2.729a.46.46 0 01-.784.324.46.46 0 01-.134-.324v-2.729a.46.46 0 01.458-.458zm.002-2.045a.458.458 0 01.328.157l2.127 2.19 2.125-2.19a.459.459 0 01.784.318v4.756a.46.46 0 01-.455.458.46.46 0 01-.458-.458V15.48l-1.667 1.723a.46.46 0 01-.65.008l-.005-.005c0-.002-.002-.002-.004-.003l-2.455-2.534a.46.46 0 01-.008-.667.461.461 0 01.338-.128zm6.797 1.206a.46.46 0 01.53.651A1.966 1.966 0 0019.81 18.4a.462.462 0 01.623.18.46.46 0 01-.181.624 2.863 2.863 0 01-1.38.353l-.142-.004a2.88 2.88 0 01-2.393-4.263.461.461 0 01.274-.21zm.864-.931a2.884 2.884 0 013.915 3.914.46.46 0 01-.402.24l-.057-.004a.458.458 0 01-.164-.055.46.46 0 01-.182-.622 1.967 1.967 0 00-2.669-2.67.459.459 0 11-.441-.803zM9.59 6.368c1.481 0 1.696 1.202 1.696 1.654v2.648h-.917v-.432c-.26.346-.792.535-1.36.535-.133 0-1.289-.03-1.384-1.136-.082-.932.675-1.61 2.053-1.61h.691c0-.563-.367-.886-.983-.886-.44.013-.864.174-1.2.458l-.36-.664c.484-.379 1.012-.567 1.764-.567zm4.427.1c1.263 0 2.082.97 2.083 2.15 0 1.181-.824 2.154-2.083 2.154-1.26 0-2.084-.972-2.084-2.152 0-1.18.82-2.153 2.084-2.153zm6.801.015c.68 0 1.202.465 1.197 1.548v2.642H21.1V8.29c0-.312-.002-.98-.63-.98s-.628.667-.628.838v2.524h-.89V8.148c0-.17-.001-.838-.63-.838-.628 0-.628.668-.628.98v2.383h-.917v-4.03h.917V7a1.22 1.22 0 01.947-.516c.398 0 .76.193.982.686a1.321 1.321 0 011.195-.686zm-18.093.872l1.457-1.772H5.32L3.311 8.07l2.14 2.602H4.24L2.725 8.796 1.21 10.672H0L2.138 8.07.13 5.583h1.138l1.458 1.772zm4.149 3.317h-.916V6.644h.916v4.028zm16.99 0h-.916V6.644h.916v4.028zM9.925 8.71c-1.055 0-1.359.412-1.326.742.032.329.324.537.757.537a1.013 1.013 0 001.014-.968l.002-.31h-.447zM14.018 7.3c-.663 0-1.184.487-1.184 1.32 0 .832.52 1.32 1.184 1.32.662 0 1.182-.49 1.182-1.32 0-.832-.52-1.32-1.182-1.32zM6.417 5.001a.568.568 0 01.587.582.588.588 0 01-1.175 0A.57.57 0 016.417 5zm16.991 0a.57.57 0 01.592.582.588.588 0 01-1.174 0 .57.57 0 01.357-.542.572.572 0 01.225-.04z"})]}))});function Ez(e){return e&&e.trim().toLowerCase()||null}const bce={openai:dce,anthropic:ele,google:kO,gemini:kO,deepseek:lle,minimax:Sle,bytedance:Dle,xiaomi:vce,zhipu:Fle,moonshot:nce,qwen:Wle};function xce(e){const t=Ez(e);return t?bce[t]??null:null}function Iz(e){return e?.includes("/")?e.slice(0,e.indexOf("/")):e??""}const $ce={x:"M18.901 1.153h3.68l-8.04 9.19L24 22.846h-7.406l-5.8-7.584-6.638 7.584H.474l8.6-9.83L0 1.154h7.594l5.243 6.932ZM17.61 20.644h2.039L6.486 3.24H4.298Z",telegram:"M11.944 0A12 12 0 0 0 0 12a12 12 0 0 0 12 12 12 12 0 0 0 12-12A12 12 0 0 0 12 0a12 12 0 0 0-.056 0zm4.962 7.224c.1-.002.321.023.465.14a.506.506 0 0 1 .171.325c.016.093.036.306.02.472-.18 1.898-.962 6.502-1.36 8.627-.168.9-.499 1.201-.82 1.23-.696.065-1.225-.46-1.9-.902-1.056-.693-1.653-1.124-2.678-1.8-1.185-.78-.417-1.21.258-1.91.177-.184 3.247-2.977 3.307-3.23.007-.032.014-.15-.056-.212s-.174-.041-.249-.024c-.106.024-1.793 1.14-5.061 3.345-.48.33-.913.49-1.302.48-.428-.008-1.252-.241-1.865-.44-.752-.245-1.349-.374-1.297-.789.027-.216.325-.437.893-.663 3.498-1.524 5.83-2.529 6.998-3.014 3.332-1.386 4.025-1.627 4.476-1.635z",discord:"M20.317 4.3698a19.7913 19.7913 0 0 0-4.8851-1.5152.0741.0741 0 0 0-.0785.0371c-.211.3753-.4447.8648-.6083 1.2495-1.8447-.2762-3.68-.2762-5.4868 0-.1636-.3933-.4058-.8742-.6177-1.2495a.077.077 0 0 0-.0785-.037 19.7363 19.7363 0 0 0-4.8852 1.515.0699.0699 0 0 0-.0321.0277C.5334 9.0458-.319 13.5799.0992 18.0578a.0824.0824 0 0 0 .0312.0561c2.0528 1.5076 4.0413 2.4228 5.9929 3.0294a.0777.0777 0 0 0 .0842-.0276c.4616-.6304.8731-1.2952 1.226-1.9942a.076.076 0 0 0-.0416-.1057c-.6528-.2476-1.2743-.5495-1.8722-.8923a.077.077 0 0 1-.0076-.1277c.1258-.0943.2517-.1923.3718-.2914a.0743.0743 0 0 1 .0776-.0105c3.9278 1.7933 8.18 1.7933 12.0614 0a.0739.0739 0 0 1 .0785.0095c.1202.099.246.1981.3728.2924a.077.077 0 0 1-.0066.1276 12.2986 12.2986 0 0 1-1.873.8914.0766.0766 0 0 0-.0407.1067c.3604.698.7719 1.3628 1.225 1.9932a.076.076 0 0 0 .0842.0286c1.961-.6067 3.9495-1.5219 6.0023-3.0294a.077.077 0 0 0 .0313-.0552c.5004-5.177-.8382-9.6739-3.5485-13.6604a.061.061 0 0 0-.0312-.0286zM8.02 15.3312c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9555-2.4189 2.157-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.9555 2.4189-2.1569 2.4189zm7.9748 0c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9554-2.4189 2.1569-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.946 2.4189-2.1568 2.4189Z",reddit:"M12 0C5.373 0 0 5.373 0 12c0 3.314 1.343 6.314 3.515 8.485l-2.286 2.286C.775 23.225 1.097 24 1.738 24H12c6.627 0 12-5.373 12-12S18.627 0 12 0Zm4.388 3.199c1.104 0 1.999.895 1.999 1.999 0 1.105-.895 2-1.999 2-.946 0-1.739-.657-1.947-1.539v.002c-1.147.162-2.032 1.15-2.032 2.341v.007c1.776.067 3.4.567 4.686 1.363.473-.363 1.064-.58 1.707-.58 1.547 0 2.802 1.254 2.802 2.802 0 1.117-.655 2.081-1.601 2.531-.088 3.256-3.637 5.876-7.997 5.876-4.361 0-7.905-2.617-7.998-5.87-.954-.447-1.614-1.415-1.614-2.538 0-1.548 1.255-2.802 2.803-2.802.645 0 1.239.218 1.712.585 1.275-.79 2.881-1.291 4.64-1.365v-.01c0-1.663 1.263-3.034 2.88-3.207.188-.911.993-1.595 1.959-1.595Zm-8.085 8.376c-.784 0-1.459.78-1.506 1.797-.047 1.016.
17264 1.429 1.426 1.429.786 0 1.371-.369 1.418-1.385.047-1.017-.553-1.841-1.338-1.841Zm7.406 0c-.786 0-1.385.824-1.338 1.841.047 1.017.634 1.385 1.418 1.385.785 0 1.473-.413 1.426-1.429-.046-1.017-.721-1.797-1.506-1.797Zm-3.703 4.013c-.974 0-1.907.048-2.77.135-.147.015-.241.168-.183.305.483 1.154 1.622 1.964 2.953 1.964 1.33 0 2.47-.81 2.953-1.964.057-.137-.037-.29-.184-.305-.863-.087-1.795-.135-2.769-.135Z",linkedin:"M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z",whatsapp:"M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413Z",wechat:"M8.691 2.188C3.891 2.188 0 5.476 0 9.53c0 2.212 1.17 4.203 3.002 5.55a.59.59 0 0 1 .213.665l-.39 1.48c-.019.07-.048.141-.048.213 0 .163.13.295.29.295a.326.326 0 0 0 .167-.054l1.903-1.114a.864.864 0 0 1 .717-.098 10.16 10.16 0 0 0 2.837.403c.276 0 .543-.027.811-.05-.857-2.578.157-4.972 1.932-6.446 1.703-1.415 3.882-1.98 5.853-1.838-.576-3.583-4.196-6.348-8.596-6.348zM5.785 5.991c.642 0 1.162.529 1.162 1.18a1.17 1.17 0 0 1-1.162 1.178A1.17 1.17 0 0 1 4.623 7.17c0-.651.52-1.18 1.162-1.18zm5.813 0c.642 0 1.162.529 1.162 1.18a1.17 1.17 0 0 1-1.162 1.178 1.17 1.17 0 0 1-1.162-1.178c0-.651.52-1.18 1.162-1.18zm5.34 2.867c-1.797-.052-3.746.512-5.28 1.786-1.72 1.428-2.687 3.72-1.78 6.22.942 2.453 3.666 4.229 6.884 4.229.826 0 1.622-.12 2.361-.336a.722.722 0 0 1 .598.082l1.584.926a.272.272 0 0 0 .14.047c.134 0 .24-.111.24-.247 0-.06-.023-.12-.038-.177l-.327-1.233a.582.582 0 0 1-.023-.156.49.49 0 0 1 .201-.398C23.024 18.48 24 16.82 24 14.98c0-3.21-2.931-5.837-6.656-6.088V8.89c-.135-.01-.27-.027-.407-.03zm-2.53 3.274c.535 0 .969.44.969.982a.976.976 0 0 1-.969.983.976.976 0 0 1-.969-.983c0-.542.434-.982.97-.982zm4.844 0c.535 0 .969.44.969.982a.976.976 0 0 1-.969.983.976.976 0 0 1-.969-.983c0-.542.434-.982.969-.982z",facebook:"M9.101 23.691v-7.98H6.627v-3.667h2.474v-1.58c0-4.085 1.848-5.978 5.858-5.978.401 0 .955.042 1.468.103a8.68 8.68 0 0 1 1.141.195v3.325a8.623 8.623 0 0 0-.653-.036 26.805 26.805 0 0 0-.733-.009c-.707 0-1.259.096-1.675.309a1.686 1.686 0 0 0-.679.622c-.258.42-.374.995-.374 1.752v1.297h3.919l-.386 2.103-.287 1.564h-3.246v8.245C19.396 23.238 24 18.179 24 12.044c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.628 3.874 10.35 9.101 11.647Z"};function Xb({brand:e,size:t,...n}){const a=t??16;return o.jsx("svg",{viewBox:"0 0 24 24",width:a,height:a,fill:"currentColor","aria-hidden":"true",...n,children:o.jsx("path",{d:$ce[e]})})}const wce={visa:"M9.112 8.262L5.97 15.758H3.92L2.374 9.775c-.094-.368-.175-.503-.461-.658C1.447 8.864.677 8.627 0 8.479l.046-.217h3.3a.904.904 0 01.894.764l.817 4.338 2.018-5.102zm8.033 5.049c.008-1.979-2.736-2.088-2.717-2.972.006-.269.262-.555.822-.628a3.66 3.66 0 011.913.336l.34-1.59a5.207 5.207 0 00-1.814-.333c-1.9
17217 0-3.266 1.02-3.278 2.479-.012 1.079.963 1.68 1.698 2.04.756.367 1.01.603 1.006.931-.005.504-.602.725-1.16.734-.975.015-1.54-.263-1.992-.473l-.351 1.642c.453.208 1.289.39 2.156.398 2.037 0 3.37-1.006 3.377-2.564m5.061 2.447H24l-1.565-7.496h-1.656a.883.883 0 00-.826.55l-2.909 6.946h2.036l.405-1.12h2.488zm-2.163-2.656l1.02-2.815.588 2.815zm-8.16-4.84l-1.603 7.496H8.34l1.605-7.496z",mastercard:"M11.343 18.031c.058.049.12.098.181.146-1.177.783-2.59 1.238-4.107 1.238C3.32 19.416 0 16.096 0 12c0-4.095 3.32-7.416 7.416-7.416 1.518 0 2.931.456 4.105 1.238-.06.051-.12.098-.165.15C9.6 7.489 8.595 9.688 8.595 12c0 2.311 1.001 4.51 2.748 6.031zm5.241-13.447c-1.52 0-2.931.456-4.105 1.238.06.051.12.098.165.15C14.4 7.489 15.405 9.688 15.405 12c0 2.31-1.001 4.507-2.748 6.031-.058.049-.12.098-.181.146 1.177.783 2.588 1.238 4.107 1.238C20.68 19.416 24 16.096 24 12c0-4.094-3.32-7.416-7.416-7.416zM12 6.174c-.096.075-.189.15-.28.231C10.156 7.764 9.169 9.765 9.169 12c0 2.236.987 4.236 2.551 5.595.09.08.185.158.28.232.096-.074.189-.152.28-.232 1.563-1.359 2.551-3.359 2.551-5.595 0-2.235-.987-4.236-2.551-5.595-.09-.08-.184-.156-.28-.231z",unionpay:"M2.6 17.32 4.4 6.68Q4.6 5.5 5.8 5.5h4.2Q11.2 5.5 11 6.68L9.2 17.32Q9 18.5 7.8 18.5H3.6Q2.4 18.5 2.6 17.32ZM11.9 5.5h3.6Q16.7 5.5 16.5 6.68L14.7 17.32Q14.5 18.5 13.3 18.5H9.7ZM17.4 5.5h3.6Q22.2 5.5 22 6.68L20.2 17.32Q20 18.5 18.8 18.5H15.2Z",alipay:"M19.695 15.07c3.426 1.158 4.203 1.22 4.203 1.22V3.846c0-2.124-1.705-3.845-3.81-3.845H3.914C1.808.001.102 1.722.102 3.846v16.31c0 2.123 1.706 3.845 3.813 3.845h16.173c2.105 0 3.81-1.722 3.81-3.845v-.157s-6.19-2.602-9.315-4.119c-2.096 2.602-4.8 4.181-7.607 4.181-4.75 0-6.361-4.19-4.112-6.949.49-.602 1.324-1.175 2.617-1.497 2.025-.502 5.247.313 8.266 1.317a16.796 16.796 0 0 0 1.341-3.302H5.781v-.952h4.799V6.975H4.77v-.953h5.81V3.591s0-.409.411-.409h2.347v2.84h5.744v.951h-5.744v1.704h4.69a19.453 19.453 0 0 1-1.986 5.06c1.424.52 2.702 1.011 3.654 1.333m-13.81-2.032c-.596.06-1.71.325-2.321.869-1.83 1.608-.735 4.55 2.968 4.55 2.151 0 4.301-1.388 5.99-3.61-2.403-1.182-4.438-2.028-6.637-1.809","wechat-pay":"M8.691 2.188C3.891 2.188 0 5.476 0 9.53c0 2.212 1.17 4.203 3.002 5.55a.59.59 0 0 1 .213.665l-.39 1.48c-.019.07-.048.141-.048.213 0 .163.13.295.29.295a.326.326 0 0 0 .167-.054l1.903-1.114a.864.864 0 0 1 .717-.098 10.16 10.16 0 0 0 2.837.403c.276 0 .543-.027.811-.05-.857-2.578.157-4.972 1.932-6.446 1.703-1.415 3.882-1.98 5.853-1.838-.576-3.583-4.196-6.348-8.596-6.348zM5.785 5.991c.642 0 1.162.529 1.162 1.18a1.17 1.17 0 0 1-1.162 1.178A1.17 1.17 0 0 1 4.623 7.17c0-.651.52-1.18 1.162-1.18zm5.813 0c.642 0 1.162.529 1.162 1.18a1.17 1.17 0 0 1-1.162 1.178 1.17 1.17 0 0 1-1.162-1.178c0-.651.52-1.18 1.162-1.18zm5.34 2.867c-1.797-.052-3.746.512-5.28 1.786-1.72 1.428-2.687 3.72-1.78 6.22.942 2.453 3.666 4.229 6.884 4.229.826 0 1.622-.12 2.361-.336a.722.722 0 0 1 .598.082l1.584.926a.272.272 0 0 0 .14.047c.134 0 .24-.111.24-.247 0-.06-.023-.12-.038-.177l-.327-1.233a.582.582 0 0 1-.023-.156.49.49 0 0 1 .201-.398C23.024 18.48 24 16.82 24 14.98c0-3.21-2.931-5.837-6.656-6.088V8.89c-.135-.01-.27-.027-.407-.03zm-2.53 3.274c.535 0 .969.44.969.982a.976.976 0 0 1-.969.983.976.976 0 0 1-.969-.983c0-.542.434-.982.97-.982zm4.844 0c.535 0 .969.44.969.982a.976.976 0 0 1-.969.983.976.976 0 0 1-.969-.983c0-.542.434-.982.969-.982z"};function kg({brand:e,size:t,...n}){const a=t??16;return o.jsx("svg",{viewBox:"0 0 24 24",width:a,height:a,fill:"currentColor","aria-hidden":"true",...n,children:o.jsx("path",{d:wce[e]})})}function Lc({size:e,viewBox:t="0 0 24 24",fill:n="none",children:a,...s}){const r=e??20;return o.jsx("svg",{viewBox:t,width:r,height:r,"aria-hidden":"true",fill:n,...s,children:a})}const Oz="#231815";function Lz({size:e,...t}){const n=e??20;return o.jsx("svg",{viewBox:"0 0 2267.72 2267.72",width:n,height:n,fill:Oz,"aria-hidden":"true",...t,children:o.jsx("path",{d:"M1155.06,401.78c38.08,1.13,77.76,5.64,115.39,12.71,168.56,31.67,324.71,124.52,431.51,258.11-11.03-2.67-21.77-6.18-32.89-8.57-30.89-6.63-62.8-8.63-94.28-5.5-168.42-156.38-411.66-212.06-632.44-143.92-314.5,97.06-506.52,415.56-445.42,740.76,3.55,18.88,8.18,48.47,20.56,63.11,26,30.74,73.06,23.08,91.26-11.53,83.78-141.01,161.58-285.76,245.94-426.4,38.14-63.58,95.97-98.22,172.17-88.94l176.65,35.13-139.55,243.31.22.96c67.16,49.83,162.53,40.49,218.26-21.88,7.87-8.81,13.18-17.7,19.55-27.42,35.88-54.78,65.81-114.81,99.6-171.24,61.68-103.02,182.6-149.1,295.73-99.45,77.2,33.88,115.15,95.33,138.44,173.51,58.02,194.77,32.24,406.85-70.81,581.33-152.2,257.69-444.97,397.27-743,351.95-180.47-27.44-348.3-124.75-460.77-267.76,11.01,3.05,21.84,6.68,33.03,9.17,20.66,4.6,41.6,6.67,62.74,7.73l32.18-1.35c186.35,177.6,467.7,226.11,704.27,122.55,281.12-123.07,438.9-427.43,374.4-729.81-6.32-29.64-12.48-61.67-46.89-69.82-40.03-9.49-55.52,16.98-72.67,45.98-78.93,133.45-154.82,268.85-232.71,402.93-3.53,6.08-6.41,12.57-10.02,18.6-35.07,58.48-101.12,90.36-169.21,80.12l-175.2-35.12,139.5-242.61-.13-.93c-56.81-42.28-134.75-43.47-192.46-2.18-20.2,14.45-34.34,31.48-47.34,52.48-37.62,60.75-69.96,131.48-111.12,188.35-105.38,145.58-327.97,120.94-400.07-43.04-40.91-93.05-54.02-222.36-45.38-323.06,31.69-369.22,338.21-657.3,708.39-668.26,13.78-.41,28.8-.41,42.58,0Z"})})}const kce=2267.72/850.39;function Cce({size:e=20,...t}){const n=Number(e);return o.jsxs("svg",{viewBox:"0 0 2267.72 850.39",width:n*kce,height:n,fill:Oz,"aria-hidden":"true",...t,children:[o.jsx("path",{d:"M397.62,208.16c11.29.33,23.05,1.67,34.21,3.77,49.97,9.39,96.27,36.92,127.93,76.52-3.27-.79-6.45-1.83-9.75-2.54-9.16-1.97-18.62-2.56-27.95-1.63-49.93-46.36-122.04-62.87-187.5-42.67-93.24,28.78-150.17,123.2-132.05,219.61,1.05,5.6,2.43,14.37,6.1,18.71,7.71,9.11,21.66,
1726.84,27.06-3.42,24.84-41.8,47.9-84.72,72.91-126.42,11.31-18.85,28.45-29.12,51.04-26.37l52.37,10.41-41.37,72.13.06.29c19.91,14.77,48.18,12,64.71-6.49,2.33-2.61,3.91-5.25,5.8-8.13,10.64-16.24,19.51-34.04,29.53-50.77,18.29-30.54,54.13-44.2,87.67-29.48,22.89,10.04,34.14,28.26,41.04,51.44,17.2,57.74,9.56,120.62-20.99,172.35-45.12,76.4-131.92,117.78-220.28,104.34-53.5-8.14-103.26-36.98-136.6-79.38,3.26.9,6.48,1.98,9.79,2.72,6.13,1.36,12.33,1.98,18.6,2.29l9.54-.4c55.25,52.65,138.66,67.04,208.8,36.33,83.35-36.49,130.12-126.72,111-216.37-1.87-8.79-3.7-18.28-13.9-20.7-11.87-2.81-16.46,5.03-21.55,13.63-23.4,39.56-45.9,79.71-68.99,119.46-1.05,1.8-1.9,3.73-2.97,5.51-10.4,17.34-29.98,26.79-50.17,23.75l-51.94-10.41,41.36-71.93-.04-.27c-16.84-12.53-39.95-12.89-57.06-.65-5.99,4.29-10.18,9.33-14.04,15.56-11.15,18.01-20.74,38.98-32.94,55.84-31.24,43.16-97.23,35.86-118.61-12.76-12.13-27.59-16.02-65.92-13.45-95.78,9.39-109.46,100.27-194.87,210.02-198.12,4.08-.12,8.54-.12,12.62,0Z"}),o.jsxs("g",{children:[o.jsx("path",{d:"M1295.63,313.19c-59.72,0-108.14,48.42-108.14,108.14s48.42,108.17,108.14,108.17c39.35,0,73.78-20.99,92.73-52.39l-1.18-.69h-66.16c-7.72,3.58-16.33,5.55-25.39,5.55-33.47,0-60.61-27.13-60.61-60.64s27.13-60.61,60.61-60.61c25.06,0,46.58,15.21,55.81,36.86h-80.25v47.5h129.98c1.74-7.65,2.63-15.6,2.63-23.75s-.92-16.13-2.63-23.75c-10.81-48.29-53.97-84.39-105.54-84.39Z"}),o.jsx("path",{d:"M1060.73,312.89c-38.47,0-72.23,20.07-91.39,50.32-10.61,16.72-16.75,36.56-16.75,57.81,0,3.15.13,6.24.43,9.33-.3,3.05-.43,6.18-.43,9.3v90.14c9.13-6.04,17.28-13.47,24.18-21.94,2.69-3.28,5.19-6.77,7.42-10.38,8.28-12.98,13.83-27.86,15.9-43.82v-32.62c0-33.47,27.17-60.61,60.64-60.61s60.64,27.13,60.64,60.61v108.2c28.64-19.48,47.5-52.33,47.5-89.58,0-3.12-.13-6.24-.43-9.3.3-3.09.43-6.18.43-9.33,0-59.72-48.42-108.14-108.14-108.14Z"}),o.jsx("path",{d:"M890.05,334.31c-17.97-13.27-40.17-21.12-64.22-21.12-59.72,0-108.14,48.42-108.14,108.14,0,40.5,22.24,75.78,55.15,94.31l27.76-39.16c-20.89-9.56-35.41-30.65-35.41-55.15,0-33.47,27.13-60.61,60.64-60.61,4.27,0,8.41.43,12.42,1.28,27.53,5.72,48.22,30.12,48.22,59.32,0,31.04-23.32,56.63-53.38,60.18l-11.4,16.1-20.6,29.04c7.95,1.87,16.23,2.86,24.74,2.86,7.95,0,15.73-.85,23.19-2.5,48.58-10.61,84.95-53.87,84.95-105.67,0-35.67-17.28-67.31-43.92-87.02Z"}),o.jsx("path",{d:"M1515.55,313.31c-16.29,0-31.73,3.58-45.56,10.02v-115.27c-28.71,19.45-47.57,52.33-47.57,89.61,0,1.25.03,2.46.07,3.71v228.23h47.5v-148.18c11.1-12.61,27.4-20.6,45.56-20.6,25.1,0,46.65,15.27,55.84,37.02,3.05,7.23,4.76,15.21,4.76,23.59v108.17h47.47l.03-105.15v-5.09c-.33-17.77-4.93-34.46-12.84-49.14-18.26-33.9-54.07-56.93-95.26-56.93Z"}),o.jsx("path",{d:"M1750.45,313.48c-59.75,0-108.17,48.42-108.17,108.14,0,49.37,33.05,91.02,78.25,103.97,9.49,2.73,19.55,4.2,29.93,4.2,59.72,0,108.14-48.42,108.14-108.17,0-.49,0-1.02-.03-1.51-.79-59.03-48.88-106.63-108.11-106.63ZM1750.45,482.26c-7.03,0-13.8-1.18-20.07-3.42-23.65-8.28-40.57-30.75-40.57-57.22,0-33.47,27.13-60.61,60.64-60.61s58.27,24.87,60.44,56.34c.1,1.41.16,2.83.16,4.27,0,33.51-27.13,60.64-60.61,60.64Z"}),o.jsx("path",{d:"M1985.35,313.19c-59.13,0-107.19,47.47-108.11,106.36v4.57c.07,1.91.13,3.78.3,5.65-.1-.07-.2-.13-.3-.16l-.03,188.29c21.48-12.15,38.37-31.44,47.5-54.66v-141.91c0-33.47,27.17-60.61,60.64-60.61s60.64,27.13,60.64,60.61-27.13,60.64-60.64,60.64c-9.85,0-19.18-2.33-27.4-6.54v50.55c8.74,2.3,17.94,3.51,27.4,3.51,59.72,0,108.14-48.42,108.14-108.17s-48.42-108.14-108.14-108.14Z"}),o.jsx("rect",{x:"952.59",y:"421.64",width:"4.83",height:"16.21"}),o.jsx("rect",{x:"1166.83",y:"421.34",width:"2.04",height:"19.51"})]})]})}function Sce({size:e,...t}){return o.jsxs(Lc,{size:e,...t,children:[o.jsx("rect",{x:"6",y:"6",width:"12",height:"12",rx:"2.5",stroke:"currentColor",strokeWidth:"1.8"}),o.jsx("path",{d:"M9.5 3.5v2M14.5 3.5v2M9.5 18.5v2M14.5 18.5v2M3.5 9.5h2M3.5 14.5h2M18.5 9.5h2M18.5 14.5h2",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round"})]})}function Xo({authorSlug:e,size:t,className:n}){const a=xce(e);return a?o.jsx(a,{size:t??20,className:n}):o.jsx(Sce,{size:t,className:n})}function Ace({size:e,...t}
172){return o.jsx(Lc,{size:e,fill:"currentColor",...t,children:o.jsx("path",{d:"M13.5 9.4c0-.66.55-.92 1.43-.92 1.27 0 2.88.39 4.15 1.08V6.07A11 11 0 0 0 14.93 5.3c-3.4 0-5.66 1.78-5.66 4.75 0 4.64 6.38 3.9 6.38 5.9 0 .78-.68 1.03-1.62 1.03-1.39 0-3.16-.57-4.56-1.34v3.55a11.6 11.6 0 0 0 4.56.95c3.48 0 5.88-1.72 5.88-4.73 0-5.01-6.41-4.12-6.41-6.01Z"})})}function QT({size:e,...t}){return o.jsx(Lc,{size:e,fill:"currentColor",...t,children:o.jsx("path",{fillRule:"evenodd",d:"M4.594 6.677C6.67-2.226 18.746-2.211 21.16 6.632c.353 1.297 1.725 7.582-1.673 13.747-1.545 2.797-5.841 5.49-6.99 1.883C8.6 25.477 3.315 24.1 5.789 18.609l-.318.143c-3.57 1.305-3.863-1.208-3.173-2.513.45-.84.727-1.335.937-1.897.353-.975.458-1.568.593-2.498.27-1.837.277-3.607.765-5.167zm8.37.01a.92.92 0 00-.81.428c-.217.323-.33.825-.33 1.462 0 .705.15 1.89 1.14 1.89h.008c.757 0 1.214-.705 1.214-1.89 0-.622-.127-1.125-.367-1.455a1.014 1.014 0 00-.855-.435zm4.08 0a.92.92 0 00-.81.428c-.217.323-.33.825-.33 1.462 0 .705.15 1.89 1.14 1.89h.008c.757 0 1.215-.705 1.215-1.89 0-.622-.128-1.125-.368-1.455a1.014 1.014 0 00-.855-.435z"})})}function Tce({size:e,...t}){return o.jsxs(Lc,{size:e,...t,children:[o.jsx("path",{d:"M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7S2 12 2 12Z",stroke:"currentColor",strokeWidth:"1.8",strokeLinejoin:"round"}),o.jsx("circle",{cx:"12",cy:"12",r:"3",stroke:"currentColor",strokeWidth:"1.8"})]})}function Rce({size:e,...t}){return o.jsx(Lc,{size:e,...t,children:o.jsx("path",{d:"M14.7 6.3a4 4 0 0 0-5.3 5.3l-6 6a1.5 1.5 0 0 0 2.1 2.1l6-6a4 4 0 0 0 5.3-5.3l-2.6 2.6-2.1-2.1 2.6-2.6Z",stroke:"currentColor",strokeWidth:"1.8",strokeLinejoin:"round"})})}function Pce({size:e,...t}){return o.jsxs(Lc,{size:e,...t,children:[o.jsx("path",{d:"M8 4c-2 0-2.5 1.5-2.5 3.5S5 11 3.5 11.5C5 12 5.5 13.5 5.5 16S6 20 8 20",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round"}),o.jsx("path",{d:"M16 4c2 0 2.5 1.5 2.5 3.5S19 11 20.5 11.5C19 12 18.5 13.5 18.5 16S18 20 16 20",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round"})]})}function _ce({size:e,...t}){return o.jsxs(Lc,{size:e,...t,children:[o.jsx("rect",{x:"3",y:"4",width:"18",height:"14",rx:"2.5",stroke:"currentColor",strokeWidth:"1.8"}),o.jsx("path",{d:"m6 16 3.5-3.5 2.5 2.5",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round"}),o.jsx("path",{d:"M17 3.5 17.7 5.3 19.5 6l-1.8.7L17 8.5 16.3 6.7 14.5 6l1.8-.7L17 3.5Z",fill:"currentColor"})]})}function jce({size:e,...t}){return o.jsxs(Lc,{size:e,...t,children:[o.jsx("path",{d:"M21 11V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h6",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round"}),o.jsx("path",{d:"m6 16 3.5-3.5 2 2",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round"}),o.jsx("path",{d:"M18.5 13.5 21 16l-4 4h-2.5v-2.5l4-4Z",stroke:"currentColor",strokeWidth:"1.8",strokeLinejoin:"round"})]})}const Uz={vision:Tce,tool_calling:Rce,json_mode:Pce,image_generation:_ce,image_edit:jce};function Nce({capability:e,size:t,className:n}){const a=Ez(e),s=a?Uz[a]:void 0;return s?o.jsx(s,{size:t??20,className:n}):null}const Dce=Object.keys(Uz);function Mce({text:e,tosHref:t,tosLabel:n,className:a}){return o.jsxs("p",{className:X("mt-12 max-w-3xl text-xs leading-5 text-[color:var(--muted-foreground)]",a),children:[e," ",o.jsx("a",{href:t,className:"text-[color:var(--link)] underline-offset-2 hover:underline",children:n}),"。"]})}const DO="onehop-support-engaged";let D1=!1;function Ece({propertyId:e,widgetId:t,label:n,hidden:a,hideOnMobile:s,yOffset:r=20,onScriptReady:i}){const[c,d]=h.useState("idle"),[m,f]=h.useState(()=>s&&typeof window<"u"?window.matchMedia("(max-width: 639px)").matches:!1),p=h.useRef("idle"),y=h.useRef(!1),v=!!(a||s&&m);h.useEffect(()=>{if(!s||typeof window>"u")return;const x=window.matchMedia("(max-width: 639px)"),w=()=>f(x.matches);return w(),x.addEventListener("change",w),()=>x.removeEventListener("change",w)},[s]);const $=x=>{if(p.current!=="idle")return;if(y.current=x,window.Tawk_API?.onLoaded){p.current="ready",d("ready"),i?.(),x&&window.Tawk_API.maximize?.();return}if(p.current="loading",d("loading"),window.Tawk_API=window.Tawk_API||{},window.Tawk_LoadStart=new Date,window.Tawk_API.customStyle={visibility:{desktop:{position:"br",xOffset:16,yOffset:r},mobile:{position:"br",xOffset:16,yOffset:r}}},window.Tawk_API.onChatStarted=()=>sessionStorage.setItem(DO,"1"),window.Tawk_API.onLoad=()=>{p.current="ready",d("ready"),i?.(),y.current&&window.Tawk_API.maximize?.()},D1)return;D1=!0;const w=document.createElement("script");w.async=!0,w.src=`https://embed.tawk.to/${e}/${t}`,w.charset="UTF-8",w.setAttribute("crossorigin","*"),w.onerror=()=>{w.remove(),D1=!1,p.current="idle",d("idle")},document.head.appendChild(w)};return h.useEffect(()=>{!e||!t||v||sessionStorage.getItem(DO)&&$(!1)},[v]),h.useEffect(()=>{if(window.Tawk_API){if(v){window.Tawk_API.hideWidget?.();return}c==="ready"&&window.Tawk_API.showWidget?.()}},[c,v]),!e||!t||c==="ready"||v?null:o.jsx("button",{type:"button","aria-label":n,title:n,disabled:c==="loading",onClick:()=>$(!0),className:X("fixed z-40 h-14 w-14 items-center justify-center rounded-full bg-[color:var(--primary)] text-[color:var(--primary-foreground)] shadow-lg transition-opacity hover:opacity-90 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[color:var(--ring)] disabled:opacity-70",s?"hidden sm:flex":"flex"),style:{right:16,bottom:r},children:c==="loading"?o.jsx(f_,{className:"h-6 w-6 animate-spin","aria-hidden":!0}):o.jsx(wse,{className:"h-6 w-6","aria-hidden":!0})})}function Ot({icon:e,title:t,description:n,action:a,className:s}){return o.jsxs("div",{className:X("rounded-lg border border-dashed border-[color:var(--border)] p-8 text-center",s
172),children:[e?o.jsx("div",{className:"mx-auto mb-3 grid size-9 place-items-center rounded-full border border-[color:var(--border)] bg-[color:var(--background)] text-[color:var(--muted-foreground)]",children:e}):null,o.jsx("h2",{className:"text-base font-semibold text-[color:var(--foreground)]",children:t}),n?o.jsx("p",{className:"mx-auto mt-2 max-w-sm text-sm text-[color:var(--muted-foreground)]",children:n}):null,a?o.jsx("div",{className:"mt-5",children:a}):null]})}function Qt({title:e,description:t,action:n,className:a}){return o.jsxs("div",{role:"alert",className:X("rounded-lg border border-[color:var(--destructive)]/30 bg-[color:var(--destructive)]/5 p-4",a),children:[o.jsx("h2",{className:"text-sm font-semibold text-[color:var(--foreground)]",children:e}),t?o.jsx("p",{className:"mt-1 text-sm text-[color:var(--muted-foreground)]",children:t}):null,n?o.jsx("div",{className:"mt-3",children:n}):null]})}function Ice({length:e=6,value:t,onChange:n,onComplete:a,error:s=!1,disabled:r=!1,autoFocus:i=!1}){const c=h.useRef([]),d=h.useMemo(()=>Array.from({length:e},(v,$)=>t[$]??""),[t,e]);h.useEffect(()=>{i&&c.current[0]?.focus()},[i]);const m=v=>{const $=v.replace(/\D/g,"").slice(0,e);n($),$.length===e&&a?.($)},f=(v,$)=>{const x=$.replace(/\D/g,"").slice(-1);if(!x)return;const w=(t.slice(0,v)+x+t.slice(v+1)).slice(0,e);m(w),v<e-1&&c.current[v+1]?.focus()},p=(v,$)=>{$.key==="Backspace"?($.preventDefault(),t[v]?m(t.slice(0,v)+t.slice(v+1)):v>0&&(c.current[v-1]?.focus(),m(t.slice(0,v-1)+t.slice(v)))):$.key==="ArrowLeft"&&v>0?c.current[v-1]?.focus():$.key==="ArrowRight"&&v<e-1&&c.current[v+1]?.focus()},y=v=>{v.preventDefault(),m(v.clipboardData.getData("text")),c.current[Math.min(e-1,v.clipboardData.getData("text").replace(/\D/g,"").length)]?.focus()};return o.jsx("div",{className:"grid w-full grid-cols-6 gap-2",role:"group","aria-label":"Verification code",style:{gridTemplateColumns:`repeat(${e}, minmax(0, 1fr))`},children:d.map((v,$)=>o.jsx("input",{ref:x=>{c.current[$]=x},type:"text",inputMode:"numeric",autoComplete:$===0?"one-time-code":"off",maxLength:1,value:v,disabled:r,"aria-label":`Digit ${$+1}`,onChange:x=>f($,x.target.value),onKeyDown:x=>p($,x),onPaste:y,className:X("h-12 min-w-0 rounded-md border bg-transparent text-center text-lg font-medium tabular-nums","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[color:var(--ring)]","disabled:opacity-50",s?"border-[color:var(--destructive)]":"border-[color:var(--input)]")},$))})}function Oce({className:e,...t}){return o.jsx("div",{"data-slot":"sidebar-content",className:X("min-h-0 flex-1 overflow-y-auto overflow-x-hidden pb-4 pt-1",e),...t})}function MO({className:e,...t}){return o.jsx("section",{"data-slot":"sidebar-group",className:X("space-y-2",e),...t})}function Lce({className:e,...t}){return o.jsx("ul",{"data-slot":"sidebar-menu",className:X("space-y-1 px-2",e),...t})}function Uce({className:e,...t}){return o.jsx("li",{"data-slot":"sidebar-menu-item",className:X("min-w-0",e),...t})}const Bce=zh("group/sidebar-menu-button h-9 w-full overflow-hidden rounded-md text-sm transition-colors motion-reduce:transition-none focus-visible:border-ring focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 data-[state=open]:bg-foreground
172/10 data-[state=open]:text-foreground",{variants:{layout:{default:"grid grid-cols-[2.75rem_minmax(0,1fr)] items-center text-start",shortcut:"grid grid-cols-[2.75rem_minmax(0,1fr)_auto] items-center text-start",flex:"flex items-center text-start"},active:{true:"bg-foreground/[0.14] text-foreground font-medium",false:"text-foreground hover:bg-foreground/6"}},defaultVariants:{layout:"default",active:!1}});function Fce({active:e=!1,asChild:t=!1,className:n,layout:a="default",...s}){const r=t?m_:"button";return o.jsx(r,{"data-slot":"sidebar-menu-button","data-active":e?"true":"false",className:X(Bce({active:e,layout:a,className:n})),...s})}function EO({className:e,...t}){return o.jsx("span",{"data-slot":"sidebar-menu-icon",className:X("flex h-9 w-11 shrink-0 items-center justify-center",e),...t})}const Bz=h.createContext(null);function zce({children:e,navigationToggle:t}){return o.jsx(Bz.Provider,{value:t,children:e})}function Vt({title:e,description:t,action:n,children:a,maxWidth:s="max-w-none",fill:r=!1}){const i=h.useContext(Bz);return o.jsxs(o.Fragment,{children:[o.jsxs("div",{className:"flex shrink-0 flex-col items-start gap-2 border-b border-[color:var(--border)] px-3 py-2.5 sm:flex-row sm:items-center sm:justify-between sm:gap-4 sm:px-6 sm:py-3 lg:px-8 lg:py-4",children:[o.jsxs("div",{className:"flex min-w-0 items-start gap-3 self-stretch sm:self-auto",children:[i?o.jsx("div",{className:"shrink-0 pt-0.5",children:i}):null,o.jsxs("div",{className:"min-w-0",children:[o.jsx("h1",{className:"text-sm font-semibold tracking-normal text-[color:var(--heading)] sm:truncate sm:text-lg sm:tracking-[-0.01em]",children:e}),t?o.jsx("p",{className:"mt-0.5 line-clamp-1 text-xs text-[color:var(--muted-foreground)] sm:mt-1 sm:line-clamp-2 sm:text-sm",children:t}):null]})]}),n?o.jsx("div",{className:"flex w-full shrink-0 flex-wrap items-center gap-2 sm:w-auto sm:justify-end",children:n}):null]}),o.jsx("div",{className:`flex-1 min-h-0 overflow-x-hidden ${r?"overflow-y-auto md:flex md:flex-col md:overflow-hidden":"overflow-y-auto"}`,children:o.jsx("div",{className:`mx-auto w-full ${s}
172 px-3 py-3 sm:px-6 sm:py-4 lg:px-8 lg:py-6 ${r?"md:flex md:min-h-0 md:flex-1 md:flex-col":""}`,children:o.jsx("section",{className:r?"space-y-3 md:flex md:min-h-0 md:flex-1 md:flex-col md:space-y-0 md:gap-4 lg:gap-5":"space-y-3 sm:space-y-4 lg:space-y-5",children:a})})})]})}var M1="focusScope.autoFocusOnMount",E1="focusScope.autoFocusOnUnmount",IO={bubbles:!1,cancelable:!0},qce="FocusScope",Wh=h.forwardRef((e,t)=>{const{loop:n=!1,trapped:a=!1,onMountAutoFocus:s,onUnmountAutoFocus:r,...i}=e,[c,d]=h.useState(null),m=oi(s),f=oi(r),p=h.useRef(null),y=vt(t,x=>d(x)),v=h.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;h.useEffect(()=>{if(a){let x=function(T){if(v.paused||!c)return;const R=T.target;c.contains(R)?p.current=R:Yl(p.current,{select:!0})},w=function(T){if(v.paused||!c)return;const R=T.relatedTarget;R!==null&&(c.contains(R)||Yl(p.current,{select:!0}))},S=function(T){if(document.activeElement===document.body)for(const _ of T)_.removedNodes.length>0&&Yl(c)};document.addEventListener("focusin",x),document.addEventListener("focusout",w);const k=new MutationObserver(S);return c&&k.observe(c,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",x),document.removeEventListener("focusout",w),k.disconnect()}}},[a,c,v.paused]),h.useEffect(()=>{if(c){LO.add(v);const x=document.activeElement;if(!c.contains(x)){const S=new CustomEvent(M1,IO);c.addEventListener(M1,m),c.dispatchEvent(S),S.defaultPrevented||(Hce(Yce(Fz(c)),{select:!0}),document.activeElement===x&&Yl(c))}return()=>{c.removeEventListener(M1,m),setTimeout(()=>{const S=new CustomEvent(E1,IO);c.addEventListener(E1,f),c.dispatchEvent(S),S.defaultPrevented||Yl(x??document.body,{select:!0}),c.removeEventListener(E1,f),LO.remove(v)},0)}}},[c,m,f,v]);const $=h.useCallback(x=>{if(!n&&!a||v.paused)return;const w=x.key==="Tab"&&!x.altKey&&!x.ctrlKey&&!x.metaKey,S=document.activeElement;if(w&&S){const k=x.currentTarget,[T,R]=Vce(k);T&&R?!x.shiftKey&&S===R?(x.preventDefault(),n&&Yl(T,{select:!0})):x.shiftKey&&S===T&&(x.preventDefault(),n&&Yl(R,{select:!0})):S===k&&x.preventDefault()}},[n,a,v.paused]);return o.jsx(st.div,{tabIndex:-1,...i,ref:y,onKeyDown:$})});Wh.displayName=qce;function Hce(e,{select:t=!1}={}){const n=document.activeElement;for(const a of e)if(Yl(a,{select:t}),document.activeElement!==n)return}function Vce(e){const t=Fz(e),n=OO(t,e),a=OO(t.reverse(),e);return[n,a]}function Fz(e){const t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:a=>{const s=a.tagName==="INPUT"&&a.type==="hidden";return a.disabled||a.hidden||s?NodeFilter.FILTER_SKIP:a.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function OO(e,t){for(const n of e)if(!Kce(n,{upTo:t}))return n}function Kce(e,{upTo:t}){if(getComputedStyle(e).visibility==="hidden")return!0;for(;e;){if(t!==void 0&&e===t)return!1;if(getComputedStyle(e).display==="none")return!0;e=e.parentElement}return!1}function Gce(e){return e instanceof HTMLInputElement&&"select"in e}function Yl(e,{select:t=!1}={}){if(e&&e.focus){const n=document.activeElement;e.focus({preventScroll:!0}),e!==n&&Gce(e)&&t&&e.select()}}var LO=Wce();function Wce(){let e=[];return{add(t){const n=e[0];t!==n&&n?.pause(),e=UO(e,t),e.unshift(t)},remove(t){e=UO(e,t),e[0]?.resume()}}}function UO(e,t){const n=[...e],a=n.indexOf(t);return a!==-1&&n.splice(a,1),n}function Yce(e){return e.filter(t=>t.tagName!=="A")}var I1=0;function iw(){h.useEffect(()=>{const e=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",e[0]??BO()),document.body.insertAdjacentElement("beforeend",e[1]??BO()),I1++,()=>{I1===1&&document.querySelectorAll("[data-radix-focus-guard]").forEach(t=>t.remove()),I1--}},[])}function BO(){const e=document.createElement("span");return e.setAttribute("data-radix-focus-guard",""),e.tabIndex=0,e.style.outline="none",e.style.opacity="0",e.style.position="fixed",e.style.pointerEvents="none",e}var Gr=function(){return Gr=Object.assign||function(t){for(var n,a=1,s=arguments.length;a<s;a++){n=arguments[a];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},Gr.apply(this,arguments)};function zz(e,t){var n={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&t.indexOf(a)<0&&(n[a]=e[a]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var s=0,a=Object.getOwnPropertySymbols(e);s<a.length;s++)t.indexOf(a[s])<0&&Object.prototype.propertyIsEnumerable.call(e,a[s])&&(n[a[s]]=e[a[s]]);return n}function Qce(e,t,n){if(n||arguments.length===2)for(var a=0,s=t.length,r;a<s;a++)(r||!(a in t))&&(r||(r=Array.prototype.slice.call(t,0,a)),r[a]=t[a]);return e.concat(r||Array.prototype.slice.call(t))}var Zb="right-scroll-bar-position",Jb="width-before-scroll-bar",Xce="with-scroll-bars-hidden",Zce="--removed-body-scroll-bar-size";function O1(e,t){return typeof e=="function"?e(t):e&&(e.current=t),e}
vendor: 4,685 bytes, lines 172-187
172function Jce(e,t){var n=h.useState(function(){return{value:e,callback:t,facade:{get current(){return n.value},set current(a){var s=n.value;s!==a&&(n.value=a,n.callback(a,s))}}}})[0];return n.callback=t,n.facade}var ede=typeof window<"u"?h.useLayoutEffect:h.useEffect,FO=new WeakMap;function tde(e,t){var n=Jce(null,function(a){return e.forEach(function(s){return O1(s,a)})});return ede(function(){var a=FO.get(n);if(a){var s=new Set(a),r=new Set(e),i=n.current;s.forEach(function(c){r.has(c)||O1(c,null)}),r.forEach(function(c){s.has(c)||O1(c,i)})}FO.set(n,e)},[e]),n}function nde(e){return e}function ade(e,t){t===void 0&&(t=nde);var n=[],a=!1,s={read:function(){if(a)throw new Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.");return n.length?n[n.length-1]:e},useMedium:function(r){var i=t(r,a);return n.push(i),function(){n=n.filter(function(c){return c!==i})}},assignSyncMedium:function(r){for(a=!0;n.length;){var i=n;n=[],i.forEach(r)}n={push:function(c){return r(c)},filter:function(){return n}}},assignMedium:function(r){a=!0;var i=[];if(n.length){var c=n;n=[],c.forEach(r),i=n}var d=function(){var f=i;i=[],f.forEach(r)},m=function(){return Promise.resolve().then(d)};m(),n={push:function(f){i.push(f),m()},filter:function(f){return i=i.filter(f),n}}}};return s}function ode(e){e===void 0&&(e={});var t=ade(null);return t.options=Gr({async:!0,ssr:!1},e),t}var qz=function(e){var t=e.sideCar,n=zz(e,["sideCar"]);if(!t)throw new Error("Sidecar: please provide `sideCar` property to import the right car");var a=t.read();if(!a)throw new Error("Sidecar medium not found");return h.createElement(a,Gr({},n))};qz.isSideCarExport=!0;function sde(e,t){return e.useMedium(t),qz}var Hz=ode(),L1=function(){},lw=h.forwardRef(function(e,t){var n=h.useRef(null),a=h.useState({onScrollCapture:L1,onWheelCapture:L1,onTouchMoveCapture:L1}),s=a[0],r=a[1],i=e.forwardProps,c=e.children,d=e.className,m=e.removeScrollBar,f=e.enabled,p=e.shards,y=e.sideCar,v=e.noRelative,$=e.noIsolation,x=e.inert,w=e.allowPinchZoom,S=e.as,k=S===void 0?"div":S,T=e.gapMode,R=zz(e,["forwardProps","children","className","removeScrollBar","enabled","shards","sideCar","noRelative","noIsolation","inert","allowPinchZoom","as","gapMode"]),_=y,P=tde([n,t]),j=Gr(Gr({},R),s);return h.createElement(h.Fragment,null,f&&h.createElement(_,{sideCar:Hz,removeScrollBar:m,shards:p,noRelative:v,noIsolation:$,inert:x,setCallbacks:r,allowPinchZoom:!!w,lockRef:n,gapMode:T}),i?h.cloneElement(h.Children.only(c),Gr(Gr({},j),{ref:P})):h.createElement(k,Gr({},j,{className:d,ref:P}),c))});lw.defaultProps={enabled:!0,removeScrollBar:!0,inert:!1};lw.classNames={fullWidth:Jb,zeroRight:Zb};var rde=function(){if(typeof __webpack_nonce__<"u")return __webpack_nonce__};function ide(){if(!document)return null;var e=document.createElement("style");e.type="text/css";var t=rde();return t&&e.setAttribute("nonce",t),e}function lde(e,t){e.styleSheet?e.styleSheet.cssText=t:e.appendChild(document.createTextNode(t))}function cde(e){var t=document.head||document.getElementsByTagName("head")[0];t.appendChild(e)}var dde=function(){var e=0,t=null;return{add:function(n){e==0&&(t=ide())&&(lde(t,n),cde(t)),e++},remove:function(){e--,!e&&t&&(t.parentNode&&t.parentNode.removeChild(t),t=null)}}},ude=function(){var e=dde();return function(t,n){h.useEffect(function(){return e.add(t),function(){e.remove()}},[t&&n])}},Vz=function(){var e=ude(),t=function(n){var a=n.styles,s=n.dynamic;return e(a,s),null};return t},mde={left:0,top:0,right:0,gap:0},U1=function(e){return parseInt(e||"",10)||0},pde=function(e){var t=window.getComputedStyle(document.body),n=t[e==="padding"?"paddingLeft":"marginLeft"],a=t[e==="padding"?"paddingTop":"marginTop"],s=t[e==="padding"?"paddingRight":"marginRight"];return[U1(n),U1(a),U1(s)]},fde=function(e){if(e===void 0&&(e="margin"),typeof window>"u")return mde;var t=pde(e),n=document.documentElement.clientWidth,a=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,a-n+t[2]-t[0])}},gde=Vz(),zm="data-scroll-locked",hde=function(e,t,n,a){var s=e.left,r=e.top,i=e.right,c=e.gap;return n===void 0&&(n="margin"),`
173  .`.concat(Xce,` {
174   overflow: hidden `).concat(a,`;
175   padding-right: `).concat(c,"px ").concat(a,`;
176  }
177  body[`).concat(zm,`] {
178    overflow: hidden `).concat(a,`;
179    overscroll-behavior: contain;
180    `).concat([t&&"position: relative ".concat(a,";"),n==="margin"&&`
181    padding-left: `.concat(s,`px;
182    padding-top: `).concat(r,`px;
183    padding-right: `).concat(i,`px;
184    margin-left:0;
185    margin-top:0;
186    margin-right: `).concat(c,"px ").concat(a,`;
187    `),n==="padding"&&"padding-right: ".concat(c,"px ").concat(a,";
187")].filter(Boolean).join(""),`
188  }
189  
190  .`).concat(Zb,` {
191    right: `).concat(c,"px ").concat(a,`;
192  }
193  
194  .`).concat(Jb,` {
195    margin-right: `).concat(c,"px ").concat(a,`;
196  }
197  
198  .`).concat(Zb," .").concat(Zb,` {
199    right: 0 `).concat(a,`;
200  }
201  
202  .`).concat(Jb," .").concat(Jb,` {
203    margin-right: 0 `).concat(a,`;
204  }
205  
206  body[`).concat(zm,`] {
207    `).concat(Zce,": ").concat(c,`px;
208  }
209`)},zO=function(){var e=parseInt(document.body.getAttribute(zm)||"0",10);return isFinite(e)?e:0},yde=function(){h.useEffect(function(){return document.body.setAttribute(zm,(zO()+1).toString()),function(){var e=zO()-1;e<=0?document.body.removeAttribute(zm):document.body.setAttribute(zm,e.toString())}},[])},vde=function(e){var t=e.noRelative,n=e.noImportant,a=e.gapMode,s=a===void 0?"margin":a;yde();var r=h.useMemo(function(){return fde(s)},[s]);return h.createElement(gde,{styles:hde(r,!t,s,n?"":"!important")})},XT=!1;if(typeof window<"u")try{var ab=Object.defineProperty({},"passive",{get:function(){return XT=!0,!0}});window.addEventListener("test",ab,ab),window.removeEventListener("test",ab,ab)}catch{XT=!1}var hm=XT?{passive:!1}:!1,bde=function(e){return e.tagName==="TEXTAREA"},Kz=function(e,t){if(!(e instanceof Element))return!1;var n=window.getComputedStyle(e);return n[t]!=="hidden"&&!(n.overflowY===n.overflowX&&!bde(e)&&n[t]==="visible")},xde=function(e){return Kz(e,"overflowY")},$de=function(e){return Kz(e,"overflowX")},qO=function(e,t){var n=t.ownerDocument,a=t;do{typeof ShadowRoot<"u"&&a instanceof ShadowRoot&&(a=a.host);var s=Gz(e,a);if(s){var r=Wz(e,a),i=r[1],c=r[2];if(i>c)return!0}a=a.parentNode}while(a&&a!==n.body);return!1},wde=function(e){var t=e.scrollTop,n=e.scrollHeight,a=e.clientHeight;return[t,n,a]},kde=function(e){var t=e.scrollLeft,n=e.scrollWidth,a=e.clientWidth;return[t,n,a]},Gz=function(e,t){return e==="v"?xde(t):$de(t)},Wz=function(e,t){return e==="v"?wde(t):kde(t)},Cde=function(e,t){return e==="h"&&t==="rtl"?-1:1},Sde=function(e,t,n,a,s){var r=Cde(e,window.getComputedStyle(t).direction),i=r*a,c=n.target,d=t.contains(c),m=!1,f=i>0,p=0,y=0;do{if(!c)break;var v=Wz(e,c),$=v[0],x=v[1],w=v[2],S=x-w-r*$;($||S)&&Gz(e,c)&&(p+=S,y+=$);var k=c.parentNode;c=k&&k.nodeType===Node.DOCUMENT_FRAGMENT_NODE?k.host:k}while(!d&&c!==document.body||d&&(t.contains(c)||t===c));return(f&&Math.abs(p)<1||!f&&Math.abs(y)<1)&&(m=!0),m},ob=function(e){return"changedTouches"in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},HO=function(e){return[e.deltaX,e.deltaY]},VO=function(e){return e&&"current"in e?e.current:e},Ade=function(e,t){return e[0]===t[0]&&e[1]===t[1]},Tde=function(e){return`
210  .block-interactivity-`.concat(e,` {pointer-events: none;}
211  .allow-interactivity-`).concat(e,` {pointer-events: all;}
212`)},Rde=0,ym=[];function Pde(e){var t=h.useRef([]),n=h.useRef([0,0]),a=h.useRef(),s=h.useState(Rde++)[0],r=h.useState(Vz)[0],i=h.useRef(e);h.useEffect(function(){i.current=e},[e]),h.useEffect(function(){if(e.inert){document.body.classList.add("block-interactivity-".concat(s));var x=Qce([e.lockRef.current],(e.shards||[]).map(VO),!0).filter(Boolean);return x.forEach(function(w){return w.classList.add("allow-interactivity-".concat(s))}),function(){document.body.classList.remove("block-interactivity-".concat(s)),x.forEach(function(w){return w.classList.remove("allow-interactivity-".concat(s))})}}},[e.inert,e.lockRef.current,e.shards]);var c=h.useCallback(function(x,w){if("touches"in x&&x.touches.length===2||x.type==="wheel"&&x.ctrlKey)return!i.current.allowPinchZoom;var S=ob(x),k=n.current,T="deltaX"in x?x.deltaX:k[0]-S[0],R="deltaY"in x?x.deltaY:k[1]-S[1],_,P=x.target,j=Math.abs(T)>Math.abs(R)?"h":"v";if("touches"in x&&j==="h"&&P.type==="range")return!1;var N=window.getSelection(),I=N&&N.anchorNode,z=I?I===P||I.contains(P):!1;if(z)return!1;var E=qO(j,P);if(!E)return!0;if(E?_=j:(_=j==="v"?"h":"v",E=qO(j,P)),!E)return!1;if(!a.current&&"changedTouches"in x&&(T||R)&&(a.current=_),!_)return!0;var L=a.current||_;return Sde(L,w,x,L==="h"?T:R)},[]),d=h.useCallback(function(x){var w=x;if(!(!ym.length||ym[ym.length-1]!==r)){var S="deltaY"in w?HO(w):ob(w),k=t.current.filter(function(_){return _.name===w.t
vendor: 4,173 bytes, line 212
212ype&&(_.target===w.target||w.target===_.shadowParent)&&Ade(_.delta,S)})[0];if(k&&k.should){w.cancelable&&w.preventDefault();return}if(!k){var T=(i.current.shards||[]).map(VO).filter(Boolean).filter(function(_){return _.contains(w.target)}),R=T.length>0?c(w,T[0]):!i.current.noIsolation;R&&w.cancelable&&w.preventDefault()}}},[]),m=h.useCallback(function(x,w,S,k){var T={name:x,delta:w,target:S,should:k,shadowParent:_de(S)};t.current.push(T),setTimeout(function(){t.current=t.current.filter(function(R){return R!==T})},1)},[]),f=h.useCallback(function(x){n.current=ob(x),a.current=void 0},[]),p=h.useCallback(function(x){m(x.type,HO(x),x.target,c(x,e.lockRef.current))},[]),y=h.useCallback(function(x){m(x.type,ob(x),x.target,c(x,e.lockRef.current))},[]);h.useEffect(function(){return ym.push(r),e.setCallbacks({onScrollCapture:p,onWheelCapture:p,onTouchMoveCapture:y}),document.addEventListener("wheel",d,hm),document.addEventListener("touchmove",d,hm),document.addEventListener("touchstart",f,hm),function(){ym=ym.filter(function(x){return x!==r}),document.removeEventListener("wheel",d,hm),document.removeEventListener("touchmove",d,hm),document.removeEventListener("touchstart",f,hm)}},[]);var v=e.removeScrollBar,$=e.inert;return h.createElement(h.Fragment,null,$?h.createElement(r,{styles:Tde(s)}):null,v?h.createElement(vde,{noRelative:e.noRelative,gapMode:e.gapMode}):null)}function _de(e){for(var t=null;e!==null;)e instanceof ShadowRoot&&(t=e.host,e=e.host),e=e.parentNode;return t}const jde=sde(Hz,Pde);var Yh=h.forwardRef(function(e,t){return h.createElement(lw,Gr({},e,{ref:t,sideCar:jde}))});Yh.classNames=lw.classNames;var Nde=function(e){if(typeof document>"u")return null;var t=Array.isArray(e)?e[0]:e;return t.ownerDocument.body},vm=new WeakMap,sb=new WeakMap,rb={},B1=0,Yz=function(e){return e&&(e.host||Yz(e.parentNode))},Dde=function(e,t){return t.map(function(n){if(e.contains(n))return n;var a=Yz(n);return a&&e.contains(a)?a:(console.error("aria-hidden",n,"in not contained inside",e,". Doing nothing"),null)}).filter(function(n){return!!n})},Mde=function(e,t,n,a){var s=Dde(t,Array.isArray(e)?e:[e]);rb[n]||(rb[n]=new WeakMap);var r=rb[n],i=[],c=new Set,d=new Set(s),m=function(p){!p||c.has(p)||(c.add(p),m(p.parentNode))};s.forEach(m);var f=function(p){!p||d.has(p)||Array.prototype.forEach.call(p.children,function(y){if(c.has(y))f(y);else try{var v=y.getAttribute(a),$=v!==null&&v!=="false",x=(vm.get(y)||0)+1,w=(r.get(y)||0)+1;vm.set(y,x),r.set(y,w),i.push(y),x===1&&$&&sb.set(y,!0),w===1&&y.setAttribute(n,"true"),$||y.setAttribute(a,"true")}catch(S){console.error("aria-hidden: cannot operate on ",y,S)}})};return f(t),c.clear(),B1++,function(){i.forEach(function(p){var y=vm.get(p)-1,v=r.get(p)-1;vm.set(p,y),r.set(p,v),y||(sb.has(p)||p.removeAttribute(a),sb.delete(p)),v||p.removeAttribute(n)}),B1--,B1||(vm=new WeakMap,vm=new WeakMap,sb=new WeakMap,rb={})}},cw=function(e,t,n){n===void 0&&(n="data-aria-hidden");var a=Array.from(Array.isArray(e)?e:[e]),s=Nde(e);return s?(a.push.apply(a,Array.from(s.querySelectorAll("[aria-live], script"))),Mde(a,s,n,"aria-hidden")):function(){return null}};function Ede(e){const t=Ide(e),n=h.forwardRef((a,s)=>{const{children:r,...i}=a,c=h.Children.toArray(r),d=c.find(Lde);if(d){const m=d.props.children,f=c.map(p=>p===d?h.Children.count(m)>1?h.Children.only(null):h.isValidElement(m)?m.props.children:null:p);return o.jsx(t,{...i,ref:s,children:h.isValidElement(m)?h.cloneElement(m,void 0,f):null})}return o.jsx(t,{...i,ref:s,children:r})});return n.displayName=`${e}.Slot`,n}function Ide(e){const t=h.forwardRef((n,a)=>{const{children:s,...r}=n;if(h.isValidElement(s)){const i=Bde(s),c=Ude(r,s.props);return s.type!==h.Fragment&&(c.ref=a?di(a,i):i),h.cloneElement(s,c)}return h.Children.count(s)>1?h.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var Ode=Symbol("radix.slottable");function Lde(e){return h.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===Ode}function Ude(e,t){const n={...t};for(const a in t){const s=e[a],r=t[a];/^on[A-Z]/.test(a)?s&&r?n[a]=(...c)=>{const d=r(...c);return s(...c),d}:s&&(n[a]=s):a==="style"?n[a]={...s,...r}
vendor: 4,239 bytes, line 212
212:a==="className"&&(n[a]=[s,r].filter(Boolean).join(" "))}return{...e,...n}}function Bde(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var dw="Dialog",[Qz,Xz]=so(dw),[Fde,br]=Qz(dw),Zz=e=>{const{__scopeDialog:t,children:n,open:a,defaultOpen:s,onOpenChange:r,modal:i=!0}=e,c=h.useRef(null),d=h.useRef(null),[m,f]=ts({prop:a,defaultProp:s??!1,onChange:r,caller:dw});return o.jsx(Fde,{scope:t,triggerRef:c,contentRef:d,contentId:To(),titleId:To(),descriptionId:To(),open:m,onOpenChange:f,onOpenToggle:h.useCallback(()=>f(p=>!p),[f]),modal:i,children:n})};Zz.displayName=dw;var Jz="DialogTrigger",e7=h.forwardRef((e,t)=>{const{__scopeDialog:n,...a}=e,s=br(Jz,n),r=vt(t,s.triggerRef);return o.jsx(st.button,{type:"button","aria-haspopup":"dialog","aria-expanded":s.open,"aria-controls":s.contentId,"data-state":P_(s.open),...a,ref:r,onClick:je(e.onClick,s.onOpenToggle)})});e7.displayName=Jz;var T_="DialogPortal",[zde,t7]=Qz(T_,{forceMount:void 0}),n7=e=>{const{__scopeDialog:t,forceMount:n,children:a,container:s}=e,r=br(T_,t);return o.jsx(zde,{scope:t,forceMount:n,children:h.Children.map(a,i=>o.jsx(za,{present:n||r.open,children:o.jsx(pu,{asChild:!0,container:s,children:i})}))})};n7.displayName=T_;var jx="DialogOverlay",a7=h.forwardRef((e,t)=>{const n=t7(jx,e.__scopeDialog),{forceMount:a=n.forceMount,...s}=e,r=br(jx,e.__scopeDialog);return r.modal?o.jsx(za,{present:a||r.open,children:o.jsx(Hde,{...s,ref:t})}):null});a7.displayName=jx;var qde=Ede("DialogOverlay.RemoveScroll"),Hde=h.forwardRef((e,t)=>{const{__scopeDialog:n,...a}=e,s=br(jx,n);return o.jsx(Yh,{as:qde,allowPinchZoom:!0,shards:[s.contentRef],children:o.jsx(st.div,{"data-state":P_(s.open),...a,ref:t,style:{pointerEvents:"auto",...a.style}})})}),Xd="DialogContent",o7=h.forwardRef((e,t)=>{const n=t7(Xd,e.__scopeDialog),{forceMount:a=n.forceMount,...s}=e,r=br(Xd,e.__scopeDialog);return o.jsx(za,{present:a||r.open,children:r.modal?o.jsx(Vde,{...s,ref:t}):o.jsx(Kde,{...s,ref:t})})});o7.displayName=Xd;var Vde=h.forwardRef((e,t)=>{const n=br(Xd,e.__scopeDialog),a=h.useRef(null),s=vt(t,n.contentRef,a);return h.useEffect(()=>{const r=a.current;if(r)return cw(r)},[]),o.jsx(s7,{...e,ref:s,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:je(e.onCloseAutoFocus,r=>{r.preventDefault(),n.triggerRef.current?.focus()}),onPointerDownOutside:je(e.onPointerDownOutside,r=>{const i=r.detail.originalEvent,c=i.button===0&&i.ctrlKey===!0;(i.button===2||c)&&r.preventDefault()}),onFocusOutside:je(e.onFocusOutside,r=>r.preventDefault())})}),Kde=h.forwardRef((e,t)=>{const n=br(Xd,e.__scopeDialog),a=h.useRef(!1),s=h.useRef(!1);return o.jsx(s7,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:r=>{e.onCloseAutoFocus?.(r),r.defaultPrevented||(a.current||n.triggerRef.current?.focus(),r.preventDefault()),a.current=!1,s.current=!1},onInteractOutside:r=>{e.onInteractOutside?.(r),r.defaultPrevented||(a.current=!0,r.detail.originalEvent.type==="pointerdown"&&(s.current=!0));const i=r.target;n.triggerRef.current?.contains(i)&&r.preventDefault(),r.detail.originalEvent.type==="focusin"&&s.current&&r.preventDefault()}})}),s7=h.forwardRef((e,t)=>{const{__scopeDialog:n,trapFocus:a,onOpenAutoFocus:s,onCloseAutoFocus:r,...i}=e,c=br(Xd,n),d=h.useRef(null),m=vt(t,d);return iw(),o.jsxs(o.Fragment,{children:[o.jsx(Wh,{asChild:!0,loop:!0,trapped:a,onMountAutoFocus:s,onUnmountAutoFocus:r,children:o.jsx(mu,{role:"dialog",id:c.contentId,"aria-describedby":c.descriptionId,"aria-labelledby":c.titleId,"data-state":P_(c.open),...i,ref:m,onDismiss:()=>c.onOpenChange(!1)})}),o.jsxs(o.Fragment,{children:[o.jsx(Wde,{titleId:c.titleId}),o.jsx(Qde,{contentRef:d,descriptionId:c.descriptionId})]})]})}),R_="DialogTitle",r7=h.forwardRef((e,t)=>{const{__scopeDialog:n,...a}=e,s=br(R_,n);return o.jsx(st.h2,{id:s.titleId,...a,ref:t})});r7.displayName=R_;var i7="DialogDescription",l7=h.forwardRef((e,t)=>{const{__scopeDialog:n,...a}=e,s=br(i7,n);return o.jsx(st.p,{id:s.descriptionId,...a,ref:t})});l7.displayName=i7;var c7="DialogClose",d7=h.forwardRef((e,t)=>
212{const{__scopeDialog:n,...a}=e,s=br(c7,n);return o.jsx(st.button,{type:"button",...a,ref:t,onClick:je(e.onClick,()=>s.onOpenChange(!1))})});d7.displayName=c7;function P_(e){return e?"open":"closed"}var u7="DialogTitleWarning",[Gde,m7]=Rse(u7,{contentName:Xd,titleName:R_,docsSlug:"dialog"}),Wde=({titleId:e})=>{const t=m7(u7),n=`\`${t.contentName}\` requires a \`${t.titleName}\` for the component to be accessible for screen reader users.
213
214If you want to hide the \`${t.titleName}\`, you can wrap it with our VisuallyHidden component.
215
216For more information, see https://radix-ui.com/primitives/docs/components/${t.docsSlug}`;return h.useEffect(()=>{e&&(document.getElementById(e)||console.error(n))},[n,e]),null},Yde="DialogDescriptionWarning",Qde=({contentRef:e,descriptionId:t})=>{const a=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${m7(Yde).contentName}}.`;return h.useEffect(()=>{const s=e.current?.getAttribute("aria-describedby");t&&s&&(document.getElementById(t)||console.warn(a))},[a,e,t]),null},__=Zz,p7=e7,j_=n7,uw=a7,mw=o7,pw=r7,Lp=l7,Qh=d7;const Up=__,f7=h.forwardRef(({className:e,...t},n)=>o.jsx(uw,{ref:n,className:X("fixed inset-0 z-overlay bg-[color:var(--foreground)]/40 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=open]:fade-in-0 data-[state=closed]:fade-out-0",e),...t}));f7.displayName=uw.displayName;const fu=h.forwardRef(({className:e,children:t,"aria-describedby":n,...a},s)=>{const r=n!==void 0||!g7(t)?{"aria-describedby":n}:{};return o.jsxs(j_,{children:[o.jsx(f7,{}),o.jsxs(mw,{ref:s,className:X("fixed left-1/2 top-1/2 z-overlay max-h-[calc(100dvh-2rem)] w-[calc(100vw-2rem)] max-w-md -translate-x-1/2 -translate-y-1/2 overflow-y-auto rounded-xl border border-[color:var(--border)] bg-[color:var(--background)] p-4 shadow-[0_18px_60px_rgba(13,17,23,0.12)] focus:outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=open]:fade-in-0 data-[state=closed]:fade-out-0 sm:p-6",e),...r,...a,children:[t,o.jsx(Qh,{className:"absolute right-3 top-3 grid size-9 place-items-center rounded-md text-[color:var(--muted-foreground)] transition-colors hover:text-[color:var(--foreground)] focus:outline-none focus:ring-2 focus:ring-[color:var(--ring)] sm:right-4 sm:top-4","aria-label":"Close",children:o.jsx(Fh,{className:"size-4"})})]})]})});fu.displayName=mw.displayName;function Xh({className:e,...t}){return o.jsx("div",{className:X("mb-4 flex flex-col gap-1.5",e),...t})}function Xde({className:e,...t}){return o.jsx("div",{className:X("mt-6 flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",e),...t})}const gu=h.forwardRef(({className:e,...t},n)=>o.jsx(pw,{ref:n,className:X("text-base font-semibold",e),...t}));gu.displayName=pw.displayName;const hu=h.forwardRef(({className:e,...t},n)=>o.jsx(Lp,{ref:n,className:X("text-sm text-[color:var(--muted-foreground)]",e),...t}));hu.displayName=Lp.displayName;function g7(e){return h.Children.toArray(e).some(t=>h.isValidElement(t)?t.type===hu||t.type===Lp?!0:g7(t.props.children):!1)}const Vn=__,KBs=p7,h7=Qh,y7=h.forwardRef(({className:e,...t},n)=>o.jsx(uw,{ref:n,className:X("fixed inset-0 z-overlay bg-[color:var(--foreground)]/40 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=open]:fade-in-0 data-[state=closed]:fade-out-0",e),...t}));y7.displayName="SheetOverlay";const Zde={top:"inset-x-0 top-0 w-full border-b",right:"inset-y-0 right-0 h-full w-[calc(100vw-1rem)] max-w-md border-l sm:w-full",bottom:"inset-x-0 bottom-0 w-full border-t",left:"inset-y-0 left-0 h-full w-[calc(100vw-1rem)] max-w-md border-r sm:w-full",auto:"inset-x-0 bottom-0 h-[85vh] w-full rounded-t-xl border-t md:inset-x-auto md:inset-y-0 md:right-0 md:h-full md:max-w-[560px] md:w-full md:rounded-t-none md:border-l md:border-t-0"},Nn=h.forwardRef(({className:e,children:t,side:n="right",showClose:a=!0,"aria-describedby":s,...r},i)=>{const c=s!==void 0||!v7(t)?{"aria-describedby":s}:{};return o.jsxs(j_,{children:[o.jsx(y7,{}),o.jsxs(mw,{ref:i,"data-side":n,className:X("oh-sheet-content fixed z-overlay flex flex-col overflow-x-hidden overflow-y-auto bg-[color:var(--background)] p-4 pb-[calc(1rem+env(safe-area-inset-bottom))] shadow-[0_18px_60px_rgba(13,17,23,0.12)] focu
216s:outline-none sm:p-6 sm:pb-[calc(1.5rem+env(safe-area-inset-bottom))] [&>*]:min-w-0 [&>*]:max-w-full",Zde[n],e),...c,...r,children:[t,a?o.jsx(Qh,{className:"absolute right-3 top-3 grid size-9 place-items-center rounded-md text-[color:var(--muted-foreground)] transition-colors hover:text-[color:var(--foreground)] focus:outline-none focus:ring-2 focus:ring-[color:var(--ring)] sm:right-4 sm:top-4","aria-label":"Close",children:o.jsx(Fh,{className:"size-4"})}):null]})]})});Nn.displayName="SheetContent";function Pa({className:e,...t}){return o.jsx("div",{className:X("mb-4 flex shrink-0 flex-col gap-1.5 pr-8",e),...t})}const Rn=h.forwardRef(({className:e,...t},n)=>o.jsx(pw,{ref:n,className:X("text-base font-semibold",e),...t}));Rn.displayName="SheetTitle";const ua=h.forwardRef(({className:e,...t},n)=>o.jsx(Lp,{ref:n,className:X("text-sm text-[color:var(--muted-foreground)]",e),...t}));ua.displayName="SheetDescription";function v7(e){return h.Children.toArray(e).some(t=>h.isValidElement(t)?t.type===ua||t.type===Lp?!0:v7(t.props.children):!1)}function Jde(e){const t=eue(e),n=h.forwardRef((a,s)=>{const{children:r,...i}=a,c=h.Children.toArray(r),d=c.find(nue);if(d){const m=d.props.children,f=c.map(p=>p===d?h.Children.count(m)>1?h.Children.only(null):h.isValidElement(m)?m.props.children:null:p);return o.jsx(t,{...i,ref:s,children:h.isValidElement(m)?h.cloneElement(m,void 0,f):null})}return o.jsx(t,{...i,ref:s,children:r})});return n.displayName=`${e}.Slot`,n}function eue(e){const t=h.forwardRef((n,a)=>{const{children:s,...r}=n;if(h.isValidElement(s)){const i=oue(s),c=aue(r,s.props);return s.type!==h.Fragment&&(c.ref=a?di(a,i):i),h.cloneElement(s,c)}return h.Children.count(s)>1?h.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var tue=Symbol("radix.slottable");function nue(e){return h.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===tue}function aue(e,t){const n={...t};for(const a in t){const s=e[a],r=t[a];/^on[A-Z]/.test(a)?s&&r?n[a]=(...c)=>{const d=r(...c);return s(...c),d}:s&&(n[a]=s):a==="style"?n[a]={...s,...r}:a==="className"&&(n[a]=[s,r].filter(Boolean).join(" "))}return{...e,...n}}function oue(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var fw="Popover",[b7]=so(fw,[mi]),Zh=mi(),[sue,Uc]=b7(fw),x7=e=>{const{__scopePopover:t,children:n,open:a,defaultOpen:s,onOpenChange:r,modal:i=!1}=e,c=Zh(t),d=h.useRef(null),[m,f]=h.useState(!1),[p,y]=ts({prop:a,defaultProp:s??!1,onChange:r,caller:fw});return o.jsx(Hh,{...c,children:o.jsx(sue,{scope:t,contentId:To(),triggerRef:d,open:p,onOpenChange:y,onOpenToggle:h.useCallback(()=>y(v=>!v),[y]),hasCustomAnchor:m,onCustomAnchorAdd:h.useCallback(()=>f(!0),[]),onCustomAnchorRemove:h.useCallback(()=>f(!1),[]),modal:i,children:n})})};x7.displayName=fw;var $7="PopoverAnchor",rue=h.forwardRef((e,t)=>{const{__scopePopover:n,...a}=e,s=Uc($7,n),r=Zh(n),{onCustomAnchorAdd:i,onCustomAnchorRemove:c}=s;return h.useEffect(()=>(i(),()=>c()),[i,c]),o.jsx(Op,{...r,...a,ref:t})});rue.displayName=$7;var w7="PopoverTrigger",k7=h.forwardRef((e,t)=>{const{__scopePopover:n,...a}=e,s=Uc(w7,n),r=Zh(n),i=vt(t,s.triggerRef),c=o.jsx(st.button,{type:"button","aria-haspopup":"dialog","aria-expanded":s.open,"aria-controls":s.contentId,"data-state":R7(s.open),...a,ref:i,onClick:je(e.onClick,s.onOpenToggle)});return s.hasCustomAnchor?c:o.jsx(Op,{asChild:!0,...r,children:c})});k7.displayName=w7;var N_="PopoverPortal",[iue,lue]=b7(N_,{forceMount:void 0}),C7=e=>{const{__scopePopover:t,forceMount:n,children:a,container:s}=e,r=Uc(N_,t);return o.jsx(iue,{scope:t,forceMount:n,children:o.jsx(za,{present:n||r.open,children:o.jsx(pu,{asChild:!0,container:s,children:a})})})};C7.displayName=N_;var gp="PopoverContent",S7=h.forwardRef((e,t)=>{const n=lue(gp,e.__scopePopover),{forceMount:a=n.forceMount,...s}=e,r=Uc(gp,e.__scopePopover);return o.jsx(za,{present:a||r.open,children:r.modal?o.jsx(due,{...s,ref:t}):o.jsx(uue,{...s,ref:t})})});S7.displayName=gp;var cue=Jde("PopoverContent.RemoveScroll"),due=h.forwardRef((e,t)=>
vendor: 4,389 bytes, line 216
216{const n=Uc(gp,e.__scopePopover),a=h.useRef(null),s=vt(t,a),r=h.useRef(!1);return h.useEffect(()=>{const i=a.current;if(i)return cw(i)},[]),o.jsx(Yh,{as:cue,allowPinchZoom:!0,children:o.jsx(A7,{...e,ref:s,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:je(e.onCloseAutoFocus,i=>{i.preventDefault(),r.current||n.triggerRef.current?.focus()}),onPointerDownOutside:je(e.onPointerDownOutside,i=>{const c=i.detail.originalEvent,d=c.button===0&&c.ctrlKey===!0,m=c.button===2||d;r.current=m},{checkForDefaultPrevented:!1}),onFocusOutside:je(e.onFocusOutside,i=>i.preventDefault(),{checkForDefaultPrevented:!1})})})}),uue=h.forwardRef((e,t)=>{const n=Uc(gp,e.__scopePopover),a=h.useRef(!1),s=h.useRef(!1);return o.jsx(A7,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:r=>{e.onCloseAutoFocus?.(r),r.defaultPrevented||(a.current||n.triggerRef.current?.focus(),r.preventDefault()),a.current=!1,s.current=!1},onInteractOutside:r=>{e.onInteractOutside?.(r),r.defaultPrevented||(a.current=!0,r.detail.originalEvent.type==="pointerdown"&&(s.current=!0));const i=r.target;n.triggerRef.current?.contains(i)&&r.preventDefault(),r.detail.originalEvent.type==="focusin"&&s.current&&r.preventDefault()}})}),A7=h.forwardRef((e,t)=>{const{__scopePopover:n,trapFocus:a,onOpenAutoFocus:s,onCloseAutoFocus:r,disableOutsidePointerEvents:i,onEscapeKeyDown:c,onPointerDownOutside:d,onFocusOutside:m,onInteractOutside:f,...p}=e,y=Uc(gp,n),v=Zh(n);return iw(),o.jsx(Wh,{asChild:!0,loop:!0,trapped:a,onMountAutoFocus:s,onUnmountAutoFocus:r,children:o.jsx(mu,{asChild:!0,disableOutsidePointerEvents:i,onInteractOutside:f,onEscapeKeyDown:c,onPointerDownOutside:d,onFocusOutside:m,onDismiss:()=>y.onOpenChange(!1),children:o.jsx(Vh,{"data-state":R7(y.open),role:"dialog",id:y.contentId,...v,...p,ref:t,style:{...p.style,"--radix-popover-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-popover-content-available-width":"var(--radix-popper-available-width)","--radix-popover-content-available-height":"var(--radix-popper-available-height)","--radix-popover-trigger-width":"var(--radix-popper-anchor-width)","--radix-popover-trigger-height":"var(--radix-popper-anchor-height)"}})})})}),T7="PopoverClose",mue=h.forwardRef((e,t)=>{const{__scopePopover:n,...a}=e,s=Uc(T7,n);return o.jsx(st.button,{type:"button",...a,ref:t,onClick:je(e.onClick,()=>s.onOpenChange(!1))})});mue.displayName=T7;var pue="PopoverArrow",fue=h.forwardRef((e,t)=>{const{__scopePopover:n,...a}=e,s=Zh(n);return o.jsx(Kh,{...s,...a,ref:t})});fue.displayName=pue;function R7(e){return e?"open":"closed"}var gue=x7,hue=k7,yue=C7,P7=S7;const Bp=gue,Fp=hue,yu=h.forwardRef(({className:e,sideOffset:t=6,align:n="start",...a},s)=>o.jsx(yue,{children:o.jsx(P7,{ref:s,align:n,sideOffset:t,className:X("z-tooltip min-w-[240px] rounded-lg border border-[color:var(--border)] bg-[color:var(--popover)] p-3 text-sm text-[color:var(--popover-foreground)] shadow-[0_8px_24px_rgba(13,17,23,0.08)] outline-none","data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=open]:fade-in-0 data-[state=closed]:fade-out-0",e),...a})}));yu.displayName=P7.displayName;var F1,gw="HoverCard",[_7]=so(gw,[mi]),hw=mi(),[vue,yw]=_7(gw),j7=e=>{const{__scopeHoverCard:t,children:n,open:a,defaultOpen:s,onOpenChange:r,openDelay:i=700,closeDelay:c=300}=e,d=hw(t),m=h.useRef(0),f=h.useRef(0),p=h.useRef(!1),y=h.useRef(!1),[v,$]=ts({prop:a,defaultProp:s??!1,onChange:r,caller:gw}),x=h.useCallback(()=>{clearTimeout(f.current),m.current=window.setTimeout(()=>$(!0),i)},[i,$]),w=h.useCallback(()=>{clearTimeout(m.current),!p.current&&!y.current&&(f.current=window.setTimeout(()=>$(!1),c))},[c,$]),S=h.useCallback(()=>$(!1),[$]);return h.useEffect(()=>()=>{clearTimeout(m.current),clearTimeout(f.current)},[]),o.jsx(vue,{scope:t,open:v,onOpenChange:$,onOpen:x,onClose:w,onDismiss:S,hasSelectionRef:p,isPointerDownOnContentRef:y,children:o.jsx(Hh,{...d,children:n})})};j7.displayName=gw;var N7="HoverCardTrigger",D7=h.forwardRef((e,t)=>{const{__scopeHoverCard:n,...a}=e,s=yw(N7,n),r=hw(n);return o.jsx(Op,{asChild:!0,...r,children:o.jsx(st.a,{"data-state":s.open?"open":"closed",...a,ref:t,onPointerEnter:je(e.onPointerEnter,Dx(s.onOpen)),onPointerLeave:je(e.onPointerLeave,Dx(s.onClose)),onFocus:je(e.onFocus,s.onOpen),onBlur:je(e.onBlur,s.onClose),onTouchStart:je(e.onTouchStart,i=>i.preventDefault())})})});
216D7.displayName=N7;var D_="HoverCardPortal",[bue,xue]=_7(D_,{forceMount:void 0}),M7=e=>{const{__scopeHoverCard:t,forceMount:n,children:a,container:s}=e,r=yw(D_,t);return o.jsx(bue,{scope:t,forceMount:n,children:o.jsx(za,{present:n||r.open,children:o.jsx(pu,{asChild:!0,container:s,children:a})})})};M7.displayName=D_;var Nx="HoverCardContent",E7=h.forwardRef((e,t)=>{const n=xue(Nx,e.__scopeHoverCard),{forceMount:a=n.forceMount,...s}=e,r=yw(Nx,e.__scopeHoverCard);return o.jsx(za,{present:a||r.open,children:o.jsx($ue,{"data-state":r.open?"open":"closed",...s,onPointerEnter:je(e.onPointerEnter,Dx(r.onOpen)),onPointerLeave:je(e.onPointerLeave,Dx(r.onClose)),ref:t})})});E7.displayName=Nx;var $ue=h.forwardRef((e,t)=>{const{__scopeHoverCard:n,onEscapeKeyDown:a,onPointerDownOutside:s,onFocusOutside:r,onInteractOutside:i,...c}=e,d=yw(Nx,n),m=hw(n),f=h.useRef(null),p=vt(t,f),[y,v]=h.useState(!1);return h.useEffect(()=>{if(y){const $=document.body;return F1=$.style.userSelect||$.style.webkitUserSelect,$.style.userSelect="none",$.style.webkitUserSelect="none",()=>{$.style.userSelect=F1,$.style.webkitUserSelect=F1}}},[y]),h.useEffect(()=>{if(f.current){const $=()=>{v(!1),d.isPointerDownOnContentRef.current=!1,setTimeout(()=>{document.getSelection()?.toString()!==""&&(d.hasSelectionRef.current=!0)})};return document.addEventListener("pointerup",$),()=>{document.removeEventListener("pointerup",$),d.hasSelectionRef.current=!1,d.isPointerDownOnContentRef.current=!1}}},[d.isPointerDownOnContentRef,d.hasSelectionRef]),h.useEffect(()=>{f.current&&Cue(f.current).forEach(x=>x.setAttribute("tabindex","-1"))}),o.jsx(mu,{asChild:!0,disableOutsidePointerEvents:!1,onInteractOutside:i,onEscapeKeyDown:a,onPointerDownOutside:s,onFocusOutside:je(r,$=>{$.preventDefault()}),onDismiss:d.onDismiss,children:o.jsx(Vh,{...m,...c,onPointerDown:je(c.onPointerDown,$=>{$.currentTarget.contains($.target)&&v(!0),d.hasSelectionRef.current=!1,d.isPointerDownOnContentRef.current=!0}),ref:p,style:{...c.style,userSelect:y?"text":void 0,WebkitUserSelect:y?"text":void 0,"--radix-hover-card-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-hover-card-content-available-width":"var(--radix-popper-available-width)","--radix-hover-card-content-available-height":"var(--radix-popper-available-height)","--radix-hover-card-trigger-width":"var(--radix-popper-anchor-width)","--radix-hover-card-trigger-height":"var(--radix-popper-anchor-height)"}})})}),wue="HoverCardArrow",kue=h.forwardRef((e,t)=>{const{__scopeHoverCard:n,...a}=e,s=hw(n);return o.jsx(Kh,{...s,...a,ref:t})});kue.displayName=wue;function Dx(e){return t=>t.pointerType==="touch"?void 0:e()}function Cue(e){const t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:a=>a.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP});for(;n.nextNode();)t.push(n.currentNode);return t}var Sue=j7,Aue=D7,Tue=M7,I7=E7;const Ns=Sue,Ds=Aue,ns=h.forwardRef(({className:e,sideOffset:t=6,align:n="start",...a},s)=>o.jsx(Tue,{children:o.jsx(I7,{ref:s,align:n,sideOffset:t,className:X("z-tooltip min-w-[240px] rounded-lg border border-[color:var(--border)] bg-[color:var(--popover)] p-3 text-sm text-[color:var(--popover-foreground)] shadow-[0_8px_24px_rgba(13,17,23,0.08)] outline-none","data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=open]:fade-in-0 data-[state=closed]:fade-out-0",e),...a})}));ns.displayName=I7.displayName;var Rue=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],Pue=Rue.reduce((e,t)=>{const n=u_(`Primitive.${t}`),a=h.forwardRef((s,r)=>{const{asChild:i,...c}=s,d=i?n:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),o.jsx(d,{...c,ref:r})});return a.displayName=`Primitive.${t}`,{...e,[t]:a}},{}),_ue="Label",O7=h.forwardRef((e,t)=>o.jsx(Pue.label,{...e,ref:t,onMouseDown:n=>{n.target.closest("button, input, select, textarea")||(e.onMouseDown?.(n),!n.defaultPrevented&&n.detail>1&&n.preventDefault())}}));O7.displayName=_ue;var L7=O7;const lh=h.forwardRef(({className:e,...t},n)=>o.jsx(L7,{ref:n,className:X("text-sm font-medium leading-none text-[color:var(--foreground)] peer-disabled:cursor-not-allowed peer-disabled:opacity-70",e),...t}));lh.displayName=L7.displayName;const jue=zh("inline-flex items-center gap-1 rounded-sm border px-2 py-0.5 text-xs font-medium leading-none transition-colors",{variants:{variant:{default:"border-transparent bg-[color:var(--secondary)] text-[color:var(--secondary-foreground)]",primary:"border-transparent bg-[color:var(--primary)] text-[color:var(--primary-foreground)]",secondary:"border-transparent bg-[color:var(--secondary)] text-[color:var(--secondary-foreground)]",destructive:"border-transparent bg-[color:var(--destructive-bg)] text-[color:var(--destructive)]",success:"border-transparent bg-[color:var(--success-bg)] text-[color:var(--success)]",warning:"border-transparent bg-[color:var(--warning-bg)] text-[color:var(--warning-foreground)]",outline:"border-[color:var(--border)] bg-transparent text-[color:var(--foreground)]"}},defaultVariants:{variant:"default"}});function Xt({className:e,variant:t,...n}){return o.jsx("span",{className:X(jue({variant:t}),e),...n})}function KO(e){const t=Nue(e),n=h.forwardRef((a,s)=>{const{children:r,...i}=a,c=h.Children.toArray(r),d=c.find(Mue);if(d){const m=d.props.children,f=c.map(p=>p===d?h.Children.count(m)>1?h.Children.only(null):h.isValidElement(m)?m.props.children:null:p);return o.jsx(t,{...i,ref:s,children:h.isValidElement(m)?h.cloneElement(m,void 0,f):null})}return o.jsx(t,{...i,ref:s,children:r})});return n.displayName=`${e}.Slot`,n}function Nue(e){const t=h.forwardRef((n,a)=>{const{children:s,...r}=n;if(h.isValidElement(s)){const i=Iue(s),c=Eue(r,s.props);return s.type!==h.Fragment&&(c.ref=a?di(a,i):i),h.cloneElement(s,c)}return h.Children.count(s)>1?h.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var Due=Symbol("radix.slottable");function Mue(e){return h.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===Due}function Eue(e,t){const n={...t};for(const a in t){const s=e[a],r=t[a];/^on[A-Z]/.test(a)?s&&r?n[a]=(...c)=>{const d=r(...c);return s(...c),d}:s&&(n[a]=s):a==="style"?n[a]={...s,...r}
vendor: 10,617 bytes, line 216
216:a==="className"&&(n[a]=[s,r].filter(Boolean).join(" "))}return{...e,...n}}function Iue(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}function vw(e){const t=e+"CollectionProvider",[n,a]=so(t),[s,r]=n(t,{collectionRef:{current:null},itemMap:new Map}),i=x=>{const{scope:w,children:S}=x,k=Se.useRef(null),T=Se.useRef(new Map).current;return o.jsx(s,{scope:w,itemMap:T,collectionRef:k,children:S})};i.displayName=t;const c=e+"CollectionSlot",d=KO(c),m=Se.forwardRef((x,w)=>{const{scope:S,children:k}=x,T=r(c,S),R=vt(w,T.collectionRef);return o.jsx(d,{ref:R,children:k})});m.displayName=c;const f=e+"CollectionItemSlot",p="data-radix-collection-item",y=KO(f),v=Se.forwardRef((x,w)=>{const{scope:S,children:k,...T}=x,R=Se.useRef(null),_=vt(w,R),P=r(f,S);return Se.useEffect(()=>(P.itemMap.set(R,{ref:R,...T}),()=>void P.itemMap.delete(R))),o.jsx(y,{[p]:"",ref:_,children:k})});v.displayName=f;function $(x){const w=r(e+"CollectionConsumer",x);return Se.useCallback(()=>{const k=w.collectionRef.current;if(!k)return[];const T=Array.from(k.querySelectorAll(`[${p}]`));return Array.from(w.itemMap.values()).sort((P,j)=>T.indexOf(P.ref.current)-T.indexOf(j.ref.current))},[w.collectionRef,w.itemMap])}return[{Provider:i,Slot:m,ItemSlot:v},$,a]}var Oue=h.createContext(void 0);function Jh(e){const t=h.useContext(Oue);return e||t||"ltr"}var z1="rovingFocusGroup.onEntryFocus",Lue={bubbles:!1,cancelable:!0},ey="RovingFocusGroup",[ZT,U7,Uue]=vw(ey),[Bue,bw]=so(ey,[Uue]),[Fue,zue]=Bue(ey),B7=h.forwardRef((e,t)=>o.jsx(ZT.Provider,{scope:e.__scopeRovingFocusGroup,children:o.jsx(ZT.Slot,{scope:e.__scopeRovingFocusGroup,children:o.jsx(que,{...e,ref:t})})}));B7.displayName=ey;var que=h.forwardRef((e,t)=>{const{__scopeRovingFocusGroup:n,orientation:a,loop:s=!1,dir:r,currentTabStopId:i,defaultCurrentTabStopId:c,onCurrentTabStopIdChange:d,onEntryFocus:m,preventScrollOnEntryFocus:f=!1,...p}=e,y=h.useRef(null),v=vt(t,y),$=Jh(r),[x,w]=ts({prop:i,defaultProp:c??null,onChange:d,caller:ey}),[S,k]=h.useState(!1),T=oi(m),R=U7(n),_=h.useRef(!1),[P,j]=h.useState(0);return h.useEffect(()=>{const N=y.current;if(N)return N.addEventListener(z1,T),()=>N.removeEventListener(z1,T)},[T]),o.jsx(Fue,{scope:n,orientation:a,dir:$,loop:s,currentTabStopId:x,onItemFocus:h.useCallback(N=>w(N),[w]),onItemShiftTab:h.useCallback(()=>k(!0),[]),onFocusableItemAdd:h.useCallback(()=>j(N=>N+1),[]),onFocusableItemRemove:h.useCallback(()=>j(N=>N-1),[]),children:o.jsx(st.div,{tabIndex:S||P===0?-1:0,"data-orientation":a,...p,ref:v,style:{outline:"none",...e.style},onMouseDown:je(e.onMouseDown,()=>{_.current=!0}),onFocus:je(e.onFocus,N=>{const I=!_.current;if(N.target===N.currentTarget&&I&&!S){const z=new CustomEvent(z1,Lue);if(N.currentTarget.dispatchEvent(z),!z.defaultPrevented){const E=R().filter(q=>q.focusable),L=E.find(q=>q.active),O=E.find(q=>q.id===x),ne=[L,O,...E].filter(Boolean).map(q=>q.ref.current);q7(ne,f)}}_.current=!1}),onBlur:je(e.onBlur,()=>k(!1))})})}),F7="RovingFocusGroupItem",z7=h.forwardRef((e,t)=>{const{__scopeRovingFocusGroup:n,focusable:a=!0,active:s=!1,tabStopId:r,children:i,...c}=e,d=To(),m=r||d,f=zue(F7,n),p=f.currentTabStopId===m,y=U7(n),{onFocusableItemAdd:v,onFocusableItemRemove:$,currentTabStopId:x}=f;return h.useEffect(()=>{if(a)return v(),()=>$()},[a,v,$]),o.jsx(ZT.ItemSlot,{scope:n,id:m,focusable:a,active:s,children:o.jsx(st.span,{tabIndex:p?0:-1,"data-orientation":f.orientation,...c,ref:t,onMouseDown:je(e.onMouseDown,w=>{a?f.onItemFocus(m):w.preventDefault()}),onFocus:je(e.onFocus,()=>f.onItemFocus(m)),onKeyDown:je(e.onKeyDown,w=>{if(w.key==="Tab"&&w.shiftKey){f.onItemShiftTab();return}if(w.target!==w.currentTarget)return;const S=Kue(w,f.orientation,f.dir);if(S!==void 0){if(w.metaKey||w.ctrlKey||w.altKey||w.shiftKey)return;w.preventDefault();let T=y().filter(R=>R.focusable).map(R=>R.ref.current);if(S==="last")T.reverse();else if(S==="prev"||S==="next"){S==="prev"&&T.reverse();const R=T.indexOf(w.currentTarget);T=f.loop?Gue(T,R+1):T.slice(R+1)}setTimeout(()=>q7(T))}}),children:typeof i=="function"?i({isCurrentTabStop:p,hasTabStop:x!=null}):i})})});z7.displayName=F7;var Hue={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function Vue(e,t){return t!=="rtl"?e:e==="ArrowLeft"?"ArrowRight":e==="ArrowRight"?"ArrowLeft":e}function Kue(e,t,n){const a=Vue(e.key,n);if(!(t==="vertical"&&["ArrowLeft","ArrowRight"].includes(a))&&!(t==="horizontal"&&["ArrowUp","ArrowDown"].includes(a)))return Hue[a]}function q7(e,t=!1){const n=document.activeElement;for(const a of e)if(a===n||(a.focus({preventScroll:t}),document.activeElement!==n))return}function Gue(e,t){return e.map((n,a)=>e[(t+a)%e.length])}var H7=B7,V7=z7,xw="Tabs",[Wue]=so(xw,[bw]),K7=bw(),[Yue,M_]=Wue(xw),G7=h.forwardRef((e,t)=>{const{__scopeTabs:n,value:a,onValueChange:s,defaultValue:r,orientation:i="horizontal",dir:c,activationMode:d="automatic",...m}=e,f=Jh(c),[p,y]=ts({prop:a,onChange:s,defaultProp:r??"",caller:xw});return o.jsx(Yue,{scope:n,baseId:To(),value:p,onValueChange:y,orientation:i,dir:f,activationMode:d,children:o.jsx(st.div,{dir:f,"data-orientation":i,...m,ref:t})})});G7.displayName=xw;var W7="TabsList",Y7=h.forwardRef((e,t)=>{const{__scopeTabs:n,loop:a=!0,...s}=e,r=M_(W7,n),i=K7(n);return o.jsx(H7,{asChild:!0,...i,orientation:r.orientation,dir:r.dir,loop:a,children:o.jsx(st.div,{role:"tablist","aria-orientation":r.orientation,...s,ref:t})})});Y7.displayName=W7;var Q7="TabsTrigger",X7=h.forwardRef((e,t)=>{const{__scopeTabs:n,value:a,disabled:s=!1,...r}=e,i=M_(Q7,n),c=K7(n),d=eq(i.baseId,a),m=tq(i.baseId,a),f=a===i.value;return o.jsx(V7,{asChild:!0,...c,focusable:!s,active:f,children:o.jsx(st.button,{type:"button",role:"tab","aria-selected":f,"aria-controls":m,"data-state":f?"active":"inactive","data-disabled":s?"":void 0,disabled:s,id:d,...r,ref:t,onMouseDown:je(e.onMouseDown,p=>{!s&&p.button===0&&p.ctrlKey===!1?i.onValueChange(a):p.preventDefault()}),onKeyDown:je(e.onKeyDown,p=>{[" ","Enter"].includes(p.key)&&i.onValueChange(a)}),onFocus:je(e.onFocus,()=>{const p=i.activationMode!=="manual";!f&&!s&&p&&i.onValueChange(a)})})})});X7.displayName=Q7;var Z7="TabsContent",J7=h.forwardRef((e,t)=>{const{__scopeTabs:n,value:a,forceMount:s,children:r,...i}=e,c=M_(Z7,n),d=eq(c.baseId,a),m=tq(c.baseId,a),f=a===c.value,p=h.useRef(f);return h.useEffect(()=>{const y=requestAnimationFrame(()=>p.current=!1);return()=>cancelAnimationFrame(y)},[]),o.jsx(za,{present:s||f,children:({present:y})=>o.jsx(st.div,{"data-state":f?"active":"inactive","data-orientation":c.orientation,role:"tabpanel","aria-labelledby":d,hidden:!y,id:m,tabIndex:0,...i,ref:t,style:{...e.style,animationDuration:p.current?"0s":void 0},children:y&&r})})});J7.displayName=Z7;function eq(e,t){return`${e}-trigger-${t}`}function tq(e,t){return`${e}-content-${t}`}var Que=G7,nq=Y7,aq=X7,oq=J7;const Cc=Que,Xue="group-data-[variant=segmented]/tabs:h-auto group-data-[variant=segmented]/tabs:flex-1 group-data-[variant=segmented]/tabs:justify-center group-data-[variant=segmented]/tabs:gap-1.5 group-data-[variant=segmented]/tabs:rounded-md group-data-[variant=segmented]/tabs:px-3 group-data-[variant=segmented]/tabs:py-1.5 group-data-[variant=segmented]/tabs:data-[state=active]:bg-[color:var(--background)] group-data-[variant=segmented]/tabs:data-[state=active]:font-semibold group-data-[variant=segmented]/tabs:data-[state=active]:shadow-sm",tl=h.forwardRef(({className:e,children:t,variant:n="underline",...a},s)=>{const r=h.useRef(null),[i,c]=h.useState(null),d=h.useCallback(m=>{r.current=m,typeof s=="function"?s(m):s&&(s.current=m)},[s]);return h.useLayoutEffect(()=>{if(n!=="underline")return;const m=r.current;if(!m)return;const f=()=>{const v=m.querySelector('[role="tab"][data-state="active"]');v&&c({x:v.offsetLeft,w:v.offsetWidth})};f();const p=new ResizeObserver(f);p.observe(m);const y=new MutationObserver(f);return y.observe(m,{subtree:!0,attributes:!0,attributeFilter:["data-state"]}),()=>{p.disconnect(),y.disconnect()}},[n]),o.jsxs(nq,{ref:d,"data-variant":n,className:X("group/tabs relative inline-flex max-w-full",n==="segmented"?"h-auto w-full items-center gap-1 rounded-lg bg-[color:var(--muted)] p-1":"h-auto min-h-10 items-center gap-x-4 overflow-x-auto overflow-y-hidden whitespace-nowrap border-b border-[color:var(--border)] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden",e),...a,children:[t,n==="underline"&&i&&o.jsx("span",{"aria-hidden":!0,className:"pointer-events-none absolute bottom-0 left-0 h-0.5 rounded-full bg-[color:var(--primary)] transition-[transform,width] duration-200 ease-out",style:{transform:`translateX(${i.x}px)`,width:i.w}})]})});tl.displayName=nq.displayName;const ia=h.forwardRef(({className:e,...t},n)=>o.jsx(aq,{ref:n,className:X("relative inline-flex min-h-10 items-center whitespace-nowrap px-1 text-sm font-medium text-[color:var(--muted-foreground)] transition-colors hover:text-[color:var(--foreground)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[color:var(--ring)] disabled:pointer-events-none disabled:opacity-50 data-[state=active]:text-[color:var(--foreground)]",Xue,e),...t}));ia.displayName=aq.displayName;const Tn=h.forwardRef(({className:e,...t},n)=>o.jsx(oq,{ref:n,className:X("mt-4 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[color:var(--ring)]",e),...t}));Tn.displayName=oq.displayName;function Zue(e){const t=Jue(e),n=h.forwardRef((a,s)=>{const{children:r,...i}=a,c=h.Children.toArray(r),d=c.find(tme);if(d){const m=d.props.children,f=c.map(p=>p===d?h.Children.count(m)>1?h.Children.only(null):h.isValidElement(m)?m.props.children:null:p);return o.jsx(t,{...i,ref:s,children:h.isValidElement(m)?h.cloneElement(m,void 0,f):null})}return o.jsx(t,{...i,ref:s,children:r})});return n.displayName=`${e}.Slot`,n}function Jue(e){const t=h.forwardRef((n,a)=>{const{children:s,...r}=n;if(h.isValidElement(s)){const i=ame(s),c=nme(r,s.props);return s.type!==h.Fragment&&(c.ref=a?di(a,i):i),h.cloneElement(s,c)}return h.Children.count(s)>1?h.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var eme=Symbol("radix.slottable");function tme(e){return h.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===eme}function nme(e,t){const n={...t};for(const a in t){const s=e[a],r=t[a];/^on[A-Z]/.test(a)?s&&r?n[a]=(...c)=>{const d=r(...c);return s(...c),d}:s&&(n[a]=s):a==="style"?n[a]={...s,...r}
vendor: 15,038 bytes, line 216
216:a==="className"&&(n[a]=[s,r].filter(Boolean).join(" "))}return{...e,...n}}function ame(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var JT=["Enter"," "],ome=["ArrowDown","PageUp","Home"],sq=["ArrowUp","PageDown","End"],sme=[...ome,...sq],rme={ltr:[...JT,"ArrowRight"],rtl:[...JT,"ArrowLeft"]},ime={ltr:["ArrowLeft"],rtl:["ArrowRight"]},ty="Menu",[ch,lme,cme]=vw(ty),[vu,rq]=so(ty,[cme,mi,bw]),$w=mi(),iq=bw(),[dme,bu]=vu(ty),[ume,ny]=vu(ty),lq=e=>{const{__scopeMenu:t,open:n=!1,children:a,dir:s,onOpenChange:r,modal:i=!0}=e,c=$w(t),[d,m]=h.useState(null),f=h.useRef(!1),p=oi(r),y=Jh(s);return h.useEffect(()=>{const v=()=>{f.current=!0,document.addEventListener("pointerdown",$,{capture:!0,once:!0}),document.addEventListener("pointermove",$,{capture:!0,once:!0})},$=()=>f.current=!1;return document.addEventListener("keydown",v,{capture:!0}),()=>{document.removeEventListener("keydown",v,{capture:!0}),document.removeEventListener("pointerdown",$,{capture:!0}),document.removeEventListener("pointermove",$,{capture:!0})}},[]),o.jsx(Hh,{...c,children:o.jsx(dme,{scope:t,open:n,onOpenChange:p,content:d,onContentChange:m,children:o.jsx(ume,{scope:t,onClose:h.useCallback(()=>p(!1),[p]),isUsingKeyboardRef:f,dir:y,modal:i,children:a})})})};lq.displayName=ty;var mme="MenuAnchor",E_=h.forwardRef((e,t)=>{const{__scopeMenu:n,...a}=e,s=$w(n);return o.jsx(Op,{...s,...a,ref:t})});E_.displayName=mme;var I_="MenuPortal",[pme,cq]=vu(I_,{forceMount:void 0}),dq=e=>{const{__scopeMenu:t,forceMount:n,children:a,container:s}=e,r=bu(I_,t);return o.jsx(pme,{scope:t,forceMount:n,children:o.jsx(za,{present:n||r.open,children:o.jsx(pu,{asChild:!0,container:s,children:a})})})};dq.displayName=I_;var _s="MenuContent",[fme,O_]=vu(_s),uq=h.forwardRef((e,t)=>{const n=cq(_s,e.__scopeMenu),{forceMount:a=n.forceMount,...s}=e,r=bu(_s,e.__scopeMenu),i=ny(_s,e.__scopeMenu);return o.jsx(ch.Provider,{scope:e.__scopeMenu,children:o.jsx(za,{present:a||r.open,children:o.jsx(ch.Slot,{scope:e.__scopeMenu,children:i.modal?o.jsx(gme,{...s,ref:t}):o.jsx(hme,{...s,ref:t})})})})}),gme=h.forwardRef((e,t)=>{const n=bu(_s,e.__scopeMenu),a=h.useRef(null),s=vt(t,a);return h.useEffect(()=>{const r=a.current;if(r)return cw(r)},[]),o.jsx(L_,{...e,ref:s,trapFocus:n.open,disableOutsidePointerEvents:n.open,disableOutsideScroll:!0,onFocusOutside:je(e.onFocusOutside,r=>r.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>n.onOpenChange(!1)})}),hme=h.forwardRef((e,t)=>{const n=bu(_s,e.__scopeMenu);return o.jsx(L_,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>n.onOpenChange(!1)})}),yme=Zue("MenuContent.ScrollLock"),L_=h.forwardRef((e,t)=>{const{__scopeMenu:n,loop:a=!1,trapFocus:s,onOpenAutoFocus:r,onCloseAutoFocus:i,disableOutsidePointerEvents:c,onEntryFocus:d,onEscapeKeyDown:m,onPointerDownOutside:f,onFocusOutside:p,onInteractOutside:y,onDismiss:v,disableOutsideScroll:$,...x}=e,w=bu(_s,n),S=ny(_s,n),k=$w(n),T=iq(n),R=lme(n),[_,P]=h.useState(null),j=h.useRef(null),N=vt(t,j,w.onContentChange),I=h.useRef(0),z=h.useRef(""),E=h.useRef(0),L=h.useRef(null),O=h.useRef("right"),V=h.useRef(0),ne=$?Yh:h.Fragment,q=$?{as:yme,allowPinchZoom:!0}:void 0,M=H=>{const ee=z.current+H,B=R().filter(se=>!se.disabled),G=document.activeElement,Q=B.find(se=>se.ref.current===G)?.textValue,de=B.map(se=>se.textValue),Y=Pme(de,ee,Q),pe=B.find(se=>se.textValue===Y)?.ref.current;(function se(we){z.current=we,window.clearTimeout(I.current),we!==""&&(I.current=window.setTimeout(()=>se(""),1e3))})(ee),pe&&setTimeout(()=>pe.focus())};h.useEffect(()=>()=>window.clearTimeout(I.current),[]),iw();const F=h.useCallback(H=>O.current===L.current?.side&&jme(H,L.current?.area),[]);return o.jsx(fme,{scope:n,searchRef:z,onItemEnter:h.useCallback(H=>{F(H)&&H.preventDefault()},[F]),onItemLeave:h.useCallback(H=>{F(H)||(j.current?.focus(),P(null))},[F]),onTriggerLeave:h.useCallback(H=>{F(H)&&H.preventDefault()},[F]),pointerGraceTimerRef:E,onPointerGraceIntentChange:h.useCallback(H=>{L.current=H},[]),children:o.jsx(ne,{...q,children:o.jsx(Wh,{asChild:!0,trapped:s,onMountAutoFocus:je(r,H=>{H.preventDefault(),j.current?.focus({preventScroll:!0})}),onUnmountAutoFocus:i,children:o.jsx(mu,{asChild:!0,disableOutsidePointerEvents:c,onEscapeKeyDown:m,onPointerDownOutside:f,onFocusOutside:p,onInteractOutside:y,onDismiss:v,children:o.jsx(H7,{asChild:!0,...T,dir:S.dir,orientation:"vertical",loop:a,currentTabStopId:_,onCurrentTabStopIdChange:P,onEntryFocus:je(d,H=>{S.isUsingKeyboardRef.current||H.preventDefault()}),preventScrollOnEntryFocus:!0,children:o.jsx(Vh,{role:"menu","aria-orientation":"vertical","data-state":Tq(w.open),"data-radix-menu-content":"",dir:S.dir,...k,...x,ref:N,style:{outline:"none",...x.style},onKeyDown:je(x.onKeyDown,H=>{const B=H.target.closest("[data-radix-menu-content]")===H.currentTarget,G=H.ctrlKey||H.altKey||H.metaKey,Q=H.key.length===1;B&&(H.key==="Tab"&&H.preventDefault(),!G&&Q&&M(H.key));const de=j.current;if(H.target!==de||!sme.includes(H.key))return;H.preventDefault();const pe=R().filter(se=>!se.disabled).map(se=>se.ref.current);sq.includes(H.key)&&pe.reverse(),Tme(pe)}),onBlur:je(e.onBlur,H=>{H.currentTarget.contains(H.target)||(window.clearTimeout(I.current),z.current="")}),onPointerMove:je(e.onPointerMove,dh(H=>{const ee=H.target,B=V.current!==H.clientX;if(H.currentTarget.contains(ee)&&B){const G=H.clientX>V.current?"right":"left";O.current=G,V.current=H.clientX}}))})})})})})})});uq.displayName=_s;var vme="MenuGroup",U_=h.forwardRef((e,t)=>{const{__scopeMenu:n,...a}=e;return o.jsx(st.div,{role:"group",...a,ref:t})});U_.displayName=vme;var bme="MenuLabel",mq=h.forwardRef((e,t)=>{const{__scopeMenu:n,...a}=e;return o.jsx(st.div,{...a,ref:t})});mq.displayName=bme;var Mx="MenuItem",GO="menu.itemSelect",ww=h.forwardRef((e,t)=>{const{disabled:n=!1,onSelect:a,...s}=e,r=h.useRef(null),i=ny(Mx,e.__scopeMenu),c=O_(Mx,e.__scopeMenu),d=vt(t,r),m=h.useRef(!1),f=()=>{const p=r.current;if(!n&&p){const y=new CustomEvent(GO,{bubbles:!0,cancelable:!0});p.addEventListener(GO,v=>a?.(v),{once:!0}),VF(p,y),y.defaultPrevented?m.current=!1:i.onClose()}};return o.jsx(pq,{...s,ref:d,disabled:n,onClick:je(e.onClick,f),onPointerDown:p=>{e.onPointerDown?.(p),m.current=!0},onPointerUp:je(e.onPointerUp,p=>{m.current||p.currentTarget?.click()}),onKeyDown:je(e.onKeyDown,p=>{const y=c.searchRef.current!=="";n||y&&p.key===" "||JT.includes(p.key)&&(p.currentTarget.click(),p.preventDefault())})})});ww.displayName=Mx;var pq=h.forwardRef((e,t)=>{const{__scopeMenu:n,disabled:a=!1,textValue:s,...r}=e,i=O_(Mx,n),c=iq(n),d=h.useRef(null),m=vt(t,d),[f,p]=h.useState(!1),[y,v]=h.useState("");return h.useEffect(()=>{const $=d.current;$&&v(($.textContent??"").trim())},[r.children]),o.jsx(ch.ItemSlot,{scope:n,disabled:a,textValue:s??y,children:o.jsx(V7,{asChild:!0,...c,focusable:!a,children:o.jsx(st.div,{role:"menuitem","data-highlighted":f?"":void 0,"aria-disabled":a||void 0,"data-disabled":a?"":void 0,...r,ref:m,onPointerMove:je(e.onPointerMove,dh($=>{a?i.onItemLeave($):(i.onItemEnter($),$.defaultPrevented||$.currentTarget.focus({preventScroll:!0}))})),onPointerLeave:je(e.onPointerLeave,dh($=>i.onItemLeave($))),onFocus:je(e.onFocus,()=>p(!0)),onBlur:je(e.onBlur,()=>p(!1))})})})}),xme="MenuCheckboxItem",fq=h.forwardRef((e,t)=>{const{checked:n=!1,onCheckedChange:a,...s}=e;return o.jsx(bq,{scope:e.__scopeMenu,checked:n,children:o.jsx(ww,{role:"menuitemcheckbox","aria-checked":Ex(n)?"mixed":n,...s,ref:t,"data-state":F_(n),onSelect:je(s.onSelect,()=>a?.(Ex(n)?!0:!n),{checkForDefaultPrevented:!1})})})});fq.displayName=xme;var gq="MenuRadioGroup",[$me,wme]=vu(gq,{value:void 0,onValueChange:()=>{}}),hq=h.forwardRef((e,t)=>{const{value:n,onValueChange:a,...s}=e,r=oi(a);return o.jsx($me,{scope:e.__scopeMenu,value:n,onValueChange:r,children:o.jsx(U_,{...s,ref:t})})});hq.displayName=gq;var yq="MenuRadioItem",vq=h.forwardRef((e,t)=>{const{value:n,...a}=e,s=wme(yq,e.__scopeMenu),r=n===s.value;return o.jsx(bq,{scope:e.__scopeMenu,checked:r,children:o.jsx(ww,{role:"menuitemradio","aria-checked":r,...a,ref:t,"data-state":F_(r),onSelect:je(a.onSelect,()=>s.onValueChange?.(n),{checkForDefaultPrevented:!1})})})});vq.displayName=yq;var B_="MenuItemIndicator",[bq,kme]=vu(B_,{checked:!1}),xq=h.forwardRef((e,t)=>{const{__scopeMenu:n,forceMount:a,...s}=e,r=kme(B_,n);return o.jsx(za,{present:a||Ex(r.checked)||r.checked===!0,children:o.jsx(st.span,{...s,ref:t,"data-state":F_(r.checked)})})});xq.displayName=B_;var Cme="MenuSeparator",$q=h.forwardRef((e,t)=>{const{__scopeMenu:n,...a}=e;return o.jsx(st.div,{role:"separator","aria-orientation":"horizontal",...a,ref:t})});$q.displayName=Cme;var Sme="MenuArrow",wq=h.forwardRef((e,t)=>{const{__scopeMenu:n,...a}=e,s=$w(n);return o.jsx(Kh,{...s,...a,ref:t})});wq.displayName=Sme;var Ame="MenuSub",[GBs,kq]=vu(Ame),Cg="MenuSubTrigger",Cq=h.forwardRef((e,t)=>{const n=bu(Cg,e.__scopeMenu),a=ny(Cg,e.__scopeMenu),s=kq(Cg,e.__scopeMenu),r=O_(Cg,e.__scopeMenu),i=h.useRef(null),{pointerGraceTimerRef:c,onPointerGraceIntentChange:d}=r,m={__scopeMenu:e.__scopeMenu},f=h.useCallback(()=>{i.current&&window.clearTimeout(i.current),i.current=null},[]);return h.useEffect(()=>f,[f]),h.useEffect(()=>{const p=c.current;return()=>{window.clearTimeout(p),d(null)}},[c,d]),o.jsx(E_,{asChild:!0,...m,children:o.jsx(pq,{id:s.triggerId,"aria-haspopup":"menu","aria-expanded":n.open,"aria-controls":s.contentId,"data-state":Tq(n.open),...e,ref:di(t,s.onTriggerChange),onClick:p=>{e.onClick?.(p),!(e.disabled||p.defaultPrevented)&&(p.currentTarget.focus(),n.open||n.onOpenChange(!0))},onPointerMove:je(e.onPointerMove,dh(p=>{r.onItemEnter(p),!p.defaultPrevented&&!e.disabled&&!n.open&&!i.current&&(r.onPointerGraceIntentChange(null),i.current=window.setTimeout(()=>{n.onOpenChange(!0),f()},100))})),onPointerLeave:je(e.onPointerLeave,dh(p=>{f();const y=n.content?.getBoundingClientRect();if(y){const v=n.content?.dataset.side,$=v==="right",x=$?-5:5,w=y[$?"left":"right"],S=y[$?"right":"left"];r.onPointerGraceIntentChange({area:[{x:p.clientX+x,y:p.clientY},{x:w,y:y.top},{x:S,y:y.top},{x:S,y:y.bottom},{x:w,y:y.bottom}],side:v}),window.clearTimeout(c.current),c.current=window.setTimeout(()=>r.onPointerGraceIntentChange(null),300)}else{if(r.onTriggerLeave(p),p.defaultPrevented)return;r.onPointerGraceIntentChange(null)}})),onKeyDown:je(e.onKeyDown,p=>{const y=r.searchRef.current!=="";e.disabled||y&&p.key===" "||rme[a.dir].includes(p.key)&&(n.onOpenChange(!0),n.content?.focus(),p.preventDefault())})})})});Cq.displayName=Cg;var Sq="MenuSubContent",Aq=h.forwardRef((e,t)=>{const n=cq(_s,e.__scopeMenu),{forceMount:a=n.forceMount,...s}=e,r=bu(_s,e.__scopeMenu),i=ny(_s,e.__scopeMenu),c=kq(Sq,e.__scopeMenu),d=h.useRef(null),m=vt(t,d);return o.jsx(ch.Provider,{scope:e.__scopeMenu,children:o.jsx(za,{present:a||r.open,children:o.jsx(ch.Slot,{scope:e.__scopeMenu,children:o.jsx(L_,{id:c.contentId,"aria-labelledby":c.triggerId,...s,ref:m,align:"start",side:i.dir==="rtl"?"left":"right",disableOutsidePointerEvents:!1,disableOutsideScroll:!1,trapFocus:!1,onOpenAutoFocus:f=>{i.isUsingKeyboardRef.current&&d.current?.focus(),f.preventDefault()},onCloseAutoFocus:f=>f.preventDefault(),onFocusOutside:je(e.onFocusOutside,f=>{f.target!==c.trigger&&r.onOpenChange(!1)}),onEscapeKeyDown:je(e.onEscapeKeyDown,f=>{i.onClose(),f.preventDefault()}),onKeyDown:je(e.onKeyDown,f=>{const p=f.currentTarget.contains(f.target),y=ime[i.dir].includes(f.key);p&&y&&(r.onOpenChange(!1),c.trigger?.focus(),f.preventDefault())})})})})})});Aq.displayName=Sq;function Tq(e){return e?"open":"closed"}function Ex(e){return e==="indeterminate"}function F_(e){return Ex(e)?"indeterminate":e?"checked":"unchecked"}function Tme(e){const t=document.activeElement;for(const n of e)if(n===t||(n.focus(),document.activeElement!==t))return}function Rme(e,t){return e.map((n,a)=>e[(t+a)%e.length])}function Pme(e,t,n){const s=t.length>1&&Array.from(t).every(m=>m===t[0])?t[0]:t,r=n?e.indexOf(n):-1;let i=Rme(e,Math.max(r,0));s.length===1&&(i=i.filter(m=>m!==n));const d=i.find(m=>m.toLowerCase().startsWith(s.toLowerCase()));return d!==n?d:void 0}function _me(e,t){const{x:n,y:a}=e;let s=!1;for(let r=0,i=t.length-1;r<t.length;i=r++){const c=t[r],d=t[i],m=c.x,f=c.y,p=d.x,y=d.y;f>a!=y>a&&n<(p-m)*(a-f)/(y-f)+m&&(s=!s)}return s}function jme(e,t){if(!t)return!1;const n={x:e.clientX,y:e.clientY};return _me(n,t)}function dh(e){return t=>t.pointerType==="mouse"?e(t):void 0}var Nme=lq,Dme=E_,Mme=dq,Eme=uq,Ime=U_,Ome=mq,Lme=ww,Ume=fq,Bme=hq,Fme=vq,zme=xq,qme=$q,Hme=wq,Vme=Cq,Kme=Aq,kw="DropdownMenu",[Gme]=so(kw,[rq]),ro=rq(),[Wme,Rq]=Gme(kw),Pq=e=>{const{__scopeDropdownMenu:t,children:n,dir:a,open:s,defaultOpen:r,onOpenChange:i,modal:c=!0}=e,d=ro(t),m=h.useRef(null),[f,p]=ts({prop:s,defaultProp:r??!1,onChange:i,caller:kw});return o.jsx(Wme,{scope:t,triggerId:To(),triggerRef:m,contentId:To(),open:f,onOpenChange:p,onOpenToggle:h.useCallback(()=>p(y=>!y),[p]),modal:c,children:o.jsx(Nme,{...d,open:f,onOpenChange:p,dir:a,modal:c,children:n})})};Pq.displayName=kw;var _q="DropdownMenuTrigger",jq=h.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,disabled:a=!1,...s}=e,r=Rq(_q,n),i=ro(n);return o.jsx(Dme,{asChild:!0,...i,children:o.jsx(st.button,{type:"button",id:r.triggerId,"aria-haspopup":"menu","aria-expanded":r.open,"aria-controls":r.open?r.contentId:void 0,"data-state":r.open?"open":"closed","data-disabled":a?"":void 0,disabled:a,...s,ref:di(t,r.triggerRef),onPointerDown:je(e.onPointerDown,c=>{!a&&c.button===0&&c.ctrlKey===!1&&(r.onOpenToggle(),r.open||c.preventDefault())}),onKeyDown:je(e.onKeyDown,c=>{a||(["Enter"," "].includes(c.key)&&r.onOpenToggle(),c.key==="ArrowDown"&&r.onOpenChange(!0),["Enter"," ","ArrowDown"].includes(c.key)&&c.preventDefault())})})})});jq.displayName=_q;var Yme="DropdownMenuPortal",Nq=e=>{const{__scopeDropdownMenu:t,...n}=e,a=ro(t);return o.jsx(Mme,{...a,...n})};Nq.displayName=Yme;var Dq="DropdownMenuContent",Mq=h.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...a}=e,s=Rq(Dq,n),r=ro(n),i=h.useRef(!1);return o.jsx(Eme,{id:s.contentId,"aria-labelledby":s.triggerId,...r,...a,ref:t,onCloseAutoFocus:je(e.onCloseAutoFocus,c=>{i.current||s.triggerRef.current?.focus(),i.current=!1,c.preventDefault()}),onInteractOutside:je(e.onInteractOutside,c=>{const d=c.detail.originalEvent,m=d.button===0&&d.ctrlKey===!0,f=d.button===2||m;(!s.modal||f)&&(i.current=!0)}),style:{...e.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});Mq.displayName=Dq;var Qme="DropdownMenuGroup",Xme=h.forwardRef((e,t)=>
216{const{__scopeDropdownMenu:n,...a}=e,s=ro(n);return o.jsx(Ime,{...s,...a,ref:t})});Xme.displayName=Qme;var Zme="DropdownMenuLabel",Eq=h.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...a}=e,s=ro(n);return o.jsx(Ome,{...s,...a,ref:t})});Eq.displayName=Zme;var Jme="DropdownMenuItem",Iq=h.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...a}=e,s=ro(n);return o.jsx(Lme,{...s,...a,ref:t})});Iq.displayName=Jme;var epe="DropdownMenuCheckboxItem",Oq=h.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...a}=e,s=ro(n);return o.jsx(Ume,{...s,...a,ref:t})});Oq.displayName=epe;var tpe="DropdownMenuRadioGroup",Lq=h.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...a}=e,s=ro(n);return o.jsx(Bme,{...s,...a,ref:t})});Lq.displayName=tpe;var npe="DropdownMenuRadioItem",Uq=h.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...a}=e,s=ro(n);return o.jsx(Fme,{...s,...a,ref:t})});Uq.displayName=npe;var ape="DropdownMenuItemIndicator",Bq=h.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...a}=e,s=ro(n);return o.jsx(zme,{...s,...a,ref:t})});Bq.displayName=ape;var ope="DropdownMenuSeparator",Fq=h.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...a}=e,s=ro(n);return o.jsx(qme,{...s,...a,ref:t})});Fq.displayName=ope;var spe="DropdownMenuArrow",rpe=h.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...a}=e,s=ro(n);return o.jsx(Hme,{...s,...a,ref:t})});rpe.displayName=spe;var ipe="DropdownMenuSubTrigger",zq=h.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...a}=e,s=ro(n);return o.jsx(Vme,{...s,...a,ref:t})});zq.displayName=ipe;var lpe="DropdownMenuSubContent",qq=h.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...a}=e,s=ro(n);return o.jsx(Kme,{...s,...a,ref:t,style:{...e.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});qq.displayName=lpe;var cpe=Pq,dpe=jq,upe=Nq,Hq=Mq,Vq=Eq,Kq=Iq,Gq=Oq,mpe=Lq,Wq=Uq,Yq=Bq,Qq=Fq,Xq=zq,Zq=qq;const zp=cpe,qp=dpe,ppe=mpe,fpe=h.forwardRef(({className:e,inset:t,children:n,...a},s)=>o.jsxs(Xq,{ref:s,className:X("flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-[color:var(--accent)] focus:text-[color:var(--accent-foreground)] data-[state=open]:bg-[color:var(--accent)] data-[state=open]:text-[color:var(--accent-foreground)]",t&&"pl-8",e),...a,children:[n,o.jsx(J$,{className:"ml-auto size-4"})]}));fpe.displayName=Xq.displayName;const gpe=h.forwardRef(({className:e,...t},n)=>o.jsx(Zq,{ref:n,className:X("z-tooltip min-w-32 overflow-hidden rounded-md border border-[color:var(--border)] bg-[color:var(--popover)] p-1 text-[color:var(--popover-foreground)] shadow-[0_18px_60px_rgba(13,17,23,0.14)]",e),...t}));gpe.displayName=Zq.displayName;const xu=h.forwardRef(({className:e,sideOffset:t=4,...n},a)=>o.jsx(upe,{children:o.jsx(Hq,{ref:a,sideOffset:t,className:X("z-tooltip min-w-32 overflow-hidden rounded-md border border-[color:var(--border)] bg-[color:var(--popover)] p-1 text-[color:var(--popover-foreground)] shadow-[0_18px_60px_rgba(13,17,23,0.14)]",e),...n})}));xu.displayName=Hq.displayName;const La=h.forwardRef(({className:e,inset:t,...n},a)=>o.jsx(Kq,{ref:a,className:X("relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-[color:var(--accent)] focus:text-[color:var(--accent-foreground)] data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:size-4 [&_svg]:shrink-0",t&&"pl-8",e),...n}));La.displayName=Kq.displayName;const hpe=h.forwardRef(({className:e,children:t,checked:n,...a},s)=>o.jsxs(Gq,{ref:s,className:X("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-[color:var(--accent)] focus:text-[color:var(--accent-foreground)] data-[disabled]:pointer-events-none data-[disabled]:opacity-50",e),checked:n,...a,children:[o.jsx("span",{className:"absolute left-2 flex size-3.5 items-center justify-center",children:o.jsx(Yq,{children:o.jsx(Ec,{className:"size-4"})})}),t]}));
vendor: 4,105 bytes, lines 216-222
216hpe.displayName=Gq.displayName;const Jq=h.forwardRef(({className:e,children:t,...n},a)=>o.jsxs(Wq,{ref:a,className:X("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-[color:var(--accent)] focus:text-[color:var(--accent-foreground)] data-[disabled]:pointer-events-none data-[disabled]:opacity-50",e),...n,children:[o.jsx("span",{className:"absolute left-2 flex size-3.5 items-center justify-center",children:o.jsx(Yq,{children:o.jsx(xse,{className:"size-2 fill-current"})})}),t]}));Jq.displayName=Wq.displayName;const ype=h.forwardRef(({className:e,inset:t,...n},a)=>o.jsx(Vq,{ref:a,className:X("px-2 py-1.5 text-xs font-semibold text-[color:var(--muted-foreground)]",t&&"pl-8",e),...n}));ype.displayName=Vq.displayName;const eH=h.forwardRef(({className:e,...t},n)=>o.jsx(Qq,{ref:n,className:X("-mx-1 my-1 h-px bg-[color:var(--border)]",e),...t}));eH.displayName=Qq.displayName;var vpe=Symbol("radix.slottable");function bpe(e){const t=({children:n})=>o.jsx(o.Fragment,{children:n});return t.displayName=`${e}.Slottable`,t.__radixId=vpe,t}var tH="AlertDialog",[xpe]=so(tH,[Xz]),ul=Xz(),nH=e=>{const{__scopeAlertDialog:t,...n}=e,a=ul(t);return o.jsx(__,{...a,...n,modal:!0})};nH.displayName=tH;var $pe="AlertDialogTrigger",wpe=h.forwardRef((e,t)=>{const{__scopeAlertDialog:n,...a}=e,s=ul(n);return o.jsx(p7,{...s,...a,ref:t})});wpe.displayName=$pe;var kpe="AlertDialogPortal",aH=e=>{const{__scopeAlertDialog:t,...n}=e,a=ul(t);return o.jsx(j_,{...a,...n})};aH.displayName=kpe;var Cpe="AlertDialogOverlay",oH=h.forwardRef((e,t)=>{const{__scopeAlertDialog:n,...a}=e,s=ul(n);return o.jsx(uw,{...s,...a,ref:t})});oH.displayName=Cpe;var qm="AlertDialogContent",[Spe,Ape]=xpe(qm),Tpe=bpe("AlertDialogContent"),sH=h.forwardRef((e,t)=>{const{__scopeAlertDialog:n,children:a,...s}=e,r=ul(n),i=h.useRef(null),c=vt(t,i),d=h.useRef(null);return o.jsx(Gde,{contentName:qm,titleName:rH,docsSlug:"alert-dialog",children:o.jsx(Spe,{scope:n,cancelRef:d,children:o.jsxs(mw,{role:"alertdialog",...r,...s,ref:c,onOpenAutoFocus:je(s.onOpenAutoFocus,m=>{m.preventDefault(),d.current?.focus({preventScroll:!0})}),onPointerDownOutside:m=>m.preventDefault(),onInteractOutside:m=>m.preventDefault(),children:[o.jsx(Tpe,{children:a}),o.jsx(Ppe,{contentRef:i})]})})})});sH.displayName=qm;var rH="AlertDialogTitle",iH=h.forwardRef((e,t)=>{const{__scopeAlertDialog:n,...a}=e,s=ul(n);return o.jsx(pw,{...s,...a,ref:t})});iH.displayName=rH;var lH="AlertDialogDescription",cH=h.forwardRef((e,t)=>{const{__scopeAlertDialog:n,...a}=e,s=ul(n);return o.jsx(Lp,{...s,...a,ref:t})});cH.displayName=lH;var Rpe="AlertDialogAction",dH=h.forwardRef((e,t)=>{const{__scopeAlertDialog:n,...a}=e,s=ul(n);return o.jsx(Qh,{...s,...a,ref:t})});dH.displayName=Rpe;var uH="AlertDialogCancel",mH=h.forwardRef((e,t)=>{const{__scopeAlertDialog:n,...a}=e,{cancelRef:s}=Ape(uH,n),r=ul(n),i=vt(t,s);return o.jsx(Qh,{...r,...a,ref:i})});mH.displayName=uH;var Ppe=({contentRef:e})=>{const t=`\`${qm}\` requires a description for the component to be accessible for screen reader users.
217
218You can add a description to the \`${qm}\` by passing a \`${lH}\` component as a child, which also benefits sighted users by adding visible context to the dialog.
219
220Alternatively, you can use your own component as a description by assigning it an \`id\` and passing the same value to the \`aria-describedby\` prop in \`${qm}\`. If the description is confusing or duplicative for sighted users, you can use the \`@radix-ui/react-visually-hidden\` primitive as a wrapper around your description component.
221
222For more information, see https://radix-ui.com/primitives/docs/components/alert-dialog`;return h.useEffect(()=>{document.getElementById(e.current?.getAttribute("aria-describedby"))||console.warn(t)},[t,e]),null},_pe=nH,jpe=aH,pH=oH,fH=sH,gH=dH,hH=mH,yH=iH,vH=cH;const Cw=_pe,Npe=jpe,bH=h.forwardRef(({className:e,...t},n)=>o.jsx(pH,{ref:n,className:X("fixed inset-0 z-overlay bg-[color:var(--foreground)]/40",e),...t}));bH.displayName=pH.displayName;const ay=h.forwardRef(({className:e,...t},n)=>
vendor: 4,281 bytes, line 222
222o.jsxs(Npe,{children:[o.jsx(bH,{}),o.jsx(fH,{ref:n,className:X("fixed left-1/2 top-1/2 z-overlay max-h-[calc(100dvh-2rem)] w-[calc(100vw-2rem)] max-w-md -translate-x-1/2 -translate-y-1/2 overflow-y-auto rounded-xl border border-[color:var(--border)] bg-[color:var(--background)] p-4 shadow-[0_18px_60px_rgba(13,17,23,0.12)] focus:outline-none sm:p-6",e),...t})]}));ay.displayName=fH.displayName;function Sw({className:e,...t}){return o.jsx("div",{className:X("mb-4 flex flex-col gap-1.5",e),...t})}function Aw({className:e,...t}){return o.jsx("div",{className:X("mt-6 flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",e),...t})}const oy=h.forwardRef(({className:e,...t},n)=>o.jsx(yH,{ref:n,className:X("text-base font-semibold",e),...t}));oy.displayName=yH.displayName;const sy=h.forwardRef(({className:e,...t},n)=>o.jsx(vH,{ref:n,className:X("text-sm text-[color:var(--muted-foreground)]",e),...t}));sy.displayName=vH.displayName;const z_=h.forwardRef(({className:e,...t},n)=>o.jsx(gH,{ref:n,className:X(ur(),e),...t}));z_.displayName=gH.displayName;const ry=h.forwardRef(({className:e,...t},n)=>o.jsx(hH,{ref:n,className:X(ur({variant:"outline"}),"mt-2 sm:mt-0",e),...t}));ry.displayName=hH.displayName;function WO(e,[t,n]){return Math.min(n,Math.max(t,e))}function Dpe(e){const t=Mpe(e),n=h.forwardRef((a,s)=>{const{children:r,...i}=a,c=h.Children.toArray(r),d=c.find(Ipe);if(d){const m=d.props.children,f=c.map(p=>p===d?h.Children.count(m)>1?h.Children.only(null):h.isValidElement(m)?m.props.children:null:p);return o.jsx(t,{...i,ref:s,children:h.isValidElement(m)?h.cloneElement(m,void 0,f):null})}return o.jsx(t,{...i,ref:s,children:r})});return n.displayName=`${e}.Slot`,n}function Mpe(e){const t=h.forwardRef((n,a)=>{const{children:s,...r}=n;if(h.isValidElement(s)){const i=Lpe(s),c=Ope(r,s.props);return s.type!==h.Fragment&&(c.ref=a?di(a,i):i),h.cloneElement(s,c)}return h.Children.count(s)>1?h.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var Epe=Symbol("radix.slottable");function Ipe(e){return h.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===Epe}function Ope(e,t){const n={...t};for(const a in t){const s=e[a],r=t[a];/^on[A-Z]/.test(a)?s&&r?n[a]=(...c)=>{const d=r(...c);return s(...c),d}:s&&(n[a]=s):a==="style"?n[a]={...s,...r}:a==="className"&&(n[a]=[s,r].filter(Boolean).join(" "))}return{...e,...n}}function Lpe(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}function xH(e){const t=h.useRef({value:e,previous:e});return h.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}var Upe=[" ","Enter","ArrowUp","ArrowDown"],Bpe=[" ","Enter"],Zd="Select",[Tw,Rw,Fpe]=vw(Zd),[Hp]=so(Zd,[Fpe,mi]),Pw=mi(),[zpe,Bc]=Hp(Zd),[qpe,Hpe]=Hp(Zd),$H=e=>{const{__scopeSelect:t,children:n,open:a,defaultOpen:s,onOpenChange:r,value:i,defaultValue:c,onValueChange:d,dir:m,name:f,autoComplete:p,disabled:y,required:v,form:$}=e,x=Pw(t),[w,S]=h.useState(null),[k,T]=h.useState(null),[R,_]=h.useState(!1),P=Jh(m),[j,N]=ts({prop:a,defaultProp:s??!1,onChange:r,caller:Zd}),[I,z]=ts({prop:i,defaultProp:c,onChange:d,caller:Zd}),E=h.useRef(null),L=w?$||!!w.closest("form"):!0,[O,V]=h.useState(new Set),ne=Array.from(O).map(q=>q.props.value).join(";");return o.jsx(Hh,{...x,children:o.jsxs(zpe,{required:v,scope:t,trigger:w,onTriggerChange:S,valueNode:k,onValueNodeChange:T,valueNodeHasChildren:R,onValueNodeHasChildrenChange:_,contentId:To(),value:I,onValueChange:z,open:j,onOpenChange:N,dir:P,triggerPointerDownPosRef:E,disabled:y,children:[o.jsx(Tw.Provider,{scope:t,children:o.jsx(qpe,{scope:e.__scopeSelect,onNativeOptionAdd:h.useCallback(q=>{V(M=>new Set(M).add(q))},[]),onNativeOptionRemove:h.useCallback(q=>{V(M=>{const F=new Set(M);return F.delete(q),F})},[]),children:n})}),L?o.jsxs(VH,{"aria-hidden":!0,required:v,tabIndex:-1,name:f,autoComplete:p,value:I,onChange:q=>z(q.target.value),disabled:y,form:$,children:[I===void 0?o.jsx("option",{value:""}):null,Array.from(O)]},ne):null]})})};$H.displayName=Zd;var wH="SelectTrigger",kH=h.forwardRef((e,t)=>
vendor: 14,757 bytes, line 222
222{const{__scopeSelect:n,disabled:a=!1,...s}=e,r=Pw(n),i=Bc(wH,n),c=i.disabled||a,d=vt(t,i.onTriggerChange),m=Rw(n),f=h.useRef("touch"),[p,y,v]=GH(x=>{const w=m().filter(T=>!T.disabled),S=w.find(T=>T.value===i.value),k=WH(w,x,S);k!==void 0&&i.onValueChange(k.value)}),$=x=>{c||(i.onOpenChange(!0),v()),x&&(i.triggerPointerDownPosRef.current={x:Math.round(x.pageX),y:Math.round(x.pageY)})};return o.jsx(Op,{asChild:!0,...r,children:o.jsx(st.button,{type:"button",role:"combobox","aria-controls":i.contentId,"aria-expanded":i.open,"aria-required":i.required,"aria-autocomplete":"none",dir:i.dir,"data-state":i.open?"open":"closed",disabled:c,"data-disabled":c?"":void 0,"data-placeholder":KH(i.value)?"":void 0,...s,ref:d,onClick:je(s.onClick,x=>{x.currentTarget.focus(),f.current!=="mouse"&&$(x)}),onPointerDown:je(s.onPointerDown,x=>{f.current=x.pointerType;const w=x.target;w.hasPointerCapture(x.pointerId)&&w.releasePointerCapture(x.pointerId),x.button===0&&x.ctrlKey===!1&&x.pointerType==="mouse"&&($(x),x.preventDefault())}),onKeyDown:je(s.onKeyDown,x=>{const w=p.current!=="";!(x.ctrlKey||x.altKey||x.metaKey)&&x.key.length===1&&y(x.key),!(w&&x.key===" ")&&Upe.includes(x.key)&&($(),x.preventDefault())})})})});kH.displayName=wH;var CH="SelectValue",SH=h.forwardRef((e,t)=>{const{__scopeSelect:n,className:a,style:s,children:r,placeholder:i="",...c}=e,d=Bc(CH,n),{onValueNodeHasChildrenChange:m}=d,f=r!==void 0,p=vt(t,d.onValueNodeChange);return Ra(()=>{m(f)},[m,f]),o.jsx(st.span,{...c,ref:p,style:{pointerEvents:"none"},children:KH(d.value)?o.jsx(o.Fragment,{children:i}):r})});SH.displayName=CH;var Vpe="SelectIcon",AH=h.forwardRef((e,t)=>{const{__scopeSelect:n,children:a,...s}=e;return o.jsx(st.span,{"aria-hidden":!0,...s,ref:t,children:a||"▼"})});AH.displayName=Vpe;var Kpe="SelectPortal",TH=e=>o.jsx(pu,{asChild:!0,...e});TH.displayName=Kpe;var Jd="SelectContent",RH=h.forwardRef((e,t)=>{const n=Bc(Jd,e.__scopeSelect),[a,s]=h.useState();if(Ra(()=>{s(new DocumentFragment)},[]),!n.open){const r=a;return r?li.createPortal(o.jsx(PH,{scope:e.__scopeSelect,children:o.jsx(Tw.Slot,{scope:e.__scopeSelect,children:o.jsx("div",{children:e.children})})}),r):null}return o.jsx(_H,{...e,ref:t})});RH.displayName=Jd;var Zs=10,[PH,Fc]=Hp(Jd),Gpe="SelectContentImpl",Wpe=Dpe("SelectContent.RemoveScroll"),_H=h.forwardRef((e,t)=>{const{__scopeSelect:n,position:a="item-aligned",onCloseAutoFocus:s,onEscapeKeyDown:r,onPointerDownOutside:i,side:c,sideOffset:d,align:m,alignOffset:f,arrowPadding:p,collisionBoundary:y,collisionPadding:v,sticky:$,hideWhenDetached:x,avoidCollisions:w,...S}=e,k=Bc(Jd,n),[T,R]=h.useState(null),[_,P]=h.useState(null),j=vt(t,se=>R(se)),[N,I]=h.useState(null),[z,E]=h.useState(null),L=Rw(n),[O,V]=h.useState(!1),ne=h.useRef(!1);h.useEffect(()=>{if(T)return cw(T)},[T]),iw();const q=h.useCallback(se=>{const[we,...me]=L().map(ae=>ae.ref.current),[ye]=me.slice(-1),_e=document.activeElement;for(const ae of se)if(ae===_e||(ae?.scrollIntoView({block:"nearest"}),ae===we&&_&&(_.scrollTop=0),ae===ye&&_&&(_.scrollTop=_.scrollHeight),ae?.focus(),document.activeElement!==_e))return},[L,_]),M=h.useCallback(()=>q([N,T]),[q,N,T]);h.useEffect(()=>{O&&M()},[O,M]);const{onOpenChange:F,triggerPointerDownPosRef:H}=k;h.useEffect(()=>{if(T){let se={x:0,y:0};const we=ye=>{se={x:Math.abs(Math.round(ye.pageX)-(H.current?.x??0)),y:Math.abs(Math.round(ye.pageY)-(H.current?.y??0))}},me=ye=>{se.x<=10&&se.y<=10?ye.preventDefault():T.contains(ye.target)||F(!1),document.removeEventListener("pointermove",we),H.current=null};return H.current!==null&&(document.addEventListener("pointermove",we),document.addEventListener("pointerup",me,{capture:!0,once:!0})),()=>{document.removeEventListener("pointermove",we),document.removeEventListener("pointerup",me,{capture:!0})}}},[T,F,H]),h.useEffect(()=>{const se=()=>F(!1);return window.addEventListener("blur",se),window.addEventListener("resize",se),()=>{window.removeEventListener("blur",se),window.removeEventListener("resize",se)}},[F]);const[ee,B]=GH(se=>{const we=L().filter(_e=>!_e.disabled),me=we.find(_e=>_e.ref.current===document.activeElement),ye=WH(we,se,me);ye&&setTimeout(()=>ye.ref.current.focus())}),G=h.useCallback((se,we,me)=>{const ye=!ne.current&&!me;(k.value!==void 0&&k.value===we||ye)&&(I(se),ye&&(ne.current=!0))},[k.value]),Q=h.useCallback(()=>T?.focus(),[T]),de=h.useCallback((se,we,me)=>{const ye=!ne.current&&!me;(k.value!==void 0&&k.value===we||ye)&&E(se)},[k.value]),Y=a==="popper"?eR:jH,pe=Y===eR?{side:c,sideOffset:d,align:m,alignOffset:f,arrowPadding:p,collisionBoundary:y,collisionPadding:v,sticky:$,hideWhenDetached:x,avoidCollisions:w}:{};return o.jsx(PH,{scope:n,content:T,viewport:_,onViewportChange:P,itemRefCallback:G,selectedItem:N,onItemLeave:Q,itemTextRefCallback:de,focusSelectedItem:M,selectedItemText:z,position:a,isPositioned:O,searchRef:ee,children:o.jsx(Yh,{as:Wpe,allowPinchZoom:!0,children:o.jsx(Wh,{asChild:!0,trapped:k.open,onMountAutoFocus:se=>{se.preventDefault()},onUnmountAutoFocus:je(s,se=>{k.trigger?.focus({preventScroll:!0}),se.preventDefault()}),children:o.jsx(mu,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:r,onPointerDownOutside:i,onFocusOutside:se=>se.preventDefault(),onDismiss:()=>k.onOpenChange(!1),children:o.jsx(Y,{role:"listbox",id:k.contentId,"data-state":k.open?"open":"closed",dir:k.dir,onContextMenu:se=>se.preventDefault(),...S,...pe,onPlaced:()=>V(!0),ref:j,style:{display:"flex",flexDirection:"column",outline:"none",...S.style},onKeyDown:je(S.onKeyDown,se=>{const we=se.ctrlKey||se.altKey||se.metaKey;if(se.key==="Tab"&&se.preventDefault(),!we&&se.key.length===1&&B(se.key),["ArrowUp","ArrowDown","Home","End"].includes(se.key)){let ye=L().filter(_e=>!_e.disabled).map(_e=>_e.ref.current);if(["ArrowUp","End"].includes(se.key)&&(ye=ye.slice().reverse()),["ArrowUp","ArrowDown"].includes(se.key)){const _e=se.target,ae=ye.indexOf(_e);ye=ye.slice(ae+1)}setTimeout(()=>q(ye)),se.preventDefault()}})})})})})})});_H.displayName=Gpe;var Ype="SelectItemAlignedPosition",jH=h.forwardRef((e,t)=>{const{__scopeSelect:n,onPlaced:a,...s}=e,r=Bc(Jd,n),i=Fc(Jd,n),[c,d]=h.useState(null),[m,f]=h.useState(null),p=vt(t,j=>f(j)),y=Rw(n),v=h.useRef(!1),$=h.useRef(!0),{viewport:x,selectedItem:w,selectedItemText:S,focusSelectedItem:k}=i,T=h.useCallback(()=>{if(r.trigger&&r.valueNode&&c&&m&&x&&w&&S){const j=r.trigger.getBoundingClientRect(),N=m.getBoundingClientRect(),I=r.valueNode.getBoundingClientRect(),z=S.getBoundingClientRect();if(r.dir!=="rtl"){const _e=z.left-N.left,ae=I.left-_e,Je=j.left-ae,Ae=j.width+Je,tt=Math.max(Ae,N.width),Tt=window.innerWidth-Zs,an=WO(ae,[Zs,Math.max(Zs,Tt-tt)]);c.style.minWidth=Ae+"px",c.style.left=an+"px"}else{const _e=N.right-z.right,ae=window.innerWidth-I.right-_e,Je=window.innerWidth-j.right-ae,Ae=j.width+Je,tt=Math.max(Ae,N.width),Tt=window.innerWidth-Zs,an=WO(ae,[Zs,Math.max(Zs,Tt-tt)]);c.style.minWidth=Ae+"px",c.style.right=an+"px"}const E=y(),L=window.innerHeight-Zs*2,O=x.scrollHeight,V=window.getComputedStyle(m),ne=parseInt(V.borderTopWidth,10),q=parseInt(V.paddingTop,10),M=parseInt(V.borderBottomWidth,10),F=parseInt(V.paddingBottom,10),H=ne+q+O+F+M,ee=Math.min(w.offsetHeight*5,H),B=window.getComputedStyle(x),G=parseInt(B.paddingTop,10),Q=parseInt(B.paddingBottom,10),de=j.top+j.height/2-Zs,Y=L-de,pe=w.offsetHeight/2,se=w.offsetTop+pe,we=ne+q+se,me=H-we;if(we<=de){const _e=E.length>0&&w===E[E.length-1].ref.current;c.style.bottom="0px";const ae=m.clientHeight-x.offsetTop-x.offsetHeight,Je=Math.max(Y,pe+(_e?Q:0)+ae+M),Ae=we+Je;c.style.height=Ae+"px"}else{const _e=E.length>0&&w===E[0].ref.current;c.style.top="0px";const Je=Math.max(de,ne+x.offsetTop+(_e?G:0)+pe)+me;c.style.height=Je+"px",x.scrollTop=we-de+x.offsetTop}c.style.margin=`${Zs}px 0`,c.style.minHeight=ee+"px",c.style.maxHeight=L+"px",a?.(),requestAnimationFrame(()=>v.current=!0)}},[y,r.trigger,r.valueNode,c,m,x,w,S,r.dir,a]);Ra(()=>T(),[T]);const[R,_]=h.useState();Ra(()=>{m&&_(window.getComputedStyle(m).zIndex)},[m]);const P=h.useCallback(j=>{j&&$.current===!0&&(T(),k?.(),$.current=!1)},[T,k]);return o.jsx(Xpe,{scope:n,contentWrapper:c,shouldExpandOnScrollRef:v,onScrollButtonChange:P,children:o.jsx("div",{ref:d,style:{display:"flex",flexDirection:"column",position:"fixed",zIndex:R},children:o.jsx(st.div,{...s,ref:p,style:{boxSizing:"border-box",maxHeight:"100%",...s.style}})})})});jH.displayName=Ype;var Qpe="SelectPopperPosition",eR=h.forwardRef((e,t)=>{const{__scopeSelect:n,align:a="start",collisionPadding:s=Zs,...r}=e,i=Pw(n);return o.jsx(Vh,{...i,...r,ref:t,align:a,collisionPadding:s,style:{boxSizing:"border-box",...r.style,"--radix-select-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-select-content-available-width":"var(--radix-popper-available-width)","--radix-select-content-available-height":"var(--radix-popper-available-height)","--radix-select-trigger-width":"var(--radix-popper-anchor-width)","--radix-select-trigger-height":"var(--radix-popper-anchor-height)"}})});eR.displayName=Qpe;var[Xpe,q_]=Hp(Jd,{}),tR="SelectViewport",NH=h.forwardRef((e,t)=>{const{__scopeSelect:n,nonce:a,...s}=e,r=Fc(tR,n),i=q_(tR,n),c=vt(t,r.onViewportChange),d=h.useRef(0);return o.jsxs(o.Fragment,{children:[o.jsx("style",{dangerouslySetInnerHTML:{__html:"[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}"},nonce:a}),o.jsx(Tw.Slot,{scope:n,children:o.jsx(st.div,{"data-radix-select-viewport":"",role:"presentation",...s,ref:c,style:{position:"relative",flex:1,overflow:"hidden auto",...s.style},onScroll:je(s.onScroll,m=>{const f=m.currentTarget,{contentWrapper:p,shouldExpandOnScrollRef:y}=i;if(y?.current&&p){const v=Math.abs(d.current-f.scrollTop);if(v>0){const $=window.innerHeight-Zs*2,x=parseFloat(p.style.minHeight),w=parseFloat(p.style.height),S=Math.max(x,w);if(S<$){const k=S+v,T=Math.min($,k),R=k-T;p.style.height=T+"px",p.style.bottom==="0px"&&(f.scrollTop=R>0?R:0,p.style.justifyContent="flex-end")}}}d.current=f.scrollTop})})})]})});NH.displayName=tR;var DH="SelectGroup",[Zpe,Jpe]=Hp(DH),efe=h.forwardRef((e,t)=>{const{__scopeSelect:n,...a}=e,s=To();return o.jsx(Zpe,{scope:n,id:s,children:o.jsx(st.div,{role:"group","aria-labelledby":s,...a,ref:t})})});efe.displayName=DH;var MH="SelectLabel",EH=h.forwardRef((e,t)=>{const{__scopeSelect:n,...a}=e,s=Jpe(MH,n);return o.jsx(st.div,{id:s.id,...a,ref:t})});EH.displayName=MH;var Ix="SelectItem",[tfe,IH]=Hp(Ix),OH=h.forwardRef((e,t)=>{const{__scopeSelect:n,value:a,disabled:s=!1,textValue:r,...i}=e,c=Bc(Ix,n),d=Fc(Ix,n),m=c.value===a,[f,p]=h.useState(r??""),[y,v]=h.useState(!1),$=vt(t,k=>d.itemRefCallback?.(k,a,s)),x=To(),w=h.useRef("touch"),S=()=>{s||(c.onValueChange(a),c.onOpenChange(!1))};if(a==="")throw new Error("A <Select.Item /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.");return o.jsx(tfe,{scope:n,value:a,disabled:s,textId:x,isSelected:m,onItemTextChange:h.useCallback(k=>{p(T=>T||(k?.textContent??"").trim())},[]),children:o.jsx(Tw.ItemSlot,{scope:n,value:a,disabled:s,textValue:f,children:o.jsx(st.div,{role:"option","aria-labelledby":x,"data-highlighted":y?"":void 0,"aria-selected":m&&y,"data-state":m?"checked":"unchecked","aria-disabled":s||void 0,"data-disabled":s?"":void 0,tabIndex:s?void 0:-1,...i,ref:$,onFocus:je(i.onFocus,()=>v(!0)),onBlur:je(i.onBlur,()=>v(!1)),onClick:je(i.onClick,()=>{w.current!=="mouse"&&S()}),onPointerUp:je(i.onPointerUp,()=>{w.current==="mouse"&&S()}),onPointerDown:je(i.onPointerDown,k=>{w.current=k.pointerType}),onPointerMove:je(i.onPointerMove,k=>{w.current=k.pointerType,s?d.onItemLeave?.():w.current==="mouse"&&k.currentTarget.focus({preventScroll:!0})}),onPointerLeave:je(i.onPointerLeave,k=>{k.currentTarget===document.activeElement&&d.onItemLeave?.()}),onKeyDown:je(i.onKeyDown,k=>{d.searchRef?.current!==""&&k.key===" "||(Bpe.includes(k.key)&&S(),k.key===" "&&k.preventDefault())})})})})});OH.displayName=Ix;var Sg="SelectItemText",LH=h.forwardRef((e,t)=>{const{__scopeSelect:n,className:a,style:s,...r}=e,i=Bc(Sg,n),c=Fc(Sg,n),d=IH(Sg,n),m=Hpe(Sg,n),[f,p]=h.useState(null),y=vt(t,S=>p(S),d.onItemTextChange,S=>c.itemTextRefCallback?.(S,d.value,d.disabled)),v=f?.textContent,$=h.useMemo(()=>o.jsx("option",{value:d.value,disabled:d.disabled,children:v},d.value),[d.disabled,d.value,v]),{onNativeOptionAdd:x,onNativeOptionRemove:w}=m;return Ra(()=>(x($),()=>w($)),[x,w,$]),o.jsxs(o.Fragment,{children:[o.jsx(st.span,{id:d.textId,...r,ref:y}),d.isSelected&&i.valueNode&&!i.valueNodeHasChildren?li.createPortal(r.children,i.valueNode):null]})});LH.displayName=Sg;var UH="SelectItemIndicator",BH=h.forwardRef((e,t)=>{const{__scopeSelect:n,...a}=e;return IH(UH,n).isSelected?o.jsx(st.span,{"aria-hidden":!0,...a,ref:t}):null});BH.displayName=UH;var nR="SelectScrollUpButton",FH=h.forwardRef((e,t)=>{const n=Fc(nR,e.__scopeSelect),a=q_(nR,e.__scopeSelect),[s,r]=h.useState(!1),i=vt(t,a.onScrollButtonChange);return Ra(()=>{if(n.viewport&&n.isPositioned){let c=function(){const m=d.scrollTop>0;r(m)};const d=n.viewport;return c(),d.addEventListener("scroll",c),()=>d.removeEventListener("scroll",c)}},[n.viewport,n.isPositioned]),s?o.jsx(qH,{...e,ref:i,onAutoScroll:()=>{const{viewport:c,selectedItem:d}=n;c&&d&&(c.scrollTop=c.scrollTop-d.offsetHeight)}}):null});FH.displayName=nR;var aR="SelectScrollDownButton",zH=h.forwardRef((e,t)=>{const n=Fc(aR,e.__scopeSelect),a=q_(aR,e.__scopeSelect),[s,r]=h.useState(!1),i=vt(t,a.onScrollButtonChange);return Ra(()=>{if(n.viewport&&n.isPositioned){let c=function(){const m=d.scrollHeight-d.clientHeight,f=Math.ceil(d.scrollTop)<m;r(f)};const d=n.viewport;return c(),d.addEventListener("scroll",c),()=>d.removeEventListener("scroll",c)}},[n.viewport,n.isPositioned]),s?o.jsx(qH,{...e,ref:i,onAutoScroll:()=>{const{viewport:c,selectedItem:d}=n;c&&d&&(c.scrollTop=c.scrollTop+d.offsetHeight)}}):null});zH.displayName=aR;var qH=h.forwardRef((e,t)=>{const{__scopeSelect:n,onAutoScroll:a,...s}=e,r=Fc("SelectScrollButton",n),i=h.useRef(null),c=Rw(n),d=h.useCallback(()=>{i.current!==null&&(window.clearInterval(i.current),i.current=null)},[]);return h.useEffect(()=>()=>d(),[d]),Ra(()=>{c().find(f=>f.ref.current===document.activeElement)?.ref.current?.scrollIntoView({block:"nearest"})},[c]),o.jsx(st.div,{"aria-hidden":!0,...s,ref:t,style:{flexShrink:0,...s.style},onPointerDown:je(s.onPointerDown,()=>{i.current===null&&(i.current=window.setInterval(a,50))}),onPointerMove:je(s.onPointerMove,()=>{r.onItemLeave?.(),i.current===null&&(i.current=window.setInterval(a,50))}),onPointerLeave:je(s.onPointerLeave,()=>{d()})})}),nfe="SelectSeparator",HH=h.forwardRef((e,t)=>
vendor: 4,108 bytes, line 222
222{const{__scopeSelect:n,...a}=e;return o.jsx(st.div,{"aria-hidden":!0,...a,ref:t})});HH.displayName=nfe;var oR="SelectArrow",afe=h.forwardRef((e,t)=>{const{__scopeSelect:n,...a}=e,s=Pw(n),r=Bc(oR,n),i=Fc(oR,n);return r.open&&i.position==="popper"?o.jsx(Kh,{...s,...a,ref:t}):null});afe.displayName=oR;var ofe="SelectBubbleInput",VH=h.forwardRef(({__scopeSelect:e,value:t,...n},a)=>{const s=h.useRef(null),r=vt(a,s),i=xH(t);return h.useEffect(()=>{const c=s.current;if(!c)return;const d=window.HTMLSelectElement.prototype,f=Object.getOwnPropertyDescriptor(d,"value").set;if(i!==t&&f){const p=new Event("change",{bubbles:!0});f.call(c,t),c.dispatchEvent(p)}},[i,t]),o.jsx(st.select,{...n,style:{...hz,...n.style},ref:r,defaultValue:t})});VH.displayName=ofe;function KH(e){return e===""||e===void 0}function GH(e){const t=oi(e),n=h.useRef(""),a=h.useRef(0),s=h.useCallback(i=>{const c=n.current+i;t(c),(function d(m){n.current=m,window.clearTimeout(a.current),m!==""&&(a.current=window.setTimeout(()=>d(""),1e3))})(c)},[t]),r=h.useCallback(()=>{n.current="",window.clearTimeout(a.current)},[]);return h.useEffect(()=>()=>window.clearTimeout(a.current),[]),[n,s,r]}function WH(e,t,n){const s=t.length>1&&Array.from(t).every(m=>m===t[0])?t[0]:t,r=n?e.indexOf(n):-1;let i=sfe(e,Math.max(r,0));s.length===1&&(i=i.filter(m=>m!==n));const d=i.find(m=>m.textValue.toLowerCase().startsWith(s.toLowerCase()));return d!==n?d:void 0}function sfe(e,t){return e.map((n,a)=>e[(t+a)%e.length])}var rfe=$H,YH=kH,ife=SH,lfe=AH,cfe=TH,QH=RH,dfe=NH,XH=EH,ZH=OH,YO=LH,ufe=BH,JH=FH,eV=zH,tV=HH;const Ms=rfe,Es=ife,as=h.forwardRef(({className:e,children:t,...n},a)=>o.jsxs(YH,{ref:a,className:X("flex h-10 w-full min-w-0 items-center justify-between gap-2 rounded-md border border-[color:var(--input)] bg-[color:var(--background)] px-3 text-sm text-[color:var(--foreground)] outline-none transition-colors placeholder:text-[color:var(--muted-foreground)] hover:bg-[color:var(--muted)]/30 focus-visible:border-[color:var(--ring)] disabled:cursor-not-allowed disabled:opacity-50 [&>span]:min-w-0 [&>span]:max-w-full [&>span]:line-clamp-1 [&>span]:text-left",e),...n,children:[t,o.jsx(lfe,{asChild:!0,children:o.jsx(Ic,{className:"size-4 shrink-0 opacity-60"})})]}));as.displayName=YH.displayName;const nV=h.forwardRef(({className:e,...t},n)=>o.jsx(JH,{ref:n,className:X("flex cursor-default items-center justify-center py-1",e),...t,children:o.jsx(bse,{className:"size-4"})}));nV.displayName=JH.displayName;const aV=h.forwardRef(({className:e,...t},n)=>o.jsx(eV,{ref:n,className:X("flex cursor-default items-center justify-center py-1",e),...t,children:o.jsx(Ic,{className:"size-4"})}));aV.displayName=eV.displayName;const os=h.forwardRef(({className:e,children:t,position:n="popper",...a},s)=>o.jsx(cfe,{children:o.jsxs(QH,{ref:s,className:X("relative z-tooltip max-h-96 min-w-[8rem] max-w-[calc(100vw-1rem)] overflow-hidden rounded-md border border-[color:var(--border)] bg-[color:var(--popover)] text-[color:var(--popover-foreground)] shadow-[0_18px_60px_rgba(13,17,23,0.14)]",n==="popper"&&"min-w-[var(--radix-select-trigger-width)] data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",e),position:n,...a,children:[o.jsx(nV,{}),o.jsx(dfe,{className:X("min-w-0 p-1",n==="popper"&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"),children:t}),o.jsx(aV,{})]})}));os.displayName=QH.displayName;const mfe=h.forwardRef(({className:e,...t},n)=>o.jsx(XH,{ref:n,className:X("px-2 py-1.5 text-xs font-semibold text-[color:var(--muted-foreground)]",e),...t}));mfe.displayName=XH.displayName;const zn=h.forwardRef(({className:e,children:t,description:n,textClassName:a,descriptionClassName:s,...r},i)=>o.jsxs(ZH,{ref:i,className:X("relative flex min-h-11 w-full min-w-0 cursor-default select-none items-start rounded-sm py-1.5 pl-8 pr-2 text-sm [word-break:break-all] outline-none focus:bg-[color:var(--accent)] focus:text-[color:var(--accent-foreground)] data-[disabled]:pointer-events-none data-[disabled]:opacity-50 md:min-
222h-9 [&_[data-radix-select-item-text]]:min-w-0 [&_[data-radix-select-item-text]]:whitespace-normal [&_[data-radix-select-item-text]]:[word-break:break-all]",e),...r,children:[o.jsx("span",{className:"absolute left-2 top-2 flex size-3.5 items-center justify-center",children:o.jsx(ufe,{children:o.jsx(Ec,{className:"size-4"})})}),n?o.jsxs("span",{className:"flex min-w-0 flex-col gap-0.5",children:[o.jsx(YO,{asChild:!0,children:o.jsx("span",{className:X("block min-w-0 whitespace-normal [word-break:break-all]",a),children:t})}),o.jsx("span",{className:X("min-w-0 break-words text-2xs text-[color:var(--muted-foreground)]",s),children:n})]}):o.jsx(YO,{asChild:!0,children:o.jsx("span",{className:X("block min-w-0 whitespace-normal [word-break:break-all]",a),children:t})})]}));zn.displayName=ZH.displayName;const pfe=h.forwardRef(({className:e,...t},n)=>o.jsx(tV,{ref:n,className:X("-mx-1 my-1 h-px bg-[color:var(--border)]",e),...t}));pfe.displayName=tV.displayName;var ffe=e=>{switch(e){case"success":return yfe;case"info":return bfe;case"warning":return vfe;case"error":return xfe;default:return null}},gfe=Array(12).fill(0),hfe=({visible:e,className:t})=>Se.createElement("div",{className:["sonner-loading-wrapper",t].filter(Boolean).join(" "),"data-visible":e},Se.createElement("div",{className:"sonner-spinner"},gfe.map((n,a)=>Se.createElement("div",{className:"sonner-loading-bar",key:`spinner-bar-${a}`})))),yfe=Se.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},Se.createElement("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z",clipRule:"evenodd"})),vfe=Se.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",height:"20",width:"20"},Se.createElement("path",{fillRule:"evenodd",d:"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z",clipRule:"evenodd"})),bfe=Se.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},Se.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z",clipRule:"evenodd"})),xfe=Se.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},Se.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z",clipRule:"evenodd"})),$fe=Se.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"},Se.createElement("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),Se.createElement("line",{x1:"6",y1:"6",x2:"18",y2:"18"})),wfe=()=>{let[e,t]=Se.useState(document.hidden);return Se.useEffect(()=>{let n=()=>{t(document.hidden)};return document.addEventListener("visibilitychange",n),()=>window.removeEventListener("visibilitychange",n)},[]),e},sR=1,kfe=class{constructor(){this.subscribe=e=>(this.subscribers.push(e),()=>{let t=this.subscribers.indexOf(e);this.subscribers.splice(t,1)}),this.publish=e=>{this.subscribers.forEach(t=>t(e))},this.addToast=e=>{this.publish(e),this.toasts=[...this.toasts,e]},this.create=e=>{var t;let{message:n,...a}=e,s=typeof e?.id=="number"||((t=e.id)==null?void 0:t.length)>0?e.id:sR++,r=this.toasts.find(c=>c.id===s),i=e.dismissible===void 0?!0:e.dismissible;return this.dismissedToasts.has(s)&&this.dismissedToasts.delete(s),r?this.toasts=this.toasts.map(c=>c.id===s?(this.publish({...c,...e,id:s,title:n}),{...c,...e,id:s,dismissible:i,title:n}):c):this.addToast({title:n,...a,dismissible:i,id:s}),s},this.dismiss=e=>
222(this.dismissedToasts.add(e),e||this.toasts.forEach(t=>{this.subscribers.forEach(n=>n({id:t.id,dismiss:!0}))}),this.subscribers.forEach(t=>t({id:e,dismiss:!0})),e),this.message=(e,t)=>this.create({...t,message:e}),this.error=(e,t)=>this.create({...t,message:e,type:"error"}),this.success=(e,t)=>this.create({...t,type:"success",message:e}),this.info=(e,t)=>this.create({...t,type:"info",message:e}),this.warning=(e,t)=>this.create({...t,type:"warning",message:e}),this.loading=(e,t)=>this.create({...t,type:"loading",message:e}),this.promise=(e,t)=>{if(!t)return;let n;t.loading!==void 0&&(n=this.create({...t,promise:e,type:"loading",message:t.loading,description:typeof t.description!="function"?t.description:void 0}));let a=e instanceof Promise?e:e(),s=n!==void 0,r,i=a.then(async d=>{if(r=["resolve",d],Se.isValidElement(d))s=!1,this.create({id:n,type:"default",message:d});else if(Sfe(d)&&!d.ok){s=!1;let m=typeof t.error=="function"?await t.error(`HTTP error! status: ${d.status}`):t.error,f=typeof t.description=="function"?await t.description(`HTTP error! status: ${d.status}`):t.description;this.create({id:n,type:"error",message:m,description:f})}else if(t.success!==void 0){s=!1;let m=typeof t.success=="function"?await t.success(d):t.success,f=typeof t.description=="function"?await t.description(d):t.description;this.create({id:n,type:"success",message:m,description:f})}}).catch(async d=>{if(r=["reject",d],t.error!==void 0){s=!1;let m=typeof t.error=="function"?await t.error(d):t.error,f=typeof t.description=="function"?await t.description(d):t.description;this.create({id:n,type:"error",message:m,description:f})}}).finally(()=>{var d;s&&(this.dismiss(n),n=void 0),(d=t.finally)==null||d.call(t)}),c=()=>new Promise((d,m)=>i.then(()=>r[0]==="reject"?m(r[1]):d(r[1])).catch(m));return typeof n!="string"&&typeof n!="number"?{unwrap:c}:Object.assign(n,{unwrap:c})},this.custom=(e,t)=>{let n=t?.id||sR++;return this.create({jsx:e(n),id:n,...t}),n},this.getActiveToasts=()=>this.toasts.filter(e=>!this.dismissedToasts.has(e.id)),this.subscribers=[],this.toasts=[],this.dismissedToasts=new Set}},$o=new kfe,Cfe=(e,t)=>{let n=t?.id||sR++;return $o.addToast({title:e,...t,id:n}),n},Sfe=e=>e&&typeof e=="object"&&"ok"in e&&typeof e.ok=="boolean"&&"status"in e&&typeof e.status=="number",Afe=Cfe,Tfe=()=>$o.toasts,Rfe=()=>$o.getActiveToasts(),ie=Object.assign(Afe,{success:$o.success,info:$o.info,warning:$o.warning,error:$o.error,custom:$o.custom,message:$o.message,promise:$o.promise,dismiss:$o.dismiss,loading:$o.loading},{getHistory:Tfe,getToasts:Rfe});function Pfe(e,{insertAt:t}={}){if(typeof document>"u")return;let n=document.head||document.getElementsByTagName("head")[0],a=document.createElement("style");a.type="text/css",t==="top"&&n.firstChild?n.insertBefore(a,n.firstChild):n.appendChild(a),a.styleSheet?a.styleSheet.cssText=e:a.appendChild(document.createTextNode(e))}Pfe(`:where(html[dir="ltr"]),:where([data-sonner-toaster][dir="ltr"]){--toast-icon-margin-start: -3px;--toast-icon-margin-end: 4px;--toast-svg-margin-start: -1px;--toast-svg-margin-end: 0px;--toast-button-margin-start: auto;--toast-button-margin-end: 0;--toast-close-button-start: 0;--toast-close-button-end: unset;--toast-close-button-transform: translate(-35%, -35%)}:where(html[dir="rtl"]),:where([data-sonner-toaster][dir="rtl"]){--toast-icon-margin-start: 4px;--toast-icon-margin-end: -3px;--toast-svg-margin-start: 0px;--toast-svg-margin-end: -1px;--toast-button-margin-start: 0;--toast-button-margin-end: auto;--toast-close-button-start: unset;--toast-close-button-end: 0;--toast-close-button-transform: translate(35%, -35%)}:where([data-sonner-toaster]){position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1: hsl(0, 0%, 99%);--gray2: hsl(0, 0%, 97.3%);--gray3: hsl(0, 0%, 95.1%);--gray4: hsl(0, 0%, 93%);--gray5: hsl(0, 0%, 90.9%);--gray6: hsl(0, 0%, 88.7%);--gray7: hsl(0, 0%, 85.8%);--gray8: hsl(0, 0%, 78%);--gray9: hsl(0, 0%, 56.1%);--gray10: hsl(0, 0%, 52.3%);--gray11: hsl(0, 0%, 43.5%);--gray12: hsl(0, 0%, 9%);--border-radius: 8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:none;z-index:999999999;transition:transform .4s ease}:where([data-sonner-toaster][data-lifted="true"]){transform:translateY(-10px)}@media (hover: none) and (pointer: coarse){:where([data-sonner-toaster][data-lifted="true"]){transform:none}}:where([data-sonner-toaster][data-x-position="right"]){right:var(--offset-right)}:where([data-sonner-toaster][data-x-position="left"]){left:var(--offset-left)}:where([data-sonner-toaster][data-x-position="center"]){left:50%;transform:translate(-50%)}:where([data-sonner-toaster][data-y-position="top"]){top:var(--offset-top)}:where([data-sonner-toaster][data-y-position="bottom"]){bottom:var(--offset-bottom)}:where([data-sonner-toast]){--y: translateY(100%);--lift-amount: calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);filter:blur(0);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:none;overflow-wrap:anywhere}:where([data-sonner-toast][data-styled="true"]){padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px #0000001a;width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}:where([data-sonner-toast]:focus-visible){box-shadow:0 4px 12px #0000001a,0 0 0 2px #0003}:where([data-sonner-toast][data-y-position="top"]){top:0;--y: translateY(-100%);--lift: 1;--lift-amount: calc(1 * var(--gap))}:where([data-sonner-toast][data-y-position="bottom"]){bottom:0;--y: translateY(100%);--lift: -1;--lift-amount: calc(var(--lift) * var(--gap))}:where([data-sonner-toast]) :where([data-description]){font-weight:400;line-height:1.4;color:inherit}:where([data-sonner-toast]) :where([data-title]){font-weight:500;line-height:1.5;color:inherit}:where([data-sonner-toast]) :where([data-icon]){display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}:where([data-sonner-toast][data-promise="true"]) :where([data-icon])>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}:where([data-sonner-toast]) :where([data-icon])>*{flex-shrink:0}:where([data-sonner-toast]) :where([data-icon]) svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}:where([data-sonner-toast]) :where([data-content]){display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;cursor:pointer;outline:none;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}:where([data-sonner-toast]) :where([data-button]):focus-visible{box-shadow:0 0 0 2px #0006}:where([data-sonner-toast]) :where([data-button]):first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}:where([data-sonner-toast]) :where([data-cancel]){color:var(--normal-text);background:rgba(0,0,0,.08)}:where([data-sonner-toast][data-theme="dark"]) :where([data-cancel]){background:rgba(255,255,255,.3)}:where([data-sonner-toast]) :where([data-close-button]){position:absolute;
222left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast] [data-close-button]{background:var(--gray1)}:where([data-sonner-toast]) :where([data-close-button]):focus-visible{box-shadow:0 4px 12px #0000001a,0 0 0 2px #0003}:where([data-sonner-toast]) :where([data-disabled="true"]){cursor:not-allowed}:where([data-sonner-toast]):hover :where([data-close-button]):hover{background:var(--gray2);border-color:var(--gray5)}:where([data-sonner-toast][data-swiping="true"]):before{content:"";position:absolute;left:-50%;right:-50%;height:100%;z-index:-1}:where([data-sonner-toast][data-y-position="top"][data-swiping="true"]):before{bottom:50%;transform:scaleY(3) translateY(50%)}:where([data-sonner-toast][data-y-position="bottom"][data-swiping="true"]):before{top:50%;transform:scaleY(3) translateY(-50%)}:where([data-sonner-toast][data-swiping="false"][data-removed="true"]):before{content:"";position:absolute;inset:0;transform:scaleY(2)}:where([data-sonner-toast]):after{content:"";position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}:where([data-sonner-toast][data-mounted="true"]){--y: translateY(0);opacity:1}:where([data-sonner-toast][data-expanded="false"][data-front="false"]){--scale: var(--toasts-before) * .05 + 1;--y: translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}:where([data-sonner-toast])>*{transition:opacity .4s}:where([data-sonner-toast][data-expanded="false"][data-front="false"][data-styled="true"])>*{opacity:0}
222:where([data-sonner-toast][data-visible="false"]){opacity:0;pointer-events:none}:where([data-sonner-toast][data-mounted="true"][data-expanded="true"]){--y: translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}:where([data-sonner-toast][data-removed="true"][data-front="true"][data-swipe-out="false"]){--y: translateY(calc(var(--lift) * -100%));opacity:0}:where([data-sonner-toast][data-removed="true"][data-front="false"][data-swipe-out="false"][data-expanded="true"]){--y: translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}:where([data-sonner-toast][data-removed="true"][data-front="false"][data-swipe-out="false"][data-expanded="false"]){--y: translateY(40%);opacity:0;transition:transform .5s,opacity .2s}:where([data-sonner-toast][data-removed="true"][data-front="false"]):before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y, 0px)) translate(var(--swipe-amount-x, 0px));transition:none}[data-sonner-toast][data-swiped=true]{user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{0%{transform:var(--y) translate(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translate(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{0%{transform:var(--y) translate(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translate(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{0%{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{0%{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width: 600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset-left) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--mobile-offset-bottom)}[data-sonner-toaster][data-y-position=top]{top:var(--mobile-offset-top)}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-theme=light]{--normal-bg: #fff;--normal-border: var(--gray4);--normal-text: var(--gray12);--success-bg: hsl(143, 85%, 96%);--success-border: hsl(145, 92%, 91%);--success-text: hsl(140, 100%, 27%);--info-bg: hsl(208, 100%, 97%);--info-border: hsl(221, 91%, 91%);--info-text: hsl(210, 92%, 45%);--warning-bg: hsl(49, 100%, 97%);--warning-border: hsl(49, 91%, 91%);--warning-text: hsl(31, 92%, 45%);--error-bg: hsl(359, 100%, 97%);--error-border: hsl(359, 100%, 94%);--error-text: hsl(360, 100%, 45%)}[data-sonner-toaster][data-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg: #000;--normal-border: hsl(0, 0%, 20%);--normal-text: var(--gray1)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg: #fff;--normal-border: var(--gray3);--normal-text: var(--gray12)}[data-sonner-toaster][data-theme=dark]{--normal-bg: #000;--normal-bg-hover: hsl(0, 0%, 12%);--normal-border: hsl(0, 0%, 20%);--normal-border-hover: hsl(0, 0%, 25%);--normal-text: var(--gray1);--success-bg: hsl(150, 100%, 6%);--success-border: hsl(147, 100%, 12%);--success-text: hsl(150, 86%, 65%);--info-bg: hsl(215, 100%, 6%);--info-border: hsl(223, 100%, 12%);--info-text: hsl(216, 87%, 65%);--warning-bg: hsl(64, 100%, 6%);--warning-border: hsl(60, 100%, 12%);--warning-text: hsl(46, 87%, 65%);--error-bg: hsl(358, 76%, 10%);--error-border: hsl(357, 89%, 16%);
222--error-text: hsl(358, 100%, 81%)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success],[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info],[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning],[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error],[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size: 16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:nth-child(1){animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}to{opacity:.15}}@media (prefers-reduced-motion){[data-sonner-toast],[data-sonner-toast]>*,.sonner-loading-bar{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)}
223`);function ib(e){return e.label!==void 0}var _fe=3,jfe="32px",Nfe="16px",QO=4e3,Dfe=356,Mfe=14,Efe=20,Ife=200;function Ys(...e){return e.filter(Boolean).join(" ")}function Ofe(e){let[t,n]=e.split("-"),a=[];return t&&a.push(t),n&&a.push(n),a}var Lfe=e=>{var t,n,a,s,r,i,c,d,m,f,p;let{invert:y,toast:v,unstyled:$,interacting:x,setHeights:w,visibleToasts:S,heights:k,index:T,toasts:R,expanded:_,removeToast:P,defaultRichColors:j,closeButton:N,style:I,cancelButtonStyle:z,actionButtonStyle:E,className:L="",descriptionClassName:O="",duration:V,position:ne,gap:q,loadingIcon:M,expandByDefault:F,classNames:H,icons:ee,closeButtonAriaLabel:B="Close toast",pauseWhenPageIsHidden:G}=e,[Q,de]=Se.useState(null),[Y,pe]=Se.useState(null),[se,we]=Se.useState(!1),[me,ye]=Se.useState(!1),[_e,ae]=Se.useState(!1),[Je,Ae]=Se.useState(!1),[tt,Tt]=Se.useState(!1),[an,ta]=Se.useState(0),[lo,qs]=Se.useState(0),yt=Se.useRef(v.duration||V||QO),fe=Se.useRef(null),Ne=Se.useRef(null),rt=T===0,na=T+1<=S,cn=v.type,vn=v.dismissible!==!1,ds=v.className||"",Vc=v.descriptionClassName||"",Kc=Se.useMemo(()=>k.findIndex(nt=>nt.toastId===v.id)||0,[k,v.id]),Q0=Se.useMemo(()=>{var nt;return(nt=v.closeButton)!=null?nt:N},[v.closeButton,N]),Ey=Se.useMemo(()=>v.duration||V||QO,[v.duration,V]),hi=Se.useRef(0),Mn=Se.useRef(0),Hs=Se.useRef(0),En=Se.useRef(null),[X0,Z0]=ne.split("-"),Iy=Se.useMemo(()=>k.reduce((nt,Et,Jt)=>Jt>
223=Kc?nt:nt+Et.height,0),[k,Kc]),Gc=wfe(),_u=v.invert||y,vl=cn==="loading";Mn.current=Se.useMemo(()=>Kc*q+Iy,[Kc,Iy]),Se.useEffect(()=>{yt.current=Ey},[Ey]),Se.useEffect(()=>{we(!0)},[]),Se.useEffect(()=>{let nt=Ne.current;if(nt){let Et=nt.getBoundingClientRect().height;return qs(Et),w(Jt=>[{toastId:v.id,height:Et,position:v.position},...Jt]),()=>w(Jt=>Jt.filter(Wa=>Wa.toastId!==v.id))}},[w,v.id]),Se.useLayoutEffect(()=>{if(!se)return;let nt=Ne.current,Et=nt.style.height;nt.style.height="auto";let Jt=nt.getBoundingClientRect().height;nt.style.height=Et,qs(Jt),w(Wa=>Wa.find(ha=>ha.toastId===v.id)?Wa.map(ha=>ha.toastId===v.id?{...ha,height:Jt}:ha):[{toastId:v.id,height:Jt,position:v.position},...Wa])},[se,v.title,v.description,w,v.id]);let _a=Se.useCallback(()=>{ye(!0),ta(Mn.current),w(nt=>nt.filter(Et=>Et.toastId!==v.id)),setTimeout(()=>{P(v)},Ife)},[v,P,w,Mn]);Se.useEffect(()=>{if(v.promise&&cn==="loading"||v.duration===1/0||v.type==="loading")return;let nt;return _||x||G&&Gc?(()=>{if(Hs.current<hi.current){let Et=new Date().getTime()-hi.current;yt.current=yt.current-Et}Hs.current=new Date().getTime()})():yt.current!==1/0&&(hi.current=new Date().getTime(),nt=setTimeout(()=>{var Et;(Et=v.onAutoClose)==null||Et.call(v,v),_a()},yt.current)),()=>clearTimeout(nt)},[_,x,v,cn,G,Gc,_a]),Se.useEffect(()=>{v.delete&&_a()},[_a,v.delete]);function ju(){var nt,Et,Jt;return ee!=null&&ee.loading?Se.createElement("div",{className:Ys(H?.loader,(nt=v?.classNames)==null?void 0:nt.loader,"sonner-loader"),"data-visible":cn==="loading"},ee.loading):M?Se.createElement("div",{className:Ys(H?.loader,(Et=v?.classNames)==null?void 0:Et.loader,"sonner-loader"),"data-visible":cn==="loading"},M):Se.createElement(hfe,{className:Ys(H?.loader,(Jt=v?.classNames)==null?void 0:Jt.loader),visible:cn==="loading"})}return Se.createElement("li",{tabIndex:0,ref:Ne,className:Ys(L,ds,H?.toast,(t=v?.classNames)==null?void 0:t.toast,H?.default,H?.[cn],(n=v?.classNames)==null?void 0:n[cn]),"data-sonner-toast":"","data-rich-colors":(a=v.richColors)!=null?a:j,"data-styled":!(v.jsx||v.unstyled||$),"data-mounted":se,"data-promise":!!v.promise,"data-swiped":tt,"data-removed":me,"data-visible":na,"data-y-position":X0,"data-x-position":Z0,"data-index":T,"data-front":rt,"data-swiping":_e,"data-dismissible":vn,"data-type":cn,"data-invert":_u,"data-swipe-out":Je,"data-swipe-direction":Y,"data-expanded":!!(_||F&&se),style:{"--index":T,"--toasts-before":T,"--z-index":R.length-T,"--offset":`${me?an:Mn.current}px`,"--initial-height":F?"auto":`${lo}px`,...I,...v.style},onDragEnd:()=>{ae(!1),de(null),En.current=null},onPointerDown:nt=>{vl||!vn||(fe.current=new Date,ta(Mn.current),nt.target.setPointerCapture(nt.pointerId),nt.target.tagName!=="BUTTON"&&(ae(!0),En.current={x:nt.clientX,y:nt.clientY}))},onPointerUp:()=>{var nt,Et,Jt,Wa;if(Je||!vn)return;En.current=null;let ha=Number(((nt=Ne.current)==null?void 0:nt.style.getPropertyValue("--swipe-amount-x").replace("px",""))||0),Rr=Number(((Et=Ne.current)==null?void 0:Et.style.getPropertyValue("--swipe-amount-y").replace("px",""))||0),Pr=new Date().getTime()-((Jt=fe.current)==null?void 0:Jt.getTime()),co=Q==="x"?ha:Rr,Vs=Math.abs(co)/Pr;if(Math.abs(co)>=Efe||Vs>.11){ta(Mn.current),(Wa=v.onDismiss)==null||Wa.call(v,v),pe(Q==="x"?ha>0?"right":"left":Rr>0?"down":"up"),_a(),Ae(!0),Tt(!1);return}ae(!1),de(null)},onPointerMove:nt=>{var Et,Jt,Wa,ha;if(!En.current||!vn||((Et=window.getSelection())==null?void 0:Et.toString().length)>0)return;let Rr=nt.clientY-En.current.y,Pr=nt.clientX-En.current.x,co=(Jt=e.swipeDirections)!=null?Jt:Ofe(ne);!Q&&(Math.abs(Pr)>1||Math.abs(Rr)>1)&&de(Math.abs(Pr)>Math.abs(Rr)?"x":"y");let Vs={x:0,y:0};Q==="y"?(co.includes("top")||co.includes("bottom"))&&(co.includes("top")&&Rr<0||co.includes("bottom")&&Rr>0)&&(Vs.y=Rr):Q==="x"&&(co.includes("left")||co.includes("right"))&&(co.includes("left")&&Pr<0||co.includes("right")&&Pr>0)&&(Vs.x=Pr),(Math.abs(Vs.x)>0||Math.abs(Vs.y)>0)&&Tt(!0),(Wa=Ne.current)==null||Wa.style.setProperty("--swipe-amount-x",`${Vs.x}px`),(ha=Ne.current)==null||ha.style.setProperty("--swipe-amount-y",`${Vs.y}px`)}},Q0&&!v.jsx?Se.createElement("button",{"aria-label":B,"data-disabled":vl,"data-close-button":!0,onClick:vl||!vn?()=>{}:()=>{var nt;_a(),(nt=v.onDismiss)==null||nt.call(v,v)},className:Ys(H?.closeButton,(s=v?.classNames)==null?void 0:s.closeButton)},(r=ee?.close)!=null?r:$fe):null,v.jsx||h.isValidElement(v.title)?v.jsx?v.jsx:typeof v.t
223itle=="function"?v.title():v.title:Se.createElement(Se.Fragment,null,cn||v.icon||v.promise?Se.createElement("div",{"data-icon":"",className:Ys(H?.icon,(i=v?.classNames)==null?void 0:i.icon)},v.promise||v.type==="loading"&&!v.icon?v.icon||ju():null,v.type!=="loading"?v.icon||ee?.[cn]||ffe(cn):null):null,Se.createElement("div",{"data-content":"",className:Ys(H?.content,(c=v?.classNames)==null?void 0:c.content)},Se.createElement("div",{"data-title":"",className:Ys(H?.title,(d=v?.classNames)==null?void 0:d.title)},typeof v.title=="function"?v.title():v.title),v.description?Se.createElement("div",{"data-description":"",className:Ys(O,Vc,H?.description,(m=v?.classNames)==null?void 0:m.description)},typeof v.description=="function"?v.description():v.description):null),h.isValidElement(v.cancel)?v.cancel:v.cancel&&ib(v.cancel)?Se.createElement("button",{"data-button":!0,"data-cancel":!0,style:v.cancelButtonStyle||z,onClick:nt=>{var Et,Jt;ib(v.cancel)&&vn&&((Jt=(Et=v.cancel).onClick)==null||Jt.call(Et,nt),_a())},className:Ys(H?.cancelButton,(f=v?.classNames)==null?void 0:f.cancelButton)},v.cancel.label):null,h.isValidElement(v.action)?v.action:v.action&&ib(v.action)?Se.createElement("button",{"data-button":!0,"data-action":!0,style:v.actionButtonStyle||E,onClick:nt=>{var Et,Jt;ib(v.action)&&((Jt=(Et=v.action).onClick)==null||Jt.call(Et,nt),!nt.defaultPrevented&&_a())},className:Ys(H?.actionButton,(p=v?.classNames)==null?void 0:p.actionButton)},v.action.label):null))};function XO(){if(typeof window>"u"||typeof document>"u")return"ltr";let e=document.documentElement.getAttribute("dir");return e==="auto"||!e?window.getComputedStyle(document.documentElement).direction:e}function Ufe(e,t){let n={};return[e,t].forEach((a,s)=>{let r=s===1,i=r?"--mobile-offset":"--offset",c=r?Nfe:jfe;function d(m){["top","right","bottom","left"].forEach(f=>{n[`${i}-${f}`]=typeof m=="number"?`${m}px`:m})}typeof a=="number"||typeof a=="string"?d(a):typeof a=="object"?["top","right","bottom","left"].forEach(m=>{a[m]===void 0?n[`${i}-${m}`]=c:n[`${i}-${m}`]=typeof a[m]=="number"?`${a[m]}px`:a[m]}):d(c)}),n}var Bfe=h.forwardRef(function(e,t){let{invert:n,position:a="bottom-right",hotkey:s=["altKey","KeyT"],expand:r,closeButton:i,className:c,offset:d,mobileOffset:m,theme:f="light",richColors:p,duration:y,style:v,visibleToasts:$=_fe,toastOptions:x,dir:w=XO(),gap:S=Mfe,loadingIcon:k,icons:T,containerAriaLabel:R="Notifications",pauseWhenPageIsHidden:_}=e,[P,j]=Se.useState([]),N=Se.useMemo(()=>Array.from(new Set([a].concat(P.filter(G=>G.position).map(G=>G.position)))),[P,a]),[I,z]=Se.useState([]),[E,L]=Se.useState(!1),[O,V]=Se.useState(!1),[ne,q]=Se.useState(f!=="system"?f:typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"),M=Se.useRef(null),F=s.join("+").replace(/Key/g,"").replace(/Digit/g,""),H=Se.useRef(null),ee=Se.useRef(!1),B=Se.useCallback(G=>{j(Q=>{var de;return(de=Q.find(Y=>Y.id===G.id))!=null&&de.delete||$o.dismiss(G.id),Q.filter(({id:Y})=>Y!==G.id)})},[]);return Se.useEffect(()=>$o.subscribe(G=>{if(G.dismiss){j(Q=>Q.map(de=>de.id===G.id?{...de,delete:!0}:de));return}setTimeout(()=>{iF.flushSync(()=>{j(Q=>{let de=Q.findIndex(Y=>Y.id===G.id);return de!==-1?[...Q.slice(0,de),{...Q[de],...G},...Q.slice(de+1)]:[G,...Q]})})})}),[]),Se.useEffect(()=>{if(f!=="system"){q(f);return}if(f==="system"&&(window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?q("dark"):q("light")),typeof window>"u")return;let G=window.matchMedia("(prefers-color-scheme: dark)");try{G.addEventListener("change",({matches:Q})=>{q(Q?"dark":"light")})}catch{G.addListener(({matches:de})=>{try{q(de?"dark":"light")}catch(Y){console.error(Y)}})}},[f]),Se.useEffect(()=>{P.length<=1&&L(!1)},[P]),Se.useEffect(()=>{let G=Q=>{var de,Y;s.every(pe=>Q[pe]||Q.code===pe)&&(L(!0),(de=M.current)==null||de.focus()),Q.code==="Escape"&&(document.activeElement===M.current||(Y=M.current)!=null&&Y.contains(document.activeElement))&&L(!1)};return document.addEventListener("keydown",G),()=>document.removeEventListener("keydown",G)},[s]),Se.useEffect(()=>{if(M.current)return()=>{H.current&&(H.current.focus({preventScroll:!0}),H.current=null,ee.current=!1)}},[M.current]),Se.createElement("section",{ref:t,"aria-label":`${R} ${F}`,tabIndex:-1,"aria-live":"polite","aria-relevant":"additions text","aria-atomic":"false",suppressHydrationWarning:!0},N.map((G,Q)=>{var de;let[Y,pe]=G.split("-");return P.length?Se.createElement("ol",{key:G,dir:w==="auto"?XO():w,tabIndex:-1,ref:M,className:c,"data-sonner-toaster":!0,"data-theme":ne,"data-y-position":Y,"data-lifted":E&&P.length>1&&!r,"data-x-position":pe,style:{"--front-toast-height":`${((de=I[0])==null?void 0:de.height)||0}px`,"--width":`${Dfe}px`,"--gap":`${S}px`,...v,...Ufe(d,m)},onBlur:se=>{ee.current&&!se.currentTarget.contains(se.relatedTarget)&&(ee.current=!1,H.
vendor: 4,572 bytes, line 223
223current&&(H.current.focus({preventScroll:!0}),H.current=null))},onFocus:se=>{se.target instanceof HTMLElement&&se.target.dataset.dismissible==="false"||ee.current||(ee.current=!0,H.current=se.relatedTarget)},onMouseEnter:()=>L(!0),onMouseMove:()=>L(!0),onMouseLeave:()=>{O||L(!1)},onDragEnd:()=>L(!1),onPointerDown:se=>{se.target instanceof HTMLElement&&se.target.dataset.dismissible==="false"||V(!0)},onPointerUp:()=>V(!1)},P.filter(se=>!se.position&&Q===0||se.position===G).map((se,we)=>{var me,ye;return Se.createElement(Lfe,{key:se.id,icons:T,index:we,toast:se,defaultRichColors:p,duration:(me=x?.duration)!=null?me:y,className:x?.className,descriptionClassName:x?.descriptionClassName,invert:n,visibleToasts:$,closeButton:(ye=x?.closeButton)!=null?ye:i,interacting:O,position:G,style:x?.style,unstyled:x?.unstyled,classNames:x?.classNames,cancelButtonStyle:x?.cancelButtonStyle,actionButtonStyle:x?.actionButtonStyle,removeToast:B,toasts:P.filter(_e=>_e.position==se.position),heights:I.filter(_e=>_e.position==se.position),setHeights:z,expandByDefault:r,gap:S,loadingIcon:k,expanded:E,pauseWhenPageIsHidden:_,swipeDirections:e.swipeDirections})})):null}))});function Ffe(e){return o.jsx(Bfe,{position:"top-right",closeButton:!0,richColors:!1,toastOptions:{classNames:{toast:"group toast group-[.toaster]:bg-[color:var(--card)] group-[.toaster]:text-[color:var(--card-foreground)] group-[.toaster]:border group-[.toaster]:border-[color:var(--border)] group-[.toaster]:shadow-[0_18px_60px_rgba(13,17,23,0.12)]",description:"group-[.toast]:text-[color:var(--muted-foreground)]",actionButton:"group-[.toast]:bg-[color:var(--primary)] group-[.toast]:text-[color:var(--primary-foreground)]",cancelButton:"group-[.toast]:bg-[color:var(--muted)] group-[.toast]:text-[color:var(--muted-foreground)]",success:"group-[.toaster]:!border-l-2 group-[.toaster]:!border-l-[color:var(--success)]",error:"group-[.toaster]:!border-l-2 group-[.toaster]:!border-l-[color:var(--destructive)]",warning:"group-[.toaster]:!border-l-2 group-[.toaster]:!border-l-[color:var(--warning-foreground)]",info:"group-[.toaster]:!border-l-2 group-[.toaster]:!border-l-[color:var(--link)]"}},...e})}const _o=h.forwardRef(({className:e,...t},n)=>o.jsx("textarea",{ref:n,className:X("flex min-h-20 w-full rounded-md border border-[color:var(--input)] bg-[color:var(--background)] px-3 py-2 text-sm text-[color:var(--foreground)] outline-none transition-colors placeholder:text-[color:var(--muted-foreground)] focus-visible:border-[color:var(--ring)] disabled:cursor-not-allowed disabled:opacity-50",e),...t}));_o.displayName="Textarea";var _w="Switch",[zfe]=so(_w),[qfe,Hfe]=zfe(_w),oV=h.forwardRef((e,t)=>{const{__scopeSwitch:n,name:a,checked:s,defaultChecked:r,required:i,disabled:c,value:d="on",onCheckedChange:m,form:f,...p}=e,[y,v]=h.useState(null),$=vt(t,T=>v(T)),x=h.useRef(!1),w=y?f||!!y.closest("form"):!0,[S,k]=ts({prop:s,defaultProp:r??!1,onChange:m,caller:_w});return o.jsxs(qfe,{scope:n,checked:S,disabled:c,children:[o.jsx(st.button,{type:"button",role:"switch","aria-checked":S,"aria-required":i,"data-state":lV(S),"data-disabled":c?"":void 0,disabled:c,value:d,...p,ref:$,onClick:je(e.onClick,T=>{k(R=>!R),w&&(x.current=T.isPropagationStopped(),x.current||T.stopPropagation())})}),w&&o.jsx(iV,{control:y,bubbles:!x.current,name:a,value:d,checked:S,required:i,disabled:c,form:f,style:{transform:"translateX(-100%)"}})]})});oV.displayName=_w;var sV="SwitchThumb",rV=h.forwardRef((e,t)=>{const{__scopeSwitch:n,...a}=e,s=Hfe(sV,n);return o.jsx(st.span,{"data-state":lV(s.checked),"data-disabled":s.disabled?"":void 0,...a,ref:t})});rV.displayName=sV;var Vfe="SwitchBubbleInput",iV=h.forwardRef(({__scopeSwitch:e,control:t,checked:n,bubbles:a=!0,...s},r)=>{const i=h.useRef(null),c=vt(i,r),d=xH(n),m=rz(t);return h.useEffect(()=>{const f=i.current;if(!f)return;const p=window.HTMLInputElement.prototype,v=Object.getOwnPropertyDescriptor(p,"checked").set;if(d!==n&&v){const $=new Event("click",{bubbles:a});v.call(f,n),f.dispatchEvent($)}},[d,n,a]),o.jsx("input",{type:"checkbox","aria-hidden":!0,defaultChecked:n,...s,tabIndex:-1,ref:c,style:{...s.style,...m,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})});iV.displayName=Vfe;function lV(e){return e?"checked":"unchecked"}var cV=oV,Kfe=rV;const js=h.forwardRef(({className:e,...t},n)=>o.jsx(cV,{ref:n,className:X("peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[color:var(--ring)] focu
223s-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-[color:var(--primary)] data-[state=unchecked]:bg-[color:var(--muted)]",e),...t,children:o.jsx(Kfe,{className:X("pointer-events-none block size-4 rounded-full bg-[color:var(--background)] shadow-sm ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0")})}));js.displayName=cV.displayName;var q1={exports:{}},H1={};/**
224 * @license React
225 * use-sync-external-store-shim.production.js
226 *
227 * Copyright (c) Meta Platforms, Inc. and affiliates.
228 *
229 * This source code is licensed under the MIT license found in the
230 * LICENSE file in the root directory of this source tree.
231 */var ZO;function Gfe(){if(ZO)return H1;ZO=1;var e=jp();function t(p,y){return p===y&&(p!==0||1/p===1/y)||p!==p&&y!==y}var n=typeof Object.is=="function"?Object.is:t,a=e.useState,s=e.useEffect,r=e.useLayoutEffect,i=e.useDebugValue;function c(p,y){var v=y(),$=a({inst:{value:v,getSnapshot:y}}),x=$[0].inst,w=$[1];return r(function(){x.value=v,x.getSnapshot=y,d(x)&&w({inst:x})},[p,v,y]),s(function(){return d(x)&&w({inst:x}),p(function(){d(x)&&w({inst:x})})},[p]),i(v),v}function d(p){var y=p.getSnapshot;p=p.value;try{var v=y();return!n(p,v)}catch{return!0}}function m(p,y){return y()}var f=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?m:c;return H1.useSyncExternalStore=e.useSyncExternalStore!==void 0?e.useSyncExternalStore:f,H1}var JO;function dV(){return JO||(JO=1,q1.exports=Gfe()),q1.exports}var Wfe=dV();function Yfe(e,t=[]){let n=[];function a(r,i){const c=h.createContext(i);c.displayName=r+"Context";const d=n.length;n=[...n,i];const m=p=>{const{scope:y,children:v,...$}=p,x=y?.[e]?.[d]||c,w=h.useMemo(()=>$,Object.values($));return o.jsx(x.Provider,{value:w,children:v})};m.displayName=r+"Provider";function f(p,y){const v=y?.[e]?.[d]||c,$=h.useContext(v);if($)return $;if(i!==void 0)return i;throw new Error(`\`${p}\` must be used within \`${r}\``)}return[m,f]}const s=()=>{const r=n.map(i=>h.createContext(i));return function(c){const d=c?.[e]||r;return h.useMemo(()=>({[`__scope${e}`]:{...c,[e]:d}}),[c,d])}};return s.scopeName=e,[a,Qfe(s,...t)]}function Qfe(...e){const t=e[0];if(e.length===1)return t;const n=()=>{const a=e.map(s=>({useScope:s(),scopeName:s.scopeName}));return function(r){const i=a.reduce((c,{useScope:d,scopeName:m})=>{const p=d(r)[`__scope${m}`];return{...c,...p}},{});return h.useMemo(()=>({[`__scope${t.scopeName}`]:i}),[i])}};return n.scopeName=t.scopeName,n}var Xfe=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],uV=Xfe.reduce((e,t)=>{const n=u_(`Primitive.${t}`),a=h.forwardRef((s,r)=>{const{asChild:i,...c}=s,d=i?n:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),o.jsx(d,{...c,ref:r})});return a.displayName=`Primitive.${t}`,{...e,[t]:a}},{}),H_="Progress",V_=100,[Zfe]=Yfe(H_),[Jfe,ege]=Zfe(H_),mV=h.forwardRef((e,t)=>{const{__scopeProgress:n,value:a=null,max:s,getValueLabel:r=tge,...i}=e;(s||s===0)&&!e3(s)&&console.error(nge(`${s}`,"Progress"));const c=e3(s)?s:V_;a!==null&&!t3(a,c)&&console.error(age(`${a}`,"Progress"));const d=t3(a,c)?a:null,m=Ox(d)?r(d,c):void 0;return o.jsx(Jfe,{scope:n,value:d,max:c,children:o.jsx(uV.div,{"aria-valuemax":c,"aria-valuemin":0,"aria-valuenow":Ox(d)?d:void 0,"aria-valuetext":m,role:"progressbar","data-state":gV(d,c),"data-value":d??void 0,"data-max":c,...i,ref:t})})});mV.displayName=H_;var pV="ProgressIndicator",fV=h.forwardRef((e,t)=>{const{__scopeProgress:n,...a}=e,s=ege(pV,n);return o.jsx(uV.div,{"data-state":gV(s.value,s.max),"data-value":s.value??void 0,"data-max":s.max,...a,ref:t})});fV.displayName=pV;function tge(e,t){return`${Math.round(e/t*100)}%`}function gV(e,t){return e==null?"indeterminate":e===t?"complete":"loading"}function Ox(e){return typeof e=="number"}function e3(e){return Ox(e)&&!isNaN(e)&&e>0}function t3(e,t){return Ox(e)&&!isNaN(e)&&e<=t&&e>=0}function nge(e,t){return`Invalid prop \`max\` of value \`${e}\` supplied to \`${t}\`. Only numbers greater than 0 are valid max values. Defaulting to \`${V_}\`.`}function age(e,t){return`Invalid prop \`value\` of value \`${e}\` supplied to \`${t}\`. The \`value\` prop must be:
232  - a positive number
233  - less than the value passed to \`max\` (or ${V_} if no \`max\` prop is set)
234  - \`null\` or \`undefined\` if the progress is indeterminate.
235
236Defaulting to \`null\`.`}var hV=mV,oge=fV;const iy=h.forwardRef(({className:e,indicatorClassName:t,value:n,...a},s)=>o.jsx(hV,{ref:s,className:X("relative h-2 w-full overflow-hidden rounded-full bg-[color:var(--muted)]",e),...a,children:o.jsx(oge,{className:X("h-full w-full flex-1 bg-[color:var(--primary)] transition-transform",t),style:{transform:`translateX(-${100-(n??0)}%)`}})}));iy.displayName=hV.displayName;function sge(e,t){const n=t.trim();return!n||e.includes(n)?e:[...e,n]}
236const K_=h.forwardRef(({value:e,onChange:t,suggestions:n=[],placeholder:a,disabled:s,removeLabel:r="Remove",className:i,"aria-label":c},d)=>{const[m,f]=h.useState(""),p=h.useId(),y=n.filter($=>!e.includes($)),v=$=>{const x=sge(e,$);x!==e&&t(x),f("")};return o.jsxs("div",{className:X("flex flex-wrap items-center gap-1.5 rounded-md border border-[color:var(--input)] bg-[color:var(--background)] p-2",s&&"cursor-not-allowed opacity-50",i),children:[e.map($=>o.jsxs(Xt,{variant:"secondary",className:"gap-1",children:[$,o.jsx("button",{type:"button","aria-label":`${r} ${$}`,disabled:s,onClick:()=>t(e.filter(x=>x!==$)),className:"rounded-sm text-[color:var(--muted-foreground)] outline-none transition-colors hover:text-[color:var(--foreground)] focus-visible:ring-2 focus-visible:ring-[color:var(--ring)]",children:o.jsx(Fh,{className:"size-3"})})]},$)),o.jsx("input",{ref:d,value:m,list:y.length?p:void 0,disabled:s,"aria-label":c,placeholder:a,onChange:$=>f($.target.value),onBlur:()=>v(m),onKeyDown:$=>{$.key==="Enter"||$.key===","?($.preventDefault(),v(m)):$.key==="Backspace"&&!m&&e.length&&t(e.slice(0,-1))},className:X(ew,"h-auto min-w-24 flex-1 border-0 bg-transparent p-0 focus-visible:ring-0")}),y.length?o.jsx("datalist",{id:p,children:y.map($=>o.jsx("option",{value:$},$))}):null]})});K_.displayName="TagInput";function rge(e){return typeof e=="string"?{value:e}:e}function ly({value:e,onChange:t,options:n,placeholder:a,allLabel:s="All",emptyText:r="No options.",triggerLabel:i,disabled:c,className:d,"aria-label":m}){const f=n.map(rge),p=e.length===0,y=$=>{t(e.includes($)?e.filter(x=>x!==$):[...e,$])},v=i?i(e):p?a??s:`${e.length} selected`;return o.jsxs(Bp,{children:[o.jsx(Fp,{asChild:!0,children:o.jsxs(K,{type:"button",variant:"outline",disabled:c,"aria-label":m,className:X("w-full min-w-0 justify-between font-normal",d),children:[o.jsx("span",{className:"min-w-0 truncate",children:v}),o.jsx(Ic,{className:"size-4 shrink-0 opacity-60","aria-hidden":!0})]})}),o.jsxs(yu,{align:"start",className:"max-h-80 w-[--radix-popover-trigger-width] min-w-0 max-w-[calc(100vw-1rem)] overflow-y-auto p-2 sm:min-w-[240px]",children:[o.jsxs("label",{className:"flex cursor-pointer items-center gap-2 rounded-md border-b border-[color:var(--border)] px-2 py-2 text-sm font-medium",children:[o.jsx(Zn,{checked:p,onChange:()=>t([]),"aria-label":s}),o.jsx("span",{className:"min-w-0 break-words",children:s})]}),o.jsx("div",{className:"mt-1 flex flex-col gap-0.5",children:f.length===0?o.jsx("p",{className:"px-2 py-2 text-xs text-[color:var(--muted-foreground)]",children:r}):f.map($=>o.jsxs("label",{className:"flex cursor-pointer items-center gap-2 rounded-md px-2 py-1.5 text-sm hover:bg-[color:var(--muted)]",children:[o.jsx(Zn,{checked:e.includes($.value),onChange:()=>y($.value),"aria-label":typeof $.label=="string"?$.label:$.value}),o.jsx("span",{className:"min-w-0 break-words",children:$.label??$.value})]},$.value))})]})]})}const V1=[];function yV({value:e,onChange:t,items:n=V1,onSearch:a,isLoading:s,placeholder:r="Select…",searchPlaceholder:i="Search…",emptyText:c="No results.",loadingText:d="Searching…",debounceMs:m=250,disabled:f,className:p,"aria-label":y}){const[v,$]=h.useState(!1),[x,w]=h.useState(""),[S,k]=h.useState(V1),[T,R]=h.useState(!1),[_,P]=h.useState(0),j=h.useRef(null),N=h.useRef(null),I=h.useRef(0),z=h.useId(),E=h.useMemo(()=>new Set(e.map(F=>F.id)),[e]),L=h.useRef(a);h.useEffect(()=>{L.current=a}),h.useEffect(()=>{const F=L.current;if(!F||!v)return;let H=!0;const ee=++I.current;R(!0);const B=setTimeout(async()=>{try{const G=await F(x);H&&ee===I.current&&k(G??V1)}finally{H&&ee===I.current&&R(!1)}},m);return()=>{H=!1,clearTimeout(B)}},[x,v,m]);const O=h.useMemo(()=>{if(a)return S;const F=x.trim().toLowerCase();return F?n.filter(H=>H.label.toLowerCase().includes(F)||(H.hint?.toLowerCase().includes(F)??!1)):n},[a,S,n,x]);h.useEffect(()=>{P(F=>F>=O.length?0:F)},[O.length]);const V=!!s||T,ne=F=>{t(E.has(F.id)?e.filter(H=>H.id!==F.id):[...e,F])},q=F=>t(e.filter(H=>H.id!==F)),M=F=>{if(F.key==="ArrowDown")F.preventDefault(),P(H=>Math.min(H+1,O.length-1));else if(F.key==="ArrowUp")F.preventDefault(),P(H=>Math.max(H-1,0));else if(F.key==="Enter"){F.preventDefault();const H=O[_];H&&ne(H)}};return h.useEffect(()=>{if(!v||!N.current)return;N.current.querySelector(`[data-index="${_}"]`)?.scrollIntoView({block:"nearest"})},[_,v]),o.jsxs(Bp,{open:v,onOpenChange:$,children:[o.jsx(Fp,{asChild:!0,children:o.jsxs(K,{type:"button",variant:"outline",disabled:f,"aria-label":y,"aria-haspopup":"listbox","aria-expanded":v,className:X("h-auto min-h-11 w-full min-w-0 justify-between gap-2 px-3 py-2 font-normal",p),children:[e.length===0?o.jsx("span",{className:"min-w-0 truncate text-[color:var(--muted-foreground)]",children:r}):o.jsx("span",{className:"flex min-w-0 flex-1 flex-wrap items-center gap-1.5",children:e.map(F=>o.jsxs("span",{className:"inline-flex max-w-full min-w-0 items-center gap-1 rounded-sm border border-[color:var(--border)] bg-[color:var(--muted)] px-1.5 py-0.5 text-xs",children:[o.jsx("span",{className:"min-w-0 truncate",children:F.label}),o.jsx("span",{role:"button",tabIndex:0,"aria-label":`Remove ${F.label}`,className:"grid size-4 place-items-center rounded-sm text-[color:var(--muted-foreground)] hover:bg-[color:var(--accent)] hover:text-[color:var(--foreground)]",onClick:H=>{H.stopPropagation(),q(F.id)},onKeyDown:H=>{(H.key==="Enter"||H.key===" ")&&(H.preventDefault(),H.stopPropagation(),q(F.id))},children:o.jsx(Fh,{className:"size-3","aria-hidden":!0})})]},F.id))}),o.jsx(Ic,{className:"size-4 shrink-0 opacity-60","aria-hidden":!0})]})}),o.jsxs(yu,{align:"start",className:"w-[--radix-popover-trigger-width] min-w-0 max-w-[calc(100vw-1rem)] p-0 sm:min-w-[260px]",onOpenAutoFocus:
236F=>{F.preventDefault(),j.current?.focus()},children:[o.jsx("div",{className:"border-b border-[color:var(--border)] p-2",children:o.jsxs("div",{className:"relative",children:[o.jsx(Cse,{className:"pointer-events-none absolute inset-y-0 left-0 my-auto ml-3 size-4 text-[color:var(--muted-foreground)]","aria-hidden":!0}),o.jsx("input",{ref:j,value:x,onChange:F=>w(F.target.value),onKeyDown:M,placeholder:i,role:"combobox","aria-expanded":v,"aria-controls":z,"aria-activedescendant":O[_]?`${z}-${_}`:void 0,className:X(ew,"h-11 pl-9")})]})}),o.jsx("ul",{ref:N,id:z,role:"listbox","aria-multiselectable":!0,className:"max-h-72 overflow-y-auto p-1",children:V?o.jsxs("li",{className:"flex items-center gap-2 px-2 py-3 text-sm text-[color:var(--muted-foreground)]",children:[o.jsx(f_,{className:"size-4 animate-spin","aria-hidden":!0}),d]}):O.length===0?o.jsx("li",{className:"px-2 py-3 text-sm text-[color:var(--muted-foreground)]",children:c}):O.map((F,H)=>{const ee=E.has(F.id);return o.jsxs("li",{id:`${z}-${H}`,"data-index":H,role:"option","aria-selected":ee,onMouseEnter:()=>P(H),onClick:()=>ne(F),className:X("flex min-h-11 cursor-pointer items-center gap-2 rounded-md px-2 py-1.5 text-sm",H===_&&"bg-[color:var(--accent)] text-[color:var(--accent-foreground)]"),children:[o.jsx("span",{className:X("grid size-4 shrink-0 place-items-center rounded border",ee?"border-[color:var(--primary)] bg-[color:var(--primary)] text-[color:var(--primary-foreground)]":"border-[color:var(--input)]"),"aria-hidden":!0,children:ee?o.jsx(Ec,{className:"size-3"}):null}),o.jsxs("span",{className:"min-w-0 flex-1",children:[o.jsx("span",{className:"block break-words",children:F.label}),F.hint?o.jsx("span",{className:"block break-words text-xs text-[color:var(--muted-foreground)]",children:F.hint}):null]})]},F.id)})})]})]})}const ige=zh("relative w-full rounded-md border p-4 [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:size-4 [&>svg]:text-[color:var(--foreground)] [&>svg~*]:pl-7",{variants:{variant:{default:"border-[color:var(--border)] bg-[color:var(--muted)] text-[color:var(--foreground)]",destructive:"border-[color:var(--destructive)]/30 bg-[color:var(--destructive-bg)] text-[color:var(--destructive)] [&>svg]:text-[color:var(--destructive)]",warning:"border-[color:var(--warning)]/30 bg-[color:var(--warning-bg)] text-[color:var(--warning-foreground)] [&>svg]:text-[color:var(--warning-foreground)]",success:"border-[color:var(--success)]/30 bg-[color:var(--success-bg)] text-[color:var(--success)] [&>svg]:text-[color:var(--success)]"}},defaultVariants:{variant:"default"}}),Hm=h.forwardRef(({className:e,variant:t,...n},a)=>o.jsx("div",{ref:a,role:"alert",className:X(ige({variant:t}),e),...n}));Hm.displayName="Alert";const lge=h.forwardRef(({className:e,...t},n)=>o.jsx("h5",{ref:n,className:X("mb-1 font-medium leading-none tracking-tight",e),...t}));lge.displayName="AlertTitle";const cge=h.forwardRef(({className:e,...t},n)=>o.jsx("div",{ref:n,className:X("text-sm [&_p]:leading-relaxed",e),...t}));cge.displayName="AlertDescription";var jw="Collapsible",[dge,vV]=so(jw),[uge,G_]=dge(jw),bV=h.forwardRef((e,t)=>{const{__scopeCollapsible:n,open:a,defaultOpen:s,disabled:r,onOpenChange:i,...c}=e,[d,m]=ts({prop:a,defaultProp:s??!1,onChange:i,caller:jw});return o.jsx(uge,{scope:n,disabled:r,contentId:To(),open:d,onOpenToggle:h.useCallback(()=>m(f=>!f),[m]),children:o.jsx(st.div,{"data-state":Y_(d),"data-disabled":r?"":void 0,...c,ref:t})})});bV.displayName=jw;var xV="CollapsibleTrigger",$V=h.forwardRef((e,t)=>{const{__scopeCollapsible:n,...a}=e,s=G_(xV,n);return o.jsx(st.button,{type:"button","aria-controls":s.contentId,"aria-expanded":s.open||!1,"data-state":Y_(s.open),"data-disabled":s.disabled?"":void 0,disabled:s.disabled,...a,ref:t,onClick:je(e.onClick,s.onOpenToggle)})});$V.displayName=xV;var W_="CollapsibleContent",wV=h.forwardRef((e,t)=>{const{forceMount:n,...a}=e,s=G_(W_,e.__scopeCollapsible);return o.jsx(za,{present:n||s.open,children:({present:r})=>o.jsx(mge,{...a,ref:t,present:r})})});wV.displayName=W_;var mge=h.forwardRef((e,t)=>{const{__scopeCollapsible:n,present:a,children:s,...r}=e,i=G_(W_,n),[c,d]=h.useState(a),m=h.useRef(null),f=vt(t,m),p=h.useRef(0),y=p.current,v=h.useRef(0),$=v.current,x=i.open||c,w=h.useRef(x),S=h.useRef(void 0);return h.useEffect(()=>{const k=requestAnimationFrame(()=>w.current=!1);return()=>cancelAnimationFrame(k)},[]),Ra(()=>{const k=m.current;if(k){S.current=S.current||{transitionDuration:k.style.transitionDuration,animationName:k.style.animationName},k.style.transitionDuration="0s",k.style.animationName="none";const T=k.getBoundingClientRect();p.current=T.height,v.current=T.width,w.current||(k.style.transitionDuration=S.current.transitionDuration,k.style.animationName=S.current.animationName),d(a)}},[i.open,a]),o.jsx(st.div,{"data-state":Y_(i.open),"data-disabled":i.disabled?"":void 0,id:i.contentId,hidden:!x,...r,ref:f,style:{"--radix-collapsible-content-height":y?`${y}px`:void 0,"--radix-collapsible-content-width":$?`${$}px`:void 0,...e.style},children:x&&s})});function Y_(e){return e?"open":"closed"}var pge=bV,fge=$V,gge=wV,xr="Accordion",hge=["Home","End","ArrowDown","ArrowUp","ArrowLeft","ArrowRight"],[Q_,yge,vge]=vw(xr),[Nw]=so(xr,[vge,vV]),X_=vV(),kV=Se.forwardRef((e,t)=>
236{const{type:n,...a}=e,s=a,r=a;return o.jsx(Q_.Provider,{scope:e.__scopeAccordion,children:n==="multiple"?o.jsx(wge,{...r,ref:t}):o.jsx($ge,{...s,ref:t})})});kV.displayName=xr;var[CV,bge]=Nw(xr),[SV,xge]=Nw(xr,{collapsible:!1}),$ge=Se.forwardRef((e,t)=>{const{value:n,defaultValue:a,onValueChange:s=()=>{},collapsible:r=!1,...i}=e,[c,d]=ts({prop:n,defaultProp:a??"",onChange:s,caller:xr});return o.jsx(CV,{scope:e.__scopeAccordion,value:Se.useMemo(()=>c?[c]:[],[c]),onItemOpen:d,onItemClose:Se.useCallback(()=>r&&d(""),[r,d]),children:o.jsx(SV,{scope:e.__scopeAccordion,collapsible:r,children:o.jsx(AV,{...i,ref:t})})})}),wge=Se.forwardRef((e,t)=>{const{value:n,defaultValue:a,onValueChange:s=()=>{},...r}=e,[i,c]=ts({prop:n,defaultProp:a??[],onChange:s,caller:xr}),d=Se.useCallback(f=>c((p=[])=>[...p,f]),[c]),m=Se.useCallback(f=>c((p=[])=>p.filter(y=>y!==f)),[c]);return o.jsx(CV,{scope:e.__scopeAccordion,value:i,onItemOpen:d,onItemClose:m,children:o.jsx(SV,{scope:e.__scopeAccordion,collapsible:!0,children:o.jsx(AV,{...r,ref:t})})})}),[kge,Dw]=Nw(xr),AV=Se.forwardRef((e,t)=>{const{__scopeAccordion:n,disabled:a,dir:s,orientation:r="vertical",...i}=e,c=Se.useRef(null),d=vt(c,t),m=yge(n),p=Jh(s)==="ltr",y=je(e.onKeyDown,v=>{if(!hge.includes(v.key))return;const $=v.target,x=m().filter(N=>!N.ref.current?.disabled),w=x.findIndex(N=>N.ref.current===$),S=x.length;if(w===-1)return;v.preventDefault();let k=w;const T=0,R=S-1,_=()=>{k=w+1,k>R&&(k=T)},P=()=>{k=w-1,k<T&&(k=R)};switch(v.key){case"Home":k=T;break;case"End":k=R;break;case"ArrowRight":r==="horizontal"&&(p?_():P());break;case"ArrowDown":r==="vertical"&&_();break;case"ArrowLeft":r==="horizontal"&&(p?P():_());break;case"ArrowUp":r==="vertical"&&P();break}const j=k%S;x[j].ref.current?.focus()});return o.jsx(kge,{scope:n,disabled:a,direction:s,orientation:r,children:o.jsx(Q_.Slot,{scope:n,children:o.jsx(st.div,{...i,"data-orientation":r,ref:d,onKeyDown:a?void 0:y})})})}),Lx="AccordionItem",[Cge,Z_]=Nw(Lx),TV=Se.forwardRef((e,t)=>{const{__scopeAccordion:n,value:a,...s}=e,r=Dw(Lx,n),i=bge(Lx,n),c=X_(n),d=To(),m=a&&i.value.includes(a)||!1,f=r.disabled||e.disabled;return o.jsx(Cge,{scope:n,open:m,disabled:f,triggerId:d,children:o.jsx(pge,{"data-orientation":r.orientation,"data-state":DV(m),...c,...s,ref:t,disabled:f,open:m,onOpenChange:p=>{p?i.onItemOpen(a):i.onItemClose(a)}})})});TV.displayName=Lx;var RV="AccordionHeader",PV=Se.forwardRef((e,t)=>{const{__scopeAccordion:n,...a}=e,s=Dw(xr,n),r=Z_(RV,n);return o.jsx(st.h3,{"data-orientation":s.orientation,"data-state":DV(r.open),"data-disabled":r.disabled?"":void 0,...a,ref:t})});PV.displayName=RV;var rR="AccordionTrigger",_V=Se.forwardRef((e,t)=>{const{__scopeAccordion:n,...a}=e,s=Dw(xr,n),r=Z_(rR,n),i=xge(rR,n),c=X_(n);return o.jsx(Q_.ItemSlot,{scope:n,children:o.jsx(fge,{"aria-disabled":r.open&&!i.collapsible||void 0,"data-orientation":s.orientation,id:r.triggerId,...c,...a,ref:t})})});_V.displayName=rR;var jV="AccordionContent",NV=Se.forwardRef((e,t)=>{const{__scopeAccordion:n,...a}=e,s=Dw(xr,n),r=Z_(jV,n),i=X_(n);return o.jsx(gge,{role:"region","aria-labelledby":r.triggerId,"data-orientation":s.orientation,...i,...a,ref:t,style:{"--radix-accordion-content-height":"var(--radix-collapsible-content-height)","--radix-accordion-content-width":"var(--radix-collapsible-content-width)",...e.style}})});NV.displayName=jV;function DV(e){return e?"open":"closed"}var Sge=kV,Age=TV,Tge=PV,MV=_V,EV=NV;const IV=Sge,J_=h.forwardRef(({className:e,...t},n)=>o.jsx(Age,{ref:n,className:X("border-b border-[color:var(--border)]",e),...t}));J_.displayName="AccordionItem";const ej=h.forwardRef(({className:e,children:t,...n},a)=>o.jsx(Tge,{className:"flex",children:o.jsxs(MV,{ref:a,className:X("flex flex-1 items-center justify-between py-4 text-sm font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180",e),...n,children:[t,o.jsx(Ic,{className:"size-4 shrink-0 text-[color:var(--muted-foreground)] transition-transform duration-200"})]})}));ej.displayName=MV.displayName;const tj=h.forwardRef(({className:e,children:t,...n},a)=>o.jsx(EV,{ref:a,className:"overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",...n,children:o.jsx("div",{className:X("pb-4 pt-0",e),children:t})}));tj.displayName=EV.displayName;const nj=h.forwardRef(({className:e,...t},n)=>o.jsx("div",{ref:n,className:X("rounded-xl border border-[color:var(--border)] bg-[color:var(--card)] text-[color:var(--card-foreground)]",e),...t}));
236nj.displayName="Card";const Rge=h.forwardRef(({className:e,...t},n)=>o.jsx("div",{ref:n,className:X("flex flex-col gap-1.5 p-6",e),...t}));Rge.displayName="CardHeader";const Pge=h.forwardRef(({className:e,...t},n)=>o.jsx("div",{ref:n,className:X("text-base font-semibold leading-none tracking-tight",e),...t}));Pge.displayName="CardTitle";const _ge=h.forwardRef(({className:e,...t},n)=>o.jsx("div",{ref:n,className:X("text-sm text-[color:var(--muted-foreground)]",e),...t}));_ge.displayName="CardDescription";const jge=h.forwardRef(({className:e,...t},n)=>o.jsx("div",{ref:n,className:X("p-6 pt-0",e),...t}));jge.displayName="CardContent";const Nge=h.forwardRef(({className:e,...t},n)=>o.jsx("div",{ref:n,className:X("flex items-center p-6 pt-0",e),...t}));Nge.displayName="CardFooter";const Dge={success:"bg-[color:var(--success-bg)] text-[color:var(--success)]",warning:"bg-[color:var(--warning-bg)] text-[color:var(--warning-foreground)]",destructive:"bg-[color:var(--destructive-bg)] text-[color:var(--destructive)]",primary:"bg-[color:var(--primary)]/10 text-[color:var(--primary)]",muted:"bg-[color:var(--muted)] text-[color:var(--muted-foreground)]",neutral:"bg-[color:var(--secondary)] text-[color:var(--secondary-foreground)]"};function jo({tone:e="muted",srPrefix:t="Status",className:n,children:a,...s}){return o.jsxs("span",{className:X("inline-flex h-6 items-center whitespace-nowrap rounded px-2 text-xs font-medium tabular-nums",Dge[e],n),...s,children:[o.jsxs("span",{className:"sr-only",children:[t,": "]}),a]})}const Mge=e=>1-Math.pow(1-e,3);function Ege(){return typeof window<"u"&&typeof window.matchMedia=="function"&&window.matchMedia("(prefers-reduced-motion: reduce)").matches}function Ho({value:e,format:t=String,duration:n=500,placeholder:a="—",minWidth:s,className:r,style:i,...c}){const d=typeof e=="number"&&Number.isFinite(e)?e:null,[m,f]=h.useState(0),p=h.useRef(0);return p.current=m,h.useEffect(()=>{if(d===null)return;if(Ege()||n<=0){f(d);return}const y=p.current;if(y===d)return;let v=0,$=null;const x=w=>{$===null&&($=w);const S=Math.min(1,(w-$)/n);f(S>=1?d:y+(d-y)*Mge(S)),S<1&&(v=requestAnimationFrame(x))};return v=requestAnimationFrame(x),()=>cancelAnimationFrame(v)},[d,n]),o.jsx("span",{className:X("inline-flex items-baseline whitespace-nowrap leading-none tabular-nums",r),style:s?{...i,minWidth:s}:i,...c,children:d===null?a:t(m)})}class rn extends Error{constructor({code:n,message:a,status:s,requestId:r}){super(a);Bo(this,"code");Bo(this,"status");Bo(this,"requestId");this.name="ApiClientError",this.code=n,this.status=s,this.requestId=r}}function n3(e){return!["GET","HEAD"].includes(e.toUpperCase())}function a3(e,t){const n=e.replace(/\/+$/,""),a=t.startsWith("/")?t:`/${t}`;return`${n}${a}`}function Ige(){return globalThis.crypto?.randomUUID?`idem_${globalThis.crypto.randomUUID()}`:`idem_${Date.now()}_${Math.random().toString(36).slice(2)}`}function OV(e){return typeof FormData<"u"&&e instanceof FormData}async function Oge(e,t){const n=new Headers(t);return new Headers(e.headers).forEach((a,s)=>n.set(s,a)),n.has("Accept")||n.set("Accept","application/json"),e.body!==void 0&&!OV(e.body)&&!n.has("Content-Type")&&n.set("Content-Type","application/json"),n}function Lge(e,t){if(!t)return;if(t.aborted){e.abort(t.reason);return}const n=()=>e.abort(t.reason);return t.addEventListener("abort",n,{once:!0}),()=>t.removeEventListener("abort",n)}async function o3(e,t,n){const a=new AbortController,s=Lge(a,t.signal??void 0);let r=!1;const i=globalThis.setTimeout(()=>{r=!0,a.abort()},n);try{if(a.signal.aborted)throw new rn({code:r?$g.requestTimeout:$g.requestAborted,message:r?"Request timed out":"Request aborted",status:XI.noResponse});return await fetch(e,{...t,signal:a.signal})}catch(c){throw c instanceof DOMException&&c.name==="AbortError"?new rn({code:r?$g.requestTimeout:$g.requestAborted,message:r?"Request timed out":"Request aborted",status:XI.noResponse}):c}finally{s?.(),globalThis.clearTimeout(i)}}async function iR(e){try{return await e.json()}catch{return}}async function s3(e){const t=await iR(e);return new rn({code:t?.error?.code??`HTTP_${e.status}`,message:t?.error?.message??(e.statusText||`Request failed with status ${e.status}`),requestId:t?.error?.requestId,status:e.status})}function r3(e){return e&&typeof e=="object"&&"data"in e?e.data:e}function Uge({baseUrl:e,timeoutMs:t=15e3,csrfPath:n="/console/auth/csrf",csrf:a=!0,getHeaders:s,onUnauthorized:r,onF
236orbidden:i}){let c=null;async function d(f,p){if(c)return c;const y=await o3(a3(e,n),{credentials:"include",headers:{Accept:"application/json"},signal:p},f);if(!y.ok)throw await s3(y);const v=r3(await iR(y));if(!v?.csrfToken)throw new rn({code:$g.csrfTokenMissing,message:"CSRF token missing",status:y.status});return c=v.csrfToken,c}async function m(f,p={}){const y=p.method??"GET",v=p.timeoutMs??t,$=await Oge(p,s?await s():void 0),x=p.csrf??a;n3(y)&&x&&$.set("X-CSRF-Token",await d(v,p.signal??void 0)),n3(y)&&(p.idempotent||p.idempotencyKey)&&!$.has("X-Idempotency-Key")&&$.set("X-Idempotency-Key",p.idempotencyKey??Ige());const w=await o3(a3(e,f),{...p,method:y,credentials:"include",headers:$,body:p.body===void 0?void 0:OV(p.body)?p.body:JSON.stringify(p.body)},v);if(!w.ok){const S=await s3(w);throw w.status===ko.unauthorized&&r?.(),w.status===ko.forbidden&&i?.(S),S}if(w.status!==ko.noContent)return r3(await iR(w))}return{request:m}}function Eg(e){const t=new Set(e);return t.has("video")?"video":t.has("image")?"image":t.has("audio")?"audio":t.has("embeddings")?"embedding":"text"}function Xl(e){if(!e)return"—";if(e>=1e6){const t=Math.round(e/1e5)/10;return`${Number.isInteger(t)?t:t.toFixed(1)}M`}return e>=1e3?`${Math.round(e/1e3)}K`:String(e)}const Bge={USD:{symbol:"$",rate:1},CNY:{symbol:"¥",rate:bF}};function Fn(e,t="USD"){if(e==null)return"—";const n=Number(e);if(!Number.isFinite(n))return"—";const a=Bge[t],r=(n*a.rate).toFixed(8).replace(/(\.\d*?[1-9])0+$|\.0+$/,"$1");return`${a.symbol}${r==="-0"?"0":r}`}function Fge(e,t="USD"){return{input:Fn(e.inputPricePer1m,t),output:Fn(e.outputPricePer1m,t)}}function zge(e,t="USD"){return e.priorityInputPricePer1m==null&&e.priorityOutputPricePer1m==null?null:`${Fn(e.priorityInputPricePer1m,t)} / ${Fn(e.priorityOutputPricePer1m,t)}`}function qge(e,t){const n=Number(e),a=Number(t);return!Number.isFinite(n)||!Number.isFinite(a)||a<=0||n>=a?null:Math.round((a-n)/a*100)}function LV(e,t,n="USD"){if(t==="video"){const s=e.videoPrice;if(!s)return{our:"—",unit:"per1m",from:!1};const r=s.unit==="per_call"?"perCall":s.unit==="per_second"?"perSec":"per1m";return{our:Fn(s.amount,n),unit:r,from:s.tiered}}if(t==="image")return{our:Fn(e.imageOutputPricePer1m,n),unit:"per1m",from:!1};const a=Fge(e,n);return{our:`${a.input} / ${a.output}`,unit:"inout",from:!1}}function Hge(e){return e==="perCall"?"models.price_perCall":e==="perSec"?"models.price_perSec":e==="per1m"?"models.price_per1m":null}function UV(e,t,n="USD"){let a,s,r;t==="video"?(a=e.videoPrice?.amount??null,s=e.videoPrice?.official??null,r=Fn(s,n)):t==="image"?(a=e.imageOutputPricePer1m,s=e.officialImageOutputPricePer1m,r=Fn(s,n)):(a=e.inputPricePer1m,s=e.officialInputPricePer1m,r=`${Fn(e.officialInputPricePer1m,n)} / ${Fn(e.officialOutputPricePer1m,n)}`);const i=qge(a,s);return i==null?null:{official:r,pct:i}}function BV(e,t){if(e>=100)return t.toLowerCase().startsWith("zh")?"免费":"Free";if(t.toLowerCase().startsWith("zh")){const n=(100-e)/10;return`打${Number.isInteger(n)?String(n):n.toFixed(1)}折`}return`${e}% OFF`}function Vge(e){if(!e)return null;const t=e.trim().split(/\s+/)[0]?.split("/")[0];return t?t.toLowerCase()==="mozilla"?Kge(e)??t:t:null}function Kge(e){const t=e.toLowerCase();return t.includes("edg/")||t.includes("edga/")||t.includes("edgios/")?"Edge":t.includes("opr/")||t.includes("opera/")?"Opera":t.includes("firefox/")||t.includes("fxios/")?"Firefox":t.includes("chrome/")||t.includes("crios/")?"Chrome":t.includes("safari/")?"Safari":null}const Gge=[{app:"messenger",tokens:["messengerforios","messengerlite","orca-"]},{app:"facebook",tokens:["fban","fbav","fb_iab","fb4a","fbios"]},{app:"instagram",tokens:["instagram"]},{app:"wechat",tokens:["micromessenger","wxwork"]},{app:"qq",tokens:["qq/"]},{app:"weibo",tokens:["weibo"]},{app:"douyin",tokens:["aweme","bytedancewebview"]},{app:"tiktok",tokens:["musical_ly","trill","tiktok"]},{app:"xiaohongshu",tokens:["xhsdiscover"]},{app:"dingtalk",tokens:["dingtalk"]},{app:"feishu",tokens:["lark/"]},{app:"alipay",tokens:["alipayclient"]},{app:"baidu",tokens:["baiduboxapp"]},{app:"twitter",tokens:["twitter"]},{app:"line",tokens:[" line/"]},{app:"snapchat",tokens:["snapchat"]},{app:"linkedin",tokens:["linkedinapp"]}];function Wge(e){return e.includes("iphone")||e.includes("ipad")||e.includes("ipod")?"ios":e.includes("android")?"android":"other"}function Yge(e){if(!e)return{inApp:!1,app:null,os:"other"};const t=e.toLowerCase(),n=Wge(t);for(const{app:a,tokens:s}of Gge)if(s.some(r=>t.includes(r)))return{inApp:!0,app:a,os:n};return{inApp:!1,app:null,os:n}}function FV(e,t){const a=(Number.isFinite(t)&&t>0?t:0)/30;if(a<=0)return{daysRemaining:null,avgDailyUsd:a};const s=Number.isFinite(e)?e:0;return s<=0?{daysRemaining:0,avgDailyUsd:a}:{daysRemaining:s/a,avgDailyUsd:a}}const Qge=/\[([^[\]]+)\]\(([^\s()]+)\)/g;function Xge(e){return e.startsWith("//")?!1:e.startsWith("/")||/^https:\/\//i.test(e)}function Zge(e){const t=[];let n=0;for(const a of e.matchAll(Qge)){const[s,r,i]=a;if(!Xge(i))continue;const c=a.index??0;c>n&&t.push({type:"text",text:e.slice(n,c)}),t.push({type:"link",label:r,url:i}),n=c+s.length}return n<e.length&&t.push({type:"text",text:e.slice(n)}),t}function Jge(e){return!e||!Number.isFinite(e)||e<=0?"—":e>=1e6?`${(e/1e6).toFixed(2)}M`:e>=1e3?`${(e/1e3).toFixed(1)}K`:String(Math.round(e))}const zV=["twitter","facebook","google","google_ads","bing","reddit","y
236outube","linkedin","github","producthunt","hackernews","partner","referral","friend","offline","newsletter","other"],ehe=["source","medium","campaign","term","content"],the=64,i3=128;function nhe(e){const t=e.toLowerCase();if(t.includes("onehop.ai")||t==="localhost"||t==="127.0.0.1")return null;const n=[[/(^|\.)(twitter\.com|x\.com|t\.co)$/,"twitter"],[/(^|\.)(facebook\.com|fb\.com|fb\.me)$/,"facebook"],[/(^|\.)google\./,"google"],[/(^|\.)bing\./,"bing"],[/(^|\.)reddit\.com$/,"reddit"],[/(^|\.)(youtube\.com|youtu\.be)$/,"youtube"],[/(^|\.)linkedin\.com$/,"linkedin"],[/(^|\.)github\.com$/,"github"],[/(^|\.)producthunt\.com$/,"producthunt"],[/(^|\.)ycombinator\.com$/,"hackernews"]];for(const[a,s]of n)if(a.test(t))return s;return null}function ahe(e){if(!e)return null;try{return nhe(new URL(e).hostname)}catch{return null}}function lR(e,t){return e.length>t?e.slice(0,t):e}const qV=/[a-z0-9-]\.[a-z]{2,}/i;function ohe(e){if(typeof e!="string")return null;const t=e.trim();return t?qV.test(t)?"partner":lR(t,the):null}function she(e){const t={};for(const[n,a]of Object.entries(e))n!=="referrer"&&(n==="source"&&typeof a=="string"&&qV.test(a)||(t[n]=a));return t}function rhe(e){return e instanceof URLSearchParams?t=>e.get(t):t=>typeof e[t]=="string"?e[t]:null}function ihe(e){if(!e)return null;try{const t=new URL(e).hostname.toLowerCase();return!t||t.includes("onehop.ai")||t==="localhost"||t==="127.0.0.1"?null:t}catch{return null}}function lhe(e){const t=rhe(e.params),n={};for(const i of ehe){const c=t(`utm_${i}`)?.trim();c&&(n[i]=lR(c,i3))}const a=t("gclid")?.trim(),s=t("fbclid")?.trim();let r=null;if(n.source)r=ohe(n.source);else if(a)r="google_ads";else if(s)r="facebook";else{const i=ahe(e.referer);i?r=i:ihe(e.referer)&&(r="referral")}return e.path?.trim()&&(n.landing=lR(e.path.trim(),i3)),{source:r,utm:she(n)}}function che(e){return e.source!==null||Object.keys(e.utm).some(t=>t!=="landing")}function or(e,t="en"){return new Intl.NumberFormat(t).format(e)}function lr(e,t="en",n="USD",a=2){return new Intl.NumberFormat(t,{style:"currency",currency:n,minimumFractionDigits:a,maximumFractionDigits:a}).format(e)}function HV(e,t="en"){return new Intl.DateTimeFormat(t,{dateStyle:"medium",timeStyle:"short"}).format(new Date(e))}const dhe=[["year",31536e3],["month",2592e3],["week",604800],["day",86400],["hour",3600],["minute",60]];function uhe(e,t="en",n=Date.now()){const a=new Date(e).getTime();if(Number.isNaN(a))return"—";const s=Math.round((a-n)/1e3),r=Math.abs(s),i=new Intl.RelativeTimeFormat(t,{numeric:"auto"});for(const[c,d]of dhe)if(r>=d)return i.format(Math.round(s/d),c);return i.format(s,"second")}function VV({text:e}){return o.jsx(o.Fragment,{children:Zge(e).map((t,n)=>t.type==="link"?o.jsx("a",{href:t.url,className:"underline underline-offset-2 hover:no-underline",target:t.url.startsWith("http")?"_blank":void 0,rel:t.url.startsWith("http")?"noopener noreferrer":void 0,children:t.label},n):o.jsx(h.Fragment,{children:t.text},n))})}const mhe={primary:"default",secondary:"outline",link:"link"},phe={warning:"bg-[color:var(--color-warning,#b45309)]",critical:"bg-[color:var(--color-destructive,#dc2626)]"};function fhe({open:e,onOpenChange:t,imageUrl:n,severity:a="info",copy:s,onNavigate:r}){const i=a==="warning"||a==="critical"?phe[a]:null;return o.jsx(Up,{open:e,onOpenChange:t,children:o.jsxs(fu,{className:"max-h-[85vh] max-w-lg overflow-y-auto !p-0",children:[i?o.jsx("div",{className:`h-1 w-full rounded-t-[inherit] ${i}`}):null,n?o.jsx("img",{src:n,alt:s.title,className:`aspect-video w-full object-cover ${i?"":"rounded-t-[inherit]"}`}):null,o.jsxs("div",{className:"p-6",children:[o.jsx(gu,{className:"text-2xl font-semibold tracking-[-0.03em]",children:s.title}),o.jsx(hu,{className:"mt-2 whitespace-pre-line text-sm text-[color:var(--muted-foreground)]",children:o.jsx(VV,{text:s.body})}),s.actions.length>0?o.jsx("div",{className:"mt-5 flex flex-wrap gap-2",children:s.actions.map((c,d)=>{const m=c.url.startsWith("http");return o.jsx(K,{asChild:!0,variant:c.variant?mhe[c.variant]:d===0?"default":"outline",children:o.jsx("a",{href:c.url,target:m?"_blank":void 0,rel:m?"noopener noreferrer":void 0,onClick:f=>{m||f.metaKey||f.ctrlKey||f.shiftKey||f.button!==0||r?.(c.url)&&(f.preventDefault(),t(!1))},children:c.label})},d)})}):null]})]})})}const KV=.97;function ghe(e){return e==null||e>=KV?"var(--heat-5)":"var(--destructive)"}function hhe(e){return e.length===0?100:e.filter(n=>n.rate==null||n.rate>=KV).length/e.length*100}function yhe({data:e,heightPx:t=16,showPct:n=!1,className:a}){const s=hhe(e),r={height:t},i={flex:"1 1 0",height:"100%",borderRadius:1};
236return o.jsx(Oc,{delayDuration:0,children:o.jsxs("span",{className:["flex w-full min-w-0 items-center gap-1.5",a].filter(Boolean).join(" "),children:[o.jsx("span",{className:"flex flex-1 min-w-0 gap-[2px]",style:r,role:"img","aria-label":"uptime last 24 hours",children:e.map(c=>o.jsxs(Ls,{children:[o.jsx(Us,{asChild:!0,children:o.jsx("span",{style:{...i,backgroundColor:ghe(c.rate)}})}),o.jsx(cs,{children:c.rate==null?`${l3(c.hour)}: No incidents`:`${l3(c.hour)}: ${(c.rate*100).toFixed(1)}%`})]},c.hour))}),n&&o.jsxs("span",{className:"font-[family-name:var(--font-mono)] text-xs tabular-nums text-[color:var(--foreground)] shrink-0",children:[s.toFixed(2),"%"]})]})})}function l3(e){const t=new Date(e);if(Number.isNaN(t.getTime()))return e;const n=t.toLocaleString("en",{month:"short"}),a=t.getDate(),s=String(t.getHours()).padStart(2,"0");return`${n} ${a} ${s}:00`}const c3="rounded-md border border-[color:var(--border)] px-2 py-0.5 font-[family-name:var(--font-mono)] text-11 text-[color:var(--muted-foreground)]";function GV({protocols:e,max:t=3,labels:n,className:a}){const s=e.slice(0,t),r=e.length-s.length;return o.jsxs("div",{className:X("flex flex-wrap gap-1.5",a),children:[s.map(i=>o.jsx("span",{className:c3,children:n?.[i]??Wd[i].shortLabel},i)),r>0?o.jsxs("span",{className:c3,children:["+",r]}):null]})}function WV({year:e,month:t}){const n=new Date(e,t,1,0,0,0,0),a=new Date(e,t+1,0,23,59,59,999);return{from:n.toISOString(),to:a.toISOString()}}function vhe(e,t,n,a){const s=e*12+t;return!!(s>n.getFullYear()*12+n.getMonth()||a&&s<a.getFullYear()*12+a.getMonth())}function bhe({viewYear:e,onViewYearChange:t,selected:n,onPick:a,minDate:s,now:r=new Date,locale:i="en"}){const c=s?s.getFullYear():r.getFullYear()-5,d=h.useMemo(()=>Array.from({length:Math.max(1,r.getFullYear()-c+1)},(f,p)=>r.getFullYear()-p),[r,c]),m=h.useMemo(()=>Array.from({length:12},(f,p)=>new Intl.DateTimeFormat(i,{month:"short"}).format(new Date(2e3,p,1))),[i]);return o.jsxs("div",{className:"flex gap-3",children:[o.jsx("ul",{className:"flex max-h-56 flex-col gap-0.5 overflow-y-auto pr-2",role:"listbox","aria-label":"Year",children:d.map(f=>o.jsx("li",{children:o.jsx("button",{type:"button",role:"option","aria-selected":f===e,onClick:()=>t(f),className:X("w-full rounded px-3 py-1.5 text-left text-sm tabular-nums hover:bg-[color:var(--muted)]",f===e&&"bg-[color:var(--muted)] font-medium"),children:f})},f))}),o.jsx("div",{className:"grid grid-cols-3 gap-1",role:"listbox","aria-label":"Month",children:m.map((f,p)=>{const y=vhe(e,p,r,s),v=n!=null&&n.year===e&&n.month===p;return o.jsx("button",{type:"button",role:"option","aria-label":f,"aria-selected":v,disabled:y,onClick:()=>a({year:e,month:p}),className:X("rounded px-4 py-1.5 text-sm hover:bg-[color:var(--muted)] disabled:pointer-events-none disabled:opacity-40",v&&"bg-[color:var(--primary)] text-[color:var(--primary-foreground)] hover:opacity-90"),children:f},f)})})]})}const d3=["last1h","today","yesterday","last7d","last30d","thisMonth","byMonth","custom","all"],xhe={last1h:"Last 1 hour",today:"Today",yesterday:"Yesterday",last7d:"Last 7 days",last30d:"Last 30 days",thisMonth:"This month",byMonth:"By month",custom:"Custom",all:"All time"},$he={cancel:"Cancel",apply:"Apply",reversedError:"Start date must be before end date.",presetsAriaLabel:"Range presets",previousMonth:"Previous month",nextMonth:"Next month"},K1=864e5;function Nm(e){const t=new Date(e);return t.setHours(0,0,0,0),t}function Dm(e){const t=new Date(e);return t.setHours(23,59,59,999),t}function nc(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")}`}function cR(e,t=new Date){switch(e){case"last1h":return{from:new Date(t.getTime()-36e5).toISOString(),to:t.toISOString()};case"today":return{from:Nm(t).toISOString(),to:Dm(t).toISOString()};case"yesterday":{const n=new Date(t.getTime()-K1);return{from:Nm(n).toISOString(),to:Dm(n).toISOString()}}case"last7d":return{from:Nm(new Date(t.getTime()-6*K1)).toISOString(),to:Dm(t).toISOString()};case"last30d":return{from:Nm(new Date(t.getTime()-29*K1)).toISOString(),to:Dm(t).toISOString()};case"thisMonth":{const n=new Date(t.getFullYear(),t.getMonth(),1);return{from:Nm(n).toISOString(),to:Dm(t).toISOString()}}case"byMonth":return WV({year:t.getFullYear(),month:t.getMonth()});
236case"custom":case"all":default:return{}}}function u3(e,t=new Date){return e.preset?e.preset==="custom"?{preset:"custom",from:e.from,to:e.to}:e.preset==="byMonth"?e.from&&e.to?{preset:"byMonth",from:e.from,to:e.to}:{preset:"byMonth",...cR("byMonth",t)}:e.preset==="all"?{preset:"all"}:{preset:e.preset,...cR(e.preset,t)}:e}function whe(e,t){return!e||!t?"incomplete":e>t?"reversed":null}function khe(e,t,n="en"){const{preset:a,from:s,to:r}=e;if(a==="byMonth")return s?new Intl.DateTimeFormat(n,{year:"numeric",month:"long"}).format(new Date(s)):t.byMonth;if(a&&a!=="custom")return t[a];if(!s&&!r)return t.all;const i=c=>{const d=new Date(c);return Number.isNaN(d.getTime())?c:new Intl.DateTimeFormat(n,{year:"numeric",month:"2-digit",day:"2-digit"}).format(d)};return s&&r?`${i(s)} ~ ${i(r)}`:i(s??r)}function YV(e,t){const a=(new Date(e,t,1).getDay()+6)%7,s=new Date(e,t,1-a);return Array.from({length:42},(r,i)=>new Date(s.getFullYear(),s.getMonth(),s.getDate()+i))}function QV(e="en"){const t=new Intl.DateTimeFormat(e,{weekday:"short"});return Array.from({length:7},(n,a)=>t.format(new Date(2021,0,4+a)))}function uh({value:e,onChange:t,presets:n=d3,defaultPreset:a,locale:s="en",labels:r,minDate:i,disabled:c=!1,className:d,triggerAriaLabel:m="Select date range",open:f,onOpenChange:p}){const y=h.useMemo(()=>({...xhe,...$he,...r}),[r]),v=h.useMemo(()=>QV(s),[s]),$=h.useMemo(()=>n.filter(Y=>d3.includes(Y)),[n]),[x,w]=h.useState(!1),S=f??x,k=h.useCallback(Y=>{w(Y),p?.(Y)},[p]),[T,R]=h.useState(void 0),[_,P]=h.useState(void 0),[j,N]=h.useState(()=>{const Y=e.from?new Date(e.from):new Date;return Number.isNaN(Y.getTime())?new Date:Y}),[I,z]=h.useState(!1),E=h.useMemo(()=>new Date,[]),L=h.useMemo(()=>{if(!i)return null;const Y=new Date(i);return Number.isNaN(Y.getTime())?null:Y},[i]),O=L?nc(L):null,V=e.preset==="custom"||T!=null,ne=I||e.preset==="byMonth";h.useEffect(()=>{S&&e.preset==="custom"&&e.from&&e.to&&(R(nc(new Date(e.from))),P(nc(new Date(e.to))))},[S,e.preset,e.from,e.to]);const q=Y=>{if(R(void 0),P(void 0),Y==="custom"){z(!1);return}if(Y==="byMonth"){const pe=e.from?new Date(e.from):E;N(new Date((Number.isNaN(pe.getTime())?E:pe).getFullYear(),(Number.isNaN(pe.getTime())?E:pe).getMonth(),1)),z(!0);return}z(!1),t({preset:Y,...cR(Y)}),k(!1)},M=(Y,pe)=>{t({preset:"byMonth",...WV({year:Y,month:pe})}),z(!1),k(!1)},F=Y=>{const pe=nc(Y);if(!T||T&&_){R(pe),P(void 0);return}pe<T?(P(T),R(pe)):P(pe)},H=whe(T,_),ee=()=>{!T||!_||H||(t({preset:"custom",from:Nm(new Date(`${T}T00:00:00`)).toISOString(),to:Dm(new Date(`${_}T00:00:00`)).toISOString()}),k(!1))},B=khe(e,y,s),G=YV(j.getFullYear(),j.getMonth()),Q=new Intl.DateTimeFormat(s,{year:"numeric",month:"long"}).format(j),de=Y=>T&&_?Y>=T&&Y<=_:Y===T;return o.jsxs(Bp,{open:S,onOpenChange:k,children:[o.jsx(Fp,{asChild:!0,children:o.jsxs("button",{type:"button",disabled:c,"aria-label":m,className:X("inline-flex h-9 max-w-full min-w-0 items-center gap-2 rounded-md border border-[color:var(--input)] bg-[color:var(--background)] px-3 text-sm text-[color:var(--foreground)] outline-none transition-colors hover:bg-[color:var(--muted)] focus-visible:border-[color:var(--primary)] focus-visible:ring-2 focus-visible:ring-[color:var(--ring)] disabled:pointer-events-none disabled:opacity-50",d),children:[o.jsx(FF,{className:"size-4 shrink-0 text-[color:var(--muted-foreground)]","aria-hidden":!0}),o.jsx("span",{className:"truncate tabular-nums",children:B}),o.jsx(Ic,{className:"size-4 shrink-0 text-[color:var(--muted-foreground)]","aria-hidden":!0})]})}),o.jsxs(yu,{align:"start",className:"flex w-[calc(100vw-2rem)] max-w-[380px] flex-col gap-0 p-0 sm:w-auto sm:max-w-none sm:flex-row",children:[o.jsx("ul",{className:"grid max-h-40 grid-cols-2 gap-0.5 overflow-y-auto border-b border-[color:var(--border)] p-2 sm:flex sm:max-h-none sm:min-w-[150px] sm:flex-col sm:border-b-0 sm:border-r",role:"listbox","aria-label":y.presetsAriaLabel,children:$.map(Y=>{const pe=e.preset===Y||Y==="custom"&&V||Y==="byMonth"&&ne;return o.jsx("li",{children:o.jsx("button",{type:"button",role:"option","aria-selected":pe,onClick:()=>q(Y),className:X("w-full rounded px-2 py-1.5 text-left text-sm hover:bg-[color:var(--muted)]",pe&&"bg-[color:var(--muted)] font-medium"),children:y[Y]})},Y)})}),ne?o.jsxs("div",{className:"flex min-w-0 flex-col gap-3 p-3",children:[o.jsx(bhe,{viewYear:j.getFullYear(),onViewYearChange:Y=>N(new Date(Y,j.getMonth(),1)),selected:e.preset==="byMonth"&&e.from?{year:new Date(e.from).getFullYear(),month:new Date(e.from).getMonth()}:null,onPick:({year:Y,month:pe})=>M(Y,pe),minDate:L,now:E,locale:s}),o.jsx("div",{className:"flex items-center justify-end pt-1",children:o.jsx(K,{variant:"ghost",size:"sm",onClick:()=>{z(!1),k(!1)},children:y.cancel})})]}):o.jsxs("div",{className:"flex min-w-0 flex-col gap-2 p-3",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx("button",{type:"button","aria-label":y.previousMonth,onClick:()=>N(Y=>new Date(Y.getFullYear(),Y.getMonth()-1,1)),className:"grid size-8 place-items-center rounded hover:bg-[color:var(--muted)]",children:o.jsx(p_,{className:"size-4","aria-hidden":!0})}),o.jsx("span",{className:"text-sm font-medium",children:Q}),o.jsx("button",{type:"button","aria-label":y.nextMonth,onClick:()=>N(Y=>
236new Date(Y.getFullYear(),Y.getMonth()+1,1)),className:"grid size-8 place-items-center rounded hover:bg-[color:var(--muted)]",children:o.jsx(J$,{className:"size-4","aria-hidden":!0})})]}),o.jsxs("div",{className:"grid grid-cols-7 gap-0.5 text-center",children:[v.map(Y=>o.jsx("span",{className:"py-1 text-xs font-medium text-[color:var(--muted-foreground)]",children:Y},Y)),G.map(Y=>{const pe=nc(Y),se=Y.getMonth()!==j.getMonth(),we=O!=null&&pe<O,me=de(pe);return o.jsx("button",{type:"button","aria-label":pe,"aria-pressed":me,disabled:we,onClick:()=>F(Y),className:X("flex h-8 w-8 items-center justify-center rounded text-sm tabular-nums hover:bg-[color:var(--muted)] disabled:pointer-events-none disabled:opacity-30",se&&"text-[color:var(--muted-foreground)] opacity-50",me&&"bg-[color:var(--primary)] text-[color:var(--primary-foreground)] hover:opacity-90"),children:Y.getDate()},pe)})]}),H==="reversed"?o.jsx("p",{className:"text-xs text-[color:var(--destructive)]",children:y.reversedError}):null,o.jsxs("div",{className:"flex items-center justify-end gap-2 pt-1",children:[o.jsx(K,{variant:"ghost",size:"sm",onClick:()=>k(!1),children:y.cancel}),o.jsx(K,{size:"sm",disabled:!T||!_||H!=null,onClick:ee,children:y.apply})]})]})]})]})}const Che={selectDate:"Select date",previousMonth:"Previous month",nextMonth:"Next month",clear:"Clear"};function She(e,t="en",n=""){if(!e)return n;const a=new Date(`${e}T00:00:00`);return Number.isNaN(a.getTime())?e:new Intl.DateTimeFormat(t,{year:"numeric",month:"2-digit",day:"2-digit"}).format(a)}function Ahe(e){if(!e)return null;const t=e instanceof Date?e:new Date(e);return Number.isNaN(t.getTime())?null:nc(t)}function fr({value:e,onChange:t,placeholder:n="",minDate:a,locale:s="en",clearLabel:r="Clear",labels:i,disabled:c=!1,className:d,open:m,onOpenChange:f}){const[p,y]=h.useState(!1),v=m??p,$=h.useCallback(N=>{y(N),f?.(N)},[f]),[x,w]=h.useState(()=>{const N=e?new Date(`${e}T00:00:00`):new Date;return Number.isNaN(N.getTime())?new Date:N});h.useEffect(()=>{if(!v||!e)return;const N=new Date(`${e}T00:00:00`);Number.isNaN(N.getTime())||w(new Date(N.getFullYear(),N.getMonth(),1))},[v,e]);const S=Ahe(a),k=YV(x.getFullYear(),x.getMonth()),T=h.useMemo(()=>({...Che,clear:r,...i}),[r,i]),R=h.useMemo(()=>QV(s),[s]),_=new Intl.DateTimeFormat(s,{year:"numeric",month:"long"}).format(x),P=She(e,s,n),j=N=>{t(nc(N)),$(!1)};return o.jsxs(Bp,{open:v,onOpenChange:$,children:[o.jsx(Fp,{asChild:!0,children:o.jsxs("button",{type:"button",disabled:c,"aria-label":T.selectDate,className:X("inline-flex h-9 w-full items-center gap-2 rounded-md border border-[color:var(--input)] bg-[color:var(--background)] px-3 text-sm text-[color:var(--foreground)] outline-none transition-colors hover:bg-[color:var(--muted)] focus-visible:border-[color:var(--primary)] focus-visible:ring-2 focus-visible:ring-[color:var(--ring)] disabled:pointer-events-none disabled:opacity-50",d),children:[o.jsx(FF,{className:"size-4 shrink-0 text-[color:var(--muted-foreground)]","aria-hidden":!0}),o.jsx("span",{className:X("min-w-0 truncate tabular-nums",!e&&"text-[color:var(--muted-foreground)]"),children:P}),o.jsx(Ic,{className:"ml-auto size-4 shrink-0 text-[color:var(--muted-foreground)]","aria-hidden":!0})]})}),o.jsx(yu,{align:"start",className:"w-auto p-0",children:o.jsxs("div",{className:"flex flex-col gap-2 p-3",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx("button",{type:"button","aria-label":T.previousMonth,onClick:()=>w(N=>new Date(N.getFullYear(),N.getMonth()-1,1)),className:"rounded p-1 hover:bg-[color:var(--muted)]",children:o.jsx(p_,{className:"size-4","aria-hidden":!0})}),o.jsx("span",{className:"text-sm font-medium",children:_}),o.jsx("button",{type:"button","aria-label":T.nextMonth,onClick:()=>w(N=>new Date(N.getFullYear(),N.getMonth()+1,1)),className:"rounded p-1 hover:bg-[color:var(--muted)]",children:o.jsx(J$,{className:"size-4","aria-hidden":!0})})]}),o.jsxs("div",{className:"grid grid-cols-7 gap-0.5 text-center",children:[R.map(N=>o.jsx("span",{className:"py-1 text-xs font-medium text-[color:var(--muted-foreground)]",children:N},N)),k.map(N=>{const I=nc(N),z=N.getMonth()!==x.getMonth(),E=S!=null&&I<S,L=I===e;return o.jsx("button",{type:"button","aria-label":I,"aria-pressed":L,disabled:E,onClick:()=>j(N),className:X("flex h-8 w-8 items-center justify-center rounded text-sm tabular-nums hover:bg-[color:var(--muted)] disabled:pointer-events-none disabled:opacity-30",z&&"text-[color:var(--muted-foreground)] opacity-50",L&&"bg-[color:var(--primary)] text-[color:var(--primary-foreground)] hover:opacity-90"),children:N.getDate()},I)})]}),e?o.jsx("div",{className:"flex items-center justify-end border-t border-[color:var(--border)] pt-2",children:o.jsx(K,{variant:"ghost",size:"sm",onClick:()=>{t(""),$(!1)},children:T.clear})}):null]})})]})}function dR(e,t){const n=new Set(t),a=new Set;for(const s of e)(s.locked||n.has(s.key))&&a.add(s.key);return a}function The(e){return e.filter(t=>t.locked||t.defaultVisible).map(t=>t.key)}function Rhe(e,t,n){const a=e.find(r=>r.key===n);if(!a||a.locked)return e.filter(r=>t.has(r.key)).map(r=>r.key);const s=new Set(t);return s.has(n)?s.delete(n):s.add(n),e.filter(r=>s.has(r.key)).map(r=>r.key)}function Phe(e){if(typeof window>"u")return null;try{const t=window.localStorage.getItem(e);if(!t)return null;const n=JSON.parse(t);return Array.isArray(n)&&n.every(a=>
236typeof a=="string")?n:null}catch{return null}}function _he(e,t){if(!(typeof window>"u"))try{window.localStorage.setItem(e,JSON.stringify(t))}catch{}}function jhe({columns:e,value:t,onChange:n,persistKey:a,triggerLabel:s="Column settings",resetLabel:r="Reset",saveLabel:i="Save",className:c}){const[d,m]=h.useState(!1),[f,p]=h.useState(()=>dR(e,t));h.useEffect(()=>{d&&p(dR(e,t))},[d,e,t]);const y=v=>{_he(a,v),n(v),m(!1)};return o.jsxs(Bp,{open:d,onOpenChange:m,children:[o.jsx(Fp,{asChild:!0,children:o.jsx(Aa,{type:"button","aria-label":s,className:c,children:o.jsx(Sse,{className:"size-4","aria-hidden":!0})})}),o.jsxs(yu,{align:"end",collisionPadding:16,className:"max-h-[min(390px,calc(100dvh-4rem))] w-[min(240px,calc(100vw-2rem))] overflow-hidden p-0",children:[o.jsx("div",{role:"group","aria-label":s,className:"max-h-[min(332px,calc(100dvh-7.5rem))] overflow-y-auto overscroll-contain p-2",children:e.map(v=>{const $=f.has(v.key),x=`${a}-col-${v.key}`;return o.jsxs("label",{htmlFor:x,className:X("flex items-center gap-2 rounded-md px-2 py-1.5 text-sm",v.locked?"cursor-not-allowed text-[color:var(--muted-foreground)]":"cursor-pointer hover:bg-[color:var(--muted)]"),children:[o.jsx(Zn,{id:x,checked:$,disabled:v.locked,onChange:()=>p(new Set(Rhe(e,f,v.key)))}),o.jsx("span",{className:"flex-1",children:v.label})]},v.key)})}),o.jsxs("div",{className:"flex shrink-0 items-center justify-end gap-2 border-t border-[color:var(--border)] p-2",children:[o.jsx(K,{type:"button",variant:"ghost",size:"sm",onClick:()=>p(new Set(The(e))),children:r}),o.jsx(K,{type:"button",size:"sm",onClick:()=>y(e.filter(v=>f.has(v.key)).map(v=>v.key)),children:i})]})]})]})}const Nhe={info:"bg-[color:var(--primary)] text-[color:var(--primary-foreground)]",warning:"bg-[color:var(--color-warning,#b45309)] text-white",critical:"bg-[color:var(--color-destructive,#b91c1c)] text-white"},Dhe={info:"text-[color:var(--primary-foreground)]",warning:"text-white",critical:"text-white"};function Mhe({banners:e,onDismiss:t}){const[n,a]=h.useState(0),[s,r]=h.useState(null),i=h.useRef(!1),c=e.length,d=c>0?n%c:0,m=e[d];h.useEffect(()=>{n>=c&&a(0)},[c,n]),h.useEffect(()=>{if(c<=1)return;const y=setInterval(()=>{i.current||a(v=>(v+1)%c)},5e3);return()=>clearInterval(y)},[c]);const f=h.useCallback(y=>{r(y),setTimeout(()=>{t(y),r(null)},150)},[t]);if(h.useEffect(()=>{const y=v=>{v.key==="Escape"&&m?.dismissible&&f(m.publicId)};return window.addEventListener("keydown",y),()=>window.removeEventListener("keydown",y)},[m,f]),c===0||!m)return null;const p=s===m.publicId;return o.jsxs("div",{role:m.severity==="critical"?"alert":"status","aria-live":m.severity==="critical"?"assertive":"polite",className:X("relative w-full overflow-hidden transition-opacity duration-150 motion-reduce:transition-none",Dhe[m.severity],p?"opacity-0":"opacity-100"),onMouseEnter:()=>{i.current=!0},onMouseLeave:()=>{i.current=!1},children:[o.jsx("div",{className:"flex transition-transform duration-500 ease-out motion-reduce:transition-none",style:{transform:`translate3d(-${d*100}%, 0, 0)`},children:e.map((y,v)=>{const $=v===d;return o.jsxs("div",{"aria-hidden":!$,className:X("flex w-full shrink-0 min-h-10 max-h-16 items-center justify-center gap-1.5 px-11 py-1.5 text-xs font-medium leading-5 sm:max-h-none sm:gap-2 sm:px-12 sm:py-2 sm:text-sm",c>1&&"pb-3 sm:pb-2",Nhe[y.severity]),children:[o.jsx("span",{className:"min-w-0 overflow-hidden [display:-webkit-box] [-webkit-box-orient:vertical] [-webkit-line-clamp:2] sm:block sm:overflow-visible",children:o.jsx(VV,{text:y.message})}),y.ctaUrl&&y.ctaText&&o.jsx("a",{href:y.ctaUrl,tabIndex:$?void 0:-1,className:"shrink-0 underline underline-offset-2 hover:no-underline",target:y.ctaUrl.startsWith("http")?"_blank":void 0,rel:y.ctaUrl.startsWith("http")?"noopener noreferrer":void 0,children:y.ctaText})]},y.publicId)})}),c>1&&o.jsx("div",{className:"absolute bottom-1 left-1/2 flex -translate-x-1/2 gap-1",children:e.map((y,v)=>o.jsx("button",{"aria-label":`Banner ${v+1} of ${c}`,onClick:()=>a(v),className:X("h-1.5 w-1.5 rounded-full bg-current transition-opacity",v===d?"opacity-100":"opacity-50")},y.publicId))}),m.dismissible&&o.jsx("button",{"aria-label":"Dismiss banner",onClick:()=>f(m.publicId),className:"absolute right-0 top-1/2 flex min-h-[44px] min-w-[44px] -translate-y-1/2 items-center justify-center opacity-80 hover:opacity-100 touch-manipulation",children:o.jsx(Fh,{className:"size-4"})})]})}const it=e=>typeof e=="string",Zf=()=>{let e,t;const n=new Promise((a,s)=>{e=a,t=s});return n.resolve=e,n.reject=t,n},m3=e=>e==null?"":String(e),Ehe=(e,t,n)=>{e.forEach(a=>{t[a]&&(n[a]=t[a])})},Ihe=/###/g,p3=e=>e&&e.includes("###")?e.replace(Ihe,"."):e,f3=e=>
vendor: 4,820 bytes, line 236
236!e||it(e),Ig=(e,t,n)=>{const a=it(t)?t.split("."):t;let s=0;for(;s<a.length-1;){if(f3(e))return{};const r=p3(a[s]);!e[r]&&n&&(e[r]=new n),Object.prototype.hasOwnProperty.call(e,r)?e=e[r]:e={},++s}return f3(e)?{}:{obj:e,k:p3(a[s])}},g3=(e,t,n)=>{const{obj:a,k:s}=Ig(e,t,Object);if(a!==void 0||t.length===1){a[s]=n;return}let r=t[t.length-1],i=t.slice(0,t.length-1),c=Ig(e,i,Object);for(;c.obj===void 0&&i.length;)r=`${i[i.length-1]}.${r}`,i=i.slice(0,i.length-1),c=Ig(e,i,Object),c?.obj&&typeof c.obj[`${c.k}.${r}`]<"u"&&(c.obj=void 0);c.obj[`${c.k}.${r}`]=n},Ohe=(e,t,n,a)=>{const{obj:s,k:r}=Ig(e,t,Object);s[r]=s[r]||[],s[r].push(n)},Ux=(e,t)=>{const{obj:n,k:a}=Ig(e,t);if(n&&Object.prototype.hasOwnProperty.call(n,a))return n[a]},Lhe=(e,t,n)=>{const a=Ux(e,n);return a!==void 0?a:Ux(t,n)},XV=(e,t,n)=>{for(const a in t)a!=="__proto__"&&a!=="constructor"&&(a in e?it(e[a])||e[a]instanceof String||it(t[a])||t[a]instanceof String?n&&(e[a]=t[a]):XV(e[a],t[a],n):e[a]=t[a]);return e},Ii=e=>e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&"),Uhe={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#x2F;"},Bhe=e=>it(e)?e.replace(/[&<>"'\/]/g,t=>Uhe[t]):e;class Fhe{constructor(t){this.capacity=t,this.regExpMap=new Map,this.regExpQueue=[]}getRegExp(t){const n=this.regExpMap.get(t);if(n!==void 0)return n;const a=new RegExp(t);return this.regExpQueue.length===this.capacity&&this.regExpMap.delete(this.regExpQueue.shift()),this.regExpMap.set(t,a),this.regExpQueue.push(t),a}}const zhe=[" ",",","?","!",";"],qhe=new Fhe(20),Hhe=(e,t,n)=>{t=t||"",n=n||"";const a=zhe.filter(i=>!t.includes(i)&&!n.includes(i));if(a.length===0)return!0;const s=qhe.getRegExp(`(${a.map(i=>i==="?"?"\\?":i).join("|")})`);let r=!s.test(e);if(!r){const i=e.indexOf(n);i>0&&!s.test(e.substring(0,i))&&(r=!0)}return r},uR=(e,t,n=".")=>{if(!e)return;if(e[t])return Object.prototype.hasOwnProperty.call(e,t)?e[t]:void 0;const a=t.split(n);let s=e;for(let r=0;r<a.length;){if(!s||typeof s!="object")return;let i,c="";for(let d=r;d<a.length;++d)if(d!==r&&(c+=n),c+=a[d],i=s[c],i!==void 0){if(["string","number","boolean"].includes(typeof i)&&d<a.length-1)continue;r+=d-r+1;break}s=i}return s},mh=e=>e?.replace(/_/g,"-"),Vhe={type:"logger",log(e){this.output("log",e)},warn(e){this.output("warn",e)},error(e){this.output("error",e)},output(e,t){console?.[e]?.apply?.(console,t)}};class Bx{constructor(t,n={}){this.init(t,n)}init(t,n={}){this.prefix=n.prefix||"i18next:",this.logger=t||Vhe,this.options=n,this.debug=n.debug}log(...t){return this.forward(t,"log","",!0)}warn(...t){return this.forward(t,"warn","",!0)}error(...t){return this.forward(t,"error","")}deprecate(...t){return this.forward(t,"warn","WARNING DEPRECATED: ",!0)}forward(t,n,a,s){return s&&!this.debug?null:(t=t.map(r=>it(r)?r.replace(/[\r\n\x00-\x1F\x7F]/g," "):r),it(t[0])&&(t[0]=`${a}${this.prefix} ${t[0]}`),this.logger[n](t))}create(t){return new Bx(this.logger,{prefix:`${this.prefix}:${t}:`,...this.options})}clone(t){return t=t||this.options,t.prefix=t.prefix||this.prefix,new Bx(this.logger,t)}}var Qr=new Bx;let Mw=class{constructor(){this.observers={}}on(t,n){return t.split(" ").forEach(a=>{this.observers[a]||(this.observers[a]=new Map);const s=this.observers[a].get(n)||0;this.observers[a].set(n,s+1)}),this}off(t,n){if(this.observers[t]){if(!n){delete this.observers[t];return}this.observers[t].delete(n)}}once(t,n){const a=(...s)=>{n(...s),this.off(t,a)};return this.on(t,a),this}emit(t,...n){this.observers[t]&&Array.from(this.observers[t].entries()).forEach(([s,r])=>{for(let i=0;i<r;i++)s(...n)}),this.observers["*"]&&Array.from(this.observers["*"].entries()).forEach(([s,r])=>{for(let i=0;i<r;i++)s(t,...n)})}};class h3 extends Mw{constructor(t,n={ns:["translation"],defaultNS:"translation"}){super(),this.data=t||{},this.options=n,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.options.ignoreJSONStructure===void 0&&(this.options.ignoreJSONStructure=!0)}addNamespaces(t){this.options.ns.includes(t)||this.options.ns.push(t)}removeNamespaces(t){const n=this.options.ns.indexOf(t);n>-1&&this.options.ns.splice(n,1)}getResource(t,n,a,s={}){const r=s.keySeparator!==void 0?s.keySeparator:this.options.keySeparator,i=s.ignoreJSONStructure!==void 0?s.ignoreJSONStructure:this.options.ignoreJSONStructure;let c;t.includes(".")?c=t.split("."):(c=[t,n],a&&(Array.isArray(a)?c.push(...a):it(a)&&r?c.push(...a.split(r)):c.push(a)));const d=Ux(this.data,c);return!d&&!n&&!a&&t.includes(".")&&(t=c[0],n=c[1],a=c.slice(2).join(".")),d||!i||!it(a)?d:uR(this.data?.[t]?.[n],a,r)}addResource(t,n,a,s,r={silent:!1}){const i=r.keySeparator!==void 0?r.keySeparator:this.options.keySeparator;let c=[t,n];a&&(c=c.concat(i?a.split(i):a)),t.includes(".")&&(c=t.split("."),s=n,n=c[1]),this.addNamespaces(n),g3(this.data,c,s),r.silent||this.emit
vendor: 1,837 bytes, line 236
236("added",t,n,a,s)}addResources(t,n,a,s={silent:!1}){for(const r in a)(it(a[r])||Array.isArray(a[r]))&&this.addResource(t,n,r,a[r],{silent:!0});s.silent||this.emit("added",t,n,a)}addResourceBundle(t,n,a,s,r,i={silent:!1,skipCopy:!1}){let c=[t,n];t.includes(".")&&(c=t.split("."),s=a,a=n,n=c[1]),this.addNamespaces(n);let d=Ux(this.data,c)||{};i.skipCopy||(a=JSON.parse(JSON.stringify(a))),s?XV(d,a,r):d={...d,...a},g3(this.data,c,d),i.silent||this.emit("added",t,n,a)}removeResourceBundle(t,n){this.hasResourceBundle(t,n)&&delete this.data[t][n],this.removeNamespaces(n),this.emit("removed",t,n)}hasResourceBundle(t,n){return this.getResource(t,n)!==void 0}getResourceBundle(t,n){return n||(n=this.options.defaultNS),this.getResource(t,n)}getDataByLanguage(t){return this.data[t]}hasLanguageSomeTranslations(t){const n=this.getDataByLanguage(t);return!!(n&&Object.keys(n)||[]).find(s=>n[s]&&Object.keys(n[s]).length>0)}toJSON(){return this.data}}var ZV={processors:{},addPostProcessor(e){this.processors[e.name]=e},handle(e,t,n,a,s){return e.forEach(r=>{t=this.processors[r]?.process(t,n,a,s)??t}),t}};const JV=Symbol("i18next/PATH_KEY");function Khe(){const e=[],t=Object.create(null);let n;return t.get=(a,s)=>(n?.revoke?.(),s===JV?e:(e.push(s),n=Proxy.revocable(a,t),n.proxy)),Proxy.revocable(Object.create(null),t).proxy}function Bd(e,t){const{[JV]:n}=e(Khe()),a=t?.keySeparator??".",s=t?.nsSeparator??":",r=t?.enableSelector==="strict";if(n.length>1&&s){const i=t?.ns,c=r?Array.isArray(i)?i:i?[i]:null:Array.isArray(i)?i:null;if(c&&(r?c:c.length>1?c.slice(1):[]).includes(n[0]))return`${n[0]}${s}${n.slice(1).join(a)}`}return n.join(a)}const G1=e=>!it(e)&&typeof e!="boolean"&&typeof e!="number";class Fx extends Mw{constructor(t,n={}){super(),Ehe(["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","
236i18nFormat","utils"],t,this),this.options=n,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.logger=Qr.create("translator"),this.checkedLoadedFor={}}changeLanguage(t){t&&(this.language=t)}exists(t,n={interpolation:{}}){const a={...n};if(t==null)return!1;const s=this.resolve(t,a);if(s?.res===void 0)return!1;const r=G1(s.res);return!(a.returnObjects===!1&&r)}extractFromKey(t,n){let a=n.nsSeparator!==void 0?n.nsSeparator:this.options.nsSeparator;a===void 0&&(a=":");const s=n.keySeparator!==void 0?n.keySeparator:this.options.keySeparator;let r=n.ns||this.options.defaultNS||[];const i=a&&t.includes(a),c=!this.options.userDefinedKeySeparator&&!n.keySeparator&&!this.options.userDefinedNsSeparator&&!n.nsSeparator&&!Hhe(t,a,s);if(i&&!c){const d=t.match(this.interpolator.nestingRegexp);if(d&&d.length>0)return{key:t,namespaces:it(r)?[r]:r};const m=t.split(a);(a!==s||a===s&&this.options.ns.includes(m[0]))&&(r=m.shift()),t=m.join(s)}return{key:t,namespaces:it(r)?[r]:r}}translate(t,n,a){let s=typeof n=="object"?{...n}:n;if(typeof s!="object"&&this.options.overloadTranslationOptionHandler&&(s=this.options.overloadTranslationOptionHandler(arguments)),typeof s=="object"&&(s={...s}),s||(s={}),t==null)return"";typeof t=="function"&&(t=Bd(t,{...this.options,...s})),Array.isArray(t)||(t=[String(t)]),t=t.map(O=>typeof O=="function"?Bd(O,{...this.options,...s}):String(O));const r=s.returnDetails!==void 0?s.returnDetails:this.options.returnDetails,i=s.keySeparator!==void 0?s.keySeparator:this.options.keySeparator,{key:c,namespaces:d}=this.extractFromKey(t[t.length-1],s),m=d[d.length-1];let f=s.nsSeparator!==void 0?s.nsSeparator:this.options.nsSeparator;f===void 0&&(f=":");const p=s.lng||this.language,y=s.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if(p?.toLowerCase()==="cimode")return y?r?{res:`${m}${f}${c}`,usedKey:c,exactUsedKey:c,usedLng:p,usedNS:m,usedParams:this.getUsedParamsDetails(s)}:`${m}${f}${c}`:r?{res:c,usedKey:c,exactUsedKey:c,usedLng:p,usedNS:m,usedParams:this.getUsedParamsDetails(s)}:c;const v=this.resolve(t,s);let $=v?.res;const x=v?.usedKey||c,w=v?.exactUsedKey||c,S=["[object Number]","[object Function]","[object RegExp]"],k=s.joinArrays!==void 0?s.joinArrays:this.options.joinArrays,T=!this.i18nFormat||this.i18nFormat.handleAsObject,R=s.count!==void 0&&!it(s.count),_=Fx.hasDefaultValue(s),P=R?this.pluralResolver.getSuffix(p,s.count,s):"",j=s.ordinal&&R?this.pluralResolver.getSuffix(p,s.count,{ordinal:!1}):"",N=R&&!s.ordinal&&s.count===0,I=N&&s[`defaultValue${this.options.pluralSeparator}zero`]||s[`defaultValue${P}`]||s[`defaultValue${j}`]||s.defaultValue;let z=$;T&&!$&&_&&(z=I);const E=G1(z),L=Object.prototype.toString.apply(z);if(T&&z&&E&&!S.includes(L)&&!(it(k)&&Array.isArray(z))){if(!s.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn("accessing an object - but returnObjects options is not enabled!");const O=this.options.returnedObjectHandler?this.options.returnedObjectHandler(x,z,{...s,ns:d}):`key '${c} (${this.language})' returned an object instead of string.`;return r?(v.res=O,v.usedParams=this.getUsedParamsDetails(s),v):O}if(i){const O=Array.isArray(z),V=O?[]:{},ne=O?w:x;for(const q in z)if(Object.prototype.hasOwnProperty.call(z,q)){const M=`${ne}${i}${q}`;_&&!$?V[q]=this.translate(M,{...s,defaultValue:G1(I)?I[q]:void 0,joinArrays:!1,ns:d}):V[q]=this.translate(M,{...s,joinArrays:!1,ns:d}),V[q]===M&&(V[q]=z[q])}$=V}}else if(T&&it(k)&&Array.isArray($))$=$.join(k),$&&($=this.extendTranslation($,t,s,a));else{let O=!1,V=!1;!this.isValidLookup($)&&_&&(O=!0,$=I),this.isValidLookup($)||(V=!0,$=c);const q=(s.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&V?void 0:$,M=_&&I!==$&&this.options.updateMissing;if(V||O||M){if(this.logger.log(M?"updateKey":"missingKey",p,m,R&&!M?`${c}${this.pluralResolver.getSuffix(p,s.count,s)}`:c,M?I:$),i){const B=this.resolve(c,{...s,keySeparator:!1});B&&B.res&&this.logger.warn("Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.")}let F=[];const H=this.languageUtils.getFallbackCodes(this.options.fallbackLng,s.lng||this.language);if(this.options.saveMissingTo==="fallback"&&H&&H[0])for(let B=0;B<H.length;B++)F.push(H[B]);else this.options.saveMissingTo==="all"?F=this.languageUtils.toResolveHierarchy(s.lng||this.language):F.push(s.lng||this.language);const ee=(B,G,Q)=>{const de=_&&Q!==$?Q:q;this.options.missingKeyHandler?this.options.missingKeyHandler(B,m,G,de,M,s):this.backendConnector?.saveMissing&&this.backendConnector.saveMissing(B,m,G,de,M,s),this.emit
vendor: 26,239 bytes, line 236
236("missingKey",B,m,G,$)};this.options.saveMissing&&(this.options.saveMissingPlurals&&R?F.forEach(B=>{const G=this.pluralResolver.getSuffixes(B,s);N&&s[`defaultValue${this.options.pluralSeparator}zero`]&&!G.includes(`${this.options.pluralSeparator}zero`)&&G.push(`${this.options.pluralSeparator}zero`),G.forEach(Q=>{ee([B],c+Q,s[`defaultValue${Q}`]||I)})}):ee(F,c,I))}$=this.extendTranslation($,t,s,v,a),V&&$===c&&this.options.appendNamespaceToMissingKey&&($=`${m}${f}${c}`),(V||O)&&this.options.parseMissingKeyHandler&&($=this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?`${m}${f}${c}`:c,O?$:void 0,s))}return r?(v.res=$,v.usedParams=this.getUsedParamsDetails(s),v):$}extendTranslation(t,n,a,s,r){if(this.i18nFormat?.parse)t=this.i18nFormat.parse(t,{...this.options.interpolation.defaultVariables,...a},a.lng||this.language||s.usedLng,s.usedNS,s.usedKey,{resolved:s});else if(!a.skipInterpolation){a.interpolation&&this.interpolator.init({...a,interpolation:{...this.options.interpolation,...a.interpolation}});const d=it(t)&&(a?.interpolation?.skipOnVariables!==void 0?a.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables);let m;if(d){const p=t.match(this.interpolator.nestingRegexp);m=p&&p.length}let f=a.replace&&!it(a.replace)?a.replace:a;if(this.options.interpolation.defaultVariables&&(f={...this.options.interpolation.defaultVariables,...f}),t=this.interpolator.interpolate(t,f,a.lng||this.language||s.usedLng,a),d){const p=t.match(this.interpolator.nestingRegexp),y=p&&p.length;m<y&&(a.nest=!1)}!a.lng&&s&&s.res&&(a.lng=this.language||s.usedLng),a.nest!==!1&&(t=this.interpolator.nest(t,(...p)=>r?.[0]===p[0]&&!a.context?(this.logger.warn(`It seems you are nesting recursively key: ${p[0]} in key: ${n[0]}`),null):this.translate(...p,n),a)),a.interpolation&&this.interpolator.reset()}const i=a.postProcess||this.options.postProcess,c=it(i)?[i]:i;return t!=null&&c?.length&&a.applyPostProcessor!==!1&&(t=ZV.handle(c,t,n,this.options&&this.options.postProcessPassResolved?{i18nResolved:{...s,usedParams:this.getUsedParamsDetails(a)},...a}:a,this)),t}resolve(t,n={}){let a,s,r,i,c;return it(t)&&(t=[t]),Array.isArray(t)&&(t=t.map(d=>typeof d=="function"?Bd(d,{...this.options,...n}):d)),t.forEach(d=>{if(this.isValidLookup(a))return;const m=this.extractFromKey(d,n),f=m.key;s=f;let p=m.namespaces;this.options.fallbackNS&&(p=p.concat(this.options.fallbackNS));const y=n.count!==void 0&&!it(n.count),v=y&&!n.ordinal&&n.count===0,$=n.context!==void 0&&(it(n.context)||typeof n.context=="number")&&n.context!=="",x=n.lngs?n.lngs:this.languageUtils.toResolveHierarchy(n.lng||this.language,n.fallbackLng);p.forEach(w=>{this.isValidLookup(a)||(c=w,!this.checkedLoadedFor[`${x[0]}-${w}`]&&this.utils?.hasLoadedNamespace&&!this.utils?.hasLoadedNamespace(c)&&(this.checkedLoadedFor[`${x[0]}-${w}`]=!0,this.logger.warn(`key "${s}" for languages "${x.join(", ")}" won't get resolved as namespace "${c}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")),x.forEach(S=>{if(this.isValidLookup(a))return;i=S;const k=[f];if(this.i18nFormat?.addLookupKeys)this.i18nFormat.addLookupKeys(k,f,S,w,n);else{let R;y&&(R=this.pluralResolver.getSuffix(S,n.count,n));const _=`${this.options.pluralSeparator}zero`,P=`${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;if(y&&(n.ordinal&&R.startsWith(P)&&k.push(f+R.replace(P,this.options.pluralSeparator)),k.push(f+R),v&&k.push(f+_)),$){const j=`${f}${this.options.contextSeparator||"_"}${n.context}`;k.push(j),y&&(n.ordinal&&R.startsWith(P)&&k.push(j+R.replace(P,this.options.pluralSeparator)),k.push(j+R),v&&k.push(j+_))}}let T;for(;T=k.pop();)this.isValidLookup(a)||(r=T,a=this.getResource(S,w,T,n))}))})}),{res:a,usedKey:s,exactUsedKey:r,usedLng:i,usedNS:c}}isValidLookup(t){return t!==void 0&&!(!this.options.returnNull&&t===null)&&!(!this.options.returnEmptyString&&t==="")}getResource(t,n,a,s={}){return this.i18nFormat?.getResource?this.i18nFormat.getResource(t,n,a,s):this.resourceStore.getResource(t,n,a,s)}getUsedParamsDetails(t={}){const n=["defaultValue","ordinal","context","replace","lng","lngs","fallbackLng","ns","keySeparator","nsSeparator","returnObjects","returnDetails","joinArrays","postProcess","interpolation"],a=t.replace&&!it(t.replace);let s=a?t.replace:t;if(a&&typeof t.count<"u"&&(s.count=t.count),this.options.interpolation.defaultVariables&&(s={...this.options.interpolation.defaultVariables,...s}),!a){s={...s};for(const r of n)delete s[r]}return s}static hasDefaultValue(t){const n="defaultValue";for(const a in t)if(Object.prototype.hasOwnProperty.call(t,a)&&a.startsWith(n)&&t[a]!==void 0)return!0;return!1}}class y3{constructor(t){this.options=t,this.supportedLngs=this.options.supportedLngs||!1,this.logger=Qr.create("languageUtils")}getScriptPartFromCode(t){if(t=mh(t),!t||!t.includes("-"))return null;const n=t.split("-");return n.length===2||(n.pop(),n[n.length-1].toLowerCase()==="x")?null:this.formatLanguageCode(n.join("-"))}getLanguagePartFromCode(t){if(t=mh(t),!t||!t.includes("-"))return t;const n=t.split("-");return this.formatLanguageCode(n[0])}formatLanguageCode(t){if(it(t)&&t.includes("-")){let n;try{n=Intl.getCanonicalLocales(t)[0]}catch{}return n&&this.options.lowerCaseLng&&(n=n.toLowerCase()),n||(this.options.lowerCaseLng?t.toLowerCase():t)}return this.options.cleanCode||this.options.lowerCaseLng?t.toLowerCase():t}isSupportedCode(t){return(this.options.load==="languageOnly"||this.options.nonExplicitSupportedLngs)&&(t=this.getLanguagePartFromCode(t)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.includes(t)}getBestMatchFromCodes(t){if(!t)return null;let n;return t.forEach(a=>{if(n)return;const s=this.formatLanguageCode(a);(!this.options.supportedLngs||this.isSupportedCode(s))&&(n=s)}),!n&&this.options.supportedLngs&&t.forEach(a=>{if(n)return;const s=this.getScriptPartFromCode(a);if(this.isSupportedCode(s))return n=s;const r=this.getLanguagePartFromCode(a);if(this.isSupportedCode(r))return n=r;n=this.options.supportedLngs.find(i=>i===r?!0:!i.includes("-")&&!r.includes("-")?!1:!!(i.includes("-")&&!r.includes("-")&&i.slice(0,i.indexOf("-"))===r||i.startsWith(r)&&r.length>1))}),n||(n=this.getFallbackCodes(this.options.fallbackLng)[0]),n}getFallbackCodes(t,n){if(!t)return[];if(typeof t=="function"&&(t=t(n)),it(t)&&(t=[t]),Array.isArray(t))return t;if(!n)return t.default||[];let a=t[n];return a||(a=t[this.getScriptPartFromCode(n)]),a||(a=t[this.formatLanguageCode(n)]),a||(a=t[this.getLanguagePartFromCode(n)]),a||(a=t.default),a||[]}toResolveHierarchy(t,n){const a=this.getFallbackCodes((n===!1?[]:n)||this.options.fallbackLng||[],t),s=[],r=i=>{i&&(this.isSupportedCode(i)?s.push(i):this.logger.warn(`rejecting language code not found in supportedLngs: ${i}`))};return it(t)&&(t.includes("-")||t.includes("_"))?(this.options.load!=="languageOnly"&&r(this.formatLanguageCode(t)),this.options.load!=="languageOnly"&&this.options.load!=="currentOnly"&&r(this.getScriptPartFromCode(t)),this.options.load!=="currentOnly"&&r(this.getLanguagePartFromCode(t))):it(t)&&r(this.formatLanguageCode(t)),a.forEach(i=>{s.includes(i)||r(this.formatLanguageCode(i))}),s}}const v3={zero:0,one:1,two:2,few:3,many:4,other:5},b3={select:e=>e===1?"one":"other",resolvedOptions:()=>({pluralCategories:["one","other"]})};class Ghe{constructor(t,n={}){this.languageUtils=t,this.options=n,this.logger=Qr.create("pluralResolver"),this.pluralRulesCache={}}clearCache(){this.pluralRulesCache={}}getRule(t,n={}){const a=mh(t==="dev"?"en":t),s=n.ordinal?"ordinal":"cardinal",r=JSON.stringify({cleanedCode:a,type:s});if(r in this.pluralRulesCache)return this.pluralRulesCache[r];let i;try{i=new Intl.PluralRules(a,{type:s})}catch{if(typeof Intl>"u")return this.logger.error("No Intl support, please use an Intl polyfill!"),b3;if(!t.match(/-|_/))return b3;const d=this.languageUtils.getLanguagePartFromCode(t);i=this.getRule(d,n)}return this.pluralRulesCache[r]=i,i}needsPlural(t,n={}){let a=this.getRule(t,n);return a||(a=this.getRule("dev",n)),a?.resolvedOptions().pluralCategories.length>1}getPluralFormsOfKey(t,n,a={}){return this.getSuffixes(t,a).map(s=>`${n}${s}`)}getSuffixes(t,n={}){let a=this.getRule(t,n);return a||(a=this.getRule("dev",n)),a?a.resolvedOptions().pluralCategories.sort((s,r)=>v3[s]-v3[r]).map(s=>`${this.options.prepend}${n.ordinal?`ordinal${this.options.prepend}`:""}${s}`):[]}getSuffix(t,n,a={}){const s=this.getRule(t,a);return s?`${this.options.prepend}${a.ordinal?`ordinal${this.options.prepend}`:""}${s.select(n)}`:(this.logger.warn(`no plural rule found for: ${t}`),this.getSuffix("dev",n,a))}}const x3=(e,t,n,a=".",s=!0)=>{let r=Lhe(e,t,n);return!r&&s&&it(n)&&(r=uR(e,n,a),r===void 0&&(r=uR(t,n,a))),r},W1=e=>e.replace(/\$/g,"$$$$");class $3{constructor(t={}){this.logger=Qr.create("interpolator"),this.options=t,this.format=t?.interpolation?.format||(n=>n),this.init(t)}init(t={}){t.interpolation||(t.interpolation={escapeValue:!0});const{escape:n,escapeValue:a,useRawValueToEscape:s,prefix:r,prefixEscaped:i,suffix:c,suffixEscaped:d,formatSeparator:m,unescapeSuffix:f,unescapePrefix:p,nestingPrefix:y,nestingPrefixEscaped:v,nestingSuffix:$,nestingSuffixEscaped:x,nestingOptionsSeparator:w,maxReplaces:S,alwaysFormat:k}=t.interpolation;this.escape=n!==void 0?n:Bhe,this.escapeValue=a!==void 0?a:!0,this.useRawValueToEscape=s!==void 0?s:!1,this.prefix=r?Ii(r):i||"{{",this.suffix=c?Ii(c):d||"}}",this.formatSeparator=m||",",this.unescapePrefix=f?"":p?Ii(p):"-",this.unescapeSuffix=this.unescapePrefix?"":f?Ii(f):"",this.nestingPrefix=y?Ii(y):v||Ii("$t("),this.nestingSuffix=$?Ii($):x||Ii(")"),this.nestingOptionsSeparator=w||",",this.maxReplaces=S||1e3,this.alwaysFormat=k!==void 0?k:!1,this.resetRegExp()}reset(){this.options&&this.init(this.options)}resetRegExp(){const t=(n,a)=>n?.source===a?(n.lastIndex=0,n):new RegExp(a,"g");this.regexp=t(this.regexp,`${this.prefix}(.+?)${this.suffix}`),this.regexpUnescape=t(this.regexpUnescape,`${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`),this.nestingRegexp=t(this.nestingRegexp,`${this.nestingPrefix}((?:[^()"']+|"[^"]*"|'[^']*'|\\((?:[^()]|"[^"]*"|'[^']*')*\\))*?)${this.nestingSuffix}`)}interpolate(t,n,a,s){let r,i,c;const d=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{},m=v=>{if(!v.includes(this.formatSeparator)){const S=x3(n,d,v,this.options.keySeparator,this.options.ignoreJSONStructure);return this.alwaysFormat?this.format(S,void 0,a,{...s,...n,interpolationkey:v}):S}const $=v.split(this.formatSeparator),x=$.shift().trim(),w=$.join(this.formatSeparator).trim();return this.format(x3(n,d,x,this.options.keySeparator,this.options.ignoreJSONStructure),w,a,{...s,...n,interpolationkey:x})};this.resetRegExp(),!this.escapeValue&&typeof t=="string"&&/\$t\([^)]*\{[^}]*\{\{/.test(t)&&this.logger.warn("nesting options string contains interpolated variables with escapeValue: false — if any of those values are attacker-controlled they can inject additional nesting options (e.g. redirect lng/ns). Sanitise untrusted input before passing it to t(), or keep escapeValue: true.");const f=s?.missingInterpolationHandler||this.options.missingInterpolationHandler,p=s?.interpolation?.skipOnVariables!==void 0?s.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:v=>W1(v)},{regex:this.regexp,safeValue:v=>this.escapeValue?W1(this.escape(v)):W1(v)}].forEach(v=>{for(c=0;r=v.regex.exec(t);){const $=r[1].trim();if(i=m($),i===void 0)if(typeof f=="function"){const w=f(t,r,s);i=it(w)?w:""}else if(s&&Object.prototype.hasOwnProperty.call(s,$))i="";else if(p){i=r[0];continue}else this.logger.warn(`missed to pass in variable ${$} for interpolating ${t}`),i="";else!it(i)&&!this.useRawValueToEscape&&(i=m3(i));const x=v.safeValue(i);if(t=t.replace(r[0],x),p?(v.regex.lastIndex+=i.length,v.regex.lastIndex-=r[0].length):v.regex.lastIndex=0,c++,c>=this.maxReplaces)break}}),t}nest(t,n,a={}){let s,r,i;const c=(d,m)=>{const f=this.nestingOptionsSeparator;if(!d.includes(f))return d;const p=d.split(new RegExp(`${Ii(f)}[ ]*{`));let y=`{${p[1]}`;d=p[0],y=this.interpolate(y,i);const v=y.match(/'/g),$=y.match(/"/g);((v?.length??0)%2===0&&!$||($?.length??0)%2!==0)&&(y=y.replace(/'/g,'"'));try{i=JSON.parse(y),m&&(i={...m,...i})}catch(x){return this.logger.warn(`failed parsing options string in nesting for key ${d}`,x),`${d}${f}${y}`}return i.defaultValue&&i.defaultValue.includes(this.prefix)&&delete i.defaultValue,d};for(;s=this.nestingRegexp.exec(t);){let d=[];i={...a},i=i.replace&&!it(i.replace)?i.replace:i,i.applyPostProcessor=!1,delete i.defaultValue;const m=/{.*}/.test(s[1])?s[1].lastIndexOf("}")+1:s[1].indexOf(this.formatSeparator);if(m!==-1&&(d=s[1].slice(m).split(this.formatSeparator).map(f=>f.trim()).filter(Boolean),s[1]=s[1].slice(0,m)),r=n(c.call(this,s[1].trim(),i),i),r&&s[0]===t&&!it(r))return r;it(r)||(r=m3(r)),r||(this.logger.warn(`missed to resolve ${s[1]} for nesting ${t}`),r=""),d.length&&(r=d.reduce((f,p)=>this.format(f,p,a.lng,{...a,interpolationkey:s[1].trim()}),r.trim())),t=t.replace(s[0],r),this.regexp.lastIndex=0}return t}}const Whe=e=>{let t=e.toLowerCase().trim();const n={};if(e.includes("(")){const a=e.split("(");t=a[0].toLowerCase().trim();const s=a[1].slice(0,-1);t==="currency"&&!s.includes(":")?n.currency||(n.currency=s.trim()):t==="relativetime"&&!s.includes(":")?n.range||(n.range=s.trim()):s.split(";").forEach(i=>{if(i){const[c,...d]=i.split(":"),m=d.join(":").trim().replace(/^'+|'+$/g,""),f=c.trim();n[f]||(n[f]=m),m==="false"&&(n[f]=!1),m==="true"&&(n[f]=!0),isNaN(m)||(n[f]=parseInt(m,10))}})}return{formatName:t,formatOptions:n}},w3=e=>{const t={};return(n,a,s)=>{let r=s;s&&s.interpolationkey&&s.formatParams&&s.formatParams[s.interpolationkey]&&s[s.interpolationkey]&&(r={...r,[s.interpolationkey]:void 0});const i=a+JSON.stringify(r);let c=t[i];return c||(c=e(mh(a),s),t[i]=c),c(n)}},Yhe=e=>(t,n,a)=>e(mh(n),a)(t);class Qhe{constructor(t={}){this.logger=Qr.create("formatter"),this.options=t,this.init(t)}init(t,n={interpolation:{}}){this.formatSeparator=n.interpolation.formatSeparator||",";const a=n.cacheInBuiltFormats?w3:Yhe;this.formats={number:a((s,r)=>{const i=new Intl.NumberFormat(s,{...r});return c=>i.format(c)}),currency:a((s,r)=>{const i=new Intl.NumberFormat(s,{...r,style:"currency"});return c=>i.format(c)}),datetime:a((s,r)=>{const i=new Intl.DateTimeFormat(s,{...r});return c=>i.format(c)}),relativetime:a((s,r)=>{const i=new Intl.RelativeTimeFormat(s,{...r});return c=>i.format(c,r.range||"day")}),list:a((s,r)=>{const i=new Intl.ListFormat(s,{...r});return c=>i.format(c)})}}add(t,n){this.formats[t.toLowerCase().trim()]=n}addCached(t,n){this.formats[t.toLowerCase().trim()]=w3(n)}format(t,n,a,s={}){if(!n||t==null)return t;const r=n.split(this.formatSeparator);if(r.length>1&&r[0].indexOf("(")>1&&!r[0].includes(")")&&r.find(c=>c.includes(")"))){const c=r.findIndex(d=>d.includes(")"));r[0]=[r[0],...r.splice(1,c)].join(this.formatSeparator)}return r.reduce((c,d)=>{const{formatName:m,formatOptions:f}=Whe(d);if(this.formats[m]){let p=c;try{const y=s?.formatParams?.[s.interpolationkey]||{},v=y.locale||y.lng||s.locale||s.lng||a;p=this.formats[m](c,v,{...f,...s,...y})}catch(y){this.logger.warn(y)}return p}else this.logger.warn(`there was no format function for ${m}`);return c},t)}}const Xhe=(e,t)=>{e.pending[t]!==void 0&&(delete e.pending[t],e.pendingCount--)};class Zhe extends Mw{constructor(t,n,a,s={}){super(),this.backend=t,this.store=n,this.services=a,this.languageUtils=a.languageUtils,this.options=s,this.logger=Qr.create("backendConnector"),this.waitingReads=[],this.maxParallelReads=s.maxParallelReads||10,this.readingCalls=0,this.maxRetries=s.maxRetries>=0?s.maxRetries:5,this.retryTimeout=s.retryTimeout>=1?s.retryTimeout:350,this.state={},this.queue=[],this.backend?.init?.(a,s.backend,s)}queueLoad(t,n,a,s){const r={},i={},c={},d={};return t.forEach(m=>{let f=!0;n.forEach(p=>{const y=`${m}|${p}`;!a.reload&&this.store.hasResourceBundle(m,p)?this.state[y]=2:this.state[y]<0||(this.state[y]===1?i[y]===void 0&&(i[y]=!0):(this.state[y]=1,f=!1,i[y]===void 0&&(i[y]=!0),r[y]===void 0&&(r[y]=!0),d[p]===void 0&&(d[p]=!0)))}),f||(c[m]=!0)}),(Object.keys(r).length||Object.keys(i).length)&&this.queue.push({pending:i,pendingCount:Object.keys(i).length,loaded:{},errors:[],callback:s}),{toLoad:Object.keys(r),pending:Object.keys(i),toLoadLanguages:Object.keys(c),toLoadNamespaces:Object.keys(d)}}loaded(t,n,a){const s=t.split("|"),r=s[0],i=s[1];n&&this.emit("failedLoading",r,i,n),!n&&a&&this.store.addResourceBundle(r,i,a,void 0,void 0,{skipCopy:!0}),this.state[t]=n?-1:2,n&&a&&(this.state[t]=0);const c={};this.queue.forEach(d=>{Ohe(d.loaded,[r],i),Xhe(d,t),n&&d.errors.push(n),d.pendingCount===0&&!d.done&&(Object.keys(d.loaded).forEach(m=>{c[m]||(c[m]={});const f=d.loaded[m];f.length&&f.forEach(p=>{c[m][p]===void 0&&(c[m][p]=!0)})}),d.done=!0,d.errors.length?d.callback(d.errors):d.callback())}),this.emit("loaded",c),this.queue=this.queue.filter(d=>!d.done)}read(t,n,a,s=0,r=this.retryTimeout,i){if(!t.length)return i(null,{});if(this.readingCalls>=this.maxParallelReads){this.waitingReads.push({lng:t,ns:n,fcName:a,tried:s,wait:r,callback:i});return}this.readingCalls++;const c=(m,f)=>{if(this.readingCalls--,this.waitingReads.length>0){const p=this.waitingReads.shift();this.read(p.lng,p.ns,p.fcName,p.tried,p.wait,p.callback)}if(m&&f&&s<this.maxRetries){setTimeout(()=>{this.read(t,n,a,s+1,r*2,i)},r);return}i(m,f)},d=this.backend[a].bind(this.backend);if(d.length===2){try{const m=d(t,n);m&&typeof m.then=="function"?m.then(f=>c(null,f)).catch(c):c(null,m)}catch(m){c(m)}return}return d(t,n,c)}prepareLoading(t,n,a={},s){if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),s&&s();it(t)&&(t=this.languageUtils.toResolveHierarchy(t)),it(n)&&(n=[n]);const r=this.queueLoad(t,n,a,s);if(!r.toLoad.length)return r.pending.length||s(),null;r.toLoad.forEach(i=>{this.loadOne(i)})}load(t,n,a){this.prepareLoading(t,n,{},a)}reload(t,n,a){this.prepareLoading(t,n,{reload:!0},a)}loadOne(t,n=""){const a=t.split("|"),s=a[0],r=a[1];this.read(s,r,"read",void 0,void 0,(i,c)=>{i&&this.logger.warn(`${n}loading namespace ${r} for language ${s} failed`,i),!i&&c&&this.logger.log(`${n}loaded namespace ${r} for language ${s}`,c),this.loaded(t,i,c)})}saveMissing(t,n,a,s,r,i={},c=()=>{}){if(this.services?.utils?.hasLoadedNamespace&&!this.services?.utils?.hasLoadedNamespace(n)){this.logger.warn(`did not save key "${a}" as the namespace "${n}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!");return}if(!(a==null||a==="")){if(this.backend?.create){const d={...i,isUpdate:r},m=this.backend.create.bind(this.backend);if(m.length<6)try{let f;m.length===5?f=m(t,n,a,s,d):f=m(t,n,a,s),f&&typeof f.then=="function"?f.then(p=>c(null,p)).catch(c):c(null,f)}catch(f){c(f)}else m(t,n,a,s,c,d)}!t||!t[0]||this.store.addResource(t[0],n,a,s)}}}const Y1=()=>({debug:!1,initAsync:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:"all",preload:!1,keySeparator:".",nsSeparator:":",pluralSeparator:"_",contextSeparator:"_",enableSelector:!1,partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:"fallback",saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!1,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:e=>{let t={};if(typeof e[1]=="object"&&(t=e[1]),it(e[1])&&(t.defaultValue=e[1]),it(e[2])&&(t.tDescription=e[2]),typeof e[2]=="object"||typeof e[3]=="object"){const n=e[3]||e[2];Object.keys(n).forEach(a=>{t[a]=n[a]})}return t},interpolation:{escapeValue:!0,prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",nestingOptionsSeparator:",",maxReplaces:1e3,skipOnVariables:!0},cacheInBuiltFormats:!0}),k3=e=>(it(e.ns)&&(e.ns=[e.ns]),it(e.fallbackLng)&&(e.fallbackLng=[e.fallbackLng]),it(e.fallbackNS)&&(e.fallbackNS=[e.fallbackNS]),e.supportedLngs&&!e.supportedLngs.includes("cimode")&&(e.supportedLngs=e.supportedLngs.concat(["cimode"])),e),lb=()=>{},Jhe=e=>{Object.getOwnPropertyNames(Object.getPrototypeOf(e)).forEach(n=>{typeof e[n]=="function"&&(e[n]=e[n].bind(e))})};class Og extends Mw{constructor(t={},n){if(super(),this.options=k3(t),this.services={},this.logger=Qr,this.modules={external:[]},Jhe(this),n&&!this.isInitialized&&!t.isClone){if(!this.options.initAsync)return this.init(t,n),this;setTimeout(()=>{this.init(t,n)},0)}}init(t={},n){this.isInitializing=!0,typeof t=="function"&&(n=t,t={}),t.defaultNS==null&&t.ns&&(it(t.ns)?t.defaultNS=t.ns:t.ns.includes("translation")||(t.defaultNS=t.ns[0]));const a=Y1();this.options={...a,...this.options,...k3(t)},this.options.interpolation={...a.interpolation,...this.options.interpolation},t.keySeparator!==void 0&&(this.options.userDefinedKeySeparator=t.keySeparator),t.nsSeparator!==void 0&&(this.options.userDefinedNsSeparator=t.nsSeparator),typeof this.options.overloadTranslationOptionHandler!="function"&&(this.options.overloadTranslationOptionHandler=a.overloadTranslationOptionHandler);const s=m=>m?typeof m=="function"?new m:m:null;if(!this.options.isClone){this.modules.logger?Qr.init(s(this.modules.logger),this.options):Qr.init(null,this.options);let m;this.modules.formatter?m=this.modules.formatter:m=Qhe;const f=new y3(this.options);this.store=new h3(this.options.resources,this.options);const p=this.services;p.logger=Qr,p.resourceStore=this.store,p.languageUtils=f,p.pluralResolver=new Ghe(f,{prepend:this.options.pluralSeparator}),m&&(p.formatter=s(m),p.formatter.init&&p.formatter.init(p,this.options),this.options.interpolation.format=p.formatter.format.bind(p.formatter)),p.interpolator=new $3(this.options),p.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},p.backendConnector=new Zhe(s(this.modules.backend),p.resourceStore,p,this.options),p.backendConnector.on("*",(y,...v)=>{this.emit(y,...v)}),this.modules.languageDetector&&(p.languageDetector=s(this.modules.languageDetector),p.languageDetector.init&&p.languageDetector.init(p,this.options.detection,this.options)),this.modules.i18nFormat&&(p.i18nFormat=s(this.modules.i18nFormat),p.i18nFormat.init&&p.i18nFormat.init(this)),this.translator=new Fx(this.services,this.options),this.translator.on("*",(y,...v)=>{this.emit(y,...v)}),this.modules.external.forEach(y=>{y.init&&y.init(this)})}if(this.format=this.options.interpolation.format,n||(n=lb),this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){const m=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);m.length>0&&m[0]!=="dev"&&(this.options.lng=m[0])}!this.services.languageDetector&&!this.options.lng&&this.logger.warn("init: no languageDetector is used and no lng is defined"),["getResource","hasResourceBundle","getResourceBundle","getDataByLanguage"].forEach(m=>{this[m]=(...f)=>this.store[m](...f)}),["addResource","addResources","addResourceBundle","removeResourceBundle"].forEach(m=>{this[m]=(...f)=>(this.store[m](...f),this)});const c=Zf(),d=()=>{const m=(f,p)=>{this.isInitializing=!1,this.isInitialized&&!this.initializedStoreOnce&&this.logger.warn("init: i18next is already initialized. You should call init just once!"),this.isInitialized=!0,this.options.isClone||this.logger.log("initialized",this.options),this.emit("initialized",this.options),c.resolve(p),n(f,p)};if((this.languages||this.isLanguageChangingTo)&&!this.isInitialized)return m(null,this.t.bind(this));this.changeLanguage(this.options.lng,m)};return this.options.resources||!this.options.initAsync?d():setTimeout(d,0),c}loadResources(t,n=lb){let a=n;const s=it(t)?t:this.language;if(typeof t=="function"&&(a=t),!this.options.resources||this.options.partialBundledLanguages){if(s?.toLowerCase()==="cimode"&&(!this.options.preload||this.options.preload.length===0))return a();const r=[],i=c=>{if(!c||c==="cimode")return;this.services.languageUtils.toResolveHierarchy(c).forEach(m=>{m!=="cimode"&&(r.includes(m)||r.push(m))})};s?i(s):this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach(d=>i(d)),this.options.preload?.forEach?.(c=>i(c)),this.services.backendConnector.load(r,this.options.ns,c=>{!c&&!this.resolvedLanguage&&this.language&&this.setResolvedLanguage(this.language),a(c)})}else a(null)}reloadResources(t,n,a){const s=Zf();return typeof t=="function"&&(a=t,t=void 0),typeof n=="function"&&(a=n,n=void 0),t||(t=this.languages),n||(n=this.options.ns),a||(a=lb),this.services.backendConnector.reload(t,n,r=>{s.resolve(),a(r)}),s}use(t){if(!t)throw new Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");if(!t.type)throw new Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");return t.type==="backend"&&(this.modules.backend=t),(t.type==="logger"||t.log&&t.warn&&t.error)&&(this.modules.logger=t),t.type==="languageDetector"&&(this.modules.languageDetector=t),t.type==="i18nFormat"&&(this.modules.i18nFormat=t),t.type==="postProcessor"&&ZV.addPostProcessor(t),t.type==="formatter"&&(this.modules.formatter=t),t.type==="3rdParty"&&this.modules.external.push(t),this}setResolvedLanguage(t){if(!(!t||!this.languages)&&!["cimode","dev"].includes(t)){for(let n=0;n<this.languages.length;n++){const a=this.languages[n];if(!["cimode","dev"].includes(a)&&this.store.hasLanguageSomeTranslations(a)){this.resolvedLanguage=a;break}}!this.resolvedLanguage&&!this.languages.includes(t)&&this.store.hasLanguageSomeTranslations(t)&&(this.resolvedLanguage=t,this.languages.unshift(t))}}changeLanguage(t,n){this.isLanguageChangingTo=t;const a=Zf();
vendor: 2,182 bytes, line 236
236this.emit("languageChanging",t);const s=c=>{this.language=c,this.languages=this.services.languageUtils.toResolveHierarchy(c),this.resolvedLanguage=void 0,this.setResolvedLanguage(c)},r=(c,d)=>{d?this.isLanguageChangingTo===t&&(s(d),this.translator.changeLanguage(d),this.isLanguageChangingTo=void 0,this.emit("languageChanged",d),this.logger.log("languageChanged",d)):this.isLanguageChangingTo=void 0,a.resolve((...m)=>this.t(...m)),n&&n(c,(...m)=>this.t(...m))},i=c=>{!t&&!c&&this.services.languageDetector&&(c=[]);const d=it(c)?c:c&&c[0],m=this.store.hasLanguageSomeTranslations(d)?d:this.services.languageUtils.getBestMatchFromCodes(it(c)?[c]:c);m&&(this.language||s(m),this.translator.language||this.translator.changeLanguage(m),this.services.languageDetector?.cacheUserLanguage?.(m)),this.loadResources(m,f=>{r(f,m)})};return!t&&this.services.languageDetector&&!this.services.languageDetector.async?i(this.services.languageDetector.detect()):!t&&this.services.languageDetector&&this.services.languageDetector.async?this.services.languageDetector.detect.length===0?this.services.languageDetector.detect().then(i):this.services.languageDetector.detect(i):i(t),a}getFixedT(t,n,a,s){const r=s?.scopeNs,i=(c,d,...m)=>{let f;typeof d!="object"?f=this.options.overloadTranslationOptionHandler([c,d].concat(m)):f={...d},f.lng=f.lng||i.lng,f.lngs=f.lngs||i.lngs;const p=f.ns!==void 0&&f.ns!==null;f.ns=f.ns||i.ns,f.keyPrefix!==""&&(f.keyPrefix=f.keyPrefix||a||i.keyPrefix);const y={...this.options,...f};Array.isArray(r)&&!p&&(y.ns=r),typeof f.keyPrefix=="function"&&(f.keyPrefix=Bd(f.keyPrefix,y));const v=this.options.keySeparator||".";let $;return f.keyPrefix&&Array.isArray(c)?$=c.map(x=>(typeof x=="function"&&(x=Bd(x,y)),`${f.keyPrefix}${v}${x}`)):(typeof c=="function"&&(c=Bd(c,y)),$=f.keyPrefix?`${f.keyPrefix}${v}${c}`:c),this.t($,f)};return it(t)?i.lng=t:i.lngs=t,i.ns=n,i.keyPrefix=a,i}t(...t){return this.translator?.translate(...t)}exists(...t){return this.translator?.exists(...t)}setDefaultNamespace(t){this.options.defaultNS=t}hasLoadedNamespace(t,n={}){if(!this.isInitialized)return this.logger.warn("hasLoadedNamespace: i18next was not initialized",this.languages),!1;
vendor: 4,559 bytes, line 236
236if(!this.languages||!this.languages.length)return this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty",this.languages),!1;const a=n.lng||this.resolvedLanguage||this.languages[0],s=this.options?this.options.fallbackLng:!1,r=this.languages[this.languages.length-1];if(a.toLowerCase()==="cimode")return!0;const i=(c,d)=>{const m=this.services.backendConnector.state[`${c}|${d}`];return m===-1||m===0||m===2};if(n.precheck){const c=n.precheck(this,i);if(c!==void 0)return c}return!!(this.hasResourceBundle(a,t)||!this.services.backendConnector.backend||this.options.resources&&!this.options.partialBundledLanguages||i(a,t)&&(!s||i(r,t)))}loadNamespaces(t,n){const a=Zf();return this.options.ns?(it(t)&&(t=[t]),t.forEach(s=>{this.options.ns.includes(s)||this.options.ns.push(s)}),this.loadResources(s=>{a.resolve(),n&&n(s)}),a):(n&&n(),Promise.resolve())}loadLanguages(t,n){const a=Zf();it(t)&&(t=[t]);const s=this.options.preload||[],r=t.filter(i=>!s.includes(i)&&this.services.languageUtils.isSupportedCode(i));return r.length?(this.options.preload=s.concat(r),this.loadResources(i=>{a.resolve(),n&&n(i)}),a):(n&&n(),Promise.resolve())}dir(t){if(t||(t=this.resolvedLanguage||(this.languages?.length>0?this.languages[0]:this.language)),!t)return"rtl";try{const s=new Intl.Locale(t);if(s&&s.getTextInfo){const r=s.getTextInfo();if(r&&r.direction)return r.direction}}catch{}const n=["ar","shu","sqr","ssh","xaa","yhd","yud","aao","abh","abv","acm","acq","acw","acx","acy","adf","ads","aeb","aec","afb","ajp","apc","apd","arb","arq","ars","ary","arz","auz","avl","ayh","ayl","ayn","ayp","bbz","pga","he","iw","ps","pbt","pbu","pst","prp","prd","ug","ur","ydd","yds","yih","ji","yi","hbo","men","xmn","fa","jpr","peo","pes","prs","dv","sam","ckb"],a=this.services?.languageUtils||new y3(Y1());return t.toLowerCase().indexOf("-latn")>1?"ltr":n.includes(a.getLanguagePartFromCode(t))||t.toLowerCase().indexOf("-arab")>1?"rtl":"ltr"}static createInstance(t={},n){const a=new Og(t,n);return a.createInstance=Og.createInstance,a}cloneInstance(t={},n=lb){const a=t.forkResourceStore;a&&delete t.forkResourceStore;const s={...this.options,...t,isClone:!0},r=new Og(s);if((t.debug!==void 0||t.prefix!==void 0)&&(r.logger=r.logger.clone(t)),["store","services","language"].forEach(c=>{r[c]=this[c]}),r.services={...this.services},r.services.utils={hasLoadedNamespace:r.hasLoadedNamespace.bind(r)},a){const c=Object.keys(this.store.data).reduce((d,m)=>(d[m]={...this.store.data[m]},d[m]=Object.keys(d[m]).reduce((f,p)=>(f[p]={...d[m][p]},f),d[m]),d),{});r.store=new h3(c,s),r.services.resourceStore=r.store}if(t.interpolation){const d={...Y1().interpolation,...this.options.interpolation,...t.interpolation},m={...s,interpolation:d};r.services.interpolator=new $3(m)}return r.translator=new Fx(r.services,s),r.translator.on("*",(c,...d)=>{r.emit(c,...d)}),r.init(s,n),r.translator.options=s,r.translator.backendConnector.services.utils={hasLoadedNamespace:r.hasLoadedNamespace.bind(r)},r}toJSON(){return{options:this.options,store:this.store,language:this.language,languages:this.languages,resolvedLanguage:this.resolvedLanguage}}}const qn=Og.createInstance();qn.createInstance;qn.dir;qn.init;qn.loadResources;qn.reloadResources;qn.use;qn.changeLanguage;qn.getFixedT;qn.t;qn.exists;qn.setDefaultNamespace;qn.hasLoadedNamespace;qn.loadNamespaces;qn.loadLanguages;var Q1,C3;function eye(){return C3||(C3=1,Q1={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0}),Q1}var tye=eye();const nye=il(tye);var aye=/\s([^'"/\s><]+?)[\s/>]|([^\s=]+)=\s?(".*?"|'.*?')/g;function S3(e){var t={type:"tag",name:"",voidElement:!1,attrs:{},children:[]},n=e.match(/<\/?([^\s]+?)[/\s>]/);if(n&&(t.name=n[1],(nye[n[1]]||e.charAt(e.length-2)==="/")&&(t.voidElement=!0),t.name.startsWith("!--"))){var a=e.indexOf("-->");return{type:"comment",comment:a!==-1?e.slice(4,a):""}}for(var s=new RegExp(aye),r=null;(r=s.exec(e))!==null;)if(r[0].trim())if(r[1]){var i=r[1].trim(),c=[i,""];i.indexOf("=")>-1&&(c=i.split("=")),t.attrs[c[0]]=c[1],s.lastIndex--}else r[2]&&(t.attrs[r[2]]=r[3].trim().substring(1,r[3].length-1));return t}var oye=/<[a-zA-Z0-9\-\!\/](?:"[^"]*"|'[^']*'|[^'">])*>/g,sye=/^\s*$/,rye=Object.create(null);function e9(e,t){switch(t.type){case"text":return e+t.content;case"tag":return e+="<"+t.name+(t.attrs?(function(n){var a=[];for(var s in n)a.push(s+'="'+n[s]+'"');return a.length?" "+a.join(" "):""})(t.attrs):"")+(t.voidElement?"/>":">"),t.voidElement?e:e+t.children.reduce(e9,"")+"</"+t.name+">";
vendor: 1,424 bytes, line 236
236case"comment":return e+"<!--"+t.comment+"-->"}}var iye={parse:function(e,t){t||(t={}),t.components||(t.components=rye);var n,a=[],s=[],r=-1,i=!1;if(e.indexOf("<")!==0){var c=e.indexOf("<");a.push({type:"text",content:c===-1?e:e.substring(0,c)})}return e.replace(oye,function(d,m){if(i){if(d!=="</"+n.name+">")return;i=!1}var f,p=d.charAt(1)!=="/",y=d.startsWith("<!--"),v=m+d.length,$=e.charAt(v);if(y){var x=S3(d);return r<0?(a.push(x),a):((f=s[r]).children.push(x),a)}if(p&&(r++,(n=S3(d)).type==="tag"&&t.components[n.name]&&(n.type="component",i=!0),n.voidElement||i||!$||$==="<"||n.children.push({type:"text",content:e.slice(v,e.indexOf("<",v))}),r===0&&a.push(n),(f=s[r-1])&&f.children.push(n),s[r]=n),(!p||n.voidElement)&&(r>-1&&(n.voidElement||n.name===d.slice(2,-1))&&(r--,n=r===-1?a:s[r]),!i&&$!=="<"&&$)){f=r===-1?a:s[r].children;var w=e.indexOf("<",v),S=e.slice(v,w===-1?void 0:w);sye.test(S)&&(S=" "),(w>-1&&r+f.length>=0||S!==" ")&&f.push({type:"text",content:S})}}),a},stringify:function(e){return e.reduce(function(t,n){return t+e9("",n)},"")}};const ex=(e,t,n,a)=>{const s=[n,{code:t,...a||{}}];if(e?.services?.logger?.forward)return e.services.logger.forward(s,"warn","react-i18next::",!0);Ro(s[0])&&(s[0]=`react-i18next:: ${s[0]}`),e?.services?.logger?.warn?e.services.logger.warn(...s):console?.warn&&console.warn(...s)},A3={},ph=(e,t,n,a)=>{Ro(n)&&A3[n]||(Ro(n)&&(A3[n]=new Date),ex(e,t,n,a))},t9=(e,t)=>
236()=>{if(e.isInitialized)t();else{const n=()=>{setTimeout(()=>{e.off("initialized",n)},0),t()};e.on("initialized",n)}},mR=(e,t,n)=>{e.loadNamespaces(t,t9(e,n))},T3=(e,t,n,a)=>{if(Ro(n)&&(n=[n]),e.options.preload&&e.options.preload.indexOf(t)>-1)return mR(e,n,a);n.forEach(s=>{e.options.ns.indexOf(s)<0&&e.options.ns.push(s)}),e.loadLanguages(t,t9(e,a))},lye=(e,t,n={})=>!t.languages||!t.languages.length?(ph(t,"NO_LANGUAGES","i18n.languages were undefined or empty",{languages:t.languages}),!0):t.hasLoadedNamespace(e,{lng:n.lng,precheck:(a,s)=>{if(n.bindI18n&&n.bindI18n.indexOf("languageChanging")>-1&&a.services.backendConnector.backend&&a.isLanguageChangingTo&&!s(a.isLanguageChangingTo,e))return!1}}),Ro=e=>typeof e=="string",Vi=e=>typeof e=="object"&&e!==null,cye=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,dye={"&amp;":"&","&#38;":"&","&lt;":"<","&#60;":"<","&gt;":">","&#62;":">","&apos;":"'","&#39;":"'","&quot;":'"',"&#34;":'"',"&nbsp;":" ","&#160;":" ","&copy;":"©","&#169;":"©","&reg;":"®","&#174;":"®","&hellip;":"…","&#8230;":"…","&#x2F;":"/","&#47;":"/"},uye=e=>dye[e],n9=e=>e.replace(cye,uye);let pR={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transWrapTextNodes:"",transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0,unescape:n9,transDefaultProps:void 0};const mye=(e={})=>{pR={...pR,...e}},aj=()=>pR;let a9;const pye=e=>{a9=e},oj=()=>a9,tx=(e,t)=>{if(!e)return!1;const n=e.props?.children??e.children;return t?n.length>0:!!n},Ag=e=>{if(!e)return[];const t=e.props?.children??e.children;return e.props?.i18nIsDynamicList?ac(t):t},fye=e=>Array.isArray(e)&&e.every(h.isValidElement),ac=e=>Array.isArray(e)?e:[e],gye=(e,t)=>{const n={...t};return n.props={...t.props,...e.props},n},hye=e=>{const t={};if(!e)return t;const n=a=>{ac(a).forEach(r=>{Ro(r)||(tx(r)?n(Ag(r)):Vi(r)&&!h.isValidElement(r)&&Object.assign(t,r))})};return n(e),t},fR=(e,t,n,a)=>{if(!e)return"";let s="";const r=ac(e),i=t?.transSupportBasicHtmlNodes?t.transKeepBasicHtmlNodesFor??[]:[];return r.forEach((c,d)=>{if(Ro(c)){s+=`${c}`;return}if(h.isValidElement(c)){const{props:m,type:f}=c,p=Object.keys(m).length,y=i.indexOf(f)>-1,v=m.children;if(!v&&y&&!p){s+=`<${f}/>`;return}if(!v&&(!y||p)||m.i18nIsDynamicList){s+=`<${d}></${d}>`;return}if(y&&p<=1){const x=Ro(v)?v:fR(v,t,n,a);s+=`<${f}>${x}</${f}>`;return}const $=fR(v,t,n,a);s+=`<${d}>${$}</${d}>`;return}if(c===null){ex(n,"TRANS_NULL_VALUE","Passed in a null value as child",{i18nKey:a});return}if(Vi(c)){const{format:m,...f}=c,p=Object.keys(f);if(p.length===1){const y=m?`${p[0]}, ${m}`:p[0];s+=`{{${y}}}`;return}ex(n,"TRANS_INVALID_OBJ","Invalid child - Object should only have keys {{ value, format }} (format is optional).",{i18nKey:a,child:c});return}ex(n,"TRANS_INVALID_VAR","Passed in a variable like {number} - pass variables for interpolation as full objects like {{number}}.",{i18nKey:a,child:c})}),s},yye=(e,t=[],n={})=>{if(!e)return e;const a=Object.keys(n),s=[...t,...a];let r="",i=0;for(;i<e.length;)if(e[i]==="<"){let c=!1;const d=e.slice(i).match(/^<\/(\d+|[a-zA-Z][a-zA-Z0-9_-]*)>/);if(d){const m=d[1];(/^\d+$/.test(m)||s.includes(m))&&(c=!0,r+=d[0],i+=d[0].length)}if(!c){const m=e.slice(i).match(/^<(\d+|[a-zA-Z][a-zA-Z0-9_-]*)(\s+[\w-]+(?:=(?:"[^"]*"|'[^']*'|[^\s>]+))?)*\s*(\/)?>/);if(m){const f=m[1];(/^\d+$/.test(f)||s.includes(f))&&(c=!0,r+=m[0],i+=m[0].length)}}c||(r+="&lt;",i+=1)}else r+=e[i],i+=1;return r},vye=(e,t,n,a,s,r,i)=>{if(n==="")return[];const c=s.transKeepBasicHtmlNodesFor||[],d=n&&new RegExp(c.map(k=>`<${k}`).join("|")).test(n);if(!e&&!t&&!d&&!i)return[n];const m=t??{},f=k=>{ac(k).forEach(R=>{Ro(R)||(tx(R)?f(Ag(R)):Vi(R)&&!h.isValidElement(R)&&Object.assign(m,R))})};f(e);const p=yye(n,c,m),y=iye.parse(`<0>${p}</0>`),v={...m,...r},$=(k,T,R)=>{const _=Ag(k),P=w(_,T.children,R);return fye(_)&&P.length===0||k.props?.i18nIsDynamicList?_:P},x=(k,T,R,_,P)=>{k.dummy?(k.children=T,R.push(h.cloneElement(k,{key:_},P?void 0:T))):R.push(...h.Children.map([k],j=>{if(j.type===h.Fragment||j.props?.i18nIsDynamicList!==void 0){const I={key:_};
236return j&&j.props&&Object.keys(j.props).forEach(z=>{z==="children"||z==="i18nIsDynamicList"||(I[z]=j.props[z])}),h.createElement(j.type,I,P?null:T)}const N={key:_};return j&&j.props&&Object.keys(j.props).forEach(I=>{I==="ref"||I==="children"||(N[I]=j.props[I])}),h.cloneElement(j,N,P?null:T)}))},w=(k,T,R)=>{const _=ac(k),P=ac(T),j={};return P.reduce((N,I,z)=>{const E=I.children?.[0]?.content&&a.services.interpolator.interpolate(I.children[0].content,v,a.language);if(I.type==="tag"){let L=_[parseInt(I.name,10)];!L&&t&&(L=t[I.name]),R.length===1&&!L&&(L=R[0][I.name]),L||(L={});const O={...I.attrs};i&&Object.keys(O).forEach(H=>{const ee=O[H];Ro(ee)&&(O[H]=n9(ee))});const V=Object.keys(O).length!==0?gye({props:O},L):L,ne=h.isValidElement(V),q=ne&&tx(I,!0)&&!I.voidElement,M=d&&Vi(V)&&V.dummy&&!ne,F=Vi(t)&&Object.hasOwnProperty.call(t,I.name);if(Ro(V)){const H=a.services.interpolator.interpolate(V,v,a.language);N.push(H)}else if(tx(V)||q){const H=$(V,I,R);x(V,H,N,z)}else if(M){const H=w(_,I.children,R);x(V,H,N,z)}else if(Number.isNaN(parseFloat(I.name)))if(F){const H=$(V,I,R);x(V,H,N,z,I.voidElement)}else if(s.transSupportBasicHtmlNodes&&c.indexOf(I.name)>-1)if(I.voidElement)N.push(h.createElement(I.name,{key:`${I.name}-${z}`}));else{const H=j[I.name]||0;j[I.name]=H+1;let ee,B=0;for(let de=0;de<_.length;de+=1){const Y=_[de];if(h.isValidElement(Y)&&Y.type===I.name){if(B===H){ee=Y;break}B+=1}}
236const G=ee?ac(Ag(ee)):_,Q=w(G,I.children,R);N.push(h.createElement(I.name,{key:`${I.name}-${z}`},Q))}else if(I.voidElement)N.push(`<${I.name} />`);else{const H=w(_,I.children,R);N.push(`<${I.name}>${H}</${I.name}>`)}else if(Vi(V)&&!ne){const H=I.children[0]?E:null;H&&N.push(H)}else x(V,E,N,z,I.children.length!==1||!E)}else if(I.type==="text"){const L=s.transWrapTextNodes,O=typeof s.unescape=="function"?s.unescape:aj().unescape,V=i?O(a.services.interpolator.interpolate(I.content,v,a.language)):a.services.interpolator.interpolate(I.content,v,a.language);L?N.push(h.createElement(L,{key:`${I.name}-${z}`},V)):N.push(V)}return N},[])},S=w([{dummy:!0,children:e||[]}],y,ac(e||[]));return Ag(S[0])},o9=(e,t,n)=>{const a=e.key||t,s=h.cloneElement(e,{key:a});if(!s.props||!s.props.children||n.indexOf(`${t}/>`)<0&&n.indexOf(`${t} />`)<0)return s;function r(){return h.createElement(h.Fragment,null,s)}return h.createElement(r,{key:a})},bye=(e,t)=>e.map((n,a)=>o9(n,a,t)),xye=(e,t)=>{const n={};return Object.keys(e).forEach(a=>{Object.assign(n,{[a]:o9(e[a],a,t)})}),n},$ye=(e,t,n,a)=>e?Array.isArray(e)?bye(e,t):Vi(e)?xye(e,t):(ph(n,"TRANS_INVALID_COMPONENTS",'<Trans /> "components" prop expects an object or array',{i18nKey:a}),null):null,wye=e=>!Vi(e)||Array.isArray(e)?!1:Object.keys(e).reduce((t,n)=>t&&Number.isNaN(Number.parseFloat(n)),!0);function kye({children:e,count:t,parent:n,i18nKey:a,context:s,tOptions:r={},values:i,defaults:c,components:d,ns:m,i18n:f,t:p,shouldUnescape:y,...v}){const $=f||oj();if(!$)return ph($,"NO_I18NEXT_INSTANCE","Trans: You need to pass in an i18next instance using i18nextReactModule",{i18nKey:a}),e;const x=p||$.t.bind($)||(ee=>ee),w={...aj(),...$.options?.react};let S=m||x.ns||$.options?.defaultNS;S=Ro(S)?[S]:S||["translation"];const{transDefaultProps:k}=w,T=k?.tOptions?{...k.tOptions,...r}:r,R=y??k?.shouldUnescape,_=k?.values?{...k.values,...i}:i,P=k?.components?{...k.components,...d}:d,j=fR(e,w,$,a),N=c||T?.defaultValue||j||w.transEmptyNodeValue||(typeof a=="function"?Bd(a):a),{hashTransKey:I}=w,z=a||(I?I(j||N):j||N);$.options?.interpolation?.defaultVariables?i=_&&Object.keys(_).length>0?{..._,...$.options.interpolation.defaultVariables}:{...$.options.interpolation.defaultVariables}:i=_;const E=hye(e);E&&typeof E.count=="number"&&t===void 0&&(t=E.count);const L=i||t!==void 0&&!$.options?.interpolation?.alwaysFormat||!e?T.interpolation:{interpolation:{...T.interpolation,prefix:"#$?",suffix:"?$#"}},O={...T,context:s||T.context,count:t,...i,...L,defaultValue:N,ns:S};let V=z?x(z,O):N;V===z&&N&&(V=N);const ne=$ye(P,V,$,a);let q=ne||e,M=null;wye(ne)&&(M=ne,q=e);const F=vye(q,M,V,$,w,O,R),H=n??w.defaultTransParent;return H?h.createElement(H,v,F):F}const Cye={type:"3rdParty",init(e){mye(e.options.react),pye(e)}},s9=h.createContext();class Sye{constructor(){this.usedNamespaces={}}addUsedNamespaces(t){t.forEach(n=>{this.usedNamespaces[n]||(this.usedNamespaces[n]=!0)})}getUsedNamespaces(){return Object.keys(this.usedNamespaces)}}function Aye({children:e,count:t,parent:n,i18nKey:a,context:s,tOptions:r={},values:i,defaults:c,components:d,ns:m,i18n:f,t:p,shouldUnescape:y,...v}){const{i18n:$,defaultNS:x}=h.useContext(s9)||{},w=f||$||oj(),S=p||w?.t.bind(w);return kye({children:e,count:t,parent:n,i18nKey:a,context:s,tOptions:r,values:i,defaults:c,components:d,ns:m||S?.ns||x||w?.options?.defaultNS,i18n:w,t:p,shouldUnescape:y,...v})}const Tye=(e,t)=>{if(Ro(t))return t;if(Vi(t)&&Ro(t.defaultValue))return t.defaultValue;if(typeof e=="function")return"";if(Array.isArray(e)){const n=e[e.length-1];return typeof n=="function"?"":n}return e},Rye={t:Tye,ready:!1},Pye=()=>()=>{},W=(e,t={})=>{const{i18n:n}=t,{i18n:a,defaultNS:s}=h.useContext(s9)||{},r=n||a||oj();r&&!r.reportNamespaces&&(r.reportNamespaces=new Sye),r||ph(r,"NO_I18NEXT_INSTANCE","useTranslation: You will need to pass in an i18next instance by using initReactI18next");const i=h.useMemo(()=>({...aj(),...r?.options?.react,...t}),[r,t]),{useSuspense:c,keyPrefix:d}=i,m=s||r?.options?.defaultNS,f=Ro(m)?[m]:m||["translation"],p=h.useMemo(()=>f,f);r?.reportNamespaces?.addUsedNamespaces?.(p);const y=h.useRef(0),v=h.useCallback(I=>{if(!r)return Pye;const{bindI18n:z,bindI18nStore:E}=i,L=()=>{y.current+=1,I()};return z&&r.on(z,L),E&&r.store.on(E,L),()=>{z&&z.split(" ").forEach(O=>r.off(O,L)),E&&E.split(" ").forEach(O=>r.store.off(O,L))}},[r,i]),$=h.useRef(),x=h.useCallback(()=>
236{if(!r)return Rye;const I=!!(r.isInitialized||r.initializedStoreOnce)&&p.every(ne=>lye(ne,r,i)),z=t.lng||r.language,E=y.current,L=$.current;if(L&&L.ready===I&&L.lng===z&&L.keyPrefix===d&&L.revision===E)return L;const V={t:r.getFixedT(z,i.nsMode==="fallback"?p:p[0],d,{scopeNs:p}),ready:I,lng:z,keyPrefix:d,revision:E};return $.current=V,V},[r,p,d,i,t.lng]),[w,S]=h.useState(0),{t:k,ready:T}=Wfe.useSyncExternalStore(v,x,x);h.useEffect(()=>{if(r&&!T&&!c){const I=()=>S(z=>z+1);t.lng?T3(r,t.lng,p,I):mR(r,p,I)}},[r,t.lng,p,T,c,w]);const R=r||{},_=h.useRef(null),P=h.useRef(),j=I=>{const z=Object.getOwnPropertyDescriptors(I);z.__original&&delete z.__original;const E=Object.create(Object.getPrototypeOf(I),z);if(!Object.prototype.hasOwnProperty.call(E,"__original"))try{Object.defineProperty(E,"__original",{value:I,writable:!1,enumerable:!1,configurable:!1})}catch{}return E},N=h.useMemo(()=>{const I=R,z=I?.language;let E=I;I&&(_.current&&_.current.__original===I?P.current!==z?(E=j(I),_.current=E,P.current=z):E=_.current:(E=j(I),_.current=E,P.current=z));const L=!T&&!c?(...V)=>(ph(r,"USE_T_BEFORE_READY","useTranslation: t was called before ready. When using useSuspense: false, make sure to check the ready flag before using t."),k(...V)):k,O=[L,E,T];return O.t=L,O.i18n=E,O.ready=T,O},[k,R,T,R.resolvedLanguage,R.language,R.languages]);if(r&&c&&!T)throw new Promise(I=>{const z=()=>I();t.lng?T3(r,t.lng,p,z):mR(r,p,z)});return N};function _ye(){const{t:e}=W(),t=h.useMemo(()=>Yge(navigator.userAgent),[]),[n,a]=h.useState(!1);if(!t.inApp)return null;const s=t.app==="wechat"?e("common.inAppBrowser.hintWechat"):e("common.inAppBrowser.hintGeneric");async function r(){try{await navigator.clipboard.writeText(window.location.href),ie.success(e("common.copied"))}catch{ie.error(e("common.copyFailed"))}}return o.jsx(Cw,{open:!n,onOpenChange:i=>!i&&a(!0),children:o.jsxs(ay,{children:[o.jsxs(Sw,{children:[o.jsx(oy,{children:e("common.inAppBrowser.title")}),o.jsx(sy,{children:o.jsx(Aye,{i18nKey:"common.inAppBrowser.description",components:{b:o.jsx("strong",{className:"font-semibold text-[color:var(--foreground)]"})}})})]}),o.jsx("p",{className:"text-13 font-medium text-[color:var(--foreground)]",children:s}),o.jsx(K,{size:"lg",className:"mt-3 w-full",onClick:()=>void r(),children:e("common.inAppBrowser.copyLink")}),o.jsx(Aw,{children:o.jsx(ry,{children:e("common.inAppBrowser.continueAnyway")})})]})})}function sj(){return"https://onehop.ai/api"}const r9="NEXT_LOCALE",i9=["en","zh-Hans"];function jye(e){return!!e&&i9.includes(e)}function Nye(e){return jye(e)?e:Xi}function Ew(){if(typeof document>"u")return Xi;const e=document.cookie.match(new RegExp(`(?:^|; )${r9}=([^;]*)`));if(e){const t=decodeURIComponent(e[1]);return Yd(t)?t:Xi}return Dye()}function Dye(){return typeof navigator>"u"?Xi:roe(navigator.languages?.length?navigator.languages:[navigator.language])}function l9(e){document.cookie=`${r9}=${e}; path=/; max-age=31536000; samesite=lax`}function c9(e){typeof document>"u"||(document.documentElement.lang=e,document.documentElement.dir=soe(e))}const Ye=Uge({baseUrl:sj(),timeoutMs:15e3,getHeaders:()=>({"Accept-Language":Ew()})}),Ht={me:["console","me"],apiKeys:["console","api-keys"],billingSummary:["console","billing","summary"],billingTopups:["console","billing","topups"],topupBonusPreview:e=>["console","billing","topup-bonus-preview",e],freeTokens:["console","free-tokens"],usageRecords:e=>["console","usage-records",e],usageRecordModels:["console","usage-records","models"],usageRecordsSummary:e=>["console","usage-records","summary",e],usageRecordsAggregate:e=>["console","usage-records","aggregate",e],usageTrends:e=>["console","usage-records","trends",e],ledger:e=>["console","billing","ledger",e],settingsProfile:["console","settings","profile"],billingAlertConfig:["console","billing","alert-config"],consoleModels:e=>["console","models",e],notifications:["console","notifications"],notificationsUnreadCount:["console","notifications","unread-count"]};function $r(e){const t=new URLSearchParams;for(const[a,s]of Object.entries(e))s!==void 0&&s!==""&&t.set(a,s);const n=t.toString();return n?`?${n}`:""}function qa(){return Ue({queryKey:Ht.me,queryFn:()=>Ye.request("/console/me"),retry:!1})}const Mye=void 0,Eye=void 0;function Iye(){const{t:e}=W(),t=qa(),n=ls(),[a,s]=h.useState(!1),r=h.useRef(null),i=n.pathname===Be.admin||n.pathname.startsWith(`${Be.admin}/`),c=n.pathname===Be.chat;return h.useEffect(()=>{if(!a||!window.Tawk_API)return;const d=t.data?.user;if(d){if(r.current===d.publicId)return;Ye.request("/console/support/tawk-credentials").then(m=>{window.Tawk_API.login?.({userId:m.userId,hash:m.hash,name:m.name,email:m.email},f=>{f&&console.warn("[tawk] login rejected",f)}),r.current=m.userId}).catch(()=>{})}else r.current&&(window.Tawk_API.logout?.(),r.current=null)},[a,t.data]),o.jsx(Ece,{propertyId:Mye,widgetId:Eye,label:e("support.liveChat"),hidden:i||c,hideOnMobile:!0,yOffset:80,onScriptReady:()=>s(!0)})}/**
237 * @license lucide-react v1.16.0 - ISC
238 *
239 * This source code is licensed under the ISC license.
240 * See the LICENSE file in the root directory of this source tree.
241 */const d9=(...e)=>
241e.filter((t,n,a)=>!!t&&t.trim()!==""&&a.indexOf(t)===n).join(" ").trim();/**
242 * @license lucide-react v1.16.0 - ISC
243 *
244 * This source code is licensed under the ISC license.
245 * See the LICENSE file in the root directory of this source tree.
246 */const Oye=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase();/**
247 * @license lucide-react v1.16.0 - ISC
248 *
249 * This source code is licensed under the ISC license.
250 * See the LICENSE file in the root directory of this source tree.
251 */const Lye=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(t,n,a)=>a?a.toUpperCase():n.toLowerCase());/**
252 * @license lucide-react v1.16.0 - ISC
253 *
254 * This source code is licensed under the ISC license.
255 * See the LICENSE file in the root directory of this source tree.
256 */const R3=e=>{const t=Lye(e);return t.charAt(0).toUpperCase()+t.slice(1)};/**
257 * @license lucide-react v1.16.0 - ISC
258 *
259 * This source code is licensed under the ISC license.
260 * See the LICENSE file in the root directory of this source tree.
261 */var X1={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};/**
262 * @license lucide-react v1.16.0 - ISC
263 *
264 * This source code is licensed under the ISC license.
265 * See the LICENSE file in the root directory of this source tree.
266 */const Uye=e=>{for(const t in e)if(t.startsWith("aria-")||t==="role"||t==="title")return!0;return!1},Bye=h.createContext({}),Fye=()=>h.useContext(Bye),zye=h.forwardRef(({color:e,size:t,strokeWidth:n,absoluteStrokeWidth:a,className:s="",children:r,iconNode:i,...c},d)=>{const{size:m=24,strokeWidth:f=2,absoluteStrokeWidth:p=!1,color:y="currentColor",className:v=""}=Fye()??{},$=a??p?Number(n??f)*24/Number(t??m):n??f;return h.createElement("svg",{ref:d,...X1,width:t??m??X1.width,height:t??m??X1.height,stroke:e??y,strokeWidth:$,className:d9("lucide",v,s),...!r&&!Uye(c)&&{"aria-hidden":"true"},...c},[...i.map(([x,w])=>h.createElement(x,w)),...Array.isArray(r)?r:[r]])});/**
267 * @license lucide-react v1.16.0 - ISC
268 *
269 * This source code is licensed under the ISC license.
270 * See the LICENSE file in the root directory of this source tree.
271 */const Ce=(e,t)=>{const n=h.forwardRef(({className:a,...s},r)=>h.createElement(zye,{ref:r,iconNode:t,className:d9(`lucide-${Oye(R3(e))}`,`lucide-${e}`,a),...s}));return n.displayName=R3(e),n};/**
272 * @license lucide-react v1.16.0 - ISC
273 *
274 * This source code is licensed under the ISC license.
275 * See the LICENSE file in the root directory of this source tree.
276 */const qye=[["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",key:"169zse"}]],u9=Ce("activity",qye);/**
277 * @license lucide-react v1.16.0 - ISC
278 *
279 * This source code is licensed under the ISC license.
280 * See the LICENSE file in the root directory of this source tree.
281 */const Hye=[["path",{d:"M12 5v14",key:"s699le"}],["path",{d:"m19 12-7 7-7-7",key:"1idqje"}]],m9=Ce("arrow-down",Hye);/**
282 * @license lucide-react v1.16.0 - ISC
283 *
284 * This source code is licensed under the ISC license.
285 * See the LICENSE file in the root directory of this source tree.
286 */const Vye=[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]],Iw=Ce("arrow-left",Vye);/**
287 * @license lucide-react v1.16.0 - ISC
288 *
289 * This source code is licensed under the ISC license.
290 * See the LICENSE file in the root directory of this source tree.
291 */const Kye=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]],p9=Ce("arrow-right",Kye);/**
292 * @license lucide-react v1.16.0 - ISC
293 *
294 * This source code is licensed under the ISC license.
295 * See the LICENSE file in the root directory of this source tree.
296 */const Gye=[["path",{d:"m21 16-4 4-4-4",key:"f6ql7i"}],["path",{d:"M17 20V4",key:"1ejh1v"}],["path",{d:"m3 8 4-4 4 4",key:"11wl7u"}],["path",{d:"M7 4v16",key:"1glfcx"}]],Wye=Ce("arrow-up-down",Gye);/**
297 * @license lucide-react v1.16.0 - ISC
298 *
299 * This source code is licensed under the ISC license.
300 * See the LICENSE file in the root directory of this source tree.
301 */const Yye=[["path",{d:"m18 9-6-6-6 6",key:"kcunyi"}],["path",{d:"M12 3v14",key:"7cf3v8"}],["path",{d:"M5 21h14",key:"11awu3"}]],Qye=Ce("arrow-up-from-line",Yye);/**
302 * @license lucide-react v1.16.0 - ISC
303 *
304 * This source code is licensed under the ISC license.
305 * See the LICENSE file in the root directory of this source tree.
306 */const Xye=[["path",{d:"M7 7h10v10",key:"1tivn9"}],["path",{d:"M7 17 17 7",key:"1vkiza"}]],f9=Ce("arrow-up-right",Xye);/**
307 * @license lucide-react v1.16.0 - ISC
308 *
309 * This source code is licensed under the ISC license.
310 * See the LICENSE file in the root directory of this source tree.
311 */const Zye=[["path",{d:"m5 12 7-7 7 7",key:"hav0vg"}],["path",{d:"M12 19V5",key:"x0mq9r"}]],g9=Ce("arrow-up",Zye);/**
312 * @license lucide-react v1.16.0 - ISC
313 *
314 * This source code is licensed under the ISC license.
315 * See the LICENSE file in the root directory of this source tree.
316 */const Jye=[["path",{d:"M2 10v3",key:"1fnikh"}],["path",{d:"M6 6v11",key:"11sgs0"}],["path",{d:"M10 3v18",key:"yhl04a"}],["path",{d:"M14 8v7",key:"3a1oy3"}],["path",{d:"M18 5v13",key:"123xd1"}],["path",{d:"M22 10v3",key:"154ddg"}]],eve=Ce("audio-lines",Jye);/**
317 * @license lucide-react v1.16.0 - ISC
318 *
319 * This source code is licensed under the ISC license.
320 * See the LICENSE file in the root directory of this source tree.
321 */const tve=[["path",{d:"M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z",key:"3c2336"}],["path",{d:"M16 8h-6a2 2 0 1 0 0 4h4a2 2 0 1 1 0 4H8",key:"1h4pet"}],["path",{d:"M12 18V6",key:"zqpxq5"}]],nve=Ce("badge-dollar-sign",tve);/**
322 * @license lucide-react v1.16.0 - ISC
323 *
324 * This source code is licensed under the ISC license.
325 * See the LICENSE file in the root directory of this source tree.
326 */const ave=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M4.929 4.929 19.07 19.071",key:"196cmz"}]],h9=Ce("ban",ave);/**
327 * @license lucide-react v1.16.0 - ISC
328 *
329 * This source code is licensed under the ISC license.
330 * See the LICENSE file in the root directory of this source tree.
331 */const ove=[["path",{d:"M10.268 21a2 2 0 0 0 3.464 0",key:"vwvbt9"}],["path",{d:"M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326",key:"11g9vi"}]],rj=Ce("bell",ove);/**
332 * @license lucide-react v1.16.0 - ISC
333 *
334 * This source code is licensed under the ISC license.
335 * See the LICENSE file in the root directory of this source tree.
336 */const sve=[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]],rve=Ce("book-open",sve);/**
337 * @license lucide-react v1.16.0 - ISC
338 *
339 * This source code is licensed under the ISC license.
340 * See the LICENSE file in the root directory of this source tree.
341 */const ive=[["path",{d:"M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z",key:"lc1i9w"}],["path",{d:"m7 16.5-4.74-2.85",key:"1o9zyk"}],["path",{d:"m7 16.5 5-3",key:"va8pkn"}],["path",{d:"M7 16.5v5.17",key:"jnp8gn"}],["path",{d:"M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z",key:"8zsnat"}],["path",{d:"m17 16.5-5-3",key:"8arw3v"}],["path",{d:"m17 16.5 4.74-2.85",key:"8rfmw"}],["path",{d:"M17 16.5v5.17",key:"k6z78m"}],["path",{d:"M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z",key:"1xygjf"}],["path",{d:"M12 8 7.26 5.15",key:"1vbdud"}],["path",{d:"m12 8 4.74-2.85",key:"3rx089"}],["path",{d:"M12 13.5V8",key:"1io7kd"}]],y9=Ce("boxes",ive);/**
342 * @license lucide-react v1.16.0 - ISC
343 *
344 * This source code is licensed under the ISC license.
345 * See the LICENSE file in the root directory of this source tree.
346 */const lve=[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16",key:"c24i48"}],["path",{d:"M18 17V9",key:"2bz60n"}],["path",{d:"M13 17V5",key:"1frdt8"}],["path",{d:"M8 17v-3",key:"17ska0"}]],cve=Ce("chart-column",lve);
346/**
347 * @license lucide-react v1.16.0 - ISC
348 *
349 * This source code is licensed under the ISC license.
350 * See the LICENSE file in the root directory of this source tree.
351 */const dve=[["path",{d:"M18 6 7 17l-5-5",key:"116fxf"}],["path",{d:"m22 10-7.5 7.5L13 16",key:"ke71qq"}]],uve=Ce("check-check",dve);/**
352 * @license lucide-react v1.16.0 - ISC
353 *
354 * This source code is licensed under the ISC license.
355 * See the LICENSE file in the root directory of this source tree.
356 */const mve=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],cy=Ce("check",mve);/**
357 * @license lucide-react v1.16.0 - ISC
358 *
359 * This source code is licensed under the ISC license.
360 * See the LICENSE file in the root directory of this source tree.
361 */const pve=[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]],zc=Ce("chevron-down",pve);/**
362 * @license lucide-react v1.16.0 - ISC
363 *
364 * This source code is licensed under the ISC license.
365 * See the LICENSE file in the root directory of this source tree.
366 */const fve=[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]],v9=Ce("chevron-left",fve);/**
367 * @license lucide-react v1.16.0 - ISC
368 *
369 * This source code is licensed under the ISC license.
370 * See the LICENSE file in the root directory of this source tree.
371 */const gve=[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]],gR=Ce("chevron-right",gve);/**
372 * @license lucide-react v1.16.0 - ISC
373 *
374 * This source code is licensed under the ISC license.
375 * See the LICENSE file in the root directory of this source tree.
376 */const hve=[["path",{d:"m7 15 5 5 5-5",key:"1hf1tw"}],["path",{d:"m7 9 5-5 5 5",key:"sgt6xg"}]],yve=Ce("chevrons-up-down",hve);/**
377 * @license lucide-react v1.16.0 - ISC
378 *
379 * This source code is licensed under the ISC license.
380 * See the LICENSE file in the root directory of this source tree.
381 */const vve=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]],bve=Ce("circle-check",vve);/**
382 * @license lucide-react v1.16.0 - ISC
383 *
384 * This source code is licensed under the ISC license.
385 * See the LICENSE file in the root directory of this source tree.
386 */const xve=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M16 8h-6a2 2 0 1 0 0 4h4a2 2 0 1 1 0 4H8",key:"1h4pet"}],["path",{d:"M12 18V6",key:"zqpxq5"}]],$ve=Ce("circle-dollar-sign",xve);/**
387 * @license lucide-react v1.16.0 - ISC
388 *
389 * This source code is licensed under the ISC license.
390 * See the LICENSE file in the root directory of this source tree.
391 */const wve=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"10",x2:"10",y1:"15",y2:"9",key:"c1nkhi"}],["line",{x1:"14",x2:"14",y1:"15",y2:"9",key:"h65svq"}]],b9=Ce("circle-pause",wve);/**
392 * @license lucide-react v1.16.0 - ISC
393 *
394 * This source code is licensed under the ISC license.
395 * See the LICENSE file in the root directory of this source tree.
396 */const kve=[["path",{d:"M9 9.003a1 1 0 0 1 1.517-.859l4.997 2.997a1 1 0 0 1 0 1.718l-4.997 2.997A1 1 0 0 1 9 14.996z",key:"kmsa83"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],x9=Ce("circle-play",kve);/**
397 * @license lucide-react v1.16.0 - ISC
398 *
399 * This source code is licensed under the ISC license.
400 * See the LICENSE file in the root directory of this source tree.
401 */const Cve=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]],P3=Ce("circle-x",Cve);/**
402 * @license lucide-react v1.16.0 - ISC
403 *
404 * This source code is licensed under the ISC license.
405 * See the LICENSE file in the root directory of this source tree.
406 */const Sve=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 6v6l4 2",key:"mmk7yg"}]],Ave=Ce("clock",Sve);/**
407 * @license lucide-react v1.16.0 - ISC
408 *
409 * This source code is licensed under the ISC license.
410 * See the LICENSE file in the root directory of this source tree.
411 */const Tve=[["path",{d:"M13.744 17.736a6 6 0 1 1-7.48-7.48",key:"bq4yh3"}],["path",{d:"M15 6h1v4",key:"11y1tn"}],["path",{d:"m6.134 14.768.866-.5 2 3.464",key:"17snzx"}],["circle",{cx:"16",cy:"8",r:"6",key:"14bfc9"}]],$9=Ce("coins",Tve);/**
412 * @license lucide-react v1.16.0 - ISC
413 *
414 * This source code is licensed under the ISC license.
415 * See the LICENSE file in the root directory of this source tree.
416 */const Rve=[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]],Ow=Ce("copy",Rve);/**
417 * @license lucide-react v1.16.0 - ISC
418 *
419 * This source code is licensed under the ISC license.
420 * See the LICENSE file in the root directory of this source tree.
421 */const Pve=[["rect",{width:"20",height:"14",x:"2",y:"5",rx:"2",key:"ynyp8z"}],["line",{x1:"2",x2:"22",y1:"10",y2:"10",key:"1b3vmo"}]],Lw=Ce("credit-card",Pve);/**
422 * @license lucide-react v1.16.0 - ISC
423 *
424 * This source code is licensed under the ISC license.
425 * See the LICENSE file in the root directory of this source tree.
426 */const _ve=[["line",{x1:"12",x2:"12",y1:"2",y2:"22",key:"7eqyqh"}],["path",{d:"M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6",key:"1b0p4s"}]],hR=Ce("dollar-sign",_ve);
426/**
427 * @license lucide-react v1.16.0 - ISC
428 *
429 * This source code is licensed under the ISC license.
430 * See the LICENSE file in the root directory of this source tree.
431 */const jve=[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]],$u=Ce("download",jve);/**
432 * @license lucide-react v1.16.0 - ISC
433 *
434 * This source code is licensed under the ISC license.
435 * See the LICENSE file in the root directory of this source tree.
436 */const Nve=[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"12",cy:"5",r:"1",key:"gxeob9"}],["circle",{cx:"12",cy:"19",r:"1",key:"lyex9k"}]],w9=Ce("ellipsis-vertical",Nve);/**
437 * @license lucide-react v1.16.0 - ISC
438 *
439 * This source code is licensed under the ISC license.
440 * See the LICENSE file in the root directory of this source tree.
441 */const Dve=[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"19",cy:"12",r:"1",key:"1wjl8i"}],["circle",{cx:"5",cy:"12",r:"1",key:"1pcz8c"}]],Mve=Ce("ellipsis",Dve);/**
442 * @license lucide-react v1.16.0 - ISC
443 *
444 * This source code is licensed under the ISC license.
445 * See the LICENSE file in the root directory of this source tree.
446 */const Eve=[["path",{d:"m15 15 6 6",key:"1s409w"}],["path",{d:"m15 9 6-6",key:"ko1vev"}],["path",{d:"M21 16v5h-5",key:"1ck2sf"}],["path",{d:"M21 8V3h-5",key:"1qoq8a"}],["path",{d:"M3 16v5h5",key:"1t08am"}],["path",{d:"m3 21 6-6",key:"wwnumi"}],["path",{d:"M3 8V3h5",key:"1ln10m"}],["path",{d:"M9 9 3 3",key:"v551iv"}]],nx=Ce("expand",Eve);/**
447 * @license lucide-react v1.16.0 - ISC
448 *
449 * This source code is licensed under the ISC license.
450 * See the LICENSE file in the root directory of this source tree.
451 */const Ive=[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]],dy=Ce("external-link",Ive);/**
452 * @license lucide-react v1.16.0 - ISC
453 *
454 * This source code is licensed under the ISC license.
455 * See the LICENSE file in the root directory of this source tree.
456 */const Ove=[["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",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],k9=Ce("eye",Ove);/**
457 * @license lucide-react v1.16.0 - ISC
458 *
459 * This source code is licensed under the ISC license.
460 * See the LICENSE file in the root directory of this source tree.
461 */const Lve=[["path",{d:"M16 22h2a2 2 0 0 0 2-2V8a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 14 2H6a2 2 0 0 0-2 2v2.85",key:"ryk6xj"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M8 14v2.2l1.6 1",key:"6m4bie"}],["circle",{cx:"8",cy:"16",r:"6",key:"10v15b"}]],Uve=Ce("file-clock",Lve);/**
462 * @license lucide-react v1.16.0 - ISC
463 *
464 * This source code is licensed under the ISC license.
465 * See the LICENSE file in the root directory of this source tree.
466 */const Bve=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M7 3v18",key:"bbkbws"}],["path",{d:"M3 7.5h4",key:"zfgn84"}],["path",{d:"M3 12h18",key:"1i2n21"}],["path",{d:"M3 16.5h4",key:"1230mu"}],["path",{d:"M17 3v18",key:"in4fa5"}],["path",{d:"M17 7.5h4",key:"myr1c1"}],["path",{d:"M17 16.5h4",key:"go4c1d"}]],Fve=Ce("film",Bve);/**
467 * @license lucide-react v1.16.0 - ISC
468 *
469 * This source code is licensed under the ISC license.
470 * See the LICENSE file in the root directory of this source tree.
471 */const zve=[["path",{d:"M12 3q1 4 4 6.5t3 5.5a1 1 0 0 1-14 0 5 5 0 0 1 1-3 1 1 0 0 0 5 0c0-2-1.5-3-1.5-5q0-2 2.5-4",key:"1slcih"}]],qve=Ce("flame",zve);/**
472 * @license lucide-react v1.16.0 - ISC
473 *
474 * This source code is licensed under the ISC license.
475 * See the LICENSE file in the root directory of this source tree.
476 */const Hve=[["path",{d:"m12 14 4-4",key:"9kzdfg"}],["path",{d:"M3.34 19a10 10 0 1 1 17.32 0",key:"19p75a"}]],C9=Ce("gauge",Hve);/**
477 * @license lucide-react v1.16.0 - ISC
478 *
479 * This source code is licensed under the ISC license.
480 * See the LICENSE file in the root directory of this source tree.
481 */const Vve=[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M20 11v8a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-8",key:"1sqzm4"}],["path",{d:"M7.5 7a1 1 0 0 1 0-5A4.8 8 0 0 1 12 7a4.8 8 0 0 1 4.5-5 1 1 0 0 1 0 5",key:"kc0143"}],["rect",{x:"3",y:"7",width:"18",height:"4",rx:"1",key:"1hberx"}]],uy=Ce("gift",Vve);/**
482 * @license lucide-react v1.16.0 - ISC
483 *
484 * This source code is licensed under the ISC license.
485 * See the LICENSE file in the root directory of this source tree.
486 */const Kve=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]],Gve=Ce("globe",Kve);/**
487 * @license lucide-react v1.16.0 - ISC
488 *
489 * This source code is licensed under the ISC license.
490 * See the LICENSE file in the root directory of this source tree.
491 */const Wve=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21",key:"1xmnt7"}]],S9=Ce("image",Wve);/**
492 * @license lucide-react v1.16.0 - ISC
493 *
494 * This source code is licensed under the ISC license.
495 * See the LICENSE file in the root directory of this source tree.
496 */const Yve=[["polyline",{points:"22 12 16 12 14 15 10 15 8 12 2 12",key:"o97t9d"}],["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",key:"oot6mr"}]],Qve=Ce("inbox",Yve);/**
497 * @license lucide-react v1.16.0 - ISC
498 *
499 * This source code is licensed under the ISC license.
500 * See the LICENSE file in the root directory of this source tree.
501 */const Xve=[["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",key:"1s6t7t"}],["circle",{cx:"16.5",cy:"7.5",r:".5",fill:"currentColor",key:"w0ekpg"}]],Uw=Ce("key-round",Xve);/**
502 * @license lucide-react v1.16.0 - ISC
503 *
504 * This source code is licensed under the ISC license.
505 * See the LICENSE file in the root directory of this source tree.
506 */const Zve=[["path",{d:"M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z",key:"zw3jo"}],["path",{d:"M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12",key:"1wduqc"}],["path",{d:"M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17",key:"kqbvx6"}]],Jve=Ce("layers",Zve);/**
507 * @license lucide-react v1.16.0 - ISC
508 *
509 * This source code is licensed under the ISC license.
510 * See the LICENSE file in the root directory of this source tree.
511 */const ebe=[["rect",{width:"7",height:"9",x:"3",y:"3",rx:"1",key:"10lvy0"}],["rect",{width:"7",height:"5",x:"14",y:"3",rx:"1",key:"16une8"}],["rect",{width:"7",height:"9",x:"14",y:"12",rx:"1",key:"1hutg5"}],["rect",{width:"7",height:"5",x:"3",y:"16",rx:"1",key:"ldoo1y"}]],tbe=Ce("layout-dashboard",ebe);/**
512 * @license lucide-react v1.16.0 - ISC
513 *
514 * This source code is licensed under the ISC license.
515 * See the LICENSE file in the root directory of this source tree.
516 */const nbe=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m4.93 4.93 4.24 4.24",key:"1ymg45"}],["path",{d:"m14.83 9.17 4.24-4.24",key:"1cb5xl"}],["path",{d:"m14.83 14.83 4.24 4.24",key:"q42g0n"}],["path",{d:"m9.17 14.83-4.24 4.24",key:"bqpfvv"}],["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}]],ij=Ce("life-buoy",nbe);/**
517 * @license lucide-react v1.16.0 - ISC
518 *
519 * This source code is licensed under the ISC license.
520 * See the LICENSE file in the root directory of this source tree.
521 */const abe=[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]],obe=Ce("loader-circle",abe);/**
522 * @license lucide-react v1.16.0 - ISC
523 *
524 * This source code is licensed under the ISC license.
525 * See the LICENSE file in the root directory of this source tree.
526 */const sbe=[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]],rbe=Ce("lock",sbe);/**
527 * @license lucide-react v1.16.0 - ISC
528 *
529 * This source code is licensed under the ISC license.
530 * See the LICENSE file in the root directory of this source tree.
531 */const ibe=[["path",{d:"m16 17 5-5-5-5",key:"1bji2h"}],["path",{d:"M21 12H9",key:"dn1m92"}],["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}]],lbe=Ce("log-out",ibe);/**
532 * @license lucide-react v1.16.0 - ISC
533 *
534 * This source code is licensed under the ISC license.
535 * See the LICENSE file in the root directory of this source tree.
536 */const cbe=[["path",{d:"M22 10.5V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v12c0 1.1.9 2 2 2h12.5",key:"e61zoh"}],["path",{d:"m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7",key:"1ocrg3"}],["path",{d:"M20 14v4",key:"1hm744"}],["path",{d:"M20 22v.01",key:"12bgn6"}]],dbe=Ce("mail-warning",cbe);/**
537 * @license lucide-react v1.16.0 - ISC
538 *
539 * This source code is licensed under the ISC license.
540 * See the LICENSE file in the root directory of this source tree.
541 */const ube=[["path",{d:"m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7",key:"132q7q"}],["rect",{x:"2",y:"4",width:"20",height:"16",rx:"2",key:"izxlao"}]],lj=Ce("mail",ube);/**
542 * @license lucide-react v1.16.0 - ISC
543 *
544 * This source code is licensed under the ISC license.
545 * See the LICENSE file in the root directory of this source tree.
546 */const mbe=[["path",{d:"M11 6a13 13 0 0 0 8.4-2.8A1 1 0 0 1 21 4v12a1 1 0 0 1-1.6.8A13 13 0 0 0 11 14H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2z",key:"q8bfy3"}],["path",{d:"M6 14a12 12 0 0 0 2.4 7.2 2 2 0 0 0 3.2-2.4A8 8 0 0 1 10 14",key:"1853fq"}],["path",{d:"M8 6v8",key:"15ugcq"}]],pbe=Ce("megaphone",mbe);/**
547 * @license lucide-react v1.16.0 - ISC
548 *
549 * This source code is licensed under the ISC license.
550 * See the LICENSE file in the root directory of this source tree.
551 */const fbe=[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}],["path",{d:"M12 8v6",key:"1ib9pf"}],["path",{d:"M9 11h6",key:"1fldmi"}]],gbe=Ce("message-square-plus",fbe);/**
552 * @license lucide-react v1.16.0 - ISC
553 *
554 * This source code is licensed under the ISC license.
555 * See the LICENSE file in the root directory of this source tree.
556 */const hbe=[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}]],ybe=Ce("message-square",hbe);
556/**
557 * @license lucide-react v1.16.0 - ISC
558 *
559 * This source code is licensed under the ISC license.
560 * See the LICENSE file in the root directory of this source tree.
561 */const vbe=[["rect",{x:"16",y:"16",width:"6",height:"6",rx:"1",key:"4q2zg0"}],["rect",{x:"2",y:"16",width:"6",height:"6",rx:"1",key:"8cvhb9"}],["rect",{x:"9",y:"2",width:"6",height:"6",rx:"1",key:"1egb70"}],["path",{d:"M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3",key:"1jsf9p"}],["path",{d:"M12 12V8",key:"2874zd"}]],Z1=Ce("network",vbe);/**
562 * @license lucide-react v1.16.0 - ISC
563 *
564 * This source code is licensed under the ISC license.
565 * See the LICENSE file in the root directory of this source tree.
566 */const bbe=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"m16 15-3-3 3-3",key:"14y99z"}]],_3=Ce("panel-left-close",bbe);/**
567 * @license lucide-react v1.16.0 - ISC
568 *
569 * This source code is licensed under the ISC license.
570 * See the LICENSE file in the root directory of this source tree.
571 */const xbe=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}]],$be=Ce("panel-left",xbe);/**
572 * @license lucide-react v1.16.0 - ISC
573 *
574 * This source code is licensed under the ISC license.
575 * See the LICENSE file in the root directory of this source tree.
576 */const wbe=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M15 3v18",key:"14nvp0"}],["path",{d:"m10 15-3-3 3-3",key:"1pgupc"}]],wu=Ce("panel-right-open",wbe);/**
577 * @license lucide-react v1.16.0 - ISC
578 *
579 * This source code is licensed under the ISC license.
580 * See the LICENSE file in the root directory of this source tree.
581 */const kbe=[["path",{d:"m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551",key:"1miecu"}]],cj=Ce("paperclip",kbe);/**
582 * @license lucide-react v1.16.0 - ISC
583 *
584 * This source code is licensed under the ISC license.
585 * See the LICENSE file in the root directory of this source tree.
586 */const Cbe=[["path",{d:"M13 21h8",key:"1jsn5i"}],["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",key:"1a8usu"}]],A9=Ce("pen-line",Cbe);/**
587 * @license lucide-react v1.16.0 - ISC
588 *
589 * This source code is licensed under the ISC license.
590 * See the LICENSE file in the root directory of this source tree.
591 */const Sbe=[["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",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]],T9=Ce("pencil",Sbe);/**
592 * @license lucide-react v1.16.0 - ISC
593 *
594 * This source code is licensed under the ISC license.
595 * See the LICENSE file in the root directory of this source tree.
596 */const Abe=[["line",{x1:"19",x2:"5",y1:"5",y2:"19",key:"1x9vlm"}],["circle",{cx:"6.5",cy:"6.5",r:"2.5",key:"4mh3h7"}],["circle",{cx:"17.5",cy:"17.5",r:"2.5",key:"1mdrzq"}]],Tbe=Ce("percent",Abe);/**
597 * @license lucide-react v1.16.0 - ISC
598 *
599 * This source code is licensed under the ISC license.
600 * See the LICENSE file in the root directory of this source tree.
601 */const Rbe=[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",key:"10ikf1"}]],R9=Ce("play",Rbe);/**
602 * @license lucide-react v1.16.0 - ISC
603 *
604 * This source code is licensed under the ISC license.
605 * See the LICENSE file in the root directory of this source tree.
606 */const Pbe=[["path",{d:"M12 22v-5",key:"1ega77"}],["path",{d:"M15 8V2",key:"18g5xt"}],["path",{d:"M17 8a1 1 0 0 1 1 1v4a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1z",key:"1xoxul"}],["path",{d:"M9 8V2",key:"14iosj"}]],J1=Ce("plug",Pbe);/**
607 * @license lucide-react v1.16.0 - ISC
608 *
609 * This source code is licensed under the ISC license.
610 * See the LICENSE file in the root directory of this source tree.
611 */const _be=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]],wr=Ce("plus",_be);/**
612 * @license lucide-react v1.16.0 - ISC
613 *
614 * This source code is licensed under the ISC license.
615 * See the LICENSE file in the root directory of this source tree.
616 */const jbe=[["path",{d:"M12 17V7",key:"pyj7ub"}],["path",{d:"M16 8h-6a2 2 0 0 0 0 4h4a2 2 0 0 1 0 4H8",key:"1elt7d"}],["path",{d:"M4 3a1 1 0 0 1 1-1 1.3 1.3 0 0 1 .7.2l.933.6a1.3 1.3 0 0 0 1.4 0l.934-.6a1.3 1.3 0 0 1 1.4 0l.933.6a1.3 1.3 0 0 0 1.4 0l.933-.6a1.3 1.3 0 0 1 1.4 0l.934.6a1.3 1.3 0 0 0 1.4 0l.933-.6A1.3 1.3 0 0 1 19 2a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1 1.3 1.3 0 0 1-.7-.2l-.933-.6a1.3 1.3 0 0 0-1.4 0l-.934.6a1.3 1.3 0 0 1-1.4 0l-.933-.6a1.3 1.3 0 0 0-1.4 0l-.933.6a1.3 1.3 0 0 1-1.4 0l-.934-.6a1.3 1.3 0 0 0-1.4 0l-.933.6a1.3 1.3 0 0 1-.7.2 1 1 0 0 1-1-1z",key:"ycz6yz"}]],Nbe=Ce("receipt",jbe);/**
617 * @license lucide-react v1.16.0 - ISC
618 *
619 * This source code is licensed under the ISC license.
620 * See the LICENSE file in the root directory of this source tree.
621 */const Dbe=[["path",{d:"M21 12a9 9 0 0 0-9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"14sxne"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}],["path",{d:"M3 12a9 9 0 0 0 9 9 9.75 9.75 0 0 0 6.74-2.74L21 16",key:"1hlbsb"}],["path",{d:"M16 16h5v5",key:"ccwih5"}]],Vp=Ce("refresh-ccw",Dbe);/**
622 * @license lucide-react v1.16.0 - ISC
623 *
624 * This source code is licensed under the ISC license.
625 * See the LICENSE file in the root directory of this source tree.
626 */const Mbe=[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]],Kp=Ce("refresh-cw",Mbe);/**
627 * @license lucide-react v1.16.0 - ISC
628 *
629 * This source code is licensed under the ISC license.
630 * See the LICENSE file in the root directory of this source tree.
631 */const Ebe=[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]],P9=Ce("rotate-ccw",Ebe);/**
632 * @license lucide-react v1.16.0 - ISC
633 *
634 * This source code is licensed under the ISC license.
635 * See the LICENSE file in the root directory of this source tree.
636 */const Ibe=[["circle",{cx:"6",cy:"19",r:"3",key:"1kj8tv"}],["path",{d:"M9 19h8.5a3.5 3.5 0 0 0 0-7h-11a3.5 3.5 0 0 1 0-7H15",key:"1d8sl"}],["circle",{cx:"18",cy:"5",r:"3",key:"gq8acd"}]],Obe=Ce("route",Ibe);/**
637 * @license lucide-react v1.16.0 - ISC
638 *
639 * This source code is licensed under the ISC license.
640 * See the LICENSE file in the root directory of this source tree.
641 */const Lbe=[["path",{d:"M15 12h-5",key:"r7krc0"}],["path",{d:"M15 8h-5",key:"1khuty"}],["path",{d:"M19 17V5a2 2 0 0 0-2-2H4",key:"zz82l3"}],["path",{d:"M8 21h12a2 2 0 0 0 2-2v-1a1 1 0 0 0-1-1H11a1 1 0 0 0-1 1v1a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v2a1 1 0 0 0 1 1h3",key:"1ph1d7"}]],Ube=Ce("scroll-text",Lbe);/**
642 * @license lucide-react v1.16.0 - ISC
643 *
644 * This source code is licensed under the ISC license.
645 * See the LICENSE file in the root directory of this source tree.
646 */const Bbe=[["path",{d:"m13.5 8.5-5 5",key:"1cs55j"}],["path",{d:"m8.5 8.5 5 5",key:"a8mexj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}]],Fbe=Ce("search-x",Bbe);/**
647 * @license lucide-react v1.16.0 - ISC
648 *
649 * This source code is licensed under the ISC license.
650 * See the LICENSE file in the root directory of this source tree.
651 */const zbe=[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]],hp=Ce("search",zbe);/**
652 * @license lucide-react v1.16.0 - ISC
653 *
654 * This source code is licensed under the ISC license.
655 * See the LICENSE file in the root directory of this source tree.
656 */const qbe=[["path",{d:"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",key:"1i5ecw"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],Hbe=Ce("settings",qbe);/**
657 * @license lucide-react v1.16.0 - ISC
658 *
659 * This source code is licensed under the ISC license.
660 * See the LICENSE file in the root directory of this source tree.
661 */const Vbe=[["path",{d:"M8.3 10a.7.7 0 0 1-.626-1.079L11.4 3a.7.7 0 0 1 1.198-.043L16.3 8.9a.7.7 0 0 1-.572 1.1Z",key:"1bo67w"}],["rect",{x:"3",y:"14",width:"7",height:"7",rx:"1",key:"1bkyp8"}],["circle",{cx:"17.5",cy:"17.5",r:"3.5",key:"w3z12y"}]],eS=Ce("shapes",Vbe);/**
662 * @license lucide-react v1.16.0 - ISC
663 *
664 * This source code is licensed under the ISC license.
665 * See the LICENSE file in the root directory of this source tree.
666 */const Kbe=[["circle",{cx:"18",cy:"5",r:"3",key:"gq8acd"}],["circle",{cx:"6",cy:"12",r:"3",key:"w7nqdw"}],["circle",{cx:"18",cy:"19",r:"3",key:"1xt0gg"}],["line",{x1:"8.59",x2:"15.42",y1:"13.51",y2:"17.49",key:"47mynk"}],["line",{x1:"15.41",x2:"8.59",y1:"6.51",y2:"10.49",key:"1n3mei"}]],Gbe=Ce("share-2",Kbe);/**
667 * @license lucide-react v1.16.0 - ISC
668 *
669 * This source code is licensed under the ISC license.
670 * See the LICENSE file in the root directory of this source tree.
671 */const Wbe=[["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",ke
671y:"oel41y"}],["path",{d:"M12 8v4",key:"1got3b"}],["path",{d:"M12 16h.01",key:"1drbdi"}]],_9=Ce("shield-alert",Wbe);/**
672 * @license lucide-react v1.16.0 - ISC
673 *
674 * This source code is licensed under the ISC license.
675 * See the LICENSE file in the root directory of this source tree.
676 */const Ybe=[["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",key:"oel41y"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]],yR=Ce("shield-check",Ybe);/**
677 * @license lucide-react v1.16.0 - ISC
678 *
679 * This source code is licensed under the ISC license.
680 * See the LICENSE file in the root directory of this source tree.
681 */const Qbe=[["path",{d:"M10 5H3",key:"1qgfaw"}],["path",{d:"M12 19H3",key:"yhmn1j"}],["path",{d:"M14 3v4",key:"1sua03"}],["path",{d:"M16 17v4",key:"1q0r14"}],["path",{d:"M21 12h-9",key:"1o4lsq"}],["path",{d:"M21 19h-5",key:"1rlt1p"}],["path",{d:"M21 5h-7",key:"1oszz2"}],["path",{d:"M8 10v4",key:"tgpxqk"}],["path",{d:"M8 12H3",key:"a7s4jb"}]],vR=Ce("sliders-horizontal",Qbe);/**
682 * @license lucide-react v1.16.0 - ISC
683 *
684 * This source code is licensed under the ISC license.
685 * See the LICENSE file in the root directory of this source tree.
686 */const Xbe=[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",key:"1s2grr"}],["path",{d:"M20 2v4",key:"1rf3ol"}
686],["path",{d:"M22 4h-4",key:"gwowj6"}],["circle",{cx:"4",cy:"20",r:"2",key:"6kqj1y"}]],bR=Ce("sparkles",Xbe);/**
687 * @license lucide-react v1.16.0 - ISC
688 *
689 * This source code is licensed under the ISC license.
690 * See the LICENSE file in the root directory of this source tree.
691 */const Zbe=[["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",key:"r04s7s"}]],Jbe=Ce("star",Zbe);/**
692 * @license lucide-react v1.16.0 - ISC
693 *
694 * This source code is licensed under the ISC license.
695 * See the LICENSE file in the root directory of this source tree.
696 */const exe=[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]],txe=Ce("terminal",exe);/**
697 * @license lucide-react v1.16.0 - ISC
698 *
699 * This source code is licensed under the ISC license.
700 * See the LICENSE file in the root directory of this source tree.
701 */const nxe=[["path",{d:"M2 9a3 3 0 1 1 0 6v2a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-2a3 3 0 1 1 0-6V7a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2Z",key:"1l48ns"}],["path",{d:"M9 9h.01",key:"1q5me6"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"M15 15h.01",key:"lqbp3k"}]],axe=Ce("ticket-percent",nxe);/**
702 * @license lucide-react v1.16.0 - ISC
703 *
704 * This source code is licensed under the ISC license.
705 * See the LICENSE file in the root directory of this source tree.
706 */const oxe=[["path",{d:"M2 9a3 3 0 0 1 0 6v2a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-2a3 3 0 0 1 0-6V7a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2Z",key:"qn84l0"}],["path",{d:"M13 5v2",key:"dyzc3o"}],["path",{d:"M13 17v2",key:"1ont0d"}],["path",{d:"M13 11v2",key:"1wjjxi"}]],sxe=Ce("ticket",oxe);/**
707 * @license lucide-react v1.16.0 - ISC
708 *
709 * This source code is licensed under the ISC license.
710 * See the LICENSE file in the root directory of this source tree.
711 */const rxe=[["line",{x1:"10",x2:"14",y1:"2",y2:"2",key:"14vaq8"}],["line",{x1:"12",x2:"15",y1:"14",y2:"11",key:"17fdiu"}],["circle",{cx:"12",cy:"14",r:"8",key:"1e1u0o"}]],j9=Ce("timer",rxe);/**
712 * @license lucide-react v1.16.0 - ISC
713 *
714 * This source code is licensed under the ISC license.
715 * See the LICENSE file in the root directory of this source tree.
716 */const ixe=[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]],Sc=Ce("trash-2",ixe);/**
717 * @license lucide-react v1.16.0 - ISC
718 *
719 * This source code is licensed under the ISC license.
720 * See the LICENSE file in the root directory of this source tree.
721 */const lxe=[["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",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]],dj=Ce("triangle-alert",lxe);/**
722 * @license lucide-react v1.16.0 - ISC
723 *
724 * This source code is licensed under the ISC license.
725 * See the LICENSE file in the root directory of this source tree.
726 */const cxe=[["path",{d:"M10 14.66v1.626a2 2 0 0 1-.976 1.696A5 5 0 0 0 7 21.978",key:"1n3hpd"}],["path",{d:"M14 14.66v1.626a2 2 0 0 0 .976 1.696A5 5 0 0 1 17 21.978",key:"rfe1zi"}],["path",{d:"M18 9h1.5a1 1 0 0 0 0-5H18",key:"7xy6bh"}],["path",{d:"M4 22h16",key:"57wxv0"}],["path",{d:"M6 9a6 6 0 0 0 12 0V3a1 1 0 0 0-1-1H7a1 1 0 0 0-1 1z",key:"1mhfuq"}],["path",{d:"M6 9H4.5a1 1 0 0 1 0-5H6",key:"tex48p"}]],dxe=Ce("trophy",cxe);/**
727 * @license lucide-react v1.16.0 - ISC
728 *
729 * This source code is licensed under the ISC license.
730 * See the LICENSE file in the root directory of this source tree.
731 */const uxe=[["path",{d:"M12 4v16",key:"1654pz"}],["path",{d:"M4 7V5a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v2",key:"e0r10z"}],["path",{d:"M9 20h6",key:"s66wpe"}]],mxe=Ce("type",uxe);/**
732 * @license lucide-react v1.16.0 - ISC
733 *
734 * This source code is licensed under the ISC license.
735 * See the LICENSE file in the root directory of this source tree.
736 */const pxe=[["path",{d:"M10 15H6a4 4 0 0 0-4 4v2",key:"1nfge6"}],["path",{d:"m14.305 16.53.923-.382",key:"1itpsq"}],["path",{d:"m15.228 13.852-.923-.383",key:"eplpkm"}],["path",{d:"m16.852 12.228-.383-.923",key:"13v3q0"}],["path",{d:"m16.852 17.772-.383.924",key:"1i8mnm"}],["path",{d:"m19.148 12.228.383-.923",key:"1q8j1v"}],["path",{d:"m19.53 18.696-.382-.924",key:"vk1qj3"}],["path",{d:"m20.772 13.852.924-.383",key:"n880s0"}],["path",{d:"m20.772 16.148.924.383",key:"1g6xey"}],["circle",{cx:"18",cy:"15",r:"3",key:"gjjjvw"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}]],fxe=Ce("user-cog",pxe);/**
737 * @license lucide-react v1.16.0 - ISC
738 *
739 * This source code is licensed under the ISC license.
740 * See the LICENSE file in the root directory of this source tree.
741 */const gxe=[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["path",{d:"M16 3.128a4 4 0 0 1 0 7.744",key:"16gr8j"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}]],hxe=Ce("users",gxe);/**
742 * @license lucide-react v1.16.0 - ISC
743 *
744 * This source code is licensed under the ISC license.
745 * See the LICENSE file in the root directory of this source tree.
746 */const yxe=[["path",{d:"m16 13 5.223 3.482a.5.5 0 0 0 .777-.416V7.87a.5.5 0 0 0-.752-.432L16 10.5",key:"ftymec"}],["rect",{x:"2",y:"6",width:"14",height:"12",rx:"2",key:"158x01"}]],vxe=Ce("video",yxe);/**
747 * @license lucide-react v1.16.0 - ISC
748 *
749 * This source code is licensed under the ISC license.
750 * See the LICENSE file in the root directory of this source tree.
751 */const bxe=[["path",{d:"M19 7V4a1 1 0 0 0-1-1H5a2 2 0 0 0 0 4h15a1 1 0 0 1 1 1v4h-3a2 2 0 0 0 0 4h3a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1",key:"18etb6"}],["path",{d:"M3 5v14a2 2 0 0 0 2 2h15a1 1 0 0 0 1-1v-4",key:"xoc0q4"}]],N9=Ce("wallet",bxe);/**
752 * @license lucide-react v1.16.0 - ISC
753 *
754 * This source code is licensed under the ISC license.
755 * See the LICENSE file in the root directory of this source tree.
756 */const xxe=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],my=Ce("x",xxe);/**
757 * @license lucide-react v1.16.0 - ISC
758 *
759 * This source code is licensed under the ISC license.
760 * See the LICENSE file in the root directory of this source tree.
761 */const $xe=[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]],wxe=Ce("zap",$xe),kxe=1440*60*1e3;function Cxe(e,t,n){return e.filter(a=>{const s=t[a.publicId];return!s||n-s>=kxe})}function D9(e,t){return e[t]??e.en??Object.values(e)[0]??null}function Sxe(e,t,n){const a=e.find(r=>r.displayType==="modal"&&!n(r.publicId,r.revision??1));if(!a)return null;const s=D9(a.i18n,t);return s?{publicId:a.publicId,revision:a.revision??1,severity:a.severity,imageUrl:a.imageUrl,copy:{title:s.title??"",body:s.message,actions:s.actions??[]}}:null}const uj="ohbanner_dismissed",Axe=10080*60*1e3,Txe="oh_modal_seen_",M9=(e,t)=>`${Txe}${e}_${t}`;function Rxe(e,t){try{return localStorage.getItem(M9(e,t))!==null}catch{return!1}}function Pxe(e,t){try{localStorage.setItem(M9(e,t),String(Date.now()))}catch{}}function _xe(){try{const e=localStorage.getItem(uj);return e?JSON.parse(e):{}}catch{return{}}}function E9(e){try{localStorage.setItem(uj,JSON.stringify(e))}catch{}}function tS(){const e=Date.now(),t=_xe(),n={};let a=!1;for(const[s,r]of Object.entries(t))e-r<Axe?n[s]=r:a=!0;return a&&E9(n),n}function jxe(e="en"){const[t,n]=h.useState(()=>tS()),[a,s]=h.useState(0),r=h.useRef([]),{data:i}=Ue({queryKey:["console","announcements","active"],queryFn:()=>Ye.request("/console/announcements/active").then(y=>y.items),staleTime:5*6e4});h.useEffect(()=>{const y=v=>{v.key===uj&&n(tS())};return window.addEventListener("storage",y),()=>window.removeEventListener("storage",y)},[]);const c=h.useCallback(y=>{const v={...tS(),[y]:Date.now()};E9(v),n(v)},[]),d=h.useCallback((y,v)=>{Pxe(y,v),s($=>$+1)},[]),m=i??r.current;i&&(r.current=i);const f=h.useMemo(()=>{const y=m.filter($=>$.displayType!=="modal");return Cxe(y,t,Date.now()).map($=>{const x=D9($.i18n,e);return x?{publicId:$.publicId,severity:$.severity,dismissible:$.dismissible,message:x.message,ctaText:x.ctaText,ctaUrl:x.ctaUrl}:null}).filter($=>$!==null)},[m,t,e]),p=h.useMemo(()=>Sxe(m,e,Rxe),[m,e,a]);return{visibleBanners:f,dismissBanner:c,activeModal:p,dismissModal:d}}const Jf="/platform/usage";function mj(e){return(e.startsWith(mp)?e.slice(mp.length):e)||"/usage"}function zx(e,t=window.location.origin){if(!e)return Jf;try{const n=new URL(e,t);return n.origin!==t||n.pathname==="/platform/login"||n.pathname.startsWith("/platform/login/")||n.pathname!=="/platform"&&!n.pathname.startsWith("/platform/")?Jf:`${n.pathname}${n.search}${n.hash}`}catch{return Jf}}function Nxe(e,t=window.location.origin){const n=zx(e,t);return new URL(n,t).toString()}const Dxe=[{labelKey:"nav.admin.dashboard",href:Be.adminDashboard,icon:tbe,permission:"ops.dashboard.read"},{labelKey:"nav.admin.usage",href:Be.adminUsage,icon:u9,permission:"ops.usage.read"},{labelKey:"nav.admin.billing",href:Be.adminBilling,icon:nve,permission:"ops.billing.read"},{labelKey:"nav.admin.users",href:Be.adminUsers,icon:hxe,permission:"ops.users.read"},{labelKey:"nav.admin.models",href:Be.adminModels,icon:y9,permission:"ops.models.read"},{labelKey:"nav.admin.support",href:Be.adminSupport,icon:ij,permission:"ops.users.read"},{labelKey:"nav.admin.growth",href:Be.adminGrowth,icon:uy,permission:"ops.growth.write"},{labelKey:"nav.admin.campaigns",href:Be.adminCampaigns,icon:axe,permission:"ops.campaigns.write"},{labelKey:"nav.admin.access",href:Be.adminAccess,icon:yR,permission:"ops.users.read"},{labelKey:"nav.admin.domainRules",href:Be.adminDomainRules,icon:dbe,permission:"ops.users.read"},{labelKey:"nav.admin.announcements",href:Be.adminAnnouncements,icon:pbe,permission:"ops.content.write"},{labelKey:"nav.admin.staff",href:Be.adminStaff,icon:fxe,permission:"ops.users.read",ownerOnly:!0},{labelKey:"nav.admin.rateLimits",href:Be.adminRateLimits,icon:C9,permission:"ops.rate_limit.read"},{labelKey:"nav.admin.upstream",href:Be.adminUpstream,icon:vR,permission:"ops.sub2api.read"},{labelKey:"nav.admin.webhooks",href:Be.adminWebhooks,icon:wxe,permission:"ops.webhooks.read"},{labelKey:"nav.admin.auditLogs",href:Be.adminAuditLogs,icon:Uve,permission:"ops.audit.read"}];function I9(e){return e?Dxe.filter(t=>t.ownerOnly?e.role==="owner"&&e.permissions?.all!==!1:Go(e,t.permission)):[]}const ku={list:(e,t)=>
761["console","support",e,"list",t],detail:(e,t)=>["console","support",e,"detail",t]},Bw=["console","support","user","unread-count"];function Mxe(e={}){return ll({queryKey:ku.list("user",e),queryFn:({pageParam:t})=>Ye.request(`/console/support/tickets${$r({...e,...t?{cursor:t}:{}})}`),initialPageParam:"",getNextPageParam:t=>t.nextCursor??void 0,retry:1})}function Exe(e){return Ue({queryKey:ku.detail("user",e??""),queryFn:()=>Ye.request(`/console/support/tickets/${e}`),enabled:!!e})}function O9(){return Ue({queryKey:Bw,queryFn:()=>Ye.request("/console/support/unread-count"),refetchInterval:6e4,refetchOnWindowFocus:!0,staleTime:3e4,retry:1})}function Ixe(){const e=Re();return ke({mutationFn:t=>Ye.request("/console/support/tickets",{method:"POST",body:t}),onSuccess:()=>{e.invalidateQueries({queryKey:["console","support","user","list"]}),e.invalidateQueries({queryKey:Bw})}})}function Oxe(e){const t=Re();return ke({mutationFn:n=>Ye.request(`/console/support/tickets/${e}/messages`,{method:"POST",body:n}),onSuccess:()=>{t.invalidateQueries({queryKey:ku.detail("user",e)}),t.invalidateQueries({queryKey:["console","support","user","list"]}),t.invalidateQueries({queryKey:Bw})}})}function Lxe(e,t){const n=e==="admin"?"/admin/support/uploads/presign":"/console/support/uploads/presign";return Ye.request(n,{method:"POST",body:t})}function Uxe(e={}){return ll({queryKey:ku.list("admin",e),queryFn:({pageParam:t})=>Ye.request(`/admin/support/tickets${$r({...e,...t?{cursor:t}:{}})}`),initialPageParam:"",getNextPageParam:t=>t.nextCursor??void 0,retry:1})}function Bxe(e){return Ue({queryKey:ku.detail("admin",e??""),queryFn:()=>Ye.request(`/admin/support/tickets/${e}`),enabled:!!e})}function Fxe(e){const t=Re();return ke({mutationFn:n=>Ye.request(`/admin/support/tickets/${e}/messages`,{method:"POST",body:n}),onSuccess:()=>{t.invalidateQueries({queryKey:ku.detail("admin",e)}),t.invalidateQueries({queryKey:["console","support","admin","list"]})}})}function zxe(e){const t=Re();return ke({mutationFn:n=>Ye.request(`/admin/support/tickets/${e}`,{method:"PATCH",body:{status:n}}),onSuccess:()=>{t.invalidateQueries({queryKey:ku.detail("admin",e)}),t.invalidateQueries({queryKey:["console","support","admin","list"]})}})}async function L9(e,t){const{key:n,putUrl:a}=await Lxe(e,{fileName:t.name,contentType:t.type,sizeBytes:t.size});if(!(await fetch(a,{method:"PUT",headers:{"content-type":t.type},body:t})).ok)throw new Error("upload failed");return{key:n,fileName:t.name,contentType:t.type,sizeBytes:t.size}}function qxe(){return Ue({queryKey:Ht.settingsProfile,queryFn:()=>Ye.request("/console/settings/profile"),retry:1})}function Hxe(e){Ye.request("/console/settings/profile",{method:"PATCH",body:{locale:e}}).catch(()=>{})}function Vxe(){const e=Re();return ke({mutationFn:t=>Ye.request("/console/settings/profile",{method:"PATCH",body:t}),onSuccess:t=>{e.setQueryData(Ht.settingsProfile,t)}})}var Kxe="1.6.11";const pj=Kxe;function Gxe(e){return Object.fromEntries(Object.entries(e).map(([t,n])=>[t,{code:t,message:n,toString:()=>t}]))}var ax=class extends Error{constructor(e,t){super(e,t),this.name="BetterAuthError",this.message=e,this.stack=""}};const Wxe=Gxe({OTP_EXPIRED:"OTP expired",INVALID_OTP:"Invalid OTP",TOO_MANY_ATTEMPTS:"Too many attempts"}),Yxe=()=>({id:"email-otp",version:pj,$InferServerPlugin:{},atomListeners:[{matcher:e=>e==="/email-otp/verify-email"||e==="/sign-in/email-otp"||e==="/email-otp/request-email-change",signal:"$sessionSignal"}],$ERROR_CODES:Wxe}),Qxe=()=>({id:"magic-link",version:pj,$InferServerPlugin:{}});let nS=!1;function Xxe(){return typeof window<"u"&&"IdentityCredential"in window}const j3={dismissed:["credential_returned","cancel_called"],skipped:["user_cancel","tap_outside"]},Zxe=e=>({id:"one-tap",version:pj,fetchPlugins:[{id:"fedcm-signout-handle",name:"FedCM Sign-Out Handler",hooks:{async onResponse(t){t.request.url.toString().includes("/sign-out")&&(e.promptOptions?.fedCM===!1||!Xxe()||navigator.credentials.preventSilentAccess())}}}],getActions:(t,n)=>({oneTap:async(a,s)=>{if(nS){console.warn("A Google One Tap request is already in progress. Please wait.");return}if(typeof window>"u"||!window.document){console.warn("Google One Tap is only available in browser environments");return}if(a?.button){await N3();const f=typeof a.button.container=="string"?document.querySelector(a.button.container):a.button.container;if(!f){console.error("Google One Tap: Button container not found",a.button.container);return}async function p(S){await t("/one-tap/callback",{method:"POST",body:{idToken:S},...a?.fetchOptions,...s}),(!a?.fetchOptions&&!s||a?.callbackURL)&&(window.location.href=a?.callbackURL??"/")}const{autoSelect:y,cancelOnTapOutside:v,context:$}=a??{},x=$??e.context??"signin",w=e.promptOptions?.fedCM!==!1;window.google?.accounts.id.initialize({client_id:e.clientId,callback:async S=>{try{await p(S.credential)}catch(k){console.error("Error during button callback:",k)}}
761,auto_select:y,cancel_on_tap_outside:v,context:x,ux_mode:a?.uxMode||"popup",nonce:a?.nonce,itp_support:!0,use_fedcm_for_prompt:w,...e.additionalOptions}),window.google?.accounts.id.renderButton(f,a.button.config??{type:"icon"});return}async function r(f){await t("/one-tap/callback",{method:"POST",body:{idToken:f},...a?.fetchOptions,...s}),(!a?.fetchOptions&&!s||a?.callbackURL)&&(window.location.href=a?.callbackURL??"/")}const{autoSelect:i,cancelOnTapOutside:c,context:d}=a??{},m=d??e.context??"signin";nS=!0;try{await N3(),await new Promise((f,p)=>{let y=!1;const v=e.promptOptions?.baseDelay??1e3,$=e.promptOptions?.maxAttempts??5,x=e.promptOptions?.fedCM!==!1;window.google?.accounts.id.initialize({client_id:e.clientId,callback:async S=>{y=!0;try{await r(S.credential),f()}catch(k){console.error("Error during One Tap callback:",k),p(k)}},auto_select:i,cancel_on_tap_outside:c,context:m,ux_mode:a?.uxMode||"popup",nonce:a?.nonce,itp_support:!0,use_fedcm_for_prompt:x,...e.additionalOptions});const w=S=>{y||window.google?.accounts.id.prompt(k=>{if(!y)if(k.isDismissedMoment?.()){const T=k.getDismissedReason?.();if(j3.dismissed.includes(T)){a?.onPromptNotification?.(k),f();return}if(S<$){const R=Math.pow(2,S)*v;setTimeout(()=>w(S+1),R)}else a?.onPromptNotification?.(k),f()}else if(k.isSkippedMoment?.()){const T=k.getSkippedReason?.();if(!T||j3.skipped.includes(T)){a?.onPromptNotification?.(k),f();return}if(S<$){const R=Math.pow(2,S)*v;setTimeout(()=>w(S+1),R)}else a?.onPromptNotification?.(k),f()}else k.isNotDisplayed?.()&&(a?.onPromptNotification?.(k),f())})};w(0)})}catch(f){throw console.error("Error during Google One Tap flow:",f),f}finally{nS=!1}}}),getAtoms(t){return{}}}),N3=()=>new Promise((e,t)=>{if(window.googleScriptInitialized){e();return}const n=document.createElement("script");n.src="https://accounts.google.com/gsi/client",n.async=!0,n.defer=!0,n.onload=()=>{window.googleScriptInitialized=!0,e()},n.onerror=()=>{t(new Error("Failed to load Google Identity Services script"))},document.head.appendChild(n)});let Qs=[],Hl=0;const cb=4,Jxe=globalThis.nanostoresGlobal||(globalThis.nanostoresGlobal={epoch:0}),U9=e=>{let t=[],n={get(){return n.lc||n.listen(()=>{})(),n.value},init:e,lc:0,listen(a){return n.lc=t.push(a),()=>{for(let r=Hl+cb;r<Qs.length;)Qs[r]===a?Qs.splice(r,cb):r+=cb;let s=t.indexOf(a);~s&&(t.splice(s,1),--n.lc||n.off())}},notify(a,s){Jxe.epoch++;let r=!Qs.length;for(let i of t)Qs.push(i,n.value,a,s);if(r){for(Hl=0;Hl<Qs.length;Hl+=cb)Qs[Hl](Qs[Hl+1],Qs[Hl+2],Qs[Hl+3]);Qs.length=0}},off(){},set(a){let s=n.value;s!==a&&(n.value=a,n.notify(s))},subscribe(a){let s=n.listen(a);return a(n.value),s},value:e};return n},e$e=5,db=6,ub=10;let t$e=(e,t,n,a)=>(e.events=e.events||{},e.events[n+ub]||(e.events[n+ub]=a(s=>{e.events[n].reduceRight((r,i)=>(i(r),r),{shared:{},...s})})),e.events[n]=e.events[n]||[],e.events[n].push(t),()=>{let s=e.events[n],r=s.indexOf(t);s.splice(r,1),s.length||(delete e.events[n],e.events[n+ub](),delete e.events[n+ub])});const n$e=1e3;let B9=(e,t)=>t$e(e,a=>{let s=t(a);s&&e.events[db].push(s)},e$e,a=>{let s=e.listen;e.listen=(...i)=>(!e.lc&&!e.active&&(e.active=!0,a()),s(...i));let r=e.off;return e.events[db]=[],e.off=()=>{r(),setTimeout(()=>{if(e.active&&!e.lc){e.active=!1;for(let i of e.events[db])i();e.events[db]=[]}},n$e)},()=>{e.listen=s,e.off=r}});function a$e(e,t,n){let a=new Set(t).add(void 0);return e.listen((s,r,i)=>{a.has(i)&&n(s,r,i)})}const o$e=()=>typeof window>"u",s$e=(e,t,n,a)=>{const s=U9({data:null,error:null,isPending:!0,isRefetching:!1,refetch:c=>r(c)}),r=async c=>new Promise(d=>{const m=typeof a=="function"?a({data:s.get().data,error:s.get().error,isPending:s.get().isPending}):a;n(t,{...m,query:{...m?.query,...c?.query},async onSuccess(f){s.set({data:f.data,error:null,isPending:!1,isRefetching:!1,refetch:s.value.refetch}),await m?.onSuccess?.(f)},async onError(f){const{request:p}=f,y=typeof p.retry=="number"?p.retry:p.retry?.attempts,v=p.retryAttempt||0;if(y&&v<y)return;const $=f.error.status===401;s.set({error:f.error,data:$?null:s.get().data,isPending:!1,isRefetching:!1,refetch:s.value.refetch}),await m?.onError?.(f)},async onRequest(f){const p=s.get();s.set({isPending:p.data===null,data:p.data,error:null,isRefetching:!0,refetch:s.value.refetch}),await m?.onRequest?.(f)}}).catch(f=>{s.set({error:f,data:s.get().data,isPending:!1,isRefetching:!1,refetch:s.value.refetch})}).finally(()=>{d(void 0)})});e=Array.isArray(e)?e:[e];let i=!1;for(const c of e)c.subscribe(async()=>{o$e()||(i?await r():B9(s,()=>{const d=setTimeout(async()=>{i||(i=!0,await r())},0);return()=>{s.off(),c.off(),clearTimeout(d)}}))});return s};var r$e={};const ox=Object.create(null),eg=e=>r$e||globalThis.Deno?.env.toObject()||globalThis.__env__||(e?ox:globalThis),pd=new Proxy(ox,{get(e,t){return eg()[t]??ox[t]},has(e,t){return t in eg()||t in ox},set(e,t,n){const a=eg(!0);return a[t]=n,!0},deleteProperty(e,t){if(!t)return!1;const n=eg(!0);return delete n[t],!0},ownKeys(){const e=eg(!0);return Object.keys(e)}});function i$e(e){try{return(new URL(e).pathname.replace(/\/+$/,"")||"/")!=="/"}catch{throw new ax(`Invalid base URL: ${e}. Please provide a valid base URL.`)}}function l$e(e){try{const t=new URL(e);if(t.protocol!=="http:"&&t.protocol!=="https:")throw new ax(`Invalid base URL: ${e}. URL must include 'http://' or 'https://'`)}catch(t){throw t instanceof ax?t:new ax(`Invalid base URL: ${e}. Please provide a valid base URL.`,{cause:t})}}function aS(e,t="/api/auth"){if(l$e(e),i$e(e))return e;const n=e.replace(/\/+$/,"");return!t||t==="/"?n:(t=t.startsWith("/")?t:`/${t}`,`${n}${t}`)}
761function c$e(e,t,n,a,s){if(e)return aS(e,t);{const r=pd.BETTER_AUTH_URL||pd.NEXT_PUBLIC_BETTER_AUTH_URL||pd.PUBLIC_BETTER_AUTH_URL||pd.NUXT_PUBLIC_BETTER_AUTH_URL||pd.NUXT_PUBLIC_AUTH_URL||(pd.BASE_URL!=="/"?pd.BASE_URL:void 0);if(r)return aS(r,t)}if(typeof window<"u"&&window.location)return aS(window.location.origin,t)}const d$e={proto:/"(?:_|\\u0{2}5[Ff]){2}(?:p|\\u0{2}70)(?:r|\\u0{2}72)(?:o|\\u0{2}6[Ff])(?:t|\\u0{2}74)(?:o|\\u0{2}6[Ff])(?:_|\\u0{2}5[Ff]){2}"\s*:/,constructor:/"(?:c|\\u0063)(?:o|\\u006[Ff])(?:n|\\u006[Ee])(?:s|\\u0073)(?:t|\\u0074)(?:r|\\u0072)(?:u|\\u0075)(?:c|\\u0063)(?:t|\\u0074)(?:o|\\u006[Ff])(?:r|\\u0072)"\s*:/,protoShort:/"__proto__"\s*:/,constructorShort:/"constructor"\s*:/},u$e=/^\s*["[{]|^\s*-?\d{1,16}(\.\d{1,17})?([Ee][+-]?\d+)?\s*$/,D3={true:!0,false:!1,null:null,undefined:void 0,nan:NaN,infinity:Number.POSITIVE_INFINITY,"-infinity":Number.NEGATIVE_INFINITY},m$e=/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(?:\.(\d{1,7}))?(?:Z|([+-])(\d{2}):(\d{2}))$/;function p$e(e){return e instanceof Date&&!isNaN(e.getTime())}function f$e(e){const t=m$e.exec(e);if(!t)return null;const[,n,a,s,r,i,c,d,m,f,p]=t,y=new Date(Date.UTC(parseInt(n,10),parseInt(a,10)-1,parseInt(s,10),parseInt(r,10),parseInt(i,10),parseInt(c,10),d?parseInt(d.padEnd(3,"0"),10):0));if(m){const v=(parseInt(f,10)*60+parseInt(p,10))*(m==="+"?-1:1);y.setUTCMinutes(y.getUTCMinutes()+v)}return p$e(y)?y:null}function g$e(e,t={}){const{strict:n=!1,warnings:a=!1,reviver:s,parseDates:r=!0}=t;if(typeof e!="string")return e;const i=e.trim();if(i.length>0&&i[0]==='"'&&i.endsWith('"')&&!i.slice(1,-1).includes('"'))return i.slice(1,-1);const c=i.toLowerCase();if(c.length<=9&&c in D3)return D3[c];if(!u$e.test(i)){if(n)throw new SyntaxError("[better-json] Invalid JSON");return e}if(Object.entries(d$e).some(([d,m])=>{const f=m.test(i);return f&&a&&console.warn(`[better-json] Detected potential prototype pollution attempt using ${d} pattern`),f})&&n)throw new Error("[better-json] Potential prototype pollution attempt detected");try{return JSON.parse(i,(m,f)=>{if(m==="__proto__"||m==="constructor"&&f&&typeof f=="object"&&"prototype"in f){a&&console.warn(`[better-json] Dropping "${m}" key to prevent prototype pollution`);return}if(r&&typeof f=="string"){const p=f$e(f);if(p)return p}return s?s(m,f):f})}catch(d){if(n)throw d;return e}}function h$e(e,t={strict:!0}){return g$e(e,t)}const y$e={id:"redirect",name:"Redirect",hooks:{onSuccess(e){if(e.data?.url&&e.data?.redirect&&typeof window<"u"&&window.location&&window.location)try{window.location.href=e.data.url}catch{}}}},oS=Symbol.for("better-auth:broadcast-channel"),v$e=()=>Math.floor(Date.now()/1e3);var b$e=class{constructor(e="better-auth.message"){Bo(this,"listeners",new Set);Bo(this,"name");this.name=e}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}post(e){if(!(typeof window>"u"))try{localStorage.setItem(this.name,JSON.stringify({...e,timestamp:v$e()}))}catch{}}setup(){if(typeof window>"u"||typeof window.addEventListener>"u")return()=>{};const e=t=>{if(t.key!==this.name)return;const n=JSON.parse(t.newValue??"{}");n?.event!=="session"||!n?.data||this.listeners.forEach(a=>a(n))};return window.addEventListener("storage",e),()=>{window.removeEventListener("storage",e)}}};function sS(e="better-auth.message"){return globalThis[oS]||(globalThis[oS]=new b$e(e)),globalThis[oS]}const rS=Symbol.for("better-auth:focus-manager");var x$e=class{constructor(){Bo(this,"listeners",new Set)}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}setFocused(e){this.listeners.forEach(t=>t(e))}setup(){if(typeof window>"u"||typeof document>"u"||typeof window.addEventListener>"u")return()=>{};const e=()=>{document.visibilityState==="visible"&&this.setFocused(!0)};return document.addEventListener("visibilitychange",e,!1),()=>{document.removeEventListener("visibilitychange",e,!1)}}};function M3(){return globalThis[rS]||(globalThis[rS]=new x$e),globalThis[rS]}const iS=Symbol.for("better-auth:online-manager");var $$e=class{constructor(){Bo(this,"listeners",new Set);Bo(this,"isOnline",typeof navigator<"u"?navigator.onLine:!0)}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}
761setOnline(e){this.isOnline=e,this.listeners.forEach(t=>t(e))}setup(){if(typeof window>"u"||typeof window.addEventListener>"u")return()=>{};const e=()=>this.setOnline(!0),t=()=>this.setOnline(!1);return window.addEventListener("online",e,!1),window.addEventListener("offline",t,!1),()=>{window.removeEventListener("online",e,!1),window.removeEventListener("offline",t,!1)}}};function lS(){return globalThis[iS]||(globalThis[iS]=new $$e),globalThis[iS]}const bm=()=>Math.floor(Date.now()/1e3);function E3(e){return typeof e=="object"&&e!==null&&"data"in e&&"error"in e?e:{data:e,error:null}}const w$e=5;function k$e(e){const{sessionAtom:t,sessionSignal:n,$fetch:a,options:s={}}=e,r=s.sessionOptions?.refetchInterval??0,i=s.sessionOptions?.refetchOnWindowFocus??!0,c=s.sessionOptions?.refetchWhenOffline??!1,d={lastSync:0,lastSessionRequest:0,cachedSession:void 0},m=()=>c||lS().isOnline,f=k=>{if(!m())return;if(k?.event==="storage"){d.lastSync=bm(),n.set(!n.get());return}const T=t.get(),R=()=>{d.lastSessionRequest=bm(),a("/get-session").then(async _=>{let{data:P,error:j}=E3(_);if(P?.needsRefresh)try{const I=await a("/get-session",{method:"POST"});({data:P,error:j}=E3(I))}catch{}const N=P?.session&&P?.user?P:null;t.set({...T,data:N,error:j}),d.lastSync=bm(),n.set(!n.get())}).catch(()=>{})};if(k?.event==="poll"){R();return}if(k?.event==="visibilitychange"){if(bm()-d.lastSessionRequest<w$e)return;d.lastSessionRequest=bm()}if(k?.event==="visibilitychange"){R();return}(T?.data===null||T?.data===void 0)&&(d.lastSync=bm(),n.set(!n.get()))},p=k=>{sS().post({event:"session",data:{trigger:k},clientId:Math.random().toString(36).substring(7)})},y=()=>{r&&r>0&&(d.pollInterval=setInterval(()=>{t.get()?.data&&f({event:"poll"})},r*1e3))},v=()=>{d.unsubscribeBroadcast=sS().subscribe(()=>{f({event:"storage"})})},$=()=>{i&&(d.unsubscribeFocus=M3().subscribe(()=>{f({event:"visibilitychange"})}))},x=()=>{d.unsubscribeOnline=lS().subscribe(k=>{k&&f({event:"visibilitychange"})})};return{init:()=>{y(),v(),$(),x(),sS().setup(),M3().setup(),lS().setup()},cleanup:()=>{d.pollInterval&&(clearInterval(d.pollInterval),d.pollInterval=void 0),d.unsubscribeBroadcast&&(d.unsubscribeBroadcast(),d.unsubscribeBroadcast=void 0),d.unsubscribeFocus&&(d.unsubscribeFocus(),d.unsubscribeFocus=void 0),d.unsubscribeOnline&&(d.unsubscribeOnline(),d.unsubscribeOnline=void 0),d.lastSync=0,d.lastSessionRequest=0,d.cachedSession=void 0},triggerRefetch:f,broadcastSessionUpdate:p}}function C$e(e,t){const n=U9(!1),a=s$e(n,"/get-session",e,{method:"GET"});let s=()=>{};return B9(a,()=>{const r=k$e({sessionAtom:a,sessionSignal:n,$fetch:e,options:t});return r.init(),s=r.broadcastSessionUpdate,()=>{r.cleanup()}}),{session:a,$sessionSignal:n,broadcastSessionUpdate:r=>s(r)}}function cS(e){if(e===null||typeof e!="object")return!1;const t=Object.getPrototypeOf(e);return t!==null&&t!==Object.prototype&&Object.getPrototypeOf(t)!==null||Symbol.iterator in e?!1:Symbol.toStringTag in e?Object.prototype.toString.call(e)==="[object Module]":!0}function xR(e,t,n=".",a){if(!cS(t))return xR(e,{},n,a);const s={...t};for(const r of Object.keys(e)){if(r==="__proto__"||r==="constructor")continue;const i=e[r];i!=null&&(a&&a(s,r,i,n)||(Array.isArray(i)&&Array.isArray(s[r])?s[r]=[...i,...s[r]]:cS(i)&&cS(s[r])?s[r]=xR(i,s[r],(n?`${n}.`:"")+r.toString(),a):s[r]=i))}return s}function S$e(e){return(...t)=>t.reduce((n,a)=>xR(n,a,"",e),{})}const A$e=S$e();var T$e=Object.defineProperty,R$e=Object.defineProperties,P$e=Object.getOwnPropertyDescriptors,I3=Object.getOwnPropertySymbols,_$e=Object.prototype.hasOwnProperty,j$e=Object.prototype.propertyIsEnumerable,O3=(e,t,n)=>t in e?T$e(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,tr=(e,t)=>{for(var n in t||(t={}))_$e.call(t,n)&&O3(e,n,t[n]);if(I3)for(var n of I3(t))j$e.call(t,n)&&O3(e,n,t[n]);return e},Fr=(e,t)=>R$e(e,P$e(t)),N$e=class extends Error{constructor(e,t,n){super(t||e.toString(),{cause:n}),this.status=e,this.statusText=t,this.error=n,Error.captureStackTrace(this,this.constructor)}},D$e=async(e,t)=>{var n,a,s,r,i,c;let d=t||{};const m={onRequest:[t?.onRequest],onResponse:[t?.onResponse],onSuccess:[t?.onSuccess],onError:[t?.onError],onRetry:[t?.onRetry]};if(!t||!t?.plugins)return{url:e,options:d,hooks:m};for(const f of t?.plugins||[]){if(f.init){const p=await((n=f.init)==null?void 0:n.call(f,e.toString(),t));d=p.options||d,e=p.url}m.onRequest.push((a=f.hooks)==null?void 0:a.onRequest),m.onResponse.push((s=f.hooks)==null?void 0:s.onResponse),m.onSuccess.push((r=f.hooks)==null?void 0:r.onSuccess),m.onError.push((i=f.hooks)==null?void 0:i.onError),m.onRetry.push((c=f.hooks)==null?void 0:c.onRetry)}return{url:e,options:d,hooks:m}},L3=class{constructor(e){this.options=e}shouldAttemptRetry(e,t){return this.options.shouldRetry?Promise.resolve(e<this.options.attempts&&this.options.shouldRetry(t)):Promise.resolve(e<this.options.attempts)}getDelay(){return this.options.delay}},M$e=class{constructor(e){this.options=e}shouldAttemptRetry(e,t){return this.options.shouldRetry?Promise.resolve(e<this.options.attempts&&this.options.shouldRetry(t)):Promise.resolve(e<this.options.attempts)}getDelay(e){return Math.min(this.options.maxDelay,this.options.baseDelay*2**e)}};function E$e(e){if(typeof e=="number")return new L3({type:"linear",attempts:e,delay:1e3});switch(e.type){case"linear":return new L3(e);case"exponential":return new M$e(e);default:throw new Error("Invalid retry strategy")}}var I$e=async e=>{const t={},n=async a=>typeof a=="function"?await a():a;if(e?.auth){if(e.auth.type==="Bearer"){const a=await n(e.auth.token);if(!a)return t;t.authorization=`Bearer ${a}`}else if(e.auth.type==="Basic"){const[a,s]=await Promise.all([n(e.auth.username),n(e.auth.password)]);if(!a||!s)return t;t.authorization=`Basic ${btoa(`${a}:${s}`)}`}else if(e.auth.type==="Custom"){const[a,s]=await Promise.all([n(e.auth.prefix),n(e.auth.value)]);if(!s)return t;t.authorization=`${a??""} ${s}`}}return t},O$e=/^application\/(?:[\w!#$%&*.^`~-]*\+)?json(;.+)?$/i;function L$e(e){const t=e.headers.get("content-type"),n=new Set(["image/svg","application/xml","application/xhtml","application/html"]);if(!t)return"json";const a=t.split(";").shift()||"";return O$e.test(a)?"json":n.has(a)||a.startsWith("text/")?"text":"blob"}function U$e(e){try{return JSON.parse(e),!0}catch{return!1}}function $R(e){if(e===void 0)return!1;const t=typeof e;return t==="string"||t==="number"||t==="boolean"||t===null?!0:t!=="object"?!1:Array.isArray(e)?!0:e.buffer?!1:e.constructor&&e.constructor.name==="Object"||typeof e.toJSON=="function"}function U3(e){try{return JSON.parse(e)}catch{return e}}function B3(e){return typeof e=="function"}function B$e(e){if(e?.customFetchImpl)return e.customFetchImpl;if(typeof globalThis<"u"&&B3(globalThis.fetch))return globalThis.fetch;if(typeof window<"u"&&B3(window.fetch))return window.fetch;throw new Error("No fetch implementation found")}async function F$e(e){const t=new Headers(e?.headers),n=await I$e(e);for(const[a,s]of Object.entries(n||{}))t.set(a,s);if(!t.has("content-type")){const a=z$e(e?.body);a&&t.set("content-type",a)}return t}function z$e(e){return $R(e)?"application/json":null}function q$e(e){if(!e?.body)return null;const t=new Headers(e?.headers);if($R(e.body)&&!t.has("content-type")){for(const[n,a]of Object.entries(e?.body))a instanceof Date&&(e.body[n]=a.toISOString());return JSON.stringify(e.body)}return t.has("content-type")&&t.get("content-type")==="application/x-www-form-urlencoded"&&$R(e.body)?new URLSearchParams(e.body).toString():e.body}function H$e(e,t){var n;if(t?.method)return t.method.toUpperCase();if(e.startsWith("@")){const a=(n=e.split("@")[1])==null?void 0:n.split("/")[0];return z9.includes(a)?a.toUpperCase():t?.body?"POST":"GET"}return t?.body?"POST":"GET"}function V$e(e,t){let n;return!e?.signal&&e?.timeout&&(n=setTimeout(()=>t?.abort(),e?.timeout)),{abortTimeout:n,clearTimeout:()=>{n&&clearTimeout(n)}}}
761var K$e=class F9 extends Error{constructor(t,n){super(n||JSON.stringify(t,null,2)),this.issues=t,Object.setPrototypeOf(this,F9.prototype)}};async function sx(e,t){const n=await e["~standard"].validate(t);if(n.issues)throw new K$e(n.issues);return n.value}var z9=["get","post","put","patch","delete"],G$e=e=>({id:"apply-schema",name:"Apply Schema",version:"1.0.0",async init(t,n){var a,s,r,i;const c=((s=(a=e.plugins)==null?void 0:a.find(d=>{var m;return(m=d.schema)!=null&&m.config?t.startsWith(d.schema.config.baseURL||"")||t.startsWith(d.schema.config.prefix||""):!1}))==null?void 0:s.schema)||e.schema;if(c){let d=t;(r=c.config)!=null&&r.prefix&&d.startsWith(c.config.prefix)&&(d=d.replace(c.config.prefix,""),c.config.baseURL&&(t=t.replace(c.config.prefix,c.config.baseURL))),(i=c.config)!=null&&i.baseURL&&d.startsWith(c.config.baseURL)&&(d=d.replace(c.config.baseURL,""));const m=c.schema[d];if(m){let f=Fr(tr({},n),{method:m.method,output:m.output});return n?.disableValidation||(f=Fr(tr({},f),{body:m.input?await sx(m.input,n?.body):n?.body,params:m.params?await sx(m.params,n?.params):n?.params,query:m.query?await sx(m.query,n?.query):n?.query})),{url:t,options:f}}}return{url:t,options:n}}}),W$e=e=>{async function t(n,a){const s=Fr(tr(tr({},e),a),{plugins:[...e?.plugins||[],G$e(e||{}),...a?.plugins||[]]});if(e?.catchAllError)try{return await wR(n,s)}catch(r){return{data:null,error:{status:500,statusText:"Fetch Error",message:"Fetch related error. Captured by catchAllError option. See error property for more details.",error:r}}}return await wR(n,s)}return t};function Y$e(e,t){const{baseURL:n,params:a,query:s}=t||{query:{},params:{},baseURL:""};let r=e.startsWith("http")?e.split("/").slice(0,3).join("/"):n||"";if(e.startsWith("@")){const p=e.toString().split("@")[1].split("/")[0];z9.includes(p)&&(e=e.replace(`@${p}/`,"/"))}r.endsWith("/")||(r+="/");let[i,c]=e.replace(r,"").split("?");const d=new URLSearchParams(c);for(const[p,y]of Object.entries(s||{})){if(y==null)continue;let v;if(typeof y=="string")v=y;else if(Array.isArray(y)){for(const $ of y)d.append(p,$);continue}else v=JSON.stringify(y);d.set(p,v)}if(a)if(Array.isArray(a)){const p=i.split("/").filter(y=>y.startsWith(":"));for(const[y,v]of p.entries()){const $=a[y];i=i.replace(v,$)}}else for(const[p,y]of Object.entries(a))i=i.replace(`:${p}`,String(y));i=i.split("/").map(encodeURIComponent).join("/"),i.startsWith("/")&&(i=i.slice(1));let m=d.toString();return m=m.length>0?`?${m}`.replace(/\+/g,"%20"):"",r.startsWith("http")?new URL(`${i}${m}`,r):`${r}${i}${m}`}var wR=async(e,t)=>{var n,a,s,r,i,c,d,m;const{hooks:f,url:p,options:y}=await D$e(e,t),v=B$e(y),$=new AbortController,x=(n=y.signal)!=null?n:$.signal,w=Y$e(p,y),S=q$e(y),k=await F$e(y),T=H$e(p,y);let R=Fr(tr({},y),{url:w,headers:k,body:S,method:T,signal:x});for(const O of f.onRequest)if(O){const V=await O(R);typeof V=="object"&&V!==null&&(R=V)}("pipeTo"in R&&typeof R.pipeTo=="function"||typeof((a=t?.body)==null?void 0:a.pipe)=="function")&&("duplex"in R||(R.duplex="half"));const{clearTimeout:_}=V$e(y,$);let P=await v(R.url,R);_();const j={response:P,request:R};for(const O of f.onResponse)if(O){const V=await O(Fr(tr({},j),{response:(s=t?.hookOptions)!=null&&s.cloneResponse?P.clone():P}));V instanceof Response?P=V:typeof V=="object"&&V!==null&&(P=V.response)}if(P.ok){if(!(R.method!=="HEAD"))return{data:"",error:null};const V=L$e(P),ne={data:null,response:P,request:R};if(V==="json"||V==="text"){const q=await P.text(),M=(r=R.jsonParser)!=null?r:U3;ne.data=await M(q)}else ne.data=await P[V]();R?.output&&R.output&&!R.disableValidation&&(ne.data=await sx(R.output,ne.data));for(const q of f.onSuccess)q&&await q(Fr(tr({},ne),{response:(i=t?.hookOptions)!=null&&i.cloneResponse?P.clone():P}));return t?.throw?ne.data:{data:ne.data,error:null}}const N=(c=t?.jsonParser)!=null?c:U3,I=await P.text(),z=U$e(I),E=z?await N(I):null,L={response:P,responseText:I,request:R,error:Fr(tr({},E),{status:P.status,statusText:P.statusText})};for(const O of f.onError)O&&await O(Fr(tr({},L),{response:(d=t?.hookOptions)!=null&&d.cloneResponse?P.clone():P}));if(t?.retry){const O=E$e(t.retry),V=(m=t.retryAttempt)!=null?m:0;if(await O.shouldAttemptRetry(V,P)){for(const q of f.onRetry)q&&await q(j);const ne=O.getDelay(V);return await new Promise(q=>setTimeout(q,ne)),await wR(e,Fr(tr({},t),{retryAttempt:V+1}))}}if(t?.throw)throw new N$e(P.status,P.statusText,z?E:I);return{data:null,error:Fr(tr({},E),{status:P.status,statusText:P.statusText})}},fd={};const Q$e=e=>{if(typeof process>"u")return;const t=e??"/api/auth";if(fd.NEXT_PUBLIC_AUTH_URL)return fd.NEXT_PUBLIC_AUTH_URL;if(typeof window>"u"){if(fd.NEXTAUTH_URL)try{return fd.NEXTAUTH_URL}catch{}if(fd.VERCEL_URL)try{const n=fd.VERCEL_URL.startsWith("http")?"":"https://";return`${new URL(`${n}${fd.VERCEL_URL}`).origin}${t}`}catch{}}},X$e=(e,t)=>
761{const n="credentials"in Request.prototype,a=c$e(e?.baseURL,e?.basePath)??Q$e(e?.basePath)??"/api/auth",s=e?.plugins?.flatMap(_=>_.fetchPlugins).filter(_=>_!==void 0)||[],r={id:"lifecycle-hooks",name:"lifecycle-hooks",hooks:{onSuccess:e?.fetchOptions?.onSuccess,onError:e?.fetchOptions?.onError,onRequest:e?.fetchOptions?.onRequest,onResponse:e?.fetchOptions?.onResponse}},{onSuccess:i,onError:c,onRequest:d,onResponse:m,...f}=e?.fetchOptions||{},p=W$e({baseURL:a,...n?{credentials:"include"}:{},method:"GET",jsonParser(_){return _?h$e(_,{strict:!1}):null},customFetchImpl:fetch,...f,plugins:[r,...f.plugins||[],...e?.disableDefaultFetchPlugins?[]:[y$e],...s]}),{$sessionSignal:y,session:v,broadcastSessionUpdate:$}=C$e(p,e),x=e?.plugins||[];let w={};const S={$sessionSignal:y,session:v},k={"/sign-out":"POST","/revoke-sessions":"POST","/revoke-other-sessions":"POST","/delete-user":"POST"},T=[{signal:"$sessionSignal",matcher(_){return _==="/sign-out"||_==="/update-user"||_==="/update-session"||_==="/sign-up/email"||_==="/sign-in/email"||_==="/delete-user"||_==="/verify-email"||_==="/revoke-sessions"||_==="/revoke-session"||_==="/revoke-other-sessions"||_==="/change-email"||_==="/change-password"},callback(_){_==="/sign-out"?$("signout"):(_==="/update-user"||_==="/update-session")&&$("updateUser")}}];for(const _ of x)_.getAtoms&&Object.assign(S,_.getAtoms?.(p)),_.pathMethods&&Object.assign(k,_.pathMethods),_.atomListeners&&T.push(..._.atomListeners);const R={notify:_=>{S[_].set(!S[_].get())},listen:(_,P)=>{S[_].subscribe(P)},atoms:S};for(const _ of x)_.getActions&&(w=A$e(_.getActions?.(p,R,e)??{},w));return{get baseURL(){return a},pluginsActions:w,pluginsAtoms:S,pluginPathMethods:k,atomListeners:T,$fetch:p,$store:R}};function Z$e(e){return typeof e=="object"&&e!==null&&"get"in e&&typeof e.get=="function"&&"lc"in e&&typeof e.lc=="number"}function J$e(e,t,n){const a=t[e],{fetchOptions:s,query:r,...i}=n||{};return a||(s?.method?s.method:i&&Object.keys(i).length>0?"POST":"GET")}function ewe(e,t,n,a,s){function r(i=[]){return new Proxy(function(){},{get(c,d){if(typeof d!="string"||d==="then"||d==="catch"||d==="finally")return;const m=[...i,d];let f=e;for(const p of m)if(f&&typeof f=="object"&&p in f)f=f[p];else{f=void 0;break}return typeof f=="function"||Z$e(f)?f:r(m)},apply:async(c,d,m)=>{const f="/"+i.map(k=>k.replace(/[A-Z]/g,T=>`-${T.toLowerCase()}`)).join("/"),p=m[0]||{},y=m[1]||{},{query:v,fetchOptions:$,...x}=p,w={...y,...$},S=J$e(f,n,p);return await t(f,{...w,body:S==="GET"?void 0:{...x,...w?.body||{}},query:v||w?.query,method:S,async onSuccess(k){if(await w?.onSuccess?.(k),!s||w.disableSignal)return;const T=s.filter(_=>_.matcher(f));if(!T.length)return;const R=new Set;for(const _ of T){const P=a[_.signal];if(!P)return;if(R.has(_.signal))continue;R.add(_.signal);const j=P.get();setTimeout(()=>{P.set(!j)},10),_.callback?.(f)}}})}})}return r()}function twe(e,t={}){const n=h.useRef(e.get()),{keys:a,deps:s=[e,a]}=t,r=h.useCallback(c=>{const d=m=>{n.current!==m&&(n.current=m,c())};return d(e.value),a?.length?a$e(e,a,d):e.listen(d)},s),i=()=>n.current;return h.useSyncExternalStore(r,i,i)}function nwe(e){return e.charAt(0).toUpperCase()+e.slice(1)}function awe(e){return`use${nwe(e)}`}function owe(e){const{pluginPathMethods:t,pluginsActions:n,pluginsAtoms:a,$fetch:s,$store:r,atomListeners:i}=X$e(e),c={};for(const[d,m]of Object.entries(a))c[awe(d)]=()=>twe(m);return ewe({...n,...c,$fetch:s,$store:r},s,t,a,i)}const q9="656641945139-pkvmm6qsrs1q64t7gpc64q7ia55nsb13.apps.googleusercontent.com",swe=!!q9,Tg=owe({baseURL:`${sj()}/auth`,fetchOptions:{credentials:"include"},plugins:[Qxe(),Yxe(),Zxe({clientId:q9})]}),rwe="Signup access",iwe="Controlled-launch registration gate. Approved emails, domains, existing users, and active admins can create accounts.",lwe="Signup access allowlist",cwe="No allowlist entries",dwe="Email / domain",uwe="Note",mwe="Status",pwe="Registration",fwe="Expires",gwe="Invites",hwe="Updated",ywe="Action",vwe="Add",bwe="Bulk add",xwe="Edit",$we="Save",wwe="Invite",kwe="Restore",Cwe="Remove",Swe="Add signup access",Awe="Edit {{email}}",Twe="Bulk add signup access",Rwe="Add a specific email or a whole domain with @company.com. Existing users and active admins are always allowed.",Pwe="Paste one email or @domain per line. Invalid and duplicate rows will be skipped.",_we="Email or domain",jwe="[email protected] or @company.com",Nwe="Use @company.com to approve an entire domain.",Dwe="Note (optional)",Mwe="e.g. founding team",Ewe="Expiry (optional)",Iwe="Leave empty for no expiry. Expired entries no longer allow new signups.",Owe="Emails / domains",Lwe=`[email protected]
762[email protected]
763@partner.com`,Uwe="Search",Bwe="Search email or domain",Fwe="Status",zwe="Access check",qwe="[email protected]",Hwe="Check",Vwe="Allowed",Kwe="Denied",Gwe={existing_user:"Existing user always allowed",active_admin:"Active admin always allowed",email_allowlist:"Matched exact email",domain_allowlist:"Matched domain rule",not_allowed:"No active rule matched"},Wwe="Registered",Ywe="Not registered",Qwe="Admin",Xwe="Domain rule",Zwe="Never",Jwe="Added to signup access.",e0e="Signup access updated.",t0e="Added {{count}}
763 entries.",n0e="Invite sent.",a0e="Entry restored.",o0e="Removed from signup access.",s0e="Remove {{email}} from signup access? They can no longer create a new account unless another rule allows them.",r0e={title:"Email domain rules",description:"Hot-configurable email-domain lists layered on the built-in baseline. Blacklisted domains are blocked at signup; mainstream domains skip the watchlist.",add:"Add domain",addTitle:"Add domain rule",addDescription:"Blacklist blocks signup (403). Mainstream marks the domain as trusted so new users are not watchlisted.",kindLabel:"List",kindBlacklist:"Blacklist — block signup",kindMainstream:"Mainstream — skip watchlist",domainLabel:"Domain",domainPlaceholder:"example.com",noteLabel:"Note",notePlaceholder:"Optional — why this domain",search:"Search",searchPlaceholder:"Filter by domain",kindFilter:"List",allKinds:"All lists",statusFilter:"Status",statusActive:"Active",statusRevoked:"Removed",statusAll:"All",label:"Email domain rules",empty:"No domain rules",colDomain:"Domain",colKind:"List",colNote:"Note",colAddedBy:"Added by",colCreated:"Created",status:"Status",action:"Action",remove:"Remove",restore:"Restore",confirmRemove:"Remove rule for {{domain}}?",added:"Domain rule added",removed:"Domain rule removed",restored:"Domain rule restored",badgeBlacklist:"Blacklist",badgeMainstream:"Mainstream"},i0e={title:rwe,description:iwe,label:lwe,empty:cwe,email:dwe,note:uwe,status:mwe,registration:pwe,expiresAt:fwe,invites:gwe,updatedAt:hwe,action:ywe,add:vwe,bulkAdd:bwe,edit:xwe,save:$we,invite:wwe,restore:kwe,revoke:Cwe,newTitle:Swe,editTitle:Awe,bulkTitle:Twe,formDescription:Rwe,bulkDescription:Pwe,emailLabel:_we,emailPlaceholder:jwe,emailHint:Nwe,noteLabel:Dwe,notePlaceholder:Mwe,expiresAtLabel:Ewe,expiresAtHint:Iwe,bulkEntriesLabel:Owe,bulkEntriesPlaceholder:Lwe,search:Uwe,searchPlaceholder:Bwe,statusFilter:Fwe,checkLabel:zwe,checkPlaceholder:qwe,check:Hwe,checkAllowed:Vwe,checkDenied:Kwe,checkReasons:Gwe,registered:Wwe,notRegistered:Ywe,adminAllowed:Qwe,domainRule:Xwe,never:Zwe,added:Jwe,updated:e0e,bulkAdded:t0e,invited:n0e,restored:a0e,revoked:o0e,confirmRevoke:s0e,domainRules:r0e},l0e="Ops Billing",c0e="Payments, wallets and refunds across all users.",d0e={payments:"Payments",wallets:"Wallets",refunds:"Refunds"},u0e="User email",m0e="Search by email...",p0e="Created",f0e="Created",g0e="Amount (USD)",h0e="Min",y0e="Max",v0e="Refunds",b0e="No refunds",x0e="Refund",$0e="Type",w0e="Full refund",k0e="Partial refund",C0e="Original payment",S0e="Wallets",A0e="Wallet",T0e="User",R0e="Total",P0e="Purchased",_0e="Bonus",j0e="No wallets",N0e="Payments",D0e="Payment status",M0e="No payments",E0e="Payment",I0e="Status",O0e="Amount",L0e="Paid",U0e="Refund",B0e="Not refundable (status must be paid)",F0e="View in Stripe Dashboard",z0e="Failed + dead-letter webhooks in last 7 days. 0=green, 1-9=yellow, 10+=red.",q0e="unhealthy",H0e="Refund {{id}}",V0e="This will refund {{user}} via Stripe. The platform fee shown below is deducted from the amount returned; uncheck it to waive. Promotional credits granted with the original payment will be forfeited proportionally.",K0e="Refund amount (USD)",G0e="Max ${{value}}",W0e="Reason",Y0e="جارٍ تحميل معاينة الاسترداد…",Q0e="تعذّر تحميل معاينة الاسترداد. لا يمكن تنفيذ الاسترداد حتى يتم تحميل المعاينة.",X0e="لم يتم العثور على معاملة قابلة للاسترداد — ربما تم استرداد هذه الدفعة بالكامل بالفعل.",Z0e="المبلغ المدفوع",J0e="المسترد سابقًا",eke="هذا الاسترداد",tke="الرصيد المستردّ",nke="يشمل {{amount}} من رصيد خصم القسيمة المستردّ بشكل تناسبي",ake="يشمل {{amount}} من الرصيد الإضافي الممنوح المستردّ بشكل تناسبي",oke="إلغاء المكافأة",ske="سيؤدي هذا الاسترداد إلى إلغاء المكافأة الترويجية بقيمة {{amount}}.",rke="الإرجاع عبر Stripe",ike="خصم رسوم المنصة ({{fee}}
763) — لتغطية تكلفة معالجة Stripe",lke="رسوم المنصة ({{fee}})",cke="المبلغ يتجاوز الحد الأقصى القابل للاسترداد {{value}}",dke="أدخل مبلغًا موجبًا صالحًا",uke="استهلك المستخدم جزءًا من الرصيد المشترى بالفعل. الحد الأقصى للاسترداد: {{value}}",mke="تم استرداد هذه الدفعة بالكامل بالفعل",pke="صافي المبلغ بعد الرسوم صغير جدًا. استرد {{value}} على الأقل.",fke="Cancel",gke="Issue refund",hke="Submitting...",yke="Refund submitted",vke="Stripe will return the funds within 1-3 business days. Audit log written.",bke="Refund failed",xke={title:l0e,description:c0e,tabs:d0e,emailFilter:u0e,emailPlaceholder:m0e,created:p0e,createdRange:f0e,amountRange:g0e,amountMin:h0e,amountMax:y0e,refunds:v0e,noRefunds:b0e,refundId:x0e,refundType:$0e,typeRefund:w0e,typePartialRefund:k0e,originalPayment:C0e,wallets:S0e,wallet:A0e,user:T0e,total:R0e,purchased:P0e,bonus:_0e,noWallets:j0e,payments:N0e,paymentStatus:D0e,noPayments:M0e,payment:E0e,status:I0e,amount:O0e,paid:L0e,refund:U0e,notRefundable:B0e,viewInStripe:F0e,webhookHealthHint:z0e,unhealthyWebhooks:q0e,refundConfirmTitle:H0e,refundConfirmBody:V0e,refundAmountLabel:K0e,refundMaxHint:G0e,refundReasonLabel:W0e,refundPreviewLoading:Y0e,refundPreviewFailed:Q0e,refundNoRefundableTx:X0e,refundPaidRow:Z0e,refundAlreadyRefundedRow:J0e,refundThisRefundRow:eke,refundCreditReclaimRow:tke,refundCreditCouponNote:nke,refundCreditExtraNote:ake,refundBonusReverseRow:oke,refundBonusForfeitWarning:ske,refundStripeReturnRow:rke,refundFeeToggle:ike,refundPlatformFeeRow:lke,refundExceedsMax:cke,refundAmountInvalid:dke,refundInsufficientCredit:uke,refundAlreadyFull:mke,refundBelowMin:pke,cancel:fke,confirmRefund:gke,submitting:hke,refundSubmittedTitle:yke,refundSubmittedBody:vke,refundFailedTitle:bke},$ke="Campaigns",wke="Audience segments, restricted-model access, model discounts, and targeted credit grants.",kke={mobileLabel:"قسم الحملات",segments:"Audiences",access:"Model access",discounts:"Model discounts",grants:"Targeted grants",recurring:"Periodic grants"},Cke="Status",Ske="Actions",Ake="All users",Tke="Always",Rke="No expiry",Pke="Active window",_ke="Leave blank for always-on. Times are end-of-day on the chosen dates.",jke="Valid from",Nke="Valid to",Dke="Pause",Mke="Resume",Eke="Add",Ike="Remove",Oke="Delete",Lke="Clear",Uke="Close",Bke={allKinds:"كل الأنواع",segmentKindStatic:"ثابتة",segmentKindDynamic:"ديناميكية",grantKindGrant:"منح",grantKindRevoke:"سحب",allStatuses:"كل الحالات",statusActive:"نشطة",statusPaused:"متوقفة مؤقتًا",statusArchived:"مؤرشفة",statusEnded:"منتهية",statusPending:"قيد الانتظار",statusProcessing:"قيد المعالجة",statusCompleted:"مكتملة",statusFailed:"فشلت"},Fke={title:"Audiences",create:"New audience",empty:"No audiences yet. Create one to target access, discounts, and grants.",name:"Name",namePlaceholder:"e.g. China power users",description:"Description",kind:"Kind",kind_static:"Static",kind_dynamic:"Dynamic",kindHint:"Static = a hand-picked list of users. Dynamic = users matching a rule, refreshed on materialize.",members:"Members",materialized:"Last refreshed",materializeDone:"Materialized {{count}} members",basics:"Basics",sheetDescription:"Audiences group users so you can target model access, discounts, and grants.",saved:"Audience saved",created:"Audience created",rule:"Matching rule",ruleHint:"All conditions must match (AND). An empty rule matches no one.",countryIn:"Country in",countryInHint:"Comma-separated ISO-2 codes, e.g. CN, US, JP.",signupAfter:"Signed up after",signupBefore:"Signed up before",minSpend:"Min cumulative spend (USD)",minSpendHint:"Only users whose lifetime spend is at least this.",previewing:"Estimating…",matchCount:"Estimated match: {{value}} users",membersTitle:"Members",membersHint:"Search and add users. Rule-matched members are read-only.",addMembers:"Add users",searchUsers:"Search by email or ID",noUsers:"No matching users.",noMembers:"No members yet.",membersAdded:"{{count}} member added",membersAdded_plural:"{{count}} members added",source_manual:"Manual",source_rule:"Rule",materializeTitle:"Materialize",materializeHint:"Snapshot the rule into the member list. Re-run anytime to refresh.",materialize:"Materialize now",materializing:"Materializing…",materializeConfirm:"Refresh members from the current rule? This replaces the rule-matched snapshot.",lastMaterialized:"Last materialized {{value}}",neverMaterialized:"Never materialized",deleteSegment:"Delete audience",deleteConfirm:"Delete this audie
763nce? Access, discounts, and grants referencing it will lose this targeting."},zke={title:"Model access",create:"Grant access",empty:"No access grants yet.",model:"Model",segment:"Audience",target:"Target",validFrom:"Valid from",validTo:"Valid to",sheetDescription:"Give a restricted model to an audience for an optional time window.",created:"Access granted",statusUpdated:"Status updated",deleteConfirm:"Remove this access grant?",noSegmentsTitle:"Create an audience first",noSegmentsDescription:"Access is granted to an audience. Create an audience on the Audiences tab, then come back to grant model access.",publicHint:"This model is public — everyone can already use it.",publicModelTitle:"Model is public",publicModelWarning:"{{model}} is public, so this grant has no effect until it is set to restricted on the Models page. Flip it to restricted there to gate it to this audience.",createAnyway:"Create anyway"},qke={title:"Model discounts",create:"New discount",empty:"No discounts yet.",model:"Model",audience:"Audience",audienceHint:"Leave as all users to discount for everyone.",discount:"Discount",window:"Window",live:"Live",end:"End",amount:"Discount",target:"Target",name:"Internal name",nameHint:"Optional label for your own reference.",percentLabel:"Extra off the platform price",percentHint:"1–99%. Applied on top of our platform price (our_price), not the official price.",percentError:"Enter a value between 1 and 99.",previewPlatform:"Discounted platform price",previewVsOfficial:"Saved vs official",pickStart:"Pick a start date",sheetDescription:"Discounts apply on top of the platform price. The official price is shown for comparison only.",created:"Discount created",saved:"Discount saved",statusUpdated:"Status updated",deleteConfirm:"Delete this discount?",liveReadonly:"This discount is live — value, window, and name are locked. Pause or end it to make changes.",terminalReadonly:"This discount has ended and is read-only."},Hke={title:"Targeted grants",create:"New grant",empty:"No targeted grants yet.",time:"Time",kind:"Kind",kind_grant:"Grant",kind_revoke:"Revoke",model:"Models",modelHint:"Credit is shared across the selected models — spending on any of them draws from the same balance.",pickModels:"Pick models",nModels:"{{count}} models selected",pasteEmails:"Bulk add by email",pasteEmailsPlaceholder:"[email protected], [email protected] — separated by newline, comma or semicolon",importEmails:"Parse & add",importMatched:"Matched {{count}} users.",importUnmatched:"{{count}} emails not found:",importInvalid:"{{count}} invalid entries skipped:",importInactive:"{{count}} matched but inactive — will be skipped:",preset7d:"7 days",preset30d:"30 days",preset90d:"90 days",total:"Total",notifyYes:"Yes",notifyNo:"No",recipients:"Recipients",amount:"Amount",expiry:"Expires",expiryHint:"Optional. Unused balance expires on this date.",audience:"Audience",bySegment:"By audience",byUsers:"Specific users",segment:"Audience",users:"Users",searchUsers:"Search by email or ID",noUsers:"No matching users.",grantDetails:"Grant details",amountEach:"Amount per recipient (USD)",amountHint:"0.01–2000 per recipient.",notifyEmail:"Email recipients",note:"Note",summary:"{{count}} recipients × {{amount}} = {{total}} total",send:"Send grant",sending:"Queuing…",queued:"Grant queued — fanning out to recipients",confirmTitle:"Send targeted grant?",confirmMessage:"Grant {{amount}} each to {{count}} recipients ({{total}} total)?",confirmSend:"Send grant",sheetDescription:"Grant model-restricted credit to an audience or a hand-picked list of users.",batchTitle:"Grant batch",succeeded:"Succeeded",failed:"Failed",revokedAmount:"Reclaimed",completedAt:"Completed",revoke:"Revoke",revokeConfirm:"Reclaim unused balance from {{count}} recipients of {{model}}?",revokeQueued:"Revoke queued"},Vke={title:"Periodic grants",create:"New periodic grant",editTitle:"Edit periodic grant",empty:"No periodic grants yet. Create one to give recurring free tokens or credit on a daily or weekly cadence.",sheetDescription:"Free tokens or restricted credit, refreshed for an audie
763nce every period (lazily, on first use).",basics:"Basics",name:"Name",namePlaceholder:"e.g. Daily free Kimi tokens",unit:"Unit",unitHint:"Tokens = free token allowance per period. USD = restricted credit (single model only).",unitLocked:"Unit is fixed after creation — create a new campaign to switch.",unit_tokens:"Tokens",unit_usd:"USD",allUnits:"All units",targeting:"Targeting",models:"Models",modelsHint:"Free tokens are usable across all selected models.",model:"Model",usdSingleModelHint:"USD grants are restricted to one model — multi-model would make spend unattributable.",pickModels:"Pick models",nModels:"{{count}} model selected",nModels_plural:"{{count}} models selected",audience:"Audience",audienceHint:"Leave as all users to grant to everyone.",schedule:"Amount & schedule",perPeriod:"Per period",tokensHint:"Positive integer, e.g. 100000 tokens per period.",usdHint:"0.01–2000 USD per period.",cadence:"Cadence",cadence_daily:"Daily",cadence_weekly:"Weekly",anchorTz:"Anchor timezone",anchorTzHint:"Period boundaries follow local midnight in this timezone.",startsAt:"Starts",startsAtHint:"Optional. Blank = effective immediately.",endsAt:"Ends",endsAtHint:"Optional. Blank = no end date.",immediately:"Immediately",excludeRisky:"Exclude risky accounts",thisPeriod:"This period (users · used/granted)",allStatuses:"All statuses",status_draft:"Draft",status_active:"Active",status_paused:"Paused",status_archived:"Archived",created:"Periodic grant created",saved:"Periodic grant saved"},Kke={title:$ke,description:wke,tabs:kke,status:Cke,actions:Ske,allUsers:Ake,always:Tke,noExpiry:Rke,window:Pke,windowHint:_ke,validFrom:jke,validTo:Nke,pause:Dke,resume:Mke,actionAdd:Eke,actionRemove:Ike,actionDelete:Oke,actionClear:Lke,actionClose:Uke,filters:Bke,segments:Fke,access:zke,discounts:qke,grants:Hke,recurring:Vke},Gke="Announcements",Wke="Banners shown at the top of the marketing site and the console.",Yke="Banners",Qke="Top-of-page banners shown on www and console.",Xke="New Banner",Zke="No banners yet. Create one to show a top-of-page announcement.",Jke="Message",eCe="Supports inline links: [text](https://… or /path). Multiple links allowed.",tCe="CTA Label",nCe="CTA Link",aCe="Severity",oCe="Audience",sCe="Starts At",rCe="Ends At",iCe="Dismissible",lCe="Status",cCe="Archive",dCe="Archive this banner? It will no longer be shown to users.",uCe="New Banner",mCe="Edit Banner",pCe="Title",fCe="Type",gCe="Content",hCe="Display type",yCe="Banner",vCe="Modal",bCe="Draft",xCe="Active",$Ce="Info",wCe="Warning",kCe="Critical",CCe="Console only",SCe="Public site only",ACe="Both",TCe="Hero image",RCe="Upload an image, or paste an https URL. Optional. PNG / JPEG / WebP / GIF, up to 5MB.",PCe="Upload",_Ce="Uploading…",jCe="Remove",NCe="Only PNG, JPEG, WebP and GIF images are supported.",DCe="Image must be 5MB or smaller.",MCe="Upload failed, please try again.",ECe="Title",ICe="Body",OCe="Action buttons",LCe="Button label",UCe="Button link",BCe="Style",FCe="Add button",zCe="Remove",qCe="Primary",HCe="Secondary",VCe="Link",KCe="Simplified Chinese (source)",GCe="Fill in Simplified Chinese only, then translate to other languages in one click.",WCe="Translate to all languages",YCe="Translating…",QCe="Other languages (translated, editable)",XCe="Translated {{ok}} languages",ZCe="{{failed}} languages failed — fill in manually or retry",JCe="Chinese source changed but translations weren't refreshed — click Translate again or non-Chinese users will see outdated copy.",e1e="Re-show to users who already dismissed it",t1e="Fill in the Simplified Chinese body first.",n1e={title:Gke,description:Wke,annTitle:Yke,annDescription:Qke,annNewButton:Xke,annEmpty:Zke,annMessage:Jke,annInlineLinkHint:eCe,annCtaText:tCe,annCtaUrl:nCe,annSeverity:aCe,annAudience:oCe,annStartsAt:sCe,annEndsAt:rCe,annDismissible:iCe,annStatus:lCe,annArchive:cCe,annArchiveConfirm:dCe,annCreateTitle:uCe,annEditTitle:mCe,annColTitle:pCe,annColType:fCe,annColContent:gCe,annDisplayType:hCe,annTypeBanner:yCe,annTypeModal:vCe,annStatusDraft:bCe,annStatusActive:xCe,annSevInfo:$Ce,annSevWarning:wCe,annSevCritical:kCe,annAudConsole:CCe,annAudPublic:SCe,annAudAll:ACe,annHeroImage:TCe,annHeroImageHint:RCe,annHeroImageUpload:PCe,annHeroImageUploading:_Ce,annHeroImageRemove:jCe,annHeroImageBadType:NCe,annHeroImageTooLarge:DCe,annHeroImageUploadFailed:MCe,annModalTitle:ECe,annBody:ICe,annActions:OCe,annActionLabel:LCe,annActionUrl:UCe,annActionVariant:BCe,annActionAdd:FCe,annActionRemove:zCe,annVariantPrimary:qCe,annVariantSecondary:HCe,annVariantLink:VCe,annSourceLocale:KCe,annSourceHint:GCe,annTranslate:WCe,annTranslating:YCe,annOtherLocales:QCe,annTranslateDone:XCe,annTranslateParti
763al:ZCe,annTranslateStale:JCe,annBumpRevision:e1e,annTranslateNeedSource:t1e},a1e="Operations dashboard",o1e="Real-time overview of platform health, usage, and alerts.",s1e="Refresh",r1e="Refreshing",i1e="Updated {{time}}",l1e="Loading dashboard",c1e="Failed to load dashboard",d1e="No data",u1e="No traffic yet",m1e="Video fail rate",p1e="Avg latency",f1e="Error types",g1e="No errors",h1e="Model anomalies",y1e="All models healthy",v1e="Components",b1e="req",x1e="Checkout abandon",$1e="Refunds",w1e="Chargebacks",k1e="First-charge conversion",C1e={kpis:"Key metrics",alerts:"Alerts",health:"System health",payment:"Payment health",revenue:"Revenue & growth",trend:"Trend",alertSettings:"Alert settings",leaderboard:"Growth leaderboards"},S1e={title:"Referral leaderboard",boardAria:"Select leaderboard",rangeAria:"Select time range",boards:{invites:"Invites",revenue:"Referred revenue"},ranges:{today:"Today","3d":"3d","7d":"7d","30d":"30d"},ofTotal:"of {{total}}",countPair:"{{valid}} / {{total}} valid",empty:"No referrals in this window",failedLoad:"Failed to load leaderboard",validHint:"Valid = normal risk status + active binding"},A1e={requests:"Requests",successRate:"Payment success",activeUsers:"Active users",newSignups:"New signups",newSignupsHint:"المستخدمون العاديون فقط (باستثناء المُعلَّمين)",billedCredit:"Billed credit",errorRate:"Error rate",avgLatency:"Avg latency",balance:"Platform balance",vsPrevious:"{{delta}} vs previous",vsYesterday:"vs yesterday",noChange:"No change",successFailed:"{{success}} ok · {{failed}} fail"},T1e={today:"Revenue today",trendTitle:"Revenue today vs yesterday",monthDetail:"{{count}} charges · MTD {{mtd}}"},R1e={summary:"{{paid}} paid · {{failed}} failed · {{pending}} pending"},P1e={paidOfSignups:"{{paid}} first-charged / {{signups}} signups"},_1e={healthy:"Healthy",degraded:"Degraded",down:"Down",unknown:"Unknown"},j1e={critical:"Critical",warning:"Warning",info:"Info",ok:"Healthy"},N1e={operational:"Operational",degraded:"Degraded",down:"Down",upstream:"Upstream channels",gateway:"Gateway",billing:"Billing",jobs:"Job queue",tierReason:{ok:"Healthy",watch:"Watch: nearing threshold",warning:"Warning: over warn line",critical:"Critical: over crit line"}},D1e={title:"Active alerts",empty:"All systems operational",activeCount:"{{count}} active alerts",triggeredAt:"Triggered {{time}}",viewDetail:"View detail",acknowledge:"Acknowledge",resolved:"Resolved"},M1e={title:"Alert settings",description:"Set warning / critical thresholds for the 6 alert types; ops is notified when a metric crosses the line. Severity is derived from the tier automatically.",enabled:"Enabled",warnThreshold:"Warning threshold",critThreshold:"Critical threshold",cooldown:"Cooldown (min)",cooldownHint:"Minimum gap between two notifications for the same alert, to prevent spam.",rateHint:"Rate, 0–1 (e.g. 0.05 = 5%).",countHint:"Absolute value, ≥ 0.",directionHigher:"Higher is worse: warning ≤ critical.",directionLower:"Lower is worse: warning ≥ critical.",lastFired:"Last fired {{time}}",neverFired:"Never fired",save:"Save all",saving:"Saving",saved:"Alert settings saved",saveError:"Failed to save",readonlyHint:"You have read-only access.",noData:"No alert settings",errors:{directionHigher:"Warning threshold must be ≤ critical threshold",directionLower:"Warning threshold must be ≥ critical threshold",rateRange:"Rate thresholds must be within 0–1",nonNegative:"Thresholds must be ≥ 0",cooldownNonNegative:"Cooldown must be ≥ 0",required:"Threshold is required"},types:{payment_success_rate_low:"Payment success rate low",gateway_error_rate_high:"Gateway error rate high",model_error_spike:"Model error spike",webhook_dead_letter:"Webhook dead letter backlog",system_component_down:"System component down",negative_balance_exposure:"Negative balance exposure"}},E1e={label:"Time range",today:"Today",days7:"7 days",days30:"30 days"},I1e="{{failed}}/{{total}} jobs",O1e="{{delta}}pt vs yesterday",L1e="Low sample ({{n}})",U1e="Had gateway calls",B1e="Last 7d cohort · normal users only",F1e="Refund rate {{rate}}%",z1e={funnel:"opened {{opened}} · paid {{paid}}"},q1e={title:a1e,description:o1e,refresh:s1e,refreshing:r1e,lastUpdated:i1e,loading:l1e,failedLoad:c1e,empty:d1e,noTraffic:u1e,videoFailRate:m1e,avgLatency:p1e,errorTypes:f1e,noErrors:g1e,modelAnomalies:h1e,noAnomalies:y1e,components:v1e,req:b1e,abandonRate:x1e,refunds:$1e,chargebacks:w1e,firstChargeConversion:k1e,sections:C1e,leaderboard:S1e,kpi:A1e,revenue:T1e,orders:R1e,conversion:P1e,componentStatus:_1e,severity:j1e,health:N1e,alerts:D1e,alertSettings:M1e,range:E1e,videoJobsDetail:I1e,vsYesterdayPt:O1e,lowSample:L1e,activeUsersHint:U1e,conversionCohortHint:B1e,refundRate:F1e,checkout:z1e},H1e="Loading...",V1e="Admin permission required",K1e="Your account does not have permission to access this administrator page.",G1e={loading:H1e,permissionRequired:V1e,permissionDescription:K1e},W1e="User growth",Y1e="Signup rewards, discount codes, referrals, and credit grants. Manual grants live on the Users page.",Q1e={mobileLabel:"قسم النمو",onboarding:"Signup & new users",discount:"Discount codes",referral:"Referral cashback",grants:"Credit grants",topup:"Top-up bonus",redeem:"رمز الاسترداد",tasks:"Task wall"},X1e="Coupon batch",Z1e="Promotion rule",J1e="Count",eSe="Batch code",tSe="Creating...",nSe="Create batch",aSe="{{count}} coupon code created",oSe="{{count}} coupon codes created",sSe="Batch {{code}}",rSe="Copied",iSe="Copy all",lSe="Credit grants",cSe="Source",dSe="Status",uSe="No grants yet",mSe="Coupon redemptions, signup bonuses, and manual grants appear here.",pSe="Time",fSe="User",gSe="Amount",hSe="Signup bonus",ySe="Controls the credit automatically granted to new users. Disable it to stop future signup grants.",vSe="Enable signup credit",bSe="Amount (USD)",xSe="Save signup bonus",$Se="Saving...",wSe="Current amount {{amount}}",kSe="Referral cashback",CSe="Configure double-sided referral rewards, release delay, caps, and billing-page messaging.",SSe="Enable referral cashback",ASe="Reward tiers",TSe="Add tier",RSe="Recipient",PSe="From day",_Se="Until day",jSe="Percent",NSe="Label",DSe="Action",MSe="Inviter",ESe="Invitee",ISe="No end",OSe="Remove tier",LSe="Release delay (days)",USe="Per-topup cap (USD)",BSe="Min topup (USD, blank = none)",FSe
763="Cashback expiry (days, blank = never)",zSe="Billing-page countdown banner",qSe="Banner title",HSe="Subtitle",VSe="Countdown mode",KSe="Global deadline",GSe="Each invitee's 30-day window",WSe="Ends at",YSe="Save referral settings",QSe="v{{version}}",XSe="Saving reward tiers, release delay, caps, or expiry publishes a NEW version. Existing referral relationships keep the version they were bound under — only new signups get the new terms. Pausing only affects new signups.",ZSe="Version history",JSe="Version",eAe="Status",tAe="Reward tiers",nAe="Published",aAe="Superseded",oAe="current",sAe="Top-up discount codes",rAe="Discount codes lower what users pay at checkout; the full top-up amount is credited only after payment succeeds. Configure here, then generate codes below.",iAe="Enable discount codes",lAe="Discount type",cAe="Fixed amount off (USD)",dAe="Percentage off (%)",uAe="Amount off (USD)",mAe="Percentage off (0-100)",pAe="Save discount",fAe="Default low-balance alert",gAe="New users get an email low-balance alert at this threshold by default. Changing it only affects future signups, not existing wallets.",hAe="Threshold (USD)",yAe="Save threshold",vAe="Current: {{amount}}",bAe="Generate codes against the discount rule above.",xAe="In effect: {{state}} · {{value}} off",$Ae="enabled",wAe="disabled",kAe="Issued codes",CAe="Pick a batch to see who redeemed each code.",SAe="No batches yet",AAe="Generate a batch above to start tracking redemptions.",TAe="Total",RAe="Redeemed",PAe="Reserved",_Ae="Available",jAe="Codes in {{code}}",NAe="No codes in this batch",DAe="Code",MAe="Redeemed by",EAe="Redeemed at",IAe="Paid",OAe="Discount",LAe="إنشاء رموز",UAe="الرمز المشترك هو رمز واحد يمكن لعدة مستخدمين استرداده حتى N مرة؛ أما دفعة الرموز الفريدة فهي N رمزًا للاستخدام مرة واحدة.",BAe="نوع الرمز",FAe="رمز مشترك واحد",zAe="دفعة رموز فريدة",qAe="نص الرمز (اتركه فارغًا لرمز عشوائي)",HAe="مثال: WELCOME100",VAe="إجمالي مرات الاستخدام (N)",KAe="لكل مستخدم",GAe="ينتهي في (اختياري)",WAe="مجموعة اختيارية",YAe="إنشاء رمز مشترك",QAe="تم إنشاء الرمز المشترك",XAe="استخدم خصمًا لهذه الدفعة (وإلا فالقاعدة أعلاه)",ZAe="الرموز المشتركة",JAe="رمز واحد لعدة مستخدمين. يتتبع عدد الاستخدام عمليات الاسترداد المدفوعة.",eTe="لا توجد رموز مشتركة بعد",tTe="المُستخدَم / الحد الأقصى",nTe="لكل مستخدم",aTe="ينتهي",oTe="تعطيل",sTe="تعطيل هذا الرمز؟",rTe="تُحظر عمليات الدفع الجديدة فورًا. أما الطلبات قيد الدفع بالفعل فيمكن إتمامها.",iTe="تم تعطيل الرمز",lTe="CSV",cTe="الحالة",dTe="البريد الإلكتروني",uTe={code:"الرمز",discount:"الخصم",redeemed:"تم الاسترداد",cap:"الحد الأقصى",perUser:"لكل مستخدم",status:"الحالة",expiresAt:"ينتهي في",batch:"الدفعة",createdAt:"تاريخ الإنشاء",redeemedBy:"استرده",redeemedAt:"تاريخ الاسترداد",paid:"مدفوع",discountAmount:"الخصم",email:"Email",credited:"Credited",bonus:"Bonus",paidAt:"Paid at"},mTe="Amount",pTe="Bound at",fTe="Counterparty",gTe="Invitee",hTe="Inviter",yTe="Rate",vTe="Released",bTe="Role",xTe="Tier",$Te="Top-up",wTe="Load more",kTe="No referrals under this version",CTe="No cashback under this version",STe="Referrals",ATe="Referral records",TTe="Cashback records",RTe="Version detail",PTe={title:"Top-up bonus",description:"Reward bigger top-ups with bonus credit. Each tier can grant general credit or credit restricted to a model group.",enabled:"Enable top-up bonus",saved:"Top-up bonus saved",tiers:"Bonus tiers",tiersHint:"Top-up matches the highest tier whose threshold it reaches. Restricted credit only applies to synchronous text/image calls — not video or async image jobs.",noTiers:"No tiers yet. Add one to start rewarding top-ups.",min:"Min top-up (USD)",rewardType:"Reward",bonus:"Fixed (USD)",percent:"Percent (%)",rewardBonus:"Bonus amount (USD)",rewardPercent:"Percent of top-up (%)",expiryDays:"Expiry (days, blank = never)",noExpiry:"Never",scope:"Credit scope",scopeHint:"General credit works on any model; a model group restricts the bonus to those models.",scopeGeneral:"General (any model)",removeTier:"Remove tier",addTier:"Add tier",antifraud:"Abuse guards",minTopup:"Min top-up to qualify (USD, blank = none)",maxBonusPerUser:"Max bonus per user (USD, blank = none)",none:"None",excludeRisky:"Exclude watchlisted / blocked users",save:"Save top-up bonus",createScope:"New restricted model group",createScopeDescription:"Pick the models a restricted bonus may be spent on, then reference this group from a tier above.",scopeName:"Group name",scopeNamePlaceholder:"High-margin models",scopeModels:"Models",pickModels:"Pick models",nModels:"{{count}} models",createScopeButton:"Create group",scopeCreated:"Model group created"},_Te="إنشاء رموز استرداد",jTe="رموز استرداد بنمط بطاقات الرصيد. يُدخل المستخدم رمز الاسترداد في صفحة الفوترة، وتُضاف القيمة الاسمية مباشرة إلى الرصيد (رصيد مُهدى، من دون دفع).",NTe="اسم الدفعة (اختياري)",DTe="مثال: Conf-2026 هدية",MTe="عدد الرموز المُنشأة",ETe="القيمة الاسمية لكل رمز (USD)",ITe="الحد لكل حساب في هذه الدفعة (اتركه فارغًا = بلا حد)",OTe="بلا حد",LTe="موعد انتهاء الاسترداد (اختياري)",UTe="Restrict to models (optional)",BTe="General balance (no restriction)",FTe="{{count}} models selected",zTe="Blank = general balance. Selected models share one earmarked pool.",qTe="Credit validity after redemption (days, blank = never expires)",HTe="never expires",VTe="{{n}} d",KTe="Models",GTe="Validity",WTe="General balance",YTe="إنشاء رموز استرداد",QTe='يُرجى حفظها فورًا. ويمكنك أيضًا استعادتها لاحقًا من قائمة الدفعات عبر "تصدير النص الصريح".',XTe="دفعات رموز الاسترداد",ZTe='انقر على الدفعة لعرض تفاصيل كل رمز؛ ويمكن لـ "تصدير النص الصريح" إعادة تصدير الرموز بنصها الصريح.',JTe="لا توجد دفعات رموز استرداد حاليًا",eRe="الدفعة",tRe="القيمة الاسمية",nRe="تصدير النص الصريح",aRe="هل تريد إلغاء هذا الرمز الذي تم استرداده؟",oRe="استرد الجزء غير المُستهلك من رصيد المستخدم؛ أما الجزء المُستهلك فلا يمكن استرجاعه.",sRe="إلغاء",rRe="تم إلغاء {{amount}}",iRe="تم تصدير رموز الاسترداد",lRe="هل تريد تعطيل الرموز غير المستردة في هذه الدفعة؟",cRe="ستصبح جميع الرموز التي لم تُسترد بعد غير صالحة؛ ولن تتأثر الرموز التي تم استردادها.",dRe="تم تعطيل {{n}} رمزًا",uRe="Bonus % on top-up",mRe="Bonus (%)",pRe="Bonus validity (days, optional)",fRe="blank = never expires",gRe={view:"Payments",title:"Payments via ····{{code}}",email:"User",credited:"Credited",bonus:"Bonus",summary:"{{count}} payments · {{users}} users · {{paid}} paid · {{bonus}} bonus granted",empty:"No payments through this code yet"},hRe={configTitle:"Task wall config",configDescription:"Amounts, switches and accepted hosts. Task copy lives in the translation files, not here. Changes take effect on the next page load — no deploy.",enabled:"Enable the task wall",tasksTitle:"Tasks",taskKey:"Task key",amount:"Amount (USD)",hosts:"Accepted hosts",hostsHint:"Links outside this list are rejected at submission time.",taskEnabled:"Visible to users",addTask:"Add task",guardsTitle:"Abuse guards",dailyCap:"Daily pending c
763ap",dailyCapHint:"0 = no cap. Fail-open if Redis is down.",minAge:"Minimum account age (days)",minAgeHint:"0 = no age gate.",saved:"Task wall saved",queueTitle:"Submissions",queueCount:"{{count}} shown",empty:"Nothing here.",approve:"Approve & pay",approved:"Approved — credit granted",reject:"Reject",rejected:"Rejected",confirmReject:"Confirm reject",reasonPlaceholder:"Why is this rejected?",duplicate:"Same link from {{count}} other account(s)",status:{pending:"Pending",approved:"Approved",rejected:"Rejected"}},yRe={title:W1e,description:Y1e,tabs:Q1e,couponBatch:X1e,promotionRule:Z1e,count:J1e,batchCode:eSe,creating:tSe,createBatch:nSe,codesCreated:aSe,codesCreated_plural:oSe,batch:sSe,copied:rSe,copyAll:iSe,creditGrants:lSe,source:cSe,status:dSe,noGrants:uSe,noGrantsDescription:mSe,time:pSe,user:fSe,amount:gSe,signupBonus:hSe,signupBonusDescription:ySe,signupBonusEnabled:vSe,signupBonusAmount:bSe,saveSignupBonus:xSe,saving:$Se,currentSignupBonus:wSe,referral:kSe,referralDescription:CSe,referralEnabled:SSe,referralRewardTiers:ASe,addTier:TSe,tierRole:RSe,tierFromDay:PSe,tierUntilDay:_Se,tierPercent:jSe,tierLabel:NSe,tierAction:DSe,roleReferrer:MSe,roleReferee:ESe,noEndDay:ISe,removeTier:OSe,releaseDelayDays:LSe,referralCap:USe,referralMinTopup:BSe,referralExpiryDays:FSe,bannerEnabled:zSe,bannerTitle:qSe,bannerSubtitle:HSe,bannerMode:VSe,bannerModeGlobal:KSe,bannerModeWindow:GSe,bannerEndsAt:WSe,saveReferral:YSe,referralVersion:QSe,referralPublishHint:XSe,referralVersionHistory:ZSe,versionCol:JSe,versionStatus:eAe,versionTiers:tAe,versionPublished:nAe,versionSuperseded:aAe,versionCurrent:oAe,discountRule:sAe,discountRuleDescription:rAe,discountEnabled:iAe,discountType:lAe,discountFixed:cAe,discountPercent:dAe,discountValueFixed:uAe,discountValuePercent:mAe,saveDiscount:pAe,defaultLowBalanceThreshold:fAe,defaultLowBalanceThresholdDescription:gAe,defaultLowBalanceThresholdAmount:hAe,saveDefaultLowBalanceThreshold:yAe,currentDefaultLowBalanceThreshold:vAe,couponBatchDescription:bAe,discountEffective:xAe,stateEnabled:$Ae,stateDisabled:wAe,couponTrace:kAe,couponTraceDescription:CAe,noBatches:SAe,noBatchesDescription:AAe,batchTotal:TAe,batchRedeemed:RAe,batchReserved:PAe,batchActive:_Ae,codesInBatch:jAe,noCodes:NAe,code:DAe,redeemedBy:MAe,redeemedAt:EAe,paid:IAe,discount:OAe,createIssuance:LAe,createIssuanceDescription:UAe,formLabel:BAe,formShared:FAe,formUniqueBatch:zAe,sharedCodeText:qAe,sharedCodeRandomHint:HAe,sharedMaxRedemptions:VAe,sharedPerUser:KAe,expiresAt:GAe,batchCodeOptional:WAe,createSharedCode:YAe,sharedCodeCreated:QAe,batchOwnDiscount:XAe,sharedCodesList:ZAe,sharedCodesListDescription:JAe,noSharedCodes:eTe,colRedeemedTotal:tTe,colPerUser:nTe,colExpiry:aTe,disableCode:oTe,disableCodeConfirmTitle:sTe,disableCodeConfirmMessage:rTe,codeDisabled:iTe,exportCsv:lTe,statusFilter:cTe,filterByEmail:dTe,csv:uTe,colAmount:mTe,colBoundAt:pTe,colCounterparty:fTe,colInvitee:gTe,colInviter:hTe,colRate:yTe,colReleasedAt:vTe,colRole:bTe,colTier:xTe,colTopup:$Te,loadMore:wTe,noBindings:kTe,noCashback:CTe,versionBindings:STe,versionBindingsSection:ATe,versionCashbackSection:TTe,versionDetail:RTe,topup:PTe,redeemCreate:_Te,redeemCreateDescription:jTe,redeemBatchName:NTe,redeemBatchNameHint:DTe,redeemCount:MTe,redeemFaceValue:ETe,redeemPerUserLimit:ITe,redeemUnlimited:OTe,redeemExpiresAt:LTe,redeemModels:UTe,redeemModelsAll:BTe,redeemModelsCount:FTe,redeemModelsHint:zTe,redeemValidityDays:qTe,redeemValidityForever:HTe,redeemValidityDaysValue:VTe,redeemColModels:KTe,redeemColValidity:GTe,redeemGeneralBalance:WTe,redeemCreateBtn:YTe,redeemRevealHint:QTe,redeemBatches:XTe,redeemBatchesDescription:ZTe,redeemNoBatches:JTe,redeemBatchCol:eRe,redeemFace:tRe,redeemReveal:nRe,redeemReverseTitle:aRe,redeemReverseMessage:oRe,redeemReverseBtn:sRe,redeemReversed:rRe,redeemRevealed:iRe,redeemDisableBatchTitle:lRe,redeemDisableBatchMessage:cRe,redeemBatchDisabled:dRe,discountTypeBonusPercent:uRe,discountValueBonusPercent:mRe,bonusExpiryDays:pRe,bonusExpiryDaysHint:fRe,sharedPayments:gRe,tasks:hRe},vRe="Models",bRe="Model catalog: create, edit, publish.",xRe={label:"Display badges",hint:"Hot / Benefit tags shown on the user-facing models & pricing page.",hot:"Hot",benefit:"Benefit"},$Re="Add model",wRe="Edit {{model}}",kRe="New model",CRe="Close",SRe="Basics & content save together; pricing and status changes apply immediately.",ARe="Create the model draft. Set pricing and publish after it exists.",TRe={basics:"Basics",basicsHint:"Identity, upstream mapping, protocols.",config:"Configuration",configHint:"Identity, upstream routing, type and capabilities.",protocols:"Protocols",protocolsHint:"Which API protocols this model serves.",content:"Content & display",contentHint:"i18n summary / description and sort order."},RRe="Provider slug",PRe="Pick a known provider or type a custom slug.",_Re="Model slug",jRe="Aliases",NRe="Comma-separated lookup aliases for import and review.",DRe="Source (customer-visible)",MRe="Label customers see on the model/logs. Blank = vendor. Use it to distinguish s
763ame-model variants at different prices.",ERe="Platform",IRe="— select platform —",ORe="Upstream model id (optional; choose from upstream or enter manually)",LRe="Choose from upstream...",URe="Upstream unavailable",BRe="Protocols",FRe="Input price / 1M (USD)",zRe="Output price / 1M (USD)",qRe="EN summary",HRe="Preview",VRe="(No summary)",KRe="No protocol",GRe="Cancel",WRe="Save",YRe="Create draft",QRe={basic:"Identity & routing",pricing:"Pricing",content:"Content & display"},XRe={config:"1 · Configuration",protocols:"2 · Protocols",pricing:"3 · Pricing",display:"Content & display",back:"Back",next:"Next",create:"Create model"},ZRe="Context window (tokens)",JRe="Max input the model accepts. Leave blank if unknown.",ePe="Max output tokens",tPe="Max tokens the model can generate per response.",nPe={status:"Status",visibility:"Visibility",hint:"Lifecycle changes apply immediately (with confirmation), separate from Save.",confirmStatus:'Set status to "{{status}}"? Takes effect immediately.',confirmVisibility:'Set visibility to "{{visibility}}"? Takes effect immediately.',statusChanged:"Status set to {{status}}.",visibilityChanged:"Visibility set to {{visibility}}.",publishBlocked:"Cannot publish: core pricing factors are missing. Set them in the Pricing tab first.",statusOption:{draft:"Draft",published:"Published",deprecated:"Deprecated",archived:"Archived"},visibilityOption:{public:"Public",hidden:"Hidden"},availability:"Availability",confirmAvailable:"Mark this model available again? Takes effect immediately.",confirmUnavailable:"Mark this model temporarily unavailable? It stays listed (greyed out) but gateway calls are rejected.",availableChanged:"Model marked available.",unavailableChanged:"Model marked temporarily unavailable.",availabilityOption:{available:"Available",unavailable:"Unavailable"},audience:"Audience",audienceOption:{everyone:"Everyone",paid_only:"Topped-up accounts only"},confirmPaidOnly:"Restrict this model to accounts that have topped up? It stays listed, but users who never paid get a 403 telling them to top up.",confirmEveryone:"Open this model to every account? Takes effect immediately.",paidOnlyChanged:"Model restricted to accounts that have topped up.",everyoneChanged:"Model opened to every account."},aPe="Input modalities",oPe="Declares what this model can receive, including vision, audio, video, and file inputs.",sPe="Output modalities",rPe="Drives the publish gate: text requires text in/out pricing, image/video/embeddings require their factors.",iPe="Image billing style",lPe="Video billing style",cPe="How the upstream charges for this output. Required before publishing — the gate demands the matching price factor.",dPe="— select billing style —",uPe="Per token (image_output_token)",mPe="Per image (per_call_image)",pPe="Per second (video_per_second)",fPe="Per call (video_per_call)",gPe="Display order",hPe="Must be a non-negative integer.",yPe="Editing locale",vPe="Upstream release date",bPe="Summary (this locale)",xPe="Description (Markdown, this locale)",$Pe={provider:"Provider",status:"Status",visibility:"Visibility",allStatuses:"All model statuses",allVisibility:"All visibility",allProviders:"All providers",search:"Search model slug",mobileTitle:"تصفية"},wPe={label:"Models",empty:"No models",model:"Model",provider:"Provider",source:"Source",status:"Status",visibility:"Visibility",action:"Action",edit:"Edit",setStatus:"Set status for {{model}}",setVisibility:"Set visibility for {{model}}",confirmSet:'Set {{model}} {{field}} to "{{value}}"?',sub2api:"Sub2API mapping",textPrice:"Price (in / out $/M)",priceByTokens:"{{kind}} · per-token",imageOutput:"image out",officialPrice:"List",saved:"-{{pct}}%"},kPe={invalidPrice:"Price must be a number greater than or equal to 0, or left blank.",highRisk:"This change affects live gateway routing and may cause 404s. Continue?",stale:"This model was changed by someone else. Close and reopen it before editing again."},CPe={savesImmediately:"Pricing changes apply immediately and are not controlled by Save.",createPriceFailed:"Model created, but some prices were not saved. Add them in the Pricing tab.",factors:{title:"Pricing factors",hint:"Each row is an atomic unit (text input/output, cache, image, …). Active rows determine billing from their effective date; history rows record past prices.",liveBanner:"Changes here apply immediately and are recorded in price history — they are not controlled by the bottom Save button.",draftHint:"Save the model draft first; pricing factors are edited inline after the model exists.",addFactor:"Add factor",changePrice:"Change price",expire:"Expire",confirmExpire:"Expire this factor row? It will stop applying immediately and move to history.",changeSaved:"Factor price updated.",expired:"Factor expired.",factor:"Factor",tier:"Tier",tierNone:"(no tier)",unit:"Unit",ourPrice:"Our price (USD)",officialPrice
763:"Official (USD)",officialAbbr:"official",source:"Source (optional URL or note, ≤128 chars)",historyLabel:"History ({{count}})",emptyTitle:"No active factor prices",empty:'Click "Add factor" to set one.',loadError:"Could not load pricing factors",draftEditorHint:"Set prices now, or leave empty and add them after the model is created.",draftEmpty:"No prices added yet.",remove:"Remove",factorOption:{text_input:"Text input (LLM)",text_output:"Text output (LLM)",cache_read:"Cache read",cache_write_5m:"Cache write (5m TTL)",cache_write_1h:"Cache write (1h TTL)",image_input_token:"Image input token",image_output_token:"Image output token",per_call_image:"Image (per call)",video_per_call:"Video (per call)",video_per_second:"Video (per second)",web_search_call:"Web search call"},unitOption:{per_1m_tokens:"per 1M tokens",per_image:"per image",per_call:"per call",per_second:"per second"},conditions:"Conditions JSON (optional)"},discount:{toggle:"Apply discount",hint:"Set every factor to a fraction of its official price (0.5 = 50% off). Free factors (our price 0) and factors with no official price are skipped.",rate:"Discount rate",preview:"Preview",apply:"Apply",allowMarkup:"Allow markup (rate above 1 prices above official)",noFactors:"No active factors to reprice.",confirmTitle:"Apply discount to all factors?",confirmBody:"Reprice {{count}} factor(s) to {{rate}}× the official price. This is versioned — historical billing is unaffected.",applied:"Repriced {{count}} factor(s) at {{rate}}× official.",stale:"Prices changed since the preview — please preview again.",skipReason:{free_factor_our_zero:"Free factor (our price is 0) — left unchanged",no_official:"No official price — cannot compute",official_zero:"Official price is 0 — skipped"}}},SPe="Discard unsaved changes?",APe="تحرير النموذج",TPe={title:vRe,description:bRe,badges:xRe,addModel:$Re,editModel:wRe,newModel:kRe,close:CRe,sheetDescription:SRe,sheetDescriptionNew:ARe,sections:TRe,providerSlug:RRe,providerSlugHint:PRe,modelSlug:_Re,aliases:jRe,aliasesHint:NRe,source:DRe,sourceHint:MRe,platform:ERe,platformUnset:IRe,sub2apiModelId:ORe,chooseSub2api:LRe,upstreamUnavailable:URe,protocols:BRe,inputPrice:FRe,outputPrice:zRe,enSummary:qRe,preview:HRe,noSummary:VRe,noProtocol:KRe,cancel:GRe,save:WRe,createDraft:YRe,tabs:QRe,steps:XRe,contextWindow:ZRe,contextWindowHint:JRe,maxOutputTokens:ePe,maxOutputTokensHint:tPe,lifecycle:nPe,inputModalities:aPe,inputModalitiesHint:oPe,outputModalities:sPe,outputModalitiesHint:rPe,billingStyleImage:iPe,billingStyleVideo:lPe,billingStyleHint:cPe,billingStyleUnset:dPe,billingStyleToken:uPe,billingStylePerImage:mPe,billingStylePerSecond:pPe,billingStylePerCall:fPe,displayOrder:gPe,displayOrderInvalid:hPe,contentLocale:yPe,upstreamReleaseAt:vPe,summary:bPe,descriptionField:xPe,filters:$Pe,table:wPe,errors:kPe,pricing:CPe,discardChanges:SPe,editModelShort:APe},RPe="Rate Limits",PPe="Rate limit policies by scope.",_Pe="Rate limit policies",jPe="No policies",NPe="Code",DPe="Name",MPe="Scope",EPe="Status",IPe="Limits",OPe="No limits",LPe={auth:"Auth",console:"Console",api_gateway:"API gateway",ops:"Ops",global:"Global"},UPe={active:"Active",disabled:"Disabled",archived:"Archived"},BPe={rpm_per_key:"RPM / key",rpm_per_user:"RPM / user",concurrent_streams_per_key:"Streams / key",concurrent_streams_per_user:"Streams / user"},FPe="New policy",zPe="Edit",qPe="Action",HPe="New rate limit policy",VPe="Edit {{name}}",KPe="Concurrency and RPM limits applied per API key and per user. Assign a policy to users on the Users page.",GPe='Delete policy "{{name}}"? Keys and users on it fall back to their default.',WPe="Policy deleted.",YPe={identity:"Identity",classification:"Classification",description:"Description",codeImmutable:"Code cannot be changed after creation.",limitsHint:"Leave blank to use the platform default for that limit.",default:"default",invalidLimit:"{{field}} must be a positive integer.",saved:"Policy saved.",cancel:"Cancel",save:"Save",create:"Create policy"},QPe={title:RPe,description:PPe,label:_Pe,empty:jPe,code:NPe,name:DPe,scope:MPe,status:EPe,limits:IPe,noLimits:OPe,scopes:LPe,statuses:UPe,limitNames:BPe,add:FPe,edit:zPe,delete:"Delete",action:qPe,newTitle:HPe,editTitle:VPe,formDescription:KPe,confirmDelete:GPe,deleted:WPe,form:YPe},XPe="Admins",ZPe="Who can sign in to the admin console. Owner-only.",JPe="Admins",e_e="No admins yet",t_e="Email",n_e="Name",a_e="Role",o_e="Status",s_e="Last login",r_e="Action",i_e="Add admin",l_e="Add admin",c_e="The email becomes an admin immediately and signs in with it — admin access is matched by email. It does not need an account yet.",d_e="Email",u_e="[email protected]",m_e="Name",p_e="Display name",f_e="Role",g_e="Admin added.",h_e="Change role",y_e="Role updated.",v_e="Suspend",b_e="Activate",x_e="Status updated.",$_e="Remove",w_e="Admin removed.",k_e="Remove {{email}} as an admin? They lose console access immediately.",C_e="You",S_e="Never",A_e={owner:"Owner",admin:"Admin",
763support:"Support"},T_e={active:"Active",suspended:"Suspended"},R_e={title:XPe,description:ZPe,label:JPe,empty:e_e,email:t_e,name:n_e,role:a_e,status:o_e,lastLogin:s_e,action:r_e,add:i_e,newTitle:l_e,formDescription:c_e,emailLabel:d_e,emailPlaceholder:u_e,nameLabel:m_e,namePlaceholder:p_e,roleLabel:f_e,added:g_e,changeRole:h_e,roleChanged:y_e,suspend:v_e,activate:b_e,statusChanged:x_e,remove:$_e,removed:w_e,confirmRemove:k_e,self:C_e,never:S_e,roles:A_e,statuses:T_e},P_e="Upstream",__e="Read-only upstream configuration mirror plus controlled OneHop routing pools.",j_e="Open upstream admin",N_e="Upstream tabs",D_e={overview:"Overview",keyPools:"Key pools",groups:"Groups",channels:"Channels",accounts:"Accounts"},M_e={todayRequests:"Today requests",total:"{{value}} total",upstreamCostToday:"Upstream cost today",providerAccounts:"Provider accounts",health:"Health",stale:"stale",checkPools:"check pools",online:"online"},E_e={upstreamStatsFailed:"Upstream stats failed to load",retry:"Retry",configAuditFailed:"Config audit failed",keyPoolsLoadFailed:"Key pools failed to load",createKeyPoolFailed:"Create key pool failed",keyPoolTestFailed:"Key pool test failed",keyPoolRotateFailed:"Key pool rotate failed",failedLoad:"{{title}} failed to load"},I_e={title:"Config audit",description:"Compares OneHop key pools and published model routing against upstream routing. Provider groups, channels, pricing, and accounts remain read-only here.",running:"Running...",run:"Run audit",poolsChecked:"Pools checked",modelAudit:"Model audit",checkedAt:"Checked at",needsReview:"needs review",done:"done",ok:"ok",upstreamCoverage:"تغطية المزود الأعلى",coverageUnchecked:"تعذّرت قراءة الحسابات",coverageOnlyAccount:"فقط {{accounts}}",coverageNoAccount:"لا يوجد حساب قابل للجدولة يطابق معرّف المزود هذا"},O_e={title:"Topology",keyPools:"Key pools",activeGroups:"Active groups",activeChannels:"Active channels",accounts:"Accounts",editingBoundaryTitle:"Editing boundary",editingBoundaryDescription:"The upstream admin exposes deep edit workflows for groups, channels, pricing rules, provider accounts, monitoring, and system settings. OneHop intentionally mirrors only the operational read path and owns internal key pools, so edits that change provider routing still happen in the original admin."},L_e={title:"OneHop internal key pools",description:"Pools select which upstream internal key OneHop uses per protocol and model pattern. Full secrets are never displayed.",poolCode:"Pool code",poolName:"Pool name",defaultPool:"Default pool",notDefault:"Not default",plaintextKey:"Plaintext key",create:"Create",label:"Provider routing key pools",pool:"Pool",protocols:"Protocols",models:"Models",routingGroup:"Routing group",status:"Status",health:"Health",key:"Key",lastCheck:"Last check",action:"Action",priority:"priority {{value}}",default:"default",secret:"secret",hidden:"hidden",test:"Test",rotate:"Rotate",empty:"No key pools",emptyDescription:"Create an internal pool before routing production traffic through provider routing.",newPlaintextKey:"New plaintext key",confirmRotate:"Confirm rotate",editProtocols:"Edit protocols",editProtocolsTitle:"Edit protocols (replace)",confirmEditProtocols:"Save protocols",cancelEditProtocols:"Cancel",forceEditProtocols:"Force save (override routing check)"},U_e={editUpstreamConfig:"Edit upstream config",groupsTitle:"Groups",groupsDescription:"Routing buckets from upstream config. OneHop uses these as source-of-truth context for key-pool binding and audit decisions.",groupsLabel:"Routing groups",groupsEmpty:"No groups",groupsEmptyDescription:"Upstream config did not return any groups.",channelsTitle:"Channels",channelsDescription:"Provider channel configuration from upstream config, including model mappings and pricing rule coverage.",channelsLabel:"Provider routing channels",channelsEmpty:"No channels",channelsEmptyDescription:"Upstream config did not return any channels.",accountsTitle:"Accounts",accountsDescription:"Provider accounts are redacted in OneHop. Use the upstream admin for credential edits and OAuth refresh flows.",accountsLabel:"Provider routing accounts",accountsEmpty:"No accounts",accountsEmptyDescription:"Upstream config did not return any provider accounts."},B_e={group:"Group",platform:"Platform",rate:"Rate",rpm:"RPM",accounts:"Accounts",limits:"Limits",status:"Status",updated:"Updated",channel:"Channel",billingSource:"Billing source",mappings:"Mappings",pricing:"Pricing",account:"Account",groups:"Groups",baseUrl:"Base URL",capacity:"Capacity",lastUsed:"Last used"},F_e={noDescription:"No description",unlimited:"unlimited",schedulable:"schedulable",notSchedulable:"not schedulable",loading:"Loading...",noPricingRules:"No pricing rules",modelsCount:"{{count}} models",none:"none",channelMapped:"Channel mapped",requestedModel:"Requested model",upstreamModel:"Upstream model",priority:"priority",unknown:"unknown"},z_e={serving:{label:"Serving state",serving:"Serving",rate_limited:"Rate-limited",overloaded:"Overloaded",expired:"Expired",paused:"Paused",error:"Error",disabled:"Disabled"},quota:{label:"Quota (today)",noLimit:"no limit",spend:"{{spend}} / {{limit}}"},accounts:{breakdown:"{{normal}} normal · {{error}} error · {{ratelimit}} limited · {{overload}} overload"},freshness:{updated:"updated {{ago}}",never:"never"},pools:{lastError:"Last error",resync:"Resync"},audit:{poolFindings:"Pool findings",clean:"clean",findingsCount:"{{count}} issue(s)"},tokensToday:"{{count}} tok today"},q_e={title:P_e,description:__e,openUpstreamAdmin:j_e,tabsLabel:N_e,tabs:D_e,metrics:M_e,errors:E_e,audit:I_e,topology:O_e,pools:L_e,readonly:U_e,table:B_e,common:F_e,ops:z_e},H_e="Platform usage",V_e="Cross-user request metering with cost, token, latency, and routing signals.",K_e="Refresh",G_e={label:"Auto refresh",off:"Off"},W_e="Exporting",Y_e="Export CSV",Q_e="Failed to export usage records",X_e="Requests",Z_e="{{count}} successful",J_e="Users",eje="Matched by current filters",tje="Billed credit",nje="{{cost}} upstream cost",aje="Tokens",oje="Avg {{duration}}",sje="User email",rje="Search by email",ije="Model",lje="Search by model",cje="Status",dje="Protocol",uje="Rows",mje="Reset",pje="Ops usage records",fje="No usage records",gje="User",hje="Endpoint",yje="{{count}} total",vje="In {{input}} / out {{output}}",bje="Upstream",xje="Billed",$je="Latency",wje="Started",kje="Page {{page}} · showing {{shown}} of {{total}} matching records",Cje="Previous",Sje="Next",Aje="{{count}} rows on this page",Tje="Times shown in",Rje="{{count}} API keys",Pje="Spend snapshot",_je="from OneHop billing snapshot",jje="User spend",Nje="total billed to users",Dje="Avg latency",Mje="settled requests",Eje="Range",Ije={today:"Today",days7:"7 days",days30:"30 days",all:"All time"},Oje="Metric",Lje={cost:"Spend",tokens:"Tokens",requests:"Requests"},Uje="Distribution",Bje={model:"النموذج",requestedModel:"Requested model",upstreamModel:"Upstream model",apiKey:"API key",user:"User",endpoint:"Endpoint",channel:"Channel",group:"Group",stream
763:"Transport (stream/sync)"},Fje="Usage trend",zje="Usage by model",qje="Hourly",Hje="Daily",Vje="Top endpoints",Kje="Top dimension rows",Gje="Request logs",Wje="API key",Yje="Type",Qje="Billing",Xje="Channel",Zje="Group",Jje="Request ID",e2e="req_ / usg_ / upstream",t2e="All types",n2e="All billing",a2e={user:"User",time:"Time",model:"Model",tokens:"Tokens",cost:"Spend",routing:"Routing",latency:"Latency",status:"Status",duration:"Duration"},o2e="Failed to load usage",s2e="Loading usage records",r2e="Try a different filter set.",i2e="No trend data",l2e="No distribution data",c2e="No rows",d2e="Spend breakdown",u2e={upstreamList:"Upstream list",discount:"Discount",sub2apiActual:"Sub2API actual",groupChannelMultiplier:"Group/channel multiplier",accountMultiplier:"Account multiplier",sub2apiFinalCharge:"Final spend",billedFactors:"Billed to user"},m2e="Request detail",p2e="Unknown user",f2e="Loading...",g2e="Sub2API actual",h2e="Group multiplier",y2e="Account multiplier",v2e="Identity",b2e="User ID",x2e="Key suffix",$2e={hopIdentity:"Hop identity",logicalUsageId:"Logical usage ID",logicalRequestedModel:"Logical requested model",logicalModel:"Logical model",actualRequestedModel:"Actual requested model",actualModel:"Actual model",fallbackHop:"Fallback hop",userVisibility:"User visibility",visible:"Visible",hidden:"Hidden",supersedesUsageRecord:"Supersedes record",pricingAudit:"Continuity pricing audit",mode:"Mode",policyVersion:"Policy version",sourceModel:"Source model",targetModel:"Target model",requestedRawQuote:"Requested raw quote",requestedQuote:"Requested quote",actualPricingStatus:"Actual pricing status",actualPricingAvailable:"Available",actualPricingUnavailable:"Unavailable",actualQuote:"Actual quote",chargedQuote:"Charged quote",variance:"Quote variance",actualPricingError:"Actual pricing error"},w2e="Input",k2e="Output",C2e="Cache read",S2e="Cache write",A2e="Raw metadata",T2e="Request",R2e="Usage ID",P2e="OneHop ID",_2e="Sub2API ID",j2e="Sub2API log",N2e="Routing",D2e="Mapping",M2e="Performance",E2e="First token",I2e="Total",O2e="Error",L2e="Code",U2e="Message",B2e={time:"Time",user:"User",apiKey:"API key",model:"Model",logicalUsageId:"Logical usage ID",logicalRequestedModel:"Logical requested model",logicalModel:"Logical model",actualRequestedModel:"Actual requested model",actualModel:"Actual model",fallbackHop:"Fallback hop",userVisible:"User visible",supersedesUsageRecord:"Supersedes usage record",upstreamModel:"Upstream model",protocol:"Protocol",endpoint:"Endpoint",type:"Type",status:"Status",inputTokens:"Input tokens",outputTokens:"Output tokens",cacheRead:"Cache read",cacheWrite:"Cache write",sub2apiActual:"Sub2API actual",sub2apiCharge:"Spend",continuityMode:"Continuity mode",continuityPolicyVersion:"Continuity policy version",continuitySourceModel:"Continuity source model",continuityTargetModel:"Continuity target model",continuityRequestedRawQuote:"Continuity requested raw quote",continuityRequestedQuote:"Continuity requested quote",continuityActualPricingStatus:"Continuity actual pricing status",continuityActualQuote:"Continuity actual quote",continuityChargedQuote:"Continuity charged quote",continuityVariance:"Continuity quote variance",continuityActualPricingError:"Continuity actual pricing error",durationMs:"Duration ms",channel:"Channel",group:"Group",onehopRequestId:"OneHop request ID",sub2apiRequestId:"Sub2API request ID",firstTokenMs:"First token ms"},F2e={analytics:"Usage analytics",logs:"Request logs"},z2e={label:"Chart view",stacked:"Over time",ranking:"Ranking"},q2e={failedOnly:"Failed only",slowOnly:"Slow > {{sec}}s"},H2e="More filters",V2e="Slow threshold (ms)",K2e="No model usage",G2e="No requests yet — usage will appear here as traffic comes in.",W2e="Viewing",Y2e="streaming requests",Q2e="Avg duration",X2e="Latency = time to first token (TTFT); Duration = total. The slow filter uses TTFT and only covers successful requests with a recorded first token (earlier or failed requests show —).",Z2e="Open request detail",J2e={title:H_e,description:V_e,refresh:K_e,autoRefresh:G_e,exporting:W_e,exportCsv:Y_e,exportError:Q_e,requests:X_e,successful:Z_e,users:J_e,matchedFilters:eje,billedCredit:tje,upstreamCost:nje,tokens:aje,avgDuration:oje,userEmail:sje,searchEmail:rje,model:ije,searchModel:lje,status:cje,protocol:dje,rows:uje,reset:mje,label:pje,empty:fje,user:gje,endpoint:hje,totalTokens:yje,inOut:vje,upstream:bje,billed:xje,latency:$je,started:wje,pageSummary:kje,previous:Cje,next:Sje,rowsOnPage:Aje,timesShownIn:Tje,apiKeys:Rje,sub2apiCharge:Pje,sub2a
763piChargeSource:_je,userSpend:jje,userSpendSource:Nje,avgLatency:Dje,settledRequests:Mje,range:Eje,ranges:Ije,metric:Oje,metrics:Lje,distribution:Uje,breakdown:Bje,usageTrend:Fje,stackedByModel:zje,hourly:qje,daily:Hje,topEndpoints:Vje,topDimensionRows:Kje,requestLogs:Gje,apiKey:Wje,type:Yje,billing:Qje,channel:Xje,group:Zje,requestId:Jje,requestIdPlaceholder:e2e,allTypes:t2e,allBilling:n2e,table:a2e,failedLoad:o2e,loadingRecords:s2e,tryDifferentFilters:r2e,noTrendData:i2e,noDistributionData:l2e,noRows:c2e,costBreakdown:d2e,adminCost:u2e,requestDetail:m2e,unknownUser:p2e,loading:f2e,sub2apiActual:g2e,groupMultiplier:h2e,accountMultiplier:y2e,identity:v2e,userId:b2e,keySuffix:x2e,continuity:$2e,input:w2e,output:k2e,cacheRead:C2e,cacheWrite:S2e,rawMetadata:A2e,request:T2e,usageId:R2e,onehopId:P2e,sub2apiId:_2e,sub2apiLog:j2e,routing:N2e,mapping:D2e,performance:M2e,firstToken:E2e,total:I2e,error:O2e,code:L2e,message:U2e,csv:B2e,tabs:F2e,modelView:z2e,chip:q2e,moreFilters:H2e,slowThreshold:V2e,noModelUsage:K2e,noTrendToday:G2e,viewing:W2e,avgLatencySub:Y2e,avgTotalDuration:Q2e,latencyHint:X2e,openRequestDetail:Z2e},eNe="Search",tNe="Search by user ID, email, or name",nNe="User",aNe="Back to users",oNe="You do not have permission to view this section.",sNe="Refund",rNe="Refunding...",iNe="Initiate a refund of {{amount}} for {{email}}? Refunds are processed asynchronously; the balance updates after the worker runs.",lNe="Refund initiated.",cNe={overview:"Overview",network:"Network & Device",recentCalls:"Recent Calls",apiKeys:"مفاتيح API",payments:"Payments",refunds:"Refunds",subscription:"Subscription",referrals:"Referrals",rewards:"Rewards",audit:"Audit"},dNe={title:"Free token allowance",paused:"Free token grants are paused on this account (risk review).",daily:"Daily",weekly:"Weekly",tokensUnit:"tokens",remaining:"{{value}} tokens remaining today"},uNe={title:"Free model quota (today)",tokens:"tokens",remaining:"{{value}} tokens remaining today",unlimited:"Free quota: unlimited (gate disabled)",eligibilityLabel:"Free tier eligibility",eligible:"Free tier",ineligible:"Ineligible (same device used)"},mNe={phase2:"Subscriptions are coming in Phase 2."},pNe={empty:"No payments"},fNe={empty:"No refunds"},gNe={empty:"No credit buckets",note:"Credit buckets show current balance inventory. Grant and refund history appear in the Audit timeline; referral rewards in the Referrals section."},hNe={totalEarned:"Total earned",frozenEarned:"Frozen",refereeCount:"Referees",activeCount:"Active",role:"Role",counterparty:"Counterparty",empty:"No referral activity"},yNe={empty:"No audit records"},vNe={amount:"Amount",credit:"Credit",status:"Status",provider:"Provider",createdAt:"Created",type:"Type",originalTx:"Original tx",remaining:"Remaining",initial:"Initial",expiresAt:"Expires",event:"Event",action:"Action",severity:"Severity"},bNe={ipLocationTitle:"IP والموقع",deviceBrowserTitle:"الجهاز والمتصفح",stripeTitle:"Stripe",signupIp:"IP التسجيل",signupCountry:"بلد التسجيل",lastLoginIp:"IP آخر تسجيل دخول",ipDifferent:"يختلف عن IP التسجيل",sameIpAccounts_one:"{{count}} حساب على نفس IP التسجيل",sameIpAccounts_other:"{{count}} حسابات على نفس IP التسجيل",sameDeviceAccounts_one:"{{count}} حساب على نفس الجهاز",sameDeviceAccounts_other:"{{count}} حسابات على نفس الجهاز",deviceFingerprint:"بصمة الجهاز",freeTierEligible:"أهلية الطبقة المجانية",firstDevice:"أول حساب على الجهاز",notFirstDevice:"ليس أول حساب على الجهاز — لا مزايا مجانية",browser:"المتصفح",os:"OS",deviceType:"نوع الجهاز",acceptLanguage:"Accept-Language",stripeCustomerId:"Stripe Customer ID",viewOnIpinfo:"عرض على ipinfo.io"},xNe={empty:"لا توجد استدعاءات بعد",viewAll:"عرض كل السجلات →",colStatus:"الحالة",colTime:"الوقت",colModel:"النموذج",colProtocol:"البروتوكول",colDuration:"المدة",colCost:"التكلفة",colFreeDiscount:"رصيد مجاني"},$Ne={empty:"لا توجد API keys بعد",colName:"الاسم",colKey:"Key",colStatus:"الحالة",colPolicy:"سياسة حد المعدل",colLastUsed:"آخر استخدام",colCreated:"تاريخ الإنشاء",colExpires:"ينتهي في",colSpend:"الإنفاق",spendTitle:"تفصيل الإنفاق",spend30d:"آخر 30 يومًا",spendAllTime:"الإجمالي",spendRequests:"الطلبات"},wNe="نسخ",kNe="تم النسخ",CNe={search:eNe,searchPlaceholder:tNe,title:nNe,backToList:aNe,noBlockPerm:oNe,refund:sNe,refunding:rNe,refundConfirm:iNe,refundInitiated:lNe,nav:cNe,freeTokens:dNe,freeQuota:uNe,subscription:mNe,payments:pNe,refunds:fNe,rewards:gNe,referrals:hNe,audit:yNe,col:vNe,network:bNe,recentCalls:xNe,apiKeys:$Ne,copy:wNe,copied:kNe},SNe="Users",ANe="Search users, grant credit, and suspend accounts.",TNe="Email",RNe="Search by email",PNe="Account status",_Ne={active:"الحساب نشط؛ يمكنه تسجيل الدخول واستدعاء gateway",suspended:"موقوف؛ يرفض gateway كل الطلبات (401)"},jNe="Risk",NNe={normal:"مؤهل لكل المزايا المجانية",watchlisted:"لا توجد token مجانية أو رصيد تسجيل؛ يمكنه الشحن واستدعاء gateway",blocked:"يرفض gateway كل الطلبات (401)؛ حظر كامل"},DNe="Users",MNe="No users found",ENe="Country",INe="Last login",ONe="Action",LNe="View",UNe="Deleted",BNe="Set status for {{email}}",FNe='Set {{email}} to "{{status}}"?',zNe="Grant credit",qNe="Add bonus credit to {{email}}. Recorded in the ledger.",HNe="Amount (USD)",VNe="e.g. 5",KNe="Reason (optional)",GNe="e.g. compensation for downtime",WNe="Type",YNe="Bonus credit",QNe="A gift. Does not count as a top-up.",XNe="Offline payment",ZNe="Money we actually received. Counts as a top-up: unlocks paid-only models and rate-limit tiers.",JNe="Reference no.",eDe="e.g. bank slip 20260907-001",tDe="Record payment",nDe="Recording...",aDe="Cancel",oDe="Granting...",sDe="Grant",rDe="Grant ${{amount}} to {{email}}? This is a large amount.",iDe="No display name",lDe="Loading...",cDe="score {{score}}",dDe="Email verified",uDe="Yes",mDe="No",pDe="Signup",fDe="Signup method",gDe="Last login method",hDe="Signup bonus",yDe="Onboarding",vDe="Locale / TZ",bDe="Markup ratio",xDe="Rate limit policy",$De="Rate limit policy updated.",wDe="Joined",kDe="Never",CDe="Balance",SDe="Wallet & spend",ADe="Total spent",TDe="Recharged",RDe="Bonus granted",PDe="Refunded",_De="Requests",jDe="Tokens",NDe="Actions",DDe="Identity & risk",MDe="Role",EDe="No permitted actions for your role.",IDe="Acquisition source",ODe="Acquisition by source",LDe="Direct / unknown",UDe="Custom source…",BDe="Set",FDe="Auto-detected: {{source}}",zDe="UTM",qDe="Referred by",HDe="ملاحظة",VDe="أضف ملاحظة لتعريف هذا المستخدم",KDe="حفظ الملاحظة",GDe="تم حفظ الملاحظة",WDe="لا توجد ملاحظة",YDe="تصفية",QDe="Location",XDe="Preferred locale",ZDe={title:SNe,description:ANe,email:TNe,searchEmail:RNe,status:PNe,statusEffect:_Ne,risk:jNe,riskEffect:NNe,label:DNe,empty:MNe,country:ENe,lastLogin:INe,action:ONe,view:LNe,deleted:UNe,setStatusAria:BNe,setStatusConfirm:FNe,grantCredit:zNe,grantDescription:qNe,amountUsd:HNe,amountPlaceholder:VNe,reason:KNe,reasonPlaceholder:GNe,grantKind:WNe,grantKindBonus:YNe,grantKindBonusHint:QNe,grantKindOffline:XNe,grantKindOfflineHint:ZNe,referenceNo:JNe,referenceNoPlaceholder:eDe,recordPayment:tDe,recording:nDe,cancel:aDe,granting:oDe,grant:sDe,largeGrantConfirm:rDe,noDisplayName:iDe,loading:lDe,score:cDe,emailVerified:dDe,yes:uDe,no:mDe,signup:pDe,signupMethod:fDe,lastLoginMethod:gDe,signupBonus:hDe,onboarding:yDe,localeTz:vDe,markupRatio:bDe,rateLimitPolicy:xDe,rateLimitPolicyChanged:$De,joined:wDe,never:kDe,walletBalance:CDe,walletSection:SDe,consumed:ADe,recharged:TDe,bonusGranted:RDe,refunded:PDe,requests:_De,tokens:jDe,actionsSection:NDe,identitySection:DDe,role:MDe,noPermittedActions:EDe,acquisitionSource:IDe,acquisitionTitle:ODe,sourceDirect:LDe,sourceCustomPlaceholder:UDe,sourceSet:BDe,sourceCaptured:FDe,utm:zDe,referrer:qDe,note:HDe,notePlaceholder:VDe,noteSave:KDe,noteSaved:GDe,noteEmpty:WDe,filters:YDe,location:QDe,preferredLocale:XDe},JDe="Webhooks",eMe="Stripe webhook events. Status filter, retry, payload inspection.",tMe="Status",nMe="Event type",aMe="Received",oMe="Event type",sMe="Status",rMe="Mode",iMe="Attempts",lMe="Retry",cMe="Retry queued",dMe="Event {{event}} reset to pending; next job tick will process.",uMe="Retry failed",mMe="No webhook events yet.",pMe="Stripe events will appear here once your endpoint is registered.",fMe="Loading payload...",gMe="Last error",hMe="Payload (JSON)",yMe={title:JDe,description:eMe,statusFilter:tMe,eventTypeFilter:nMe,receivedAt:aMe,eventType:oMe,status:sMe,mode:rMe,attempts:iMe,retry:lMe,retrySubmittedTitle:cMe,retrySubmittedBody:dMe,retryFailedTitle:uMe,empty:mMe,emptyHint:pMe,detailLoa
763ding:fMe,lastError:gMe,payload:hMe},vMe="API Keys",bMe="احصل على أول key خلال 10 ثوانٍ",xMe="فشل النسخ",$Me={label:"النماذج المسموح بها",allModels:"كل النماذج",allHint:"كل النماذج في الكتالوج مسموح بها.",noModels:"لا توجد نماذج متاحة.",selected:"تم تحديد {{count}}",someHint:"{{count}} نموذج مسموح."},wMe={label:"الوسوم",placeholder:"أضف وسمًا واضغط Enter",remove:"إزالة"},kMe="أنشئ keys محددة النطاق للإنتاج والاختبار وسير عمل الفريق.",CMe="تحديث",SMe="Key افتراضي",AMe="اسم key",TMe="جار الإنشاء...",RMe="إنشاء key",PMe="Key كامل، يظهر مرة واحدة",_Me="نسخ API key",jMe="تم النسخ",NMe="نسخ",DMe="انسخه واحفظه الآن. بعد إغلاق هذه اللوحة لا يمكن عرض key الكامل مرة أخرى.",MMe="حفظته",EMe="فشل تحميل API keys",IMe="إعادة المحاولة",OMe="لا توجد API keys بعد",LMe="أنشئ أول key لبدء إرسال الطلبات عبر OneHop.",UMe={label:"API keys",tags:"الوسوم",name:"الاسم",key:"Key",status:"الحالة",created:"تاريخ الإنشاء",action:"الإجراء",usage:"الاستخدام",quota:"الحصة",expires:"ينتهي في",lastUsed:"آخر استخدام"},BMe="إلغاء",FMe="إلغاء {{name}}؟ لا يمكن التراجع عن هذا الإجراء.",zMe="سمِّ key. تبقى الحدود وتاريخ الانتهاء في الإعدادات المتقدمة ما لم تحتج إليها.",qMe="حد credit الشهري",HMe="ينتهي في",VMe="غير محدود",KMe="جار الحفظ...",GMe="حفظ",WMe="إلغاء",YMe={title:"معطلة وملغاة",description:"Keys معطلة أو ملغاة. يمكنك إعادة تفعيل المعطلة، وتبقى الملغاة كسجل."},QMe={title:"لا توجد keys نشطة",description:"أعد تفعيل key معطلة أدناه أو أنشئ واحدة جديدة."},XMe={import:"استيراد إلى CCS",client:"عميل CC-Switch",codex:"Codex / OpenAI",claude:"Claude Code",pasteHint:"تم فتح CC Switch بعنصر نائب. الصق هناك مفتاح API المحفوظ لديك.",checking:"جارٍ التحقق من التوافق…",blocked:{title:"لا يمكن لـ {{client}} استخدام هذا المفتاح",body:"«{{keyName}}» يسمح فقط بنماذج لا يمكن لـ {{client}} استخدامها. سيؤدي الاستيراد إلى حدوث أخطاء.",adjust:"تعديل نطاق النماذج",forceImport:"الاستيراد على أي حال (لن يعمل)"},pin:{title:"الاستيراد كـ {{model}} لـ {{client}}",body:"«{{keyName}}» لا يتضمن النموذج الافتراضي لـ {{client}}. إليك كيفية توجيه طلبات {{client}} عبر هذا المزوّد:",adjust:"تعديل نطاق النماذج",confirm:"الاستيراد باستخدام {{model}}"}},ZMe={search:"بحث",searchPlaceholder:"ابحث بالاسم أو لاحقة key",status:"الحالة",allStatus:"كل الحالات",clear:"مسح عوامل التصفية",empty:"لا توجد keys تطابق هذه العوامل",emptyDescription:"امسح البحث أو عامل تصفية الحالة لرؤية كل keys.",mobileTitle:"تصفية"},JMe={active:"نشط",inactive:"معطّل",revoked:"ملغى",expired:"منتهي",quota_exhausted:"الحصة مستنفدة"},eEe={today:"اليوم {{requests}} req · {{credit}}",days30:"30 يومًا {{requests}} req · {{credit}}"},tEe={use:"تفاصيل الاتصال",edit:"تحرير",enable:"تفعيل",disable:"تعطيل",delete:"حذف"},nEe="استخدام API key",aEe="استخدم key المحفوظ مع gateway الخاص بـ OneHop. يظهر key الكامل مرة واحدة فقط عند الإنشاء.",oEe={baseUrl:"Base URL",keyHint:"API key",authorization:"ترويسة Authorization",env:"متغير البيئة",curl:"cURL",revealing:"جارٍ فك تشفير key…",fullKeyUnavailable:"يظهر key الكامل مرة واحدة فقط عند إنشائه. اØ
763³ØªØ®Ø¯Ù… القيمة التي حفظتها، أو أنشئ key جديدًا إذا فُقد.",protocolEndpoints:"نقاط نهاية البروتوكول"},sEe="الإعدادات المتقدمة",rEe="إنشاء API key",iEe="تحرير API key",lEe={label:"الوصول إلى النماذج",all:"كل النماذج",limited:"تقييد بنماذج محددة",allHint:"يمكن لهذه key استدعاء كل النماذج، بما فيها التي تُضاف لاحقًا.",snapshotHint:"النماذج التي تختارها فقط؛ النماذج الجديدة لا تُضاف تلقائيًا.",snapshotHintEdit:"النماذج التي تختارها فقط؛ النماذج الجديدة لا تُضاف تلقائيًا. التبديل إلى كل النماذج يستبدل هذه القائمة البيضاء.",searchPlaceholder:"ابحث في النماذج…",selectAllResults:"تحديد كل النتائج ({{count}})",selectedCount:"المحدد {{count}} / {{max}}",clear:"مسح",hiddenSelected:"{{hidden}} من {{total}} محددة مخفية بسبب الفلتر الحالي",selectVendor:"تحديد كل {{vendor}}، المحدد {{on}} من {{total}}",emptyTitle:"لا توجد نماذج مطابقة",emptyDescription:"جرّب نوعًا أو بحثًا مختلفًا.",loadFailed:"تعذر تحميل النماذج",loadFailedHint:"أعد المحاولة أو ارجع إلى كل النماذج.",type:{all:"الكل",text:"نص",image:"صورة",video:"فيديو",embedding:"Embedding"},pickAtLeastOne:"اختر نموذجًا واحدًا على الأقل أو ارجع إلى كل النماذج.",limitReached:"Reached the {{max}}-model limit"},cEe={title:"تم إنشاء API key",subtitle:"{{name}} جاهزة — وصّلها الآن.",onceWarning:"تُعرض مرة واحدة. يمكنك إظهارها لاحقًا، لكن من الأفضل نسخها الآن.",connect:"اتصال",done:"تم"},dEe="IP",uEe="أُلغيت في {{date}}",mEe={title:vMe,emptyTitle:bMe,copyFailed:xMe,allowedModels:$Me,tags:wMe,description:kMe,refresh:CMe,defaultName:SMe,keyName:AMe,creating:TMe,createKey:RMe,fullKeyTitle:PMe,copyApiKey:_Me,copied:jMe,copy:NMe,fullKeyDescription:DMe,savedIt:MMe,loadFailed:EMe,retry:IMe,empty:OMe,emptyDescription:LMe,table:UMe,revoke:BMe,revokeConfirm:FMe,formDescription:zMe,monthlyCreditLimit:qMe,expiresAt:HMe,unlimited:VMe,saving:KMe,save:GMe,cancel:WMe,parked:YMe,noActive:QMe,ccswitch:XMe,filters:ZMe,status:JMe,usage:eEe,actions:tEe,useTitle:nEe,useDescription:aEe,use:oEe,advancedSettings:sEe,createTitle:rEe,editTitle:iEe,scope:lEe,created:cEe,lastUsedIp:dEe,revokedAt:uEe},pEe="Audit Logs",fEe="High-risk admin actions, by action and time.",gEe="Action",hEe="Clear",yEe={ops_user_update_status:"تم تحديث حالة المستخدم",ops_users_allowlist_add:"تمت إضافة صلاحية التسجيل",ops_users_allowlist_update:"تم تحديث صلاحية التسجيل",ops_users_allowlist_invite:"تم إرسال دعوة صلاحية التسجيل",ops_users_allowlist_revoke:"تمت إزالة صلاحية التسجيل",ops_users_allowlist_restore:"تمت استعادة صلاحية التسجيل",ops_model_create:"تم إنشاء النموذج",ops_model_update:"تم تحديث النموذج",ops_model_update_status:"تم تحديث حالة النموذج",sub2api_pool_create:"تم إنشاء مجموعة التوجيه",sub2api_pool_test:"تم اختبار مجموعة التوجيه",sub2api_pool_rotate_secret:"تم تدوير سر التوجيه"},vEe="Audit logs",bEe="No audit entries",xEe="Time",$Ee="Severity",wEe="Target",kEe={ai_model:"Model",sub2api_key_pool:"Routing key pool",sys_user:"User",wallet:"Wallet"},CEe="نوع الهدف",SEe="معرّف الطلب",AEe={title:pEe,description:fEe,action:gEe,clear:hEe,actions:yEe,label:vEe,empty:bEe,time:xEe,severity:$Ee,target:wEe,targetTypes:kEe,targetType:CEe,requestId:SEe},TEe="تسجيل الدخول إلى OneHop",REe="أدخل الرمز",PEe="تابع باستخدام Google أو البريد الإلكتروني",_Ee="أدخل بريدك الإلكتروني لاستلام رمز",jEe="أدخل الرمز المكوّن من 6 أرقام المرسل إلى {{email}}",NEe="المتابعة باستخدام Google",DEe="المتابعة بالبريد الإلكتروني",MEe="أو",EEe="Email",IEe="إرسال رمز التحقق",OEe="جار الإرسال...",LEe="تحقق",UEe="جار التحقق...",BEe="إعادة الإرسال خلال {{seconds}} Ø«",FEe="إعادة إرسال الرمز",zEe="بالمتابعة، فإنك توافق على",qEe="الشروط",HEe="الخصوصية",VEe={signIn:"تسجيل الدخول",
763signOutFailed:"فشل تسجيل الخروج",sendCodeFailed:"فشل إرسال الرمز",notAllowed:"هذا البريد غير مُصرّح له بالوصول بعد. تواصل مع المسؤول لطلب الوصول.",invalidCode:"الرمز غير صالح",codeIncorrect:"الرمز غير صحيح، حاول مرة أخرى",googleFailed:"فشل تسجيل الدخول عبر Google",verifyHuman:"يرجى إكمال التحقق للمتابعة",verifyUnavailable:"التحقق البشري غير متاح مؤقتًا. يُرجى المتابعة باستخدام Google في الأعلى أو المحاولة مرة أخرى لاحقًا."},KEe={signInTitle:TEe,enterCodeTitle:REe,methodIntro:PEe,emailStepIntro:_Ee,codeIntro:jEe,continueGoogle:NEe,continueEmail:DEe,or:MEe,emailLabel:EEe,sendCode:IEe,sending:OEe,verify:LEe,verifying:UEe,resendIn:BEe,resendCode:FEe,termsPrefix:zEe,terms:qEe,privacy:HEe,errors:VEe},GEe="الفوترة",WEe="اشحن Credits واستبدل رموز الخصم وراجع سجل wallet.",YEe={bonuses:"المكافآت",topups:"عمليات الشحن",usage:"الاستهلاك"},QEe={available:"تمت إضافته",availableHint:"مُدرج بالفعل في الرصيد المتاح",frozen:"قيد الانتظار (مجمّد)",frozenHint:"يتاح بعد حوالي {{days}} يومًا",frozenHintGeneric:"يتاح بعد انتهاء فترة الاحتفاظ",title:"مكافآت الإحالة",viewDetails:"عرض تفاصيل الإحالات"},XEe={noUsage:"لا يوجد استهلاك في آخر 30 يومًا",perDay:"متوسط {{amount}}/يوم",daysLeft:"≈ {{days}} يومًا بالمعدل الحالي"},ZEe={amountUsd:"المبلغ (USD)",minAmountHint:"الحد الأدنى للشحن هو {{amount}}.",apply:"تطبيق",get:"سيصل",onehopCredits:"OneHop credits",pay:"دفع",poweredByStripe:"محمي بواسطة Stripe",poweredBy:"محمي بواسطة {{provider}}",secureCheckout:"دفع آمن مستضاف",secureCheckoutShort:"دفع آمن",taxExclusiveNotice:"تُحتسب الضرائب المطبقة عند الدفع وتُضاف إلى هذا المبلغ.",presets:"مبالغ جاهزة",promoCode:"رمز العرض",promoCodePlaceholder:"أدخل الرمز",serviceFee:"رسوم الخدمة",title:"شحن",topupAmount:"مبلغ الشحن",totalDue:"الإجمالي المستحق",payCta:"ادفع {{amount}}",previewing:"جارٍ التحقق…",discount:"خصم القسيمة",couponBelowMin:"الإجمالي بعد الخصم منخفض جدًا — ارفع المبلغ أو جرّب رمزًا آخر.",maintenanceTitle:"الدفع غير متاح مؤقتًا",maintenanceDescription:"خدمة الدفع غير متاحة مؤقتًا. إذا كنت بحاجة إلى الدفع، تواصل معنا على Telegram.",contactTelegram:"تواصل معنا على Telegram",alipay:"Alipay",wechatPay:"WeChat Pay",crypto:"الدفع بالعملات الرقمية (USDC / USDT)",payOnStripe:"يتم إكمال الدفع في صفحة الدفع الآمنة من Stripe.",payOnProvider:"يتم إكمال الدفع في صفحة الدفع الآمنة من {{provider}}.",payOnHostedCheckout:"يتم إكمال الدفع في صفحة الدفع الآمنة المستضافة.",amountPrecision:"يقبل {{provider}} مبالغ بالدولار الأمريكي بحد أقصى منزلتين عشريتين. عدّل المبلغ أو رمز العرض.",couponBonus:"مكافأة القسيمة",couponBonusExpiry:"تنتهي صلاحية الرصيد الإضافي بعد {{days}} يومًا من الدفع.",couponInvalid:"لا يمكن تطبيق هذا الرمز — جرِّب رمزًا آخر.",couponErrors:{limitReached:"لقد استخدمت هذا الرمز الحد الأقصى من المرات.",invalid:"هذا الرمز غير صالح.",expired:"انتهت صلاحية هذا الرمز.",exhausted:"تم استهلاك هذا الرمز بالكامل.",unavailable:"هذا الرمز قيد الاستخدام حاليًا — حاول مرة أخرى بعد قليل."},tierBonus:"مكافأة العرض",tierBonusExpiry:"تنتهي صلاحية الرصيد الإضافي بعد {{days}} يومًا من الدفع.",tierBonusRestricted:"يمكن إنفاق الرصيد الإضافي على: {{models}} فقط.",nextTierPercent:"اشحن {{amount}} إضافية للحصول على {{percent}}% رصيداً إضافياً.",nextTierBonus:"اشحن {{amount}} إضافية للحصول على {{bonus}} رصيداً إضافياً.",tierCapReached:"لقد حصلت بالفعل على الحد الأقصى من المكافأة لهذا العرض."},JEe="إضافة Credits",eIe="جار الإنشاء...",tIe="Credit المتاح",nIe="شحن",aIe="الدفع عبر Stripe",oIe="المبلغ (USD)",sIe="مبالغ الشحن الجاهزة",rIe
763="استبدال رمز خصم",iIe="رمز الخصم",lIe="جار الاستبدال...",cIe="استبدال",dIe="تم استبدال الرمز، جار تحديث الرصيد.",uIe="جار التحويل إلى checkout الآمن...",mIe="فشل تحميل ملخص الفوترة",pIe="فشل الشحن",fIe="تبويبات نشاط الفوترة",gIe="المعاملات",hIe="منح Credit",yIe="نوع المعاملة",vIe="المصدر",bIe="لا توجد معاملات بعد",xIe="تظهر عمليات الشحن والخصم والمنح هنا.",$Ie="إدخالات ledger",wIe="الوقت",kIe="النوع",CIe="المبلغ",SIe="الرصيد",AIe="لا توجد منح بعد",TIe="تظهر مكافآت التسجيل ورموز الخصم والمنح اليدوية هنا.",RIe="الحالة",PIe={successTitle:"تم استلام الدفع",polling:"جارٍ إضافة Credit إلى wallet... حوالي 30 ثانية.",delayed:"الإضافة بطيئة. حدّث بعد لحظات أو راجع إيصالات Stripe.",cancelledTitle:"تم إلغاء الدفع",cancelledBody:"لم يتم خصم أي مبلغ. أعد المحاولة عندما تكون جاهزًا.",failedTitle:"فشل الدفع",failedBody:"تعذّر إتمام عملية الدفع. لم تتم إضافة أي رصيد. حاول مرة أخرى أو استخدم طريقة دفع مختلفة."},_Ie={text:"Credits رصيد خدمة مدفوع مسبقًا، وليست وديعة بنكية. Credits المستهلكة غير قابلة للاسترداد. كل الأسعار بـ USD. راجع",tosLink:"الشروط"},jIe="الإيصالات",NIe="جارٍ الفتح...",DIe="تعذّر فتح بوابة الفوترة",MIe={title:"آخر عمليات الشحن",subtitle:"آخر 90 يومًا، قابلة للاسترداد خلال 24 ساعة.",loading:"جارٍ تحميل عمليات الشحن...",date:"التاريخ",amount:"المبلغ",credits:"Credits",status:"الحالة",refund:"استرداد",alreadyRefunded:"تم الاسترداد بالفعل",windowExpired:"انتهت نافذة الاسترداد (24 ساعة)",confirmTitle:"تأكيد الاسترداد",confirmBody:"ستتم معالجة الاسترداد عبر Stripe خلال 1-3 أيام عمل. تنطبق رسوم منصة ({{fee}}) على الاسترداد بمبادرة المستخدم.",amountLabel:"مبلغ الاسترداد (USD)",maxLabel:"الحد الأقصى ${{value}}",requestedLabel:"مبلغ الاسترداد المطلوب",platformFeeLabel:"رسوم المنصة ({{fee}})",cardReturnLabel:"سيُعاد إلى بطاقتك",bonusForfeitureHint:"سيتم إسقاط Credits الترويجية الممنوحة مع هذه الشحنة بشكل تناسبي.",cancel:"إلغاء",confirm:"إصدار الاسترداد",submitting:"جارٍ الإرسال...",refundSubmittedTitle:"تم إرسال طلب الاسترداد",refundSubmittedBody:"سيُعيد Stripe الأموال إلى بطاقتك خلال 1-3 أيام عمل.",refundFailedTitle:"فشل الاسترداد",balance:"الرصيد",confirmAmount:"استرداد {{amount}}"},EIe={title:"تنبيهات الرصيد",description:"سننبهك عندما ينخفض رصيدك.",emailLabel:"تنبيهي بالبريد الإلكتروني",webhookLabel:"Webhook",autorechargeLabel:"إعادة الشحن التلقائية",autorechargeUnsupported:"الشحن التلقائي غير متاح مع مزوّد الدفع الحالي.",autorechargeAddCardHint:"أضف بطاقة للحفاظ على رصيدك",autorechargeTopUp:"اشحن بمقدار",autorechargeWhenBelow:"عندما يقل الرصيد عن",autorechargeThreshold:"حد إعادة الشحن التلقائية",autorechargeAmount:"مبلغ إعادة الشحن التلقائية",autorechargeDisabledFailures:"تم تعطيل إعادة الشحن التلقائية بعد عدة محاولات فاشلة متتالية. حدّث بطاقتك وأعد تفعيلها.",autorechargeIncomplete:"حدّد مبلغ إعادة شحن وحدًّا أكبر من $0.",test:"اختبار",testing:"جارٍ الاختبار…",testQueued:"تمت إضافة تسليم الاختبار إلى قائمة الانتظار — تحقق من نقطة النهاية",testFailed:"تعذّرت إضافة تسليم الاختبار إلى قائمة الانتظار",signingSecret:"سر التوقيع",secretOnSave:"يتم إنشاء سر توقيع عند الحفظ.",rotate:"تدوير",secretRotated:"تم تدوير سر التوقيع",rotateFailed:"تعذّر تدوير السر",secretCopied:"تم نسخ سر التوقيع",saved:"تم حفظ إعدادات التنبيه",saveFailed:"تعذّر حفظ إعدادات التنبيه",loadFailed:"تعذّر تحميل إعدادات التنبيه",thresholdRequired:"حدّد حدًّا أكبر من $0 لتفعيل التنبيهات.",webhookUrlRequired:"أدخل عنوان https:// للـ webhook.",thresholdOrderBad:"يجب أن يكون حد التنبيه ≥ حد إعادة الشحن التلقائية.",card:"بطاقة",changeCard:"تغيير",removeCard:"إزالة",cardRemoved:"تمت إزالة البطاقة",cardRemoveFailed:"تعذّرت إزالة البطاقة",cardSetupFailed:"تعذّر بدء إضافة البطاقة",lowBalanceGroup:"تنبيهات انخفاض الرصيد",thresholdLabel:"حد التنبيه"},IIe={title:"سجل المعاملات",idSearch:"معرّف المعاملة",amountRange:"نطاق المبلغ (USD)",min:"الحد الأدنى",max:"الحد الأقصى",clear:"مسح",retry:"إعادة المحاولة",empty:"لا توجد معاملات في هذا النطاق",date:"التاريخ",typeMethod:"النوع / الطريقة",description:"الوصف",action:"الإجراء",prevMonth:"الشهر السابق",nextMonth:"الشهر التالي",viewInvoices:"عرض الفواتير",emptyNew:"لا توجد معاملات بعد",emptyNewDesc:"بعد الشحن، ستظهر هنا عمليات الشحن والمكافآت والمبالغ المستردة.",topUpCta:"اشحن الرصيد",emptyFiltered:"لا توجد معاملات مطابقة",emptyFilteredDesc:"جرّب مسح الفلاتر أو توسيع نطاق التاريخ.",clearFilters:"مسح الفلاتر"},OIe="رصيدك منخفض وقد يوقف الطلبات. اشحن الرصيد أو فعّل الشحن التلقائي.",LIe="رصيدك منخفض وقد يوقف الطلبات. اشحن الرصيد للمتابعة.",UIe={creditPurchase:"شحن الرصيد",topupBonus:"Top-up bonus",signupBonus:"Signup bonus",referralClawback:"Referral cashback clawback (refund)",couponBonus:"مكافأة القسيمة",referralCashback:"استرداد الإحالة",referralInviteeCashback:"مكافأة المدعو",redeemCode:"رمز الاسترداد {{code}}",redeemCodeReversal:"إلغاء رمز الاسترداد",stripeRefund:"استرداد Stripe",bonusReversal:"استرجاع المكافأة (استرداد)"},BIe={title:"رصيد مخصّص",subtitle:"رصيد إضافي قابل للاستخدام على نماذج محددة فقط — منفصل عن رصيدك.",onlyModels:"فقط {{models}}",onlyModelsGeneric:"نماذج مقيّدة",validUntil:"صالح حتى {{date}}",noExpiry:"بدون انتهاء صلاحية",useInChat:"Use in chat"},FIe={card:"بطاقة",alipay:"Alipay",wechatPay:"WeChat Pay"},zIe={title:"رمز الاسترداد",description:"هل لديك رمز استرداد؟ أدخله لإضافة قيمته الاسمية إلى رصيدك.",placeholder:"مثال: OHR-XXXXXXXX",redeem:"استرداد",redeeming:"جارٍ الاسترداد…",success:"تمت إضافة {{amount}} إلى الرصيد",successRestricted:"Redeemed {{amount}} — usable with {{models}} only",successValidity:"Valid until {{date}}.",errors:{invalid:"هذا الرمز غير صالح.",expired:"انتهت صلاحية هذا الرمز.",alreadyRedeemed:"تم استخدام هذا الرمز بالفعل.",perUserLimit:"لقد بلغت حد الاسترداد لهذه الدفعة."}},qIe={title:GEe,description:WEe,breakdown:YEe,referralRewards:QEe,burnRate:XEe,topup:ZEe,addCredits:JEe,creating:eIe,availableCredit:tIe,topUp:nIe,poweredByStripe:aIe,amountUsd:oIe,presetAmounts:sIe,redeemCoupon:rIe,couponCode:iIe,redeeming:lIe,redeem:cIe,couponRedeemed:dIe,redirecting:uIe,summaryFailed:mIe,topupFailed:pIe,tabsLabel:fIe,transactions:gIe,creditGrants:hIe,transactionType:yIe,source:vIe,noTransactions:bIe,noTransactionsDescription:xIe,ledgerEntries:$Ie,time:wIe,type:kIe,amount:CIe,balance:SIe,noGrants:AIe,noGrantsDescription:TIe,status:RIe,topupBanner:PIe,compliance:_Ie,receipts:jIe,openingPortal:NIe,portalFailed:DIe,recentTopups:MIe,alerts:EIe,history:IIe,lowBalanceWarning:OIe,lowBalanceWarningNoAutoTopup:LIe,ledgerDesc:UIe,earmarked:BIe,paymentMethod:FIe,redeemCard:zIe},HIe="تعذّر تحميل الرسم البياني",VIe="لا توجد بيانات",KIe="لا توجد بيانات للرسم بعد.",GIe={errorTitle:HIe,emptyTitle:VIe,emptyDescription:KIe},WIe={copy:"نسخ",regenerate:"إعادة التوليد",shareComingSoon:"مشاركة (قريبًا)",download:"تنزيل",copyLink:"نسخ الرابط",newChat:"دردشة جديدة",deleteChat:"حذف الدردشة",openConversationList:"فتح قائمة المحادثات",openSettings:"إعدادات الدردشة",collapseSidebar:"طي الشريط الجانبي",expandSidebar:"توسيع الشريط الجانبي",cancel:"إلغاء",apply:"تطبيق",newChatTooltip:"إنشاء محادثة جديدة",copied:"تم النسخ"},YIe={placeholderReady:"ابدأ محادثة جديدة...",placeholderNoModel:"اختر نموذجًا من الأعلى أولًا",attachmentTooLarge:"حجم الملف يتجاوز {{limit}} ولا يمكن رفعه",attachmentUnsupported:"نوع الملف غير مدعوم. استخدم PNG أو JPEG أو WebP أو GIF أو MP4 أو WebM أو MOV.",unsupportedVision:"هذا النموذج لا يقبل إدخال الصور أو الفيديو. بدّل النموذج قبل إفلات الملفات.",send:"إرسال",abort:"إيقاف",attachImage:"إضافة صورة",attachMedia:"إضافة صورة أو فيديو",removeAttachment:"إزالة",shortcutSend:"إرسال",shortcutNewLine:"سطر جديد",shortcutAbort:"إيقاف",frameFirst:"الإطار الأول",frameLast:"الإطار الأخير",frameReference:"مرجع",imageMode:"توليد الصور",videoMode:"توليد الفيديو",placeholderComingSoon:"This model is coming soon — pick another one above",reasoning:"التفكير",reasoningOff:"إيقاف",reasoningAlways:"تشغيل دائم",placeholderTopupRequired:"هذا النموذج متاح للحسابات التي شحنت رصيدها — اشحن رصيدك لاستخدامه هنا"},QIe={modelUnavailable:"النموذج {{model}} غير متاح حاليًا. تم حفظ prompt الخاص بك.",rateLimited:"هناك طلبات متزامنة كثيرة جدًا. حاول مجددًا بعد قليل.",accountDisabled:"هذا الحساب معطّل ولا يمكنه متابعة الدردشة.",attachmentsUploading:"لا تزال الصور قيد الرفع. انتظر قليلاً Ù
763‚بل الإرسال.",attachmentsFailed:"فشل رفع إحدى الصور. أزلها وحاول مرة أخرى قبل الإرسال."},XIe={title:"ابدأ اختبار أي نموذج هنا.",body:"تحدث مباشرة مع أي نموذج. يُخصم الاستخدام من محفظة PAYG الخاصة بك.",starters:{compareModels:"قارن GPT-5.5 وClaude Opus على مهمة برمجية واحدة",analyzeImage:"حلّل مخطط بنية ولخّص المخاطر",draftPrompt:"اكتب system prompt لوكيل دعم",generateImage:"ولّد صورة hero لمنتج بأسلوب SaaS نظيف"}},ZIe={untitled:"دردشة بلا عنوان",deleteConfirm:'حذف "{{title}}"؟',emptyTitle:"لا توجد محادثات بعد",emptyBody:"استخدم + دردشة جديدة في الأعلى للبدء.",listLabel:"قائمة المحادثات",groups:{today:"اليوم",yesterday:"أمس",earlier:"أقدم"},menu:{rename:"إعادة تسمية",delete:"حذف"},deleteTitle:"حذف المحادثة؟"},JIe={paygWallet:"محفظة PAYG"},eOe={chooseModel:"اختر نموذجًا",searchPlaceholder:"ابحث عن النماذج...",emptyTitle:"لم يتم العثور على نماذج",emptyBody:"جرّب عبارة بحث أو تبويبًا آخر.",protocols:"{{count}} بروتوكولات",context:"{{value}} ctx",tabs:{all:"الكل",text:"نص",image:"صورة",video:"فيديو"},maxOut:"الإخراج {{value}}",unavailable:"غير متاح مؤقتًا",requiresTopup:"اشحن رصيدك لفتحه"},tOe={title:"إعدادات الدردشة",protocol:"البروتوكول",unlimited:"غير محدود",fields:{memory_limit:{label:"ذاكرة الدردشة"},temperature:{label:"Temperature"},top_p:{label:"Top P"},max_tokens:{label:"Max Tokens",placeholder:"128000"},service_tier:{label:"مستوى الخدمة",options:{standard:"قياسي",priority:"ذو أولوية",flex:"مرن"}},thinking_budget:{label:"Thinking Budget (tokens)",placeholder:"مثل 2000"},stop_sequences:{label:"Stop Sequences",placeholder:"مفصولة بفواصل، مثل END, STOP",itemLabel:"Stop"},system_prompt:{label:"System Prompt",placeholder:"أدخل system prompt..."},prompt_cache_mode:{label:"Prompt Cache",options:{implicit:"ضمني",explicit:"صريح"}},image_size:{label:"دقة الصورة"},image_resolution:{label:"الدقة"},image_quality:{label:"جودة الصورة",options:{Auto:"Auto",auto:"Auto",low:"منخفضة",medium:"متوسطة",high:"عالية"}},video_ratio:{label:"نسبة العرض إلى الارتفاع"},video_resolution:{label:"دقة الفيديو"},video_duration_seconds:{label:"المدة"},tools:{label:"Tools (JSON)",placeholder:'[{ "type": "function", "function": { ... } }]'},image_count:{label:"عدد الصور"},image_aspect_ratio:{label:"نسبة العرض إلى الارتفاع"},reasoning_effort:{label:"مستوى جهد الاستدلال",options:{none:"إيقاف",minimal:"الحد الأدنى",low:"منخفض",medium:"متوسط",high:"مرتفع",xhigh:"مرتفع جدًا",max:"الحد الأقصى"}},reasoning_pro:{label:"وضع Pro"},reasoning_context:{label:"سياق الاستدلال",options:{auto:"تلقائي",current_turn:"الجولة الحالية",all_turns:"كل الجولات"}},reasoning_enabled:{label:"التفكير"},reasoning_always:{label:"التفكير",value:"تشغيل دائم"}}},nOe={estimating:"جارٍ التقدير...",settling:"جارٍ التسوية...",input:"إدخال",output:"إخراج",milliseconds:"ms",realCost:"التكلفة الفعلية",latency:"زمن الاستجابة",logDetail:"تفاصيل السجل"},aOe={copied:"تم نسخ رابط الصورة",expired:"انتهت صلاحية رابط الصورة. انسخ الرابط لإعادة فتحها أو أعد توليدها.",attachment:"[مرفق صورة]"},oOe={message:"تتم فوترة هذه الدردشة من محفظة PAYG الخاصة بك",balance:"الرصيد",billingLink:"الفوترة",dismiss:"إغلاق"},sOe={badge:"Earmarked {{amount}}",bannerTitle:"Earmarked credit available",bannerBody:"You have {{amount}} of dedicated credit for this model — it's used first."},rOe={trigger:"نسخ ككود",copied:"تم النسخ كـ {{format}}",failed:"فشل النسخ",failedDescription:"قد يكون المتصفح قد حظر إذن الحافظة."},iOe={interrupted:"[تمت المقاطعة]",sending:"جارٍ الإرسال"},lOe={title:"مسار التفكير",duration:"فكّر لمدة {{seconds}}s"},cOe={title:"توليد الفيديو قادم قريبًا",body:"هذا النموذج مدرج للاستكشاف، لكن إرسال الفيديو غير مفعّل بعد.",switchToText:"التبديل إلى نموذج نصي"},dOe={imageGenerating:"جارٍ توليد الصورة",videoGenerating:"جارٍ توليد الفيديو",stage:{queued:"في قائمة الانتظار",routing:"التوجيه",generating:"التوليد",storing:"التخزين",settling:"التسوية"}},uOe={INSUFFICIENT_CREDITS:"رصيد غير كافٍ",RATE_LIMITED:"طلبات كثيرة جدًا",rate_limit_error:"طلبات كثيرة جدًا",MODEL_NO_VISION:"لا يدعم هذا النموذج إدخال الصور",CONTENT_REFUSED:"رفض النموذج هذا الطلب",EMPTY_RESPONSE:"أرجع النموذج استجابة فارغة",upstream_error:"خطأ في خدمة المنبع",overloaded_error:"خدمة المنبع مشغولة",upstream_invalid_json:"استجابة غير صالحة من خدمة المنبع",stream_read_error:"انقطع تدفق الاستجابة",invalid_api_key:"فشل المصادقة مع خدمة المنبع",model_unavailable:"النموذج غير متاح مؤقتًا",no_image:"لم يتم توليد أي صورة",no_body:"لا توجد اØ
763³ØªØ¬Ø§Ø¨Ø© من خدمة المنبع",http_error:"فشل الطلب",session_create_failed:"فشل إنشاء الجلسة"},mOe={title:"اشحن رصيدك لفتح هذا النموذج",body:"إنه متاح للحسابات التي شحنت رصيدها. أي مبلغ يفتحه فورًا، ويظل الرصيد يُحتسب حسب الاستخدام.",cta:"اشحن الرصيد"},pOe={actions:WIe,composer:YIe,errors:QIe,empty:XIe,sidebar:ZIe,header:JIe,modelSelector:eOe,settings:tOe,metrics:nOe,image:aOe,payg:oOe,earmark:sOe,copyAsCode:rOe,status:iOe,thinking:lOe,video:cOe,media:dOe,errorCodes:uOe,topupLock:mOe},fOe="جار التحميل...",gOe="الحساب",hOe="اللغة",yOe="تسجيل الدخول",vOe="تسجيل الخروج",bOe="جار تسجيل الخروج...",xOe="حفظ التغييرات",$Oe="جار الحفظ...",wOe="تم الحفظ.",kOe="رجوع",COe="إعادة المحاولة",SOe="خصم 5% على رسوم الخدمة عند الشحن.",AOe="حفظ",TOe="إلغاء",ROe="مسح",POe="إعادة تعيين",_Oe="تم النسخ",jOe="فشل النسخ",NOe="إغلاق",DOe="الإجمالي",MOe={timestamp:"الطابع الزمني",local:"الوقت المحلي",relative:"نسبي"},EOe="نسخ",IOe={title:"افتح في متصفحك",description:"أنت تتصفح هذه الصفحة داخل <b>متصفح تطبيق</b>، حيث <b>لا يعمل تسجيل الدخول عبر Google والتحقق البشري</b>. يُرجى فتحها في متصفح نظامك للمتابعة.",hintWechat:"اضغط على قائمة ··· في الزاوية العلوية اليمنى واختر «فتح في المتصفح».",hintGeneric:"استخدم القائمة في الزاوية العلوية اليمنى واختر «فتح في المتصفح / Safari».",copyLink:"نسخ الرابط",continueAnyway:"المتابعة على أي حال"},OOe="الكل",LOe="نشط",UOe="اختياري",BOe="إزالة",FOe={loading:fOe,account:gOe,language:hOe,signIn:yOe,signOut:vOe,signingOut:bOe,saveChanges:xOe,saving:$Oe,saved:wOe,back:kOe,retry:COe,topUpPromo:SOe,save:AOe,cancel:TOe,clearAll:ROe,reset:POe,copied:_Oe,copyFailed:jOe,dismiss:NOe,total:DOe,time:MOe,copy:EOe,inAppBrowser:IOe,all:OOe,active:LOe,optional:UOe,remove:BOe},zOe="لوحة التحكم",qOe="راقب credit والاستخدام وصحة gateway من وحدة تحكم واحدة.",HOe="إنشاء API key",VOe={creditBalance:"رصيد credit",requestsToday:"طلبات اليوم",activeApiKeys:"API keys نشطة"},KOe={title:"اتجاه الاستخدام",description:"الطلبات و credit المفوتر خلال آخر 14 يومًا.",viewUsage:"عرض الاستخدام",loading:"جار تحميل اتجاه الاستخدام",empty:"لا يوجد استخدام بعد",emptyDescription:"سيظهر الاستخدام هنا بعد بدء وصول الطلبات."},GOe={title:"نشاط credit",description:"Credit المفوتر يوميًا خلال آخر 90 يومًا.",total:"إجمالي 90 يومًا",loading:"جار تحميل النشاط",activeDays:"{{count}} يومًا نشطًا خلال آخر {{days}} يومًا",less:"أقل",more:"أكثر"},WOe={title:"توزيع الاستخدام",description:"عرض مختصر لكثافة الإنفاق وحجم tokens والنموذج الأكثر استخدامًا.",activeDays:"الأيام النشطة",ofDays:"من {{days}} يومًا",avgDailyCredit:"متوسط credit اليومي",nonZeroDays:"في الأيام النشطة",peakDay:"يوم الذروة",noPeak:"لا يوجد استخدام بعد",tokens:"Tokens",topModel:"النموذج الأبرز",creditShare:"حصة credit المفوتر"},YOe={title:"الحالة السريعة",requests7d:"طلبات 7 أيام",creditToday:"Credit المستخدم اليوم",credit7d:"Credit المستخدم خلال 7 أيام"},QOe={title:"الطلبات الأخيرة",description:"أحدث استدعاءات gateway عبر keys الخاصة بك.",viewRecords:"عرض السجلات",table:{label:"الطلبات الأخيرة",model:"النموذج",status:"الحالة",tokens:"Tokens",credit:"Credit",time:"الوقت",apiKey:"API key"},empty:"لا توجد طلبات بعد",emptyDescription:"أنشئ API key وأرسل طلبًا، وستظهر الاستدعاءات الأخيرة هنا."},XOe={title:"أرسل أول طلب",description:"متوافق مع OpenAI. أنشئ key، واضبط {{env}}، ثم استدع gateway."},ZOe={credit:"Credit",requests:"الطلبات"},JOe={title:zOe,description:qOe,createApiKey:HOe,cards:VOe,usageTrend:KOe,activity:GOe,usageMix:WOe,quickHealth:YOe,recent:QOe,firstRequest:XOe,tooltip:ZOe},e3e="تحديد كل الصفوف",t3e="تحديد الصف {{row}}",n3e="تعذّر التحميل",a3e="لا توجد بيانات",o3e="لا توجد سجلات لعرضها.",s3e="مزيد من التفاصيل",r3e="{{count}} تفاصيل إضافية",i3e="فتح التفاصيل",l3e={selectAllRows:e3e,selectRow:t3e,errorTitle:n3e,emptyTitle:a3e,emptyDescription:o3e,moreDetails:s3e,moreDetailsWithCount:r3e,openRow:i3e},c3e="آخر ساعة",d3e="اليوم",u3e="أمس",m3e="آخر 7 أيام",p3e="آخر 30 يومًا",f3e="هذا الشهر",g3e="حسب الشهر",h3e="مخصص",y3e="كل الوقت",v3e="اختر التاريخ",b3e="إلغاء",x3e="تطبيق",$3e="يجب أن يكون تاريخ البدء قبل تاريخ الانتهاء.",w3e="إعدادات نطاق التاريخ",k3e="الشهر السابق",C3e="الشهر التالي",S3e={last1h:c3e,today:d3e,yesterday:u3e,last7d:m3e,last30d:p3e,thisMonth:f3e,byMonth:g3e,custom:h3e,all:y3e,selectDate:v3e,cancel:b3e,apply:x3e,reversedError:$3e,presetsAriaLabel:w3e,previousMonth:k3e,nextMonth:C3e},A3e="الحساب غير متاح",T3e="جار تهيئة الحساب",R3e={title:"تم إيقاف الحساب",description:"لا يزال بإمكان هذا الحساب تسجيل الدخول، لكن الوصول إلى لوحة التحكم وطلبات gateway متوقفان.",detail:"إذا كان Ù
763‡Ø°Ø§ غير متوقع، تواصل مع support من بريد هذا الحساب."},P3e={accountUnavailable:A3e,accountInitializing:T3e,accountRestricted:R3e},_3e="توكنات مجانية",j3e="حصة يومية من التوكنات المجانية لنماذج محددة — تتجدد تلقائيًا. ولا يُخصم أي مبلغ من محفظتك.",N3e="تعذّر تحميل حصتك من التوكنات المجانية.",D3e="كل النماذج",M3e="تنتهي الحملة في {{date}}",E3e={daily:"يومي",weekly:"أسبوعي"},I3e={daily:"يتجدد يوميًا",weekly:"يتجدد أسبوعيًا",localTime:"بتوقيتك المحلي {{time}}",countdown:"التجديد التالي خلال {{duration}}",refreshingSoon:"سيتجدد قريبًا"},O3e={title:"لا توجد حملات توكنات مجانية نشطة",description:"عند وجود حملة توكنات مجانية جارية، ستظهر حصتك اليومية هنا."},L3e={title:"تم إيقاف منح التوكنات المجانية مؤقتًا على حسابك",body:"يبدو أن هذا الحساب جزء من نمط تسجيل جماعي، لذا تم إيقاف المنح المجانية مؤقتًا في الوقت الحالي. إذا كان ذلك عن طريق الخطأ، تواصل معنا عبر"},U3e="توكن",B3e="المتبقي اليوم {{value}} توكن",F3e={label:"أرسل لي بريدًا عند النفاد",hint:"احصل على بريد إلكتروني عند نفاد رصيدك المجاني لهذا اليوم."},z3e={crg_freetoken_daily_cn5:"النماذج الصينية · توكنات مجانية يوميًا"},q3e={title:_3e,description:j3e,loadFailed:N3e,allModels:D3e,campaignEnds:M3e,cadence:E3e,refresh:I3e,empty:O3e,paused:L3e,tokensUnit:U3e,remainingToday:B3e,emailToggle:F3e,campaigns:z3e},H3e="السجلات",V3e="افحص التكلفة والكمون وtokens والحالة وإشارات routing لكل طلب.",K3e={copiedCurl:"تم نسخ curl",copiedId:"تم نسخ معرّف الطلب",copyCurl:"نسخ كـ curl",copyFailed:"فشل النسخ",copyId:"نسخ معرّف الطلب",menu:"إجراءات الصف",openTab:"فتح في تبويب جديد"},G3e={prompt:"Prompt",ratio:"نسبة hit",read:"قراءة cache",title:"نسبة cache hit"},W3e={confirm:"إلغاء المهمة",failed:"فشل إلغاء المهمة",keep:"إبقاء",message:"هذه المهمة ما زالت في قائمة الانتظار. يؤدي إلغاؤها إلى عدم معالجتها؛ ولن تُطبق أي رسوم.",success:"تم إلغاء المهمة",title:"إلغاء المهمة؟",pending:"جارٍ الإلغاء..."},Y3e={cacheHit:"ضربة Cache",cost:"التكلفة",ip:"IP",latency:"الكمون",model:"النموذج",source:"المصدر",status:"الحالة",stream:"تدفق",time:"الوقت",tokens:"Tokens",tps:"Throughput"},Q3e={trigger:"إعدادات الأعمدة"},X3e={body:"أرسل طلبًا عبر OneHop وسيظهر هنا.",title:"لا توجد سجلات في هذا النطاق"},Z3e={all:"الكل",apiKey:"API key",cost:"التكلفة (USD)",desktopDateRangeAria:"تحديد نطاق التاريخ على سطح المكتب",finishReason:"سبب الانتهاء",latency:"الكمون (s)",max:"الحد الأقصى",min:"الحد الأدنى",mobileDateRangeAria:"تحديد نطاق التاريخ على الجوال",model:"النموذج",modelsSelected:"تم تحديد {{count}}",more:"المزيد من عوامل التصفية",refresh:"تحديث",request:"البحث بمعرّف الطلب",requestIdLabel:"معرّف الطلب",status:"الحالة",stream:"تدفق",time:"الوقت",type:"النوع",mobileTitle:"تصفية"},J3e={requests:"طلبات في هذه الصفحة",times:"تعرض الأوقات بـ"},eLe={rowsPer:"الصفوف"},tLe={all:"كل الوقت",custom:"مخصص",last1h:"آخر ساعة",last30d:"آخر 30 يومًا",last7d:"آخر 7 أيام",thisMonth:"هذا الشهر",today:"اليوم",yesterday:"أمس"},nLe={title:"العميل",unknown:"لم يتم الإبلاغ عن user-agent",unknownShort:"غير معروف"},aLe={output:"Tokens الإخراج",rate:"المعدل",title:"Throughput",window:"نافذة التوليد"},oLe={title:"طلب",openDetail:"فتح تفاصيل الطلب",copy:"نسخ ID",copied:"تم النسخ",copyFailed:"فشل النسخ",close:"إغلاق",loading:"جارٍ التحميل…",response:"الاستجابة",sections:{request:"الطلب",routing:"التوجيه",tokens:"Tokens",cost:"تفصيل التكلفة",performance:"الأداء",error:"خطأ",outcome:"النتيجة",multimodal:"متعدد الوسائط"},fields:{requestId:"معرّف الطلب",time:"الوقت",apiKey:"API key",userAgent:"User-Agent",billingMode:"وضع الفوترة",onehopModel:"نموذج OneHop",endpoint:"Endpoint",firstToken:"أول token",total:"إجمالي المدة",throughput:"Throughput",stream:"Streaming",clientIp:"IP العميل",finishReason:"سبب الإنهاء",mediaType:"نوع الوسائط",imageCount:"الصور",imageSize:"الحجم",errorCode:"الرمز",errorMessage:"الرسالة",requestedModel:"النموذج المطلوب"},billingMode:{token:"لكل token",per_request:"لكل طلب",image:"لكل صورة"},timeline:{heading:"دورة الحياة",received:"تم استلام الطلب",routed:"تم التوجيه",failed:"فشل",generated:"تم التوليد",metered:"تم القياس",billed:"تمت الفوترة"},downloadMedia:"تنزيل"},sLe={success:"ناجح",completed:"مكتمل",failed:"فشل",pen
763ding:"قيد الانتظار",repairing:"جار الإصلاح",queued:"في الصف",running:"قيد التشغيل",cancelled:"ملغى",expired:"منتهي"},rLe={chat:"دردشة",image:"صورة",video:"فيديو"},iLe={stop:"Stop",length:"حد الطول",tool_calls:"استدعاءات الأدوات",content_filter:"فلتر المحتوى",error:"خطأ"},lLe={true:"متدفق",false:"غير متدفق"},cLe={title:"تفصيل التكلفة"},dLe={title:"تفصيل tokens",prompt:"الإدخال",completion:"الإخراج",imageOutput:"رموز إخراج الصورة",cacheRead:"قراءة cache",cacheWrite:"كتابة cache",cacheWrite5m:"كتابة cache 5m",cacheWrite1h:"كتابة cache 1h",total:"الإجمالي"},uLe={timestamp:"الطابع الزمني",local:"الوقت المحلي",relative:"نسبي"},mLe={inputCost:"تكلفة الإدخال",outputCost:"تكلفة الإخراج",cacheReadCost:"تكلفة قراءة cache",cacheWriteCost:"تكلفة كتابة cache",inputPrice:"سعر الإدخال",outputPrice:"سعر الإخراج",total:"الإجمالي",officialPrice:"السعر الرسمي",saved:"التوفير",factor:{textInput:"إدخال نص",textOutput:"إخراج نص",imageInput:"إدخال صورة",imageOutput:"إخراج صورة",perCallImage:"لكل صورة",videoPerSecond:"فيديو",videoPerCall:"فيديو",cacheRead:"قراءة التخزين المؤقت",cacheWrite:"كتابة التخزين المؤقت",cacheWrite5m:"كتابة التخزين المؤقت (5m)",cacheWrite1h:"كتابة التخزين المؤقت (1h)"},unit:{per1mTokens:"/ مليون tokens",perImage:"/ صورة",perSecond:"/ ث",perCall:"/ استدعاء"},promoBasis:"قبل العرض",promoSaved:"توفير العرض",freeCovered:"الحصة المجانية ({{tokens}} رمز)",freeCoveredNoCount:"الحصة المجانية"},pLe={noPreview:"لا توجد معاينة متاحة",video:"فيديو"},fLe={free:"مجاني"},gLe={title:H3e,description:V3e,actions:K3e,cacheHit:G3e,cancelJob:W3e,col:Y3e,columns:Q3e,empty:X3e,filter:Z3e,meta:J3e,pager:eLe,range:tLe,source:nLe,tps:aLe,drawer:oLe,status:sLe,type:rLe,finishReason:iLe,stream:lLe,costBreakdown:cLe,tokensBreakdown:dLe,time:uLe,userCost:mLe,export:{label:"تصدير CSV",exporting:"جارٍ التصدير…",done:"تم تصدير {{n}} صف.",truncated:"تم تصدير أول {{n}} صف. قلّص النطاق الزمني لتصدير الباقي.",failed:"فشل التصدير. يُرجى المحاولة مرة أخرى."},media:pLe,cost:fLe},hLe="النماذج",yLe="استعرض كل النماذج المتاحة، طول السياق، أسعار الإدخال/الإخراج، والقدرات، واحفظ النماذج التي تستخدمها كثيرًا.",vLe={all:"الكل",favorites:"مفضلتي",benefit:"ميزة",hot:"رائج",free:"Free"},bLe={capability:"النوع",allCapabilities:"كل الأنواع",capability_text:"نص",capability_image:"صورة",capability_audio:"صوت",capability_video:"فيديو",provider:"المزوّد",allProviders:"كل المزوّدين",protocol:"البروتوكول",allProtocols:"كل البروتوكولات",sort:"ترتيب",search:"بحث",searchPlaceholder:"النموذج / المزوّد",allContexts:"أي طول",context:"السياق",mobileTitle:"تصفية"},xLe="مميز",$Le="الأحدث",wLe="الأكثر رواجًا هذا الأسبوع",kLe="الاسم (A-Z)",CLe="السعر (من الأقل إلى الأعلى)",SLe="السعر (من الأعلى إلى الأقل)",ALe="طول السياق",TLe="زمن الاستجابة",RLe="الإنتاجية",PLe="OpenAI Chat",_Le="OpenAI Responses",jLe="Anthropic",NLe="Vertex AI",DLe="OpenAI Images",MLe="OpenAI Video",ELe={label:"النماذج",model:"النموذج",provider:"المزوّد",capabilities:"القدرات",context:"السياق",price:"السعر",discount:"خصم",action:"إجراء",tryIt:"جرّبه",type:"النوع",maxOutput:"الحد الأقصى للإخراج",copyId:"نسخ ID النموذج",copied:"تم النسخ",usage:"الاستخدام",stability:"الاستقرار",protocols:"البروتوكولات",openDetail:"Open model detail"},ILe="رائج",OLe="ميزة",LLe={add:"إضافة إلى المفضلة",remove:"إزالة من المفضلة"},ULe={favorites:"لا توجد مفضلات بعد",noMatch:"لا توجد نماذج مطابقة"},BLe="نص",FLe="صورة",zLe="ملف",qLe="فيديو",HLe="صوت",VLe="Embeddings",KLe="
763Vision",GLe="استدعاء الأدوات",WLe="وضع JSON",YLe="توليد الصور",QLe="تحرير الصور",XLe="نص",ZLe="صورة",JLe="فيديو",e4e="صوت",t4e="Embedding",n4e="رسمي",a4e="Kiro",o4e="ابتداءً من",s4e="/ استدعاء",r4e="/ Ø«",i4e="/ 1M",l4e="سريع",c4e="Free",d4e="Coming Soon",u4e="Free",m4e={ariaLabel:"عملة السعر",usd:"دولار أمريكي",rmb:"يوان (Â¥)",settlement:"تُعرض الأسعار باليوان وفق سعر صرف ثابت {{rate}}، للاسترشاد فقط؛ ويُخصم من محفظتك دائمًا بالدولار الأمريكي حسب الاستخدام الفعلي."},p4e="يتطلب شحن رصيد",f4e={title:hLe,description:yLe,tabs:vLe,filters:bLe,sort_featured:xLe,sort_newest:$Le,sort_top_weekly:wLe,sort_name:kLe,sort_price_asc:CLe,sort_price_desc:SLe,sort_context:ALe,sort_latency:TLe,sort_throughput:RLe,protocol_openai_chat:PLe,protocol_openai_responses:_Le,protocol_anthropic_messages:jLe,protocol_google_vertex_ai:NLe,protocol_openai_images:DLe,protocol_openai_sora:MLe,table:ELe,badge_hot:ILe,badge_benefit:OLe,favorite:LLe,empty:ULe,modality_text:BLe,modality_image:FLe,modality_file:zLe,modality_video:qLe,modality_audio:HLe,modality_embeddings:VLe,capability_vision:KLe,capability_tool_calling:GLe,capability_json_mode:WLe,capability_image_generation:YLe,capability_image_edit:QLe,type_text:XLe,type_image:ZLe,type_video:JLe,type_audio:e4e,type_embedding:t4e,provider_official:n4e,provider_kiro:a4e,price_from:o4e,price_perCall:s4e,price_perSec:r4e,price_per1m:i4e,price_fast:l4e,badge_free:c4e,badge_unavailable:d4e,price_free:u4e,currency:m4e,badge_requiresTopup:p4e},g4e={main:"التنقل الرئيسي",utility:"تنقل الأدوات",console:"تنقل لوحة التحكم",openNavigation:"فتح التنقل",collapse:"طي الشريط الجانبي",expand:"توسيع الشريط الجانبي"},h4e={platform:"لوحة التحكم",chat:"المحادثة",models:"النماذج",logs:"السجلات",jobs:"المهام",apiKeys:"API keys",usage:"الاستخدام",billing:"الفوترة",freeTokens:"توكنات مجانية",referrals:"الإحالات",settings:"الإعدادات",admin:"الإدارة",balance:"الرصيد",helpSupport:"المساعدة والدعم",announcements:"الإعلانات",announcementsTitle:"الإعلانات",announcementsEmpty:"لا توجد إعلانات بعد. تحقق لاحقًا.",announcementsTicketUnread:"{{count}} تذكرة بها ردود جديدة",support:"الدعم",tasks:"المهام",tagNew:"جديد"},y4e={staff:"الفريق"},v4e={dashboard:"لوحة المعلومات",users:"المستخدمون",billing:"فوترة المنصة",usage:"استخدام المنصة",rateLimits:"حدود المعدل",access:"الوصول",staff:"المشرفون",growth:"النمو",models:"النماذج",announcements:"الإعلانات",upstream:"Upstream",auditLogs:"سجلات التدقيق",webhooks:"Webhooks",support:"Support",campaigns:"Campaigns",domainRules:"Email domains"},b4e={title:"Notifications",markAllRead:"Mark all read",loading:"Loading…",emptyTitle:"You're all caught up",emptyBody:"New notifications will show up here."},x4e={aria:g4e,public:{models:"النماذج",pricing:"الأسعار",docs:"الوثائق",blog:"المدونة",changelog:"سجل التغييرات"},console:h4e,adminGroups:y4e,admin:v4e,notifications:b4e},$4e={back:"السابق",done:"تم",next:"التالي",stepOf:"{{current}} / {{total}}"},w4e={balance:{body:"اشحن حسب الاستخدام. يمكن استرداد الرصيد غير المستخدم في أي وقت.",title:"رصيدك"},keys:{body:"أنشئ key من هنا ثم وجّه أي أداة إلى OneHop.",title:"أنشئ أول API key"},models:{body:"اطّلع في صفحة واحدة على كل النماذج التي يمكنك استدعاؤها وتكلفة كل منها.",cta:"فتح صفحة النماذج",title:"استعرض النماذج"}},k4e={body:"URL واحد لكل النماذج. سنعرض لك أهم ثلاث نقاط خلال 30 ثانية.",skip:"تخطي",start:"ابدأ",title:"مرحبًا بك في OneHop"},C4e={nav:$4e,steps:w4e,welcome:k4e},S4e="Failed to load",A4e="Nothing here yet.",T4e="مزيد من التفاصيل",R4e={failedLoad:S4e,emptyDescription:A4e,moreDetails:T4e},P4e="الكل",_4e="نجاح",j4e="قيد الانتظار",N4e="جار الإصلاح",D4e="فشل",M4e="تم رد المبلغ",E4e="نشط",I4e="معطّل",O4e="مستنفد",L4e="محجوز",U4e="مُستخدَم",B4e="موقوف",F4e="محذوف",z4e="طبيعي",q4e="قيد المراقبة",H4e="محظور",V4e="تم المنح",K4e="تم العكس",G4e="منتهي",W4e="مرفوض",Y4e="مسودة",Q4e="منشور",X4e="مهمل",Z4e="مؤرشف",J4e="مخفي",e5e="تم الإنشاء",t5e="تم فتح checkout",n5e="مدفوع",a5e="ملغى",o5e="OpenAI Chat",s5e="OpenAI Responses",r5e="Anthropic Messages",i5e="Google Vertex AI",l5e="OpenAI Images",c5e="رسÙ
763ˆÙ… الاستخدام",d5e="مكافأة التسجيل",u5e="مكافأة ترويجية",m5e="مكافأة إحالة",p5e="مكافأة تعويض",f5e="مكافأة الشحن",g5e="تعديل يدوي",h5e="شراء credit",y5e="دفع",v5e="مكافأة التسجيل",b5e="قسيمة",x5e="منحة admin",$5e="استخدام API",w5e="مكافأة التسجيل",k5e="منحة يدوية",C5e="Sync",S5e="Streaming",A5e="فوترة token",T5e="فوترة الطلب",R5e="فوترة الصور",P5e="Reasoning منخفض",_5e="Reasoning متوسط",j5e="Reasoning عال",N5e="غير قابل للتطبيق",D5e="غير معروف",M5e="مجمّد",E5e="تم التحرير",I5e="ملغى",O5e="تم عكسه جزئيًا",L5e="تم التخطي",U5e={all:P4e,success:_4e,pending:j4e,repairing:N4e,failed:D4e,refunded:M4e,active:E4e,disabled:I4e,exhausted:O4e,reserved:L4e,redeemed:U4e,suspended:B4e,deleted:F4e,normal:z4e,watchlisted:q4e,blocked:H4e,granted:V4e,reversed:K4e,expired:G4e,denied:W4e,draft:Y4e,published:Q4e,deprecated:X4e,archived:Z4e,public:"عام",hidden:J4e,created:e5e,checkout_opened:t5e,paid:n5e,canceled:a5e,openai_chat:o5e,openai_responses:s5e,anthropic_messages:r5e,google_vertex_ai:i5e,openai_images:l5e,usage_charge:c5e,bonus_signup_grant:d5e,bonus_promo_grant:u5e,bonus_referral_grant:m5e,bonus_compensation_grant:p5e,bonus_topup_grant:f5e,manual_adjustment:g5e,credit_purchase:h5e,payment:y5e,signup:v5e,coupon:b5e,admin:x5e,api:$5e,signup_bonus:w5e,manual:k5e,sync:C5e,stream:S5e,token:A5e,request:T5e,image:R5e,low:P5e,medium:_5e,high:j5e,not_applicable:N5e,unknown:D5e,frozen:M5e,released:E5e,cancelled:I5e,partially_reversed:O5e,skipped:L5e},B5e="{{count}} لكل صفحة",F5e="الإجمالي {{count}}",z5e={perPage:B5e,total:F5e},q5e="الدعوة والمكافآت",H5e="شارك رابطك الخاص. عند قيام المستخدم المُحال بالشحن، تُسجَّل مكافآت الطرفين بوضوح.",V5e="تعذّر تحميل بيانات الدعوة",K5e="رابط الدعوة الخاص بك",G5e="مشاركة",W5e="تم نسخ الدعوة. الصقها في WeChat للمشاركة.",Y5e="نسخ",Q5e="تم النسخ",X5e="WeChat",Z5e="X",J5e="Telegram",eUe="Reddit",tUe="LinkedIn",nUe="WhatsApp",aUe="البريد الإلكتروني",oUe="Facebook",sUe={default:{title:"استدعِ كل نماذج AI عبر OneHop API واحدة",body:"سجّل عبر رابط دعوتي — اشحن رصيدك خلال {{firstWindowDays}} أيام، ونحصل كلانا على {{percent}}% كرصيد مسترجع."},x:{title:"API واحدة لكل نماذج AI 🤖",body:"اشحن خلال {{firstWindowDays}} أيام عبر رابطي، ويحصل كل منا على {{percent}}% كرصيد مسترجع. 🚀"},telegram:{title:"ابنِ باستخدام كل نماذج AI عبر OneHop",body:"استخدم رابط دعوتي — أول شحن خلال {{firstWindowDays}} أيام يمنحنا معًا {{percent}}% كرصيد إحالة."},whatsapp:{title:"ابنِ باستخدام كل نماذج AI — OneHop",body:"انضم عبر رابط دعوتي. اشحن خلال {{firstWindowDays}} أيام ونحصل كلانا على {{percent}}% كرصيد مسترجع."},reddit:{title:"OneHop — API واحدة لكل نماذج AI. دعوتي تمنحنا معًا {{percent}}% كرصيد مسترجع عند أول شحن لك",body:"اشحن خلال {{firstWindowDays}} أيام ونحصل كلانا على {{percent}}% كرصيد إحالة."},email:{title:"دعوة إلى OneHop — كل نماذج AI عبر API واحدة",body:`مرحبًا،
764
765أستخدم OneHop لاستدعاء كل نماذج AI الرئيسية عبر API واحدة. سجّل عبر رابط دعوتي، وبعد أول شحن لك نحصل كلانا على رصيد إحالة.
766
767مستويات المكافآت: {{tiers}}.
768
769شكرًا!`},wechat:{title:"OneHop — كل نماذج AI عبر API واحدة",body:"سجّل عبر رابط دعوتي. اشحن خلال {{firstWindowDays}} أيام ونحصل كلانا على {{percent}}% كرصيد إحالة."}},rUe="تظهر المكافأة فور الدفع، وتُجمَّد مؤقتًا لتغطية نافذة الاسترداد، ثم تُحرَّر عند انتهائها بوصفها credit لمكافآت دعوة OneHop.",iUe="تُحرَّر بعد {{days}} يوم.",lUe={referrer:"الداعي",referee:"المدعوّ"},cUe={referrer:": اكسب credit الدعوة عندما يشحن شخص دعوتَه رصيدَه — {{tiers}}.",referee:": سجّل عبر الرابط ثم اشحن رصيدك لتكسب أنت أيضًا — {{tiers}}."},dUe={dayRange:"الأيام {{fromDay}}-{{untilDay}
769}",dayOpenEnded:"من اليوم {{fromDay}} فما بعد"},uUe="إجمالي المكتسب",mUe="مكافآت الدعوة المُحرَّرة",pUe="مكافآت الدعوة المُجمَّدة",fUe="عدد المدعوّين",gUe="الدعوات الفعّالة",hUe="مكافآت المدعوّ المُحرَّرة",yUe="مكافآت المدعوّ المُجمَّدة",vUe="ملغاة / مستردّة",bUe="الأشخاص الذين دعوتهم",xUe="تفاصيل المكافآت",$Ue={user:"المستخدم",joined:"تاريخ التسجيل",topups:"عدد عمليات الشحن",earned:"ما كسبته",frozen:"مُجمَّد",date:"الوقت",event:"الحدث",topupAmount:"شحن الطرف الآخر",rate:"النسبة",releaseAt:"وقت التحرير",cashback:"المكافأة",status:"الحالة"},wUe={title:"لا توجد دعوات بعد",description:"شارك رابطك لتبدأ في كسب المكافآت."},kUe={inviteeSignedUp:"سجّل المدعوّ بنجاح",youSignedUp:"سجّلت بنجاح عبر دعوة",inviteePaid:"أنفق المدعوّ بنجاح",youPaid:"أنفقت بنجاح بصفتك مدعوًّا"},CUe={frozen:"مُجمَّد",released:"مُحرَّر",cancelled:"ملغاة",partially_reversed:"مستردّة جزئيًّا",reversed:"مستردّة",failed:"فاشلة",skipped:"متخطّاة"},SUe={title:q5e,description:H5e,error:V5e,yourLink:K5e,shareVia:G5e,wechatCopied:W5e,copy:Y5e,copied:Q5e,wechat:X5e,x:Z5e,telegram:J5e,reddit:eUe,linkedin:tUe,whatsapp:nUe,email:aUe,facebook:oUe,share:sUe,offer:rUe,releaseDelay:iUe,role:lUe,roleOffer:cUe,policy:dUe,totalEarned:uUe,availableEarned:mUe,frozenEarned:pUe,invited:fUe,active:gUe,availableReceived:hUe,frozenReceived:yUe,cancelledReversed:vUe,peopleYouInvited:bUe,history:xUe,col:$Ue,empty:wUe,event:kUe,status:CUe},AUe="الإعدادات",TUe="إدارة تفضيلات الحساب والإعدادات الافتراضية للوحة التحكم.",RUe="تم تسجيل الدخول باسم {{email}}",PUe="اسم العرض",_Ue="اللغة",jUe="المنطقة الزمنية",NUe="فشل تحميل الملف الشخصي",DUe="فشل الحفظ",MUe="تجاهل التغييرات؟",EUe="لديك تغييرات غير محفوظة. ستُهمل إذا غادرت الآن.",IUe="تجاهل",OUe="متابعة التحرير",LUe={title:AUe,description:TUe,signedInAs:RUe,displayName:PUe,locale:_Ue,timezone:jUe,failedLoad:NUe,failedSave:DUe,discardTitle:MUe,discardMessage:EUe,discardConfirm:IUe,keepEditing:OUe},UUe="جدار المهام",BUe="شارك OneHop مع جمهورك واكسب رصيدًا تجريبيًا. نراجع كل طلب يدويًا.",FUe="رابط منشورك",zUe="https://…",qUe="إرسال",HUe="تم الإرسال — سنراجعه قريبًا.",VUe="الروابط المقبولة: {{hosts}}",KUe="سبق رفضه: {{reason}}. صحّحه وأعد الإرسال.",GUe={pending:"قيد المراجعة",approved:"تم الإيداع",rejected:"مرفوض",active:"سارٍ"},WUe={title:"لا توجد مهام حاليًا",description:"عد قريبًا — ننظّم هذه الحملات بشكل دوري."},YUe={x_quote:{title:"اقتبس منشورنا على X",description:"اقتبس المنشور المثبّت لحساب @OneHopAI وأضف رأيك الخاص.",rules:["يجب أن يكون عمر حسابك على X ستة أشهر على الأقل وأن يضم 10 متابعين أو أكثر.","أرسل رابط منشور الاقتباس الخاص بك، لا رابط المنشور الأصلي.","يصل الرصيد خلال ساعتين من الموافقة."]},youtube_tutorial:{title:"انشر شرحًا على YouTube",description:"فيديو مدته 6 دقائق أو أكثر يوضح كيف ربطت OneHop بوكيلك الخاص.",rules:["أرسل رابط الفيديو بعد نشره.","يجب أن تضم قناتك على YouTube 50 مشتركًا أو أكثر.","مرة واحدة لكل حساب.","يصل الرصيد خلال ساعتين من الموافقة."]},short_video:{title:"انشر فيديو قصيرًا",description:"مقطع قصير مدته 40 ثانية أو أكثر على TikTok أو YouTube يذكر إعدادك في OneHop.",rules:["أرسل رابط الفيديو بعد نشره.","يصل الرصيد خلال ساعتين من الموافقة."]},github_readme:{title:"أضف OneHop إلى ملف README على GitHub",description:"أضف ذكرًا لـ OneHop في ملف README لأحد مستودعاتك، وستحصل على 15% إضافية مع كل شحن لاحق.",rules:["أرسل رابط المستودع بعد نشر ملف README.","هذه ميزة دائمة وليست لمرة واحدة: يُØ
769·Ø¨ÙŽÙ‘Ù‚ مع كل شحن لاحق الأعلى بين مكافأتنا القياسية ونسبتك البالغة 15%.","النص القابل للنسخ موجود أدناه."]}},QUe={load:"تعذّر تحميل جدار المهام",generic:"تعذّر الإرسال",urlRequired:"الصق رابط منشورك أولًا.",urlTooLong:"هذا الرابط طويل جدًا.",urlMalformed:"لا يبدو هذا رابطًا صالحًا.",hostNotAllowed:"تقبل هذه المهمة روابط المنصات المذكورة أعلاه فقط.",notAPost:"ضع رابط المنشور أو الفيديو المحدد، لا رابط الملف الشخصي أو الصفحة الرئيسية.",alreadySubmitted:"لقد أرسلت هذه المهمة من قبل.",notAvailable:"هذه المهمة غير متاحة حاليًا.",busy:"بلغنا سعة المراجعة لهذا اليوم. حاول مجددًا غدًا.",emailUnverified:"وثّق بريدك الإلكتروني أولًا.",accountTooNew:"حسابك ليس قديمًا بما يكفي لذلك بعد.",riskFlagged:"لا يمكن لهذا الحساب المشاركة حاليًا. تواصل مع الدعم إذا كنت ترى أن ذلك خطأ.",accountInactive:"هذا الحساب غير نشط.",deviceAlreadyClaimed:"شارك حساب آخر على هذا الجهاز بالفعل."},XUe="شكرًا لـ [OneHop]({{url}}) على رعاية هذا المشروع! يمنحك OneHop مفتاح API واحدًا متوافقًا مع OpenAI للوصول إلى مئات النماذج الرائدة — GPT وClaude وGemini وDeepSeek وKimi وQwen. لا حاجة لإدارة حسابات عدة مزوّدين ولا لتعديل الشيفرة عند تبديل النموذج، وتدفع فقط مقابل ما تستخدمه. → {{domain}}",ZUe="انسخ هذا النص",JUe={title:UUe,description:BUe,urlLabel:FUe,urlPlaceholder:zUe,submit:qUe,submitted:HUe,allowedHosts:VUe,rejectedHint:KUe,status:GUe,empty:WUe,item:YUe,error:QUe,sponsorBlurb:XUe,copyBlurb:ZUe},eBe="الدردشة المباشرة",tBe="تذاكر الدعم",nBe="افتح تذكرة وسيرد عليك فريقنا في أقرب وقت.",aBe="تذكرة جديدة",oBe={subject:"الموضوع",category:"النوع",status:"الحالة",updated:"آخر تحديث",user:"User"},sBe={billing:"الفوترة",technical:"تقني",account:"الحساب",other:"أخرى"},rBe={open:"مفتوحة",pending:"بانتظار الرد",resolved:"تم الحل",closed:"مغلقة"},iBe={allStatuses:"كل الحالات",allCategories:"All categories",search:"Search email or subject"},lBe={subject:"الموضوع",subjectPlaceholder:"صف المشكلة باختصار",category:"النوع",message:"الرسالة",messagePlaceholder:"أخبرنا بما يحدث…",attachments:"المرفقات",addAttachment:"إضافة ملف",submit:"إرسال التذكرة",cancel:"إلغاء"},cBe={you:"أنت",support:"الدعم",system:"النظام",replyPlaceholder:"اكتب ردًا…",send:"إرسال",closedNotice:"هذه التذكرة مغلقة. افتح تذكرة جديدة إذا كنت لا تزال بحاجة إلى مساعدة.",sendHint:"اضغط ⌘/Ctrl + Enter للإرسال",back:"العودة إلى التذاكر",systemStatus:{open:"أُعيد فتح التذكرة",pending:"تم وضع التذكرة بانتظار ردك",resolved:"تم وضع علامة تم الحل على التذكرة",closed:"تم إغلاق التذكرة"}},dBe={title:"Support tickets",resolve:"Resolve",close:"Close",reopen:"Reopen",unread:"Unread"},uBe="تحميل المزيد",mBe={created:"تم إرسال التذكرة",replied:"تم إرسال الرد",statusUpdated:"Status updated",error:"حدث خطأ ما، حاول مرة أخرى"},pBe="لم يتم العثور على التذكرة أو تمت إزالتها.",fBe={title:"لا توجد تذاكر بعد",body:"هل واجهت مشكلة؟ افتح تذكرة وسنساعدك.",cta:"افتح أول تذكرة"},gBe={liveChat:eBe,title:tBe,subtitle:nBe,newTicket:aBe,columns:oBe,category:sBe,status:rBe,filters:iBe,form:lBe,thread:cBe,admin:dBe,loadMore:uBe,toast:mBe,notFound:pBe,empty:fBe},hBe="الاستخدام",yBe="الرصيد وسرعة الاستهلاك وأين تذهب نفقاتك.",vBe="النشاط",bBe="لا يوجد نشاط في هذا النطاق",xBe="تفصيل الاستخدام",$Be="حسب API key",wBe="حسب النموذج",kBe="حسب نوع token",CBe="لا توجد بيانات",SBe="لا يوجد اØ
769³ØªØ®Ø¯Ø§Ù… في هذا النطاق بعد.",ABe="بالمعدل الحالي، يكفي الرصيد لمدة {{days}} يومًا تقريبًا (حوالي {{rate}}/يوم).",TBe="إخراج",RBe="ذاكرة مؤقتة",PBe={tokens:"Tokens",requests:"الطلبات",cost:"التكلفة"},_Be="أخرى",jBe="طلب",NBe="tok",DBe="جارٍ التحديث…",MBe="لا توجد بيانات",EBe="أرسل طلبًا لبدء تجميع البيانات.",IBe="أهم API keys",OBe="شحن",LBe={title:"تعذّر تحميل الاستخدام"},UBe={firstToken:"أول token",latency:"متوسط الكمون",requests:"الطلبات",spend:"الاستهلاك",spendSub:"مفوتر في هذه الفترة",successRate:"{{rate}}% نجاح",tokens:"Tokens",textDuration:"نص",mediaDuration:"صورة/فيديو",cacheHit:"{{rate}}% من الذاكرة المؤقتة",projected:"≈ {{amount}}/شهر",vsPrevious:"مقارنة بالفترة السابقة"},BBe={activeDays:"الأيام النشطة",longestStreak:"أطول سلسلة متواصلة",daysValue:"{{n}} يومًا",totalSpend:"إجمالي هذه الفترة",peakDay:"أكثر الأيام نشاطًا"},FBe={all:"كل الوقت",custom:"مخصص",last1h:"آخر ساعة",last30d:"آخر 30 يومًا",last7d:"آخر 7 أيام",thisMonth:"هذا الشهر",today:"اليوم",yesterday:"أمس",byMonth:"حسب الشهر"},zBe={failed:"فشل",success:"نجاح"},qBe={cacheRead:"قراءة cache",cacheWrite:"كتابة cache",cacheWrite1h:"كتابة cache 1h",cacheWrite5m:"كتابة cache 5m",completion:"إخراج",prompt:"إدخال"},HBe={body:"أرسل طلبًا من الطرفية أو افتح playground — سيظهر الاستخدام هنا خلال ثوانٍ.",openPlayground:"فتح playground",title:"key جاهز"},VBe={body:"أنشئ أول API key، ووجّه كل الطلبات عبر URL واحد، ثم سيظهر الاستخدام هنا.",createKey:"إنشاء API key",title:"مرحبًا بك في OneHop",tryPlayground:"جرّب playground"},KBe="تحديث",GBe="{{count}} طلب ناجح في عامل التصفية الحالي",WBe="إجمالي tokens",YBe="إدخال {{input}} / إخراج {{output}}",QBe="Credit المفوتر",XBe="{{cost}} تكلفة upstream الفعلية",ZBe="متوسط الكمون",JBe="أول token {{duration}}",e6e="نشاط 30 يومًا",t6e="الطلبات الناجحة وحجم token و credit المفوتر.",n6e="جار تحميل اتجاه الاستخدام",a6e="لا يوجد اتجاه استخدام",o6e="يظهر اتجاه الاستخدام بعد الطلبات الناجحة.",s6e="أهم النماذج",r6e="Credit المفوتر حسب النموذج خلال آخر 30 يومًا.",i6e="لا يوجد استخدام للنماذج بعد",l6e="يظهر تفصيل النماذج بعد الطلبات الناجحة.",c6e="النموذج",d6e="كل النماذج",u6e="الحالة",m6e="البروتوكول",p6e="الصفوف",f6e="إعادة ضبط",g6e="سجلات الاستخدام",h6e="API key",y6e="Endpoint",v6e="النوع",b6e="Tokens",x6e="التكلفة",$6e="المدة",w6e="الوقت",k6e="User-Agent",C6e="التفاصيل",S6e="تفاصيل الطلب",A6e="تفاصيل سجل الاستخدام وmetadata الفوترة.",T6e="معرّف الطلب",R6e="العملية",P6e="Tokens الإدخال",_6e="Tokens الإخراج",j6e="Tokens قراءة cache",N6e="Tokens كتابة cache",D6e="تكلفة الإدخال",M6e="تكلفة الإخراج",E6e="تكلفة قراءة cache",I6e="تكلفة كتابة cache",O6e="رمز الخطأ",L6e="رسالة الخطأ",U6e="غير موجود.",B6e="credit",F6e="الإجمالي {{count}}",z6e="جار تحميل سجلات الاستخدام",q6e="لا توجد سجلات استخدام",H6e="جرّب مجموعة تصفية مختلفة.",V6e="تظهر السجلات عندما تمر الطلبات عبر API keys الخاصة بك.",K6e="الصفحة {{page}} · عرض {{shown}} من {{total}} سجل مطابق",G6e="السابق",W6e="التالي",Y6e="Credit",Q6e="Tokens",X6e="الطلبات",Z6e={time:"الوقت",apiKey:"API Key",model:"النموذج",reasoningEffort:"جهد الاستدلال",endpoint:"Endpoint",type:"النوع",billingMode:"وضع الفوترة",inputTokens:"Tokens الإدخال",outputTokens:"Tokens الإخراج",cac
769heReadTokens:"Tokens قراءة Cache",cacheWriteTokens:"Tokens كتابة Cache",totalTokens:"إجمالي Tokens",billedCredit:"Credit المفوتر",firstTokenMs:"أول Token Ms",durationMs:"المدة Ms",status:"الحالة",userAgent:"User-Agent"},J6e={mon:"الإثنين",wed:"الأربعاء",fri:"الجمعة"},e8e="أقل",t8e="أكثر",n8e={title:hBe,description:yBe,activity:vBe,activityEmpty:bBe,breakdown:xBe,byApiKey:$Be,byModel:wBe,byTokenType:kBe,chartEmpty:CBe,chartEmptyHint:SBe,burnRate:ABe,in:"إدخال",out:TBe,cache:RBe,metric:PBe,other:_Be,req:jBe,tok:NBe,refreshing:DBe,topEmpty:MBe,topEmptyHint:EBe,topKeys:IBe,topUp:OBe,error:LBe,kpi:UBe,stat:BBe,range:FBe,requests:zBe,tokenType:qBe,noRequests:HBe,welcome:VBe,refresh:KBe,successfulFilter:GBe,totalTokens:WBe,inOut:YBe,billedCredit:QBe,upstreamActualCost:XBe,avgLatency:ZBe,firstToken:JBe,activityTitle:e6e,activityDescription:t6e,loadingTrend:n6e,noUsageTrend:a6e,trendDescription:o6e,topModels:s6e,topModelsDescription:r6e,noModelUsage:i6e,noModelUsageDescription:l6e,model:c6e,allModels:d6e,status:u6e,protocol:m6e,rows:p6e,reset:f6e,tableLabel:g6e,apiKey:h6e,endpoint:y6e,type:v6e,tokens:b6e,cost:x6e,duration:$6e,time:w6e,userAgent:k6e,details:C6e,requestDetail:S6e,detailDescription:A6e,requestId:T6e,operation:R6e,inputTokens:P6e,outputTokens:_6e,cacheReadTokens:j6e,cacheWriteTokens:N6e,inputCost:D6e,outputCost:M6e,cacheReadCost:E6e,cacheWriteCost:I6e,errorCode:O6e,errorMessage:L6e,notFound:U6e,creditSuffix:B6e,total:F6e,loadingRecords:z6e,noRecords:q6e,differentFilters:H6e,recordsEmpty:V6e,pageSummary:K6e,previous:G6e,next:W6e,chartCredit:Y6e,chartTokens:Q6e,chartRequests:X6e,csv:Z6e,weekday:J6e,activityLess:e8e,activityMore:t8e},a8e="Signup access",o8e="Controlled-launch registration gate. Approved emails, domains, existing users, and active admins can create accounts.",s8e="Signup access allowlist",r8e="No allowlist entries",i8e="Email / domain",l8e="Note",c8e="Status",d8e="Registration",u8e="Expires",m8e="Invites",p8e="Updated",f8e="Action",g8e="Add",h8e="Bulk add",y8e="Edit",v8e="Save",b8e="Invite",x8e="Restore",$8e="Remove",w8e="Add signup access",k8e="Edit {{email}}",C8e="Bulk add signup access",S8e="Add a specific email or a whole domain with @company.com. Existing users and active admins are always allowed.",A8e="Paste one email or @domain per line. Invalid and duplicate rows will be skipped.",T8e="Email or domain",R8e="[email protected] or @company.com",P8e="Use @company.com to approve an entire domain.",_8e="Note (optional)",j8e="e.g. founding team",N8e="Expiry (optional)",D8e="Leave empty for no expiry. Expired entries no longer allow new signups.",M8e="Emails / domains",E8e=`[email protected]
770[email protected]
771@partner.com`,I8e="Search",O8e="Search email or domain",L8e="Status",U8e="Access check",B8e="[email protected]",F8e="Check",z8e="Allowed",q8e="Denied",H8e={existing_user:"Existing user always allowed",active_admin:"Active admin always allowed",email_allowlist:"Matched exact email",domain_allowlist:"Matched domain rule",not_allowed:"No active rule matched"},V8e="Registered",K8e="Not registered",G8e="Admin",W8e="Domain rule",Y8e="Never",Q8e="Added to signup access.",X8e="Signup access updated.",Z8e="Added {{count}} entries.",J8e="Invite sent.",eFe="Entry restored.",tFe="Removed from signup access.",nFe="Remove {{email}} from signup access? They can no longer create a new account unless another rule allows them.",aFe={title:"Email domain rules",description:"Hot-configurable email-domain lists layered on the built-in baseline. Blacklisted domains are blocked at signup; mainstream domains skip the watchlist.",add:"Add domain",addTitle:"Add domain rule",addDescription:"Blacklist blocks signup (403). Mainstream marks the domain as trusted so new users are not watchlisted.",kindLabel:"List",kindBlacklist:"Blacklist — block signup",kindMainstream:"Mainstream — skip watchlist",domainLabel:"Domain",domainPlaceholder:"example.com",noteLabel:"Note",notePlaceholder:"Optional — why this domain",search:"Search",searchPlaceholder:"Filter by domain",kindFilter:"List",allKinds:"All lists",statusFilter:"Status",statusActive:"Active",statusRevoked:"Removed",statusAll:"All",label:"Email domain rules",empty:"No domain rules",colDomain:"Domain",colKind:"List",colNote:"Note",colAddedBy:"Added by",colCreated:"Created",status:"Status",action:"Action",remove:"Remove",restore:"Restore",confirmRemove:"Remove rule for {{domain}}?",added:"Domain rule added",removed:"Domain rule removed",restored:"Domain rule restored",badgeBlacklist:"Blacklist",badgeMainstream:"Mainstream"},oFe={title:a8e,description:o8e,label:s8e,empty:r8e,email:i8e,note:l8e,status:c8e,registration:d8e,expiresAt:u8e,invites:m8e,updatedAt:p8e,action:f8e,add:g8e,bulkAdd:h8e,edit:y8e,save:v8e,invite:b8e,restore:x8e,revoke:$8e,newTitle:w8e,editTitle:k8e,bulkTitle:C8e,formDescription:S8e,bulkDescription:A8e,emailLabel:T8e,emailPlaceholder:R8e,emailHint:P8e,noteLabel:_8e,notePlaceholder:j8e,expiresAtLabel:N8e,expiresAtHint:D8e,bulkEntriesLabel:M8e,bulkEntriesPlaceholder:E8e,search:I8e,searchPlaceholder:O8e,statusFilter:L8e,checkLabel:U8e,checkPlaceholder:B8e,check:F8e,checkAllowed:z8e,checkDenied:q8e,checkReasons:H8e,registered:V8e,notRegistered:K8e,adminAllowed:G8e,domainRule:W8e,never:Y8e,added:Q8e,updated:X8e,bulkAdded:Z8e,invited:J8e,restored:eFe,revoked:tFe,confirmRevoke:n
771Fe,domainRules:aFe},sFe="Ops Billing",rFe="Payments, wallets and refunds across all users.",iFe={payments:"Payments",wallets:"Wallets",refunds:"Refunds"},lFe="User email",cFe="Search by email...",dFe="Created",uFe="Created",mFe="Amount (USD)",pFe="Min",fFe="Max",gFe="Refunds",hFe="No refunds",yFe="Refund",vFe="Type",bFe="Full refund",xFe="Partial refund",$Fe="Original payment",wFe="Wallets",kFe="Wallet",CFe="User",SFe="Total",AFe="Purchased",TFe="Bonus",RFe="No wallets",PFe="Payments",_Fe="Payment status",jFe="No payments",NFe="Payment",DFe="Status",MFe="Amount",EFe="Paid",IFe="Refund",OFe="Not refundable (status must be paid)",LFe="View in Stripe Dashboard",UFe="Failed + dead-letter webhooks in last 7 days. 0=green, 1-9=yellow, 10+=red.",BFe="unhealthy",FFe="Refund {{id}}",zFe="This will refund {{user}} via Stripe. The platform fee shown below is deducted from the amount returned; uncheck it to waive. Promotional credits granted with the original payment will be forfeited proportionally.",qFe="Refund amount (USD)",HFe="Max ${{value}}",VFe="Reason",KFe="Rückerstattungsvorschau wird geladen…",GFe="Rückerstattungsvorschau konnte nicht geladen werden. Ohne Vorschau ist keine Rückerstattung möglich.",WFe="Keine erstattungsfähige Transaktion gefunden – diese Zahlung wurde möglicherweise bereits vollständig erstattet.",YFe="Gezahlt",QFe="Bereits erstattet",XFe="Diese Rückerstattung",ZFe="Eingezogenes Guthaben",JFe="Enthält {{amount}} anteilig eingezogenes Coupon-Rabatt-Guthaben",eze="Enthält {{amount}} anteilig eingezogenes zusätzlich gewährtes Guthaben",tze="Bonus widerrufen",nze="Mit dieser Rückerstattung wird der Aktionsbonus von {{amount}} widerrufen.",aze="Rückzahlung über Stripe",oze="Plattformgebühr einbehalten ({{fee}}) — deckt Stripe-Gebühren",sze="Plattformgebühr ({{fee}})",rze="Betrag überschreitet den maximal erstattbaren Betrag {{value}}",ize="Bitte einen gültigen positiven Betrag eingeben",lze="Der Nutzer hat einen Teil des gekauften Guthabens bereits verbraucht. Maximal erstattbar: {{value}}",cze="Diese Zahlung wurde bereits vollständig erstattet",dze="Der Nettobetrag nach Gebühren ist zu gering. Mindestens {{value}} erstatten.",uze="Cancel",mze="Issue refund",pze="Submitting...",fze="Refund submitted",gze="Stripe will return the funds within 1-3 business days. Audit log written.",hze="Refund failed",yze={title:sFe,description:rFe,tabs:iFe,emailFilter:lFe,emailPlaceholder:cFe,created:dFe,createdRange:uFe,amountRange:mFe,amountMin:pFe,amountMax:fFe,refunds:gFe,noRefunds:hFe,refundId:yFe,refundType:vFe,typeRefund:bFe,typePartialRefund:xFe,originalPayment:$Fe,wallets:wFe,wallet:kFe,user:CFe,total:SFe,purchased:AFe,bonus:TFe,noWallets:RFe,payments:PFe,paymentStatus:_Fe,noPayments:jFe,payment:NFe,status:DFe,amount:MFe,paid:EFe,refund:IFe,notRefundable:OFe,viewInStripe:LFe,webhookHealthHint:UFe,unhealthyWebhooks:BFe,refundConfirmTitle:FFe,refundConfirmBody:zFe,refundAmountLabel:qFe,refundMaxHint:HFe,refundReasonLabel:VFe,refundPreviewLoading:KFe,refundPreviewFailed:GFe,refundNoRefundableTx:WFe,refundPaidRow:YFe,refundAlreadyRefundedRow:QFe,refundThisRefundRow:XFe,refundCreditReclaimRow:ZFe,refundCreditCouponNote:JFe,refundCreditExtraNote:eze,refundBonusReverseRow:tze,refundBonusForfeitWarning:nze,refundStripeReturnRow:aze,refundFeeToggle:oze,refundPlatformFeeRow:sze,refundExceedsMax:rze,refundAmountInvalid:ize,refundInsufficientCredit:lze,refundAlreadyFull:cze,refundBelowMin:dze,cancel:uze,confirmRefund:mze,submitting:pze,refundSubmittedTitle:fze,refundSubmittedBody:gze,refundFailedTitle:hze},vze="Campaigns",bze="Audience segments, restricted-model access, model discounts, and targeted credit grants.",xze={mobileLabel:"Kampagnenbereich",segments:"Audiences",access:"Model access",discounts:"Model discounts",grants:"Targeted grants",recurring:"Periodic grants"},$ze="Status",wze="Actions",kze="All users",Cze="Always",Sze="No expiry",Aze="Active window",Tze="Leave blank for always-on. Times are end-of-day on the chosen dates.",Rze="Valid from",Pze="Valid to",_ze="Pause",jze="Resume",Nze="Add",Dze="Remove",Mze="Delete",Eze="Clear",Ize="Close",Oze={allKinds:"Alle Typen",segmentKindStatic:"Statisch",segmentKindDynamic:"Dynamisch",grantKindGrant:"Gutsc
771hrift vergeben",grantKindRevoke:"Gutschrift entziehen",allStatuses:"Alle Status",statusActive:"Aktiv",statusPaused:"Pausiert",statusArchived:"Archiviert",statusEnded:"Beendet",statusPending:"Ausstehend",statusProcessing:"In Bearbeitung",statusCompleted:"Abgeschlossen",statusFailed:"Fehlgeschlagen"},Lze={title:"Audiences",create:"New audience",empty:"No audiences yet. Create one to target access, discounts, and grants.",name:"Name",namePlaceholder:"e.g. China power users",description:"Description",kind:"Kind",kind_static:"Static",kind_dynamic:"Dynamic",kindHint:"Static = a hand-picked list of users. Dynamic = users matching a rule, refreshed on materialize.",members:"Members",materialized:"Last refreshed",materializeDone:"Materialized {{count}} members",basics:"Basics",sheetDescription:"Audiences group users so you can target model access, discounts, and grants.",saved:"Audience saved",created:"Audience created",rule:"Matching rule",ruleHint:"All conditions must match (AND). An empty rule matches no one.",countryIn:"Country in",countryInHint:"Comma-separated ISO-2 codes, e.g. CN, US, JP.",signupAfter:"Signed up after",signupBefore:"Signed up before",minSpend:"Min cumulative spend (USD)",minSpendHint:"Only users whose lifetime spend is at least this.",previewing:"Estimating…",matchCount:"Estimated match: {{value}} users",membersTitle:"Members",membersHint:"Search and add users. Rule-matched members are read-only.",addMembers:"Add users",searchUsers:"Search by email or ID",noUsers:"No matching users.",noMembers:"No members yet.",membersAdded:"{{count}} member added",membersAdded_plural:"{{count}} members added",source_manual:"Manual",source_rule:"Rule",materializeTitle:"Materialize",materializeHint:"Snapshot the rule into the member list. Re-run anytime to refresh.",materialize:"Materialize now",materializing:"Materializing…",materializeConfirm:"Refresh members from the current rule? This replaces the rule-matched snapshot.",lastMaterialized:"Last materialized {{value}}",neverMaterialized:"Never materialized",deleteSegment:"Delete audience",deleteConfirm:"Delete this audience? Access, discounts, and grants referencing it will lose this targeting."},Uze={title:"Model access",create:"Grant access",empty:"No access grants yet.",model:"Model",segment:"Audience",target:"Target",validFrom:"Valid from",validTo:"Valid to",sheetDescription:"Give a restricted model to an audience for an optional time window.",created:"Access granted",statusUpdated:"Status updated",deleteConfirm:"Remove this access grant?",noSegmentsTitle:"Create an audience first",noSegmentsDescription:"Access is granted to an audience. Create an audience on the Audiences tab, then come back to grant model access.",publicHint:"This model is public — everyone can already use it.",publicModelTitle:"Model is public",publicModelWarning:"{{model}} is public, so this grant has no effect until it is set to restricted on the Models page. Flip it to restricted there to gate it to this audience.",createAnyway:"Create anyway"},Bze={title:"Model discounts",create:"New discount",empty:"No discounts yet.",model:"Model",audience:"Audience",audienceHint:"Leave as all users to discount for everyone.",discount:"Discount",window:"Window",live:"Live",end:"End",amount:"Discount",target:"Target",name:"Internal name",nameHint:"Optional label for your own reference.",percentLabel:"Extra off the platform price",percentHint:"1–99%. Applied on top of our platform price (our_price), not the official price.",percentError:"Enter a value between 1 and 99.",previewPlatform:"Discounted platform price",previewVsOfficial:"Saved vs official",pickStart:"Pick a start date",sheetDescription:"Discounts apply on top of the platform price. The official price is shown for comparison only.",created:"Discount created",saved:"Discount saved",statusUpdated:"Status updated",deleteConfirm:"Delete this discount?",liveReadonly:"This discount is live — value, window, and name are locked. Pause or end it to make changes.",terminalReadonly:"This discount has ended and is read-only."},Fze={title:"Targeted grants",create:"New grant",empty:"No targeted grants yet.",time:"Time",kind:"Kind",kind_grant:"Grant",kind_revoke:"Revoke",model:"Models",modelHint:"Credit is shared across the selected models — spending on any of them draws from the same balance.",pickModels:"Pick models",nModels:"{{count}} models selected",pasteEmails:"Bulk add by email",pasteEmailsPlaceholder:"[email protected], [email protected] — separated by newline, comma or semicolon",importEmails:"Parse & add",importMatched:"Matched {{count}} users.",importUnmatched:"{{count}} emails not found:",importInvalid:"{{count}} invalid entries skipped:",importInactive:"{{count}} matched but inactive — will be skipped:",preset7d:"7 days",preset30d:"30 days",preset90d:"90 days",total:"Total",notifyYes:"Yes",notifyNo:"No",recipients:"Recipients",amount:"Amount",expiry:"Expires",expiryHint:"Optional. Unused balance expires on this date.",audience:"Audience",bySegment:"By audie
771nce",byUsers:"Specific users",segment:"Audience",users:"Users",searchUsers:"Search by email or ID",noUsers:"No matching users.",grantDetails:"Grant details",amountEach:"Amount per recipient (USD)",amountHint:"0.01–2000 per recipient.",notifyEmail:"Email recipients",note:"Note",summary:"{{count}} recipients × {{amount}} = {{total}} total",send:"Send grant",sending:"Queuing…",queued:"Grant queued — fanning out to recipients",confirmTitle:"Send targeted grant?",confirmMessage:"Grant {{amount}} each to {{count}} recipients ({{total}} total)?",confirmSend:"Send grant",sheetDescription:"Grant model-restricted credit to an audience or a hand-picked list of users.",batchTitle:"Grant batch",succeeded:"Succeeded",failed:"Failed",revokedAmount:"Reclaimed",completedAt:"Completed",revoke:"Revoke",revokeConfirm:"Reclaim unused balance from {{count}} recipients of {{model}}?",revokeQueued:"Revoke queued"},zze={title:"Periodic grants",create:"New periodic grant",editTitle:"Edit periodic grant",empty:"No periodic grants yet. Create one to give recurring free tokens or credit on a daily or weekly cadence.",sheetDescription:"Free tokens or restricted credit, refreshed for an audience every period (lazily, on first use).",basics:"Basics",name:"Name",namePlaceholder:"e.g. Daily free Kimi tokens",unit:"Unit",unitHint:"Tokens = free token allowance per period. USD = restricted credit (single model only).",unitLocked:"Unit is fixed after creation — create a new campaign to switch.",unit_tokens:"Tokens",unit_usd:"USD",allUnits:"All units",targeting:"Targeting",models:"Models",modelsHint:"Free tokens are usable across all selected models.",model:"Model",usdSingleModelHint:"USD grants are restricted to one model — multi-model would make spend unattributable.",pickModels:"Pick models",nModels:"{{count}} model selected",nModels_plural:"{{count}} models selected",audience:"Audience",audienceHint:"Leave as all users to grant to everyone.",schedule:"Amount & schedule",perPeriod:"Per period",tokensHint:"Positive integer, e.g. 100000 tokens per period.",usdHint:"
7710.01–2000 USD per period.",cadence:"Cadence",cadence_daily:"Daily",cadence_weekly:"Weekly",anchorTz:"Anchor timezone",anchorTzHint:"Period boundaries follow local midnight in this timezone.",startsAt:"Starts",startsAtHint:"Optional. Blank = effective immediately.",endsAt:"Ends",endsAtHint:"Optional. Blank = no end date.",immediately:"Immediately",excludeRisky:"Exclude risky accounts",thisPeriod:"This period (users · used/granted)",allStatuses:"All statuses",status_draft:"Draft",status_active:"Active",status_paused:"Paused",status_archived:"Archived",created:"Periodic grant created",saved:"Periodic grant saved"},qze={title:vze,description:bze,tabs:xze,status:$ze,actions:wze,allUsers:kze,always:Cze,noExpiry:Sze,window:Aze,windowHint:Tze,validFrom:Rze,validTo:Pze,pause:_ze,resume:jze,actionAdd:Nze,actionRemove:Dze,actionDelete:Mze,actionClear:Eze,actionClose:Ize,filters:Oze,segments:Lze,access:Uze,discounts:Bze,grants:Fze,recurring:zze},Hze="Announcements",Vze="Banners shown at the top of the marketing site and the console.",Kze="Banners",Gze="Top-of-page banners shown on www and console.",Wze="New Banner",Yze="No banners yet. Create one to show a top-of-page announcement.",Qze="Message",Xze="Supports inline links: [text](https://… or /path). Multiple links allowed.",Zze="CTA Label",Jze="CTA Link",e7e="Severity",t7e="Audience",n7e="Starts At",a7e="Ends At",o7e="Dismissible",s7e="Status",r7e="Archive",i7e="Archive this banner? It will no longer be shown to users.",l7e="New Banner",c7e="Edit Banner",d7e="Title",u7e="Type",m7e="Content",p7e="Display type",f7e="Banner",g7e="Modal",h7e="Draft",y7e="Active",v7e="Info",b7e="Warning",x7e="Critical",$7e="Console only",w7e="Public site only",k7e="Both",C7e="Hero image",S7e="Upload an image, or paste an https URL. Optional. PNG / JPEG / WebP / GIF, up to 5MB.",A7e="Upload",T7e="Uploading…",R7e="Remove",P7e="Only PNG, JPEG, WebP and GIF images are supported.",_7e="Image must be 5MB or smaller.",j7e="Upload failed, please try again.",N7e="Title",D7e="Body",M7e="Action buttons",E7e="Button label",I7e="Button link",O7e="Style",L7e="Add button",U7e="Remove",B7e="Primary",F7e="Secondary",z7e="Link",q7e="Simplified Chinese (source)",H7e="Fill in Simplified Chinese only, then translate to other languages in one click.",V7e="Translate to all languages",K7e="Translating…",G7e="Other languages (translated, editable)",W7e="Translated {{ok}} languages",Y7e="{{failed}} languages failed — fill in manually or retry",Q7e="Chinese source changed but translations weren't refreshed — click Translate again or non-Chinese users will see outdated copy.",X7e="Re-show to users who already dismissed it",Z7e="Fill in the Simplified Chinese body first.",J7e={title:Hze,description:Vze,annTitle:Kze,annDescription:Gze,annNewButton:Wze,annEmpty:Yze,annMessage:Qze,annInlineLinkHint:Xze,annCtaText:Zze,annCtaUrl:Jze,annSeverity:e7e,annAudience:t7e,annStartsAt:n7e,annEndsAt:a7e,annDismissible:o7e,annStatus:s7e,annArchive:r7e,annArchiveConfirm:i7e,annCreateTitle:l7e,annEditTitle:c7e,annColTitle:d7e,annColType:u7e,annColContent:m7e,annDisplayType:p7e,annTypeBanner:f7e,annTypeModal:g7e,annStatusDraft:h7e,annStatusActive:y7e,annSevInfo:v7e,annSevWarning:b7e,annSevCritical:x7e,annAudConsole:$7e,annAudPublic:w7e,annAudAll:k7e,annHeroImage:C7e,annHeroImageHint:S7e,annHeroImageUpload:A7e,annHeroImageUploading:T7e,annHeroImageRemove:R7e,annHeroImageBadType:P7e,annHeroImageTooLarge:_7e,annHeroImageUploadFailed:j7e,annModalTitle:N7e,annBody:D7e,annActions:M7e,annActionLabel:E7e,annActionUrl:I7e,annActionVariant:O7e,annActionAdd:L7e,annActionRemove:U7e,annVariantPrimary:B7e,annVariantSecondary:F7e,annVariantLink:z7e,annSourceLocale:q7e,annSourceHint:H7e,annTranslate:V7e,annTranslating:K7e,annOtherLocales:G7e,annTranslateDone:W7e,annTranslateParti
771al:Y7e,annTranslateStale:Q7e,annBumpRevision:X7e,annTranslateNeedSource:Z7e},eqe="Operations dashboard",tqe="Real-time overview of platform health, usage, and alerts.",nqe="Refresh",aqe="Refreshing",oqe="Updated {{time}}",sqe="Loading dashboard",rqe="Failed to load dashboard",iqe="No data",lqe="No traffic yet",cqe="Video fail rate",dqe="Avg latency",uqe="Error types",mqe="No errors",pqe="Model anomalies",fqe="All models healthy",gqe="Components",hqe="req",yqe="Checkout abandon",vqe="Refunds",bqe="Chargebacks",xqe="First-charge conversion",$qe={kpis:"Key metrics",alerts:"Alerts",health:"System health",payment:"Payment health",revenue:"Revenue & growth",trend:"Trend",alertSettings:"Alert settings",leaderboard:"Growth leaderboards"},wqe={title:"Referral leaderboard",boardAria:"Select leaderboard",rangeAria:"Select time range",boards:{invites:"Invites",revenue:"Referred revenue"},ranges:{today:"Today","3d":"3d","7d":"7d","30d":"30d"},ofTotal:"of {{total}}",countPair:"{{valid}} / {{total}} valid",empty:"No referrals in this window",failedLoad:"Failed to load leaderboard",validHint:"Valid = normal risk status + active binding"},kqe={requests:"Requests",successRate:"Payment success",activeUsers:"Active users",newSignups:"New signups",newSignupsHint:"Nur normale Nutzer (ohne markierte)",billedCredit:"Billed credit",errorRate:"Error rate",avgLatency:"Avg latency",balance:"Platform balance",vsPrevious:"{{delta}} vs previous",vsYesterday:"vs yesterday",noChange:"No change",successFailed:"{{success}} ok · {{failed}} fail"},Cqe={today:"Revenue today",trendTitle:"Revenue today vs yesterday",monthDetail:"{{count}} charges · MTD {{mtd}}"},Sqe={summary:"{{paid}} paid · {{failed}} failed · {{pending}} pending"},Aqe={paidOfSignups:"{{paid}} first-charged / {{signups}} signups"},Tqe={healthy:"Healthy",degraded:"Degraded",down:"Down",unknown:"Unknown"},Rqe={critical:"Critical",warning:"Warning",info:"Info",ok:"Healthy"},Pqe={operational:"Operational",degraded:"Degraded",down:"Down",upstream:"Upstream channels",gateway:"Gateway",billing:"Billing",jobs:"Job queue",tierReason:{ok:"Healthy",watch:"Watch: nearing threshold",warning:"Warning: over warn line",critical:"Critical: over crit line"}},_qe={title:"Active alerts",empty:"All systems operational",activeCount:"{{count}} active alerts",triggeredAt:"Triggered {{time}}",viewDetail:"View detail",acknowledge:"Acknowledge",resolved:"Resolved"},jqe={title:"Alert settings",description:"Set warning / critical thresholds for the 6 alert types; ops is notified when a metric crosses the line. Severity is derived from the tier automatically.",enabled:"Enabled",warnThreshold:"Warning threshold",critThreshold:"Critical threshold",cooldown:"Cooldown (min)",cooldownHint:"Minimum gap between two notifications for the same alert, to prevent spam.",rateHint:"Rate, 0–1 (e.g. 0.05 = 5%).",countHint:"Absolute value, ≥ 0.",directionHigher:"Higher is worse: warning ≤ critical.",directionLower:"Lower is worse: warning ≥ critical.",lastFired:"Last fired {{time}}",neverFired:"Never fired",save:"Save all",saving:"Saving",saved:"Alert settings saved",saveError:"Failed to save",readonlyHint:"You have read-only access.",noData:"No alert settings",errors:{directionHigher:"Warning threshold must be ≤ critical threshold",directionLower:"Warning threshold must be ≥ critical threshold",rateRange:"Rate thresholds must be within 0–1",nonNegative:"Thresholds must be ≥ 0",cooldownNonNegative:"Cooldown must be ≥ 0",required:"Threshold is required"},types:{payment_success_rate_low:"Payment success rate low",gateway_error_rate_high:"Gateway error rate high",model_error_spike:"Model error spike",webhook_dead_letter:"Webhook dead letter backlog",system_component_down:"System component down",negative_balance_exposure:"Negative balance exposure"}},Nqe={label:"Time range",today:"Today",days7:"7 days",days30:"30 days"},Dqe="{{failed}}/{{total}} jobs",Mqe="{{delta}}pt vs yesterday",Eqe="Low sample ({{n}})",Iqe="Had gateway calls",Oqe="Last 7d cohort · normal users only",Lqe="Refund rate {{rate}}%",Uqe={funnel:"opened {{opened}} · paid {{paid}}"}
771,Bqe={title:eqe,description:tqe,refresh:nqe,refreshing:aqe,lastUpdated:oqe,loading:sqe,failedLoad:rqe,empty:iqe,noTraffic:lqe,videoFailRate:cqe,avgLatency:dqe,errorTypes:uqe,noErrors:mqe,modelAnomalies:pqe,noAnomalies:fqe,components:gqe,req:hqe,abandonRate:yqe,refunds:vqe,chargebacks:bqe,firstChargeConversion:xqe,sections:$qe,leaderboard:wqe,kpi:kqe,revenue:Cqe,orders:Sqe,conversion:Aqe,componentStatus:Tqe,severity:Rqe,health:Pqe,alerts:_qe,alertSettings:jqe,range:Nqe,videoJobsDetail:Dqe,vsYesterdayPt:Mqe,lowSample:Eqe,activeUsersHint:Iqe,conversionCohortHint:Oqe,refundRate:Lqe,checkout:Uqe},Fqe="Loading...",zqe="Admin permission required",qqe="Your account does not have permission to access this administrator page.",Hqe={loading:Fqe,permissionRequired:zqe,permissionDescription:qqe},Vqe="User growth",Kqe="Signup rewards, discount codes, referrals, and credit grants. Manual grants live on the Users page.",Gqe={mobileLabel:"Wachstumsbereich",onboarding:"Signup & new users",discount:"Discount codes",referral:"Referral cashback",grants:"Credit grants",topup:"Top-up bonus",redeem:"Einlösecode",tasks:"Task wall"},Wqe="Coupon batch",Yqe="Promotion rule",Qqe="Count",Xqe="Batch code",Zqe="Creating...",Jqe="Create batch",eHe="{{count}} coupon code created",tHe="{{count}} coupon codes created",nHe="Batch {{code}}",aHe="Copied",oHe="Copy all",sHe="Credit grants",rHe="Source",iHe="Status",lHe="No grants yet",cHe="Coupon redemptions, signup bonuses, and manual grants appear here.",dHe="Time",uHe="User",mHe="Amount",pHe="Signup bonus",fHe="Controls the credit automatically granted to new users. Disable it to stop future signup grants.",gHe="Enable signup credit",hHe="Amount (USD)",yHe="Save signup bonus",vHe="Saving...",bHe="Current amount {{amount}}",xHe="Referral cashback",$He="Configure double-sided referral rewards, release delay, caps, and billing-page messaging.",wHe="Enable referral cashback",kHe="Reward tiers",CHe="Add tier",SHe="Recipient",AHe="From day",THe="Until day",RHe="Percent",PHe="Label",_He="Action",jHe="Inviter",NHe="Invitee",DHe="No end",MHe="Remove tier",EHe="Release delay (days)",IHe="Per-topup cap (USD)",OHe="Min topup (USD, blank = none)",LHe="Cashback expiry (days, blank = never)",UHe="Billing-page countdown banner",BHe="Banner title",FHe="Subtitle",zHe="Countdown mode",qHe="Global deadline",HHe="Each invitee's 30-day window",VHe="Ends at",KHe="Save referral settings",GHe="v{{version}}",WHe="Saving reward tiers, release delay, caps, or expiry publishes a NEW version. Existing referral relationships keep the version they were bound under — only new signups get the new terms. Pausing only affects new signups.",YHe="Version history",QHe="Version",XHe="Status",ZHe="Reward tiers",JHe="Published",eVe="Superseded",tVe="current",nVe="Top-up discount codes",aVe="Discount codes lower what users pay at checkout; the full top-up amount is credited only after payment succeeds. Configure here, then generate codes below.",oVe="Enable discount codes",sVe="Discount type",rVe="Fixed amount off (USD)",iVe="Percentage off (%)",lVe="Amount off (USD)",cVe="Percentage off (0-100)",dVe="Save discount",uVe="Default low-balance alert",mVe="New users get an email low-balance alert at this threshold by default. Changing it only affects future signups, not existing wallets.",pVe="Threshold (USD)",fVe="Save threshold",gVe="Current: {{amount}}",hVe="Generate codes against the discount rule above.",yVe="In effect: {{state}} · {{value}} off",vVe="enabled",bVe="disabled",xVe="Issued codes",$Ve="Pick a batch to see who redeemed each code.",wVe="No batches yet",kVe="Generate a batch above to start tracking redemptions.",CVe="Total",SVe="Redeemed",AVe="Reserved",TVe="Available",RVe="Codes in {{code}}",PVe="No codes in this batch",_Ve="Code",jVe="Redeemed by",NVe="Redeemed at",DVe="Paid",MVe="Discount",EVe="Codes erstellen",IVe="Ein geteilter Code ist ein Code, den viele Nutzer bis zu N-mal einlösen können; eine Charge eindeutiger Codes besteht aus N Einmal-Codes.",OVe="Code-Typ",LVe="Einzelner geteilter Code",UVe="Charge eindeutiger Codes",BVe="Code-Text (leer lassen für zufällig)",FVe="z. B. WELCOME100",zVe="Einlösungen gesamt (N)",qVe="Pro Nutzer",HVe="Läuft ab am (optional)",VVe="optionale Gruppe",KVe="Geteilten Code erstellen",GVe="Geteilter Code erstellt",WVe="Eigenen Rabatt für diese Charge verwenden (sonst die obige Regel)",YVe="Geteilte Codes",QVe="Ein Code, viele Nutzer. Der Einlösungszähler erfasst bezahlte Einlösungen.",XVe="Noch keine geteilten Codes",ZVe="Eingelöst / Limit",JVe="Pro Nutzer",e9e="Läuft ab",t9e="Deaktivieren",n9e="Diesen Code deaktivieren?",a9e="Neue Checkouts werden sofort blockiert. Bereits im Checkout befindliche Bestellungen können noch abgeschlossen werden.",o9e="Code deaktiviert",s9e="CSV",r9e="Status",i9e="E-Mail",l9e={code:"Code",discount:"Rabatt",redeemed:"Eingelöst",cap:"Limit",perUser:"Pro Nutzer",status:"Status",expiresAt:"Läuft ab am",batch:"Charge",createdAt:"Erstellt am",redeemedBy:"Eingelöst von",redeemedAt:"Eingelöst am",paid:"Bezahlt",discountAmount:"Rabatt",email:"Email",credited:"Credited",bonus:"Bonus",paidAt:"Paid at"},c9e="Amount",d9e="Bound at",u9e="Counterparty",m9e="Invitee",p9e="Inviter",f9e="Rate",g9e="Released",h9e="Role",y9e="Tier",v9e="Top-up",b9e="Load more",x9e="No referrals under this version",$9e="No cashback under this version",w9e="Referrals",k9e="Referral records",C9e="Cashback records",S9e="Version detail",A9e={title:"Top-up bonus",description:"Reward bigger top-ups with bonus credit. Each tier can grant general credit or credit restricted to a model group.",enabled:"Enable top-up bonus",saved:"Top-up bonus saved",tiers:"Bonus tiers",tiersHint:"Top-up matches the highest tier whose threshold it reaches. Restricted credit only applies to synchronous text/image calls — not video or async image jobs.",noTiers:"No tiers yet. Add one to start rewarding top-ups.",min:"Min top-up (USD)",rewardType:"Reward",bonus:"Fixed (USD)",percent:"Percent (%)",rewardBonus:"Bonus amount (USD)",rewardPercent:"Percent of top-up (%)",expiryDays:"Expiry (days, blank = never)",noExpiry:"Never",scope:"Credit scope",scopeHint:"General credit works on any model; a model group restricts the bonus to those models.",scopeGeneral:"General (any model)",removeTier:"Remove tier",addTier:"Add tier",antifraud:"Abuse guards",minTopup:"Min top-up to qualify (USD, blank = none)",maxBonusPerUser:"Max bonus per user (USD, blank = none)",none:"None",excludeRisky:"Exclude watchlisted / blocked users",save:"Save top-up bonus",createScope:"New restricted model group",createScopeDescription:"Pick the models a restricted bonus may be spent on, then reference this group from a tier above.",scopeName:"Group name",scopeNamePlaceholder:"High-margin models",scopeModels:"Models",pickModels:"Pick models",nModels:"{{count}} models",createScopeButton:"Create group",scopeCreated:"Model group created"},T9e="Einlösecodes generieren",R9e="Aufladekartenartige Einlösecodes. Nutzer geben den Code auf der Abrechnungsseite ein, und der Nennwert wird direkt gutgeschrieben (Bonus-Guthaben, keine Zahlung erforderlich).",P9e="Chargenname (optional)",_9e="Zum Beispiel: Conf-2026 Bonus",j9e="Anzahl generieren",N9e="Nennwert pro Code (USD)",D9e="Einlösungen pro Konto in dieser Charge (leer = unbegrenzt)",M9e="Unbegrenzt",E9e="Einlösefrist (optional)",I9e="Restrict to models (optional)",O9e="General balance (no restriction)",L9e="{{count}} models selected",U9e="Blank = general balance. Selected models share one earmarked pool.",B9e="Credit validity after redemption (days, blank = never expires)",F9e="never expires",z9e="{{n}} d",q9e="Models",H9e="Validity",V9e="General balance",K9e="Einlösecodes generieren",G9e="Bitte sofort speichern. Später kannst du sie in der Chargenliste auch erneut per „Klartext exportieren“ abrufen.",W9e="Einlösecode-Chargen",Y9e="Klicke auf eine Charge, um die Details einzelner Codes anzuzeigen; mit „Klartext exportieren“ kannst du den Klartext erneut exportieren.",Q9e="Noch keine Einlösecode-Chargen",X9e="Charge",Z9e="Nennwert",J9e="Klartext exportieren",eKe="Diesen bereits eingelösten Code widerrufen?",tKe="Den noch nicht verbrauchten Teil aus dem Guthaben des Nutzers zurückholen; bereits verbrauchtes Guthaben kann nicht zurückgeholt werden.",nKe="Widerrufen",aKe="{{amount}} widerrufen",oKe="Einlösecodes exportiert",sKe="Nicht eingelöste Codes dieser Charge deaktivieren?",rKe="Alle noch nicht eingelösten Codes werden ungültig; bereits eingelöste Codes bleiben unverändert.",iKe="{{n}} Codes deaktiviert",lKe="Bonus % on top-up",cKe="Bonus (%)",dKe="Bonus validity (days, optional)",uKe="blank = never expires",mKe={view:"Payments",title:"Payments via ····{{code}}",email:"User",credited:"Credited",bonus:"Bonus",summary:"{{count}} payments · {{users}} users · {{paid}} paid · {{bonus}} bonus granted",empty:"No payments through this code yet"},pKe={configTitle:"Task wall config",configDescription:"Amounts, switches and accepted hosts. Task copy lives in the translation files, not here. Changes take effect on the next page load — no deploy.",enabled:"Enable the task wall",tasksTitle:"Tasks",taskKey:"Task key",amount:"Amount (USD)",hosts:"Accepted hosts",hostsHint:"Links outside this list are rejected at submission time.",taskEnabled:"Visible to users",addTask:"Add task",guardsTitle:"Abuse guards",dailyCap:"Daily pending c
771ap",dailyCapHint:"0 = no cap. Fail-open if Redis is down.",minAge:"Minimum account age (days)",minAgeHint:"0 = no age gate.",saved:"Task wall saved",queueTitle:"Submissions",queueCount:"{{count}} shown",empty:"Nothing here.",approve:"Approve & pay",approved:"Approved — credit granted",reject:"Reject",rejected:"Rejected",confirmReject:"Confirm reject",reasonPlaceholder:"Why is this rejected?",duplicate:"Same link from {{count}} other account(s)",status:{pending:"Pending",approved:"Approved",rejected:"Rejected"}},fKe={title:Vqe,description:Kqe,tabs:Gqe,couponBatch:Wqe,promotionRule:Yqe,count:Qqe,batchCode:Xqe,creating:Zqe,createBatch:Jqe,codesCreated:eHe,codesCreated_plural:tHe,batch:nHe,copied:aHe,copyAll:oHe,creditGrants:sHe,source:rHe,status:iHe,noGrants:lHe,noGrantsDescription:cHe,time:dHe,user:uHe,amount:mHe,signupBonus:pHe,signupBonusDescription:fHe,signupBonusEnabled:gHe,signupBonusAmount:hHe,saveSignupBonus:yHe,saving:vHe,currentSignupBonus:bHe,referral:xHe,referralDescription:$He,referralEnabled:wHe,referralRewardTiers:kHe,addTier:CHe,tierRole:SHe,tierFromDay:AHe,tierUntilDay:THe,tierPercent:RHe,tierLabel:PHe,tierAction:_He,roleReferrer:jHe,roleReferee:NHe,noEndDay:DHe,removeTier:MHe,releaseDelayDays:EHe,referralCap:IHe,referralMinTopup:OHe,referralExpiryDays:LHe,bannerEnabled:UHe,bannerTitle:BHe,bannerSubtitle:FHe,bannerMode:zHe,bannerModeGlobal:qHe,bannerModeWindow:HHe,bannerEndsAt:VHe,saveReferral:KHe,referralVersion:GHe,referralPublishHint:WHe,referralVersionHistory:YHe,versionCol:QHe,versionStatus:XHe,versionTiers:ZHe,versionPublished:JHe,versionSuperseded:eVe,versionCurrent:tVe,discountRule:nVe,discountRuleDescription:aVe,discountEnabled:oVe,discountType:sVe,discountFixed:rVe,discountPercent:iVe,discountValueFixed:lVe,discountValuePercent:cVe,saveDiscount:dVe,defaultLowBalanceThreshold:uVe,defaultLowBalanceThresholdDescription:mVe,defaultLowBalanceThresholdAmount:pVe,saveDefaultLowBalanceThreshold:fVe,currentDefaultLowBalanceThreshold:gVe,couponBatchDescription:hVe,discountEffective:yVe,stateEnabled:vVe,stateDisabled:bVe,couponTrace:xVe,couponTraceDescription:$Ve,noBatches:wVe,noBatchesDescription:kVe,batchTotal:CVe,batchRedeemed:SVe,batchReserved:AVe,batchActive:TVe,codesInBatch:RVe,noCodes:PVe,code:_Ve,redeemedBy:jVe,redeemedAt:NVe,paid:DVe,discount:MVe,createIssuance:EVe,createIssuanceDescription:IVe,formLabel:OVe,formShared:LVe,formUniqueBatch:UVe,sharedCodeText:BVe,sharedCodeRandomHint:FVe,sharedMaxRedemptions:zVe,sharedPerUser:qVe,expiresAt:HVe,batchCodeOptional:VVe,createSharedCode:KVe,sharedCodeCreated:GVe,batchOwnDiscount:WVe,sharedCodesList:YVe,sharedCodesListDescription:QVe,noSharedCodes:XVe,colRedeemedTotal:ZVe,colPerUser:JVe,colExpiry:e9e,disableCode:t9e,disableCodeConfirmTitle:n9e,disableCodeConfirmMessage:a9e,codeDisabled:o9e,exportCsv:s9e,statusFilter:r9e,filterByEmail:i9e,csv:l9e,colAmount:c9e,colBoundAt:d9e,colCounterparty:u9e,colInvitee:m9e,colInviter:p9e,colRate:f9e,colReleasedAt:g9e,colRole:h9e,colTier:y9e,colTopup:v9e,loadMore:b9e,noBindings:x9e,noCashback:$9e,versionBindings:w9e,versionBindingsSection:k9e,versionCashbackSection:C9e,versionDetail:S9e,topup:A9e,redeemCreate:T9e,redeemCreateDescription:R9e,redeemBatchName:P9e,redeemBatchNameHint:_9e,redeemCount:j9e,redeemFaceValue:N9e,redeemPerUserLimit:D9e,redeemUnlimited:M9e,redeemExpiresAt:E9e,redeemModels:I9e,redeemModelsAll:O9e,redeemModelsCount:L9e,redeemModelsHint:U9e,redeemValidityDays:B9e,redeemValidityForever:F9e,redeemValidityDaysValue:z9e,redeemColModels:q9e,redeemColValidity:H9e,redeemGeneralBalance:V9e,redeemCreateBtn:K9e,redeemRevealHint:G9e,redeemBatches:W9e,redeemBatchesDescription:Y9e,redeemNoBatches:Q9e,redeemBatchCol:X9e,redeemFace:Z9e,redeemReveal:J9e,redeemReverseTitle:eKe,redeemReverseMessage:tKe,redeemReverseBtn:nKe,redeemReversed:aKe,redeemRevealed:oKe,redeemDisableBatchTitle:sKe,redeemDisableBatchMessage:rKe,redeemBatchDisabled:iKe,discountTypeBonusPercent:lKe,discountValueBonusPercent:cKe,bonusExpiryDays:dKe,bonusExpiryDaysHint:uKe,sharedPayments:mKe,tasks:pKe},gKe="Models",hKe="Model catalog: create, edit, publish.",yKe={label:"Display badges",hint:"Hot / Benefit tags shown on the user-facing models & pricing page.",hot:"Hot",benefit:"Benefit"},vKe="Add model",bKe="Edit {{model}}",xKe="New model",$Ke="Close",wKe="Basics & content save together; pricing and status changes apply immediately.",kKe="Create the model draft. Set pricing and publish after it exists.",CKe={basics:"Basics",basicsHint:"Identity, upstream mapping, protocols.",config:"Configuration",configHint:"Identity, upstream routing, type and capabilities.",protocols:"Protocols",protocolsHint:"Which API protocols this model serves.",content:"Content & display",contentHint:"i18n summary / description and sort order."},SKe="Provider slug",AKe="Pick a known provider or type a custom slug.",TKe="Model slug",RKe="Aliases",PKe="Comma-separated lookup aliases for import and review.",_Ke="Source (customer-visible)",jKe="Label customers see on the model/logs. Blank = vendor. Use it to distinguish s
771ame-model variants at different prices.",NKe="Platform",DKe="— select platform —",MKe="Upstream model id (optional; choose from upstream or enter manually)",EKe="Choose from upstream...",IKe="Upstream unavailable",OKe="Protocols",LKe="Input price / 1M (USD)",UKe="Output price / 1M (USD)",BKe="EN summary",FKe="Preview",zKe="(No summary)",qKe="No protocol",HKe="Cancel",VKe="Save",KKe="Create draft",GKe={basic:"Identity & routing",pricing:"Pricing",content:"Content & display"},WKe={config:"1 · Configuration",protocols:"2 · Protocols",pricing:"3 · Pricing",display:"Content & display",back:"Back",next:"Next",create:"Create model"},YKe="Context window (tokens)",QKe="Max input the model accepts. Leave blank if unknown.",XKe="Max output tokens",ZKe="Max tokens the model can generate per response.",JKe={status:"Status",visibility:"Visibility",hint:"Lifecycle changes apply immediately (with confirmation), separate from Save.",confirmStatus:'Set status to "{{status}}"? Takes effect immediately.',confirmVisibility:'Set visibility to "{{visibility}}"? Takes effect immediately.',statusChanged:"Status set to {{status}}.",visibilityChanged:"Visibility set to {{visibility}}.",publishBlocked:"Cannot publish: core pricing factors are missing. Set them in the Pricing tab first.",statusOption:{draft:"Draft",published:"Published",deprecated:"Deprecated",archived:"Archived"},visibilityOption:{public:"Public",hidden:"Hidden"},availability:"Availability",confirmAvailable:"Mark this model available again? Takes effect immediately.",confirmUnavailable:"Mark this model temporarily unavailable? It stays listed (greyed out) but gateway calls are rejected.",availableChanged:"Model marked available.",unavailableChanged:"Model marked temporarily unavailable.",availabilityOption:{available:"Available",unavailable:"Unavailable"},audience:"Audience",audienceOption:{everyone:"Everyone",paid_only:"Topped-up accounts only"},confirmPaidOnly:"Restrict this model to accounts that have topped up? It stays listed, but users who never paid get a 403 telling them to top up.",confirmEveryone:"Open this model to every account? Takes effect immediately.",paidOnlyChanged:"Model restricted to accounts that have topped up.",everyoneChanged:"Model opened to every account."},eGe="Input modalities",tGe="Declares what this model can receive, including vision, audio, video, and file inputs.",nGe="Output modalities",aGe="Drives the publish gate: text requires text in/out pricing, image/video/embeddings require their factors.",oGe="Image billing style",sGe="Video billing style",rGe="How the upstream charges for this output. Required before publishing — the gate demands the matching price factor.",iGe="— select billing style —",lGe="Per token (image_output_token)",cGe="Per image (per_call_image)",dGe="Per second (video_per_second)",uGe="Per call (video_per_call)",mGe="Display order",pGe="Must be a non-negative integer.",fGe="Editing locale",gGe="Upstream release date",hGe="Summary (this locale)",yGe="Description (Markdown, this locale)",vGe={provider:"Provider",status:"Status",visibility:"Visibility",allStatuses:"All model statuses",allVisibility:"All visibility",allProviders:"All providers",search:"Search model slug",mobileTitle:"Filter"},bGe={label:"Models",empty:"No models",model:"Model",provider:"Provider",source:"Source",status:"Status",visibility:"Visibility",action:"Action",edit:"Edit",setStatus:"Set status for {{model}}",setVisibility:"Set visibility for {{model}}",confirmSet:'Set {{model}} {{field}} to "{{value}}"?',sub2api:"Sub2API mapping",textPrice:"Price (in / out $/M)",priceByTokens:"{{kind}} · per-token",imageOutput:"image out",officialPrice:"List",saved:"-{{pct}}%"},xGe={invalidPrice:"Price must be a number greater than or equal to 0, or left blank.",highRisk:"This change affects live gateway routing and may cause 404s. Continue?",stale:"This model was changed by someone else. Close and reopen it before editing again."},$Ge={savesImmediately:"Pricing changes apply immediately and are not controlled by Save.",createPriceFailed:"Model created, but some prices were not saved. Add them in the Pricing tab.",factors:{title:"Pricing factors",hint:"Each row is an atomic unit (text input/output, cache, image, …). Active rows determine billing from their effective date; history rows record past prices.",liveBanner:"Changes here apply immediately and are recorded in price history — they are not controlled by the bottom Save button.",draftHint:"Save the model draft first; pricing factors are edited inline after the model exists.",addFactor:"Add factor",changePrice:"Change price",expire:"Expire",confirmExpire:"Expire this factor row? It will stop applying immediately and move to history.",changeSaved:"Factor price updated.",expired:"Factor expired.",factor:"Factor",tier:"Tier",tierNone:"(no tier)",unit:"Unit",ourPrice:"Our price (USD)",officialPrice
771:"Official (USD)",officialAbbr:"official",source:"Source (optional URL or note, ≤128 chars)",historyLabel:"History ({{count}})",emptyTitle:"No active factor prices",empty:'Click "Add factor" to set one.',loadError:"Could not load pricing factors",draftEditorHint:"Set prices now, or leave empty and add them after the model is created.",draftEmpty:"No prices added yet.",remove:"Remove",factorOption:{text_input:"Text input (LLM)",text_output:"Text output (LLM)",cache_read:"Cache read",cache_write_5m:"Cache write (5m TTL)",cache_write_1h:"Cache write (1h TTL)",image_input_token:"Image input token",image_output_token:"Image output token",per_call_image:"Image (per call)",video_per_call:"Video (per call)",video_per_second:"Video (per second)",web_search_call:"Web search call"},unitOption:{per_1m_tokens:"per 1M tokens",per_image:"per image",per_call:"per call",per_second:"per second"},conditions:"Conditions JSON (optional)"},discount:{toggle:"Apply discount",hint:"Set every factor to a fraction of its official price (0.5 = 50% off). Free factors (our price 0) and factors with no official price are skipped.",rate:"Discount rate",preview:"Preview",apply:"Apply",allowMarkup:"Allow markup (rate above 1 prices above official)",noFactors:"No active factors to reprice.",confirmTitle:"Apply discount to all factors?",confirmBody:"Reprice {{count}} factor(s) to {{rate}}× the official price. This is versioned — historical billing is unaffected.",applied:"Repriced {{count}} factor(s) at {{rate}}× official.",stale:"Prices changed since the preview — please preview again.",skipReason:{free_factor_our_zero:"Free factor (our price is 0) — left unchanged",no_official:"No official price — cannot compute",official_zero:"Official price is 0 — skipped"}}},wGe="Discard unsaved changes?",kGe="Modell bearbeiten",CGe={title:gKe,description:hKe,badges:yKe,addModel:vKe,editModel:bKe,newModel:xKe,close:$Ke,sheetDescription:wKe,sheetDescriptionNew:kKe,sections:CKe,providerSlug:SKe,providerSlugHint:AKe,modelSlug:TKe,aliases:RKe,aliasesHint:PKe,source:_Ke,sourceHint:jKe,platform:NKe,platformUnset:DKe,sub2apiModelId:MKe,chooseSub2api:EKe,upstreamUnavailable:IKe,protocols:OKe,inputPrice:LKe,outputPrice:UKe,enSummary:BKe,preview:FKe,noSummary:zKe,noProtocol:qKe,cancel:HKe,save:VKe,createDraft:KKe,tabs:GKe,steps:WKe,contextWindow:YKe,contextWindowHint:QKe,maxOutputTokens:XKe,maxOutputTokensHint:ZKe,lifecycle:JKe,inputModalities:eGe,inputModalitiesHint:tGe,outputModalities:nGe,outputModalitiesHint:aGe,billingStyleImage:oGe,billingStyleVideo:sGe,billingStyleHint:rGe,billingStyleUnset:iGe,billingStyleToken:lGe,billingStylePerImage:cGe,billingStylePerSecond:dGe,billingStylePerCall:uGe,displayOrder:mGe,displayOrderInvalid:pGe,contentLocale:fGe,upstreamReleaseAt:gGe,summary:hGe,descriptionField:yGe,filters:vGe,table:bGe,errors:xGe,pricing:$Ge,discardChanges:wGe,editModelShort:kGe},SGe="Rate Limits",AGe="Rate limit policies by scope.",TGe="Rate limit policies",RGe="No policies",PGe="Code",_Ge="Name",jGe="Scope",NGe="Status",DGe="Limits",MGe="No limits",EGe={auth:"Auth",console:"Console",api_gateway:"API gateway",ops:"Ops",global:"Global"},IGe={active:"Active",disabled:"Disabled",archived:"Archived"},OGe={rpm_per_key:"RPM / key",rpm_per_user:"RPM / user",concurrent_streams_per_key:"Streams / key",concurrent_streams_per_user:"Streams / user"},LGe="New policy",UGe="Edit",BGe="Action",FGe="New rate limit policy",zGe="Edit {{name}}",qGe="Concurrency and RPM limits applied per API key and per user. Assign a policy to users on the Users page.",HGe='Delete policy "{{name}}"? Keys and users on it fall back to their default.',VGe="Policy deleted.",KGe={identity:"Identity",classification:"Classification",description:"Description",codeImmutable:"Code cannot be changed after creation.",limitsHint:"Leave blank to use the platform default for that limit.",default:"default",invalidLimit:"{{field}} must be a positive integer.",saved:"Policy saved.",cancel:"Cancel",save:"Save",create:"Create policy"},GGe={title:SGe,description:AGe,label:TGe,empty:RGe,code:PGe,name:_Ge,scope:jGe,status:NGe,limits:DGe,noLimits:MGe,scopes:EGe,statuses:IGe,limitNames:OGe,add:LGe,edit:UGe,delete:"Delete",action:BGe,newTitle:FGe,editTitle:zGe,formDescription:qGe,confirmDelete:HGe,deleted:VGe,form:KGe},WGe="Admins",YGe="Who can sign in to the admin console. Owner-only.",QGe="Admins",XGe="No admins yet",ZGe="Email",JGe="Name",eWe="Role",tWe="Status",nWe="Last login",aWe="Action",oWe="Add admin",sWe="Add admin",rWe="The email becomes an admin immediately and signs in with it — admin access is matched by email. It does not need an account yet.",iWe="Email",lWe="[email protected]",cWe="Name",dWe="Display name",uWe="Role",mWe="Admin added.",pWe="Change role",fWe="Role updated.",gWe="Suspend",hWe="Activate",yWe="Status updated.",vWe="Remove",bWe="Admin removed.",xWe="Remove {{email}} as an admin? They lose console access immediately.",$We="You",wWe="Never",kWe={owner:"Owner",admin:"Admin",
771support:"Support"},CWe={active:"Active",suspended:"Suspended"},SWe={title:WGe,description:YGe,label:QGe,empty:XGe,email:ZGe,name:JGe,role:eWe,status:tWe,lastLogin:nWe,action:aWe,add:oWe,newTitle:sWe,formDescription:rWe,emailLabel:iWe,emailPlaceholder:lWe,nameLabel:cWe,namePlaceholder:dWe,roleLabel:uWe,added:mWe,changeRole:pWe,roleChanged:fWe,suspend:gWe,activate:hWe,statusChanged:yWe,remove:vWe,removed:bWe,confirmRemove:xWe,self:$We,never:wWe,roles:kWe,statuses:CWe},AWe="Upstream",TWe="Read-only upstream configuration mirror plus controlled OneHop routing pools.",RWe="Open upstream admin",PWe="Upstream tabs",_We={overview:"Overview",keyPools:"Key pools",groups:"Groups",channels:"Channels",accounts:"Accounts"},jWe={todayRequests:"Today requests",total:"{{value}} total",upstreamCostToday:"Upstream cost today",providerAccounts:"Provider accounts",health:"Health",stale:"stale",checkPools:"check pools",online:"online"},NWe={upstreamStatsFailed:"Upstream stats failed to load",retry:"Retry",configAuditFailed:"Config audit failed",keyPoolsLoadFailed:"Key pools failed to load",createKeyPoolFailed:"Create key pool failed",keyPoolTestFailed:"Key pool test failed",keyPoolRotateFailed:"Key pool rotate failed",failedLoad:"{{title}} failed to load"},DWe={title:"Config audit",description:"Compares OneHop key pools and published model routing against upstream routing. Provider groups, channels, pricing, and accounts remain read-only here.",running:"Running...",run:"Run audit",poolsChecked:"Pools checked",modelAudit:"Model audit",checkedAt:"Checked at",needsReview:"needs review",done:"done",ok:"ok",upstreamCoverage:"Upstream-Abdeckung",coverageUnchecked:"Konten nicht lesbar",coverageOnlyAccount:"nur {{accounts}}",coverageNoAccount:"Kein einplanbares Konto bildet diese Upstream-ID ab"},MWe={title:"Topology",keyPools:"Key pools",activeGroups:"Active groups",activeChannels:"Active channels",accounts:"Accounts",editingBoundaryTitle:"Editing boundary",editingBoundaryDescription:"The upstream admin exposes deep edit workflows for groups, channels, pricing rules, provider accounts, monitoring, and system settings. OneHop intentionally mirrors only the operational read path and owns internal key pools, so edits that change provider routing still happen in the original admin."},EWe={title:"OneHop internal key pools",description:"Pools select which upstream internal key OneHop uses per protocol and model pattern. Full secrets are never displayed.",poolCode:"Pool code",poolName:"Pool name",defaultPool:"Default pool",notDefault:"Not default",plaintextKey:"Plaintext key",create:"Create",label:"Provider routing key pools",pool:"Pool",protocols:"Protocols",models:"Models",routingGroup:"Routing group",status:"Status",health:"Health",key:"Key",lastCheck:"Last check",action:"Action",priority:"priority {{value}}",default:"default",secret:"secret",hidden:"hidden",test:"Test",rotate:"Rotate",empty:"No key pools",emptyDescription:"Create an internal pool before routing production traffic through provider routing.",newPlaintextKey:"New plaintext key",confirmRotate:"Confirm rotate",editProtocols:"Edit protocols",editProtocolsTitle:"Edit protocols (replace)",confirmEditProtocols:"Save protocols",cancelEditProtocols:"Cancel",forceEditProtocols:"Force save (override routing check)"},IWe={editUpstreamConfig:"Edit upstream config",groupsTitle:"Groups",groupsDescription:"Routing buckets from upstream config. OneHop uses these as source-of-truth context for key-pool binding and audit decisions.",groupsLabel:"Routing groups",groupsEmpty:"No groups",groupsEmptyDescription:"Upstream config did not return any groups.",channelsTitle:"Channels",channelsDescription:"Provider channel configuration from upstream config, including model mappings and pricing rule coverage.",channelsLabel:"Provider routing channels",channelsEmpty:"No channels",channelsEmptyDescription:"Upstream config did not return any channels.",accountsTitle:"Accounts",accountsDescription:"Provider accounts are redacted in OneHop. Use the upstream admin for credential edits and OAuth refresh flows.",accountsLabel:"Provider routing accounts",accountsEmpty:"No accounts",accountsEmptyDescription:"Upstream config did not return any provider accounts."},OWe={group:"Group",platform:"Platform",rate:"Rate",rpm:"RPM",accounts:"Accounts",limits:"Limits",status:"Status",updated:"Updated",channel:"Channel",billingSource:"Billing source",mappings:"Mappings",pricing:"Pricing",account:"Account",groups:"Groups",baseUrl:"Base URL",capacity:"Capacity",lastUsed:"Last used"},LWe={noDescription:"No description",unlimited:"unlimited",schedulable:"schedulable",notSchedulable:"not schedulable",loading:"Loading...",noPricingRules:"No pricing rules",modelsCount:"{{count}} models",none:"none",channelMapped:"Channel mapped",requestedModel:"Requested model",upstreamModel:"Upstream model",priority:"priority",unknown:"unknown"},UWe={serving:{label:"Serving state",serving:"Serving",rate_limited:"Rate-limited",overloaded:"Overloaded",expired:"Expired",paused:"Paused",error:"Error",disabled:"Disabled"},quota:{label:"Quota (today)",noLimit:"no limit",spend:"{{spend}} / {{limit}}"},accounts:{breakdown:"{{normal}} normal · {{error}} error · {{ratelimit}} limited · {{overload}} overload"},freshness:{updated:"updated {{ago}}",never:"never"},pools:{lastError:"Last error",resync:"Resync"},audit:{poolFindings:"Pool findings",clean:"clean",findingsCount:"{{count}} issue(s)"},tokensToday:"{{count}} tok today"},BWe={title:AWe,description:TWe,openUpstreamAdmin:RWe,tabsLabel:PWe,tabs:_We,metrics:jWe,errors:NWe,audit:DWe,topology:MWe,pools:EWe,readonly:IWe,table:OWe,common:LWe,ops:UWe},FWe="Platform usage",zWe="Cross-user request metering with cost, token, latency, and routing signals.",qWe="Refresh",HWe={label:"Auto refresh",off:"Off"},VWe="Exporting",KWe="Export CSV",GWe="Failed to export usage records",WWe="Requests",YWe="{{count}} successful",QWe="Users",XWe="Matched by current filters",ZWe="Billed credit",JWe="{{cost}} upstream cost",eYe="Tokens",tYe="Avg {{duration}}",nYe="User email",aYe="Search by email",oYe="Model",sYe="Search by model",rYe="Status",iYe="Protocol",lYe="Rows",cYe="Reset",dYe="Ops usage records",uYe="No usage records",mYe="User",pYe="Endpoint",fYe="{{count}} total",gYe="In {{input}} / out {{output}}",hYe="Upstream",yYe="Billed",vYe="Latency",bYe="Started",xYe="Page {{page}} · showing {{shown}} of {{total}} matching records",$Ye="Previous",wYe="Next",kYe="{{count}} rows on this page",CYe="Times shown in",SYe="{{count}} API keys",AYe="Spend snapshot",TYe="from OneHop billing snapshot",RYe="User spend",PYe="total billed to users",_Ye="Avg latency",jYe="settled requests",NYe="Range",DYe={today:"Today",days7:"7 days",days30:"30 days",all:"All time"},MYe="Metric",EYe={cost:"Spend",tokens:"Tokens",requests:"Requests"},IYe="Distribution",OYe={model:"Modell",requestedModel:"Requested model",upstreamModel:"Upstream model",apiKey:"API key",user:"User",endpoint:"Endpoint",channel:"Channel",group:"Group",stream
771:"Transport (stream/sync)"},LYe="Usage trend",UYe="Usage by model",BYe="Hourly",FYe="Daily",zYe="Top endpoints",qYe="Top dimension rows",HYe="Request logs",VYe="API key",KYe="Type",GYe="Billing",WYe="Channel",YYe="Group",QYe="Request ID",XYe="req_ / usg_ / upstream",ZYe="All types",JYe="All billing",eQe={user:"User",time:"Time",model:"Model",tokens:"Tokens",cost:"Spend",routing:"Routing",latency:"Latency",status:"Status",duration:"Duration"},tQe="Failed to load usage",nQe="Loading usage records",aQe="Try a different filter set.",oQe="No trend data",sQe="No distribution data",rQe="No rows",iQe="Spend breakdown",lQe={upstreamList:"Upstream list",discount:"Discount",sub2apiActual:"Sub2API actual",groupChannelMultiplier:"Group/channel multiplier",accountMultiplier:"Account multiplier",sub2apiFinalCharge:"Final spend",billedFactors:"Billed to user"},cQe="Request detail",dQe="Unknown user",uQe="Loading...",mQe="Sub2API actual",pQe="Group multiplier",fQe="Account multiplier",gQe="Identity",hQe="User ID",yQe="Key suffix",vQe={hopIdentity:"Hop identity",logicalUsageId:"Logical usage ID",logicalRequestedModel:"Logical requested model",logicalModel:"Logical model",actualRequestedModel:"Actual requested model",actualModel:"Actual model",fallbackHop:"Fallback hop",userVisibility:"User visibility",visible:"Visible",hidden:"Hidden",supersedesUsageRecord:"Supersedes record",pricingAudit:"Continuity pricing audit",mode:"Mode",policyVersion:"Policy version",sourceModel:"Source model",targetModel:"Target model",requestedRawQuote:"Requested raw quote",requestedQuote:"Requested quote",actualPricingStatus:"Actual pricing status",actualPricingAvailable:"Available",actualPricingUnavailable:"Unavailable",actualQuote:"Actual quote",chargedQuote:"Charged quote",variance:"Quote variance",actualPricingError:"Actual pricing error"},bQe="Input",xQe="Output",$Qe="Cache read",wQe="Cache write",kQe="Raw metadata",CQe="Request",SQe="Usage ID",AQe="OneHop ID",TQe="Sub2API ID",RQe="Sub2API log",PQe="Routing",_Qe="Mapping",jQe="Performance",NQe="First token",DQe="Total",MQe="Error",EQe="Code",IQe="Message",OQe={time:"Time",user:"User",apiKey:"API key",model:"Model",logicalUsageId:"Logical usage ID",logicalRequestedModel:"Logical requested model",logicalModel:"Logical model",actualRequestedModel:"Actual requested model",actualModel:"Actual model",fallbackHop:"Fallback hop",userVisible:"User visible",supersedesUsageRecord:"Supersedes usage record",upstreamModel:"Upstream model",protocol:"Protocol",endpoint:"Endpoint",type:"Type",status:"Status",inputTokens:"Input tokens",outputTokens:"Output tokens",cacheRead:"Cache read",cacheWrite:"Cache write",sub2apiActual:"Sub2API actual",sub2apiCharge:"Spend",continuityMode:"Continuity mode",continuityPolicyVersion:"Continuity policy version",continuitySourceModel:"Continuity source model",continuityTargetModel:"Continuity target model",continuityRequestedRawQuote:"Continuity requested raw quote",continuityRequestedQuote:"Continuity requested quote",continuityActualPricingStatus:"Continuity actual pricing status",continuityActualQuote:"Continuity actual quote",continuityChargedQuote:"Continuity charged quote",continuityVariance:"Continuity quote variance",continuityActualPricingError:"Continuity actual pricing error",durationMs:"Duration ms",channel:"Channel",group:"Group",onehopRequestId:"OneHop request ID",sub2apiRequestId:"Sub2API request ID",firstTokenMs:"First token ms"},LQe={analytics:"Usage analytics",logs:"Request logs"},UQe={label:"Chart view",stacked:"Over time",ranking:"Ranking"},BQe={failedOnly:"Failed only",slowOnly:"Slow > {{sec}}s"},FQe="More filters",zQe="Slow threshold (ms)",qQe="No model usage",HQe="No requests yet — usage will appear here as traffic comes in.",VQe="Viewing",KQe="streaming requests",GQe="Avg duration",WQe="Latency = time to first token (TTFT); Duration = total. The slow filter uses TTFT and only covers successful requests with a recorded first token (earlier or failed requests show —).",YQe="Open request detail",QQe={title:FWe,description:zWe,refresh:qWe,autoRefresh:HWe,exporting:VWe,exportCsv:KWe,exportError:GWe,requests:WWe,successful:YWe,users:QWe,matchedFilters:XWe,billedCredit:ZWe,upstreamCost:JWe,tokens:eYe,avgDuration:tYe,userEmail:nYe,searchEmail:aYe,model:oYe,searchModel:sYe,status:rYe,protocol:iYe,rows:lYe,reset:cYe,label:dYe,empty:uYe,user:mYe,endpoint:pYe,totalTokens:fYe,inOut:gYe,upstream:hYe,billed:yYe,latency:vYe,started:bYe,pageSummary:xYe,previous:$Ye,next:wYe,rowsOnPage:kYe,timesShownIn:CYe,apiKeys:SYe,sub2apiCharge:AYe,sub2apiChargeSource:TYe,userSpend:RYe,userSpendSource:PYe,avgLatency:_Ye,settledRequests:jYe,range:NYe,ranges:DYe,metric:MYe,metrics:EYe,distribution:IYe,breakdown:OYe,usageTrend:LYe,stackedByModel:UYe,hourly:BYe,daily:FYe,topEndpoints:zYe,topDimensionRows:qYe,requestLogs:HYe,apiKey:VYe,type:KYe,billing:GYe,channel:WYe,group:YYe,requestId:QYe,requestIdPlaceholder:XYe,allTypes:ZYe,allBilling:JYe,table:eQe,failedLoad:tQe,loadingRecords:nQe,tryDifferentFilters:aQe,noTrendData:oQe,noDistributionData:sQe,noRows:rQe,costBreakdown:iQe,adminCost:lQe,requestDetail:cQe,unknownUser:dQe,loading:uQe,sub2apiActual:mQe,groupMultiplier:pQe,accountMultiplier:fQe,identity:gQe,userId:hQe,keySuffix:yQe,continuity:vQe,input:bQe,output:xQe,cacheRead:$Qe,cacheWrite:wQe,rawMetadata:kQe,request:CQe,usageId:SQe,onehopId:AQe,sub2apiId:TQe,sub2apiLog:RQe,routing:PQe,mapping:_Qe,performance:jQe,firstToken:NQe,total:DQe,error:MQe,code:EQe,message:IQe,csv:OQe,tabs:LQe,modelView:UQe,chip:BQe,moreFilters:FQe,slowThreshold:zQe,noModelUsage:qQe,noTrendToday:HQe,viewing:VQe,avgLatencySub:KQe,avgTotalDuration:GQe,latencyHint:WQe,openRequestDetail:YQe}
771,XQe="Search",ZQe="Search by user ID, email, or name",JQe="User",eXe="Back to users",tXe="You do not have permission to view this section.",nXe="Refund",aXe="Refunding...",oXe="Initiate a refund of {{amount}} for {{email}}? Refunds are processed asynchronously; the balance updates after the worker runs.",sXe="Refund initiated.",rXe={overview:"Overview",network:"Network & Device",recentCalls:"Recent Calls",apiKeys:"API-Schlüssel",payments:"Payments",refunds:"Refunds",subscription:"Subscription",referrals:"Referrals",rewards:"Rewards",audit:"Audit"},iXe={title:"Free token allowance",paused:"Free token grants are paused on this account (risk review).",daily:"Daily",weekly:"Weekly",tokensUnit:"tokens",remaining:"{{value}} tokens remaining today"},lXe={title:"Free model quota (today)",tokens:"tokens",remaining:"{{value}} tokens remaining today",unlimited:"Free quota: unlimited (gate disabled)",eligibilityLabel:"Free tier eligibility",eligible:"Free tier",ineligible:"Ineligible (same device used)"},cXe={phase2:"Subscriptions are coming in Phase 2."},dXe={empty:"No payments"},uXe={empty:"No refunds"},mXe={empty:"No credit buckets",note:"Credit buckets show current balance inventory. Grant and refund history appear in the Audit timeline; referral rewards in the Referrals section."},pXe={totalEarned:"Total earned",frozenEarned:"Frozen",refereeCount:"Referees",activeCount:"Active",role:"Role",counterparty:"Counterparty",empty:"No referral activity"},fXe={empty:"No audit records"},gXe={amount:"Amount",credit:"Credit",status:"Status",provider:"Provider",createdAt:"Created",type:"Type",originalTx:"Original tx",remaining:"Remaining",initial:"Initial",expiresAt:"Expires",event:"Event",action:"Action",severity:"Severity"},hXe={ipLocationTitle:"IP und Standort",deviceBrowserTitle:"Gerät und Browser",stripeTitle:"Stripe",signupIp:"Registrierungs-IP",signupCountry:"Registrierungsland",lastLoginIp:"IP der letzten Anmeldung",ipDifferent:"Weicht von Registrierungs-IP ab",sameIpAccounts_one:"{{count}} Konto mit derselben Registrierungs-IP",sameIpAccounts_other:"{{count}} Konten mit derselben Registrierungs-IP",sameDeviceAccounts_one:"{{count}} Konto auf demselben Gerät",sameDeviceAccounts_other:"{{count}} Konten auf demselben Gerät",deviceFingerprint:"Geräte-Fingerprint",freeTierEligible:"Berechtigung für kostenlosen Tarif",firstDevice:"Erstes Konto auf dem Gerät",notFirstDevice:"Nicht erstes Konto auf dem Gerät — keine kostenlosen Vorteile",browser:"Browser",os:"OS",deviceType:"Gerätetyp",acceptLanguage:"Accept-Language",stripeCustomerId:"Stripe Customer ID",viewOnIpinfo:"Auf ipinfo.io anzeigen"},yXe={empty:"Noch keine Aufrufe",viewAll:"Alle Logs anzeigen →",colStatus:"Status",colTime:"Zeit",colModel:"Modell",colProtocol:"Protokoll",colDuration:"Dauer",colCost:"Kosten",colFreeDiscount:"Kostenloses Guthaben"},vXe={empty:"Noch keine API keys",colName:"Name",colKey:"Key",colStatus:"Status",colPolicy:"Rate-Limit-Richtlinie",colLastUsed:"Zuletzt genutzt",colCreated:"Erstellt",colExpires:"Läuft ab",colSpend:"Ausgaben",spendTitle:"Ausgabenaufschlüsselung",spend30d:"Letzte 30 Tage",spendAllTime:"Gesamt",spendRequests:"Requests"},bXe="Kopieren",xXe="Kopiert",$Xe={search:XQe,searchPlaceholder:ZQe,title:JQe,backToList:eXe,noBlockPerm:tXe,refund:nXe,refunding:aXe,refundConfirm:oXe,refundInitiated:sXe,nav:rXe,freeTokens:iXe,freeQuota:lXe,subscription:cXe,payments:dXe,refunds:uXe,rewards:mXe,referrals:pXe,audit:fXe,col:gXe,network:hXe,recentCalls:yXe,apiKeys:vXe,copy:bXe,copied:xXe},wXe="Users",kXe="Search users, grant credit, and suspend accounts.",CXe="Email",SXe="Search by email",AXe="Account status",TXe={active:"Konto aktiv; Anmeldung und Gateway-Aufrufe möglich",suspended:"Gesperrt; Gateway lehnt alle Anfragen ab (401)"},RXe="Risk",PXe={normal:"Für alle kostenlosen Vorteile berechtigt",watchlisted:"Keine kostenlosen Token und kein Registrierungsbonus; Aufladen und Gateway-Aufrufe weiterhin möglich",blocked:"Gateway lehnt alle Anfragen ab (401); vollständig gesperrt"},_Xe="Users",jXe="No users found",NXe="Country",DXe="Last login",MXe="Action",EXe="View",IXe="Deleted",OXe="Set status for {{email}}",LXe='Set {{email}} to "{{status}}"?',UXe="Grant credit",BXe="Add bonus credit to {{email}}. Recorded in the ledger.",FXe="Amount (USD)",zXe="e.g. 5",qXe="Reason (optional)",HXe="e.g. compensation for downtime",VXe="Type",KXe="Bonus credit",GXe="A gift. Does not count as a top-up.",WXe="Offline payment",YXe="Money we actually received. Counts as a top-up: unlocks paid-only models and rate-limit tiers.",QXe="Reference no.",XXe="e.g. bank slip 20260907-001",ZXe="Record payment",JXe="Recording...",eZe="Cancel",tZe="Granting...",nZe="Grant",aZe="Grant ${{amount}} to {{email}}? This is a large amount.",oZe="No display name",sZe="Loading...",rZe="score {{score}}",iZe="Email verified",lZe="Yes",cZe="No",dZe="Signup",uZe="Signup method",mZe="Last login method",pZe="Signup bonus",fZe="Onboarding",gZe="Locale / TZ",hZe="Markup ratio",yZe="Rate limit policy",vZe="Rate limit policy updated.",bZe="Joined",xZe="Never",$Ze="Balance",wZe="Wallet & spend",kZe="Total spent",CZe="Recharged",SZe="Bonus granted",AZe="Refunded",TZe="Requests",RZe="Tokens",PZe="Actions",_Ze="Identity & risk",jZe="Role",NZe="No permitted actions for your role.",DZe="Acquisition source",MZe="Acquisition by source",EZe="Direct / unknown",IZe="Custom source…",OZe="Set",LZe="Auto-detected: {{source}}",UZe="UTM",BZe="Referred by",FZe="Notiz",zZe="Notiz hinzufügen, um diesen Nutzer zu identifizieren",qZe="Notiz speichern",HZe="Notiz gespeichert",VZe="Keine Notiz",KZe="Filter",GZe="Location",WZe="Preferred locale",YZe={title:wXe,description:kXe,email:CXe,searchEmail:SXe,status:AXe,statusEffect:TXe,risk:RXe,riskEffect:PXe,label:_Xe,empty:jXe,country:NXe,lastLogin:DXe,action:MXe,view:EXe,deleted:IXe,setStatusAria:OXe,setStatusConfirm:LXe,grantCredit:UXe,grantDescription:BXe,amountUsd:FXe,amountPlaceholder:zXe,reason:qXe,reasonPlaceholder:HXe,grantKind:VXe,grantKindBonus:KXe,grantKindBonusHint:GXe,grantKindOffline:WXe,grantKindOfflineHint:YXe,referenceNo:QXe,referenceNoPlaceholder:XXe,recordPayment:ZXe,recording:JXe,cancel:eZe,granting:tZe,grant:nZe,largeGrantConfirm:aZe,noDisplayName:oZe,loading:sZe,score:rZe,emailVerified:iZe,yes:lZe,no:cZe,signup:dZe,signupMethod:uZe,lastLoginMethod:mZe,signupBonus:pZe,onboarding:fZe,localeTz:gZe,markupRatio:hZe,rateLimitPolicy:yZe,rateLimitPolicyChanged:vZe,joined:bZe,never:xZe,walletBalance:$Ze,walletSection:wZe,consumed:kZe,recharged:CZe,bonusGranted:SZe,refunded:AZe,requests:TZe,tokens:RZe,actionsSection:PZe,identitySection:_Ze,role:jZe,noPermittedActions:NZe,acquisitionSource:DZe,acquisitionTitle:MZe,sourceDirect:EZe,sourceCustomPlaceholder:IZe,sourceSet:OZe,sourceCaptured:LZe,utm:UZe,referrer:BZe,note:FZe,notePlaceholder:zZe,noteSave:qZe,noteSaved:HZe,noteEmpty:VZe,filters:KZe,location:GZe,preferredLocale:WZe},QZe="Webhooks",XZe="Stripe webhook events. Status filter, retry, payload inspection.",ZZe="Status",JZe="Event type",eJe="Received",tJe="Event type",nJe="Status",aJe="Mode",oJe="Attempts",sJe="Retry",rJe="Retry queued",iJe="Event {{event}} reset to pending; next job tick will process.",lJe="Retry failed",cJe="No webhook events yet.",dJe="Stripe events will appear here once your endpoint is registered.",uJe="Loading payload...",mJe="Last error",pJe="Payload (JSON)",fJe={title:QZe,description:XZe,statusFilter:ZZe,eventTypeFilter:JZe,receivedAt:eJe,eventType:tJe,status:nJe,mode:aJe,attempts:oJe,retry:sJe,retrySubmittedTitle:rJe,retrySubmittedBody:iJe,retryFailedTitle:lJe,empty:cJe,emptyHint:dJe,detailLoa
771ding:uJe,lastError:mJe,payload:pJe},gJe="API Keys",hJe="Erste key in 10 Sekunden erstellen",yJe="Kopieren fehlgeschlagen",vJe={label:"Erlaubte Modelle",allModels:"Alle Modelle",allHint:"Alle Modelle im Katalog sind erlaubt.",noModels:"Keine Modelle verfügbar.",selected:"{{count}} ausgewählt",someHint:"{{count}} Modell(e) erlaubt."},bJe={label:"Tags",placeholder:"Tag hinzufügen und Enter drücken",remove:"Entfernen"},xJe="Erstelle scoped keys für Produktion, Staging und Team-Workflows.",$Je="Aktualisieren",wJe="Standard-key",kJe="Key-Name",CJe="Erstellt...",SJe="Key erstellen",AJe="Vollständiger key, einmalig angezeigt",TJe="API key kopieren",RJe="Kopiert",PJe="Kopieren",_Je="Kopiere und speichere ihn jetzt. Nach dem Schließen dieses Panels kann der vollständige key nicht erneut angezeigt werden.",jJe="Ich habe ihn gespeichert",NJe="API keys konnten nicht geladen werden",DJe="Erneut versuchen",MJe="Noch keine API keys",EJe="Erstelle deinen ersten key, um Requests über OneHop zu senden.",IJe={label:"API keys",tags:"Tags",name:"Name",key:"Key",status:"Status",created:"Erstellt",action:"Aktion",usage:"Nutzung",quota:"Limit",expires:"Läuft ab",lastUsed:"Zuletzt genutzt"},OJe="Widerrufen",LJe="{{name}} widerrufen? Das kann nicht rückgängig gemacht werden.",UJe="Benenne die key. Limits und Ablaufdatum bleiben in den erweiterten Einstellungen, solange du sie nicht brauchst.",BJe="Monatliches credit-Limit",FJe="Läuft ab am",zJe="Unbegrenzt",qJe="Speichern...",HJe="Speichern",VJe="Abbrechen",KJe={title:"Deaktiviert und widerrufen",description:"Deaktivierte oder widerrufene keys. Deaktivierte keys kannst du reaktivieren; widerrufene bleiben als Protokoll erhalten."},GJe={title:"Keine aktiven keys",description:"Aktiviere unten einen deaktivierten key erneut oder erstelle einen neuen."},WJe={import:"In CCS importieren",client:"CC-Switch-Client",codex:"Codex / OpenAI",claude:"Claude Code",pasteHint:"CC Switch wurde mit einem Platzhalter geöffnet. Füge dort deinen gespeicherten API key ein.",checking:"Kompatibilität wird geprüft…",blocked:{title:"{{client}} kann diesen Schlüssel nicht verwenden",body:"„{{keyName}}“ erlaubt nur Modelle, die {{client}} nicht verwenden kann. Der Import führt zu Fehlern.",adjust:"Modellumfang anpassen",forceImport:"Trotzdem importieren (funktioniert nicht)"},pin:{title:"Für {{client}} als {{model}} importieren",body:"„{{keyName}}“ enthält nicht das Standardmodell von {{client}}. So werden {{client}}-Anfragen über diesen Anbieter weitergeleitet:",adjust:"Modellumfang anpassen",confirm:"Mit {{model}} importieren"}},YJe={search:"Suchen",searchPlaceholder:"Name oder key-Suffix suchen",status:"Status",allStatus:"Alle Status",clear:"Filter löschen",empty:"Keine keys passen zu diesen Filtern",emptyDescription:"Lösche Suche oder Statusfilter, um alle keys zu sehen.",mobileTitle:"Filter"},QJe={active:"Aktiv",inactive:"Deaktiviert",revoked:"Widerrufen",expired:"Abgelaufen",quota_exhausted:"Limit ausgeschöpft"},XJe={today:"Heute {{requests}} req · {{credit}}",days30:"30 T {{requests}} req · {{credit}}"},ZJe={use:"Verbindungsdetails",edit:"Bearbeiten",enable:"Aktivieren",disable:"Deaktivieren",delete:"Löschen"},JJe="API key verwenden",eet="Nutze die gespeicherte key mit dem OneHop gateway. Die vollständige key wird nur beim Erstellen angezeigt.",tet={baseUrl:"Base URL",keyHint:"API key",authorization:"Authorization-Header",env:"Umgebungsvariable",curl:"cURL",revealing:"key wird entschlüsselt…",fullKeyUnavailable:"Die vollständige key wird nur beim Erstellen angezeigt. Nutze den gespeicherten Wert oder erstelle eine neue key, falls sie verloren ging.",protocolEndpoints:"Protokoll-Endpunkte"},net="Erweiterte Einstellungen",aet="API key erstellen",oet="API key bearbeiten",set={label:"Modellzugriff",all:"Alle Modelle",limited:"Auf bestimmte Modelle beschränken",allHint:"Dieser key kann alle Modelle aufrufen, auch später hinzugefügte.",snapshotHint:"Nur die ausgewählten Modelle; später hinzugefügte Modelle werden nicht automatisch aufgenommen.",snapshotHintEdit:"Nur die ausgewählten Modelle; neue Modelle werden nicht automatisch aufgenommen. Der Wechsel zu Alle Modelle ersetzt diese Whitelist.",searchPlaceholder:"Modelle suchen…",selectAllResults:"Alle Ergebnisse auswählen ({{count}})",selectedCount:"{{count}} / {{max}} ausgewählt",clear:"Leeren",hiddenSelected:"{{hidden}} von {{total}} ausgewählten sind durch den aktuellen Filter ausgeblendet",selectVendor:"Alle {{vendor}} auswählen, {{on}} von {{total}} ausgewählt",emptyTitle:"Keine passenden Modelle",emptyDescription:"Versuche einen anderen Typ oder Suchbegriff.",loadFailed:"Modelle konnten nicht geladen werden",loadFailedHint:"Erneut versuchen oder zurück zu Alle Modelle wechseln.",type:{all:"Alle",text:"Text",image:"Bild",video:"Video",embedding:"Embedding"},pickAtLeastOne:"Wähle mindestens ein Modell aus oder wechsle zu Alle Modelle.",limitReached:"Reached the {{max}}-model limit"},ret={title:"API key erstellt",subtitle:"{{name}} ist bereit — jetzt verbinden.",onceWarning:"Wird einmal angezeigt. Du kannst ihn später erneut anzeigen, aber kopiere ihn sicherheitshalber jetzt.",connect:"Verbinden",done:"Fertig"},iet="IP",cet="Widerrufen am {{date}}",det={title:gJe,emptyTitle:hJe,copyFailed:yJe,allowedModels:vJe,tags:bJe,description:xJe,refresh:$Je,defaultName:wJe,keyName:kJe,creating:CJe,createKey:SJe,fullKeyTitle:AJe,copyApiKey:TJe,copied:RJe,copy:PJe,fullKeyDescription:_Je,savedIt:jJe,loadFailed:NJe,retry:DJe,empty:MJe,emptyDescription:EJe,table:IJe,revoke:OJe,revokeConfirm:LJe,formDescription:UJe,monthlyCreditLimit:BJe,expiresAt:FJe,unlimited:zJe,saving:qJe,save:HJe,cancel:VJe,parked:KJe,noActive:GJe,ccswitch:WJe,filters:YJe,status:QJe,usage:XJe,actions:ZJe,useTitle:JJe,useDescription:eet,use:tet,advancedSettings:net,createTitle:aet,editTitle:oet,scope:set,created:ret,lastUsedIp:iet,revokedAt:cet},uet="Audit Logs",met="High-risk admin actions, by action and time.",pet="Action",fet="Clear",get={ops_user_update_status:"Nutzerstatus aktualisiert",ops_users_allowlist_add:"Registrierungszugang hinzugefügt",ops_users_allowlist_update:"Registrierungszugang aktualisiert",ops_users_allowlist_invite:"Einladung zum Registrierungszugang gesendet",ops_users_allowlist_revoke:"Registrierungszugang entfernt",ops_users_allowlist_restore:"Registrierungszugang wiederhergestellt",ops_model_create:"Modell erstellt",ops_model_update:"Modell aktualisiert",ops_model_update_status:"Modellstatus aktualisiert",sub2api_pool_create:"Routing-Pool erstellt",sub2api_pool_test:"Routing-Pool getestet",sub2api_pool_rotate_secret:"Routing-Secret rotiert"},het="Audit logs",yet="No audit entries",vet="Time",bet="Severity",xet="Target",$et={ai_model:"Model",sub2a
771pi_key_pool:"Routing key pool",sys_user:"User",wallet:"Wallet"},wet="Zieltyp",ket="Request-ID",Cet={title:uet,description:met,action:pet,clear:fet,actions:get,label:het,empty:yet,time:vet,severity:bet,target:xet,targetTypes:$et,targetType:wet,requestId:ket},Aet="Bei OneHop anmelden",Tet="Code eingeben",Ret="Mit Google oder E-Mail fortfahren",Pet="E-Mail eingeben, um einen Code zu erhalten",_et="Gib den 6-stelligen Code ein, der an {{email}} gesendet wurde",jet="Mit Google fortfahren",Net="Mit E-Mail fortfahren",Det="oder",Met="E-Mail",Eet="Bestätigungscode senden",Iet="Senden...",Oet="Bestätigen",Let="Prüfen...",Uet="Erneut senden in {{seconds}} s",Bet="Code erneut senden",Fet="Mit dem Fortfahren akzeptierst du unsere",zet="Nutzungsbedingungen",qet="Datenschutzerklärung",Het={signIn:"Anmelden",signOutFailed:"Abmeldung fehlgeschlagen",sendCodeFailed:"Code konnte nicht gesendet werden",notAllowed:"Diese E-Mail ist noch nicht für den Zugriff freigegeben. Bitte wende dich an deinen Administrator.",invalidCode:"Ungültiger Code",codeIncorrect:"Code falsch, bitte erneut versuchen",googleFailed:"Google-Anmeldung fehlgeschlagen",verifyHuman:"Bitte schließe die Verifizierung ab, um fortzufahren",verifyUnavailable:"Die Personenüberprüfung ist vorübergehend nicht verfügbar. Bitte melden Sie sich oben mit Google an oder versuchen Sie es später erneut."},Vet={signInTitle:Aet,enterCodeTitle:Tet,methodIntro:Ret,emailStepIntro:Pet,codeIntro:_et,continueGoogle:jet,continueEmail:Net,or:Det,emailLabel:Met,sendCode:Eet,sending:Iet,verify:Oet,verifying:Let,resendIn:Uet,resendCode:Bet,termsPrefix:Fet,terms:zet,privacy:qet,errors:Het},Ket="Abrechnung",Get="Credits aufladen, Gutscheincodes einlösen und Wallet-Verlauf ansehen.",Wet={bonuses:"Boni",topups:"Aufladungen",usage:"Verbrauch"},Yet={available:"Gutgeschrieben",availableHint:"Bereits im verfügbaren Guthaben enthalten",frozen:"Ausstehend (gesperrt)",frozenHint:"In ca. {{days}} Tagen verfügbar",frozenHintGeneric:"Nach Ablauf der Haltefrist verfügbar",title:"Empfehlungsprämien",viewDetails:"Empfehlungsdetails anzeigen"},Qet={noUsage:"Kein Verbrauch in den letzten 30 Tagen",perDay:"{{amount}} Ø/Tag",daysLeft:"≈ {{days}} Tage bei aktueller Rate"},Xet={amountUsd:"Betrag (USD)",minAmountHint:"Mindestaufladung: {{amount}}.",apply:"Anwenden",get:"Erhalten",onehopCredits:"OneHop credits",pay:"Zahlen",poweredByStripe:"Abgesichert durch Stripe",poweredBy:"Abgesichert durch {{provider}}",secureCheckout:"Sicherer gehosteter Checkout",secureCheckoutShort:"Sicherer Checkout",taxExclusiveNotice:"Anfallende Steuern werden beim Bezahlvorgang berechnet und diesem Betrag hinzugefügt.",presets:"Vordefinierte Beträge",promoCode:"Gutscheincode",promoCodePlaceholder:"Code eingeben",serviceFee:"Servicegebühr",title:"Aufladen",topupAmount:"Aufladebetrag",totalDue:"Fälliger Gesamtbetrag",payCta:"{{amount}} bezahlen",previewing:"Wird geprüft…",discount:"Gutscheinrabatt",couponBelowMin:"Der rabattierte Betrag ist zu niedrig – erhöhe den Betrag oder probiere einen anderen Code.",maintenanceTitle:"Zahlungen vorübergehend nicht verfügbar",maintenanceDescription:"Zahlungen sind vorübergehend nicht verfügbar. Kontaktiere uns auf Telegram, wenn du zahlen möchtest.",contactTelegram:"Kontaktiere uns auf Telegram",alipay:"Alipay",wechatPay:"WeChat Pay",crypto:"Mit Krypto zahlen (USDC / USDT)",payOnStripe:"Die Zahlung wird auf der sicheren Stripe-Checkout-Seite abgeschlossen.",payOnProvider:"Die Zahlung wird auf der sicheren {{provider}}-Checkout-Seite abgeschlossen.",payOnHostedCheckout:"Die Zahlung wird auf der sicheren gehosteten Checkout-Seite abgeschlossen.",amountPrecision:"{{provider}} akzeptiert USD-Beträge mit höchstens 2 Nachkommastellen. Passe den Betrag oder den Aktionscode an.",couponBonus:"Coupon-Bonus",couponBonusExpiry:"Bonusguthaben verfällt {{days}} Tage nach der Zahlung.",couponInvalid:"Dieser Code kann nicht angewendet werden – bitte versuche einen anderen Code.",couponErrors:{limitReached:"Du hast diesen Code bereits maximal oft verwendet.",invalid:"Dieser Code ist ungültig.",expired:"Dieser Code ist abgelaufen.",exhausted:"Dieser Code wurde vollständig eingelöst.",unavailable:"Dieser Code wird gerade verwendet – bitte gleich erneut versuchen."},tierBonus:"Aktionsbonus",tierBonusExpiry:"Bonusguthaben verfällt {{days}} Tage nach der Zahlung.",tierBonusRestricted:"Bonusguthaben ist nur einlösbar für: {{models}}.",nextTierPercent:"Lade {{amount}} mehr auf und erhalte {{percent}} % Bonusguthaben.",nextTierBonus:"Lade {{amount}} mehr auf und erhalte {{bonus}} Bonusguthaben.",tierCapReached:"Du hast den maximalen Bonus dieser Aktion bereits erhalten."},Zet="Credits hinzufügen",Jet="Wird erstellt...",ett="Verfügbarer Credit",ttt="Aufladen",ntt="Zahlung über Stripe",att="Betrag (USD)",ott="Vordefinierte Aufladebeträge",stt="Gutscheincode einlösen",rtt="Gutscheincode",itt="Wird eingelöst...",ltt="Einlösen",ctt="Gutscheincode eingelöst, Guthaben wird aktualisiert.",dtt="Weiterleitung zum sicheren checkout...",utt="Abrechnungsübersicht konnte nicht geladen werden",mtt="Aufladen fehlgeschlagen",ptt="Tabs für Abrechnungsaktivität",ftt="Transaktionen",gtt="Credit-Gutschriften",htt="Transaktionstyp",ytt="Quelle",vtt="Noch keine Transaktionen",btt="Aufladungen, Abbuchungen und Gutschriften erscheinen hier.",xtt="Ledger-Einträge",$tt="Zeit",wtt="Typ",ktt="Betrag",Ctt="Saldo",Stt="Noch keine Gutschriften",Att
771="Registrierungsboni, Gutscheincodes und manuelle Gutschriften erscheinen hier.",Ttt="Status",Rtt={successTitle:"Zahlung eingegangen",polling:"Credit wird deiner Wallet gutgeschrieben... ca. 30 Sekunden.",delayed:"Die Gutschrift dauert länger. Lade gleich neu oder prüfe deine Stripe-Belege.",cancelledTitle:"Zahlung abgebrochen",cancelledBody:"Es wurde nichts abgebucht. Versuche es erneut, wenn du bereit bist.",failedTitle:"Zahlung fehlgeschlagen",failedBody:"Deine Zahlung konnte nicht abgeschlossen werden. Es wurde kein Guthaben gutgeschrieben. Versuche es erneut oder nutze eine andere Zahlungsmethode."},Ptt={text:"Credits sind ein vorausbezahltes Dienstguthaben, keine Bankeinlage. Verbrauchte Credits sind nicht erstattbar. Alle Preise in USD. Siehe",tosLink:"Nutzungsbedingungen"},_tt="Belege",jtt="Wird geöffnet...",Ntt="Abrechnungsportal konnte nicht geöffnet werden",Dtt={title:"Letzte Aufladungen",subtitle:"Letzte 90 Tage, innerhalb von 24 Stunden erstattbar.",loading:"Aufladungen werden geladen...",date:"Datum",amount:"Betrag",credits:"Credits",status:"Status",refund:"Erstatten",alreadyRefunded:"Bereits erstattet",windowExpired:"Erstattungsfenster abgelaufen (24 Stunden)",confirmTitle:"Erstattung bestätigen",confirmBody:"Die Erstattung wird von Stripe innerhalb von 1-3 Werktagen verarbeitet. Bei nutzerinitiierten Erstattungen fällt eine Plattformgebühr ({{fee}}) an.",amountLabel:"Erstattungsbetrag (USD)",maxLabel:"Max. ${{value}}",requestedLabel:"Beantragte Erstattung",platformFeeLabel:"Plattformgebühr ({{fee}})",cardReturnLabel:"Zurück auf deine Karte",bonusForfeitureHint:"Mit dieser Aufladung gewährte Aktions-Credits verfallen anteilig.",cancel:"Abbrechen",confirm:"Erstattung auslösen",submitting:"Wird gesendet...",refundSubmittedTitle:"Erstattung eingereicht",refundSubmittedBody:"Stripe überweist den Betrag innerhalb von 1-3 Werktagen zurück auf deine Karte.",refundFailedTitle:"Erstattung fehlgeschlagen",balance:"Saldo",confirmAmount:"{{amount}} erstatten"},Mtt={title:"Guthaben-Warnungen",description:"Wir benachrichtigen dich, wenn dein Guthaben zur Neige geht.",emailLabel:"Per E-Mail benachrichtigen",webhookLabel:"Webhook",autorechargeLabel:"Automatisches Aufladen",autorechargeUnsupported:"Automatisches Aufladen ist beim aktiven Zahlungsanbieter nicht verfügbar.",autorechargeAddCardHint:"Karte hinzufügen, um dein Guthaben aufzufüllen",autorechargeTopUp:"Aufladen um",autorechargeWhenBelow:"bei einem Guthaben unter",autorechargeThreshold:"Schwelle für automatisches Aufladen",autorechargeAmount:"Betrag für automatisches Aufladen",autorechargeDisabledFailures:"Automatisches Aufladen wurde nach mehreren Fehlversuchen deaktiviert. Aktualisiere deine Karte und aktiviere es erneut.",autorechargeIncomplete:"Lege einen Aufladebetrag und eine Schwelle über $0 fest.",test:"Testen",testing:"Test läuft…",testQueued:"Testzustellung in der Warteschlange — prüfe deinen Endpunkt",testFailed:"Testzustellung konnte nicht eingereiht werden",signingSecret:"Signatur-Secret",secretOnSave:"Beim Speichern wird ein Signatur-Secret erzeugt.",rotate:"Rotieren",secretRotated:"Signatur-Secret rotiert",rotateFailed:"Secret konnte nicht rotiert werden",secretCopied:"Signatur-Secret kopiert",saved:"Warnungseinstellungen gespeichert",saveFailed:"Warnungseinstellungen konnten nicht gespeichert werden",loadFailed:"Warnungseinstellungen konnten nicht geladen werden",thresholdRequired:"Lege eine Schwelle über $0 fest, um Warnungen zu aktivieren.",webhookUrlRequired:"Gib eine https://-URL für den Webhook ein.",thresholdOrderBad:"Die Warnschwelle muss ≥ der Schwelle für automatisches Aufladen sein.",card:"Karte",changeCard:"Ändern",removeCard:"Entfernen",cardRemoved:"Karte entfernt",cardRemoveFailed:"Karte konnte nicht entfernt werden",cardSetupFailed:"Karteneinrichtung konnte nicht gestartet werden",lowBalanceGroup:"Warnungen bei niedrigem Guthaben",thresholdLabel:"Warnschwelle"},Ett={title:"Transaktionsverlauf",idSearch:"Transaktions-ID",amountRange:"Betragsbereich (USD)",min:"Min.",max:"Max.",clear:"Löschen",retry:"Erneut versuchen",empty:"Keine Transaktionen in diesem Bereich",date:"Datum",typeMethod:"Typ / Methode",description:"Beschreibung",action:"Aktion",prevMonth:"Vorheriger Monat",nextMonth:"Nächster Monat",viewInvoices:"Rechnungen anzeigen",emptyNew:"Noch keine Transaktionen",emptyNewDesc:"Nach dem Aufladen erscheinen deine Aufladungen, Boni und Erstattungen hier.",topUpCta:"Aufladen",emptyFiltered:"Keine passenden Transaktionen",emptyFilteredDesc:"Leere die Filter oder erweitere den Zeitraum.",clearFilters:"Filter leeren"},Itt="Dein Guthaben ist niedrig und kann Requests unterbrechen. Lade auf oder aktiviere automatische Aufladung.",Ott="Dein Guthaben ist niedrig und kann Requests unterbrechen. Lade auf, um fortzufahren.",Ltt={creditPurchase:"Guthabenaufladung",topupBonus:"Top-up bonus",signupBonus:"Signup bonus",referralClawback:"Referral cashback clawback (refund)",couponBonus:"Coupon-Bonus",referralCashback:"Empfehlungs-Cashback",referralInviteeCashback:"Bonus für Eingeladene",redeemCode:"Einlösecode {{code}}",redeemCodeReversal:"Einlösecode storniert",stripeRefund:"Stripe-Erstattung",bonusReversal:"Bonusr
771ückbuchung (Erstattung)"},Utt={title:"Zweckgebundenes Guthaben",subtitle:"Bonusguthaben, das nur für bestimmte Modelle nutzbar ist — getrennt von Ihrem Guthaben.",onlyModels:"Nur {{models}}",onlyModelsGeneric:"Eingeschränkte Modelle",validUntil:"Gültig bis {{date}}",noExpiry:"Kein Ablaufdatum",useInChat:"Use in chat"},Btt={card:"Karte",alipay:"Alipay",wechatPay:"WeChat Pay"},Ftt={title:"Einlösecode",description:"Du hast einen Einlösecode? Gib ihn ein, um den Nennwert deinem Guthaben gutzuschreiben.",placeholder:"Zum Beispiel: OHR-XXXXXXXX",redeem:"Einlösen",redeeming:"Wird eingelöst…",success:"{{amount}} dem Guthaben gutgeschrieben",successRestricted:"Redeemed {{amount}} — usable with {{models}} only",successValidity:"Valid until {{date}}.",errors:{invalid:"Dieser Code ist ungültig.",expired:"Dieser Code ist abgelaufen.",alreadyRedeemed:"Dieser Code wurde bereits eingelöst.",perUserLimit:"Du hast das Einlöselimit für diese Charge erreicht."}},ztt={title:Ket,description:Get,breakdown:Wet,referralRewards:Yet,burnRate:Qet,topup:Xet,addCredits:Zet,creating:Jet,availableCredit:ett,topUp:ttt,poweredByStripe:ntt,amountUsd:att,presetAmounts:ott,redeemCoupon:stt,couponCode:rtt,redeeming:itt,redeem:ltt,couponRedeemed:ctt,redirecting:dtt,summaryFailed:utt,topupFailed:mtt,tabsLabel:ptt,transactions:ftt,creditGrants:gtt,transactionType:htt,source:ytt,noTransactions:vtt,noTransactionsDescription:btt,ledgerEntries:xtt,time:$tt,type:wtt,amount:ktt,balance:Ctt,noGrants:Stt,noGrantsDescription:Att,status:Ttt,topupBanner:Rtt,compliance:Ptt,receipts:_tt,openingPortal:jtt,portalFailed:Ntt,recentTopups:Dtt,alerts:Mtt,history:Ett,lowBalanceWarning:Itt,lowBalanceWarningNoAutoTopup:Ott,ledgerDesc:Ltt,earmarked:Utt,paymentMethod:Btt,redeemCard:Ftt},qtt="Diagramm konnte nicht geladen werden",Htt="Keine Daten",Vtt="Es gibt noch nichts zu visualisieren.",Ktt={errorTitle:qtt,emptyTitle:Htt,emptyDescription:Vtt},Gtt={copy:"Kopieren",regenerate:"Neu generieren",shareComingSoon:"Teilen (bald verfügbar)",download:"Herunterladen",copyLink:"Link kopieren",newChat:"Neuer Chat",deleteChat:"Chat löschen",openConversationList:"Konversationsliste öffnen",openSettings:"Chat-Einstellungen",collapseSidebar:"Seitenleiste einklappen",expandSidebar:"Seitenleiste ausklappen",cancel:"Abbrechen",apply:"Anwenden",newChatTooltip:"Neuen Chat erstellen",copied:"Kopiert"},Wtt={placeholderReady:"Neue Konversation starten...",placeholderNoModel:"Wählen Sie zuerst oben ein Modell aus",attachmentTooLarge:"Die Datei ist größer als {{limit}} und kann nicht hochgeladen werden",attachmentUnsupported:"Nicht unterstützter Dateityp. Verwende PNG, JPEG, WebP, GIF, MP4, WebM oder MOV.",unsupportedVision:"Dieses Modell akzeptiert keine Bild- oder Videoeingaben. Wechsle das Modell, bevor du Dateien ablegst.",send:"Senden",abort:"Stoppen",attachImage:"Bild hinzufügen",attachMedia:"Bild oder Video hinzufügen",removeAttachment:"Entfernen",shortcutSend:"senden",shortcutNewLine:"neue Zeile",shortcutAbort:"stoppen",frameFirst:"Erstes Bild",frameLast:"Letztes Bild",frameReference:"Referenz",imageMode:"Bildgenerierung",videoMode:"Videogenerierung",placeholderComingSoon:"This model is coming soon — pick another one above",reasoning:"Denken",reasoningOff:"Aus",reasoningAlways:"Immer aktiv",placeholderTopupRequired:"Dieses Modell ist Konten mit Aufladung vorbehalten – laden Sie auf, um es hier zu nutzen"},Ytt={modelUnavailable:"Das Modell {{model}} ist derzeit nicht verfügbar. Ihr Prompt wurde trotzdem gespeichert.",rateLimited:"Zu viele gleichzeitige Anfragen. Versuchen Sie es gleich noch einmal.",accountDisabled:"Dieses Konto ist deaktiviert und kann den Chat nicht fortsetzen.",attachmentsUploading:"Bilder werden noch hochgeladen. Bitte kurz warten, bevor du sendest.",attachmentsFailed:"Ein Bild konnte nicht hochgeladen werden. Entferne es und versuche es erneut, bevor du sendest."},Qtt={title:"Testen Sie hier jedes beliebige Modell.",body:"Chatten Sie direkt mit jedem Modell. Die Nutzung wird Ihrem PAYG-Wallet belastet.",starters:{compareModels:"GPT-5.5 und Claude Opus mit derselben Coding-Aufgabe vergleichen",analyzeImage:"Ein Architekturdiagramm analysieren und die Risiken zusammenfassen",draftPrompt:"Einen System-Prompt für einen Support-Agenten entwerfen",generateImage:"Ein Produkt-Hero-Bild in einem klaren SaaS-Stil generieren"}},Xtt={untitled:"Unbenannter Chat",deleteConfirm:'"{{title}}" löschen?',emptyTitle:"Noch keine Konversationen",emptyBody:"Starten Sie oben mit + Neuer Chat.",listLabel:"Konversationsliste",groups:{today:"Heute",yesterday:"Gestern",earlier:"Früher"},menu:{rename:"Umbenennen",delete:"Löschen"},deleteTitle:"Unterhaltung löschen?"},Ztt={paygWallet:"PAYG-Wallet"},Jtt={chooseModel:"Modell auswählen",searchPlaceholder:"Modelle suchen...",emptyTitle:"Keine Modelle gefunden",emptyBody:"Versuchen Sie einen anderen Suchbegriff oder Tab.",protocols:"{{count}} Protokolle",context:"{{value}} ctx",tabs:{all:"Alle",text:"Text",image:"Bild",video:"Video"},maxOut:"Ausgabe {{value}}",unavailable:"Vorübergehend nicht verfügbar",requiresTopup:"Zum Freischalten aufladen"},ent={title:"Chat-Einstellungen",protocol:"Protokoll",unlimited:"Unbegrenzt",fields:{memory_limit:{label:"Chat-Speicher"},temperature:{label:"Temperature"},top_p:{label:"Top P"},max_tokens:{label:"Max. tokens",placeholder:"128000"},service_tier:{label:"Service-Stufe",options:{standard:"Standard",priority:"Priorität",flex:"Flex"}},thinking_budget:{label:"Thinking Budget (tokens)",placeholder:"z. B. 2000"},stop_sequences:{label:"Stop Sequences",placeholder:"Durch Kommas getrennt, z. B. END, STOP",itemLabel:"Stop"},system_prompt:{label:"System Prompt",placeholder:"System-Prompt eingeben..."},prompt_cache_mode:{label:"Prompt Cache",options:{implicit:"Implizit",explicit:"Explizit"}},image_size:{label:"Bildauflösung"},image_resolution:{label:"Auflösung"},image_quality:{label:"Bildqualität",options:{Auto:"Auto",auto:"Auto",low:"Niedrig",medium:"Mittel",high:"Hoch"}},video_ratio:{label:"Seitenverhältnis"},video_resolution:{label:"Videoauflösung"},video_duration_seconds:{label:"Dauer"},tools:{label:"Tools (JSON)",placeholder:'[{ "type": "function", "function": { ... } }]'},image_count:{label:"Bildanzahl"},image_aspect_ratio:{label:"Seitenverhältnis"},reasoning_effort:{label:"Reasoning-Aufwand",options:{none:"Aus",minimal:"Minimal",low:"Niedrig",medium:"Mittel",high:"Hoch",xhigh:"Sehr hoch",max:"Maximal"}},reasoning_pro:{label:"Pro-Modus"},reasoning_context:{label:"Reasoning-Kontext",options:{auto:"Auto",current_turn:"Aktueller Turn",all_turns:"Alle Turns"}},reasoning_enabled:{label:"Denken"},reasoning_always:{label:"Denken",value:"Immer aktiv"}}},tnt={estimating:"wird geschätzt...",settling:"wird abgerechnet...",input:"ein",output:"aus",milliseconds:"ms",realCost:"Tatsächliche Kosten",latency:"Latenz",logDetail:"Logdetails"},nnt={copied:"Bildlink kopiert",expired:"Der Bildlink ist abgelaufen. Kopieren Sie den Link, um ihn erneut zu öffnen, oder generieren Sie neu.",attachment:"[Bildanhang]"},ant={message:"Dieser Chat wird Ihrem PAYG-Wallet berechnet",balance:"Guthaben",billingLink:"Abrechnung",dismiss:"Ausblenden"},ont={badge:"Earmarked {{amount}}",bannerTitle:"Earmarked credit available",bannerBody:"You have {{amount}} of dedicated credit for this model — it's used first."}
771,snt={trigger:"Als Code kopieren",copied:"Als {{format}} kopiert",failed:"Kopieren fehlgeschlagen",failedDescription:"Die Zwischenablage-Berechtigung kann vom Browser blockiert sein."},rnt={interrupted:"[Unterbrochen]",sending:"wird gesendet"},int={title:"Denkprozess",duration:"{{seconds}}s nachgedacht"},lnt={title:"Videogenerierung ist bald verfügbar",body:"Dieses Modell wird zur Entdeckung gelistet, aber das Senden von Videos ist noch nicht aktiviert.",switchToText:"Zu einem Textmodell wechseln"},cnt={imageGenerating:"Bild wird generiert",videoGenerating:"Video wird generiert",stage:{queued:"In Warteschlange",routing:"Routing",generating:"Generierung",storing:"Speicherung",settling:"Abrechnung"}},dnt={INSUFFICIENT_CREDITS:"Guthaben unzureichend",RATE_LIMITED:"Zu viele Anfragen",rate_limit_error:"Zu viele Anfragen",MODEL_NO_VISION:"Dieses Modell unterstützt keine Bildeingabe",CONTENT_REFUSED:"Das Modell hat diese Anfrage abgelehnt",EMPTY_RESPONSE:"Das Modell hat eine leere Antwort zurückgegeben",upstream_error:"Fehler des Upstream-Dienstes",overloaded_error:"Upstream-Dienst ist ausgelastet",upstream_invalid_json:"Fehlerhafte Upstream-Antwort",stream_read_error:"Antwort-Stream unterbrochen",invalid_api_key:"Upstream-Authentifizierung fehlgeschlagen",model_unavailable:"Modell vorübergehend nicht verfügbar",no_image:"Es wurde kein Bild generiert",no_body:"Keine Antwort vom Upstream-Dienst",http_error:"Anfrage fehlgeschlagen",session_create_failed:"Sitzung konnte nicht erstellt werden"},unt={title:"Laden Sie auf, um dieses Modell freizuschalten",body:"Es steht Konten mit Aufladung offen. Jeder Betrag schaltet es sofort frei, das Guthaben wird weiterhin nutzungsbasiert abgerechnet.",cta:"Aufladen"},mnt={actions:Gtt,composer:Wtt,errors:Ytt,empty:Qtt,sidebar:Xtt,header:Ztt,modelSelector:Jtt,settings:ent,metrics:tnt,image:nnt,payg:ant,earmark:ont,copyAsCode:snt,status:rnt,thinking:int,video:lnt,media:cnt,errorCodes:dnt,topupLock:unt},pnt="Wird geladen...",fnt="Konto",gnt="Sprache",hnt="Anmelden",ynt="Abmelden",vnt="Abmeldung läuft...",bnt="Änderungen speichern",xnt="Speichern...",$nt="Gespeichert.",wnt="Zurück",knt="Erneut versuchen",Cnt="5% Rabatt auf die Servicegebühr beim Aufladen.",Snt="Speichern",Ant="Abbrechen",Tnt="Löschen",Rnt="Zurücksetzen",Pnt="Kopiert",_nt="Kopieren fehlgeschlagen",jnt="Schließen",Nnt="Gesamt",Dnt={timestamp:"Zeitstempel",local:"Lokalzeit",relative:"Relativ"},Mnt="Kopieren",Ent={title:"Im Browser öffnen",description:"Du siehst diese Seite in einem <b>In-App-Browser</b>, in dem <b>Google-Anmeldung und die Mensch-Verifizierung nicht funktionieren</b>. Bitte öffne sie in deinem Systembrowser, um fortzufahren.",hintWechat:"Tippe oben rechts auf das Menü ··· und wähle „Im Browser öffnen“.",hintGeneric:"Wähle über das Menü oben rechts „Im Browser / Safari öffnen“.",copyLink:"Link kopieren",continueAnyway:"Trotzdem fortfahren"},Int="Alle",Ont="Aktiv",Lnt="Nicht gesetzt",Unt="Entfernen",Bnt={loading:pnt,account:fnt,language:gnt,signIn:hnt,signOut:ynt,signingOut:vnt,saveChanges:bnt,saving:xnt,saved:$nt,back:wnt,retry:knt,topUpPromo:Cnt,save:Snt,cancel:Ant,clearAll:Tnt,reset:Rnt,copied:Pnt,copyFailed:_nt,dismiss:jnt,total:Nnt,time:Dnt,copy:Mnt,inAppBrowser:Ent,all:Int,active:Ont,optional:Lnt,remove:Unt},Fnt="Dashboard",znt="Überwache Credits, Nutzung und gateway-Zustand in einer Konsole.",qnt="API key erstellen",Hnt={creditBalance:"Credit-Guthaben",requestsToday:"Requests heute",activeApiKeys:"Aktive API keys"},Vnt={title:"Nutzungstrend",description:"Requests und abgerechneter credit der letzten 14 Tage.",viewUsage:"Nutzung ansehen",loading:"Nutzungstrend wird geladen",empty:"Noch keine Nutzung",emptyDescription:"Nutzung erscheint hier, sobald Requests eingehen."},Knt={title:"Credit-Aktivität",description:"Täglich abgerechneter credit der letzten 90 Tage.",total:"90-Tage-Summe",loading:"Aktivität wird geladen",activeDays:"{{count}} aktive Tage in den letzten {{days}} Tagen",less:"Weniger",more:"Mehr"},Gnt={title:"Nutzungsmix",description:"Kompakte Sicht auf Ausgabenintensität, Token-Volumen und das Modell mit der meisten Nutzung.",activeDays:"Aktive Tage",ofDays:"von {{days}} Tagen",avgDailyCredit:"Ø credit pro Tag",nonZeroDays:"an aktiven Tagen",peakDay:"Spitzentag",noPeak:"Noch keine Nutzung",tokens:"Tokens",topModel:"Top-Modell",creditShare:"Anteil am abgerechneten credit"},Wnt={title:"Schnellstatus",requests7d:"7-Tage-Requests",creditToday:"Heute verbrauchter credit",credit7d:"7-Tage-credit-Verbrauch"},Ynt={title:"Letzte Requests",description:"Aktuelle gateway-Aufrufe über deine keys.",viewRecords:"Records ansehen",table:{label:"Letzte Requests",model:"Modell",status:"Status",tokens:"Tokens",credit:"Credit",time:"Zeit",apiKey:"API key"}
771,empty:"Noch keine Requests",emptyDescription:"Erstelle einen API key, sende einen Request, und letzte Aufrufe erscheinen hier."},Qnt={title:"Ersten Request senden",description:"OpenAI-kompatibel. Erstelle einen key, setze {{env}} und rufe dann das gateway auf."},Xnt={credit:"Credit",requests:"Requests"},Znt={title:Fnt,description:znt,createApiKey:qnt,cards:Hnt,usageTrend:Vnt,activity:Knt,usageMix:Gnt,quickHealth:Wnt,recent:Ynt,firstRequest:Qnt,tooltip:Xnt},Jnt="Alle Zeilen auswählen",eat="Zeile {{row}} auswählen",tat="Laden fehlgeschlagen",nat="Keine Daten",aat="Es gibt keine anzuzeigenden Datensätze.",oat="Weitere Details",sat="{{count}} weitere Details",rat="Details öffnen",iat={selectAllRows:Jnt,selectRow:eat,errorTitle:tat,emptyTitle:nat,emptyDescription:aat,moreDetails:oat,moreDetailsWithCount:sat,openRow:rat},lat="Letzte 1 Stunde",cat="Heute",dat="Gestern",uat="Letzte 7 Tage",mat="Letzte 30 Tage",pat="Dieser Monat",fat="Nach Monat",gat="Benutzerdefiniert",hat="Gesamter Zeitraum",yat="Datum auswählen",vat="Abbrechen",bat="Anwenden",xat="Das Startdatum muss vor dem Enddatum liegen.",$at="Zeitraum-Vorlagen",wat="Vorheriger Monat",kat="Nächster Monat",Cat={last1h:lat,today:cat,yesterday:dat,last7d:uat,last30d:mat,thisMonth:pat,byMonth:fat,custom:gat,all:hat,selectDate:yat,cancel:vat,apply:bat,reversedError:xat,presetsAriaLabel:$at,previousMonth:wat,nextMonth:kat},Sat="Konto nicht verfügbar",Aat="Konto wird initialisiert",Tat={title:"Konto gesperrt",description:"Dieses Konto kann sich weiterhin anmelden, aber Konsolenzugriff und Gateway-Anfragen sind pausiert.",detail:"Wenn das unerwartet ist, kontaktiere support über die E-Mail-Adresse dieses Kontos."},Rat={accountUnavailable:Sat,accountInitializing:Aat,accountRestricted:Tat},Pat="Kostenlose Tokens",_at="Tägliches Kontingent kostenloser Tokens für ausgewählte Modelle – es wird automatisch aufgefüllt. Es wird nichts von deinem Guthaben abgebucht.",jat="Dein Kontingent an kostenlosen Tokens konnte nicht geladen werden.",Nat="Alle Modelle",Dat="Aktion endet am {{date}}",Mat={daily:"Täglich",weekly:"Wöchentlich"},Eat={daily:"Wird täglich aufgefüllt",weekly:"Wird wöchentlich aufgefüllt",localTime:"deine Ortszeit {{time}}",countdown:"nächste Auffüllung in {{duration}}",refreshingSoon:"wird bald aufgefüllt"},Iat={title:"Keine aktiven Aktionen für kostenlose Tokens",description:"Wenn eine Aktion für kostenlose Tokens läuft, wird dein tägliches Kontingent hier angezeigt."},Oat={title:"Die Vergabe kostenloser Tokens ist für dein Konto pausiert",body:"Dieses Konto sieht nach einem Muster für Massenregistrierungen aus, daher ist die kostenlose Vergabe vorerst pausiert. Falls das ein Fehler ist, melde dich unter"},Lat="Tokens",Uat="Heute noch {{value}} Tokens übrig",Bat={label:"E-Mail bei Aufbrauchen",hint:"Erhalte eine E-Mail, wenn deine kostenlosen Tokens für heute aufgebraucht sind."},Fat={crg_freetoken_daily_cn5:"Chinesische Modelle · tägliche Gratis-Tokens"},zat={title:Pat,description:_at,loadFailed:jat,allModels:Nat,campaignEnds:Dat,cadence:Mat,refresh:Eat,empty:Iat,paused:Oat,tokensUnit:Lat,remainingToday:Uat,emailToggle:Bat,campaigns:Fat},qat="Protokolle",Hat="Prüfe Kosten, Latenz, tokens, Status und routing-Signale pro Request.",Vat={copiedCurl:"curl kopiert",copiedId:"Request-ID kopiert",copyCurl:"Als curl kopieren",copyFailed:"Kopieren fehlgeschlagen",copyId:"Request-ID kopieren",menu:"Zeilenaktionen",openTab:"In neuem Tab öffnen"},Kat={prompt:"Prompt",ratio:"Trefferquote",read:"Cache-Lesezugriff",title:"Cache-Trefferquote"},Gat={confirm:"Job abbrechen",failed:"Job konnte nicht abgebrochen werden",keep:"Behalten",message:"Dieser Job befindet sich noch in der Warteschlange. Abbrechen verhindert die Verarbeitung; es wird nichts berechnet.",success:"Job abgebrochen",title:"Job abbrechen?",pending:"Wird abgebrochen..."},Wat={cacheHit:"Cache-Treffer",cost:"Kosten",ip:"IP",latency:"Latenz",model:"Modell",source:"Quelle",status:"Status",stream:"Streaming",time:"Zeit",tokens:"Tokens",tps:"Throughput"},Yat={trigger:"Spalteneinstellungen"},Qat={body:"Sende einen Request über OneHop, dann erscheint er hier.",title:"Keine Logs in diesem Zeitraum"},Xat={all:"Alle",apiKey:"API key",cost:"Kosten (USD)",desktopDateRangeAria:"Datumsbereich auf Desktop auswählen",finishReason:"Beendigungsgrund",latency:"Latenz (s)",max:"Max.",min:"Min.",mobileDateRangeAria:"Datumsbereich auf Mobilgerät auswählen",model:"Modell",modelsSelected:"{{count}} ausgewählt",more:"Weitere Filter",refresh:"Aktualisieren",request:"Nach Request-ID suchen",requestIdLabel:"Request-ID",status:"Status",stream
771:"Streaming",time:"Zeit",type:"Typ",mobileTitle:"Filter"},Zat={requests:"Requests auf dieser Seite",times:"Zeiten angezeigt in"},Jat={rowsPer:"Zeilen"},eot={all:"Gesamter Zeitraum",custom:"Benutzerdefiniert",last1h:"Letzte 1 Stunde",last30d:"Letzte 30 Tage",last7d:"Letzte 7 Tage",thisMonth:"Dieser Monat",today:"Heute",yesterday:"Gestern"},tot={title:"Client",unknown:"Kein user-agent gemeldet",unknownShort:"Unbekannt"},not={output:"Ausgabe-tokens",rate:"Rate",title:"Throughput",window:"Generierungsfenster"},aot={title:"Request",openDetail:"Request-Details öffnen",copy:"ID kopieren",copied:"Kopiert",copyFailed:"Kopieren fehlgeschlagen",close:"Schließen",loading:"Wird geladen…",response:"Antwort",sections:{request:"Request",routing:"Routing",tokens:"Tokens",cost:"Kostenaufschlüsselung",performance:"Performance",error:"Fehler",outcome:"Ergebnis",multimodal:"Multimodalität"},fields:{requestId:"Request-ID",time:"Zeit",apiKey:"API key",userAgent:"User-Agent",billingMode:"Abrechnungsmodus",onehopModel:"OneHop-Modell",endpoint:"Endpoint",firstToken:"Erster token",total:"Gesamtdauer",throughput:"Throughput",stream:"Streaming",clientIp:"Client-IP",finishReason:"Beendigungsgrund",mediaType:"Medientyp",imageCount:"Bilder",imageSize:"Größe",errorCode:"Fehlercode",errorMessage:"Nachricht",requestedModel:"Angefordertes Modell"},billingMode:{token:"Pro token",per_request:"Pro Request",image:"Pro Bild"},timeline:{heading:"Lebenszyklus",received:"Request empfangen",routed:"Geroutet",failed:"Fehlgeschlagen",generated:"Generiert",metered:"Gemessen",billed:"Abgerechnet"},downloadMedia:"Herunterladen"},oot={success:"erfolgreich",completed:"abgeschlossen",failed:"fehlgeschlagen",pending:"ausstehend",repairing:"repariert",queued:"in Warteschlange",running:"läuft",cancelled:"abgebrochen",expired:"abgelaufen"},sot={chat:"Chat",image:"Bild",video:"Video"},rot={stop:"Stop",length:"Längenlimit",tool_calls:"Tool-Aufrufe",content_filter:"Content-Filter",error:"Fehler"},iot={true:"Streaming",false:"Kein Streaming"},lot={title:"Kostenaufschlüsselung"},cot={title:"Token-Aufschlüsselung",prompt:"Eingabe",completion:"Ausgabe",imageOutput:"Bild-Ausgabe-Tokens",cacheRead:"Cache-Lesezugriff",cacheWrite:"Cache-Schreibzugriff",cacheWrite5m:"Cache-Schreibzugriff 5m",cacheWrite1h:"Cache-Schreibzugriff 1h",total:"Gesamt"},dot={timestamp:"Zeitstempel",local:"Lokalzeit",relative:"Relativ"},uot={inputCost:"Input-Kosten",outputCost:"Output-Kosten",cacheReadCost:"Cache-Lesekosten",cacheWriteCost:"Cache-Schreibkosten",inputPrice:"Input-Preis",outputPrice:"Output-Preis",total:"Gesamt",officialPrice:"Offizieller Preis",saved:"Ersparnis",factor:{textInput:"Text-Eingabe",textOutput:"Text-Ausgabe",imageInput:"Bild-Eingabe",imageOutput:"Bild-Ausgabe",perCallImage:"Pro Bild",videoPerSecond:"Video",videoPerCall:"Video",cacheRead:"Cache-Lesen",cacheWrite:"Cache-Schreiben",cacheWrite5m:"Cache-Schreiben (5m)",cacheWrite1h:"Cache-Schreiben (1h)"},unit:{per1mTokens:"/ 1M Tokens",perImage:"/ Bild",perSecond:"/ Sek.",perCall:"/ Aufruf"},promoBasis:"Vor Aktion",promoSaved:"Aktionsrabatt",freeCovered:"Freikontingent ({{tokens}} Tokens)",freeCoveredNoCount:"Freikontingent"},mot={noPreview:"Keine Vorschau verfügbar",video:"Video"},pot={free:"Kostenlos"},fot={title:qat,description:Hat,actions:Vat,cacheHit:Kat,cancelJob:Gat,col:Wat,columns:Yat,empty:Qat,filter:Xat,meta:Zat,pager:Jat,range:eot,source:tot,tps:not,drawer:aot,status:oot,type:sot,finishReason:rot,stream:iot,costBreakdown:lot,tokensBreakdown:cot,time:dot,userCost:uot,export:{label:"CSV exportieren",exporting:"Exportiert…",done:"{{n}} Zeilen exportiert.",truncated:"Die ersten {{n}} Zeilen wurden exportiert. Grenze den Zeitraum ein, um den Rest zu exportieren.",failed:"Export fehlgeschlagen. Bitte versuche es erneut."},media:mot,cost:pot},got="Modelle",hot="Durchsuche alle verfügbaren Modelle, Kontextlängen, Eingabe-/Ausgabepreise und Fähigkeiten, und favorisiere deine meistgenutzten Modelle.",yot={all:"Alle",favorites:"Meine Favoriten",benefit:"Vorteil",hot:"Beliebt",free:"Free"},vot={capability:"Typ",allCapabilities:"Alle Typen",capability_text:"Text",capability_image:"Bild",capability_audio:"Audio",capability_video:"Video",provider:"Anbieter",allProviders:"Alle Anbieter",protocol:"Protokoll",allProtocols:"Alle Protokolle",sort:"Sortieren",search:"Suchen",searchPlaceholder:"Modell / Anbieter",allContexts:"Beliebige Länge",context:"Kontext",mobileTitle:"Filter"},bot="Empfohlen",xot="Neueste",$ot="Top der Woche",wot="Name (A-Z)",kot="Preis (aufsteigend)",Cot="Preis (absteigend)",Sot="Kontextlänge",Aot="Latenz",Tot="Durchsatz",Rot="OpenAI Chat",Pot="OpenAI Responses",_ot="Anthropic",jot="Vertex AI",Not="OpenAI Images",Dot="OpenAI Video",Mot={label:"Modelle",model:"Modell",provider:"Anbieter",capabilities:"Fähigkeiten",context:"Kontext",price:"Preis",discount:"Rabatt",action:"Aktion",tryIt:"Ausprobieren",type:"Typ",maxOutput:"Max. Ausgabe",copyId:"Modell-ID kopieren",copied:"Kopiert",usage:"Nutzung",stability:"Stabilität",protocols:"Protokolle",openDetail:"Open model detail"},Eot="Beliebt",Iot="Vorteil",Oot={add:"Favorit hinzufügen",remove:"Favorit entfernen"},Lot={favorites:"Noch keine Favoriten",noMatch:"Keine passenden Modelle"},Uot="Text",Bot="Bild",Fot="Datei",zot="Video",qot="Audio",Hot="Embeddings",Vot="Vision",Kot="Tool-Aufrufe",Got="JSON-Modus",Wot="Bildgenerierung",Yot="Bildbearbeitung",Qot="Text",Xot="Bild",Zot="Video",Jot="Audio",est="Embedding",tst="Offiziell",nst="Kiro",ast="ab",ost="/ Aufruf",sst="/ Sek.",rst="/ 1M",ist="Schnell",lst="Free",cst="Coming Soon",dst="Free",ust={ariaLabel:"Preiswährung",usd:"USD",rmb:"Yuan (¥)",settlement:"Preise in Yuan zum festen Kurs {{rate}} umgerechnet, nur als Richtwert; deine Abrechnung erfolgt stets in USD nach tatsächlicher Nutzung."},mst="Aufladung nötig",pst={title:got,description:hot,tabs:yot,filters:vot,sort_featured:bot,sort_newest:xot,sort_top_weekly:$ot,sort_name:wot,sort_price_asc:kot,sort_price_desc:Cot,sort_context:Sot,sort_latency:Aot,
771sort_throughput:Tot,protocol_openai_chat:Rot,protocol_openai_responses:Pot,protocol_anthropic_messages:_ot,protocol_google_vertex_ai:jot,protocol_openai_images:Not,protocol_openai_sora:Dot,table:Mot,badge_hot:Eot,badge_benefit:Iot,favorite:Oot,empty:Lot,modality_text:Uot,modality_image:Bot,modality_file:Fot,modality_video:zot,modality_audio:qot,modality_embeddings:Hot,capability_vision:Vot,capability_tool_calling:Kot,capability_json_mode:Got,capability_image_generation:Wot,capability_image_edit:Yot,type_text:Qot,type_image:Xot,type_video:Zot,type_audio:Jot,type_embedding:est,provider_official:tst,provider_kiro:nst,price_from:ast,price_perCall:ost,price_perSec:sst,price_per1m:rst,price_fast:ist,badge_free:lst,badge_unavailable:cst,price_free:dst,currency:ust,badge_requiresTopup:mst},fst={main:"Hauptnavigation",utility:"Werkzeugnavigation",console:"Konsolen-Navigation",openNavigation:"Navigation öffnen",collapse:"Seitenleiste einklappen",expand:"Seitenleiste ausklappen"},gst={platform:"Konsole",chat:"Chat",models:"Modelle",logs:"Protokolle",jobs:"Jobs",apiKeys:"API keys",usage:"Nutzung",billing:"Abrechnung",freeTokens:"Kostenlose Tokens",referrals:"Einladungen",settings:"Einstellungen",admin:"Admin",balance:"Guthaben",helpSupport:"Hilfe & Support",announcements:"Ankündigungen",announcementsTitle:"Ankündigungen",announcementsEmpty:"Noch keine Ankündigungen. Schau bald wieder vorbei.",announcementsTicketUnread:"{{count}} Ticket(s) mit neuen Antworten",support:"Support-Tickets",tasks:"Aufgaben",tagNew:"NEU"},hst={staff:"Team"},yst={dashboard:"Übersicht",users:"Benutzer",billing:"Plattformabrechnung",usage:"Plattformnutzung",rateLimits:"Rate Limits",access:"Zugriff",staff:"Admins",growth:"Wachstum",models:"Modelle",announcements:"Ankündigungen",upstream:"Upstream",auditLogs:"Audit-Logs",webhooks:"Webhooks",support:"Support",campaigns:"Campaigns",domainRules:"Email domains"},vst={title:"Notifications",markAllRead:"Mark all read",loading:"Loading…",emptyTitle:"You're all caught up",emptyBody:"New notifications will show up here."},bst={aria:fst,public:{models:"Modelle",pricing:"Preise",docs:"Doku",blog:"Blog",changelog:"Versionshinweise"},console:gst,adminGroups:hst,admin:yst,notifications:vst},xst={back:"Zurück",done:"Fertig",next:"Weiter",stepOf:"{{current}} / {{total}}"},$st={balance:{body:"Lade nach Bedarf auf. Nicht verbrauchtes Guthaben ist jederzeit erstattbar.",title:"Dein Guthaben"},keys:{body:"Erstelle hier eine key und richte jedes Tool auf OneHop aus.",title:"Erstelle deine erste API key"},models:{body:"Sieh alle aufrufbaren Modelle und ihre Preise auf einer Seite.",cta:"Modelle öffnen",title:"Modelle ansehen"}},wst={body:"Ein URL für alle Modelle. In 30 Sekunden zeigen wir dir drei Dinge.",skip:"Überspringen",start:"Starten",title:"Willkommen bei OneHop"},kst={nav:xst,steps:$st,welcome:wst},Cst="Failed to load",Sst="Nothing here yet.",Ast="Weitere Details",Tst={failedLoad:Cst,emptyDescription:Sst,moreDetails:Ast},Rst="Alle",Pst="Erfolgreich",_st="Ausstehend",jst="Wird repariert",Nst="Fehlgeschlagen",Dst="Erstattet",Mst="Aktiv",Est="Deaktiviert",Ist="Aufgebraucht",Ost="Reserviert",Lst="Eingelöst",Ust="Gesperrt",Bst="Gelöscht",Fst="Normal",zst="Unter Beobachtung",qst="Blockiert",Hst="Gewährt",Vst="Zurückgebucht",Kst="Abgelaufen",Gst="Abgelehnt",Wst="Entwurf",Yst="Veröffentlicht",Qst="Veraltet",Xst="Archiviert",Zst="Ausgeblendet",Jst="Erstellt",ert="Checkout geöffnet",trt="Bezahlt",nrt="Abgebrochen",art="OpenAI Chat",ort="OpenAI Responses",srt="Anthropic Messages",rrt="Google Vertex AI",irt="OpenAI Images",lrt="Nutzungsgebühr",crt="Signup-Bonus",drt="Promo-Bonus",urt="Referral-Bonus",mrt="Kompensationsbonus",prt="Top-up-Bonus",frt="Manuelle Anpassung",grt="Credit-Kauf",hrt="Zahlung",yrt="Signup-Bonus",vrt="Coupon",brt="Admin-Gutschrift",xrt="API-Nutzung",$rt="Signup-Bonus",wrt="Manuelle Gutschrift",krt="Sync",Crt="Streaming",Srt="Token billing",Art="Request billing",Trt="Image billing",Rrt="Low reasoning",Prt="Medium reasoning",_rt="High reasoning",jrt="Nicht anwendbar",Nrt="Unbekannt",Drt="Eingefroren",Mrt="Freigegeben",Ert="Storniert",Irt="Teilweise zurückgebucht",Ort="Übersprungen",Lrt={all:Rst,success:Pst,pending:_st,repairing:jst,failed:Nst,refunded:Dst,active:Mst,disabled:Est,exhausted:Ist,reserved:Ost,redeemed:Lst,suspended:Ust,deleted:Bst,normal:Fst,watchlisted:zst,blocked:qst,granted:Hst,reversed:Vst,expired:Kst,denied:Gst,draft:Wst,published:Yst,deprecated:Qst,archived:Xst,public:"Öffentlich",hidden:Zst,created:Jst,checkout_opened:ert,paid:trt,canceled:nrt,openai_chat:art,openai_responses:ort,anthropic_messages:srt,google_vertex_ai:rrt,openai_images:irt,usage_charge:lrt,bonus_signup_grant:crt,bonus_promo_grant:drt,bonus_referral_grant:urt,bonus_compensation_grant:mrt,bonus_topup_grant:prt,manual_adjustment:frt,credit_purchase:grt,payment:hrt,signup:yrt,coupon:vrt,admin:brt,api:xrt,signup_bonus:$rt,manual:wrt,sync:krt,stream:Crt,token:Srt,request:Art,image:Trt,low:Rrt,medium:Prt,high:_rt,not_applicable:jrt,unknown:Nrt,frozen:Drt,released:Mrt,cancelled:Ert,partially_reversed:Irt,skipped:Ort},Urt="{{count}} pro Seite",Brt="Insgesamt {{count}}",Frt={perPage:Urt,total:Brt},zrt="Einladen & verdienen",qrt="Teile deinen persönlichen Link. Sobald eingeladene Nutzer aufladen, wird die Vergütung für beide Seiten klar erfasst.",Hrt="Einladungsdaten konnten nicht geladen werden",Vrt="Dein Einladungslink",Krt="Teilen",Grt="Einladung kopiert. Füge sie in WeChat ein, um sie zu teilen.",Wrt="Kopieren",Yrt="Kopiert",Qrt="WeChat",Xrt="X",Zrt="Telegram",Jrt="Reddit",eit="LinkedIn",tit="WhatsApp",nit="E-Mail",ait="Facebook",oit={default:{title:"Alle AI-Modelle über eine OneHop API aufrufen",body:"Registriere dich über meinen Einladungslink. Wenn du innerhalb von {{firstWindowDays}} Tagen erstmals auflädst, erhalten wir beide {{percent}}% zurück."},x:{title:"Eine API für jedes AI-Modell 🤖",body:"Lade innerhalb von {{firstWindowDays}} Tagen über meinen Link erstmals auf und wir bekommen beide {{percent}}% zurück. 🚀"},telegram:{title:"Mit OneHop alle AI-Modelle nutzen",body:"Nutze meinen Einladungslink. Deine erste Aufladung innerhalb von {{firstWindowDays}} Tagen bringt uns beiden {{percent}}% Empfehlungsguthaben."},whatsapp:{title:"Alle AI-Modelle nutzen — mit OneHop",body:"Mach über meinen Einladungslink mit. Lade innerhalb von {{firstWindowDays}} Tagen erstmals auf und wir bekommen beide {{percent}}% zurück."},reddit:{title:"OneHop — eine API für jedes AI-Modell. Über meinen Einladungslink bekommen wir beide {{percent}}% auf deine erste Aufladung zurück",body:"Lade innerhalb von {{firstWindowDays}} Tagen erstmals auf und wir erhalten beide {{percent}}% Empfehlungsguthaben."},email:{title:"Einladung zu OneHop — alle AI-Modelle über eine API",body:`Hallo,
772
773ich nutze OneHop, um alle wichtigen AI-Modelle über eine einzige API aufzurufen. Wenn du dich über meinen Einladungslink registrierst und deine erste Aufladung machst, erhalten wir beide Empfehlungsguthaben.
774
775Reward-Stufen: {{tiers}}.
776
777Danke!`},wechat:{title:"OneHop — alle AI-Modelle über eine API",body:"Registriere dich über meinen Einladungslink. Wenn du innerhalb von {{firstWindowDays}} Tagen erstmals auflädst, erhalten wir beide {{percent}}% Empfehlungsguthaben."}}
777,sit="Die Vergütung ist sofort nach der Zahlung sichtbar, wird aber zunächst eingefroren, um das Rückerstattungsfenster abzudecken, und nach Ablauf als OneHop-Empfehlungs-Credit freigegeben.",rit="Freigabe in {{days}} Tagen.",iit={referrer:"Einladende Person",referee:"Eingeladene Person"},lit={referrer:": Du erhältst Empfehlungs-Credit, wenn jemand, den du eingeladen hast, auflädt — {{tiers}}.",referee:": Registriere dich über den Link und lade auf, um ebenfalls zu profitieren — {{tiers}}."},cit={dayRange:"Tag {{fromDay}}-{{untilDay}}",dayOpenEnded:"ab Tag {{fromDay}}"},dit="Insgesamt verdient",uit="Freigegebene Empfehlungsvergütung",mit="Eingefrorene Empfehlungsvergütung",pit="Eingeladene Personen",fit="Gültige Einladungen",git="Freigegebene Einladungsprämie",hit="Eingefrorene Einladungsprämie",yit="Storniert / zurückgebucht",vit="Von dir eingeladene Personen",bit="Vergütungsdetails",xit={user:"Nutzer",joined:"Registriert am",topups:"Aufladungen",earned:"Dein Verdienst",frozen:"Eingefroren",date:"Zeitpunkt",event:"Ereignis",topupAmount:"Aufladung der anderen Person",rate:"Anteil",releaseAt:"Freigabezeitpunkt",cashback:"Vergütung",status:"Status"},$it={title:"Noch keine Einladungen",description:"Teile deinen Link, um mit dem Verdienen zu beginnen."},wit={inviteeSignedUp:"Eingeladene Person erfolgreich registriert",youSignedUp:"Du hast dich über eine Einladung erfolgreich registriert",inviteePaid:"Eingeladene Person hat erfolgreich verbraucht",youPaid:"Du hast als eingeladene Person erfolgreich verbraucht"},kit={frozen:"Eingefroren",released:"Freigegeben",cancelled:"Storniert",partially_reversed:"Teilweise zurückgebucht",reversed:"Zurückgebucht",failed:"Fehlgeschlagen",skipped:"Übersprungen"},Cit={title:zrt,description:qrt,error:Hrt,yourLink:Vrt,shareVia:Krt,wechatCopied:Grt,copy:Wrt,copied:Yrt,wechat:Qrt,x:Xrt,telegram:Zrt,reddit:Jrt,linkedin:eit,whatsapp:tit,email:nit,facebook:ait,share:oit,offer:sit,releaseDelay:rit,role:iit,roleOffer:lit,policy:cit,totalEarned:dit,availableEarned:uit,frozenEarned:mit,invited:pit,active:fit,availableReceived:git,frozenReceived:hit,cancelledReversed:yit,peopleYouInvited:vit,history:bit,col:xit,empty:$it,event:wit,status:kit},Sit="Einstellungen",Ait="Verwalte Kontoeinstellungen und Konsolen-Standards.",Tit="Angemeldet als {{email}}",Rit="Anzeigename",Pit="Sprache",_it="Zeitzone",jit="Profil konnte nicht geladen werden",Nit="Speichern fehlgeschlagen",Dit="Änderungen verwerfen?",Mit="Du hast ungespeicherte Änderungen. Wenn du jetzt gehst, werden sie verworfen.",Eit="Verwerfen",Iit="Weiter bearbeiten",Oit={title:Sit,description:Ait,signedInAs:Tit,displayName:Rit,locale:Pit,timezone:_it,failedLoad:jit,failedSave:Nit,discardTitle:Dit,discardMessage:Mit,discardConfirm:Eit,keepEditing:Iit},Lit="Aufgabenwand",Uit="Teile OneHop mit deinem Publikum und verdiene Testguthaben. Jede Einreichung prüfen wir von Hand.",Bit="Link zu deinem Beitrag",Fit="https://…",zit="Absenden",qit="Abgeschickt — wir prüfen das in Kürze.",Hit="Akzeptierte Links: {{hosts}}",Vit="Zuvor abgelehnt: {{reason}}. Korrigiere es und sende erneut.",Kit={pending:"In Prüfung",approved:"Gutgeschrieben",rejected:"Abgelehnt",active:"Aktiv"},Git={title:"Derzeit keine Aufgaben",description:"Schau bald wieder vorbei — wir starten solche Aktionen regelmäßig."},Wit={x_quote:{title:"Zitiere uns auf X",description:"Zitiere den angehefteten Post von @OneHopAI und ergänze deine eigene Einschätzung.",rules:["Dein X-Konto muss mindestens 6 Monate alt sein und 10 oder mehr Follower haben.","Sende den Link zu deinem eigenen Zitat-Post, nicht zum Original.","Das Guthaben kommt innerhalb von 2 Stunden nach der Freigabe an."]},youtube_tutorial:{title:"Veröffentliche ein YouTube-Tutorial",description:"Ein Video ab 6 Minuten, das zeigt, wie du OneHop in deinen eigenen Agenten eingebunden hast.",rules:["Sende den Videolink, sobald es veröffentlicht ist.","Dein YouTube-Kanal braucht 50 oder mehr Abonnenten.","Einmal pro Konto.","Das Guthaben kommt innerhalb von 2 Stunden nach der Freigabe an."]},short_video:{title:"Poste ein kurzes Video",description:"Ein Short ab 40 Sekunden auf TikTok oder YouTube, das dein OneHop-Setup erwähnt.",rules:["Sende den Videolink, sobald es veröffentlicht ist.","Das Guthaben kommt innerhalb von 2 Stunden n
777ach der Freigabe an."]},github_readme:{title:"OneHop in dein GitHub-README aufnehmen",description:"Füge einem eigenen Repository einen OneHop-Credit im README hinzu. Jede spätere Aufladung bringt 15% extra.",rules:["Sende den Link zum Repository, sobald das README online ist.","Das gilt dauerhaft, nicht einmalig: Bei jeder späteren Aufladung zählt der höhere Wert aus Standardbonus und deinen 15%.","Den Text zum Kopieren findest du unten."]}},Yit={load:"Aufgabenwand konnte nicht geladen werden",generic:"Absenden fehlgeschlagen",urlRequired:"Füge zuerst den Link zu deinem Beitrag ein.",urlTooLong:"Dieser Link ist zu lang.",urlMalformed:"Das sieht nicht nach einem gültigen Link aus.",hostNotAllowed:"Diese Aufgabe akzeptiert nur Links von den oben genannten Plattformen.",notAPost:"Verlinke den konkreten Beitrag bzw. das Video, nicht ein Profil oder eine Startseite.",alreadySubmitted:"Du hast diese Aufgabe bereits eingereicht.",notAvailable:"Diese Aufgabe ist derzeit nicht verfügbar.",busy:"Unser Prüfkontingent für heute ist erschöpft. Bitte versuche es morgen erneut.",emailUnverified:"Bestätige zuerst deine E-Mail-Adresse.",accountTooNew:"Dein Konto ist dafür noch nicht alt genug.",riskFlagged:"Dieses Konto kann derzeit nicht teilnehmen. Wende dich an den Support, wenn das ein Fehler ist.",accountInactive:"Dieses Konto ist nicht aktiv.",deviceAlreadyClaimed:"Ein anderes Konto auf diesem Gerät hat bereits teilgenommen."},Qit="Danke an [OneHop]({{url}}) für die Unterstützung dieses Projekts! OneHop gibt dir einen einzigen OpenAI-kompatiblen API-Schlüssel für Hunderte führender Modelle — GPT, Claude, Gemini, DeepSeek, Kimi und Qwen. Kein Jonglieren mit Anbieterkonten, keine Codeänderung zum Modellwechsel, und du zahlst nur, was du nutzt. → {{domain}}",Xit="Text kopieren",Zit={title:Lit,description:Uit,urlLabel:Bit,urlPlaceholder:Fit,submit:zit,submitted:qit,allowedHosts:Hit,rejectedHint:Vit,status:Kit,empty:Git,item:Wit,error:Yit,sponsorBlurb:Qit,copyBlurb:Xit},Jit="Live-Chat",elt="Support-Tickets",tlt="Eröffne ein Ticket, unser Team meldet sich so schnell wie möglich.",nlt="Neues Ticket",alt={subject:"Betreff",category:"Typ",status:"Zustand",updated:"Aktualisiert",user:"User"},olt={billing:"Abrechnung",technical:"Technik",account:"Konto",other:"Sonstiges"},slt={open:"Offen",pending:"Ausstehend",resolved:"Gelöst",closed:"Geschlossen"},rlt={allStatuses:"Alle Status",allCategories:"All categories",search:"Search email or subject"},ilt={subject:"Betreff",subjectPlaceholder:"Beschreibe dein Problem kurz",category:"Typ",message:"Nachricht",messagePlaceholder:"Sag uns, was passiert ist…",attachments:"Anhänge",addAttachment:"Datei hinzufügen",submit:"Ticket senden",cancel:"Abbrechen"},llt={you:"Du",support:"Kundendienst",system:"Systemmeldung",replyPlaceholder:"Antwort schreiben…",send:"Senden",closedNotice:"Dieses Ticket ist geschlossen. Eröffne ein neues Ticket, wenn du weitere Hilfe brauchst.",sendHint:"Drücke ⌘/Ctrl + Enter zum Senden",back:"Zurück zu Tickets",systemStatus:{open:"Ticket wieder geöffnet",pending:"Ticket als wartend auf deine Antwort markiert",resolved:"Ticket als gelöst markiert",closed:"Ticket geschlossen"}},clt={title:"Support tickets",resolve:"Resolve",close:"Close",reopen:"Reopen",unread:"Unread"},dlt="Mehr laden",ult={created:"Ticket gesendet",replied:"Antwort gesendet",statusUpdated:"Status updated",error:"Etwas ist schiefgelaufen. Bitte versuche es erneut"},mlt="Ticket nicht gefunden oder entfernt.",plt={title:"Noch keine Tickets",body:"Gibt es ein Problem? Eröffne ein Ticket, wir helfen dir.",cta:"Erstes Ticket öffnen"},flt={liveChat:Jit,title:elt,subtitle:tlt,newTicket:nlt,columns:alt,category:olt,status:slt,filters:rlt,form:ilt,thread:llt,admin:clt,loadMore:dlt,toast:ult,notFound:mlt,empty:plt},glt="Nutzung",hlt="Kontostand, Verbrauchstempo und wofür deine Ausgaben anfallen.",ylt="Aktivität",vlt="Keine Aktivität in diesem Zeitraum",blt="Nutzungsaufschlüsselung",xlt="Nach API-Key",$lt="Nach Modell",wlt="Nach token-Typ",klt="Keine Daten",Clt="Noch keine Nutzung in diesem Zeitraum.",Slt="Beim aktuellen Tempo reicht der Kontostand voraussichtlich noch {{days}} Tage (ca. {{rate}}/Tag).",Alt="Ausgabe",Tlt="Cache",Rlt={tokens:"Tokens",requests:"Anfragen",cost:"Kosten"},Plt="Andere",_lt="Req.",jlt="tok",Nlt="Aktualisiert…",Dlt="Keine Daten",Mlt="Sende eine Anfrage, um Daten zu sammeln.",Elt="Top API-Keys",Ilt="Aufladen",Olt={title:"Nutzung konnte nicht geladen werden"},Llt={firstToken:"Erster token",latency:"Durchschnittslatenz",requests:"Anfragen",spend:"Verbrauch",spendSub:"in diesem Zeitraum abgerechnet",successRate:"{{rate}}% erfolgreich",tokens:"Tokens",textDuration:"Text",mediaDuration:"Bild/Video",cacheHit:"{{rate}}
777% Cache",projected:"≈ {{amount}}/Mon.",vsPrevious:"vs. Vorperiode"},Ult={activeDays:"Aktive Tage",longestStreak:"Längste Serie",daysValue:"{{n}} Tage",totalSpend:"Gesamt in diesem Zeitraum",peakDay:"Aktivster Tag"},Blt={all:"Gesamter Zeitraum",custom:"Benutzerdefiniert",last1h:"Letzte 1 Stunde",last30d:"Letzte 30 Tage",last7d:"Letzte 7 Tage",thisMonth:"Dieser Monat",today:"Heute",yesterday:"Gestern",byMonth:"Nach Monat"},Flt={failed:"Fehlgeschlagen",success:"Erfolgreich"},zlt={cacheRead:"Cache-Lesezugriff",cacheWrite:"Cache-Schreibzugriff",cacheWrite1h:"Cache-Schreibzugriff 1h",cacheWrite5m:"Cache-Schreibzugriff 5m",completion:"Ausgabe",prompt:"Eingabe"},qlt={body:"Sende eine Anfrage aus dem Terminal oder öffne das playground — die Nutzung erscheint in wenigen Sekunden hier.",openPlayground:"playground öffnen",title:"Dein API-Key ist bereit"},Hlt={body:"Erstelle deinen ersten API-Key, route alle Anfragen über eine URL, und die Nutzung erscheint danach hier.",createKey:"API-Key erstellen",title:"Willkommen bei OneHop",tryPlayground:"playground ausprobieren"},Vlt="Aktualisieren",Klt="{{count}} erfolgreiche Anfragen im aktuellen Filter",Glt="Tokens gesamt",Wlt="Eingabe {{input}} / Ausgabe {{output}}",Ylt="Abgerechneter credit",Qlt="{{cost}} tatsächliche upstream Kosten",Xlt="Durchschnittslatenz",Zlt="Erster token {{duration}}",Jlt="30-Tage-Aktivität",ect="Erfolgreiche Anfragen, token-Volumen und abgerechneter credit.",tct="Nutzungstrend wird geladen",nct="Kein Nutzungstrend",act="Der Nutzungstrend erscheint nach erfolgreichen Anfragen.",oct="Top-Modelle",sct="Abgerechneter credit je Modell in den letzten 30 Tagen.",rct="Noch keine Modellnutzung",ict="Die Modellaufschlüsselung erscheint nach erfolgreichen Anfragen.",lct="Modell",cct="Alle Modelle",dct="Status",uct="Protokoll",mct="Zeilen",pct="Zurücksetzen",fct="Nutzungsdatensätze",gct="API-Key",hct="Endpoint",yct="Typ",vct="Tokens",bct="Kosten",xct="Dauer",$ct="Zeit",wct="User-Agent",kct="Details",Cct="Anfragedetails",Sct="Details zum Nutzungsdatensatz und Abrechnungsmetadata.",Act="Anfrage-ID",Tct="Vorgang",Rct="Eingabe tokens",Pct="Ausgabe tokens",_ct="Cache-Lese tokens",jct="Cache-Schreib tokens",Nct="Eingabekosten",Dct="Ausgabekosten",Mct="Cache-Lesekosten",Ect="Cache-Schreibkosten",Ict="Fehlercode",Oct="Fehlermeldung",Lct="Nicht gefunden.",Uct="credit",Bct="Gesamt {{count}}",Fct="Nutzungsdatensätze werden geladen",zct="Keine Nutzungsdatensätze",qct="Versuche eine andere Filterkombination.",Hct="Datensätze erscheinen, sobald Anfragen durch deine API-Keys laufen.",Vct="Seite {{page}} · zeigt {{shown}} von {{total}} passenden Datensätzen",Kct="Zurück",Gct="Weiter",Wct="Credit",Yct="Tokens",Qct="Anfragen",Xct={time:"Zeit",apiKey:"API-Key",model:"Modell",reasoningEffort:"Reasoning-Aufwand",endpoint:"Endpoint",type:"Typ",billingMode:"Abrechnungsmodus",inputTokens:"Eingabe Tokens",outputTokens:"Ausgabe Tokens",cacheReadTokens:"Cache-Lese Tokens",cacheWriteTokens:"Cache-Schreib Tokens",totalTokens:"Tokens gesamt",billedCredit:"Abgerechneter Credit",firstTokenMs:"Erster Token ms",durationMs:"Dauer ms",status:"Status",userAgent:"User-Agent"},Zct={mon:"Mo",wed:"Mi",fri:"Fr"},Jct="Weniger",edt="Mehr",tdt={title:glt,description:hlt,activity:ylt,activityEmpty:vlt,breakdown:blt,byApiKey:xlt,byModel:$lt,byTokenType:wlt,chartEmpty:klt,chartEmptyHint:Clt,burnRate:Slt,in:"Eingabe",out:Alt,cache:Tlt,metric:Rlt,other:Plt,req:_lt,tok:jlt,refreshing:Nlt,topEmpty:Dlt,topEmptyHint:Mlt,topKeys:Elt,topUp:Ilt,error:Olt,kpi:Llt,stat:Ult,range:Blt,requests:Flt,tokenType:zlt,noRequests:qlt,welcome:Hlt,refresh:Vlt,successfulFilter:Klt,totalTokens:Glt,inOut:Wlt,billedCredit:Ylt,upstreamActualCost:Qlt,avgLatency:Xlt,firstToken:Zlt,activityTitle:Jlt,activityDescription:ect,loadingTrend:tct,noUsageTrend:nct,trendDescription:act,topModels:oct,topModelsDescription:sct,noModelUsage:rct,noModelUsageDescription:ict,model:lct,allModels:cct,status:dct,protocol:uct,rows:mct,reset:pct,tableLabel:fct,apiKey:gct,endpoint:hct,type:yct,tokens:vct,cost:bct,duration:xct,time:$ct,userAgent:wct,details:kct,requestDetail:Cct,detailDescription:Sct,requestId:Act,operation:Tct,inputTokens:Rct,outputTokens:Pct,cacheReadTokens:_ct,cacheWriteTokens:jct,inputCost:Nct,outputCost:Dct,cacheReadCost:Mct,cacheWriteCost:Ect,errorCode:Ict,errorMessage:Oct,notFound:Lct,creditSuffix:Uct,total:Bct,loadingRecords:Fct,noRecords:zct,differentFilters:qct,recordsEmpty:Hct,pageSummary:Vct,previous:Kct,next:Gct,chartCredit:Wct,chartTokens:Yct,chartRequests:Qct,csv:Xct,weekday:Zct,activityLess:Jct,activityMore:edt},ndt="Signup access",adt="Controlled-launch registration gate. Approved emails, domains, existing users, and active admins can create accounts.",odt="Signup access allowlist",sdt="No allowlist entr
777ies",rdt="Email / domain",idt="Note",ldt="Status",cdt="Registration",ddt="Expires",udt="Invites",mdt="Updated",pdt="Action",fdt="Add",gdt="Bulk add",hdt="Edit",ydt="Save",vdt="Invite",bdt="Restore",xdt="Remove",$dt="Add signup access",wdt="Edit {{email}}",kdt="Bulk add signup access",Cdt="Add a specific email or a whole domain with @company.com. Existing users and active admins are always allowed.",Sdt="Paste one email or @domain per line. Invalid and duplicate rows will be skipped.",Adt="Email or domain",Tdt="[email protected] or @company.com",Rdt="Use @company.com to approve an entire domain.",Pdt="Note (optional)",_dt="e.g. founding team",jdt="Expiry (optional)",Ndt="Leave empty for no expiry. Expired entries no longer allow new signups.",Ddt="Emails / domains",Mdt=`[email protected]
778[email protected]
779@partner.com`,Edt="Search",Idt="Search email or domain",Odt="Status",Ldt="Access check",Udt="[email protected]",Bdt="Check",Fdt="Allowed",zdt="Denied",qdt={existing_user:"Existing user always allowed",active_admin:"Active admin always allowed",email_allowlist:"Matched exact email",domain_allowlist:"Matched domain rule",not_allowed:"No active rule matched"},Hdt="Registered",Vdt="Not registered",Kdt="Admin",Gdt="Domain rule",Wdt="Never",Ydt="Added to signup access.",Qdt="Signup access updated.",Xdt="Added {{count}} entries.",Zdt="Invite sent.",Jdt="Entry restored.",eut="Removed from signup access.",tut="Remove {{email}} from signup access? They can no longer create a new account unless another rule allows them.",nut={title:"Email domain rules",description:"Hot-configurable email-domain lists layered on the built-in baseline. Blacklisted domains are blocked at signup; mainstream domains skip the watchlist.",add:"Add domain",addTitle:"Add domain rule",addDescription:"Blacklist blocks signup (403). Mainstream marks the domain as trusted so new users are not watchlisted.",kindLabel:"List",kindBlacklist:"Blacklist — block signup",kindMainstream:"Mainstream — skip watchlist",domainLabel:"Domain",domainPlaceholder:"example.com",noteLabel:"Note",notePlaceholder:"Optional — why this domain",search:"Search",searchPlaceholder:"Filter by domain",kindFilter:"List",allKinds:"All lists",statusFilter:"Status",statusActive:"Active",statusRevoked:"Removed",statusAll:"All",label:"Email domain rules",empty:"No domain rules",colDomain:"Domain",colKind:"List",colNote:"Note",colAddedBy:"Added by",colCreated:"Created",status:"Status",action:"Action",remove:"Remove",restore:"Restore",confirmRemove:"Remove rule for {{domain}}?",added:"Domain rule added",removed:"Domain rule removed",restored:"Domain rule restored",badgeBlacklist:"Blacklist",badgeMainstream:"Mainstream"},aut={title:ndt,description:adt,label:odt,empty:sdt,email:rdt,note:idt,status:ldt,registration:cdt,expiresAt:ddt,invites:udt,updatedAt:mdt,action:pdt,add:fdt,bulkAdd:gdt,edit:hdt,save:ydt,invite:vdt,restore:bdt,revoke:xdt,newTitle:$dt,editTitle:wdt,bulkTitle:kdt,formDescription:Cdt,bulkDescription:Sdt,emailLabel:Adt,emailPlaceholder:Tdt,emailHint:Rdt,noteLabel:Pdt,notePlaceholder:_dt,expiresAtLabel:jdt,expiresAtHint:Ndt,bulkEntriesLabel:Ddt,bulkEntriesPlaceholder:Mdt,search:Edt,searchPlaceholder:Idt,statusFilter:Odt,checkLabel:Ldt,checkPlaceholder:Udt,check:Bdt,checkAllowed:Fdt,checkDenied:zdt,checkReasons:qdt,registered:Hdt,notRegistered:Vdt,adminAllowed:Kdt,domainRule:Gdt,never:Wdt,added:Ydt,updated:Qdt,bulkAdded:Xdt,invited:Zdt,restored:Jdt,revoked:eut,confirmRevoke:tut,domainRules:nut},out="Billing",sut="Payments, wallets and refunds across all users.",rut={payments:"Payments",wallets:"Wallets",refunds:"Refunds"},iut="User email",lut="Search by email...",cut="Created",dut="Created",uut="Amount (USD)",mut="Min",put="Max",fut="Refunds",gut="No refunds",hut="Refund",yut="Type",vut="Full refund",but="Partial refund",xut="Original payment",$ut="Wallets",wut="Wallet",kut="User",Cut="Total",Sut="Purchased",Aut="Bonus",Tut="No wallets",Rut="Payments",Put="Payment status",_ut="No payments",jut="Payment",Nut="Status",Dut="Amount",Mut="Paid",Eut="Refund",Iut="Not refundable (status must be paid)",Out="View in Stripe Dashboard",Lut="Failed + dead-letter webhooks in last 7 days. 0=green, 1-9=yellow, 10+=red.",Uut="unhealthy",But="Refund {{id}}",Fut="This will refund {{user}} via Stripe. The platform fee shown below is deducted from the amount returned; uncheck it to waive. Promotional credits granted with the original payment will be forfeited proportionally.",zut="Refund amount (USD)",qut="Max ${{value}}",Hut="Reason",Vut="Loading refund preview...",Kut="Could not load the refund preview. Refunds are disabled until it loads.",Gut="No refund
779able transaction found — this payment may already be fully refunded.",Wut="Paid",Yut="Already refunded",Qut="This refund",Xut="Credit reclaimed",Zut="Includes {{amount}} coupon-discount credit reclaimed proportionally",Jut="Includes {{amount}} extra granted credit reclaimed proportionally",emt="Bonus revoked",tmt="Promotional bonus of {{amount}} will be revoked with this refund.",nmt="Returned via Stripe",amt="Charge platform fee ({{fee}}) — covers Stripe processing cost",omt="Platform fee ({{fee}})",smt="Amount exceeds the maximum refundable {{value}}",rmt="Enter a valid positive amount",imt="The user has already spent part of the purchased credit. Maximum refundable: {{value}}",lmt="This payment is already fully refunded",cmt="Net payout after fees is too small. Refund at least {{value}}.",dmt="Cancel",umt="Issue refund",mmt="Submitting...",pmt="Refund submitted",fmt="Stripe will return the funds within 1-3 business days. Audit log written.",gmt="Refund failed",hmt={title:out,description:sut,tabs:rut,emailFilter:iut,emailPlaceholder:lut,created:cut,createdRange:dut,amountRange:uut,amountMin:mut,amountMax:put,refunds:fut,noRefunds:gut,refundId:hut,refundType:yut,typeRefund:vut,typePartialRefund:but,originalPayment:xut,wallets:$ut,wallet:wut,user:kut,total:Cut,purchased:Sut,bonus:Aut,noWallets:Tut,payments:Rut,paymentStatus:Put,noPayments:_ut,payment:jut,status:Nut,amount:Dut,paid:Mut,refund:Eut,notRefundable:Iut,viewInStripe:Out,webhookHealthHint:Lut,unhealthyWebhooks:Uut,refundConfirmTitle:But,refundConfirmBody:Fut,refundAmountLabel:zut,refundMaxHint:qut,refundReasonLabel:Hut,refundPreviewLoading:Vut,refundPreviewFailed:Kut,refundNoRefundableTx:Gut,refundPaidRow:Wut,refundAlreadyRefundedRow:Yut,refundThisRefundRow:Qut,refundCreditReclaimRow:Xut,refundCreditCouponNote:Zut,refundCreditExtraNote:Jut,refundBonusReverseRow:emt,refundBonusForfeitWarning:tmt,refundStripeReturnRow:nmt,refundFeeToggle:amt,refundPlatformFeeRow:omt,refundExceedsMax:smt,refundAmountInvalid:rmt,refundInsufficientCredit:imt,refundAlreadyFull:lmt,refundBelowMin:cmt,cancel:dmt,confirmRefund:umt,submitting:mmt,refundSubmittedTitle:pmt,refundSubmittedBody:fmt,refundFailedTitle:gmt},ymt="Campaigns",vmt="Audience segments, restricted-model access, model discounts, and targeted credit grants.",bmt={mobileLabel:"Campaign section",segments:"Audiences",access:"Model access",discounts:"Model discounts",grants:"Targeted grants",recurring:"Periodic grants"}
779,xmt="Status",$mt="Actions",wmt="All users",kmt="Always",Cmt="No expiry",Smt="Active window",Amt="Leave blank for always-on. Times are end-of-day on the chosen dates.",Tmt="Valid from",Rmt="Valid to",Pmt="Pause",_mt="Resume",jmt="Add",Nmt="Remove",Dmt="Delete",Mmt="Clear",Emt="Close",Imt={allKinds:"All kinds",segmentKindStatic:"Static",segmentKindDynamic:"Dynamic",grantKindGrant:"Grant",grantKindRevoke:"Revoke",allStatuses:"All statuses",statusActive:"Active",statusPaused:"Paused",statusArchived:"Archived",statusEnded:"Ended",statusPending:"Pending",statusProcessing:"Processing",statusCompleted:"Completed",statusFailed:"Failed"},Omt={title:"Audiences",create:"New audience",empty:"No audiences yet. Create one to target access, discounts, and grants.",name:"Name",namePlaceholder:"e.g. China power users",description:"Description",kind:"Kind",kind_static:"Static",kind_dynamic:"Dynamic",kindHint:"Static = a hand-picked list of users. Dynamic = users matching a rule, refreshed on materialize.",members:"Members",materialized:"Last refreshed",basics:"Basics",sheetDescription:"Audiences group users so you can target model access, discounts, and grants.",saved:"Audience saved",created:"Audience created",rule:"Matching rule",ruleHint:"All conditions must match (AND). An empty rule matches no one.",countryIn:"Country in",countryInHint:"Comma-separated ISO-2 codes, e.g. CN, US, JP.",signupAfter:"Signed up after",signupBefore:"Signed up before",minSpend:"Min cumulative spend (USD)",minSpendHint:"Only users whose lifetime spend is at least this.",previewing:"Estimating…",matchCount:"Estimated match: {{value}} users",membersTitle:"Members",membersHint:"Search and add users. Rule-matched members are read-only.",addMembers:"Add users",searchUsers:"Search by email or ID",noUsers:"No matching users.",noMembers:"No members yet.",membersAdded:"{{count}} member added",membersAdded_plural:"{{count}} members added",source_manual:"Manual",source_rule:"Rule",materializeTitle:"Materialize",materializeHint:"Snapshot the rule into the member list. Re-run anytime to refresh.",materialize:"Materialize now",materializing:"Materializing…",materializeConfirm:"Refresh members from the current rule? This replaces the rule-matched snapshot.",materializeDone:"Materialized {{count}} members",lastMaterialized:"Last materialized {{value}}",neverMaterialized:"Never materialized",deleteSegment:"Delete audience",deleteConfirm:"Delete this audience? Access, discounts, and grants referencing it will lose this targeting."},Lmt={title:"Model access",create:"Grant access",empty:"No access grants yet.",model:"Model",segment:"Audience",target:"Target",validFrom:"Valid from",validTo:"Valid to",sheetDescription:"Give a restricted model to an audience for an optional time window.",created:"Access granted",statusUpdated:"Status updated",deleteConfirm:"Remove this access grant?",noSegmentsTitle:"Create an audience first",noSegmentsDescription:"Access is granted to an audience. Create an audience on the Audiences tab, then come back to grant model access.",publicHint:"This model is public — everyone can already use it.",publicModelTitle:"Model is public",publicModelWarning:"{{model}} is public, so this grant has no effect until it is set to restricted on the Models page. Flip it to restricted there to gate it to this audience.",createAnyway:"Create anyway"},Umt={title:"Model discounts",create:"New discount",empty:"No discounts yet.",model:"Model",audience:"Audience",audienceHint:"Leave as all users to discount for everyone.",discount:"Discount",window:"Window",live:"Live",end:"End",amount:"Discount",target:"Target",name:"Internal name",nameHint:"Optional label for your own reference.",percentLabel:"Extra off the platform price",percentHint:"1–99%. Applied on top of our platform price (our_price), not the official price.",percentError:"Enter a value between 1 and 99.",previewPlatform:"Discounted platform price",previewVsOfficial:"Saved vs official",pickStart:"Pick a start date",sheetDescription:"Discounts apply on top of the platform price. The official price is shown for c
779omparison only.",created:"Discount created",saved:"Discount saved",statusUpdated:"Status updated",deleteConfirm:"Delete this discount?",liveReadonly:"This discount is live — value, window, and name are locked. Pause or end it to make changes.",terminalReadonly:"This discount has ended and is read-only."},Bmt={title:"Targeted grants",create:"New grant",empty:"No targeted grants yet.",time:"Time",kind:"Kind",kind_grant:"Grant",kind_revoke:"Revoke",model:"Models",modelHint:"Credit is shared across the selected models — spending on any of them draws from the same balance.",pickModels:"Pick models",nModels:"{{count}} models selected",pasteEmails:"Bulk add by email",pasteEmailsPlaceholder:"[email protected], [email protected] — separated by newline, comma or semicolon",importEmails:"Parse & add",importMatched:"Matched {{count}} users.",importUnmatched:"{{count}} emails not found:",importInvalid:"{{count}} invalid entries skipped:",importInactive:"{{count}} matched but inactive — will be skipped:",preset7d:"7 days",preset30d:"30 days",preset90d:"90 days",total:"Total",notifyYes:"Yes",notifyNo:"No",recipients:"Recipients",amount:"Amount",expiry:"Expires",expiryHint:"Optional. Unused balance expires on this date.",audience:"Audience",bySegment:"By audience",byUsers:"Specific users",segment:"Audience",users:"Users",searchUsers:"Search by email or ID",noUsers:"No matching users.",grantDetails:"Grant details",amountEach:"Amount per recipient (USD)",amountHint:"0.01–2000 per recipient.",notifyEmail:"Email recipients",note:"Note",summary:"{{count}} recipients × {{amount}} = {{total}} total",send:"Send grant",sending:"Queuing…",queued:"Grant queued — fanning out to recipients",confirmTitle:"Send targeted grant?",confirmMessage:"Grant {{amount}} each to {{count}} recipients ({{total}} total)?",confirmSend:"Send grant",sheetDescription:"Grant model-restricted credit to an audience or a hand-picked list of users.",batchTitle:"Grant batch",succeeded:"Succeeded",failed:"Failed",revokedAmount:"Reclaimed",completedAt:"Completed",revoke:"Revoke",revokeConfirm:"Reclaim unused balance from {{count}} recipients of {{model}}?",revokeQueued:"Revoke queued"},Fmt={title:"Periodic grants",create:"New periodic grant",editTitle:"Edit periodic grant",empty:"No periodic grants yet. Create one to give recurring free tokens or credit on a daily or weekly cadence.",sheetDescription:"Free tokens or restricted credit, refreshed for an audience every period (lazily, on first use).",basics:"Basics",name:"Name",namePlaceholder:"e.g. Daily free Kimi tokens",unit:"Unit",unitHint:"Tokens = free token allowance per period. USD = restricted credit (single model only).",unitLocked:"Unit is fixed after creation — create a new campaign to switch.",unit_tokens:"Tokens",unit_usd:"USD",allUnits:"All units",targeting:"Targeting",models:"Models",modelsHint:"Free tokens are usable across all selected models.",model:"Model",usdSingleModelHint:"USD grants are restricted to one model — multi-model would make spend unattributable.",pickModels:"Pick models",nModels:"{{count}} model selected",nModels_plural:"{{count}} models selected",audience:"Audience",audienceHint:"Leave as all users to grant to everyone.",schedule:"Amount & schedule",perPeriod:"Per period",tokensHint:"Positive integer, e.g. 100000 tokens per period.",usdHint:"
7790.01–2000 USD per period.",cadence:"Cadence",cadence_daily:"Daily",cadence_weekly:"Weekly",anchorTz:"Anchor timezone",anchorTzHint:"Period boundaries follow local midnight in this timezone.",startsAt:"Starts",startsAtHint:"Optional. Blank = effective immediately.",endsAt:"Ends",endsAtHint:"Optional. Blank = no end date.",immediately:"Immediately",excludeRisky:"Exclude risky accounts",thisPeriod:"This period (users · used/granted)",allStatuses:"All statuses",status_draft:"Draft",status_active:"Active",status_paused:"Paused",status_archived:"Archived",created:"Periodic grant created",saved:"Periodic grant saved"},zmt={title:ymt,description:vmt,tabs:bmt,status:xmt,actions:$mt,allUsers:wmt,always:kmt,noExpiry:Cmt,window:Smt,windowHint:Amt,validFrom:Tmt,validTo:Rmt,pause:Pmt,resume:_mt,actionAdd:jmt,actionRemove:Nmt,actionDelete:Dmt,actionClear:Mmt,actionClose:Emt,filters:Imt,segments:Omt,access:Lmt,discounts:Umt,grants:Bmt,recurring:Fmt},qmt="Announcements",Hmt="Banner / modal announcements shown on the marketing site and the console.",Vmt="Announcements",Kmt="Banner / modal announcements shown on www and console.",Gmt="New announcement",Wmt="No announcements yet. Create one to show a banner or modal.",Ymt="Message",Qmt="Supports inline links: [text](https://… or /path). Multiple links allowed.",Xmt="CTA Label",Zmt="CTA Link",Jmt="Severity",ept="Audience",tpt="Starts At",npt="Ends At",apt="Dismissible",opt="Status",spt="Archive",rpt="Archive this announcement? It will no longer be shown to users.",ipt="New announcement",lpt="Edit announcement",cpt="Title",dpt="Type",upt="Content",mpt="Display type",ppt="Banner",fpt="Modal",gpt="Draft",hpt="Active",ypt="Info",vpt="Warning",bpt="Critical",xpt="Console only",$pt="Public site only",wpt="Both",kpt="Hero image",Cpt="Upload an image, or paste an https URL. Optional. PNG / JPEG / WebP / GIF, up to 5MB.",Spt="Upload",Apt="Uploading…",Tpt="Remove",Rpt="Only PNG, JPEG, WebP and GIF images are supported.",Ppt="Image must be 5MB or smaller.",_pt="Upload failed, please try again.",jpt="Title",Npt="Body",Dpt="Action buttons",Mpt="Button label",Ept="Button link",Ipt="Style",Opt="Add button",Lpt="Remove",Upt="Primary",Bpt="Secondary",Fpt="Link",zpt="Simplified Chinese (source)",qpt="Fill in Simplified Chinese only, then translate to other languages in one click.",Hpt="Translate to all languages",Vpt="Translating…",Kpt="Other languages (translated, editable)",Gpt="Translated {{ok}} languages",Wpt="{{failed}} languages failed — fill in manually or retry",Ypt="Chinese source changed but translations weren't refreshed — click Translate again or non-Chinese users will see outdated copy.",Qpt="Re-show to users who already dismissed it",Xpt="Fill in the Simplified Chinese body first.",Zpt={title:qmt,description:Hmt,annTitle:Vmt,annDescription:Kmt,annNewButton:Gmt,annEmpty:Wmt,annMessage:Ymt,annInlineLinkHint:Qmt,annCtaText:Xmt,annCtaUrl:Zmt,annSeverity:Jmt,annAudience:ept,annStartsAt:tpt,annEndsAt:npt,annDismissible:apt,annStatus:opt,annArchive:spt,annArchiveConfirm:rpt,annCreateTitle:ipt,annEditTitle:lpt,annColTitle:cpt,annColType:dpt,annColContent:upt,annDisplayType:mpt,annTypeBanner:ppt,annTypeModal:fpt,annStatusDraft:gpt,annStatusActive:hpt,annSevInfo:ypt,annSevWarning:vpt,annSevCritical:bpt,annAudConsole:xpt,annAudPublic:$pt,annAudAll:wpt,annHeroImage:kpt,annHeroImageHint:Cpt,annHeroImageUpload:Spt,annHeroImageUploading:Apt,annHeroImageRemove:Tpt,annHeroImageBadType:Rpt,annHeroImageTooLarge:Ppt,annHeroImageUploadFailed:_pt,annModalTitle:jpt,annBody:Npt,annActions:Dpt,annActionLabel:Mpt,annActionUrl:Ept,annActionVariant:Ipt,annActionAdd:Opt,annActionRemove:Lpt,annVariantPrimary:Upt,annVariantSecondary:Bpt,annVariantLink:Fpt,annSourceLocale:zpt,annSourceHint:qpt,annTranslate:Hpt,annTranslating:Vpt,annOtherLocales:Kpt,annTranslateDone:Gpt,annTranslateParti
779al:Wpt,annTranslateStale:Ypt,annBumpRevision:Qpt,annTranslateNeedSource:Xpt},Jpt="Operations dashboard",eft="Real-time overview of platform health, usage, and alerts.",tft="Refresh",nft="Refreshing",aft="Updated {{time}}",oft="Loading dashboard",sft="Failed to load dashboard",rft="No data",ift="No traffic yet",lft="Video fail rate",cft="Avg latency",dft="Error types",uft="No errors",mft="Model anomalies",pft="All models healthy",fft="Components",gft="req",hft="Checkout abandon",yft="Refunds",vft="Chargebacks",bft="First-charge conversion",xft="{{failed}}/{{total}} jobs",$ft="{{delta}}pt vs yesterday",wft="Low sample ({{n}})",kft="Had gateway calls",Cft="Last 7d cohort · normal users only",Sft="Refund rate {{rate}}%",Aft={kpis:"Key metrics",alerts:"Alerts",health:"System health",payment:"Payment health",revenue:"Revenue & growth",trend:"Trend",alertSettings:"Alert settings",leaderboard:"Growth leaderboards"},Tft={title:"Referral leaderboard",boardAria:"Select leaderboard",rangeAria:"Select time range",boards:{invites:"Invites",revenue:"Referred revenue"},ranges:{today:"Today","3d":"3d","7d":"7d","30d":"30d"},ofTotal:"of {{total}}",countPair:"{{valid}} / {{total}} valid",empty:"No referrals in this window",failedLoad:"Failed to load leaderboard",validHint:"Valid = normal risk status + active binding"},Rft={requests:"Requests",successRate:"Payment success",activeUsers:"Active users",newSignups:"New signups",newSignupsHint:"Normal users only (excludes flagged)",billedCredit:"Billed credit",errorRate:"Error rate",avgLatency:"Avg latency",balance:"Platform balance",successFailed:"{{success}} ok · {{failed}} fail",vsPrevious:"{{delta}} vs previous",vsYesterday:"vs yesterday",noChange:"No change"},Pft={funnel:"opened {{opened}} · paid {{paid}}"},_ft={today:"Revenue today",trendTitle:"Revenue today vs yesterday",monthDetail:"{{count}} charges · MTD {{mtd}}"},jft={summary:"{{paid}} paid · {{failed}} failed · {{pending}} pending"},Nft={paidOfSignups:"{{paid}} first-charged / {{signups}} signups"},Dft={healthy:"Healthy",degraded:"Degraded",down:"Down",unknown:"Unknown"},Mft={critical:"Critical",warning:"Warning",info:"Info",ok:"Healthy"},Eft={operational:"Operational",degraded:"Degraded",down:"Down",upstream:"Upstream channels",gateway:"Gateway",billing:"Billing",jobs:"Job queue",tierReason:{ok:"Healthy",watch:"Watch: nearing threshold",warning:"Warning: over warn line",critical:"Critical: over crit line"}},Ift={title:"Active alerts",empty:"All systems operational",activeCount:"{{count}} active alerts",triggeredAt:"Triggered {{time}}",viewDetail:"View detail",acknowledge:"Acknowledge",resolved:"Resolved"},Oft={title:"Alert settings",description:"Set warning / critical thresholds for the 6 alert types; ops is notified when a metric crosses the line. Severity is derived from the tier automatically.",enabled:"Enabled",warnThreshold:"Warning threshold",critThreshold:"Critical threshold",cooldown:"Cooldown (min)",cooldownHint:"Minimum gap between two notifications for the same alert, to prevent spam.",rateHint:"Rate, 0–1 (e.g. 0.05 = 5%).",countHint:"Absolute value, ≥ 0.",directionHigher:"Higher is worse: warning ≤ critical.",directionLower:"Lower is worse: warning ≥ critical.",lastFired:"Last fired {{time}}",neverFired:"Never fired",save:"Save all",saving:"Saving",saved:"Alert settings saved",saveError:"Failed to save",readonlyHint:"You have read-only access.",noData:"No alert settings",errors:{directionHigher:"Warning threshold must be ≤ critical threshold",directionLower:"Warning threshold must be ≥ critical threshold",rateRange:"Rate thresholds must be within 0–1",nonNegative:"Thresholds must be ≥ 0",cooldownNonNegative:"Cooldown must be ≥ 0",required:"Threshold is required"},types:{payment_success_rate_low:"Payment success rate low",gateway_error_rate_high:"Gateway error rate high",model_error_spike:"Model error spike",webhook_dead_letter:"Webhook dead letter backlog",system_component_down:"System component down",negative_balance_exposure:"Negative balance exposure"}},Lft={label:"Time range",today:"Today",days7:"7 days",days30:"30 days"},Uft={title:Jpt,description:eft,refresh:tft,refreshing:nft,lastUpdated:aft,loading:oft,failedLoad:sft,empty:rft,noTraffic:ift,videoFailRate:lft,avgLatency:cft,errorTypes:dft,noErrors:uft,modelAnomalies:mft,noAnomalies:pft,components:fft,req:gft,abandonRate:hft,refunds:yft,chargebacks:vft,firstChargeConversion:bft,videoJobsDetail:xft,vsYesterdayPt:$ft,lowSample:wft,activeUsersHint:kft,conversionCohortHint:Cft,refundRate:Sft,sections:Aft,leaderboard:Tft,kpi:Rft,checkout:Pft,revenue:_ft,orders:jft,conversion:Nft,componentStatus:Dft,severity:Mft,health:Eft,alerts:Ift,alertSettings:Oft,range:Lft},Bft="Loading...",Fft="Admin permission required",zft="Your account does not have permission to access this administrator page.",qft={loading:Bft,permissionRequired:Fft,permissionDescription:zft},Hft="User growth",Vft="Signup rewards, discount codes, referrals, and credit grants. Manual grants live on the Users page.",Kft={mobileLabel:"Growth section",onboarding:"Signup & new users",discount:"Discount codes",referral:"Referral cashback",grants:"Credit grants",topup:"Top-up bonus",redeem:"Redeem codes",tasks:"Task wall"},Gft="Coupon batch",Wft="Promotion rule",Yft="Count",Qft="Batch code",Xft="Creating...",Zft="Create batch",Jft="{{count}} coupon code created",egt="{{count}} coupon codes created",tgt="Batch {{code}}
779",ngt="Copied",agt="Copy all",ogt="Credit grants",sgt="Source",rgt="Status",igt="No grants yet",lgt="Coupon redemptions, signup bonuses, and manual grants appear here.",cgt="Time",dgt="User",ugt="Amount",mgt="Signup bonus",pgt="Controls the credit automatically granted to new users. Disable it to stop future signup grants.",fgt="Enable signup credit",ggt="Amount (USD)",hgt="Save signup bonus",ygt="Saving...",vgt="Current amount {{amount}}",bgt="Referral cashback",xgt="Configure double-sided referral rewards, release delay, caps, and billing-page messaging.",$gt="Enable referral cashback",wgt="Reward tiers",kgt="Add tier",Cgt="Recipient",Sgt="From day",Agt="Until day",Tgt="Percent",Rgt="Label",Pgt="Action",_gt="Inviter",jgt="Invitee",Ngt="No end",Dgt="Remove tier",Mgt="Release delay (days)",Egt="Per-topup cap (USD)",Igt="Min topup (USD, blank = none)",Ogt="Cashback expiry (days, blank = never)",Lgt="Billing-page countdown banner",Ugt="Banner title",Bgt="Subtitle",Fgt="Countdown mode",zgt="Global deadline",qgt="Each invitee's 30-day window",Hgt="Ends at",Vgt="Save referral settings",Kgt="v{{version}}",Ggt="Saving reward tiers, release delay, caps, or expiry publishes a NEW version. Existing referral relationships keep the version they were bound under — only new signups get the new terms. Pausing only affects new signups.",Wgt="Version history",Ygt="Version",Qgt="Status",Xgt="Referrals",Zgt="Reward tiers",Jgt="Published",eht="Superseded",tht="current",nht="Version detail",aht="Referral records",oht="Cashback records",sht="Inviter",rht="Invitee",iht="Bound at",lht="Role",cht="Counterparty",dht="Top-up",uht="Rate",mht="Amount",pht="Tier",fht="Released",ght="No referrals under this version",hht="No cashback under this version",yht="Load more",vht="Top-up discount codes",bht="Discount codes lower what users pay at checkout; the full top-up amount is credited only after payment succeeds. Configure here, then generate codes below.",xht="Enable discount codes",$ht="Discount type",wht="Fixed amount off (USD)",kht="Percentage off (%)",Cht="Amount off (USD)",Sht="Percentage off (0-100)",Aht="Save discount",Tht="Default low-balance alert",Rht="New users get an email low-balance alert at this threshold by default. Changing it only affects future signups, not existing wallets.",Pht="Threshold (USD)",_ht="Save threshold",jht="Current: {{amount}}",Nht="Generate codes against the discount rule above.",Dht="In effect: {{state}} · {{value}} off",Mht="enabled",Eht="disabled",Iht="Issued codes",Oht="Pick a batch to see who redeemed each code.",Lht="No batches yet",Uht="Generate a batch above to start tracking redemptions.",Bht="Total",Fht="Redeemed",zht="Reserved",qht="Available",Hht="Codes in {{code}}",Vht="No codes in this batch",Kht="Code",Ght="Redeemed by",Wht="Redeemed at",Yht="Paid",Qht="Discount",Xht="Create codes",Zht="A shared code is one code many users can redeem up to N times; a unique batch is N one-time codes.",Jht="Code type",eyt="Single shared code",tyt="Unique code batch",nyt="Code text (leave blank for random)",ayt="e.g. WELCOME100",oyt="Total redemptions (N)",syt="Per user",ryt="Expires at (optional)",iyt="optional group",lyt="Create shared code",cyt="Shared code created",dyt="Use a discount for this batch (else the rule above)",uyt="Shared codes",myt="One code, many users. Used count tracks paid redemptions.",pyt="No shared codes yet",fyt="Used / cap",gyt="Per user",hyt="Expires",yyt="Disable",vyt="Disable this code?",byt="New checkouts are blocked immediately. Orders already in checkout can still complete.",xyt="Code disabled",$yt="CSV",wyt="Status",kyt="Email",Cyt={code:"Code",discount:"Discount",redeemed:"Redeemed",cap:"Cap",perUser:"Per user",status:"Status",expiresAt:"Expires at",batch:"Batch",createdAt:"Created at",redeemedBy:"Redeemed by",redeemedAt:"Redeemed at",paid:"Paid",discountAmount:"Discount",email:"Email",credited:"Credited",bonus:"Bonus",paidAt:"Paid at"},Syt={title:"Top-up bonus",description:"Reward bigger top-ups with bonus credit. Each tier can grant general credit or credit restricted to a model group.",enabled:"Enable top-up bonus",saved:"Top-up bonus saved",tiers:"Bonus tiers",tiersHint:"Top-up matches the highest tier whose threshold it reaches. Restricted credit only applies to synchronous text/image calls — not video or async image jobs.",noTiers:"No tiers yet. Add one to start rewarding top-ups.",min:"Min top-up (USD)",rewardType:"Reward",bonus:"Fixed (USD)",percent:"Percent (%)",rewardBonus:"Bonus amount (USD)",rewardPercent:"Percent of top-up (%)",expiryDays:"Expiry (days, blank = never)",noExpiry:"Never",scope:"Credit scope",scopeHint:"General credit works on any model; a model group restricts the bonus to those models.",scopeGeneral:"General (any model)",removeTier:"Remove tier",addTier:"Add tier",antifraud:"Abuse guards",minTopup:"Min top-up to qualify (USD, blank = none)",maxBonusPerUser:"Max bonus per user (USD, blank = none)",none:"None",excludeRisky:"Exclude watchlisted / blocked users",save:"Save top-up bonus",createScope:"New restricted model group",createScopeDescription:"Pick the models a restricted bonus may be spent on, then reference this group from a tier above.",scopeName:"Group name",scopeNamePlaceholder:"High-margin models",scopeModels:"Models",pickModels:"Pick models",nModels:"{{count}} models",createScopeButton:"Create group",scopeCreated:"Model group created"},Ayt="Create redeem codes",Tyt="Gift-card style codes. Users enter a code on the billing page and the face value is credited to their balance directly (bonus credit, no payment).",Ryt="Batch name (optional)",Pyt="e.g. Conf-2026 giveaway",_yt="How many codes",jyt="Face value (USD each)",Nyt="Per account in this batch (blank = unlimited)",Dyt="unlimited",Myt="Redeem-by deadline (optional)",Eyt="Restrict to models (optional)",Iyt="General balance (no restriction)",Oyt="{{count}} models selected",Lyt="Blank = general balance. Selected models share one earmarked pool.",Uyt="Credit validity after redemption (days, blank = never expires)",Byt="never expires",Fyt="{{n}} d",zyt="Models",qyt="Validity",Hyt="General balance",Vyt="Generate codes",Kyt="Save these now. You can also re-export the plaintext later via Reveal in the batch list.",Gyt="Redeem code batches",Wyt="Click a batch to drill into 
779individual codes. Reveal re-exports the plaintext.",Yyt="No redeem code batches yet",Qyt="Batch",Xyt="Face",Zyt="Reveal CSV",Jyt="Reverse this redeemed code?",evt="Claws back the unspent portion of the credited amount from the user. Already-spent credit cannot be recovered.",tvt="Reverse",nvt="Reversed {{amount}}",avt="Codes exported",ovt="Disable unredeemed codes in this batch?",svt="All not-yet-redeemed codes become unusable. Already-redeemed codes are not affected.",rvt="{{n}} codes disabled",ivt="Bonus % on top-up",lvt="Bonus (%)",cvt="Bonus validity (days, optional)",dvt="blank = never expires",uvt={view:"Payments",title:"Payments via ····{{code}}",email:"User",credited:"Credited",bonus:"Bonus",summary:"{{count}} payments · {{users}} users · {{paid}} paid · {{bonus}} bonus granted",empty:"No payments through this code yet"},mvt={configTitle:"Task wall config",configDescription:"Amounts, switches and accepted hosts. Task copy lives in the translation files, not here. Changes take effect on the next page load — no deploy.",enabled:"Enable the task wall",tasksTitle:"Tasks",taskKey:"Task key",amount:"Amount (USD)",hosts:"Accepted hosts",hostsHint:"Links outside this list are rejected at submission time.",taskEnabled:"Visible to users",addTask:"Add task",guardsTitle:"Abuse guards",dailyCap:"Daily pending cap",dailyCapHint:"0 = no cap. Fail-open if Redis is down.",minAge:"Minimum account age (days)",minAgeHint:"0 = no age gate.",saved:"Task wall saved",queueTitle:"Submissions",queueCount:"{{count}} shown",empty:"Nothing here.",approve:"Approve & pay",approved:"Approved — credit granted",reject:"Reject",rejected:"Rejected",confirmReject:"Confirm reject",reasonPlaceholder:"Why is this rejected?",duplicate:"Same link from {{count}} other account(s)",status:{pending:"Pending",approved:"Approved",rejected:"Rejected"}},pvt={title:Hft,description:Vft,tabs:Kft,couponBatch:Gft,promotionRule:Wft,count:Yft,batchCode:Qft,creating:Xft,createBatch:Zft,codesCreated:Jft,codesCreated_plural:egt,batch:tgt,copied:ngt,copyAll:agt,creditGrants:ogt,source:sgt,status:rgt,noGrants:igt,noGrantsDescription:lgt,time:cgt,user:dgt,amount:ugt,signupBonus:mgt,signupBonusDescription:pgt,signupBonusEnabled:fgt,signupBonusAmount:ggt,saveSignupBonus:hgt,saving:ygt,currentSignupBonus:vgt,referral:bgt,referralDescription:xgt,referralEnabled:$gt,referralRewardTiers:wgt,addTier:kgt,tierRole:Cgt,tierFromDay:Sgt,tierUntilDay:Agt,tierPercent:Tgt,tierLabel:Rgt,tierAction:Pgt,roleReferrer:_gt,roleReferee:jgt,noEndDay:Ngt,removeTier:Dgt,releaseDelayDays:Mgt,referralCap:Egt,referralMinTopup:Igt,referralExpiryDays:Ogt,bannerEnabled:Lgt,bannerTitle:Ugt,bannerSubtitle:Bgt,bannerMode:Fgt,bannerModeGlobal:zgt,bannerModeWindow:qgt,bannerEndsAt:Hgt,saveReferral:Vgt,referralVersion:Kgt,referralPublishHint:Ggt,referralVersionHistory:Wgt,versionCol:Ygt,versionStatus:Qgt,versionBindings:Xgt,versionTiers:Zgt,versionPublished:Jgt,versionSuperseded:eht,versionCurrent:tht,versionDetail:nht,versionBindingsSection:aht,versionCashbackSection:oht,colInviter:sht,colInvitee:rht,colBoundAt:iht,colRole:lht,colCounterparty:cht,colTopup:dht,colRate:uht,colAmount:mht,colTier:pht,colReleasedAt:fht,noBindings:ght,noCashback:hht,loadMore:yht,discountRule:vht,discountRuleDescription:bht,discountEnabled:xht,discountType:$ht,discountFixed:wht,discountPercent:kht,discountValueFixed:Cht,discountValuePercent:Sht,saveDiscount:Aht,defaultLowBalanceThreshold:Tht,defaultLowBalanceThresholdDescription:Rht,defaultLowBalanceThresholdAmount:Pht,saveDefaultLowBalanceThreshold:_ht,currentDefaultLowBalanceThreshold:jht,couponBatchDescription:Nht,discountEffective:Dht,stateEnabled:Mht,stateDisabled:E
779ht,couponTrace:Iht,couponTraceDescription:Oht,noBatches:Lht,noBatchesDescription:Uht,batchTotal:Bht,batchRedeemed:Fht,batchReserved:zht,batchActive:qht,codesInBatch:Hht,noCodes:Vht,code:Kht,redeemedBy:Ght,redeemedAt:Wht,paid:Yht,discount:Qht,createIssuance:Xht,createIssuanceDescription:Zht,formLabel:Jht,formShared:eyt,formUniqueBatch:tyt,sharedCodeText:nyt,sharedCodeRandomHint:ayt,sharedMaxRedemptions:oyt,sharedPerUser:syt,expiresAt:ryt,batchCodeOptional:iyt,createSharedCode:lyt,sharedCodeCreated:cyt,batchOwnDiscount:dyt,sharedCodesList:uyt,sharedCodesListDescription:myt,noSharedCodes:pyt,colRedeemedTotal:fyt,colPerUser:gyt,colExpiry:hyt,disableCode:yyt,disableCodeConfirmTitle:vyt,disableCodeConfirmMessage:byt,codeDisabled:xyt,exportCsv:$yt,statusFilter:wyt,filterByEmail:kyt,csv:Cyt,topup:Syt,redeemCreate:Ayt,redeemCreateDescription:Tyt,redeemBatchName:Ryt,redeemBatchNameHint:Pyt,redeemCount:_yt,redeemFaceValue:jyt,redeemPerUserLimit:Nyt,redeemUnlimited:Dyt,redeemExpiresAt:Myt,redeemModels:Eyt,redeemModelsAll:Iyt,redeemModelsCount:Oyt,redeemModelsHint:Lyt,redeemValidityDays:Uyt,redeemValidityForever:Byt,redeemValidityDaysValue:Fyt,redeemColModels:zyt,redeemColValidity:qyt,redeemGeneralBalance:Hyt,redeemCreateBtn:Vyt,redeemRevealHint:Kyt,redeemBatches:Gyt,redeemBatchesDescription:Wyt,redeemNoBatches:Yyt,redeemBatchCol:Qyt,redeemFace:Xyt,redeemReveal:Zyt,redeemReverseTitle:Jyt,redeemReverseMessage:evt,redeemReverseBtn:tvt,redeemReversed:nvt,redeemRevealed:avt,redeemDisableBatchTitle:ovt,redeemDisableBatchMessage:svt,redeemBatchDisabled:rvt,discountTypeBonusPercent:ivt,discountValueBonusPercent:lvt,bonusExpiryDays:cvt,bonusExpiryDaysHint:dvt,sharedPayments:uvt,tasks:mvt},fvt="Models",gvt="Model catalog: create, edit, publish.",hvt={label:"Display badges",hint:"Hot / Benefit tags shown on the user-facing models & pricing page.",hot:"Hot",benefit:"Benefit"},yvt="Add model",vvt="Edit {{model}}",bvt="Edit model",xvt="New model",$vt="Close",wvt="Basics & content save together; pricing and status changes apply immediately.",kvt="Create the model draft. Set pricing and publish after it exists.",Cvt={basics:"Basics",basicsHint:"Identity, upstream mapping, protocols.",config:"Configuration",configHint:"Identity, upstream routing, type and capabilities.",protocols:"Protocols",protocolsHint:"Which API protocols this model serves.",content:"Content & display",contentHint:"i18n summary / description and sort order."},Svt="Provider slug",Avt="Pick a known provider or type a custom slug.",Tvt="Model slug",Rvt="Aliases",Pvt="Comma-separated lookup aliases for import and review.",_vt="Source (customer-visible)",jvt="Label customers see on the model/logs. Blank = vendor. Use it to distinguish same-model variants at different prices.",Nvt="Platform",Dvt="— select platform —",Mvt="Upstream model id (optional; choose from upstream or enter manually)",Evt="Choose from upstream...",Ivt="Upstream unavailable",Ovt="Protocols",Lvt="Input price / 1M (USD)",Uvt="Output price / 1M (USD)",Bvt="EN summary",Fvt="Preview",zvt="(No summary)",qvt="No protocol",Hvt="Cancel",Vvt="Save",Kvt="Create draft",Gvt={basic:"Identity & routing",pricing:"Pricing",content:"Content & display"},Wvt={config:"1 · Configuration",protocols:"2 · Protocols",pricing:"3 · Pricing",display:"Content & display",back:"Back",next:"Next",create:"Create model"},Yvt="Context window (tokens)",Qvt="Max input the model accepts. Leave blank if unknown.",Xvt="Max output tokens",Zvt="Max tokens the model can generate per response.",Jvt={status:"Status",visibility:"Visibility",hint:"Lifecycle changes apply immediately (with confirmation), separate from Save.",confirmStatus:'Set status to "{{status}}"? Takes effect immediately.',confirmVisibility:'Set visibility to "{{visibility}}"? Takes effect immediately.',statusChanged:"Status set to {{status}}.",visibilityChanged:"Visibility set to {{visibility}}.",publishBlocked:"Cannot publish: core pricing factors are missing. Set them in the Pricing tab first.",statusOption:{draft:"Draft",published:"Published",deprecated:"Deprecated",archived:"Archived"},visibilityOption:{public:"Public",hidden:"Hidden"},availability:"Availability",confirmAvailable:"Mark this model available again? Takes effect immediately.",confirmUnavailable:"Mark this model temporarily unavailable? It stays listed (greyed out) but gateway calls are rejected.",availableChanged:"Model marked available.",unavailableChanged:"Model marked temporarily unavailable.",availabilityOption:{available:"Available",unavailable:"Unavailable"},audience:"Audience",audienceOption:{everyone:"Everyone",paid_only:"Topped-up accounts only"},confirmPaidOnly:"Restrict this model to accounts that have topped up? It stays listed, but users who never paid get a 403 telling them to top up.",confirmEveryone:"Open this model to every account? Takes effect immediately.",paidOnlyChanged:"Model restricted to accounts that have topped up.",everyoneChanged:"Model opened to every account."},ebt="Input modalities",tbt="Declares what this model can receive, including vision, audio, video, and file inputs.",nbt="Output modalities",abt="Drives the publish gate: text requires text in/out pricing, image/video/embeddings require their factors.",obt="Image billing style",sbt="Video billing style",rbt="How the upstream charges for this output. Required before publishing — the gate demands the matching price factor.",ibt="— select billing style —",lbt="Per token (image_output_token)",cbt="Per image (per_call_image)",dbt="Per second (video_per_second)",ubt="Per call (video_per_call)",mbt="Display order",pbt="Must be a non-negative integer.",fbt="Editing locale",gbt="Upstream release date",hbt="Summary (this locale)",ybt="Description (Markdown, this locale)",vbt={provider:"Provider",status:"Status",visibility:"Visibility",allStatuses:"All model statuses",allVisibility:"All visibility",allProviders:"All providers",search:"Search model slug",mobileTitle:"Filters"},bbt={label:"Models",empty:"No models",model:"Model",provider:"Provider",source:"Source",status:"Status",visibility:"Visibility",action:"Action",edit:"Edit",setStatus:"Set status for {{model}}",setVisibility:"Set visibility for {{model}}",confirmSet:'Set {{model}} {{field}} to "{{value}}
779"?',sub2api:"Sub2API mapping",textPrice:"Price (in / out $/M)",priceByTokens:"{{kind}} · per-token",imageOutput:"image out",officialPrice:"List",saved:"-{{pct}}%"},xbt={invalidPrice:"Price must be a number greater than or equal to 0, or left blank.",highRisk:"This change affects live gateway routing and may cause 404s. Continue?",stale:"This model was changed by someone else. Close and reopen it before editing again."},$bt={savesImmediately:"Pricing changes apply immediately and are not controlled by Save.",createPriceFailed:"Model created, but some prices were not saved. Add them in the Pricing tab.",factors:{title:"Pricing factors",hint:"Each row is an atomic unit (text input/output, cache, image, …). Active rows determine billing from their effective date; history rows record past prices.",liveBanner:"Changes here apply immediately and are recorded in price history — they are not controlled by the bottom Save button.",draftHint:"Save the model draft first; pricing factors are edited inline after the model exists.",addFactor:"Add factor",changePrice:"Change price",expire:"Expire",confirmExpire:"Expire this factor row? It will stop applying immediately and move to history.",changeSaved:"Factor price updated.",expired:"Factor expired.",factor:"Factor",tier:"Tier",tierNone:"(no tier)",unit:"Unit",ourPrice:"Our price (USD)",officialPrice:"Official (USD)",officialAbbr:"official",source:"Source (optional URL or note, ≤128 chars)",historyLabel:"History ({{count}})",emptyTitle:"No active factor prices",empty:'Click "Add factor" to set one.',loadError:"Could not load pricing factors",draftEditorHint:"Set prices now, or leave empty and add them after the model is created.",draftEmpty:"No prices added yet.",remove:"Remove",factorOption:{text_input:"Text input (LLM)",text_output:"Text output (LLM)",cache_read:"Cache read",cache_write_5m:"Cache write (5m TTL)",cache_write_1h:"Cache write (1h TTL)",image_input_token:"Image input token",image_output_token:"Image output token",per_call_image:"Image (per call)",video_per_call:"Video (per call)",video_per_second:"Video (per second)",web_search_call:"Web search call"},unitOption:{per_1m_tokens:"per 1M tokens",per_image:"per image",per_call:"per call",per_second:"per second"},conditions:"Conditions JSON (optional)"},discount:{toggle:"Apply discount",hint:"Set every factor to a fraction of its official price (0.5 = 50% off). Free factors (our price 0) and factors with no official price are skipped.",rate:"Discount rate",preview:"Preview",apply:"Apply",allowMarkup:"Allow markup (rate above 1 prices above official)",noFactors:"No active factors to reprice.",confirmTitle:"Apply discount to all factors?",confirmBody:"Reprice {{count}} factor(s) to {{rate}}× the official price. This is versioned — historical billing is unaffected.",applied:"Repriced {{count}} factor(s) at {{rate}}× official.",stale:"Prices changed since the preview — please preview again.",skipReason:{free_factor_our_zero:"Free factor (our price is 0) — left unchanged",no_official:"No official price — cannot compute",official_zero:"Official price is 0 — skipped"}}},wbt="Discard unsaved changes?",kbt={title:fvt,description:gvt,badges:hvt,addModel:yvt,editModel:vvt,editModelShort:bvt,newModel:xvt,close:$vt,sheetDescription:wvt,sheetDescriptionNew:kvt,sections:Cvt,providerSlug:Svt,providerSlugHint:Avt,modelSlug:Tvt,aliases:Rvt,aliasesHint:Pvt,source:_vt,sourceHint:jvt,platform:Nvt,platformUnset:Dvt,sub2apiModelId:Mvt,chooseSub2api:Evt,upstreamUnavailable:Ivt,protocols:Ovt,inputPrice:Lvt,outputPrice:Uvt,enSummary:Bvt,preview:Fvt,noSummary:zvt,noProtocol:qvt,cancel:Hvt,save:Vvt,createDraft:Kvt,tabs:Gvt,steps:Wvt,contextWindow:Yvt,contextWindowHint:Qvt,maxOutputTokens:Xvt,maxOutputTokensHint:Zvt,lifecycle:Jvt,inputModalities:ebt,inputModalitiesHint:tbt,outputModalities:nbt,outputModalitiesHint:abt,billingStyleImage:obt,billingStyleVideo:sbt,billingStyleHint:rbt,billingStyleUnset:ibt,billingStyleToken:lbt,billingStylePerImage:cbt,billingStylePerSecond:dbt,billingStylePerCall:ubt,displayOrder:mbt,displayOrderInvalid:pbt,contentLocale:fbt,upstreamReleaseAt:gbt,summary:hbt,descriptionField:ybt,filters:vbt,table:bbt,errors:xbt,pricing:$bt,discardChanges:wbt},Cbt="Rate Limits",Sbt="Rate limit policies by scope.",Abt="Rate limit policies",Tbt="No policies",Rbt="Code",Pbt="Name",_bt="Scope",jbt="Status",Nbt="Limits",Dbt="No limits",Mbt={auth:"Auth",console:"Console",api_gateway:"API gateway",ops:"Ops",global:"Global"},Ebt={active:"Active",disabled:"Disabled",archived:"Archived"},Ibt={rpm_per_key:"RPM / key",rpm_per_user:"RPM / user",concurrent_streams_per_key:"Streams / key",concurrent_streams_per_user:"Streams / user"},Obt="New policy",Lbt="Edit",Ubt="Action",Bbt="New rate limit policy",Fbt="Edit {{name}}",zbt="Concurrency and RPM limits applied per API key and per user. Assign a policy to users on the Users page.",qbt='Delete policy "{{name}}"? Keys and users on it fall back to their default.',Hbt="Policy deleted.",Vbt={identity:"Identity",classification:"Classification",description:"Description",codeImmutable:"Code cannot be changed after creation.",limitsHint:"Leave blank to use the platform default for that limit.",default:"default",invalidLimit:"{{field}} must be a positive integer.",saved:"Policy saved.",cancel:"Cancel",save:"Save",create:"Create policy"},Kbt={title:Cbt,description:Sbt,label:Abt,empty:Tbt,code:Rbt,name:Pbt,scope:_bt,status:jbt,limits:Nbt,n
779oLimits:Dbt,scopes:Mbt,statuses:Ebt,limitNames:Ibt,add:Obt,edit:Lbt,delete:"Delete",action:Ubt,newTitle:Bbt,editTitle:Fbt,formDescription:zbt,confirmDelete:qbt,deleted:Hbt,form:Vbt},Gbt="Team",Wbt="Who can sign in to the admin console. Owner-only.",Ybt="Admins",Qbt="No admins yet",Xbt="Email",Zbt="Name",Jbt="Role",ext="Status",txt="Last login",nxt="Action",axt="Add admin",oxt="Add admin",sxt="The email becomes an admin immediately and signs in with it — admin access is matched by email. It does not need an account yet.",rxt="Email",ixt="[email protected]",lxt="Name",cxt="Display name",dxt="Role",uxt="Admin added.",mxt="Change role",pxt="Role updated.",fxt="Suspend",gxt="Activate",hxt="Status updated.",yxt="Remove",vxt="Admin removed.",bxt="Remove {{email}} as an admin? They lose console access immediately.",xxt="You",$xt="Never",wxt={owner:"Owner",admin:"Admin",support:"Support"},kxt={active:"Active",suspended:"Suspended"},Cxt={title:Gbt,description:Wbt,label:Ybt,empty:Qbt,email:Xbt,name:Zbt,role:Jbt,status:ext,lastLogin:txt,action:nxt,add:axt,newTitle:oxt,formDescription:sxt,emailLabel:rxt,emailPlaceholder:ixt,nameLabel:lxt,namePlaceholder:cxt,roleLabel:dxt,added:uxt,changeRole:mxt,roleChanged:pxt,suspend:fxt,activate:gxt,statusChanged:hxt,remove:yxt,removed:vxt,confirmRemove:bxt,self:xxt,never:$xt,roles:wxt,statuses:kxt},Sxt="Upstream",Axt="Read-only upstream configuration mirror plus controlled OneHop routing pools.",Txt="Open upstream admin",Rxt="Upstream tabs",Pxt={overview:"Overview",keyPools:"Key pools",groups:"Groups",channels:"Channels",accounts:"Accounts"},_xt={todayRequests:"Today requests",total:"{{value}} total",upstreamCostToday:"Upstream cost today",providerAccounts:"Provider accounts",health:"Health",stale:"stale",checkPools:"check pools",online:"online"},jxt={upstreamStatsFailed:"Upstream stats failed to load",retry:"Retry",configAuditFailed:"Config audit failed",keyPoolsLoadFailed:"Key pools failed to load",createKeyPoolFailed:"Create key pool failed",keyPoolTestFailed:"Key pool test failed",keyPoolRotateFailed:"Key pool rotate failed",failedLoad:"{{title}} failed to load"},Nxt={title:"Config audit",description:"Compares OneHop key pools and published model routing against upstream routing. Provider groups, channels, pricing, and accounts remain read-only here.",running:"Running...",run:"Run audit",poolsChecked:"Pools checked",modelAudit:"Model audit",checkedAt:"Checked at",needsReview:"needs review",done:"done",ok:"ok",upstreamCoverage:"Upstream coverage",coverageUnchecked:"accounts not readable",coverageOnlyAccount:"only {{accounts}}",coverageNoAccount:"no schedulable account maps this upstream id"},Dxt={title:"Topology",keyPools:"Key pools",activeGroups:"Active groups",activeChannels:"Active channels",accounts:"Accounts",editingBoundaryTitle:"Editing boundary",editingBoundaryDescription:"The upstream admin exposes deep edit workflows for groups, channels, pricing rules, provider accounts, monitoring, and system settings. OneHop intentionally mirrors only the operational read path and owns internal key pools, so edits that change provider routing still happen in the original admin."},Mxt={title:"OneHop internal key pools",description:"Pools select which upstream internal key OneHop uses per protocol and model pattern. Full secrets are never displayed.",poolCode:"Pool code",poolName:"Pool name",defaultPool:"Default pool",notDefault:"Not default",plaintextKey:"Plaintext key",create:"Create",label:"Provider routing key pools",pool:"Pool",protocols:"Protocols",models:"Models",routingGroup:"Routing group",status:"Status",health:"Health",key:"Key",lastCheck:"Last check",action:"Action",priority:"priority {{value}}",default:"default",secret:"secret",hidden:"hidden",test:"Test",rotate:"Rotate",empty:"No key pools",emptyDescription:"Create an internal pool before routing production traffic through provider routing.",newPlaintextKey:"New plaintext key",confirmRotate:"Confirm rotate",editProtocols:"Edit protocols",editProtocolsTitle:"Edit protocols (replace)",confirmEditProtocols:"Save protocols",cancelEditProtocols:"Cancel",forceEditProtocols:"Force save (override routing check)"},Ext={editUpstreamConfig:"Edit upstream config",groupsTitle:"Groups",groupsDescription:"Routing buckets from upstream config. OneHop uses these as source-of-truth context for key-pool binding and audit decisions.",groupsLabel:"Routing groups",groupsEmpty:"No groups",groupsEmptyDescription:"Upstream config did not return any groups.",channelsTitle:"Channels",channelsDescription:"Provider channel configuration from upstream config, including model mappings and pricing rule coverage.",channelsLabel:"Provider routing channels",channelsEmpty:"No channels",channelsEmptyDescription:"Upstream config did not return any channels.",accountsTitle:"Accounts",accountsDescription:"Provider accounts are redacted in OneHop. Use the upstream admin for credential edits and OAuth refresh flows.",accountsLabel:"Provider routing accounts",accountsEmpty:"No accounts",accountsEmptyDescription:"Upstream config did not return any provider accounts."},Ixt={group:"Group",platform:"Platform",rate:"Rate",rpm:"RPM",accounts:"Accounts",limits:"Limits",status:"Status",updated:"Updated",channel:"Channel",billingSource:"Billing source",mappings:"Mappings",pricing:"Pricing",account:"Account",groups:"Groups",baseUrl:"Base URL",capacity:"Capacity",lastUsed:"Last used"},Oxt={noDescription:"No description",unlimited:"unlimited",schedulable:"schedulable",notSchedulable:"not schedulable",loading:"Loading...",noPricingRules:"No pricing rules",modelsCount:"{{count}} models",none:"none",channelMapped:"Channel mapped",requestedModel:"Requested model",upstreamModel:"Upstream model",priority:"priority",unknown:"unknown"},Lxt={serving:{label:"Serving state",serving:"Serving",rate_limited:"Rate-limited",overloaded:"Overloaded",expired:"Expired",paused:"Paused",error:"Error",disabled:"Disabled"},quota:{label:"Quota (today)",noLimit:"no limit",spend:"{{spend}} / {{limit}}"},accounts:{breakdown:"{{normal}} normal · {{error}} error · {{ratelimit}} limited · {{overload}} overload"},freshness:{updated:"updated {{ago}}",never:"never"},pools:{lastError:"Last error",resync:"Resync"},audit:{poolFindings:"Pool findings",clean:"clean",findingsCount:"{{count}} issue(s)"},tokensToday:"{{count}} tok today"},Uxt={title:Sxt,description:Axt,openUpstreamAdmin:Txt,tabsLabel:Rxt,tabs:Pxt,metrics:_xt,errors:jxt,audit:Nxt,topology:Dxt,pools:Mxt,readonly:Ext,table:Ixt,common:Oxt,ops:Lxt},Bxt="Usage",Fxt="Cross-user request metering with spend, token, latency, and routing signals.",zxt="Refresh",qxt={label:"Auto refresh",off:"Off"},Hxt="Exporting",Vxt="Export CSV",Kxt="Failed to export usage records",Gxt="Requests",Wxt="{{count}} successful",Yxt="Users",Qxt="Matched by current filters",Xxt="Spent credit",Zxt="{{cost}} spend",Jxt="Tokens",e$t="Avg {{duration}}",t$t="User email",n$t="Search by email",a$t="Model",o$t="Search by model",s$t="Status",r$t="Protocol",i$t="Rows",l$t="Reset",c$t="Ops usage records",d$t="No usage records",u$t="User",m$t="Endpoint",p$t="{{count}} total",f$t="In {{input}} / out {{output}}",g$t="Upstream",h$t="Billed",y$t="Latency",v$t="Started",b$t="Page {{page}} · showing {{shown}} of {{total}} matching records",x$t="Previous",$$t="Next",w$t="{{count}} rows on this page",k$t="Times shown in",C$t="{{count}} API keys",S$t="Spend snapshot",A$t="from OneHop billing snapshot",T$t="User spend",R$t="total billed to users",P$t="Avg latency",_$t="streaming requests",j$t="Avg duration",N$t="settled requests",D$t="Range",M$t={today:"Today",days7:"7 days",days30:"30 days",all:"All time"},E$t="Metric",I$t={cost:"Spend",tokens:"Tokens",requests:"Requests"}
779,O$t="Distribution",L$t={model:"Model",requestedModel:"Requested model",upstreamModel:"Upstream model",apiKey:"API key",user:"User",endpoint:"Endpoint",channel:"Channel",group:"Group",stream:"Transport (stream/sync)"},U$t="Usage trend",B$t="Usage by model",F$t="Hourly",z$t="Daily",q$t="Top endpoints",H$t="Top dimension rows",V$t="Request logs",K$t="API key",G$t="Type",W$t="Billing",Y$t="Channel",Q$t="Group",X$t="Request ID",Z$t="req_ / usg_ / upstream",J$t="All types",ewt="All billing",twt={user:"User",time:"Time",model:"Model",tokens:"Tokens",cost:"Spend",routing:"Routing",latency:"First-token",duration:"Duration",status:"Status"},nwt="Failed to load usage",awt="Loading usage records",owt="Try a different filter set.",swt="No trend data",rwt="No distribution data",iwt="No rows",lwt="Spend breakdown",cwt={upstreamList:"Upstream list",discount:"Discount",sub2apiActual:"Recorded spend",groupChannelMultiplier:"Group/channel multiplier",accountMultiplier:"Account multiplier",sub2apiFinalCharge:"Final spend",billedFactors:"Billed to user"},dwt="Request detail",uwt="Open request detail",mwt="Unknown user",pwt="Loading...",fwt="Recorded spend",gwt="Group multiplier",hwt="Account multiplier",ywt="Identity",vwt="User ID",bwt="Key suffix",xwt={hopIdentity:"Hop identity",logicalUsageId:"Logical usage ID",logicalRequestedModel:"Logical requested model",logicalModel:"Logical model",actualRequestedModel:"Actual requested model",actualModel:"Actual model",fallbackHop:"Fallback hop",userVisibility:"User visibility",visible:"Visible",hidden:"Hidden",supersedesUsageRecord:"Supersedes record",pricingAudit:"Continuity pricing audit",mode:"Mode",policyVersion:"Policy version",sourceModel:"Source model",targetModel:"Target model",requestedRawQuote:"Requested raw quote",requestedQuote:"Requested quote",actualPricingStatus:"Actual pricing status",actualPricingAvailable:"Available",actualPricingUnavailable:"Unavailable",actualQuote:"Actual quote",chargedQuote:"Charged quote",variance:"Quote variance",actualPricingError:"Actual pricing error"},$wt="Input",wwt="Output",kwt="Cache read",Cwt="Cache write",Swt="Raw metadata",Awt="Request",Twt="Usage ID",Rwt="OneHop ID",Pwt="Sub2API ID",_wt="Sub2API log",jwt="Routing",Nwt="Mapping",Dwt="Performance",Mwt="First token",Ewt="Total",Iwt="Error",Owt="Code",Lwt="Message",Uwt={time:"Time",user:"User",apiKey:"API key",model:"Model",logicalUsageId:"Logical usage ID",logicalRequestedModel:"Logical requested model",logicalModel:"Logical model",actualRequestedModel:"Actual requested model",actualModel:"Actual model",fallbackHop:"Fallback hop",userVisible:"User visible",supersedesUsageRecord:"Supersedes usage record",upstreamModel:"Upstream model",protocol:"Protocol",endpoint:"Endpoint",type:"Type",status:"Status",inputTokens:"Input tokens",outputTokens:"Output tokens",cacheRead:"Cache read",cacheWrite:"Cache write",sub2apiActual:"Recorded spend",sub2apiCharge:"Spend",continuityMode:"Continuity mode",continuityPolicyVersion:"Continuity policy version",continuitySourceModel:"Continuity source model",continuityTargetModel:"Continuity target model",continuityRequestedRawQuote:"Continuity requested raw quote",continuityRequestedQuote:"Continuity requested quote",continuityActualPricingStatus:"Continuity actual pricing status",continuityActualQuote:"Continuity actual quote",continuityChargedQuote:"Continuity charged quote",continuityVariance:"Continuity quote variance",continuityActualPricingError:"Continuity actual pricing error",firstTokenMs:"First token ms",durationMs:"Duration ms",channel:"Channel",group:"Group",onehopRequestId:"OneHop request ID",sub2apiRequestId:"Sub2API request ID"},Bwt={analytics:"Usage analytics",logs:"Request logs"},Fwt={label:"Chart view",stacked:"Over time",ranking:"Ranking"},zwt={failedOnly:"Failed only",slowOnly:"Slow TTFT > {{sec}}s"},qwt="More filters",Hwt="Slow TTFT threshold (ms)",Vwt="Latency = time to first token (TTFT); Duration = total. The slow filter uses TTFT and only covers successful requests with a recorded first token (earlier or failed requests show —).",Kwt="No model usage",Gwt="No requests yet — usage will appear here as traffic comes in.",Wwt="Viewing",Ywt={title:Bxt,description:Fxt,refresh:zxt,autoRefresh:qxt,exporting:Hxt,exportCsv:Vxt,exportError:Kxt,requests:Gxt,successful:Wxt,users:Yxt,matchedFilters:Qxt,billedCredit:Xxt,upstreamCost:Zxt,tokens:Jxt,avgDuration:e$t,userEmail:t$t,searchEmail:n$t,model:a$t,searchModel:o$t,status:s$t,protocol:r$t,rows:i$t,reset:l$t,label:c$t,empty:d$t,user:u$t,endpoint:m$t,totalTokens:p$t,inOut:f$t,upstream:g$t,billed:h$t,latency:y$t,started:v$t,pageSummary:b$t,previous:x$t,next:$$t,rowsOnPage:w$t,timesShownIn:k$t,apiKeys:C$t,sub2a
779piCharge:S$t,sub2apiChargeSource:A$t,userSpend:T$t,userSpendSource:R$t,avgLatency:P$t,avgLatencySub:_$t,avgTotalDuration:j$t,settledRequests:N$t,range:D$t,ranges:M$t,metric:E$t,metrics:I$t,distribution:O$t,breakdown:L$t,usageTrend:U$t,stackedByModel:B$t,hourly:F$t,daily:z$t,topEndpoints:q$t,topDimensionRows:H$t,requestLogs:V$t,apiKey:K$t,type:G$t,billing:W$t,channel:Y$t,group:Q$t,requestId:X$t,requestIdPlaceholder:Z$t,allTypes:J$t,allBilling:ewt,table:twt,failedLoad:nwt,loadingRecords:awt,tryDifferentFilters:owt,noTrendData:swt,noDistributionData:rwt,noRows:iwt,costBreakdown:lwt,adminCost:cwt,requestDetail:dwt,openRequestDetail:uwt,unknownUser:mwt,loading:pwt,sub2apiActual:fwt,groupMultiplier:gwt,accountMultiplier:hwt,identity:ywt,userId:vwt,keySuffix:bwt,continuity:xwt,input:$wt,output:wwt,cacheRead:kwt,cacheWrite:Cwt,rawMetadata:Swt,request:Awt,usageId:Twt,onehopId:Rwt,sub2apiId:Pwt,sub2apiLog:_wt,routing:jwt,mapping:Nwt,performance:Dwt,firstToken:Mwt,total:Ewt,error:Iwt,code:Owt,message:Lwt,csv:Uwt,tabs:Bwt,modelView:Fwt,chip:zwt,moreFilters:qwt,slowThreshold:Hwt,latencyHint:Vwt,noModelUsage:Kwt,noTrendToday:Gwt,viewing:Wwt},Qwt="Search",Xwt="Search by user ID, email, or name",Zwt="User",Jwt="Back to users",e0t="You do not have permission to view this section.",t0t="Refund",n0t="Refunding...",a0t="Initiate a refund of {{amount}} for {{email}}? Refunds are processed asynchronously; the balance updates after the worker runs.",o0t="Refund initiated.",s0t={overview:"Overview",network:"Network & Device",recentCalls:"Recent Calls",apiKeys:"API Keys",payments:"Payments",refunds:"Refunds",subscription:"Subscription",referrals:"Referrals",rewards:"Rewards",audit:"Audit"},r0t={title:"Free token allowance",paused:"Free token grants are paused on this account (risk review).",daily:"Daily",weekly:"Weekly",tokensUnit:"tokens",remaining:"{{value}} tokens remaining today"},i0t={title:"Free model quota (today)",tokens:"tokens",remaining:"{{value}} tokens remaining today",unlimited:"Free quota: unlimited (gate disabled)",eligibilityLabel:"Free tier eligibility",eligible:"Free tier",ineligible:"Ineligible (same device used)"},l0t={phase2:"Subscriptions are coming in Phase 2."},c0t={empty:"No payments"},d0t={empty:"No refunds"},u0t={empty:"No credit buckets",note:"Credit buckets show current balance inventory. Grant and refund history appear in the Audit timeline; referral rewards in the Referrals section."},m0t={totalEarned:"Total earned",frozenEarned:"Frozen",refereeCount:"Referees",activeCount:"Active",role:"Role",counterparty:"Counterparty",empty:"No referral activity"},p0t={empty:"No audit records"},f0t={amount:"Amount",credit:"Credit",status:"Status",provider:"Provider",createdAt:"Created",type:"Type",originalTx:"Original tx",remaining:"Remaining",initial:"Initial",expiresAt:"Expires",event:"Event",action:"Action",severity:"Severity"},g0t={ipLocationTitle:"IP & Location",deviceBrowserTitle:"Device & Browser",stripeTitle:"Stripe",signupIp:"Signup IP",signupCountry:"Signup Country",lastLoginIp:"Last Login IP",ipDifferent:"Differs from signup IP",sameIpAccounts_one:"{{count}} account on same signup IP",sameIpAccounts_other:"{{count}} accounts on same signup IP",sameDeviceAccounts_one:"{{count}} account on same device",sameDeviceAccounts_other:"{{count}} accounts on same device",deviceFingerprint:"Device Fingerprint",freeTierEligible:"Free Tier Eligibility",firstDevice:"First on device",notFirstDevice:"Not first on device — no free perks",browser:"Browser",os:"OS",deviceType:"Device Type",acceptLanguage:"Accept-Language",stripeCustomerId:"Stripe Customer ID",viewOnIpinfo:"View on ipinfo.io"},h0t={empty:"No calls yet",viewAll:"View all logs →",colStatus:"Status",colTime:"Time",colModel:"Model",colProtocol:"Protocol",colDuration:"Duration",colCost:"Cost",colFreeDiscount:"Free Credit"},y0t={empty:"No API keys",colName:"Name",colKey:"Key",colStatus:"Status",colPolicy:"Rate Limit Policy",colLastUsed:"Last Used",colCreated:"Created",colExpires:"Expires",colSpend:"Spend",spendTitle:"Spend breakdown",spend30d:"Last 30 days",spendAllTime:"All-time",spendRequests:"Requests"},v0t="Copy",b0t="Copied",x0t={search:Qwt,searchPlaceholder:Xwt,title:Zwt,backToList:Jwt,noBlockPerm:e0t,refund:t0t,refunding:n0t,refundConfirm:a0t,refundInitiated:o0t,nav:s0t,freeTokens:r0t,freeQuota:i0t,subscription:l0t,payments:c0t,refunds:d0t,rewards:u0t,referrals:m0t,audit:p0t,col:f0t,network:g0t,recentCalls:h0t,apiKeys:y0t,copy:v0t,copied:b0t},$0t="Users",w0t="Search users, grant credit, and suspend accounts.",k0t="Email",C0t="Search by email",S0t="Account status",A0t={active:"Account active; can sign in and call the gateway",suspended:"Suspended; gateway rejects all requests (401)"},T0t="Risk",R0t={normal:"Eligible for all free perks",watchlisted:"No free tokens or signup bonus; can still top up & call the gateway",blocked:"Gateway rejects all requests (401); fully banned"},P0t="Users",_0t="No users found",j0t="Country",N0t="Last login",D0t="Action",M0t="View",E0t="Deleted",I0t="Set status for {{email}}",O0t='Set {{email}} to "{{status}}"?',L0t="Grant credit",U0t="Add bonus credit to {{email}}. Recorded in the ledger.",B0t="Amount (USD)",F0t="e.g. 5",z0t="Reason (optional)",q0t="e.g. compensation for downtime",H0t="Type",V0t="Bonus credit",K0t="A gift. Does not count as a top-up.",G0t="Offline payment",W0t="Money we actually received. Counts as a top-up: unlocks paid-only models and rate-limit tiers.",Y0t="Reference no.",Q0t="e.g. bank slip 20260907-001",X0t="Record payment",Z0t="Recording...",J0t="C
779ancel",ekt="Granting...",tkt="Grant",nkt="Grant ${{amount}} to {{email}}? This is a large amount.",akt="No display name",okt="Loading...",skt="score {{score}}",rkt="Email verified",ikt="Yes",lkt="No",ckt="Signup",dkt="Signup method",ukt="Last login method",mkt="Signup bonus",pkt="Onboarding",fkt="Locale / TZ",gkt="Markup ratio",hkt="Rate limit policy",ykt="Rate limit policy updated.",vkt="Joined",bkt="Never",xkt="Balance",$kt="Wallet & spend",wkt="Total spent",kkt="Recharged",Ckt="Location",Skt="Lang",Akt="Bonus granted",Tkt="Refunded",Rkt="Requests",Pkt="Tokens",_kt="Actions",jkt="Identity & risk",Nkt="Role",Dkt="No permitted actions for your role.",Mkt="Acquisition source",Ekt="Acquisition by source",Ikt="Direct / unknown",Okt="Custom source…",Lkt="Set",Ukt="Auto-detected: {{source}}",Bkt="UTM",Fkt="Referred by",zkt="Note",qkt="Add a note to identify this user",Hkt="Save note",Vkt="Note saved",Kkt="No note",Gkt="Filters",Wkt={title:$0t,description:w0t,email:k0t,searchEmail:C0t,status:S0t,statusEffect:A0t,risk:T0t,riskEffect:R0t,label:P0t,empty:_0t,country:j0t,lastLogin:N0t,action:D0t,view:M0t,deleted:E0t,setStatusAria:I0t,setStatusConfirm:O0t,grantCredit:L0t,grantDescription:U0t,amountUsd:B0t,amountPlaceholder:F0t,reason:z0t,reasonPlaceholder:q0t,grantKind:H0t,grantKindBonus:V0t,grantKindBonusHint:K0t,grantKindOffline:G0t,grantKindOfflineHint:W0t,referenceNo:Y0t,referenceNoPlaceholder:Q0t,recordPayment:X0t,recording:Z0t,cancel:J0t,granting:ekt,grant:tkt,largeGrantConfirm:nkt,noDisplayName:akt,loading:okt,score:skt,emailVerified:rkt,yes:ikt,no:lkt,signup:ckt,signupMethod:dkt,lastLoginMethod:ukt,signupBonus:mkt,onboarding:pkt,localeTz:fkt,markupRatio:gkt,rateLimitPolicy:hkt,rateLimitPolicyChanged:ykt,joined:vkt,never:bkt,walletBalance:xkt,walletSection:$kt,consumed:wkt,recharged:kkt,location:Ckt,preferredLocale:Skt,bonusGranted:Akt,refunded:Tkt,requests:Rkt,tokens:Pkt,actionsSection:_kt,identitySection:jkt,role:Nkt,noPermittedActions:Dkt,acquisitionSource:Mkt,acquisitionTitle:Ekt,sourceDirect:Ikt,sourceCustomPlaceholder:Okt,sourceSet:Lkt,sourceCaptured:Ukt,utm:Bkt,referrer:Fkt,note:zkt,notePlaceholder:qkt,noteSave:Hkt,noteSaved:Vkt,noteEmpty:Kkt,filters:Gkt},Ykt="Webhooks",Qkt="Stripe webhook events. Status filter, retry, payload inspection.",Xkt="Status",Zkt="Event type",Jkt="Received",eCt="Event type",tCt="Status",nCt="Mode",aCt="Attempts",oCt="Retry",sCt="Retry queued",rCt="Event {{event}} reset to pending; next job tick will process.",iCt="Retry failed",lCt="No webhook events yet.",cCt="Stripe events will appear here once your endpoint is registered.",dCt="Loading payload...",uCt="Last error",mCt="Payload (JSON)",pCt={title:Ykt,description:Qkt,statusFilter:Xkt,eventTypeFilter:Zkt,receivedAt:Jkt,eventType:eCt,status:tCt,mode:nCt,attempts:aCt,retry:oCt,retrySubmittedTitle:sCt,retrySubmittedBody:rCt,retryFailedTitle:iCt,empty:lCt,emptyHint:cCt,detailLoading:dCt,lastError:uCt,payload:mCt},fCt="API Keys",gCt="Get your first key in 10 seconds",hCt="Failed to copy",yCt={label:"Allowed models",allModels:"All models",allHint:"All models in the catalog are allowed.",noModels:"No models available.",selected:"{{count}} selected",someHint:"{{count}} model(s) allowed."},vCt={label:"Tags",placeholder:"Add a tag and press Enter",remove:"Remove"},bCt="Create and manage account-level keys for every OneHop gateway API.",xCt="Refresh",$Ct="Default key",wCt="Key name",kCt="Creating...",CCt="Create key",SCt="Create API key",ACt="Edit API key",TCt="Name the key. Limits and expiration stay in advanced settings unless you need them.",RCt="Monthly credit limit",PCt="Expires at",_Ct="Unlimited",jCt="Saving...",NCt="Save",DCt="Cancel",MCt="Your full key",ECt="Copy API key",ICt="Copied",OCt="Copy",LCt="Copy it now if you like — you can view this key again anytime from its connection details.",UCt="I've saved it",BCt={title:"Disabled & revoked",description:"Turned-off or revoked keys. Re-enable a disabled one, or keep it here for the record."},FCt={title:"No active keys",description:"Re-enable a disabled key below, or create a new one."},zCt={import:"Import CC Switch",client:"CC Switch client",codex:"Codex / OpenAI",claude:"Claude Code",pasteHint:"Opened CC Switch with a placeholder — paste your saved API key there.",checking:"Checking compatibility…",blocked:{title:"{{client}} cannot use this key",body:'"{{keyName}}" only allows models that {{client}} cannot use. Importing will result in errors.',adjust:"Adjust model scope",forceImport:"Import anyway (will not work)"},pin:{title:"Import as {{model}} for {{client}}",body:`"{{keyName}}" doesn't include {{client}}'s default model. Here's how {{client}} requests will be routed through this provider:`,adjust:"Adjust model scope",confirm:"Import with {{model}}"}},qCt="API keys failed to load",HCt="Retry",VCt="No API keys yet",KCt="Create your first key to 
779start sending requests through OneHop.",GCt={search:"Search",searchPlaceholder:"Search name or key suffix",status:"Status",allStatus:"All status",clear:"Clear filters",empty:"No keys match these filters",emptyDescription:"Clear the search or status filter to see all keys.",mobileTitle:"Filters"},WCt={active:"Active",inactive:"Disabled",revoked:"Revoked",expired:"Expired",quota_exhausted:"Quota exhausted"},YCt={label:"API keys",tags:"Tags",name:"Name",key:"Key",status:"Status",usage:"Usage",quota:"Quota",expires:"Expires",lastUsed:"Last used",created:"Created",action:"Action"},QCt={today:"Today {{requests}} req · {{credit}}",days30:"30d {{requests}} req · {{credit}}"},XCt={use:"Connection details",edit:"Edit",enable:"Enable",disable:"Disable",delete:"Delete"},ZCt="Use API key",JCt="Use this key with OneHop’s gateway. You can view the full key anytime.",e1t={baseUrl:"Base URL",keyHint:"API key",authorization:"Authorization header",env:"Environment variable",curl:"cURL",revealing:"Decrypting key…",fullKeyUnavailable:"This key can no longer be shown. Use the value you saved, or create a new key.",protocolEndpoints:"Protocol endpoints"},t1t="Revoke",n1t="Revoke {{name}}? This cannot be undone.",a1t="Advanced settings",o1t={label:"Model access",all:"All models",limited:"Restrict to specific models",allHint:"This key can call every model, including ones added later.",snapshotHint:"Only the models you pick — new models added later are not included automatically.",snapshotHintEdit:"Only the models you pick — new models are not added automatically. Switching to All models replaces this whitelist.",searchPlaceholder:"Search models…",selectAllResults:"Select all results ({{count}})",selectedCount:"{{count}} / {{max}} selected",clear:"Clear",hiddenSelected:"{{hidden}} of {{total}} selected are hidden by the current filter",selectVendor:"Select all {{vendor}}, {{on}} of {{total}} selected",emptyTitle:"No models match",emptyDescription:"Try a different type or search.",loadFailed:"Could not load models",loadFailedHint:"Retry, or switch back to All models.",type:{all:"All",text:"Text",image:"Image",video:"Video",embedding:"Embedding"},pickAtLeastOne:"Pick at least one model, or switch to All models.",limitReached:"Reached the {{max}}-model limit"},s1t={title:"API key created",subtitle:"{{name}} is ready — connect it now.",onceWarning:"Shown once. You can re-reveal it later, but copy it now to be safe.",connect:"Connect",done:"Done"},r1t="IP",i1t="Revoked {{date}}",l1t={title:fCt,emptyTitle:gCt,copyFailed:hCt,allowedModels:yCt,tags:vCt,description:bCt,refresh:xCt,defaultName:$Ct,keyName:wCt,creating:kCt,createKey:CCt,createTitle:SCt,editTitle:ACt,formDescription:TCt,monthlyCreditLimit:RCt,expiresAt:PCt,unlimited:_Ct,saving:jCt,save:NCt,cancel:DCt,fullKeyTitle:MCt,copyApiKey:ECt,copied:ICt,copy:OCt,fullKeyDescription:LCt,savedIt:UCt,parked:BCt,noActive:FCt,ccswitch:zCt,loadFailed:qCt,retry:HCt,empty:VCt,emptyDescription:KCt,filters:GCt,status:WCt,table:YCt,usage:QCt,actions:XCt,useTitle:ZCt,useDescription:JCt,use:e1t,revoke:t1t,revokeConfirm:n1t,advancedSettings:a1t,scope:o1t,created:s1t,lastUsedIp:r1t,revokedAt:i1t},c1t="Audit Logs",d1t="High-risk admin actions, by action and time.",u1t="Action",m1t="Clear",p1t={ops_user_update_status:"User status updated",ops_users_allowlist_add:"Signup access added",ops_users_allowlist_update:"Signup access updated",ops_users_allowlist_invite:"Signup access invited",ops_users_allowlist_revoke:"Signup access removed",ops_users_allowlist_restore:"Signup access restored",ops_model_create:"Model created",ops_model_update:"Model updated",ops_model_update_status:"Model status updated",sub2api_pool_create:"Routing pool created",sub2api_pool_test:"Routing pool tested",sub2api_pool_rotate_secret:"Routing secret rotated"},f1t="Audit logs",g1t="No audit entries",h1t="Time",y1t="Severity",v1t="Target",b1t={ai_model:"Model",sub2api_key_pool:"Routing key pool",sys_user:"User",wallet:"Wallet"},x1t="Target type",$1t="Request ID",w1t={title:c1t,description:d1t,action:u1t,clear:m1t,actions:p1t,label:f1t,empty:g1t,time:h1t,severity:y1t,target:v1t,targetTypes:b1t,targetType:x1t,requestId:$1t}
779,k1t="Sign in to OneHop",C1t="Enter your code",S1t="Use Google or email to continue",A1t="Enter your email to receive a code",T1t="Enter the 6-digit code sent to {{email}}",R1t="Continue with Google",P1t="Continue with email",_1t="or",j1t="Email",N1t="Send verification code",D1t="Sending...",M1t="Verify",E1t="Verifying...",I1t="Resend in {{seconds}}s",O1t="Resend code",L1t="By continuing you agree to our",U1t="Terms",B1t="Privacy",F1t={signIn:"Sign in",signOutFailed:"Sign out failed",sendCodeFailed:"Failed to send code",notAllowed:"This email isn't approved for access yet. Contact your administrator to request access.",invalidCode:"Invalid code",codeIncorrect:"Code incorrect, try again",googleFailed:"Google sign-in failed",verifyHuman:"Please complete the verification to continue",verifyUnavailable:"Human verification is temporarily unavailable. Please continue with Google above, or try again later."},z1t={signInTitle:k1t,enterCodeTitle:C1t,methodIntro:S1t,emailStepIntro:A1t,codeIntro:T1t,continueGoogle:R1t,continueEmail:P1t,or:_1t,emailLabel:j1t,sendCode:N1t,sending:D1t,verify:M1t,verifying:E1t,resendIn:I1t,resendCode:O1t,termsPrefix:L1t,terms:U1t,privacy:B1t,errors:F1t},q1t="Billing",H1t="Top up Credits, redeem coupons, and review wallet activity.",V1t={title:"Earmarked credit",subtitle:"Bonus credit usable only on specific models — kept separate from your balance.",onlyModels:"Only {{models}}",onlyModelsGeneric:"Restricted models",validUntil:"Valid until {{date}}",noExpiry:"No expiry",useInChat:"Use in chat"},K1t={bonuses:"Bonuses",topups:"Top-ups",usage:"Usage"},G1t={available:"Credited",availableHint:"Already in your available balance",frozen:"Pending (frozen)",frozenHint:"Vests in ~{{days}} days",frozenHintGeneric:"Vests after the holding period",title:"Referral rewards",viewDetails:"View referral details"},W1t={noUsage:"No usage in the last 30 days",perDay:"{{amount}} avg/day",daysLeft:"≈ {{days}} days left at current rate"},Y1t={amountUsd:"Amount (USD)",minAmountHint:"Minimum top-up is {{amount}}.",apply:"Apply",get:"Get",onehopCredits:"OneHop credits",pay:"Pay",poweredByStripe:"Secured by Stripe",poweredBy:"Secured by {{provider}}",secureCheckout:"Secure hosted checkout",secureCheckoutShort:"Secure checkout",taxExclusiveNotice:"Applicable taxes are calculated at checkout and added to this amount.",presets:"Preset amounts",promoCode:"Promotion code",promoCodePlaceholder:"Enter promotion code",serviceFee:"Service fee",title:"Top up",topupAmount:"Top-up amount",totalDue:"Total due",payCta:"Pay {{amount}}",previewing:"Checking…",discount:"Coupon discount",couponBelowMin:"Discounted total is too low — raise the amount or try another code.",maintenanceTitle:"Payments temporarily unavailable",maintenanceDescription:"Payments are temporarily unavailable. Contact us on Telegram if you need to pay.",contactTelegram:"Contact us on Telegram",alipay:"Alipay",wechatPay:"WeChat Pay",crypto:"Pay with crypto (USDC / USDT)",payOnStripe:"Payment is completed on the secure Stripe checkout page.",payOnProvider:"Payment is completed on the secure {{provider}} checkout page.",payOnHostedCheckout:"Payment is completed on the secure hosted checkout page.",amountPrecision:"{{provider}} accepts USD amounts with no more than 2 decimal places. Adjust the amount or promotion code.",couponBonus:"Coupon bonus",couponBonusExpiry:"Bonus credits expire {{days}} days after payment.",couponInvalid:"This code cannot be applied — try another code.",couponErrors:{limitReached:"You've already used this code the maximum number of times.",invalid:"This code is invalid.",expired:"This code has expired.",exhausted:"This code has been fully redeemed.",unavailable:"This code is being used — try again shortly."},tierBonus:"Promotion bonus",tierBonusExpiry:"Bonus credits expire {{days}} days after payment.",tierBonusRestricted:"Bonus credits can only be spent on: {{models}}.",nextTierPercent:"Top up {{amount}} more to earn {{percent}}% in bonus credits.",nextTierBonus:"Top up {{amount}} more to earn {{bonus}} in bonus credits.",tierCapReached:"You've already earned the maximum bonus for this promotion."},Q1t="Add Credits",X1t="Creating...",Z1t="Available Credit",J1t="Top up",eSt="Powered by Stripe",tSt="Amount in USD",nSt="Preset top-up amounts",aSt="Redeem coupon",oSt="Coupon code",sSt="Redeeming...",rSt="Redeem",iSt="Coupon redeemed. Balance is refreshing.",lSt="Redirecting to secure checkout...",cSt="Billing summary failed to load",dSt="Top-up failed",uSt="Billing activity tabs",mSt="Transactions",pSt="Credit grants",fSt="Transaction type",gSt="Source",hSt="No transactions yet",ySt="Top-ups, charges, and grants appear here.",vSt="Ledger entries",bSt="Time",xSt="Type",$St="Amount",wSt="Balance",kSt="No grants yet",CSt="Signup bonuses, coupons, and manual grants appear here.",SSt="Status",ASt={successTitle:"Payment received",polling:"Crediting your wallet... about 30 seconds.",delayed:"Slow to arrive. Refresh in a moment or check your Str
779ipe receipts.",cancelledTitle:"Payment cancelled",cancelledBody:"No charge was made. Try again when you are ready.",failedTitle:"Payment failed",failedBody:"Your payment could not be completed. No credit was added. Try again or use a different payment method."},TSt={text:"Credits are a prepaid service balance, not a bank deposit. Consumed credits are non-refundable. All prices in USD. See",tosLink:"Terms"},RSt="Receipts",PSt="Opening...",_St="Could not open billing portal",jSt={title:"Recent top-ups",subtitle:"Last 90 days. Unused balance is refundable anytime.",loading:"Loading top-ups...",date:"Date",amount:"Amount",credits:"Credits",status:"Status",refund:"Refund",alreadyRefunded:"Already refunded",windowExpired:"Refund window expired (24 hours)",confirmTitle:"Confirm refund",confirmBody:"The refund will be processed by Stripe within 1-3 business days. A platform fee ({{fee}}) applies to user-initiated refunds.",amountLabel:"Refund amount (USD)",maxLabel:"Max ${{value}}",requestedLabel:"Refund requested",platformFeeLabel:"Platform fee ({{fee}})",cardReturnLabel:"Returned to your card",bonusForfeitureHint:"Promotional credits granted with this top-up will be forfeited proportionally.",cancel:"Cancel",confirm:"Issue refund",submitting:"Submitting...",refundSubmittedTitle:"Refund submitted",refundSubmittedBody:"Stripe will return the funds to your card within 1-3 business days.",refundFailedTitle:"Refund failed",balance:"Balance",confirmAmount:"Refund {{amount}}"},NSt={title:"Balance alerts",description:"Get notified when your balance runs low.",emailLabel:"Email me",webhookLabel:"Webhook",autorechargeLabel:"Auto top-up",autorechargeUnsupported:"Automatic top-up is unavailable with the active payment provider.",autorechargeAddCardHint:"adds a card to keep your balance topped up",autorechargeTopUp:"Top up",autorechargeWhenBelow:"when balance falls below",autorechargeThreshold:"Auto top-up threshold",autorechargeAmount:"Auto top-up amount",autorechargeDisabledFailures:"Auto top-up was disabled after repeated failures. Update your card and re-enable.",autorechargeIncomplete:"Set an auto top-up amount and threshold above $0.",test:"Test",testing:"Testing…",testQueued:"Test delivery queued — check your endpoint",testFailed:"Failed to queue test delivery",signingSecret:"Signing secret",secretOnSave:"A signing secret is generated 
779when you save.",rotate:"Rotate",secretRotated:"Signing secret rotated",rotateFailed:"Failed to rotate secret",secretCopied:"Signing secret copied",saved:"Alert settings saved",saveFailed:"Failed to save alert settings",loadFailed:"Could not load alert settings",thresholdRequired:"Set a threshold above $0 to enable alerts.",webhookUrlRequired:"Enter an https:// URL for the webhook.",thresholdOrderBad:"Alert threshold must be ≥ the auto top-up threshold.",card:"Card",changeCard:"Change",removeCard:"Remove",cardRemoved:"Card removed",cardRemoveFailed:"Failed to remove card",cardSetupFailed:"Failed to start card setup",lowBalanceGroup:"Low-balance alerts",thresholdLabel:"Alert threshold"},DSt={title:"Transaction history",idSearch:"Transaction ID",amountRange:"Amount range (USD)",min:"Min",max:"Max",clear:"Clear",retry:"Retry",empty:"No transactions in this range",date:"Date",typeMethod:"Type / method",description:"Description",action:"Action",prevMonth:"Previous month",nextMonth:"Next month",viewInvoices:"View invoices",emptyNew:"No transactions yet",emptyNewDesc:"Once you top up, your top-ups, bonuses and refunds will appear here.",topUpCta:"Top up",emptyFiltered:"No transactions match these filters",emptyFilteredDesc:"Try clearing filters or widening the date range.",clearFilters:"Clear filters"},MSt="Your balance is low and may interrupt requests. Top up or enable auto top-up.",ESt="Your balance is low and may interrupt requests. Top up to continue.",ISt={creditPurchase:"Credit top-up",topupBonus:"Top-up bonus",signupBonus:"Signup bonus",referralClawback:"Referral cashback clawback (refund)",couponBonus:"Coupon bonus",referralCashback:"Referral cashback",referralInviteeCashback:"Referral invitee cashback",redeemCode:"Redeem code {{code}}",redeemCodeReversal:"Redeem code reversal",stripeRefund:"Stripe refund",bonusReversal:"Bonus reversal (refund)"},OSt={card:"Card",alipay:"Alipay",wechatPay:"WeChat Pay"},LSt={title:"Redeem a code",description:"Have a redeem code? Enter it to credit the amount to your balance.",placeholder:"e.g. OHR-XXXXXXXX",redeem:"Redeem",redeeming:"Redeeming…",success:"Redeemed {{amount}} to your balance",successRestricted:"Redeemed {{amount}} — usable with {{models}} only",successValidity:"Valid until {{date}}.",errors:{invalid:"This code is invalid.",expired:"This code has expired.",alreadyRedeemed:"This code has already been redeemed.",perUserLimit:"You've reached the redemption limit for this batch."}},USt={title:q1t,description:H1t,earmarked:V1t,breakdown:K1t,referralRewards:G1t,burnRate:W1t,topup:Y1t,addCredits:Q1t,creating:X1t,availableCredit:Z1t,topUp:J1t,poweredByStripe:eSt,amountUsd:tSt,presetAmounts:nSt,redeemCoupon:aSt,couponCode:oSt,redeeming:sSt,redeem:rSt,couponRedeemed:iSt,redirecting:lSt,summaryFailed:cSt,topupFailed:dSt,tabsLabel:uSt,transactions:mSt,creditGrants:pSt,transactionType:fSt,source:gSt,noTransactions:hSt,noTransactionsDescription:ySt,ledgerEntries:vSt,time:bSt,type:xSt,amount:$St,balance:wSt,noGrants:kSt,noGrantsDescription:CSt,status:SSt,topupBanner:ASt,compliance:TSt,receipts:RSt,openingPortal:PSt,portalFailed:_St,recentTopups:jSt,alerts:NSt,history:DSt,lowBalanceWarning:MSt,lowBalanceWarningNoAutoTopup:ESt,ledgerDesc:ISt,paymentMethod:OSt,redeemCard:LSt},BSt="Chart failed",FSt="No data",zSt="There's nothing to chart yet.",qSt={errorTitle:BSt,emptyTitle:FSt,emptyDescription:zSt},HSt={copy:"Copy",regenerate:"Regenerate",shareComingSoon:"Share (coming soon)",download:"Download",copyLink:"Copy link",newChat:"New chat",deleteChat:"Delete chat",openConversationList:"Open conversation list",openSettings:"Chat settings",collapseSidebar:"Collapse sidebar",expandSidebar:"Expand sidebar",cancel:"Cancel",apply:"Apply",newChatTooltip:"
779Create new chat",copied:"Copied"},VSt={placeholderReady:"Start a new conversation...",placeholderNoModel:"Choose a model above first",placeholderComingSoon:"This model is coming soon — pick another one above",attachmentTooLarge:"File is over {{limit}} and cannot be uploaded",attachmentUnsupported:"Unsupported file type. Use PNG, JPEG, WebP, GIF, MP4, WebM, or MOV.",unsupportedVision:"This model does not accept image or video input. Switch models before dropping files.",send:"Send",abort:"Stop",attachImage:"Add image",attachMedia:"Add image or video",removeAttachment:"Remove",shortcutSend:"send",shortcutNewLine:"new line",shortcutAbort:"stop",frameFirst:"First frame",frameLast:"Last frame",frameReference:"Reference",imageMode:"Image generation",videoMode:"Video generation",reasoning:"Thinking",reasoningOff:"Off",reasoningAlways:"Always on",placeholderTopupRequired:"This model is available to accounts that have topped up — top up to use it here"},KSt={modelUnavailable:"Model {{model}} is not available right now. Your prompt is still saved.",rateLimited:"Too many concurrent requests. Try again shortly.",accountDisabled:"This account is disabled and cannot continue chatting.",attachmentsUploading:"Images are still uploading. Wait a moment before sending.",attachmentsFailed:"An image failed to upload. Remove it and try again before sending."},GSt={title:"Start testing any model here.",body:"Chat directly with any model. Usage is charged to your PAYG wallet.",starters:{compareModels:"Compare GPT-5.5 and Claude Opus on the same coding task",analyzeImage:"Analyze an architecture diagram and summarize the risks",draftPrompt:"Draft a system prompt for a support agent",generateImage:"Generate a product hero image with a clean SaaS style"}},WSt={untitled:"Untitled chat",deleteConfirm:'Delete "{{title}}"?',emptyTitle:"No conversations yet",emptyBody:"Use + New chat above to start.",listLabel:"Conversation list",groups:{today:"Today",yesterday:"Yesterday",earlier:"Earlier"},menu:{rename:"Rename",delete:"Delete"},deleteTitle:"Delete conversation?"},YSt={paygWallet:"PAYG wallet"},QSt={chooseModel:"Choose model",searchPlaceholder:"Search models...",emptyTitle:"No models found",emptyBody:"Try another search term or tab.",protocols:"{{count}} protocols",context:"{{value}} ctx",tabs:{all:"All",text:"Text",image:"Image",video:"Video"},maxOut:"out {{value}}",unavailable:"Coming Soon",requiresTopup:"Top up to unlock"},XSt={title:"Chat settings",protocol:"Protocol",unlimited:"Unlimited",fields:{memory_limit:{label:"Chat memory"},temperature:{label:"Temperature"},top_p:{label:"Top P"},max_tokens:{label:"Max Tokens",placeholder:"128000"},service_tier:{label:"Service tier",options:{standard:"Standard",priority:"Priority",flex:"Flex"}},thinking_budget:{label:"Thinking Budget (tokens)",placeholder:"e.g. 2000"},tools:{label:"Tools (JSON)",placeholder:'[{ "type": "function", "function": { ... } }]'},stop_sequences:{label:"Stop Sequences",placeholder:"Comma-separated, e.g. END, STOP",itemLabel:"Stop"},system_prompt:{label:"System Prompt",placeholder:"Enter a system prompt..."},prompt_cache_mode:{label:"Prompt Cache",options:{implicit:"Implicit",explicit:"Explicit"}},image_size:{label:"Image Resolution"},image_resolution:{label:"Resolution"},image_quality:{label:"Image Quality",options:{Auto:"Auto",auto:"Auto",low:"Low",medium:"Medium",high:"High"}},video_ratio:{label:"Aspect ratio"},video_resolution:{label:"Video resolution"},video_duration_seconds:{label:"Duration"},image_count:{label:"Image Count"},image_aspect_ratio:{label:"Aspect ratio"},reasoning_effort:{label:"Reasoning Effort",options:{none:"Off",minimal:"Minimal",low:"Low",medium:"Medium",high:"High",xhigh:"X-High",max:"Max"}},reasoning_pro:{label:"Pro mode"},reasoning_context:{label:"Reasoning context",options:{auto:"Auto",current_turn:"Current turn",all_turns:"All turns"}},reasoning_enabled:{label:"Thinking"},reasoning_always:{label:"Thinking",value:"Always on"}}},ZSt={estimating:"estimating...",settling:"settling...",input:"in",output:"out",milliseconds:"ms",realCost:"Actual cost",latency:"Latency",logDetail:"Log detail"},JSt={copied:"Image link copied",expired:"Image link expired. Copy the link to reopen or regenerate.",attachment:"[image attachment]"},eAt={message:"This chat is billed to your PAYG wallet",balance:"Balance",billingLink:"Billing",dismiss:"Dismiss"},tAt={badge:"Earmarked {{amount}}",bannerTitle:"Earmarked credit available",bannerBody:"You have {{amount}} of dedicated credit for this model — it's used first."},nAt={trigger:"Copy as code",copied:"Copied as {{format}}",failed:"Copy failed",failedDescription:"Clipboard permission may be blocked by the browser."},aAt={interrupted:"[Interrupted]",sending:"sending"},oAt={title:"Thinking process",duration:"Thought for {{seconds}}s"},sAt={title:"Video generation is coming soon",body:"This model is listed for discovery, but video sending is not enabled yet.",switchToText:"Switch to a text model"},rAt={imageGenerating:"Generating image",videoGenerating:"Generating video",stage:{queued:"Queued",routing:"Routing",generating:"Generating",storing:"Storing",settling:"Settling"}},iAt={INSUFFICIENT_CREDITS:"Insufficient balance",RATE_LIMITED:"Too many requests",rate_limit_error:"Too many requests",MODEL_NO_VISION:"This model does not accept image input",CONTENT_REFUSED:"Request declined by the model",EMPTY_RESPONSE:"Model returned an empty response",upstream_error:"Upstream service error",overloaded_error:"Upstream service is busy",upstream_invalid_json:"Malformed upstream response",stream_read_error:"Response stream interrupted",invali
779d_api_key:"Upstream authentication failed",model_unavailable:"Model temporarily unavailable",no_image:"No image was generated",no_body:"No response from upstream",http_error:"Request failed",session_create_failed:"Failed to create session"},lAt={title:"Top up to unlock this model",body:"It's available to accounts that have topped up. Any amount unlocks it right away, and your balance is still billed per use.",cta:"Top up"},cAt={actions:HSt,composer:VSt,errors:KSt,empty:GSt,sidebar:WSt,header:YSt,modelSelector:QSt,settings:XSt,metrics:ZSt,image:JSt,payg:eAt,earmark:tAt,copyAsCode:nAt,status:aAt,thinking:oAt,video:sAt,media:rAt,errorCodes:iAt,topupLock:lAt},dAt="Loading...",uAt="Account",mAt="Language",pAt="Sign in",fAt="Sign out",gAt="Signing out...",hAt="Save changes",yAt="Saving...",vAt="Saved.",bAt="Back",xAt="Retry",$At="Get 5% off service fee on top-up.",wAt="Save",kAt="Cancel",CAt="Clear",SAt="Reset",AAt="Copied",TAt="Failed to copy",RAt="Dismiss",PAt="Total",_At={timestamp:"Timestamp",local:"Local",relative:"Relative"},jAt="Copy",NAt={title:"Open in your browser",description:"You're viewing this inside an <b>in-app browser</b>, where <b>Google sign-in and human verification don't work</b>. Please open it in your system browser to continue.",hintWechat:"Tap the ··· menu in the top-right corner and choose “Open in Browser”.",hintGeneric:"Use the top-right menu and choose “Open in Browser / Safari”.",copyLink:"Copy link",continueAnyway:"Continue anyway"},DAt="All",MAt="Active",EAt="Optional",IAt="Remove",OAt={loading:dAt,account:uAt,language:mAt,signIn:pAt,signOut:fAt,signingOut:gAt,saveChanges:hAt,saving:yAt,saved:vAt,back:bAt,retry:xAt,topUpPromo:$At,save:wAt,cancel:kAt,clearAll:CAt,reset:SAt,copied:AAt,copyFailed:TAt,dismiss:RAt,total:PAt,time:_At,copy:jAt,inAppBrowser:NAt,all:DAt,active:MAt,optional:EAt,remove:IAt},LAt="Dashboard",UAt="Monitor credits, usage, and key gateway health from one console.",BAt="Create API key",FAt={creditBalance:"Credit balance",requestsToday:"Requests today",activeApiKeys:"Active API keys"},zAt={title:"Usage trend",description:"Requests and billed credit over the last 14 days.",viewUsage:"View usage",loading:"Loading usage trend",empty:"No usage yet",emptyDescription:"Usage appears here once requests start flowing."},qAt={title:"Credit activity",description:"Daily billed credit over the last 90 days.",total:"90-day total",loading:"Loading activity",activeDays:"{{count}} active days in the last {{days}} days",less:"Less",more:"More"},HAt={title:"Usage mix",description:"A compact view of spend intensity, token volume, and the model carrying most usage.",activeDays:"Active days",ofDays:"of {{days}} days",avgDailyCredit:"Avg daily credit",nonZeroDays:"on active days",peakDay:"Peak day",noPeak:"No usage yet",tokens:"Tokens",topModel:"Top model",creditShare:"Share of billed credit"},VAt={title:"Quick health",requests7d:"7-day requests",creditToday:"Credit spent today",credit7d:"7-day credit spent"},KAt={title:"Recent requests",description:"Latest gateway calls across your keys.",viewRecords:"View records",table:{label:"Recent requests",model:"Model",status:"Status",tokens:"Tokens",credit:"Credit",time:"Time",apiKey:"API key"},empty:"No requests yet",emptyDescription:"Create an API key, send a request, and recent calls will show here."},GAt={title:"Make your first request",description:"OpenAI-compatible. Create a key, set {{env}}, then call the gateway."},WAt={credit:"Credit",requests:"Requests"},YAt={title:LAt,description:UAt,createApiKey:BAt,cards:FAt,usageTrend:zAt,activity:qAt,usageMix:HAt,quickHealth:VAt,recent:KAt,firstRequest:GAt,tooltip:WAt},QAt="Select all rows",XAt="Select row {{row}}",ZAt="Failed to load",JAt="No data",eTt="There are no records to show.",tTt="More details",nTt="{{count}} more details",aTt="Open details",oTt={selectAllRows:QAt,selectRow:XAt,errorTitle:ZAt,emptyTitle:JAt,emptyDescription:eTt,moreDetails:tTt,moreDetailsWithCount:nTt,openRow:aTt},sTt="Last 1 hour",rTt="Today",iTt="Yesterday",lTt="Last 7 days",cTt="Last 30 days",dTt="This month",uTt="By month",mTt="Custom",pTt="All time",fTt="Select date",gTt="Cancel",hTt="Apply",yTt="Start date must be before end date.",vTt="Range presets",bTt="Previous month",xTt="Next month",$Tt={last1h:sTt,today:rTt,
779yesterday:iTt,last7d:lTt,last30d:cTt,thisMonth:dTt,byMonth:uTt,custom:mTt,all:pTt,selectDate:fTt,cancel:gTt,apply:hTt,reversedError:yTt,presetsAriaLabel:vTt,previousMonth:bTt,nextMonth:xTt},wTt="Account unavailable",kTt="Account is initializing",CTt={title:"Account suspended",description:"This account can still sign in, but console access and gateway requests are paused.",detail:"If you believe this is unexpected, contact support from the email address on this account."},STt={accountUnavailable:wTt,accountInitializing:kTt,accountRestricted:CTt},ATt="Free Tokens",TTt="Daily free token allowances for selected models — they refresh on their own. No charge to your wallet.",RTt="Couldn't load your free token allowances.",PTt="All models",_Tt="Campaign ends {{date}}",jTt={daily:"Daily",weekly:"Weekly"},NTt={daily:"Refreshes daily",weekly:"Refreshes weekly",localTime:"your local {{time}}",countdown:"next refresh in {{duration}}",refreshingSoon:"refreshing soon"},DTt={title:"No active free token campaigns",description:"When a free token campaign is running, your daily allowance will show up here."},MTt={title:"Free token grants are paused on your account",body:"This account looks like part of a bulk sign-up pattern, so free grants are paused for now. If this is a mistake, reach out at"},ETt="tokens",ITt="{{value}} tokens remaining today",OTt={label:"Email me when used up",hint:"Get a heads-up email when today's free tokens run out."},LTt={crg_freetoken_daily_cn5:"Chinese models · daily free tokens"},UTt={title:ATt,description:TTt,loadFailed:RTt,allModels:PTt,campaignEnds:_Tt,cadence:jTt,refresh:NTt,empty:DTt,paused:MTt,tokensUnit:ETt,remainingToday:ITt,emailToggle:OTt,campaigns:LTt},BTt="Logs",FTt="Inspect request-level cost, latency, tokens, status, and routing signals.",zTt={copiedCurl:"curl copied",copiedId:"Request ID copied",copyCurl:"Copy as curl",copyFailed:"Copy failed",copyId:"Copy request ID",menu:"Row actions",openTab:"Open in new tab"},qTt={prompt:"Prompt",ratio:"Hit ratio",read:"Cache read",title:"Cache hit ratio"},HTt={confirm:"Cancel job",failed:"Failed to cancel job",keep:"Keep",message:"This job is still queued. Cancelling stops it from being processed; no charge will be applied.",success:"Job cancelled",title:"Cancel job?",pending:"Cancelling..."},VTt={cacheHit:"Cache hit",cost:"Cost",ip:"IP",latency:"Latency",model:"Model",source:"Source",status:"Status",stream:"Stream",time:"Time",tokens:"Tokens",tps:"Throughput"},KTt={trigger:"Column settings"},GTt={body:"Make a request through OneHop and it shows up here.",title:"No logs in this range"},WTt={all:"All",apiKey:"API key",cost:"Cost (USD)",desktopDateRangeAria:"Select desktop date range",finishReason:"Finish reason",latency:"Duration (s)",max:"Max",min:"Min",mobileDateRangeAria:"Select mobile date range",model:"Model",modelsSelected:"{{count}} selected",more:"More filters",refresh:"Refresh",request:"Search by request ID",requestIdLabel:"Request ID",status:"Status",stream:"Stream",time:"Time",type:"Type",mobileTitle:"Filters"},YTt={requests:"requests on this page",times:"times shown in"},QTt={rowsPer:"Rows"},XTt={all:"All time",custom:"Custom",last1h:"Last 1 hour",last30d:"Last 30 days",last7d:"Last 7 days",thisMonth:"This month",today:"Today",yesterday:"Yesterday"},ZTt={title:"Client",unknownShort:"Unknown",unknown:"No user-agent reported"},JTt={output:"Output tokens",rate:"Rate",title:"Throughput",window:"Generation window"},eRt={title:"Request",openDetail:"Open request detail",copy:"Copy ID",copied:"Copied",copyFailed:"Failed to copy",close:"Close",loading:"Loading…",response:"Response",sections:{request:"Request",routing:"Routing",tokens:"Tokens",cost:"Cost breakdown",performance:"Performance",error:"Error",outcome:"Outcome",multimodal:"Multimodalities"},fields:{requestId:"Request ID",time:"Time",apiKey:"API key",userAgent:"User-Agent",billingMode:"Billing mode",onehopModel:"OneHop model",endpoint:"Endpoint",firstToken:"First token",total:"Total",throughput:"Throughput",stream:"Stream",clientIp:"Client IP",finishReason:"Finish reason",mediaType:"Media type",imageCount:"Images",imageSize:"Size",errorCode:"Code",errorMessage:"Message",requestedModel:"Requested model"},billingMode:{token:"Per token",per_request:"Per request",image:"Per image"},timeline:{heading:"Lifecycle",received:"Request received",routed:"Routed",failed:"Failed",generated:"Generated",metered:"Metered",billed:"Billed"},downloadMedia:"Download"},tRt={success:"success",completed:"completed",failed:"failed",pending:"pending",repairing:"repairing",queued:"queued",running:"running",cancelled:"cancelled",expired:"expired"},nRt={chat:"Chat",image:"Image",video:"Video"},aRt={stop:"Stop",length:"Length",tool_calls:"Tool calls",content_filter:"Content filter",error:"Error"},oRt={true:"Streaming",false:"Non-streaming"},sRt={title:"Cost breakdown"},rRt={title:"Token breakdown",prompt:"Input",completion:"Output",imageOutput:"Image output tokens",cacheRead:"Cache read",cacheWrite:"Cache write",cacheWrite5m:"Cache write 5m",cacheWrite1h:"Cache write 1h",total:"Total"},iRt={timestamp:"Timestamp",local:"Local",relative:"Relative"},lRt={promoBasis:"Before promo",promoSaved:"Promo savings",inputCost:"Input cost",outputCost:"Output cost",cacheReadCost:"Cache read cost",cacheWriteCost:"Cache write cost",inputPrice:"Input price",outputPrice:"Output price",total:"Total",officialPrice
779:"Official price",saved:"You save",factor:{textInput:"Text input",textOutput:"Text output",imageInput:"Image input",imageOutput:"Image output",perCallImage:"Per image",videoPerSecond:"Video",videoPerCall:"Video",cacheRead:"Cache read",cacheWrite:"Cache write",cacheWrite5m:"Cache write (5m)",cacheWrite1h:"Cache write (1h)"},unit:{per1mTokens:"/ 1M tokens",perImage:"/ image",perSecond:"/ sec",perCall:"/ call"},freeCovered:"Free allowance ({{tokens}} tokens)",freeCoveredNoCount:"Free allowance"},cRt={noPreview:"No preview available",video:"Video"},dRt={free:"Free"},uRt={title:BTt,description:FTt,actions:zTt,cacheHit:qTt,cancelJob:HTt,col:VTt,columns:KTt,empty:GTt,filter:WTt,meta:YTt,pager:QTt,range:XTt,source:ZTt,tps:JTt,drawer:eRt,status:tRt,type:nRt,finishReason:aRt,stream:oRt,costBreakdown:sRt,tokensBreakdown:rRt,time:iRt,userCost:lRt,export:{label:"Export CSV",exporting:"Exporting…",done:"Exported {{n}} rows.",truncated:"Exported the first {{n}} rows. Narrow the time range to export the rest.",failed:"Export failed. Please try again."},media:cRt,cost:dRt},mRt="Models",pRt="Browse every available model, its context window, input/output price, and capabilities — and favorite the ones you use most.",fRt={all:"All",favorites:"My favorites",free:"Free",benefit:"Benefit",hot:"Hot"},gRt={capability:"Type",allCapabilities:"All types",capability_text:"Text",capability_image:"Image",capability_audio:"Audio",capability_video:"Video",provider:"Provider",allProviders:"All providers",protocol:"Protocol",allProtocols:"All protocols",sort:"Sort",search:"Search",searchPlaceholder:"Model / maker",context:"Context",allContexts:"Any length",mobileTitle:"Filters"},hRt="Featured",yRt="Newest",vRt="Top weekly",bRt="Name (A-Z)",xRt="Price (low to high)",$Rt="Price (high to low)",wRt="Context length",kRt="Latency",CRt="Throughput",SRt="OpenAI Chat",ARt="OpenAI Responses",TRt="Anthropic",RRt="Vertex AI",PRt="OpenAI Images",_Rt="OpenAI Video",jRt={label:"Models",model:"Model",provider:"Provider",capabilities:"Capabilities",context:"Context",price:"Price",discount:"Discount",action:"Action",tryIt:"Try it",type:"Type",maxOutput:"Max output",copyId:"Copy model ID",copied:"Copied",usage:"Usage",stability:"Stability",protocols:"Protocols",openDetail:"Open model detail"},NRt="Hot",DRt="Benefit",MRt="Free",ERt="Coming Soon",IRt={add:"Add favorite",remove:"Remove favorite"},ORt={favorites:"No favorites yet",noMatch:"No matching models"},LRt="Text",URt="Image",BRt="File",FRt="Video",zRt="Audio",qRt="Embeddings",HRt="Vision",VRt="Tool calling",KRt="JSON mode",GRt="Image generation",WRt="Image edit",YRt="Text",QRt="Image",XRt="Video",ZRt="Audio",JRt="Embedding",ePt="Official",tPt="Kiro",nPt="from",aPt="/ call",oPt="/ sec",sPt="/ 1M",rPt="Fast",iPt="Free",lPt={ariaLabel:"Price currency",usd:"USD",rmb:"RMB (¥)",settlement:"Prices shown in RMB at a fixed {{rate}} rate, for reference only; your wallet is always billed in USD by actual usage."},cPt="Top-up required",dPt={title:mRt,description:pRt,tabs:fRt,filters:gRt,sort_featured:hRt,sort_newest:yRt,sort_top_weekly:vRt,sort_name:bRt,sort_price_asc:xRt,sort_price_desc:$Rt,sort_context:wRt,sort_latency:kRt,sort_throughput:CRt,protocol_openai_chat:SRt,protocol_openai_responses:ARt,protocol_anthropic_messages:TRt,protocol_google_vertex_ai:RRt,protocol_openai_images:PRt,protocol_openai_sora:_Rt,table:jRt,badge_hot:NRt,badge_benefit:DRt,badge_free:MRt,badge_unavailable:ERt,favorite:IRt,empty:ORt,modality_text:LRt,modality_image:URt,modality_file:BRt,modality_video:FRt,modality_audio:zRt,modality_embeddings:qRt,capability_vision:HRt,capability_tool_calling:VRt,capability_json_mode:KRt,capability_image_generation:GRt,capability_image_edit:WRt,type_text:YRt,type_image:QRt,type_video:XRt,type_audio:ZRt,type_embedding:JRt,provider_official:ePt,provider_kiro:tPt,price_from:nPt,price_perCall:aPt,price_perSec:oPt,price_per1m:sPt,price_fast:rPt,price_free:iPt,currency:lPt,badge_requiresTopup:cPt},uPt={main:"Main",utility:"Utility",console:"Console",openNavigation:"Open navigation",collapse:"Collapse sidebar",expand:"Expand sidebar"},mPt={platform:"Platform",chat:"Chat",models:"Models",logs:"Logs",jobs:"Jobs",apiKeys:"API keys",usage:"Usage",b
779illing:"Billing",freeTokens:"Free Tokens",referrals:"Referrals",support:"Support",settings:"Settings",admin:"Admin",balance:"Balance",helpSupport:"Help & Support",announcements:"Announcements",announcementsTitle:"Announcements",announcementsEmpty:"No announcements yet. Check back soon.",announcementsTicketUnread:"{{count}} ticket(s) with new replies",tasks:"Task Wall",tagNew:"NEW"},pPt={title:"Notifications",markAllRead:"Mark all read",loading:"Loading…",emptyTitle:"You're all caught up",emptyBody:"New notifications will show up here."},fPt={staff:"Staff"},gPt={dashboard:"Dashboard",users:"Users",billing:"Billing",usage:"Usage",rateLimits:"Rate Limits",access:"Signup access",staff:"Team",growth:"User growth",models:"Models",announcements:"Announcements",upstream:"Upstream",auditLogs:"Audit Logs",webhooks:"Webhooks",support:"Support",campaigns:"Campaigns",domainRules:"Email domains"},hPt={aria:uPt,public:{models:"Models",pricing:"Pricing",docs:"Docs",blog:"Blog",changelog:"Changelog"},console:mPt,notifications:pPt,adminGroups:fPt,admin:gPt},yPt={title:"Welcome to OneHop",body:"One URL for every model. Let's take 30 seconds to show you around.",start:"Show me",skip:"Skip"},vPt={models:{title:"Browse the models",body:"See every model you can call and what each costs, on one page.",cta:"Open models"},keys:{title:"Create your first API key",body:"Click here to mint a key, then point any tool at OneHop with it."},balance:{title:"Your balance",body:"Top up as you go. Unused balance is refundable anytime."}},bPt={next:"Next",back:"Back",done:"Done",stepOf:"{{current}} / {{total}}"},xPt={welcome:yPt,steps:vPt,nav:bPt},$Pt="Failed to load",wPt="Nothing here yet.",kPt="More details",CPt={failedLoad:$Pt,emptyDescription:wPt,moreDetails:kPt},SPt="All",APt="Success",TPt="Pending",RPt="Repairing",PPt="Failed",_Pt="Refunded",jPt="Active",NPt="Disabled",DPt="Exhausted",MPt="Reserved",EPt="Redeemed",IPt="Suspended",OPt="Deleted",LPt="Normal",UPt="Watchlisted",BPt="Blocked",FPt="Granted",zPt="Frozen",qPt="Released",HPt="Cancelled",VPt="Partially reversed",KPt="Reversed",GPt="Skipped",WPt="Expired",YPt="Denied",QPt="Draft",XPt="Published",ZPt="Deprecated",JPt="Archived",e_t="Hidden",t_t="Created",n_t="Checkout opened",a_t="Paid",o_t="Canceled",s_t="OpenAI Chat",r_t="OpenAI Responses",i_t="Anthropic Messages",l_t="Google Vertex AI",c_t="OpenAI Images",d_t="Usage charge",u_t="Signup bonus",m_t="Promo bonus",p_t="Referral bonus",f_t="Compensation bonus",g_t="Top-up bonus",h_t="Manual adjustment",y_t="Credit purchase",v_t="Payment",b_t="Signup bonus",x_t="Coupon",$_t="Admin grant",w_t="API usage",k_t="Signup bonus",C_t="Manual grant",S_t="Sync",A_t="Stream",T_t="Token billing",R_t="Request billing",P_t="Image billing",__t="Low reasoning",j_t="Medium reasoning",N_t="High reasoning",D_t="Not applicable",M_t="Unknown",E_t={all:SPt,success:APt,pending:TPt,repairing:RPt,failed:PPt,refunded:_Pt,active:jPt,disabled:NPt,exhausted:DPt,reserved:MPt,redeemed:EPt,suspended:IPt,deleted:OPt,normal:LPt,watchlisted:UPt,blocked:BPt,granted:FPt,frozen:zPt,released:qPt,cancelled:HPt,partially_reversed:VPt,reversed:KPt,skipped:GPt,expired:WPt,denied:YPt,draft:QPt,published:XPt,deprecated:ZPt,archived:JPt,public:"Public",hidden:e_t,created:t_t,checkout_opened:n_t,paid:a_t,canceled:o_t,openai_chat:s_t,openai_responses:r_t,anthropic_messages:i_t,google_vertex_ai:l_t,openai_images:c_t,usage_charge:d_t,bonus_signup_grant:u_t,bonus_promo_grant:m_t,bonus_referral_grant:p_t,bonus_compensation_grant:f_t,bonus_topup_grant:g_t,manual_adjustment:h_t,credit_purchase:y_t,payment:v_t,signup:b_t,coupon:x_t,admin:$_t,api:w_t,signup_bonus:k_t,manual:C_t,sync:S_t,stream:A_t,token:T_t,request:R_t,image:P_t,low:__t,medium:j_t,high:N_t,not_applicable:D_t,unknown:M_t},I_t="Total {{count}}",O_t="{{count}} / page",L_t={total:I_t,perPage:O_t},U_t="Invite & Earn",B_t="Share your personal link. Referral credits are tracked for both sides after eligible top-ups.",F_t="Could not load your referrals",z_t="Your invite link",q_t="Share",H_t="Invite copied. Paste it into WeChat to share.",V_t="Copy",K_t="Copied",G_t="WeChat",W_t="X",Y_t="Telegram",Q_t="Reddit",X_t="LinkedIn",Z_t="WhatsApp",J_t="Email",ejt="Facebook",tjt={default:{title:"Call every AI model through one OneHop API",body:"Sign up with my invite link — top up within {{firstWindowDays}} days and we both earn {{percent}}% back."},x:{title:"One API for every AI model 🤖",body:"Top up within {{firstWindowDays}} days with my link and we each get {{percent}}% back. 🚀"},telegram:{title:"Build with every AI model through OneHop",body:"Use my invite link — a first top-up within {{firstWindowDays}} days earns us both {{percent}}% referral credit."},whatsapp:{title:"Build with every AI model — OneHop",body:"Join with my invite link. Top up within {{firstWindowDays}} days and we both get {{percent}}% back."},reddit:{title:"OneHop — one API for every AI model. My invite gets us both {{percent}}% back on your first top-up",body:"Top up within {{firstWindowDays}} days and we both earn {{percent}}% referral credit."},email:{title:"An invite to OneHop — every AI model through one API",body:`Hi,
780
781I'm using OneHop to call every major AI model through a single API. Sign up with my invite link, and after your first top-up we both earn referral credit.
782
783Reward tiers: {{tiers}}.
784
785Thanks!`},wechat:{title:"OneHop — every AI model through one API",body:"Sign up with my invite link. Top up within {{firstWindowDays}} days and we both earn {{percent}}% referral credit."}},njt="Rewards are visible immediately after payment, frozen during the refund window, then released as OneHop referral credit.",ajt="Released after {{days}} days.",ojt={referrer:"Inviter",referee:"Invitee"},sjt={referrer:": earn referral credit when someone you invite tops up — {{tiers}}.",referee:": sign up with the link, then top up to earn too — {{tiers}}."},rjt={dayRange:"days {{fromDay}}-{{untilDay}
785}",dayOpenEnded:"day {{fromDay}}+"},ijt="Total earned",ljt="Available earned",cjt="Frozen earned",djt="Invited",ujt="Active",mjt="Available received",pjt="Frozen received",fjt="Cancelled / reversed",gjt="People you invited",hjt="Cashback history",yjt={user:"User",joined:"Joined",topups:"Top-ups",earned:"You earned",frozen:"Frozen",date:"Date",event:"Event",topupAmount:"Their top-up",rate:"Rate",releaseAt:"Release",cashback:"Cashback",status:"Status"},vjt={title:"No invites yet",description:"Share your link to start earning."},bjt={inviteeSignedUp:"Invitee signed up",youSignedUp:"You signed up by invite",inviteePaid:"Invitee paid",youPaid:"Your invited payment"},xjt={frozen:"Frozen",released:"Released",cancelled:"Cancelled",partially_reversed:"Partially reversed",reversed:"Reversed",failed:"Failed",skipped:"Skipped"},$jt={title:U_t,description:B_t,error:F_t,yourLink:z_t,shareVia:q_t,wechatCopied:H_t,copy:V_t,copied:K_t,wechat:G_t,x:W_t,telegram:Y_t,reddit:Q_t,linkedin:X_t,whatsapp:Z_t,email:J_t,facebook:ejt,share:tjt,offer:njt,releaseDelay:ajt,role:ojt,roleOffer:sjt,policy:rjt,totalEarned:ijt,availableEarned:ljt,frozenEarned:cjt,invited:djt,active:ujt,availableReceived:mjt,frozenReceived:pjt,cancelledReversed:fjt,peopleYouInvited:gjt,history:hjt,col:yjt,empty:vjt,event:bjt,status:xjt},wjt="Settings",kjt="Manage account preferences and console defaults.",Cjt="Signed in as {{email}}",Sjt="Display name",Ajt="Locale",Tjt="Timezone",Rjt="Failed to load profile",Pjt="Failed to save",_jt="Discard changes?",jjt="You have unsaved changes. Leaving now will discard them.",Njt="Discard",Djt="Keep editing",Mjt={title:wjt,description:kjt,signedInAs:Cjt,displayName:Sjt,locale:Ajt,timezone:Tjt,failedLoad:Rjt,failedSave:Pjt,discardTitle:_jt,discardMessage:jjt,discardConfirm:Njt,keepEditing:Djt},Ejt="Task Wall",Ijt="Share OneHop with your audience and earn trial credit. We review each submission by hand.",Ojt="Link to your post",Ljt="https://…",Ujt="Submit",Bjt="Submitted — we will review it shortly.",Fjt="Accepted links: {{hosts}}",zjt="Previously rejected: {{reason}}. Fix it and submit again.",qjt={pending:"In review",approved:"Credited",rejected:"Rejected",active:"Active"},Hjt={title:"No tasks right now",description:"Check back soon — we run these campaigns periodically."},Vjt={x_quote:{title:"Quote-post us on X",description:"Quote @OneHopAI's pinned post and add your own take.",rules:["Your X account must be at least 6 months old with 10 or more followers.","Submit the link to your own quote post, not the original.","Credit lands within 2 hours of approval."]},youtube_tutorial:{title:"Publish a YouTube tutorial",description:"A 6 minute or longer video showing how you wired OneHop into your own agent.",rules:["Submit the video link once it is published.","Your YouTube channel needs 50 or more subscribers.","One per account.","Credit lands within 2 hours of approval."]},short_video:{title:"Post a short video",description:"A 40 second or longer short on TikTok or YouTube that mentions your OneHop setup.",rules:["Submit the video link once it is published.","Credit lands within 2 hours of approval."]},github_readme:{title:"Put OneHop in your GitHub README",description:"Add a OneHop credit to a repo you own. Every top-up you make afterwards earns an extra 15%.",rules:["Submit the link to the repository once the README is live.","This is permanent, not a one-off: every later top-up pays whichever is higher — our standard bonus or your 15%.","Copy-paste text is below."]}},Kjt={load:"Could not load the task wall",generic:"Could not submit",urlRequired:"Paste the link to your post first.",urlTooLong:"That link is too long.",urlMalformed:"That does not look like a valid link.",hostNotAllowed:"This task only accepts links from the platforms listed above.",notAPost:"Link to the specific post or video, not a profile or home page.",alreadySubmitted:"You have already submitted this task.",notAvailable:"This task is not available right now.",busy:"We have hit today's review capacity. Please try again tomorrow.",emailUnverified:"Verify your email address first.",accountTooNew:"Your account is not old enough for this yet.",riskFlagged:"This account cannot take part right now. Contact support if you think this is wrong.",accountInactive:"This account is not active.",deviceAlreadyClaimed:"Another account on this device has already taken part."},Gjt="Thanks to [OneHop]({{url}}) for sponsoring this project! OneHop gives you one OpenAI-compatible API key for hundreds of leading models — GPT, Claude, Gemini, DeepSeek, Kimi and Qwen. No juggling provider accounts, no code changes to switch models, and you only pay for what you use. → {{domain}}",Wjt="Copy this text",Yjt={title:Ejt,description:Ijt,urlLabel:Ojt,urlPlaceholder:Ljt,submit:Ujt,submitted:Bjt,allowedHosts:Fjt,rejectedHint:zjt,status:qjt,empty:Hjt,item:Vjt,error:Kjt,sponsorBlurb:Gjt,copyBlurb:Wjt},Qjt="Chat with us",Xjt="Support",Zjt="Open a ticket and our team will get back to you.",Jjt="New ticket",e2t="Ticket not found or has been removed.",t2t={title:"No tickets yet",body:"Hit a problem? Open a ticket and we'll help you out.",cta:"Open your first ticket"},n2t={subject:"Subject",category:"Category",status:"Status",updated:"Updated",user:"User"},a2t={billing:"Billing",technical:"Technical",account:"Account",other:"Other"},o2t={open:"Open",pending:"Pending",resolved:"Resolved",closed:"Closed"},s2t={allStatuses:"All statuses",allCategories:"All categories",search:"Search email or subject"},r2t={subject:"Subject",subjectPlaceholder:"Briefly describe your issue",category:"Category",message:"Message",messagePlaceholder:"Tell us what's going on…",attachments:"Attachments",addAttachment:"Add file",submit:"Submit ticket",cancel:"Cancel"},i2t={you:"You",support:"Support",system:"System",replyPlaceholder:"Write a reply…",send:"Send",closedNotice:"This ticket is closed. Open a new ticket if you still need help.",sendHint:"Press ⌘/Ctrl + Enter to send",back:"Back to tickets",systemStatus:{open:"Ticket reopened",pen
785ding:"Ticket marked as waiting for you",resolved:"Ticket marked as resolved",closed:"Ticket closed"}},l2t={title:"Support",resolve:"Resolve",close:"Close",reopen:"Reopen",unread:"Unread"},c2t="Load more",d2t={created:"Ticket submitted",replied:"Reply sent",statusUpdated:"Status updated",error:"Something went wrong, please try again"},u2t={liveChat:Qjt,title:Xjt,subtitle:Zjt,newTicket:Jjt,notFound:e2t,empty:t2t,columns:n2t,category:a2t,status:o2t,filters:s2t,form:r2t,thread:i2t,admin:l2t,loadMore:c2t,toast:d2t},m2t="Usage",p2t="Balance, burn rate, and where your spend goes.",f2t="Activity",g2t="No activity in this range",h2t="Usage breakdown",y2t="By API key",v2t="By model",b2t="By token type",x2t="No data",$2t="No usage in this range yet.",w2t="Estimated {{days}} days remaining at {{rate}}/day current rate.",k2t="out",C2t="cache",S2t={tokens:"Tokens",requests:"Requests",cost:"Cost"},A2t="Other",T2t="req",R2t="tok",P2t="Refreshing…",_2t="No data",j2t="Make a request to start populating this.",N2t="Top API keys",D2t="Top up",M2t={title:"Could not load usage"},E2t={firstToken:"first token",latency:"Avg latency",requests:"Requests",spend:"Spend",spendSub:"billed this period",successRate:"{{rate}}% success",tokens:"Tokens",textDuration:"text",mediaDuration:"image/video",cacheHit:"{{rate}}% cached",projected:"≈ {{amount}}/mo",vsPrevious:"vs previous period"},I2t={all:"All time",custom:"Custom",last1h:"Last 1 hour",last30d:"Last 30 days",last7d:"Last 7 days",thisMonth:"This month",today:"Today",yesterday:"Yesterday",byMonth:"By month"},O2t={failed:"Failed",success:"Success"},L2t={cacheRead:"Cache read",cacheWrite:"Cache write",cacheWrite1h:"Cache write 1h",cacheWrite5m:"Cache write 5m",completion:"Output",prompt:"Input"},U2t={body:"Send a request from your terminal or open the playground — usage shows up here within seconds.",openPlayground:"Open playground",title:"Your key is ready"},B2t={body:"Create your first API key to route requests through one URL, then watch your usage land here.",createKey:"Create API key",title:"Welcome to OneHop",tryPlayground:"Try playground"},F2t="Refresh",z2t="{{count}} successful in current filter",q2t="Total tokens",H2t="In {{input}} / out {{output}}",V2t="Billed credit",K2t="{{cost}} upstream actual cost",G2t="Avg latency",W2t="First token {{duration}}",Y2t="30-day activity",Q2t="Successful requests, token volume, and billed credit.",X2t="Loading usage trend",Z2t="No usage trend",J2t="Usage trend appears after successful requests.",eNt="Top models",tNt="Billed credit by model over 30 days.",nNt="No model usage yet",aNt="Model breakdown appears after successful requests.",oNt="Model",sNt="All models",rNt="Status",iNt="Protocol",lNt="Rows",cNt="Reset",dNt="Usage records",uNt="API key",mNt="Endpoint",pNt="Type",fNt="Tokens",gNt="Cost",hNt="Duration",yNt="Time",vNt="User-Agent",bNt="Details",xNt="Request detail",$Nt="Usage record details and billing metadata.",wNt="Request ID",kNt="Operation",CNt="Input tokens",SNt="Output tokens",ANt="Cache read tokens",TNt="Cache write tokens",RNt="Input cost",PNt="Output cost",_Nt="Cache read cost",jNt="Cache write cost",NNt="Error code",DNt="Error message",MNt="Not found.",ENt="credit",INt="Total {{count}}",ONt="Loading usage records",LNt="No usage records",UNt="Try a different filter set.",BNt="Records appear once requests flow through your API keys.",FNt="Page {{page}} · showing {{shown}} of {{total}} matching records",zNt="Previous",qNt="Next",HNt={activeDays:"Active days",longestStreak:"Longest streak",daysValue:"{{n}} days",totalSpend:"Total this period",peakDay:"Busiest day"},VNt="Credit",KNt="Tokens",GNt="Requests",WNt={time:"Time",apiKey:"API Key",model:"Model",reasoningEffort:"Reasoning Effort",endpoint:"Endpoint",type:"Type",billingMode:"Billing Mode",inputTokens:"Input Tokens",outputTokens:"Output Tokens",cacheReadTokens:"Cache Read Tokens",cacheWriteTokens:"Cache Write Tokens",totalTokens:"Total Tokens",billedCredit:"Billed Credit",firstTokenMs:"First Token Ms",durationMs:"Duration Ms",status:"Status",userAgent:"User-Agent"},YNt={mon:"Mon",wed:"Wed",fri:"Fri"},QNt="Less",XNt="More",ZNt={title:m2t,description:p2t,activity:f2t,activityEmpty:g2t,breakdown:h2t,byApiKey:y2t,byModel:v2t,byTokenType:b2t,chartEmpty:x2t,chartEmptyHint:$2t,burnRate:w2t,in:"in",out:k2t,cache:C2t,metric:S2t,other:A2t,req:T2t,tok:R2t,refreshing:P2t,topEmpty:_2t,topEmptyHint:j2t,topKeys:N2t,topUp:D2t,error:M2t,kpi:E2t,range:I2t,requests:O2t,tokenType:L2t,n
785oRequests:U2t,welcome:B2t,refresh:F2t,successfulFilter:z2t,totalTokens:q2t,inOut:H2t,billedCredit:V2t,upstreamActualCost:K2t,avgLatency:G2t,firstToken:W2t,activityTitle:Y2t,activityDescription:Q2t,loadingTrend:X2t,noUsageTrend:Z2t,trendDescription:J2t,topModels:eNt,topModelsDescription:tNt,noModelUsage:nNt,noModelUsageDescription:aNt,model:oNt,allModels:sNt,status:rNt,protocol:iNt,rows:lNt,reset:cNt,tableLabel:dNt,apiKey:uNt,endpoint:mNt,type:pNt,tokens:fNt,cost:gNt,duration:hNt,time:yNt,userAgent:vNt,details:bNt,requestDetail:xNt,detailDescription:$Nt,requestId:wNt,operation:kNt,inputTokens:CNt,outputTokens:SNt,cacheReadTokens:ANt,cacheWriteTokens:TNt,inputCost:RNt,outputCost:PNt,cacheReadCost:_Nt,cacheWriteCost:jNt,errorCode:NNt,errorMessage:DNt,notFound:MNt,creditSuffix:ENt,total:INt,loadingRecords:ONt,noRecords:LNt,differentFilters:UNt,recordsEmpty:BNt,pageSummary:FNt,previous:zNt,next:qNt,stat:HNt,chartCredit:VNt,chartTokens:KNt,chartRequests:GNt,csv:WNt,weekday:YNt,activityLess:QNt,activityMore:XNt},JNt="Signup access",eDt="Controlled-launch registration gate. Approved emails, domains, existing users, and active admins can create accounts.",tDt="Signup access allowlist",nDt="No allowlist entries",aDt="Email / domain",oDt="Note",sDt="Status",rDt="Registration",iDt="Expires",lDt="Invites",cDt="Updated",dDt="Action",uDt="Add",mDt="Bulk add",pDt="Edit",fDt="Save",gDt="Invite",hDt="Restore",yDt="Remove",vDt="Add signup access",bDt="Edit {{email}}",xDt="Bulk add signup access",$Dt="Add a specific email or a whole domain with @company.com. Existing users and active admins are always allowed.",wDt="Paste one email or @domain per line. Invalid and duplicate rows will be skipped.",kDt="Email or domain",CDt="[email protected] or @company.com",SDt="Use @company.com to approve an entire domain.",ADt="Note (optional)",TDt="e.g. founding team",RDt="Expiry (optional)",PDt="Leave empty for no expiry. Expired entries no longer allow new signups.",_Dt="Emails / domains",jDt=`[email protected]
786[email protected]
787@partner.com`,NDt="Search",DDt="Search email or domain",MDt="Status",EDt="Access check",IDt="[email protected]",ODt="Check",LDt="Allowed",UDt="Denied",BDt={existing_user:"Existing user always allowed",active_admin:"Active admin always allowed",email_allowlist:"Matched exact email",domain_allowlist:"Matched domain rule",not_allowed:"No active rule matched"},FDt="Registered",zDt="Not registered",qDt="Admin",HDt="Domain rule",VDt="Never",KDt="Added to signup access.",GDt="Signup access updated.",WDt="Added {{count}} entries.",YDt="Invite sent.",QDt="Entry restored.",XDt="Removed from signup access.",ZDt="Remove {{email}} from signup access? They can no longer create a new account unless another rule allows them.",JDt={title:"Email domain rules",description:"Hot-configurable email-domain lists layered on the built-in baseline. Blacklisted domains are blocked at signup; mainstream domains skip the watchlist.",add:"Add domain",addTitle:"Add domain rule",addDescription:"Blacklist blocks signup (403). Mainstream marks the domain as trusted so new users are not watchlisted.",kindLabel:"List",kindBlacklist:"Blacklist — block signup",kindMainstream:"Mainstream — skip watchlist",domainLabel:"Domain",domainPlaceholder:"example.com",noteLabel:"Note",notePlaceholder:"Optional — why this domain",search:"Search",searchPlaceholder:"Filter by domain",kindFilter:"List",allKinds:"All lists",statusFilter:"Status",statusActive:"Active",statusRevoked:"Removed",statusAll:"All",label:"Email domain rules",empty:"No domain rules",colDomain:"Domain",colKind:"List",colNote:"Note",colAddedBy:"Added by",colCreated:"Created",status:"Status",action:"Action",remove:"Remove",restore:"Restore",confirmRemove:"Remove rule for {{domain}}?",added:"Domain rule added",removed:"Domain rule removed",restored:"Domain rule restored",badgeBlacklist:"Blacklist",badgeMainstream:"Mainstream"},eMt={title:JNt,description:eDt,label:tDt,empty:nDt,email:aDt,note:oDt,status:sDt,registration:rDt,expiresAt:iDt,invites:lDt,updatedAt:cDt,action:dDt,add:uDt,bulkAdd:mDt,edit:pDt,save:fDt,invite:gDt,restore:hDt,revoke:yDt,newTitle:vDt,editTitle:bDt,bulkTitle:xDt,formDescription:$Dt,bulkDescription:wDt,emailLabel:kDt,emailPlaceholder:CDt,emailHint:SDt,noteLabel:ADt,notePlaceholder:TDt,expiresAtLabel:RDt,expiresAtHint:PDt,bulkEntriesLabel:_Dt,bulkEntriesPlaceholder:jDt,search:NDt,searchPlaceholder:DDt,statusFilter:MDt,checkLabel:EDt,checkPlaceholder:IDt,check:ODt,checkAllowed:LDt,checkDenied:UDt,checkReasons:BDt,registered:FDt,notRegistered:zDt,adminAllowed:qDt,domainRule:HDt,never:VDt,added:KDt,updated:GDt,bulkAdded:WDt,invited:YDt,restored:QDt,revoked:XDt,confirmRevoke:ZDt,domainRules:JDt},tMt="Ops Billing",nMt="Payments, wallets and refunds across all users.",aMt={payments:"Payments",wallets:"Wallets",refunds:"Refunds"},oMt="User email",sMt="Search by email...",rMt="Created",iMt="Created",lMt="Amount (USD)",cMt="Min",dMt="Max",uMt="Refunds",mMt="No refunds",pMt="Refund",fMt="Type",gMt="Full refund",hMt="Partial refund",yMt="Original payment",vMt="Wallets",bMt="Wallet",xMt="User",$Mt="Total",wMt="Purchased",kMt="Bonus",CMt="No wallets",SMt="Payments",AMt="Payment status",TMt="No payments",RMt="Payment",PMt="Status",_Mt="Amount",jMt="Paid",NMt="Refund",DMt="Not refundable (status must be paid)",MMt="View in Stripe Dashboard",EMt="Failed + dead-letter webhooks in last 7 days. 0=green, 1-9=yellow, 10+=red.",IMt="unhealthy",OMt="Refund {{id}}",LMt="This will refund {{user}} via Stripe. The platform fee shown below is deducted from the amount returned; uncheck it to waive. Promotional credits granted with the original payment will be forfeited proportionally.",UMt="Refund amount (USD)",BMt="Max ${{value}}",FMt="Reason",zMt="Cargando la vista previa del reembolso…",qMt="No se pudo cargar la vista previa del reembolso. No se puede reembolsar hasta que c
787argue.",HMt="No se encontró ninguna transacción reembolsable; es posible que este pago ya esté totalmente reembolsado.",VMt="Pagado",KMt="Ya reembolsado",GMt="Este reembolso",WMt="Crédito recuperado",YMt="Incluye {{amount}} de crédito del descuento de cupón recuperado proporcionalmente",QMt="Incluye {{amount}} de crédito adicional otorgado recuperado proporcionalmente",XMt="Bono revocado",ZMt="Con este reembolso se revocará el bono promocional de {{amount}}.",JMt="Devuelto vía Stripe",eEt="Cobrar comisión de plataforma ({{fee}}) — cubre el coste de Stripe",tEt="Comisión ({{fee}})",nEt="El importe supera el máximo reembolsable {{value}}",aEt="Introduce un importe positivo válido",oEt="El usuario ya consumió parte del crédito comprado. Máximo reembolsable: {{value}}",sEt="Este pago ya está totalmente reembolsado",rEt="El importe neto tras comisiones es demasiado bajo. Reembolsa al menos {{value}}.",iEt="Cancel",lEt="Issue refund",cEt="Submitting...",dEt="Refund submitted",uEt="Stripe will return the funds within 1-3 business days. Audit log written.",mEt="Refund failed",pEt={title:tMt,description:nMt,tabs:aMt,emailFilter:oMt,emailPlaceholder:sMt,created:rMt,createdRange:iMt,amountRange:lMt,amountMin:cMt,amountMax:dMt,refunds:uMt,
787noRefunds:mMt,refundId:pMt,refundType:fMt,typeRefund:gMt,typePartialRefund:hMt,originalPayment:yMt,wallets:vMt,wallet:bMt,user:xMt,total:$Mt,purchased:wMt,bonus:kMt,noWallets:CMt,payments:SMt,paymentStatus:AMt,noPayments:TMt,payment:RMt,status:PMt,amount:_Mt,paid:jMt,refund:NMt,notRefundable:DMt,viewInStripe:MMt,webhookHealthHint:EMt,unhealthyWebhooks:IMt,refundConfirmTitle:OMt,refundConfirmBody:LMt,refundAmountLabel:UMt,refundMaxHint:BMt,refundReasonLabel:FMt,refundPreviewLoading:zMt,refundPreviewFailed:qMt,refundNoRefundableTx:HMt,refundPaidRow:VMt,refundAlreadyRefundedRow:KMt,refundThisRefundRow:GMt,refundCreditReclaimRow:WMt,refundCreditCouponNote:YMt,refundCreditExtraNote:QMt,refundBonusReverseRow:XMt,refundBonusForfeitWarning:ZMt,refundStripeReturnRow:JMt,refundFeeToggle:eEt,refundPlatformFeeRow:tEt,refundExceedsMax:nEt,refundAmountInvalid:aEt,refundInsufficientCredit:oEt,refundAlreadyFull:sEt,refundBelowMin:rEt,cancel:iEt,confirmRefund:lEt,submitting:cEt,refundSubmittedTitle:dEt,refundSubmittedBody:uEt,refundFailedTitle:mEt},fEt="Campaigns",gEt="Audience segments, restricted-model access, model discounts, and targeted credit grants.",hEt={mobileLabel:"Sección de campañas",segments:"Audiences",access:"Model access",discounts:"Model discounts",grants:"Targeted grants",recurring:"Periodic grants"},yEt="Status",vEt="Actions",bEt="All users",xEt="Always",$Et="No expiry",wEt="Active window",kEt="Leave blank for always-on. Times are end-of-day on the chosen dates.",CEt="Valid from",SEt="Valid to",AEt="Pause",TEt="Resume",REt="Add",PEt="Remove",_Et="Delete",jEt="Clear",NEt="Close",DEt={allKinds:"Todos los tipos",segmentKindStatic:"Estático",segmentKindDynamic:"Dinámico",grantKindGrant:"Conceder",grantKindRevoke:"Revocar",allStatuses:"Todos los estados",statusActive:"Activo",statusPaused:"En pausa",statusArchived:"Archivado",statusEnded:"Finalizado",statusPending:"Pendiente",statusProcessing:"Procesando",statusCompleted:"Completado",statusFailed:"Fallido"},MEt={title:"Audiences",create:"New audience",empty:"No audiences yet. Create one to target access, discounts, and grants.",name:"Name",namePlaceholder:"e.g. China power users",description:"Description",kind:"Kind",kind_static:"Static",kind_dynamic:"Dynamic",kindHint:"Static = a hand-picked list of users. Dynamic = users matching a rule, refreshed on materialize.",members:"Members",materialized:"Last refreshed",materializeDone:"Materialized {{count}} members",basics:"Basics",sheetDescription:"Audiences group users so you can target model access, discounts, and grants.",saved:"Audience saved",created:"Audience created",rule:"Matching rule",ruleHint:"All conditions must match (AND). An empty rule matches no one.",countryIn:"Country in",countryInHint:"Comma-separated ISO-2 codes, e.g. CN, US, JP.",signupAfter:"Signed up after",signupBefore:"Signed up before",minSpend:"Min cumulative spend (USD)",minSpendHint:"Only users whose lifetime spend is at least this.",previewing:"Estimating…",matchCount:"Estimated match: {{value}} users",membersTitle:"Members",membersHint:"Search and add users. Rule-matched members are read-only.",addMembers:"Add users",searchUsers:"Search by email or ID",noUsers:"No matching users.",noMembers:"No members yet.",membersAdded:"{{count}} member added",membersAdded_plural:"{{count}} members added",source_manual:"Manual",source_rule:"Rule",materializeTitle:"Materialize",materializeHint:"Snapshot the rule into the member list. Re-run anytime to refresh.",materialize:"Materialize now",materializing:"Materializing…",materializeConfirm:"Refresh members from the current rule? This replaces the rule-matched snapshot.",lastMaterialized:"Last materialized {{value}}",neverMaterialized:"Never materialized",deleteSegment:"Delete audience",deleteConfirm:"Delete this audience? Access, discounts, and grants referencing it will lose this targeting."},EEt={title:"Model access",create:"Grant access",empty:"No access grants yet.",model:"Model",segment:"Audience",target:"Target",validFrom:"Valid from",validTo:"Valid to",sheetDescription:"Give a restricted model to an audie
787nce for an optional time window.",created:"Access granted",statusUpdated:"Status updated",deleteConfirm:"Remove this access grant?",noSegmentsTitle:"Create an audience first",noSegmentsDescription:"Access is granted to an audience. Create an audience on the Audiences tab, then come back to grant model access.",publicHint:"This model is public — everyone can already use it.",publicModelTitle:"Model is public",publicModelWarning:"{{model}} is public, so this grant has no effect until it is set to restricted on the Models page. Flip it to restricted there to gate it to this audience.",createAnyway:"Create anyway"},IEt={title:"Model discounts",create:"New discount",empty:"No discounts yet.",model:"Model",audience:"Audience",audienceHint:"Leave as all users to discount for everyone.",discount:"Discount",window:"Window",live:"Live",end:"End",amount:"Discount",target:"Target",name:"Internal name",nameHint:"Optional label for your own reference.",percentLabel:"Extra off the platform price",percentHint:"1–99%. Applied on top of our platform price (our_price), not the official price.",percentError:"Enter a value between 1 and 99.",previewPlatform:"Discounted platform price",previewVsOfficial:"Saved vs official",pickStart:"Pick a start date",sheetDescription:"Discounts apply on top of the platform price. The official price is shown for comparison only.",created:"Discount created",saved:"Discount saved",statusUpdated:"Status updated",deleteConfirm:"Delete this discount?",liveReadonly:"This discount is live — value, window, and name are locked. Pause or end it to make changes.",terminalReadonly:"This discount has ended and is read-only."},OEt={title:"Targeted grants",create:"New grant",empty:"No targeted grants yet.",time:"Time",kind:"Kind",kind_grant:"Grant",kind_revoke:"Revoke",model:"Models",modelHint:"Credit is shared across the selected models — spending on any of them draws from the same balance.",pickModels:"Pick models",nModels:"{{count}} models selected",pasteEmails:"Bulk add by email",pasteEmailsPlaceholder:"[email protected], [email protected] — separated by newline, comma or semicolon",importEmails:"Parse & add",importMatched:"Matched {{count}} users.",importUnmatched:"{{count}} emails not found:",importInvalid:"{{count}} invalid entries skipped:",importInactive:"{{count}} matched but inactive — will be skipped:",preset7d:"7 days",preset30d:"30 days",preset90d:"90 days",total:"Total",notifyYes:"Yes",notifyNo:"No",recipients:"Recipients",amount:"Amount",expiry:"Expires",expiryHint:"Optional. Unused balance expires on this date.",audience:"Audience",bySegment:"By audience",byUsers:"Specific users",segment:"Audience",users:"Users",searchUsers:"Search by email or ID",noUsers:"No matching users.",grantDetails:"Grant details",amountEach:"Amount per recipient (USD)",amountHint:"0.01–2000 per recipient.",notifyEmail:"Email recipients",note:"Note",summary:"{{count}} recipients × {{amount}} = {{total}} total",send:"Send grant",sending:"Queuing…",queued:"Grant queued — fanning out to recipients",confirmTitle:"Send targeted grant?",confirmMessage:"Grant {{amount}} each to {{count}} recipients ({{total}} total)?",confirmSend:"Send grant",sheetDescription:"Grant model-restricted credit to an audience or a hand-picked list of users.",batchTitle:"Grant batch",succeeded:"Succeeded",failed:"Failed",revokedAmount:"Reclaimed",completedAt:"Completed",revoke:"Revoke",revokeConfirm:"Reclaim unused balance from {{count}} recipients of {{model}}?",revokeQueued:"Revoke queued"},LEt={title:"Periodic grants",create:"New periodic grant",editTitle:"Edit periodic grant",empty:"No periodic grants yet. Create one to give recurring free tokens or credit on a daily or weekly cadence.",sheetDescription:"Free tokens or restricted credit, refreshed for an audience every period (lazily, on first use).",basics:"Basics",name:"Name",namePlaceholder:"e.g. Daily free Kimi tokens",unit:"Unit",unitHint:"Tokens = free token allowance per period. USD = restricted credit (single model only).",unitLocked:"Unit is fixed after creation — create a new campaign to switch.",unit_tokens:"Tokens",unit_usd:"USD",allUnits:"All units",targeting:"Targeting",models:"Models",modelsHint:"Free tokens are usable across all selected models.",model:"Model",usdSingleModelHint:"USD grants are restricted to one model — multi-model would make spend unattributable.",pickModels:"Pick models",nModels:"{{count}} model selected",nModels_plural:"{{count}}
787 models selected",audience:"Audience",audienceHint:"Leave as all users to grant to everyone.",schedule:"Amount & schedule",perPeriod:"Per period",tokensHint:"Positive integer, e.g. 100000 tokens per period.",usdHint:"0.01–2000 USD per period.",cadence:"Cadence",cadence_daily:"Daily",cadence_weekly:"Weekly",anchorTz:"Anchor timezone",anchorTzHint:"Period boundaries follow local midnight in this timezone.",startsAt:"Starts",startsAtHint:"Optional. Blank = effective immediately.",endsAt:"Ends",endsAtHint:"Optional. Blank = no end date.",immediately:"Immediately",excludeRisky:"Exclude risky accounts",thisPeriod:"This period (users · used/granted)",allStatuses:"All statuses",status_draft:"Draft",status_active:"Active",status_paused:"Paused",status_archived:"Archived",created:"Periodic grant created",saved:"Periodic grant saved"},UEt={title:fEt,description:gEt,tabs:hEt,status:yEt,actions:vEt,allUsers:bEt,always:xEt,noExpiry:$Et,window:wEt,windowHint:kEt,validFrom:CEt,validTo:SEt,pause:AEt,resume:TEt,actionAdd:REt,actionRemove:PEt,actionDelete:_Et,actionClear:jEt,actionClose:NEt,filters:DEt,segments:MEt,access:EEt,discounts:IEt,grants:OEt,recurring:LEt},BEt="Announcements",FEt="Banners shown at the top of the marketing site and the console.",zEt="Banners",qEt="Top-of-page banners shown on www and console.",HEt="New Banner",VEt="No banners yet. Create one to show a top-of-page announcement.",KEt="Message",GEt="Supports inline links: [text](https://… or /path). Multiple links allowed.",WEt="CTA Label",YEt="CTA Link",QEt="Severity",XEt="Audience",ZEt="Starts At",JEt="Ends At",eIt="Dismissible",tIt="Status",nIt="Archive",aIt="Archive this banner? It will no longer be shown to users.",oIt="New Banner",sIt="Edit Banner",rIt="Title",iIt="Type",lIt="Content",cIt="Display type",dIt="Banner",uIt="Modal",mIt="Draft",pIt="Active",fIt="Info",gIt="Warning",hIt="Critical",yIt="Console only",vIt="Public site only",bIt="Both",xIt="Hero image",$It="Upload an image, or paste an https URL. Optional. PNG / JPEG / WebP / GIF, up to 5MB.",wIt="Upload",kIt="Uploading…",CIt="Remove",SIt="Only PNG, JPEG, WebP and GIF images are supported.",AIt="Image must be 5MB or smaller.",TIt="Upload failed, please try again.",RIt="Title",PIt="Body",_It="Action buttons",jIt="Button label",NIt="Button link",DIt="Style",MIt="Add button",EIt="Remove",IIt="Primary",OIt="Secondary",LIt="Link",UIt="Simplified Chinese (source)",BIt="Fill in Simplified Chinese only, then translate to other languages in one click.",FIt="Translate to all languages",zIt="Translating…",qIt="Other languages (translated, editable)",HIt="Translated {{ok}} languages",VIt="{{failed}} languages failed — fill in manually or retry",KIt="Chinese source changed but translations weren't refreshed — click Translate again or non-Chinese users will see outdated copy.",GIt="Re-show to users who already dismissed it",WIt="Fill in the Simplified Chinese body first.",YIt={title:BEt,description:FEt,annTitle:zEt,annDescription:qEt,annNewButton:HEt,annEmpty:VEt,annMessage:KEt,annInlineLinkHint:GEt,annCtaText:WEt,annCtaUrl:YEt,annSeverity:QEt,annAudience:XEt,annStartsAt:ZEt,annEndsAt:JEt,annDismissible:eIt,annStatus:tIt,annArchive:nIt,annArchiveConfirm:aIt,annCreateTitle:oIt,annEditTitle:sIt,annColTitle:rIt,annColType:iIt,annColContent:lIt,annDisplayType:cIt,annTypeBanner:dIt,annTypeModal:uIt,annStatusDraft:mIt,annStatusActive:pIt,annSevInfo:fIt,annSevWarning:gIt,annSevCritical:hIt,annAudConsole:yIt,annAudPublic:vIt,annAudAll:bIt,annHeroImage:xIt,annHeroImageHint:$It,annHeroImageUpload:wIt,annHeroImageUploading:kIt,annHeroImageRemove:CIt,annHeroImageBadType:SIt,annHeroImageTooLarge:AIt,annHeroImageUploadFailed:TIt,annModalTitle:RIt,annBody:PIt,annActions:_It,annActionLabel:jIt,annActionUrl:NIt,annActionVariant:DIt,annActionAdd:MIt,annActionRemove:EIt,annVariantPrimary:IIt,annVariantSecondary:OIt,annVariantLink:LIt,annSourceLocale:UIt,annSourceHint:BIt,annTranslate:FIt,annTranslating:zIt,annOtherLocales:qIt,annTranslateDone:HIt,annTranslateParti
787al:VIt,annTranslateStale:KIt,annBumpRevision:GIt,annTranslateNeedSource:WIt},QIt="Operations dashboard",XIt="Real-time overview of platform health, usage, and alerts.",ZIt="Refresh",JIt="Refreshing",eOt="Updated {{time}}",tOt="Loading dashboard",nOt="Failed to load dashboard",aOt="No data",oOt="No traffic yet",sOt="Video fail rate",rOt="Avg latency",iOt="Error types",lOt="No errors",cOt="Model anomalies",dOt="All models healthy",uOt="Components",mOt="req",pOt="Checkout abandon",fOt="Refunds",gOt="Chargebacks",hOt="First-charge conversion",yOt={kpis:"Key metrics",alerts:"Alerts",health:"System health",payment:"Payment health",revenue:"Revenue & growth",trend:"Trend",alertSettings:"Alert settings",leaderboard:"Growth leaderboards"},vOt={title:"Referral leaderboard",boardAria:"Select leaderboard",rangeAria:"Select time range",boards:{invites:"Invites",revenue:"Referred revenue"},ranges:{today:"Today","3d":"3d","7d":"7d","30d":"30d"},ofTotal:"of {{total}}",countPair:"{{valid}} / {{total}} valid",empty:"No referrals in this window",failedLoad:"Failed to load leaderboard",validHint:"Valid = normal risk status + active binding"},bOt={requests:"Requests",successRate:"Payment success",activeUsers:"Active users",newSignups:"New signups",newSignupsHint:"Solo usuarios normales (excluye marcados)",billedCredit:"Billed credit",errorRate:"Error rate",avgLatency:"Avg latency",balance:"Platform balance",vsPrevious:"{{delta}} vs previous",vsYesterday:"vs yesterday",noChange:"No change",successFailed:"{{success}} ok · {{failed}} fail"},xOt={today:"Revenue today",trendTitle:"Revenue today vs yesterday",monthDetail:"{{count}} charges · MTD {{mtd}}"},$Ot={summary:"{{paid}} paid · {{failed}} failed · {{pending}} pending"},wOt={paidOfSignups:"{{paid}} first-charged / {{signups}} signups"},kOt={healthy:"Healthy",degraded:"Degraded",down:"Down",unknown:"Unknown"},COt={critical:"Critical",warning:"Warning",info:"Info",ok:"Healthy"},SOt={operational:"Operational",degraded:"Degraded",down:"Down",upstream:"Upstream channels",gateway:"Gateway",billing:"Billing",jobs:"Job queue",tierReason:{ok:"Healthy",watch:"Watch: nearing threshold",warning:"Warning: over warn line",critical:"Critical: over crit line"}},AOt={title:"Active alerts",empty:"All systems operational",activeCount:"{{count}} active alerts",triggeredAt:"Triggered {{time}}",viewDetail:"View detail",acknowledge:"Acknowledge",resolved:"Resolved"},TOt={title:"Alert settings",description:"Set warning / critical thresholds for the 6 alert types; ops is notified when a metric crosses the line. Severity is derived from the tier automatically.",enabled:"Enabled",warnThreshold:"Warning threshold",critThreshold:"Critical threshold",cooldown:"Cooldown (min)",cooldownHint:"Minimum gap between two notifications for the same alert, to prevent spam.",rateHint:"Rate, 0–1 (e.g. 0.05 = 5%).",countHint:"Absolute value, ≥ 0.",directionHigher:"Higher is worse: warning ≤ critical.",directionLower:"Lower is worse: warning ≥ critical.",lastFired:"Last fired {{time}}",neverFired:"Never fired",save:"Save all",saving:"Saving",saved:"Alert settings saved",saveError:"Failed to save",readonlyHint:"You have read-only access.",noData:"No alert settings",errors:{directionHigher:"Warning threshold must be ≤ critical threshold",directionLower:"Warning threshold must be ≥ critical threshold",rateRange:"Rate thresholds must be within 0–1",nonNegative:"Thresholds must be ≥ 0",cooldownNonNegative:"Cooldown must be ≥ 0",required:"Threshold is required"},types:{payment_success_rate_low:"Payment success rate low",gateway_error_rate_high:"Gateway error rate high",model_error_spike:"Model error spike",webhook_dead_letter:"Webhook dead letter backlog",system_component_down:"System component down",negative_balance_exposure:"Negative balance exposure"}},ROt={label:"Time range",today:"Today",days7:"7 days",days30:"30 days"},POt="{{failed}}/{{total}} jobs",_Ot="{{delta}}pt vs yesterday",jOt="Low sample ({{n}})",NOt="Had gateway calls",DOt="Last 7d cohort · normal users only",MOt="Refund rate {{rate}}%",EOt={funnel:"opened {{opened}} · paid {{paid}}"},IOt={title:QIt,description:XIt,refresh:ZIt,refreshing:JIt,lastUpdated:eOt,loading:tOt,failedLoad:nOt,empty:aOt,noTraffic:oOt,videoFailRate:sOt,avgLatency:rOt,errorTypes:iOt,noErrors:lOt,modelAnomalies:cOt,noAnomalies:dOt,components:uOt,req:mOt,abandonRate:pOt,refunds:fOt,chargebacks:gOt,firstChargeConversion:hOt,sections:yOt,leaderboard:vOt,kpi:bOt,revenue:xOt,orders:$Ot,conversion:wOt,componentStatus:kOt,severity:COt,health:SOt,alerts:AOt,alertSettings:TOt,range:ROt,videoJobsDetail:POt,vsYesterdayPt:_Ot,lowSample:jOt,activeUsersHint:NOt,conversionCohortHint:DOt,refundRate:MOt,checkout:EOt},OOt="Loading...",LOt="Admin permission required",UOt="Your account does not have permission to access this administrator page.",BOt={loading:OOt,permissionRequired:LOt,permissionDescription:UOt},FOt="User growth",zOt="Signup rewards, discount codes, referrals, and credit grants. Manual grants live on the Users page.",qOt={mobileLabel:"Sección de crecimiento",onboarding:"Signup & new users",discount:"Discount codes",referral:"Referral cashback",grants:"Credit grants",topup:"Top-up bonus",redeem:"Códigos de canje",tasks:"Task wall"},HOt="Coupon batch",VOt="Promotion rule",KOt="Count",GOt="Batch code",WOt="Creating...",YOt="Create batch",QOt="{{count}} coupon code created",XOt="{{count}} coupon codes created",ZOt="Batch {{code}}",JOt="Copied",e3t="Copy all",t3t="Credit grants",n3t="Source",a3t="Status",o3t="No grants yet",s3t="Coupon redemptions, signup bonuses, and manual grants appear here.",r3t="Time",i3t="User",l3t="Amount",c3t="Signup bonus",d3t="Controls the credit automatically granted to new users. Disable it to stop future signup grants.",u3t="Enable signup credit",m3t="Amount (USD)",p3t="Save signup bonus",f3t="Saving...",g3t="Current amount {{amount}}",h3t="Referral cashback",y3t="Configure double-sided referral rewards, release delay, caps, and billing-page messaging.",v3t="Enable referral cashback",b3t="Reward tiers",x3t="Add tier",$3t="Recipient",w3t="From day",k3t="Until day",C3t="Percent",S3t="Label",A3t="Action",T3t="Inviter",R3t="Invitee",P3t="No end",_3t="Remove tier",j3t="Release delay (days)",N3t="Per-topup cap (USD)",D3t="Min topup (USD, blank = none)",M3t="Cashback expiry (days, blank = never)",E3t="Billing-page countdown banner",I3t="Banner title",O3t="Subtitle",L3t="Countdown mode",U3t="Global deadline",B3t="Each invitee's 30-day window",F3t="Ends at",z3t="Save referral settings",q3t="v{{version}}",H3t="Saving reward tiers, release delay, caps, or expiry publishes a NEW version. Existing referral relationships keep the version they were bound under — only new signups get the new terms. Pausing only affects new signups.",V3t="Version history",K3t="Version",G3t="Status",W3t="Reward tiers",Y3t="Published",Q3t="Superseded",X3t="current",Z3t="Top-up discount codes",J3t="Discount codes lower what users pay at checkout; the full top-up amount is credited only after payment succeeds. Configure here, then generate codes below.",eLt="Enable discount codes",tLt="Discount type",nLt="Fixed amount off (USD)",aLt="Percentage off (%)",oLt="Amount off (USD)",sLt="Percentage off (0-100)",rLt="Save discount",iLt="Default low-balance alert",lLt="New users get an email low-balance alert at this threshold by default. Changing it only affects future signups, not existing wallets.",cLt="Threshold (USD)",dLt="Save threshold",uLt="Current: {{amount}}",mLt="Generate codes against the discount rule above.",pLt="In effect: {{state}} · {{value}} off",fLt="enabled",gLt="disabled",hLt="Issued codes",yLt="Pick a batch to see who redeemed each code.",vLt="No batches yet",bLt="Generate a batch above to start tracking redemptions.",xLt="Total",$Lt="Redeemed",wLt="Reserved",kLt="Available",CLt="Codes in {{code}}",SLt="No codes in this batch",ALt="Code",TLt="Redeemed by",RLt="Redeemed at",PLt="Paid",_Lt="Discount",jLt="Crear códigos",NLt="Un código compartido es un único código que muchos usuarios pueden canjear hasta N veces; un lote de códigos únicos son N códigos de un solo uso.",DLt="Tipo de código",MLt="Código compartido único",
787ELt="Lote de códigos únicos",ILt="Texto del código (déjalo en blanco para uno aleatorio)",OLt="p. ej. WELCOME100",LLt="Canjes totales (N)",ULt="Por usuario",BLt="Caduca el (opcional)",FLt="grupo opcional",zLt="Crear código compartido",qLt="Código compartido creado",HLt="Usar un descuento para este lote (si no, la regla de arriba)",VLt="Códigos compartidos",KLt="Un código, muchos usuarios. El recuento de usos registra los canjes pagados.",GLt="Aún no hay códigos compartidos",WLt="Usados / límite",YLt="Por usuario",QLt="Caduca",XLt="Desactivar",ZLt="¿Desactivar este código?",JLt="Los nuevos pagos se bloquean de inmediato. Los pedidos que ya estén en checkout pueden completarse.",e4t="Código desactivado",t4t="CSV",n4t="Estado",a4t="Correo",o4t={code:"Código",discount:"Descuento",redeemed:"Canjeado",cap:"Límite",perUser:"Por usuario",status:"Estado",expiresAt:"Caduca el",batch:"Lote",createdAt:"Creado el",redeemedBy:"Canjeado por",redeemedAt:"Canjeado el",paid:"Pagado",discountAmount:"Descuento",email:"Email",credited:"Credited",bonus:"Bonus",paidAt:"Paid at"},s4t="Amount",r4t="Bound at",i4t="Counterparty",l4t="Invitee",c4t="Inviter",d4t="Rate",u4t="Released",m4t="Role",p4t="Tier",f4t="Top-up",g4t="Load more",h4t="No referrals under this version",y4t="No cashback under this version",v4t="Referrals",b4t="Referral records",x4t="Cashback records",$4t="Version detail",w4t={title:"Top-up bonus",description:"Reward bigger top-ups with bonus credit. Each tier can grant general credit or credit restricted to a model group.",enabled:"Enable top-up bonus",saved:"Top-up bonus saved",tiers:"Bonus tiers",tiersHint:"Top-up matches the highest tier whose threshold it reaches. Restricted credit only applies to synchronous text/image calls — not video or async image jobs.",noTiers:"No tiers yet. Add one to start rewarding top-ups.",min:"Min top-up (USD)",rewardType:"Reward",bonus:"Fixed (USD)",percent:"Percent (%)",rewardBonus:"Bonus amount (USD)",rewardPercent:"Percent of top-up (%)",expiryDays:"Expiry (days, blank = never)",noExpiry:"Never",scope:"Credit scope",scopeHint:"General credit works on any model; a model group restricts the bonus to those models.",scopeGeneral:"General (any model)",removeTier:"Remove tier",addTier:"Add tier",antifraud:"Abuse guards",minTopup:"Min top-up to qualify (USD, blank = none)",maxBonusPerUser:"Max bonus per user (USD, blank = none)",none:"None",excludeRisky:"Exclude watchlisted / blocked users",save:"Save top-up bonus",createScope:"New restricted model group",createScopeDescription:"Pick the models a restricted bonus may be spent on, then reference this group from a tier above.",scopeName:"Group name",scopeNamePlaceholder:"High-margin models",scopeModels:"Models",pickModels:"Pick models",nModels:"{{count}} models",createScopeButton:"Create group",scopeCreated:"Model group created"},k4t="Generar códigos de canje",C4t="Códigos de canje tipo tarjeta de recarga. El usuario introduce el código en la página de facturación y el valor nominal se abona directamente (saldo de regalo, sin necesidad de pagar).",S4t="Nombre del lote (opcional)",A4t="Por ejemplo: regalo Conf-2026",T4t="Cantidad a generar",R4t="Valor nominal por código (USD)",P4t="Códigos canjeables por cuenta en este lote (vacío = sin límite)",_4t="Sin límite",j4t="Fecha límite de canje (opcional)",N4t="Restrict to models (optional)",D4t="General balance (no restriction)",M4t="{{count}} models selected",E4t="Blank = general balance. Selected models share one earmarked pool.",I4t="Credit validity after redemption (days, blank = never expires)",O4t="never expires",L4t="{{n}} d",U4t="Models",B4t="Validity",F4t="General balance",z4t="Generar códigos de canje",q4t="Guárdalos de inmediato. También puedes volver a obtenerlos más tarde con «Exportar en texto plano» desde la lista de lotes.",H4t="Lotes de códigos de canje",V4t="Haz clic en un lote para ver el detalle de cada código; «Exportar en texto plano» permite volver a exportar el texto plano.",K4t="Aún no hay lotes de códigos de canje",G4t="Lote",W4t="Valor nominal",Y4t="Exportar en texto plano",Q4t="¿Revertir este código ya canjeado?",X4t="Se recupera del saldo del usuario la parte aún no consumida; la parte ya consumida no se puede recuperar.",Z4t="Revertir",J4t="Se revirtió {{amount}}",e5t="Códigos de canje exportados",t5t="¿Desactivar los códigos no canjeados de este lote?",n5t="Todos los códigos aún no canjeados quedarán inválidos; los códigos ya canjeados no se ven afectados.",a5t="Se desactivaron {{n}} códigos",o5t="Bonus % on top-up",s5t="Bonus (%)",r5t="Bonus validity (days, optional)",i5t="blank = never expires",l5t={view:"Payments",title:"Payments via ····{{code}}",email:"User",credited:"Credited",bonus:"Bonus",summary:"{{count}} payments · {{users}} users · {{paid}} paid · {{bonus}} bonus granted",empty:"No payments through this code yet"},c5t={configTitle:"Task wall config",configDescription:"Amounts, switches and accepted hosts. Task copy lives in the translation files, not here. Changes take effect on the next page load — no deploy.",enabled:"Enable the task wall",tasksTitle:"Tasks",taskKey:"Task key",amount:"Amount (USD)",hosts:"Accepted hosts",hostsHint:"Links outside this list are rejected at submission time.",taskEnabled:"Visible to users",addTask:"Add task",guardsTitle:"Abuse guards",dailyCap:"Daily pending c
787ap",dailyCapHint:"0 = no cap. Fail-open if Redis is down.",minAge:"Minimum account age (days)",minAgeHint:"0 = no age gate.",saved:"Task wall saved",queueTitle:"Submissions",queueCount:"{{count}} shown",empty:"Nothing here.",approve:"Approve & pay",approved:"Approved — credit granted",reject:"Reject",rejected:"Rejected",confirmReject:"Confirm reject",reasonPlaceholder:"Why is this rejected?",duplicate:"Same link from {{count}} other account(s)",status:{pending:"Pending",approved:"Approved",rejected:"Rejected"}},d5t={title:FOt,description:zOt,tabs:qOt,couponBatch:HOt,promotionRule:VOt,count:KOt,batchCode:GOt,creating:WOt,createBatch:YOt,codesCreated:QOt,codesCreated_plural:XOt,batch:ZOt,copied:JOt,copyAll:e3t,creditGrants:t3t,source:n3t,status:a3t,noGrants:o3t,noGrantsDescription:s3t,time:r3t,user:i3t,amount:l3t,signupBonus:c3t,signupBonusDescription:d3t,signupBonusEnabled:u3t,signupBonusAmount:m3t,saveSignupBonus:p3t,saving:f3t,currentSignupBonus:g3t,referral:h3t,referralDescription:y3t,referralEnabled:v3t,referralRewardTiers:b3t,addTier:x3t,tierRole:$3t,tierFromDay:w3t,tierUntilDay:k3t,tierPercent:C3t,tierLabel:S3t,tierAction:A3t,roleReferrer:T3t,roleReferee:R3t,noEndDay:P3t,removeTier:_3t,releaseDelayDays:j3t,referralCap:N3t,referralMinTopup:D3t,referralExpiryDays:M3t,bannerEnabled:E3t,bannerTitle:I3t,bannerSubtitle:O3t,bannerMode:L3t,bannerModeGlobal:U3t,bannerModeWindow:B3t,bannerEndsAt:F3t,saveReferral:z3t,referralVersion:q3t,referralPublishHint:H3t,referralVersionHistory:V3t,versionCol:K3t,versionStatus:G3t,versionTiers:W3t,versionPublished:Y3t,versionSuperseded:Q3t,versionCurrent:X3t,discountRule:Z3t,discountRuleDescription:J3t,discountEnabled:eLt,discountType:tLt,discountFixed:nLt,discountPercent:aLt,discountValueFixed:oLt,discountValuePercent:sLt,saveDiscount:rLt,defaultLowBalanceThreshold:iLt,defaultLowBalanceThresholdDescription:lLt,defaultLowBalanceThresholdAmount:cLt,saveDefaultLowBalanceThreshold:dLt,currentDefaultLowBalanceThreshold:uLt,couponBatchDescription:mLt,discountEffective:pLt,stateEnabled:fLt,stateDisabled:gLt,couponTrace:hLt,couponTraceDescription:yLt,noBatches:vLt,noBatchesDescription:bLt,batchTotal:xLt,batchRedeemed:$Lt,batchReserved:wLt,batchActive:kLt,codesInBatch:CLt,noCodes:SLt,code:ALt,redeemedBy:TLt,redeemedAt:RLt,paid:PLt,discount:_Lt,createIssuance:jLt,createIssuanceDescription:NLt,formLabel:DLt,formShared:MLt,formUniqueBatch:ELt,sharedCodeText:ILt,sharedCodeRandomHint:OLt,sharedMaxRedemptions:LLt,sharedPerUser:ULt,expiresAt:BLt,batchCodeOptional:FLt,createSharedCode:zLt,sharedCodeCreated:qLt,batchOwnDiscount:HLt,sharedCodesList:VLt,sharedCodesListDescription:KLt,noSharedCodes:GLt,colRedeemedTotal:WLt,colPerUser:YLt,colExpiry:QLt,disableCode:XLt,disableCodeConfirmTitle:ZLt,disableCodeConfirmMessage:JLt,codeDisabled:e4t,exportCsv:t4t,statusFilter:n4t,filterByEmail:a4t,csv:o4t,colAmount:s4t,colBoundAt:r4t,colCounterparty:i4t,colInvitee:l4t,colInviter:c4t,colRate:d4t,colReleasedAt:u4t,colRole:m4t,colTier:p4t,colTopup:f4t,loadMore:g4t,noBindings:h4t,noCashback:y4t,versionBindings:v4t,versionBindingsSection:b4t,versionCashbackSection:x4t,versionDetail:$4t,topup:w4t,redeemCreate:k4t,redeemCreateDescription:C4t,redeemBatchName:S4t,redeemBatchNameHint:A4t,redeemCount:T4t,redeemFaceValue:R4t,redeemPerUserLimit:P4t,redeemUnlimited:_4t,redeemExpiresAt:j4t,redeemModels:N4t,redeemModelsAll:D4t,redeemModelsCount:M4t,redeemModelsHint:E4t,redeemValidityDays:I4t,redeemValidityForever:O4t,redeemValidityDaysValue:L4t,redeemColModels:U4t,redeemColValidity:B4t,redeemGeneralBalance:F4t,redeemCreateBtn:z4t,redeemRevealHint:q4t,redeemBatches:H4t,redeemBatchesDescription:V4t,redeemNoBatches:K4t,redeemBatchCol:G4t,redeemFace:W4t,redeemReveal:Y4t,redeemReverseTitle:Q4t,redeemReverseMessage:X4t,redeemReverseBtn:Z4t,redeemReversed:J4t,redeemRevealed:e5t,redeemDisableBatchTitle:t5t,redeemDisableBatchMessage:n5t,redeemBatchDisabled:a5t,discountTypeBonusPercent:o5t,discountValueBonusPercent:s5t,bonusExpiryDays:r5t,bonusExpiryDaysHint:i5t,sharedPayments:l5t,tasks:c5t},u5t="Models",m5t="Model catalog: create, edit, publish.",p5t={label:"Display badges",hint:"Hot / Benefit tags shown on the user-facing models & pricing page.",hot:"Hot",benefit:"Benefit"},f5t="Add model",g5t="Edit {{model}}",h5t="New model",y5t="Close",v5t="Basics & content save together; pricing and status changes apply immediately.",b5t="Create the model draft. Set pricing and publish after it exists.",x5t={basics:"Basics",basicsHint:"Identity, upstream mapping, protocols.",config:"Configuration",configHint:"Identity, upstream routing, type and capabilities.",protocols:"Protocols",protocolsHint:"Which API protocols this model serves.",content:"Content & display",contentHint:"i18n summary / description and sort order."},$5t="Provider slug",w5t="Pick a known provider or type a custom slug.",k5t="Model slug",C5t="Aliases",S5t="Comma-separated lookup aliases for import and review.",A5t="Source (customer-visible)",T5t="Label customers see on the model/logs. Blank = vendor. Use it to distinguish s
787ame-model variants at different prices.",R5t="Platform",P5t="— select platform —",_5t="Upstream model id (optional; choose from upstream or enter manually)",j5t="Choose from upstream...",N5t="Upstream unavailable",D5t="Protocols",M5t="Input price / 1M (USD)",E5t="Output price / 1M (USD)",I5t="EN summary",O5t="Preview",L5t="(No summary)",U5t="No protocol",B5t="Cancel",F5t="Save",z5t="Create draft",q5t={basic:"Identity & routing",pricing:"Pricing",content:"Content & display"},H5t={config:"1 · Configuration",protocols:"2 · Protocols",pricing:"3 · Pricing",display:"Content & display",back:"Back",next:"Next",create:"Create model"},V5t="Context window (tokens)",K5t="Max input the model accepts. Leave blank if unknown.",G5t="Max output tokens",W5t="Max tokens the model can generate per response.",Y5t={status:"Status",visibility:"Visibility",hint:"Lifecycle changes apply immediately (with confirmation), separate from Save.",confirmStatus:'Set status to "{{status}}"? Takes effect immediately.',confirmVisibility:'Set visibility to "{{visibility}}"? Takes effect immediately.',statusChanged:"Status set to {{status}}.",visibilityChanged:"Visibility set to {{visibility}}.",publishBlocked:"Cannot publish: core pricing factors are missing. Set them in the Pricing tab first.",statusOption:{draft:"Draft",published:"Published",deprecated:"Deprecated",archived:"Archived"},visibilityOption:{public:"Public",hidden:"Hidden"},availability:"Availability",confirmAvailable:"Mark this model available again? Takes effect immediately.",confirmUnavailable:"Mark this model temporarily unavailable? It stays listed (greyed out) but gateway calls are rejected.",availableChanged:"Model marked available.",unavailableChanged:"Model marked temporarily unavailable.",availabilityOption:{available:"Available",unavailable:"Unavailable"},audience:"Audience",audienceOption:{everyone:"Everyone",paid_only:"Topped-up accounts only"},confirmPaidOnly:"Restrict this model to accounts that have topped up? It stays listed, but users who never paid get a 403 telling them to top up.",confirmEveryone:"Open this model to every account? Takes effect immediately.",paidOnlyChanged:"Model restricted to accounts that have topped up.",everyoneChanged:"Model opened to every account."},Q5t="Input modalities",X5t="Declares what this model can receive, including vision, audio, video, and file inputs.",Z5t="Output modalities",J5t="Drives the publish gate: text requires text in/out pricing, image/video/embeddings require their factors.",eUt="Image billing style",tUt="Video billing style",nUt="How the upstream charges for this output. Required before publishing — the gate demands the matching price factor.",aUt="— select billing style —",oUt="Per token (image_output_token)",sUt="Per image (per_call_image)",rUt="Per second (video_per_second)",iUt="Per call (video_per_call)",lUt="Display order",cUt="Must be a non-negative integer.",dUt="Editing locale",uUt="Upstream release date",mUt="Summary (this locale)",pUt="Description (Markdown, this locale)",fUt={provider:"Provider",status:"Status",visibility:"Visibility",allStatuses:"All model statuses",allVisibility:"All visibility",allProviders:"All providers",search:"Search model slug",mobileTitle:"Filtros"},gUt={label:"Models",empty:"No models",model:"Model",provider:"Provider",source:"Source",status:"Status",visibility:"Visibility",action:"Action",edit:"Edit",setStatus:"Set status for {{model}}",setVisibility:"Set visibility for {{model}}",confirmSet:'Set {{model}} {{field}} to "{{value}}"?',sub2api:"Sub2API mapping",textPrice:"Price (in / out $/M)",priceByTokens:"{{kind}} · per-token",imageOutput:"image out",officialPrice:"List",saved:"-{{pct}}%"},hUt={invalidPrice:"Price must be a number greater than or equal to 0, or left blank.",highRisk:"This change affects live gateway routing and may cause 404s. Continue?",stale:"This model was changed by someone else. Close and reopen it before editing again."},yUt={savesImmediately:"Pricing changes apply immediately and are not controlled by Save.",createPriceFailed:"Model created, but some prices were not saved. Add them in the Pricing tab.",factors:{title:"Pricing factors",hint:"Each row is an atomic unit (text input/output, cache, image, …). Active rows determine billing from their effective date; history rows record past prices.",liveBanner:"Changes here apply immediately and are recorded in price history — they are not controlled by the bottom Save button.",draftHint:"Save the model draft first; pricing factors are edited inline after the model exists.",addFactor:"Add factor",changePrice:"Change price",expire:"Expire",confirmExpire:"Expire this factor row? It will stop applying immediately and move to history.",changeSaved:"Factor price updated.",expired:"Factor expired.",factor:"Factor",tier:"Tier",tierNone:"(no tier)",unit:"Unit",ourPrice:"Our price (USD)",officialPrice
787:"Official (USD)",officialAbbr:"official",source:"Source (optional URL or note, ≤128 chars)",historyLabel:"History ({{count}})",emptyTitle:"No active factor prices",empty:'Click "Add factor" to set one.',loadError:"Could not load pricing factors",draftEditorHint:"Set prices now, or leave empty and add them after the model is created.",draftEmpty:"No prices added yet.",remove:"Remove",factorOption:{text_input:"Text input (LLM)",text_output:"Text output (LLM)",cache_read:"Cache read",cache_write_5m:"Cache write (5m TTL)",cache_write_1h:"Cache write (1h TTL)",image_input_token:"Image input token",image_output_token:"Image output token",per_call_image:"Image (per call)",video_per_call:"Video (per call)",video_per_second:"Video (per second)",web_search_call:"Web search call"},unitOption:{per_1m_tokens:"per 1M tokens",per_image:"per image",per_call:"per call",per_second:"per second"},conditions:"Conditions JSON (optional)"},discount:{toggle:"Apply discount",hint:"Set every factor to a fraction of its official price (0.5 = 50% off). Free factors (our price 0) and factors with no official price are skipped.",rate:"Discount rate",preview:"Preview",apply:"Apply",allowMarkup:"Allow markup (rate above 1 prices above official)",noFactors:"No active factors to reprice.",confirmTitle:"Apply discount to all factors?",confirmBody:"Reprice {{count}} factor(s) to {{rate}}× the official price. This is versioned — historical billing is unaffected.",applied:"Repriced {{count}} factor(s) at {{rate}}× official.",stale:"Prices changed since the preview — please preview again.",skipReason:{free_factor_our_zero:"Free factor (our price is 0) — left unchanged",no_official:"No official price — cannot compute",official_zero:"Official price is 0 — skipped"}}},vUt="Discard unsaved changes?",bUt="Editar modelo",xUt={title:u5t,description:m5t,badges:p5t,addModel:f5t,editModel:g5t,newModel:h5t,close:y5t,sheetDescription:v5t,sheetDescriptionNew:b5t,sections:x5t,providerSlug:$5t,providerSlugHint:w5t,modelSlug:k5t,aliases:C5t,aliasesHint:S5t,source:A5t,sourceHint:T5t,platform:R5t,platformUnset:P5t,sub2apiModelId:_5t,chooseSub2api:j5t,upstreamUnavailable:N5t,protocols:D5t,inputPrice:M5t,outputPrice:E5t,enSummary:I5t,preview:O5t,noSummary:L5t,noProtocol:U5t,cancel:B5t,save:F5t,createDraft:z5t,tabs:q5t,steps:H5t,contextWindow:V5t,contextWindowHint:K5t,maxOutputTokens:G5t,maxOutputTokensHint:W5t,lifecycle:Y5t,inputModalities:Q5t,inputModalitiesHint:X5t,outputModalities:Z5t,outputModalitiesHint:J5t,billingStyleImage:eUt,billingStyleVideo:tUt,billingStyleHint:nUt,billingStyleUnset:aUt,billingStyleToken:oUt,billingStylePerImage:sUt,billingStylePerSecond:rUt,billingStylePerCall:iUt,displayOrder:lUt,displayOrderInvalid:cUt,contentLocale:dUt,upstreamReleaseAt:uUt,summary:mUt,descriptionField:pUt,filters:fUt,table:gUt,errors:hUt,pricing:yUt,discardChanges:vUt,editModelShort:bUt},$Ut="Rate Limits",wUt="Rate limit policies by scope.",kUt="Rate limit policies",CUt="No policies",SUt="Code",AUt="Name",TUt="Scope",RUt="Status",PUt="Limits",_Ut="No limits",jUt={auth:"Auth",console:"Console",api_gateway:"API gateway",ops:"Ops",global:"Global"},NUt={active:"Active",disabled:"Disabled",archived:"Archived"},DUt={rpm_per_key:"RPM / key",rpm_per_user:"RPM / user",concurrent_streams_per_key:"Streams / key",concurrent_streams_per_user:"Streams / user"},MUt="New policy",EUt="Edit",IUt="Action",OUt="New rate limit policy",LUt="Edit {{name}}",UUt="Concurrency and RPM limits applied per API key and per user. Assign a policy to users on the Users page.",BUt='Delete policy "{{name}}"? Keys and users on it fall back to their default.',FUt="Policy deleted.",zUt={identity:"Identity",classification:"Classification",description:"Description",codeImmutable:"Code cannot be changed after creation.",limitsHint:"Leave blank to use the platform default for that limit.",default:"default",invalidLimit:"{{field}} must be a positive integer.",saved:"Policy saved.",cancel:"Cancel",save:"Save",create:"Create policy"},qUt={title:$Ut,description:wUt,label:kUt,empty:CUt,code:SUt,name:AUt,scope:TUt,status:RUt,limits:PUt,noLimits:_Ut,scopes:jUt,statuses:NUt,limitNames:DUt,add:MUt,edit:EUt,delete:"Delete",action:IUt,newTitle:OUt,editTitle:LUt,formDescription:UUt,confirmDelete:BUt,deleted:FUt,form:zUt},HUt="Admins",VUt="Who can sign in to the admin console. Owner-only.",KUt="Admins",GUt="No admins yet",WUt="Email",YUt="Name",QUt="Role",XUt="Status",ZUt="Last login",JUt="Action",eBt="Add admin",tBt="Add admin",nBt="The email becomes an admin immediately and signs in with it — admin access is matched by email. It does not need an account yet.",aBt="Email",oBt="[email protected]",sBt="Name",rBt="Display name",iBt="Role",lBt="Admin added.",cBt="Change role",dBt="Role updated.",uBt="Suspend",mBt="Activate",pBt="Status updated.",fBt="Remove",gBt="Admin removed.",hBt="Remove {{email}} as an admin? They lose console access immediately.",yBt="You",vBt="Never",bBt={owner:"Owner",admin:"Admin",
787support:"Support"},xBt={active:"Active",suspended:"Suspended"},$Bt={title:HUt,description:VUt,label:KUt,empty:GUt,email:WUt,name:YUt,role:QUt,status:XUt,lastLogin:ZUt,action:JUt,add:eBt,newTitle:tBt,formDescription:nBt,emailLabel:aBt,emailPlaceholder:oBt,nameLabel:sBt,namePlaceholder:rBt,roleLabel:iBt,added:lBt,changeRole:cBt,roleChanged:dBt,suspend:uBt,activate:mBt,statusChanged:pBt,remove:fBt,removed:gBt,confirmRemove:hBt,self:yBt,never:vBt,roles:bBt,statuses:xBt},wBt="Upstream",kBt="Read-only upstream configuration mirror plus controlled OneHop routing pools.",CBt="Open upstream admin",SBt="Upstream tabs",ABt={overview:"Overview",keyPools:"Key pools",groups:"Groups",channels:"Channels",accounts:"Accounts"},TBt={todayRequests:"Today requests",total:"{{value}} total",upstreamCostToday:"Upstream cost today",providerAccounts:"Provider accounts",health:"Health",stale:"stale",checkPools:"check pools",online:"online"},RBt={upstreamStatsFailed:"Upstream stats failed to load",retry:"Retry",configAuditFailed:"Config audit failed",keyPoolsLoadFailed:"Key pools failed to load",createKeyPoolFailed:"Create key pool failed",keyPoolTestFailed:"Key pool test failed",keyPoolRotateFailed:"Key pool rotate failed",failedLoad:"{{title}} failed to load"},PBt={title:"Config audit",description:"Compares OneHop key pools and published model routing against upstream routing. Provider groups, channels, pricing, and accounts remain read-only here.",running:"Running...",run:"Run audit",poolsChecked:"Pools checked",modelAudit:"Model audit",checkedAt:"Checked at",needsReview:"needs review",done:"done",ok:"ok",upstreamCoverage:"Cobertura de upstream",coverageUnchecked:"cuentas no legibles",coverageOnlyAccount:"solo {{accounts}}",coverageNoAccount:"Ninguna cuenta programable asigna este ID de upstream"},_Bt={title:"Topology",keyPools:"Key pools",activeGroups:"Active groups",activeChannels:"Active channels",accounts:"Accounts",editingBoundaryTitle:"Editing boundary",editingBoundaryDescription:"The upstream admin exposes deep edit workflows for groups, channels, pricing rules, provider accounts, monitoring, and system settings. OneHop intentionally mirrors only the operational read path and owns internal key pools, so edits that change provider routing still happen in the original admin."},jBt={title:"OneHop internal key pools",description:"Pools select which upstream internal key OneHop uses per protocol and model pattern. Full secrets are never displayed.",poolCode:"Pool code",poolName:"Pool name",defaultPool:"Default pool",notDefault:"Not default",plaintextKey:"Plaintext key",create:"Create",label:"Provider routing key pools",pool:"Pool",protocols:"Protocols",models:"Models",routingGroup:"Routing group",status:"Status",health:"Health",key:"Key",lastCheck:"Last check",action:"Action",priority:"priority {{value}}",default:"default",secret:"secret",hidden:"hidden",test:"Test",rotate:"Rotate",empty:"No key pools",emptyDescription:"Create an internal pool before routing production traffic through provider routing.",newPlaintextKey:"New plaintext key",confirmRotate:"Confirm rotate",editProtocols:"Edit protocols",editProtocolsTitle:"Edit protocols (replace)",confirmEditProtocols:"Save protocols",cancelEditProtocols:"Cancel",forceEditProtocols:"Force save (override routing check)"},NBt={editUpstreamConfig:"Edit upstream config",groupsTitle:"Groups",groupsDescription:"Routing buckets from upstream config. OneHop uses these as source-of-truth context for key-pool binding and audit decisions.",groupsLabel:"Routing groups",groupsEmpty:"No groups",groupsEmptyDescription:"Upstream config did not return any groups.",channelsTitle:"Channels",channelsDescription:"Provider channel configuration from upstream config, including model mappings and pricing rule coverage.",channelsLabel:"Provider routing channels",channelsEmpty:"No channels",channelsEmptyDescription:"Upstream config did not return any channels.",accountsTitle:"Accounts",accountsDescription:"Provider accounts are redacted in OneHop. Use the upstream admin for credential edits and OAuth refresh flows.",accountsLabel:"Provider routing accounts",accountsEmpty:"No accounts",accountsEmptyDescription:"Upstream config did not return any provider accounts."},DBt={group:"Group",platform:"Platform",rate:"Rate",rpm:"RPM",accounts:"Accounts",limits:"Limits",status:"Status",updated:"Updated",channel:"Channel",billingSource:"Billing source",mappings:"Mappings",pricing:"Pricing",account:"Account",groups:"Groups",baseUrl:"Base URL",capacity:"Capacity",lastUsed:"Last used"},MBt={noDescription:"No description",unlimited:"unlimited",schedulable:"schedulable",notSchedulable:"not schedulable",loading:"Loading...",noPricingRules:"No pricing rules",modelsCount:"{{count}} models",none:"none",channelMapped:"Channel mapped",requestedModel:"Requested model",upstreamModel:"Upstream model",priority:"priority",unknown:"unknown"},EBt={serving:{label:"Serving state",serving:"Serving",rate_limited:"Rate-limited",overloaded:"Overloaded",expired:"Expired",paused:"Paused",error:"Error",disabled:"Disabled"},quota:{label:"Quota (today)",noLimit:"no limit",spend:"{{spend}} / {{limit}}"},accounts:{breakdown:"{{normal}} normal · {{error}} error · {{ratelimit}} limited · {{overload}} overload"},freshness:{updated:"updated {{ago}}",never:"never"},pools:{lastError:"Last error",resync:"Resync"},audit:{poolFindings:"Pool findings",clean:"clean",findingsCount:"{{count}} issue(s)"},tokensToday:"{{count}} tok today"},IBt={title:wBt,description:kBt,openUpstreamAdmin:CBt,tabsLabel:SBt,tabs:ABt,metrics:TBt,errors:RBt,audit:PBt,topology:_Bt,pools:jBt,readonly:NBt,table:DBt,common:MBt,ops:EBt},OBt="Platform usage",LBt="Cross-user request metering with cost, token, latency, and routing signals.",UBt="Refresh",BBt={label:"Auto refresh",off:"Off"},FBt="Exporting",zBt="Export CSV",qBt="Failed to export usage records",HBt="Requests",VBt="{{count}} successful",KBt="Users",GBt="Matched by current filters",WBt="Billed credit",YBt="{{cost}} upstream cost",QBt="Tokens",XBt="Avg {{duration}}",ZBt="User email",JBt="Search by email",e6t="Model",t6t="Search by model",n6t="Status",a6t="Protocol",o6t="Rows",s6t="Reset",r6t="Ops usage records",i6t="No usage records",l6t="User",c6t="Endpoint",d6t="{{count}} total",u6t="In {{input}} / out {{output}}",m6t="Upstream",p6t="Billed",f6t="Latency",g6t="Started",h6t="Page {{page}} · showing {{shown}} of {{total}} matching records",y6t="Previous",v6t="Next",b6t="{{count}} rows on this page",x6t="Times shown in",$6t="{{count}} API keys",w6t="Spend snapshot",k6t="from OneHop billing snapshot",C6t="User spend",S6t="total billed to users",A6t="Avg latency",T6t="settled requests",R6t="Range",P6t={today:"Today",days7:"7 days",days30:"30 days",all:"All time"},_6t="Metric",j6t={cost:"Spend",tokens:"Tokens",requests:"Requests"},N6t="Distribution",D6t={model:"Modelo",requestedModel:"Requested model",upstreamModel:"Upstream model",apiKey:"API key",user:"User",endpoint:"Endpoint",channel:"Channel",group:"Group",stream
787:"Transport (stream/sync)"},M6t="Usage trend",E6t="Usage by model",I6t="Hourly",O6t="Daily",L6t="Top endpoints",U6t="Top dimension rows",B6t="Request logs",F6t="API key",z6t="Type",q6t="Billing",H6t="Channel",V6t="Group",K6t="Request ID",G6t="req_ / usg_ / upstream",W6t="All types",Y6t="All billing",Q6t={user:"User",time:"Time",model:"Model",tokens:"Tokens",cost:"Spend",routing:"Routing",latency:"Latency",status:"Status",duration:"Duration"},X6t="Failed to load usage",Z6t="Loading usage records",J6t="Try a different filter set.",e8t="No trend data",t8t="No distribution data",n8t="No rows",a8t="Spend breakdown",o8t={upstreamList:"Upstream list",discount:"Discount",sub2apiActual:"Sub2API actual",groupChannelMultiplier:"Group/channel multiplier",accountMultiplier:"Account multiplier",sub2apiFinalCharge:"Final spend",billedFactors:"Billed to user"},s8t="Request detail",r8t="Unknown user",i8t="Loading...",l8t="Sub2API actual",c8t="Group multiplier",d8t="Account multiplier",u8t="Identity",m8t="User ID",p8t="Key suffix",f8t={hopIdentity:"Hop identity",logicalUsageId:"Logical usage ID",logicalRequestedModel:"Logical requested model",logicalModel:"Logical model",actualRequestedModel:"Actual requested model",actualModel:"Actual model",fallbackHop:"Fallback hop",userVisibility:"User visibility",visible:"Visible",hidden:"Hidden",supersedesUsageRecord:"Supersedes record",pricingAudit:"Continuity pricing audit",mode:"Mode",policyVersion:"Policy version",sourceModel:"Source model",targetModel:"Target model",requestedRawQuote:"Requested raw quote",requestedQuote:"Requested quote",actualPricingStatus:"Actual pricing status",actualPricingAvailable:"Available",actualPricingUnavailable:"Unavailable",actualQuote:"Actual quote",chargedQuote:"Charged quote",variance:"Quote variance",actualPricingError:"Actual pricing error"},g8t="Input",h8t="Output",y8t="Cache read",v8t="Cache write",b8t="Raw metadata",x8t="Request",$8t="Usage ID",w8t="OneHop ID",k8t="Sub2API ID",C8t="Sub2API log",S8t="Routing",A8t="Mapping",T8t="Performance",R8t="First token",P8t="Total",_8t="Error",j8t="Code",N8t="Message",D8t={time:"Time",user:"User",apiKey:"API key",model:"Model",logicalUsageId:"Logical usage ID",logicalRequestedModel:"Logical requested model",logicalModel:"Logical model",actualRequestedModel:"Actual requested model",actualModel:"Actual model",fallbackHop:"Fallback hop",userVisible:"User visible",supersedesUsageRecord:"Supersedes usage record",upstreamModel:"Upstream model",protocol:"Protocol",endpoint:"Endpoint",type:"Type",status:"Status",inputTokens:"Input tokens",outputTokens:"Output tokens",cacheRead:"Cache read",cacheWrite:"Cache write",sub2apiActual:"Sub2API actual",sub2apiCharge:"Spend",continuityMode:"Continuity mode",continuityPolicyVersion:"Continuity policy version",continuitySourceModel:"Continuity source model",continuityTargetModel:"Continuity target model",continuityRequestedRawQuote:"Continuity requested raw quote",continuityRequestedQuote:"Continuity requested quote",continuityActualPricingStatus:"Continuity actual pricing status",continuityActualQuote:"Continuity actual quote",continuityChargedQuote:"Continuity charged quote",continuityVariance:"Continuity quote variance",continuityActualPricingError:"Continuity actual pricing error",durationMs:"Duration ms",channel:"Channel",group:"Group",onehopRequestId:"OneHop request ID",sub2apiRequestId:"Sub2API request ID",firstTokenMs:"First token ms"},M8t={analytics:"Usage analytics",logs:"Request logs"},E8t={label:"Chart view",stacked:"Over time",ranking:"Ranking"},I8t={failedOnly:"Failed only",slowOnly:"Slow > {{sec}}s"},O8t="More filters",L8t="Slow threshold (ms)",U8t="No model usage",B8t="No requests yet — usage will appear here as traffic comes in.",F8t="Viewing",z8t="streaming requests",q8t="Avg duration",H8t="Latency = time to first token (TTFT); Duration = total. The slow filter uses TTFT and only covers successful requests with a recorded first token (earlier or failed requests show —).",V8t="Open request detail",K8t={title:OBt,description:LBt,refresh:UBt,autoRefresh:BBt,exporting:FBt,exportCsv:zBt,exportError:qBt,requests:HBt,successful:VBt,users:KBt,matchedFilters:GBt,billedCredit:WBt,upstreamCost:YBt,tokens:QBt,avgDuration:XBt,userEmail:ZBt,searchEmail:JBt,model:e6t,searchModel:t6t,status:n6t,protocol:a6t,rows:o6t,reset:s6t,label:r6t,empty:i6t,user:l6t,endpoint:c6t,totalTokens:d6t,inOut:u6t,upstream:m6t,billed:p6t,latency:f6t,started:g6t,pageSummary:h6t,previous:y6t,next:v6t,rowsOnPage:b6t,timesShownIn:x6t,apiKeys:$6t,sub2apiCharge:w6t,sub2apiChargeSource:k6t,userSpend:C6t,userSpendSource:S6t,avgLatency:A6t,settledRequests:T6t,range:R6t,ranges:P6t,metric:_6t,metrics:j6t,distribution:N6t,breakdown:D6t,usageTrend:M6t,stackedByModel:E6t,hourly:I6t,daily:O6t,to
787pEndpoints:L6t,topDimensionRows:U6t,requestLogs:B6t,apiKey:F6t,type:z6t,billing:q6t,channel:H6t,group:V6t,requestId:K6t,requestIdPlaceholder:G6t,allTypes:W6t,allBilling:Y6t,table:Q6t,failedLoad:X6t,loadingRecords:Z6t,tryDifferentFilters:J6t,noTrendData:e8t,noDistributionData:t8t,noRows:n8t,costBreakdown:a8t,adminCost:o8t,requestDetail:s8t,unknownUser:r8t,loading:i8t,sub2apiActual:l8t,groupMultiplier:c8t,accountMultiplier:d8t,identity:u8t,userId:m8t,keySuffix:p8t,continuity:f8t,input:g8t,output:h8t,cacheRead:y8t,cacheWrite:v8t,rawMetadata:b8t,request:x8t,usageId:$8t,onehopId:w8t,sub2apiId:k8t,sub2apiLog:C8t,routing:S8t,mapping:A8t,performance:T8t,firstToken:R8t,total:P8t,error:_8t,code:j8t,message:N8t,csv:D8t,tabs:M8t,modelView:E8t,chip:I8t,moreFilters:O8t,slowThreshold:L8t,noModelUsage:U8t,noTrendToday:B8t,viewing:F8t,avgLatencySub:z8t,avgTotalDuration:q8t,latencyHint:H8t,openRequestDetail:V8t},G8t="Search",W8t="Search by user ID, email, or name",Y8t="User",Q8t="Back to users",X8t="You do not have permission to view this section.",Z8t="Refund",J8t="Refunding...",eFt="Initiate a refund of {{amount}} for {{email}}? Refunds are processed asynchronously; the balance updates after the worker runs.",tFt="Refund initiated.",nFt={overview:"Overview",network:"Network & Device",recentCalls:"Recent Calls",apiKeys:"Claves API",payments:"Payments",refunds:"Refunds",subscription:"Subscription",referrals:"Referrals",rewards:"Rewards",audit:"Audit"},aFt={title:"Free token allowance",paused:"Free token grants are paused on this account (risk review).",daily:"Daily",weekly:"Weekly",tokensUnit:"tokens",remaining:"{{value}} tokens remaining today"},oFt={title:"Free model quota (today)",tokens:"tokens",remaining:"{{value}} tokens remaining today",unlimited:"Free quota: unlimited (gate disabled)",eligibilityLabel:"Free tier eligibility",eligible:"Free tier",ineligible:"Ineligible (same device used)"},sFt={phase2:"Subscriptions are coming in Phase 2."},rFt={empty:"No payments"},iFt={empty:"No refunds"},lFt={empty:"No credit buckets",note:"Credit buckets show current balance inventory. Grant and refund history appear in the Audit timeline; referral rewards in the Referrals section."},cFt={totalEarned:"Total earned",frozenEarned:"Frozen",refereeCount:"Referees",activeCount:"Active",role:"Role",counterparty:"Counterparty",empty:"No referral activity"},dFt={empty:"No audit records"},uFt={amount:"Amount",credit:"Credit",status:"Status",provider:"Provider",createdAt:"Created",type:"Type",originalTx:"Original tx",remaining:"Remaining",initial:"Initial",expiresAt:"Expires",event:"Event",action:"Action",severity:"Severity"},mFt={ipLocationTitle:"IP y ubicación",deviceBrowserTitle:"Dispositivo y navegador",stripeTitle:"Stripe",signupIp:"IP de registro",signupCountry:"País de registro",lastLoginIp:"IP del último inicio de sesión",ipDifferent:"Difiere de la IP de registro",sameIpAccounts_one:"{{count}} cuenta con la misma IP de registro",sameIpAccounts_other:"{{count}} cuentas con la misma IP de registro",sameDeviceAccounts_one:"{{count}} cuenta en el mismo dispositivo",sameDeviceAccounts_other:"{{count}} cuentas en el mismo dispositivo",deviceFingerprint:"Huella del dispositivo",freeTierEligible:"Elegibilidad para nivel gratuito",firstDevice:"Primera en el dispositivo",notFirstDevice:"No es la primera en el dispositivo — sin beneficios gratuitos",browser:"Navegador",os:"OS",deviceType:"Tipo de dispositivo",acceptLanguage:"Accept-Language",stripeCustomerId:"Stripe Customer ID",viewOnIpinfo:"Ver en ipinfo.io"},pFt={empty:"Aún no hay llamadas",viewAll:"Ver todos los logs →",colStatus:"Estado",colTime:"Hora",colModel:"Modelo",colProtocol:"Protocolo",colDuration:"Duración",colCost:"Costo",colFreeDiscount:"Crédito gratuito"},fFt={empty:"Aún no hay API keys",colName:"Nombre",colKey:"Key",colStatus:"Estado",colPolicy:"Política de límite de uso",colLastUsed:"Último uso",colCreated:"Creada",colExpires:"Caduca",colSpend:"Gasto",spendTitle:"Desglose del gasto",spend30d:"Últimos 30 días",spendAllTime:"Total",spendRequests:"Solicitudes"},gFt="Copiar",hFt="Copiado",yFt={search:G8t,searchPlaceholder:W8t,title:Y8t,backToList:Q8t,noBlockPerm:X8t,refund:Z8t,refunding:J8t,refundConfirm:eFt,refundInitiated:tFt,nav:nFt,freeTokens:aFt,freeQuota:oFt,subscription:sFt,payments:rFt,refunds:iFt,rewards:lFt,referrals:cFt,audit:dFt,col:uFt,network:mFt,recentCalls:pFt,apiKeys:fFt,copy:gFt,copied:hFt},vFt="Users",bFt="Search users, grant credit, and suspend accounts.",xFt="Email",$Ft="Search by email",wFt="Account status",kFt={active:"Cuenta activa; puede iniciar sesión y llamar al gateway",suspended:"Suspendida; el gateway rechaza todas las solicitudes (401)"},CFt="Risk",SFt={normal:"Apto para todos los beneficios gratuitos",watchlisted:"Sin tokens gratis ni bono de registro; aún puede recargar y llamar al gateway",blocked:"El gateway rechaza todas las solicitudes (401); bloqueo total"},AFt="Users",TFt="No users found",RFt="Country",PFt="Last login",_Ft="Action",jFt="View",NFt="Deleted",DFt="Set status for {{email}}",MFt='Set {{email}} to "{{status}}"?',EFt="Grant credit",IFt="Add bonus credit to {{email}}. Recorded in the ledger.",OFt="Amount (USD)",LFt="e.g. 5",UFt="Reason (optional)",BFt="e.g. compensation for downtime",FFt="Type",zFt="Bonus credit",qFt="A gift. Does not count as a top-up.",HFt="Offline payment",VFt="Money we actually received. Counts as a top-up: unlocks paid-only models and rate-limit tiers.",KFt="Reference no.",GFt="e.g. bank slip 20260907-001",WFt="Record payment",YFt="Recording...",QFt="Cancel",XFt="Granting...",ZFt="Grant",JFt="Grant ${{amount}} to {{email}}? This is a large amount.",ezt="No display name",tzt="Loading...",nzt="score {{score}}",azt="Email verified",ozt="Yes",szt="No",rzt="Signup",izt="Signup method",lzt="Last login method",czt="Signup bonus",dzt="Onboarding",uzt="Locale / TZ",mzt="Markup ratio",pzt="Rate limit policy",fzt="Rate limit policy updated.",gzt="Joined",hzt="Never",yzt="Balance",vzt="Wallet & spend",bzt="Total spent",xzt="Recharged",$zt="Bonus granted",wzt="Refunded",kzt="Requests",Czt="Tokens",Szt="Actions",Azt="Identity & risk",Tzt="Role",Rzt="No permitted actions for your role.",Pzt="Acquisition source",_zt="Acquisition by source",jzt="Direct / unknown",Nzt="Custom source…",Dzt="Set",Mzt="Auto-detected: {{source}}",Ezt="UTM",Izt="Referred by",Ozt="Nota",Lzt="Añade una nota para identificar a este usuario",Uzt="Guardar nota",Bzt="Nota guardada",Fzt="Sin nota",zzt="Filtros",qzt="Location",Hzt="Preferred locale",Vzt={title:vFt,de
787scription:bFt,email:xFt,searchEmail:$Ft,status:wFt,statusEffect:kFt,risk:CFt,riskEffect:SFt,label:AFt,empty:TFt,country:RFt,lastLogin:PFt,action:_Ft,view:jFt,deleted:NFt,setStatusAria:DFt,setStatusConfirm:MFt,grantCredit:EFt,grantDescription:IFt,amountUsd:OFt,amountPlaceholder:LFt,reason:UFt,reasonPlaceholder:BFt,grantKind:FFt,grantKindBonus:zFt,grantKindBonusHint:qFt,grantKindOffline:HFt,grantKindOfflineHint:VFt,referenceNo:KFt,referenceNoPlaceholder:GFt,recordPayment:WFt,recording:YFt,cancel:QFt,granting:XFt,grant:ZFt,largeGrantConfirm:JFt,noDisplayName:ezt,loading:tzt,score:nzt,emailVerified:azt,yes:ozt,no:szt,signup:rzt,signupMethod:izt,lastLoginMethod:lzt,signupBonus:czt,onboarding:dzt,localeTz:uzt,markupRatio:mzt,rateLimitPolicy:pzt,rateLimitPolicyChanged:fzt,joined:gzt,never:hzt,walletBalance:yzt,walletSection:vzt,consumed:bzt,recharged:xzt,bonusGranted:$zt,refunded:wzt,requests:kzt,tokens:Czt,actionsSection:Szt,identitySection:Azt,role:Tzt,noPermittedActions:Rzt,acquisitionSource:Pzt,acquisitionTitle:_zt,sourceDirect:jzt,sourceCustomPlaceholder:Nzt,sourceSet:Dzt,sourceCaptured:Mzt,utm:Ezt,referrer:Izt,note:Ozt,notePlaceholder:Lzt,noteSave:Uzt,noteSaved:Bzt,noteEmpty:Fzt,filters:zzt,location:qzt,preferredLocale:Hzt},Kzt="Webhooks",Gzt="Stripe webhook events. Status filter, retry, payload inspection.",Wzt="Status",Yzt="Event type",Qzt="Received",Xzt="Event type",Zzt="Status",Jzt="Mode",e7t="Attempts",t7t="Retry",n7t="Retry queued",a7t="Event {{event}} reset to pending; next job tick will process.",o7t="Retry failed",s7t="No webhook events yet.",r7t="Stripe events will appear here once your endpoint is registered.",i7t="Loading payload...",l7t="Last error",c7t="Payload (JSON)",d7t={title:Kzt,description:Gzt,statusFilter:Wzt,eventTypeFilter:Yzt,receivedAt:Qzt,eventType:Xzt,status:Zzt,mode:Jzt,attempts:e7t,retry:t7t,retrySubmittedTitle:n7t,retrySubmittedBody:a7t,retryFailedTitle:o7t,empty:s7t,emptyHint:r7t,detailLoading:i7t,lastError:l7t,payload:c7t},u7t="API Keys",m7t="Crea tu primera key en 10 segundos",p7t="No se pudo copiar",f7t={label:"Modelos permitidos",allModels:"Todos los modelos",allHint:"Todos los modelos del catálogo están permitidos.",noModels:"No hay modelos disponibles.",selected:"{{count}} seleccionados",someHint:"{{count}} modelo(s) permitidos."},g7t={label:"Etiquetas",placeholder:"Añade una etiqueta y pulsa Enter",remove:"Quitar"},h7t="Crea keys con alcance para producción, staging y flujos de equipo.",y7t="Actualizar",v7t="Key predeterminada",b7t="Nombre de key",x7t="Creando...",$7t="Crear key",w7t="Key completa, se muestra una vez",k7t="Copiar API key",C7t="Copiado",S7t="Copiar",A7t="Cópiala y guárdala ahora. Al cerrar este panel, la key completa no podrá verse de nuevo.",T7t="Ya la guardé",R7t="No se pudieron cargar las API keys",P7t="Reintentar",_7t="Aún no hay API keys",j7t="Crea tu primera key para empezar a enviar solicitudes por OneHop.",N7t={label:"API keys",tags:"Etiquetas",name:"Nombre",key:"Key",status:"Estado",created:"Creada",action:"Acción",usage:"Uso",quota:"Cuota",expires:"Caduca",lastUsed:"Último uso"},D7t="Revocar",M7t="¿Revocar {{name}}? Esta acción no se puede deshacer.",E7t="Nombra la key. Los límites y la caducidad quedan en ajustes avanzados salvo que los necesites.",I7t="Límite mensual de credit",O7t="Caduca el",L7t="Sin límite",U7t="Guardando...",B7t="Guardar",F7t="Cancelar",z7t={title:"Deshabilitadas y revocadas",description:"Keys deshabilitadas o revocadas. Puedes reactivar una deshabilitada o conservar las revocadas como registro."},q7t={title:"No hay keys activas",description:"Vuelve a habilitar una key deshabilitada abajo o crea una nueva."},H7t={import:"Importar a CCS",client:"Cliente CC-Switch",codex:"Codex / OpenAI",claude:"Claude Code",pasteHint:"Se abrió CC Switch con un marcador. Pega ahí tu API key guardada.",checking:"Comprobando compatibilidad…",blocked:{title:"{{client}} no puede usar esta clave",body:"«{{keyName}}» solo permite modelos que {{client}} no puede usar. La importación provocará errores.",adjust:"Ajustar alcance de modelos",forceImport:"Importar de todos modos (no funcionará)"},pin:{title:"Importar como {{model}} para {{client}}",body:"«{{keyName}}» no incluye el modelo predeterminado de {{client}}. Así se enrutarán las solicitudes de {{client}} a través de este proveedor:",adjust:"Ajustar alcance de modelos",confirm:"Importar con {{model}}"}},V7t={search:"Buscar",searchPlaceholder:"Buscar nombre o sufijo de key",status:"Estado",allStatus:"Todos los estados",clear:"Borrar filtros",empty:"Ninguna key coincide con estos filtros",emptyDescription:"Borra la búsqueda o el filtro de estado para ver todas las keys.",mobileTitle:"Filtros"},K7t={active:"Activa",inactive:"Deshabilitada",revoked:"Revocada",expired:"Caducada",quota_exhausted:"Cuota agotada"},G7t={today:"Hoy {{requests}} req · {{credit}}",days30:"30 d {{requests}} req · {{credit}}"},W7t={use:"Detalles de conexión",edit:"Editar",enable:"Habilitar",disable:"Deshabilitar",delete:"Eliminar"},Y7t="Usar API key",Q7t="Usa la key guardada con el gateway de OneHop. La key completa solo se muestra al crearla.",X7t={baseUrl:"Base URL",keyHint:"API key",authorization:"Encabezado Authorization",env:"Variable de entorno",curl:"cURL",revealing:"Descifrando key…",fullKeyUnavailable:"La key completa solo se muestra al crearla. Usa el valor que guardaste o crea una key nueva si la perdiste.",protocolEndpoints:"Endpoints de protocolo"},Z7t="Ajustes avanzados",J7t="Crear API key",eqt="Editar API key",tqt={label:"Acceso a modelos",all:"Todos los modelos",limited:"Restringir a modelos específicos",allHint:"Esta key puede llamar a todos los modelos, incluidos los que se añadan más adelante.",snapshotHint:"Solo los modelos que elijas; los modelos nuevos no se incluyen automáticamente.",snapshotHintEdit:"Solo los modelos que elijas; los modelos nuevos no se añaden automáticamente. Cambiar a Todos los modelos reemplaza esta lista blanca.",searchPlaceholder:"Buscar modelos…",selectAllResults:"Seleccionar todos los resultados ({{count}})",selectedCount:"{{count}} / {{max}} seleccionados",clear:"Limpiar",hiddenSelected:"{{hidden}} de {{total}} seleccionados están ocultos por el filtro actual",selectVendor:"Seleccionar todo {{vendor}}, {{on}} de {{total}} seleccionados",emptyTitle:"Ningún modelo coincide",emptyDescription:"Prueba con otro tipo o búsqueda.",loadFailed:"No se pudieron cargar los modelos",loadFailedHint:"Reintenta o vuelve a Todos los modelos.",type:{all:"Todos",text:"Texto",image:"Imagen",video:"Video",embedding:"Embedding"},pickAtLeastOne:"Selecciona al menos un modelo o vuelve a Todos los modelos.",limitReached:"Reached the {{max}}-model limit"},nqt={title:"API key creada",subtitle:"{{name}} está lista; conéctala ahora.",onceWarning:"Se muestra una vez. Puedes volver a revelarla después, pero conviene copiarla ahora.",connect:"Conectar",done:"Listo"},aqt="IP",oqt="Revocada el {{date}}",sqt={title:u7t,emptyTitle:m7t,copyFailed:p7t,allowedModels:f7t,tags:g7t,description:h7t,refresh:y7t,defaultName:v7t,keyName:b7t,creating:x7t,createKey:$7t,fullKeyTitle:w7t,copyApiKey:k7t,copied:C7t,copy:S7t,fullKeyDescription:A7t,savedIt:T7t,loadFailed:R7t,retry:P7t,empty:_7t,emptyDescription:j7t,table:N7t,revoke:D7t,revokeConfirm:M7t,formDescription:E
7877t,monthlyCreditLimit:I7t,expiresAt:O7t,unlimited:L7t,saving:U7t,save:B7t,cancel:F7t,parked:z7t,noActive:q7t,ccswitch:H7t,filters:V7t,status:K7t,usage:G7t,actions:W7t,useTitle:Y7t,useDescription:Q7t,use:X7t,advancedSettings:Z7t,createTitle:J7t,editTitle:eqt,scope:tqt,created:nqt,lastUsedIp:aqt,revokedAt:oqt},rqt="Audit Logs",iqt="High-risk admin actions, by action and time.",lqt="Action",cqt="Clear",dqt={ops_user_update_status:"Estado del usuario actualizado",ops_users_allowlist_add:"Acceso de registro añadido",ops_users_allowlist_update:"Acceso de registro actualizado",ops_users_allowlist_invite:"Invitación de acceso de registro enviada",ops_users_allowlist_revoke:"Acceso de registro eliminado",ops_users_allowlist_restore:"Acceso de registro restaurado",ops_model_create:"Modelo creado",ops_model_update:"Modelo actualizado",ops_model_update_status:"Estado del modelo actualizado",sub2api_pool_create:"Pool de enrutamiento creado",sub2api_pool_test:"Pool de enrutamiento probado",sub2api_pool_rotate_secret:"Secreto de enrutamiento rotado"},uqt="Audit logs",mqt="No audit entries",pqt="Time",fqt="Severity",gqt="Target",hqt={ai_model:"Model",sub2api_key_pool:"Routing key pool",sys_user:"User",wallet:"Wallet"},yqt="Tipo de destino",vqt="ID de solicitud",bqt={title:rqt,description:iqt,action:lqt,clear:cqt,actions:dqt,label:uqt,empty:mqt,time:pqt,severity:fqt,target:gqt,targetTypes:hqt,targetType:yqt,requestId:vqt},xqt="Inicia sesión en OneHop",$qt="Introduce tu código",wqt="Continúa con Google o email",kqt="Introduce tu email para recibir un código",Cqt="Introduce el código de 6 dígitos enviado a {{email}}",Sqt="Continuar con Google",Aqt="Continuar con email",Tqt="o",Rqt="Email",Pqt="Enviar código de verificación",_qt="Enviando...",jqt="Verificar",Nqt="Verificando...",Dqt="Reenviar en {{seconds}}s",Mqt="Reenviar código",Eqt="Al continuar aceptas nuestros",Iqt="Términos",Oqt="Privacidad",Lqt={signIn:"Iniciar sesión",signOutFailed:"No se pudo cerrar sesión",sendCodeFailed:"No se pudo enviar el código",notAllowed:"Este correo aún no tiene acceso aprobado. Contacta a tu administrador para solicitarlo.",invalidCode:"Código no válido",codeIncorrect:"Código incorrecto, inténtalo de nuevo",googleFailed:"No se pudo iniciar sesión con Google",verifyHuman:"Completa la verificación para continuar",verifyUnavailable:"La verificación humana no está disponible temporalmente. Continúa con Google arriba o vuelve a intentarlo más tarde."},Uqt={signInTitle:xqt,enterCodeTitle:$qt,methodIntro:wqt,emailStepIntro:kqt,codeIntro:Cqt,continueGoogle:Sqt,continueEmail:Aqt,or:Tqt,emailLabel:Rqt,sendCode:Pqt,sending:_qt,verify:jqt,verifying:Nqt,resendIn:Dqt,resendCode:Mqt,termsPrefix:Eqt,terms:Iqt,privacy:Oqt,errors:Lqt},Bqt="Facturación",Fqt="Recarga Credits, canjea cupones y revisa la actividad de la wallet.",zqt={bonuses:"Bonificaciones",topups:"Recargas",usage:"Consumo"},qqt={available:"Acreditado",availableHint:"Ya incluido en tu saldo disponible",frozen:"Pendiente (bloqueado)",frozenHint:"Disponible en ~{{days}} días",frozenHintGeneric:"Disponible tras el periodo de retención",title:"Recompensas por referidos",viewDetails:"Ver detalles de referidos"},Hqt={noUsage:"Sin consumo en los últimos 30 días",perDay:"{{amount}} de media/día",daysLeft:"≈ {{days}} días al ritmo actual"},Vqt={amountUsd:"Importe (USD)",minAmountHint:"Recarga mínima de {{amount}}.",apply:"Aplicar",get:"Recibirás",onehopCredits:"OneHop credits",pay:"Pagar",poweredByStripe:"Protegido por Stripe",poweredBy:"Protegido por {{provider}}
787",secureCheckout:"Pago alojado seguro",secureCheckoutShort:"Pago seguro",taxExclusiveNotice:"Los impuestos aplicables se calculan en el pago y se suman a este importe.",presets:"Importes predefinidos",promoCode:"Código promocional",promoCodePlaceholder:"Introduce el código",serviceFee:"Comisión de servicio",title:"Recargar",topupAmount:"Importe de recarga",totalDue:"Total a pagar",payCta:"Pagar {{amount}}",previewing:"Comprobando…",discount:"Descuento del cupón",couponBelowMin:"El total con descuento es demasiado bajo: aumenta el importe o prueba otro código.",maintenanceTitle:"Pagos temporalmente no disponibles",maintenanceDescription:"Los pagos no están disponibles temporalmente. Contáctanos por Telegram si necesitas pagar.",contactTelegram:"Contáctanos por Telegram",alipay:"Alipay",wechatPay:"WeChat Pay",crypto:"Pagar con cripto (USDC / USDT)",payOnStripe:"El pago se completa en la página segura de pago de Stripe.",payOnProvider:"El pago se completa en la página segura de pago de {{provider}}.",payOnHostedCheckout:"El pago se completa en la página segura de pago alojada.",amountPrecision:"{{provider}} acepta importes en USD con un máximo de 2 decimales. Ajusta el importe o el código promocional.",couponBonus:"Bono del cupón",couponBonusExpiry:"El crédito de bono caduca {{days}} días después del pago.",couponInvalid:"Este código no se puede aplicar; prueba con otro.",couponErrors:{limitReached:"Ya has usado este código el número máximo de veces.",invalid:"Este código no es válido.",expired:"Este código ha caducado.",exhausted:"Este código ya se ha canjeado por completo.",unavailable:"Este código está en uso; inténtalo de nuevo en un momento."},tierBonus:"Bono de promoción",tierBonusExpiry:"El crédito de bono caduca {{days}} días después del pago.",tierBonusRestricted:"El crédito de bono solo puede usarse en: {{models}}.",nextTierPercent:"Recarga {{amount}} más y obtén un {{percent}} % en crédito de bono.",nextTierBonus:"Recarga {{amount}} más y obtén {{bonus}} en crédito de bono.",tierCapReached:"Ya has alcanzado el bono máximo de esta promoción."},Kqt="Añadir Credits",Gqt="Creando...",Wqt="Credit disponible",Yqt="Recargar",Qqt="Pagos con Stripe",Xqt="Importe (USD)",Zqt="Importes de recarga predefinidos",Jqt="Canjear cupón",eHt="Código de cupón",tHt="Canjeando...",nHt="Canjear",aHt="Cupón canjeado. El saldo se está actualizando.",oHt="Redirigiendo al checkout seguro...",sHt="No se pudo cargar el resumen de facturación",rHt="Error al recargar",iHt="Pestañas de actividad de facturación",lHt="Transacciones",cHt="Credit concedidos",dHt="Tipo de transacción",uHt="Origen",mHt="Aún no hay transacciones",pHt="Recargas, cargos y concesiones aparecen aquí.",fHt="Entradas del ledger",gHt="Hora",hHt="Tipo",yHt="Importe",vHt="Saldo",bHt="Aún no hay concesiones",xHt="Bonos de registro, cupones y concesiones manuales aparecen aquí.",$Ht="Estado",wHt={successTitle:"Pago recibido",polling:"Acreditando tu wallet... unos 30 segundos.",delayed:"Está tardando en llegar. Actualiza en un momento o revisa tus recibos de Stripe.",cancelledTitle:"Pago cancelado",cancelledBody:"No se realizó ningún cargo. Inténtalo de nuevo cuando lo prefieras.",failedTitle:"El pago falló",failedBody:"No se pudo completar tu pago. No se añadió crédito. Inténtalo de nuevo o usa otro método de pago."},kHt={text:"Los Credits son un saldo de servicio prepagado, no un depósito bancario. Los Credits consumidos no son reembolsables. Todos los precios están en USD. Consulta los",tosLink:"Términos"},CHt="Recibos",SHt="Abriendo...",AHt="No se pudo abrir el portal de facturación",THt={title:"Recargas recientes",subtitle:"Últimos 90 días, reembolsables dentro de 24 horas.",loading:"Cargando recargas...",date:"Fecha",amount:"Importe",credits:"Credits",status:"Estado",refund:"Reembolsar",alreadyRefunded:"Ya reembolsado",windowExpired:"Ventana de reembolso vencida (24 horas)",confirmTitle:"Confirmar reembolso",confirmBody:"Stripe procesará el reembolso en 1-3 días hábiles. Se aplica una comisión de plataforma ({{fee}}) en reembolsos iniciados por el usuario.",amountLabel:"Importe del reembolso (USD)",maxLabel:"Máx. ${{value}}",requestedLabel:"Reembolso solicitado",platformFeeLabel:"Comisión de plataforma ({{fee}})",cardReturnLabel:"Devuelto a tu tarjeta",bonusForfeitureHint:"Los Credits promocionales otorgados con esta recarga se anularán de forma proporcional.",cancel:"Cancelar",confirm:"Emitir reembolso",submitting:"Env
787iando...",refundSubmittedTitle:"Reembolso enviado",refundSubmittedBody:"Stripe devolverá los fondos a tu tarjeta en 1-3 días hábiles.",refundFailedTitle:"El reembolso falló",balance:"Saldo",confirmAmount:"Reembolsar {{amount}}"},RHt={title:"Alertas de saldo",description:"Te avisamos cuando tu saldo se agota.",emailLabel:"Avísame por correo",webhookLabel:"Webhook",autorechargeLabel:"Recarga automática",autorechargeUnsupported:"La recarga automática no está disponible con el proveedor de pago activo.",autorechargeAddCardHint:"añade una tarjeta para mantener tu saldo",autorechargeTopUp:"Recargar",autorechargeWhenBelow:"cuando el saldo baje de",autorechargeThreshold:"Umbral de recarga automática",autorechargeAmount:"Importe de recarga automática",autorechargeDisabledFailures:"La recarga automática se desactivó tras varios fallos seguidos. Actualiza tu tarjeta y vuelve a activarla.",autorechargeIncomplete:"Define un importe de recarga y un umbral superior a $0.",test:"Probar",testing:"Probando…",testQueued:"Entrega de prueba en cola: revisa tu endpoint",testFailed:"No se pudo poner en cola la entrega de prueba",signingSecret:"Secreto de firma",secretOnSave:"Se genera un secreto de firma al guardar.",rotate:"Rotar",secretRotated:"Secreto de firma rotado",rotateFailed:"No se pudo rotar el secreto",secretCopied:"Secreto de firma copiado",saved:"Ajustes de alerta guardados",saveFailed:"No se pudieron guardar los ajustes de alerta",loadFailed:"No se pudieron cargar los ajustes de alerta",thresholdRequired:"Define un umbral superior a $0 para activar las alertas.",webhookUrlRequired:"Introduce una URL https:// para el webhook.",thresholdOrderBad:"El umbral de alerta debe ser ≥ al umbral de recarga automática.",card:"Tarjeta",changeCard:"Cambiar",removeCard:"Quitar",cardRemoved:"Tarjeta eliminada",cardRemoveFailed:"No se pudo eliminar la tarjeta",cardSetupFailed:"No se pudo iniciar la configuración de la tarjeta",lowBalanceGroup:"Alertas de saldo bajo",thresholdLabel:"Umbral de alerta"},PHt={title:"Historial de transacciones",idSearch:"ID de transacción",amountRange:"Rango de importe (USD)",min:"Mín",max:"Máx",clear:"Borrar",retry:"Reintentar",empty:"No hay transacciones en este rango",date:"Fecha",typeMethod:"Tipo / método",description:"Descripción",action:"Acción",prevMonth:"Mes anterior",nextMonth:"Mes siguiente",viewInvoices:"Ver facturas",emptyNew:"Aún no hay transacciones",emptyNewDesc:"Cuando recargues, tus recargas, bonos y reembolsos aparecerán aquí.",topUpCta:"Recargar",emptyFiltered:"Ninguna transacción coincide",emptyFilteredDesc:"Borra filtros o amplía el rango de fechas.",clearFilters:"Borrar filtros"},_Ht="Tu saldo es bajo y puede interrumpir solicitudes. Recarga o activa la recarga automática.",jHt="Tu saldo es bajo y puede interrumpir solicitudes. Recarga para continuar.",NHt={creditPurchase:"Recarga de crédito",topupBonus:"Top-up bonus",signupBonus:"Signup bonus",referralClawback:"Referral cashback clawback (refund)",couponBonus:"Bono del cupón",referralCashback:"Reembolso por referidos",referralInviteeCashback:"Bono del invitado",redeemCode:"Código de canje {{code}}",redeemCodeReversal:"Canje revertido",stripeRefund:"Reembolso de Stripe",bonusReversal:"Reversión de bono (reembolso)"},DHt={title:"Crédito asignado",subtitle:"Crédito de bonificación utilizable solo en modelos específicos, separado de tu saldo.",onlyModels:"Solo {{models}}",onlyModelsGeneric:"Modelos restringidos",validUntil:"Válido hasta {{date}}",noExpiry:"Sin caducidad",useInChat:"Use in chat"},MHt={card:"Tarjeta",alipay:"Alipay",wechatPay:"WeChat Pay"},EHt={title:"Código de canje",description:"¿Tienes un código de canje? Introdúcelo para abonar su valor nominal a tu saldo.",placeholder:"Por ejemplo: OHR-XXXXXXXX",redeem:"Canjear",redeeming:"Canjeando…",success:"Se canjeó {{amount}} a tu saldo",successRestricted:"Redeemed {{amount}} — usable with {{models}} only",successValidity:"Valid until {{date}}.",errors:{invalid:"Este código no es válido.",expired:"Este código ha caducado.",alreadyRedeemed:"Este código ya se ha canjeado.",perUserLimit:"Has alcanzado el límite de canje de este lote."}},IHt={title:Bqt,description:Fqt,breakdown:zqt,referralRewards:qqt,burn
787Rate:Hqt,topup:Vqt,addCredits:Kqt,creating:Gqt,availableCredit:Wqt,topUp:Yqt,poweredByStripe:Qqt,amountUsd:Xqt,presetAmounts:Zqt,redeemCoupon:Jqt,couponCode:eHt,redeeming:tHt,redeem:nHt,couponRedeemed:aHt,redirecting:oHt,summaryFailed:sHt,topupFailed:rHt,tabsLabel:iHt,transactions:lHt,creditGrants:cHt,transactionType:dHt,source:uHt,noTransactions:mHt,noTransactionsDescription:pHt,ledgerEntries:fHt,time:gHt,type:hHt,amount:yHt,balance:vHt,noGrants:bHt,noGrantsDescription:xHt,status:$Ht,topupBanner:wHt,compliance:kHt,receipts:CHt,openingPortal:SHt,portalFailed:AHt,recentTopups:THt,alerts:RHt,history:PHt,lowBalanceWarning:_Ht,lowBalanceWarningNoAutoTopup:jHt,ledgerDesc:NHt,earmarked:DHt,paymentMethod:MHt,redeemCard:EHt},OHt="No se pudo cargar el gráfico",LHt="Sin datos",UHt="Todavía no hay datos para graficar.",BHt={errorTitle:OHt,emptyTitle:LHt,emptyDescription:UHt},FHt={copy:"Copiar",regenerate:"Regenerar",shareComingSoon:"Compartir (próximamente)",download:"Descargar",copyLink:"Copiar enlace",newChat:"Nuevo chat",deleteChat:"Eliminar chat",openConversationList:"Abrir lista de conversaciones",openSettings:"Ajustes del chat",collapseSidebar:"Contraer barra lateral",expandSidebar:"Expandir barra lateral",cancel:"Cancelar",apply:"Aplicar",newChatTooltip:"
787Crear nuevo chat",copied:"Copiado"},zHt={placeholderReady:"Inicia una nueva conversación...",placeholderNoModel:"Primero elige un modelo arriba",attachmentTooLarge:"El archivo supera {{limit}} y no se puede subir",attachmentUnsupported:"Tipo de archivo no admitido. Usa PNG, JPEG, WebP, GIF, MP4, WebM o MOV.",unsupportedVision:"Este modelo no acepta entradas de imagen ni de vídeo. Cambia de modelo antes de soltar archivos.",send:"Enviar",abort:"Detener",attachImage:"Añadir imagen",attachMedia:"Añadir imagen o vídeo",removeAttachment:"Quitar",shortcutSend:"enviar",shortcutNewLine:"nueva línea",shortcutAbort:"detener",frameFirst:"Primer fotograma",frameLast:"Último fotograma",frameReference:"Referencia",imageMode:"Generación de imágenes",videoMode:"Generación de video",placeholderComingSoon:"This model is coming soon — pick another one above",reasoning:"Razonamiento",reasoningOff:"Desactivado",reasoningAlways:"Siempre activado",placeholderTopupRequired:"Este modelo es para cuentas que han recargado: recarga para usarlo aquí"},qHt={modelUnavailable:"El modelo {{model}} no está disponible ahora mismo. Tu prompt se ha guardado.",rateLimited:"Hay demasiadas solicitudes concurrentes. Inténtalo de nuevo en breve.",accountDisabled:"Esta cuenta está deshabilitada y no puede seguir chateando.",attachmentsUploading:"Las imágenes aún se están subiendo. Espera un momento antes de enviar.",attachmentsFailed:"No se pudo subir una imagen. Quítala y vuelve a intentarlo antes de enviar."},HHt={title:"Prueba cualquier modelo aquí.",body:"Chatea directamente con cualquier modelo. El uso se cobra a tu wallet PAYG.",starters:{compareModels:"Compara GPT-5.5 y Claude Opus en la misma tarea de código",analyzeImage:"Analiza un diagrama de arquitectura y resume los riesgos",draftPrompt:"Redacta un system prompt para un agente de soporte",generateImage:"Genera una imagen hero de producto con un estilo SaaS limpio"}},VHt={untitled:"Chat sin título",deleteConfirm:'¿Eliminar "{{title}}"?',emptyTitle:"Aún no hay conversaciones",emptyBody:"Usa + Nuevo chat arriba para empezar.",listLabel:"Lista de conversaciones",groups:{today:"Hoy",yesterday:"Ayer",earlier:"Anteriores"},menu:{rename:"Renombrar",delete:"Eliminar"},deleteTitle:"¿Eliminar conversación?"},KHt={paygWallet:"Wallet PAYG"},GHt={chooseModel:"Elegir modelo",searchPlaceholder:"Buscar modelos...",emptyTitle:"No se encontraron modelos",emptyBody:"Prueba con otro término de búsqueda o pestaña.",protocols:"{{count}} protocols",context:"{{value}} ctx",tabs:{all:"Todos",text:"Texto",image:"Imagen",video:"Vídeo"},maxOut:"salida {{value}}",unavailable:"Temporalmente no disponible",requiresTopup:"Recarga para desbloquear"},WHt={title:"Ajustes del chat",protocol:"Protocol",unlimited:"Ilimitado",fields:{memory_limit:{label:"Memoria del chat"},temperature:{label:"Temperature"},top_p:{label:"Top P"},max_tokens:{label:"Tokens máximos",placeholder:"128000"},service_tier:{label:"Nivel de servicio",options:{standard:"Estándar",priority:"Prioritario",flex:"Flexible"}},thinking_budget:{label:"Presupuesto de razonamiento (tokens)",placeholder:"p. ej., 2000"},stop_sequences:{label:"Secuencias de parada",placeholder:"Separadas por comas, p. ej., END, STOP",itemLabel:"Parada"},system_prompt:{label:"System Prompt",placeholder:"Introduce un system prompt..."},prompt_cache_mode:{label:"Prompt Cache",options:{implicit:"Implícito",explicit:"Explícito"}},image_size:{label:"Resolución de imagen"},image_resolution:{label:"Resolución"},image_quality:{label:"Calidad de imagen",options:{Auto:"Automática",auto:"Automática",low:"Baja",medium:"Media",high:"Alta"}},video_ratio:{label:"Relación de aspecto"},video_resolution:{label:"Resolución de video"},video_duration_seconds:{label:"Duración"},tools:{label:"Tools (JSON)",placeholder:'[{ "type": "function", "function": { ... } }]'},image_count:{label:"Cantidad de imágenes"},image_aspect_ratio:{label:"Relación de aspecto"},reasoning_effort:{label:"Intensidad de razonamiento",options:{none:"Desactivado",minimal:"Mínima",low:"Baja",medium:"Media",high:"Alta",xhigh:"Muy alta",max:"Máxima"}},reasoning_pro:{label:"Modo Pro"},reasoning_context:{label:"Contexto de razonamiento",options:{auto:"Automático",current_turn:"Turno actual",all_turns:"Todos los turnos"}},reasoning_enabled:{label:"Razonamiento"},reasoning_always:{label:"Razonamiento",value:"Siempre activado"}}},YHt={estimating:"estimando...",settling:"liquidando...",input:"entrada",output:"salida",milliseconds:"ms",realCost:"Coste real",latency:"Latencia",logDetail:"Detalle del log"},QHt={copied:"Enlace de imagen copiado",expired:"El enlace de la imagen ha caducado. Copia el enlace para volver a abrirla o regenerarla.",attachment:"[imagen adjunta]"},XHt={message:"Este chat se factura a tu wallet PAYG",balance:"Saldo",billingLink:"Facturación",dismiss:"Descartar"},ZHt={badge:"Earmarked {{amount}}",bannerTitle:"Earmarked credit available",bannerBody:"You have {{amount}} of dedicated credit for this model — it's used first."},JHt={trigger:"Copiar como código",copied:"Copiado como {{format}}",failed:"No se pudo copiar",failedDescription:"Es posible que el navegador haya bloqueado el permiso del portapapeles."},eVt={interrupted:"[Interrumpido]",sending:"enviando"},tVt={title:"Proceso de razonamiento",duration:"Razonó durante {{seconds}}s"},nVt={title:"La generación de vídeo estará disponible pronto",body:"Este modelo aparece para exploración, pero el envío de vídeo aún no está habilitado.",switchToText:"Cambiar a un modelo de texto"},aVt={imageGenerating:"Generando imagen",videoGenerating:"Generando video",stage:{queued:"En cola",routing:"Enrutando",generating:"Generando",storing:"Almacenando",settling:"Liquidando"}},oVt={INSUFFICIENT_CREDITS:"Saldo insuficiente",RATE_LIMITED:"Demasiadas solicitudes",rate_limit_error:"Demasiadas solicitudes",MODEL_NO_VISION:"Este modelo no admite entrada de imágenes",CONTENT_REFUSED:"El modelo rechazó esta solicitud",EMPTY_RESPONSE:"El modelo devolvió una respuesta vacía",upstream_error:"Error del servicio upstream",overloaded_error:"El servicio upstream está saturado",upstream_invalid_json:"Respuesta del upstream con formato incorrecto",stream_read_error:"Flujo de respuesta interrumpido",invali
787d_api_key:"Error de autenticación con el upstream",model_unavailable:"Modelo temporalmente no disponible",no_image:"No se generó ninguna imagen",no_body:"Sin respuesta del upstream",http_error:"Error en la solicitud",session_create_failed:"No se pudo crear la sesión"},sVt={title:"Recarga para desbloquear este modelo",body:"Está disponible para cuentas que han recargado. Cualquier importe lo desbloquea al instante y el saldo se cobra por uso.",cta:"Recargar"},rVt={actions:FHt,composer:zHt,errors:qHt,empty:HHt,sidebar:VHt,header:KHt,modelSelector:GHt,settings:WHt,metrics:YHt,image:QHt,payg:XHt,earmark:ZHt,copyAsCode:JHt,status:eVt,thinking:tVt,video:nVt,media:aVt,errorCodes:oVt,topupLock:sVt},iVt="Cargando...",lVt="Cuenta",cVt="Idioma",dVt="Iniciar sesión",uVt="Cerrar sesión",mVt="Cerrando sesión...",pVt="Guardar cambios",fVt="Guardando...",gVt="Guardado.",hVt="Atrás",yVt="Reintentar",vVt="5% de descuento en la comisión de servicio al recargar.",bVt="Guardar",xVt="Cancelar",$Vt="Borrar",wVt="Restablecer",kVt="Copiado",CVt="No se pudo copiar",SVt="Cerrar",AVt="Total",TVt={timestamp:"Marca de tiempo",local:"Hora local",relative:"Relativo"},RVt="Copiar",PVt={title:"Abre en tu navegador",description:"Estás viendo esto dentro del <b>navegador de una app</b>, donde <b>el inicio de sesión con Google y la verificación humana no funcionan</b>. Ábrelo en el navegador de tu sistema para continuar.",hintWechat:"Toca el menú ··· de la esquina superior derecha y elige «Abrir en el navegador».",hintGeneric:"Usa el menú de la esquina superior derecha y elige «Abrir en el navegador / Safari».",copyLink:"Copiar enlace",continueAnyway:"Continuar de todos modos"},_Vt="Todos",jVt="Activo",NVt="Opcional",DVt="Quitar",MVt={loading:iVt,account:lVt,language:cVt,signIn:dVt,signOut:uVt,signingOut:mVt,saveChanges:pVt,saving:fVt,saved:gVt,back:hVt,retry:yVt,topUpPromo:vVt,save:bVt,cancel:xVt,clearAll:$Vt,reset:wVt,copied:kVt,copyFailed:CVt,dismiss:SVt,total:AVt,time:TVt,copy:RVt,inAppBrowser:PVt,all:_Vt,active:jVt,optional:NVt,remove:DVt},EVt="Panel",IVt="Supervisa créditos, uso y salud clave del gateway desde una sola consola.",OVt="Crear API key",LVt={creditBalance:"Saldo de credit",requestsToday:"Solicitudes de hoy",activeApiKeys:"API keys activas"},UVt={title:"Tendencia de uso",description:"Solicitudes y credit facturado durante los últimos 14 días.",viewUsage:"Ver uso",loading:"Cargando tendencia de uso",empty:"Aún no hay uso",emptyDescription:"El uso aparece aquí cuando empiecen a llegar solicitudes."},BVt={title:"Actividad de credit",description:"Credit facturado por día en los últimos 90 días.",total:"Total de 90 días",loading:"Cargando actividad",activeDays:"{{count}} días activos en los últimos {{days}} días",less:"Menos",more:"Más"},FVt={title:"Resumen de uso",description:"Una vista compacta de la intensidad de gasto, el volumen de tokens y el modelo con más uso.",activeDays:"Días activos",ofDays:"de {{days}} días",avgDailyCredit:"Credit diario medio",nonZeroDays:"en días activos",peakDay:"Día pico",noPeak:"Aún no hay uso",tokens:"Tokens",topModel:"Modelo principal",creditShare:"Cuota del credit facturado"},zVt={title:"Salud rápida",requests7d:"Solicitudes de 7 días",creditToday:"Credit gastado hoy",credit7d:"Credit gastado en 7 días"},qVt={title:"Solicitudes recientes",description:"Últimas llamadas al gateway en tus keys.",viewRecords:"Ver registros",table:{label:"Solicitudes recientes",model:"Modelo",status:"Estado",tokens:"Tokens",credit:"Credit",time:"Hora",apiKey:"API key"},empty:"Aún no hay solicitudes",emptyDescription:"Crea una API key, envía una solicitud y las llamadas recientes aparecerán aquí."},HVt={title:"Haz tu primera solicitud",description:"Compatible con OpenAI. Crea una key, configura {{env}} y llama al gateway."},VVt={credit:"Credit",requests:"Solicitudes"},KVt={title:EVt,description:IVt,createApiKey:OVt,cards:LVt,usageTrend:UVt,activity:BVt,usageMix:FVt,quickHealth:zVt,recent:qVt,firstRequest:HVt,tooltip:VVt},GVt="Seleccionar todas las filas",WVt="Seleccionar fila {{row}}",YVt="No se pudo cargar",QVt="Sin datos",XVt="No hay registros para mostrar.",ZVt="Más detalles",JVt="{{count}} detalles más",e9t="Abrir detalles",t9t={selectAllRows:GVt,selectRow:WVt,errorTitle:YVt,emptyTitle:QVt,emptyDescription:XVt,moreDetails:ZVt,moreDetailsWithCount:JVt,o
787penRow:e9t},n9t="Última hora",a9t="Hoy",o9t="Ayer",s9t="Últimos 7 días",r9t="Últimos 30 días",i9t="Este mes",l9t="Por mes",c9t="Personalizado",d9t="Todo el tiempo",u9t="Seleccionar fecha",m9t="Cancelar",p9t="Aplicar",f9t="La fecha de inicio debe ser anterior a la fecha de fin.",g9t="Preajustes de intervalo",h9t="Mes anterior",y9t="Mes siguiente",v9t={last1h:n9t,today:a9t,yesterday:o9t,last7d:s9t,last30d:r9t,thisMonth:i9t,byMonth:l9t,custom:c9t,all:d9t,selectDate:u9t,cancel:m9t,apply:p9t,reversedError:f9t,presetsAriaLabel:g9t,previousMonth:h9t,nextMonth:y9t},b9t="Cuenta no disponible",x9t="La cuenta se está inicializando",$9t={title:"Cuenta suspendida",description:"Esta cuenta aún puede iniciar sesión, pero el acceso a la consola y las solicitudes al gateway están pausados.",detail:"Si crees que esto es un error, contacta con support desde el email de esta cuenta."},w9t={accountUnavailable:b9t,accountInitializing:x9t,accountRestricted:$9t},k9t="Tokens gratis",C9t="Cuota diaria de tokens gratis para modelos seleccionados: se renueva automáticamente. No se cobra nada a tu monedero.",S9t="No se pudo cargar tu cuota de tokens gratis.",A9t="Todos los modelos",T9t="La campaña termina el {{date}}",R9t={daily:"Diaria",weekly:"Semanal"},P9t={daily:"Se renueva a diario",weekly:"Se renueva cada semana",localTime:"tu hora local {{time}}",countdown:"próxima renovación en {{duration}}",refreshingSoon:"se renovará pronto"},_9t={title:"No hay campañas de tokens gratis activas",description:"Cuando haya una campaña de tokens gratis en curso, tu cuota diaria aparecerá aquí."},j9t={title:"La concesión de tokens gratis está en pausa en tu cuenta",body:"Esta cuenta parece formar parte de un patrón de registro masivo, por lo que las concesiones gratuitas están en pausa por ahora. Si se trata de un error, escríbenos a"},N9t="tokens",D9t="Quedan {{value}} tokens hoy",M9t={label:"Avísame por correo al agotarse",hint:"Recibe un correo cuando se agoten tus tokens gratis del día."},E9t={crg_freetoken_daily_cn5:"Modelos chinos · tokens gratis diarios"},I9t={title:k9t,description:C9t,loadFailed:S9t,allModels:A9t,campaignEnds:T9t,cadence:R9t,refresh:P9t,empty:_9t,paused:j9t,tokensUnit:N9t,remainingToday:D9t,emailToggle:M9t,campaigns:E9t},O9t="Logs",L9t="Inspecciona coste, latencia, tokens, estado y señales de routing por solicitud.",U9t={copiedCurl:"curl copiado",copiedId:"ID de solicitud copiado",copyCurl:"Copiar como curl",copyFailed:"No se pudo copiar",copyId:"Copiar ID de solicitud",menu:"Acciones de fila",openTab:"Abrir en nueva pestaña"},B9t={prompt:"Prompt",ratio:"Tasa de acierto",read:"Lectura de caché",title:"Tasa de acierto de caché"},F9t={confirm:"Cancelar tarea",failed:"No se pudo cancelar la tarea",keep:"Mantener",message:"Esta tarea sigue en cola. Al cancelarla dejará de procesarse y no se aplicará ningún cargo.",success:"Tarea cancelada",title:"¿Cancelar tarea?",pending:"Cancelando..."},z9t={cacheHit:"Acierto de caché",cost:"Coste",ip:"IP",latency:"Latencia",model:"Modelo",source:"Origen",status:"Estado",stream:"Streaming",time:"Hora",tokens:"Tokens",tps:"Throughput"},q9t={trigger:"Ajustes de columnas"},H9t={body:"Haz una solicitud a través de OneHop y aparecerá aquí.",title:"No hay logs en este intervalo"},V9t={all:"Todo",apiKey:"API key",cost:"Coste (USD)",desktopDateRangeAria:"Seleccionar intervalo de fechas en escritorio",finishReason:"Motivo de finalización",latency:"Latencia (s)",max:"Máx.",min:"Mín.",mobileDateRangeAria:"Seleccionar intervalo de fechas en móvil",model:"Modelo",modelsSelected:"{{count}} seleccionados",more:"Más filtros",refresh:"Actualizar",request:"Buscar por ID de solicitud",requestIdLabel:"ID de solicitud",status:"Estado",stream:"Streaming",time:"Hora",type:"Tipo",mobileTitle:"Filtros"},K9t={requests:"registros en esta página",times:"horas mostradas en"},G9t={rowsPer:"Filas"},W9t={all:"Todo el tiempo",custom:"Personalizado",last1h:"Última hora",last30d:"Últimos 30 días",last7d:"Últimos 7 días",thisMonth:"Este mes",today:"Hoy",yesterday:"Ayer"},Y9t={title:"Cliente",unknown:"No se reportó user-agent",unknownShort:"Desconocido"},Q9t={output:"Tokens de salida",rate:"Tasa",title:"Throughput",window:"Ventana de generación"},X9t={title:"Solicitud",openDetail:"Abrir detalle de la solicitud",copy:"Copiar ID",copied:"Copiado",copyFailed:"No se pudo copiar",close:"Cerrar",loading:"Cargando…",response:"Respuesta",sections:{request:"Solicitud",routing:"Routing",tokens:"Tokens",cost:"Desglose de coste",performance:"Ren
787dimiento",error:"Error",outcome:"Resultado",multimodal:"Multimodalidad"},fields:{requestId:"ID de solicitud",time:"Hora",apiKey:"API key",userAgent:"User-Agent",billingMode:"Modo de facturación",onehopModel:"Modelo OneHop",endpoint:"Endpoint",firstToken:"Primer token",total:"Duración total",throughput:"Throughput",stream:"Stream",clientIp:"IP del cliente",finishReason:"Motivo de finalización",mediaType:"Tipo de medio",imageCount:"Imágenes",imageSize:"Tamaño",errorCode:"Código",errorMessage:"Mensaje",requestedModel:"Modelo solicitado"},billingMode:{token:"Por token",per_request:"Por solicitud",image:"Por imagen"},timeline:{heading:"Ciclo de vida",received:"Solicitud recibida",routed:"Enrutada",failed:"Fallida",generated:"Generada",metered:"Medida",billed:"Facturada"},downloadMedia:"Descargar"},Z9t={success:"correcto",completed:"completado",failed:"fallido",pending:"pendiente",repairing:"reparando",queued:"en cola",running:"en ejecución",cancelled:"cancelado",expired:"caducado"},J9t={chat:"Chat",image:"Imagen",video:"Video"},eKt={stop:"Stop",length:"Límite de longitud",tool_calls:"Llamadas a herramientas",content_filter:"Filtro de contenido",error:"Error"},tKt={true:"Streaming",false:"Sin streaming"},nKt={title:"Desglose de coste"},aKt={title:"Desglose de tokens",prompt:"Entrada",completion:"Salida",imageOutput:"Tokens de salida de imagen",cacheRead:"Lectura de caché",cacheWrite:"Escritura de caché",cacheWrite5m:"Escritura de caché 5m",cacheWrite1h:"Escritura de caché 1h",total:"Total"},oKt={timestamp:"Marca de tiempo",local:"Hora local",relative:"Relativo"},sKt={inputCost:"Coste de entrada",outputCost:"Coste de salida",cacheReadCost:"Coste de lectura de caché",cacheWriteCost:"Coste de escritura de caché",inputPrice:"Precio de entrada",outputPrice:"Precio de salida",total:"Total",officialPrice:"Precio oficial",saved:"Ahorro",factor:{textInput:"Entrada de texto",textOutput:"Salida de texto",imageInput:"Entrada de imagen",imageOutput:"Salida de imagen",perCallImage:"Por imagen",videoPerSecond:"Vídeo",videoPerCall:"Vídeo",cacheRead:"Lectura de caché",cacheWrite:"Escritura de caché",cacheWrite5m:"Escritura de caché (5m)",cacheWrite1h:"Escritura de caché (1h)"},unit:{per1mTokens:"/ 1M tokens",perImage:"/ imagen",perSecond:"/ s",perCall:"/ llamada"},promoBasis:"Antes de la promo",promoSaved:"Ahorro de la promo",freeCovered:"Asignación gratuita ({{tokens}} tokens)",freeCoveredNoCount:"Asignación gratuita"},rKt={noPreview:"Vista previa no disponible",video:"Video"},iKt={free:"Gratis"},lKt={title:O9t,description:L9t,actions:U9t,cacheHit:B9t,cancelJob:F9t,col:z9t,columns:q9t,empty:H9t,filter:V9t,meta:K9t,pager:G9t,range:W9t,source:Y9t,tps:Q9t,drawer:X9t,status:Z9t,type:J9t,finishReason:eKt,stream:tKt,costBreakdown:nKt,tokensBreakdown:aKt,time:oKt,userCost:sKt,export:{label:"Exportar CSV",exporting:"Exportando…",done:"{{n}} filas exportadas.",truncated:"Se exportaron las primeras {{n}} filas. Reduce el rango de fechas para exportar el resto.",failed:"Error al exportar. Inténtalo de nuevo."},media:rKt,cost:iKt},cKt="Modelos",dKt="Consulta todos los modelos disponibles, su ventana de contexto, precios de entrada/salida y capacidades, y guarda tus favoritos.",uKt={all:"Todos",favorites:"Mis favoritos",benefit:"Beneficio",hot:"Popular",free:"Free"},mKt={capability:"Tipo",allCapabilities:"Todos los tipos",capability_text:"Texto",capability_image:"Imagen",capability_audio:"Audio",capability_video:"Vídeo",provider:"Proveedor",allProviders:"Todos los proveedores",protocol:"Protocolo",allProtocols:"Todos los protocolos",sort:"Ordenar",search:"Buscar",searchPlaceholder:"Modelo / proveedor",allContexts:"Cualquier longitud",context:"Contexto",mobileTitle:"Filtros"},pKt="Destacados",fKt="Más recientes",gKt="Popular esta semana",hKt="Nombre (A-Z)",yKt="Precio (menor a mayor)",vKt="Precio (mayor a menor)",bKt="Longitud de contexto",xKt="Latencia",$Kt="Rendimiento",wKt="OpenAI Chat",kKt="OpenAI Responses",CKt="Anthropic",SKt="Vertex AI",AKt="OpenAI Images",TKt="OpenAI Video",RKt={label:"Modelos",model:"Modelo",provider:"Proveedor",capabilities:"Capacidades",context:"Contexto",price:"Precio",discount:"Descuento",action:"Acción",tryIt:"Probar",type:"Tipo",maxOutput:"Salida máxima",copyId:"Copiar ID del modelo",copied:"Copiado",usage:"Uso",stability:"Estabilidad",protocols:"Protocolos",openDetail:"Open model detail"},PKt="Popular",_Kt="Beneficio",jKt={add:"Añadir favorito",remove:"Quitar favorito"},NKt={favorites:"Aún no hay favoritos",noMatch:"No hay modelos coincidentes"},DKt="Texto",MKt="Imagen",EKt="Archivo",IKt="Vídeo",OKt="Audio",LKt="Embeddings",UKt="Vision",BKt="Llamadas a herramientas",FKt="Modo JSON",zKt="Generación de imágenes",qKt="Edición de imágenes",HKt="Texto",VKt="Imagen",KKt="Vídeo",GKt="Audio",WKt="Embedding",YKt="Oficial",QKt="Kiro",XKt="desde",ZKt="/ llamada",JKt="/ s",eGt="/ 1M",tGt="Rápido",nGt="Free",aGt="Coming Soon",oGt="Free",sGt={ariaLabel:"Moneda de precios",usd:"USD",rmb:"yuan (¥)",settlement:"Precios mostrados en yuanes con un tipo de cambio fijo de {{rate}}, solo como referencia; tu monedero siempre se cobra en USD según el uso real."},rGt="Requiere recarga",iGt={title:cKt,description:dKt,tabs:uKt,filters:mKt,sort_featured:pKt,sort_newest:fKt,sort_top_weekly:gKt,sort_name:hKt,sort_price_asc:yKt,sort_price_desc:vKt,sort_context:bKt,sort_latency:xKt,sort_throughput:$Kt,protocol_openai_chat:wKt,protocol_openai_responses:kKt,protocol_anthropic_messages:CKt,protocol_google_vertex_ai:SKt,protocol_openai_images:AKt,protocol_openai_sora:TKt,table:RKt,badge_hot:PKt,badge_benefit:_Kt,favorite:jKt,empty:NKt,modality_text:DKt,modality_image:MKt,modality_file:EKt,modality_video:IKt,modality_audio:OKt,modality_embeddings:LKt,capability_vision:UKt,capability_tool_calling:BKt,capability_json_mode:FKt,capability_image_generation:zKt,capability_image_edit:qKt,type_text:HKt,type_image:VKt,type_video:KKt,type_audio:GKt,type_embedding:WKt,provider_official:YKt,provider_kiro:QKt,price_from:XKt,price_perCall:ZKt,price_perSec:JKt,price_per1m:eGt,price_fast:tGt,badge_free:nGt,badge_unavailable:aGt,price_free:oGt,currency:sGt,badge_requiresTopup:rGt},lGt={main:"Navegación principal",utility:"Navegación de utilidades",console:"Navegación de consola",openNavigation:"Abrir navegación",collapse:"Contraer barra lateral",expand:"Expandir barra lateral"},cGt={platform:"Consola",chat:"Chat",models:"Modelos",logs:"Registros",jobs:"Trabajos",apiKeys:"API keys",usage:"Uso",billing:"Facturación",freeTokens:"Tokens gratis",referrals:"Invitaciones",settings:"Ajustes",admin:"Admin",balance:"Saldo",helpSupport:"Ayuda y soporte",announcements:"Anuncios",announcementsTitle:"Anuncios",announcementsEmpty:"Aún no hay anuncios. Vuelve pronto.",announcementsTicketUnread:"{{count}}
787 ticket(s) con respuestas nuevas",support:"Soporte",tasks:"Tareas",tagNew:"NUEVO"},dGt={staff:"Equipo"},uGt={dashboard:"Panel",users:"Usuarios",billing:"Facturación de plataforma",usage:"Uso de plataforma",rateLimits:"Límites de tasa",access:"Acceso",staff:"Admins",growth:"Crecimiento",models:"Modelos",announcements:"Anuncios",upstream:"Upstream",auditLogs:"Registros de auditoría",webhooks:"Webhooks",support:"Support",campaigns:"Campaigns",domainRules:"Email domains"},mGt={title:"Notifications",markAllRead:"Mark all read",loading:"Loading…",emptyTitle:"You're all caught up",emptyBody:"New notifications will show up here."},pGt={aria:lGt,public:{models:"Modelos",pricing:"Precios",docs:"Documentación",blog:"Blog",changelog:"Novedades"},console:cGt,adminGroups:dGt,admin:uGt,notifications:mGt},fGt={back:"Atrás",done:"Listo",next:"Siguiente",stepOf:"{{current}} / {{total}}"},gGt={balance:{body:"Recarga según lo necesites. El saldo no usado se puede reembolsar en cualquier momento.",title:"Tu saldo"},keys:{body:"Haz clic aquí para crear una key y apunta cualquier herramienta a OneHop.",title:"Crea tu primera API key"},models:{body:"Consulta en una sola página todos los modelos que puedes llamar y cuánto cuesta cada uno.",cta:"Abrir modelos",title:"Explora los modelos"}},hGt={body:"Un URL para todos los modelos. Te mostramos tres cosas en 30 segundos.",skip:"Omitir",start:"Empezar",title:"Bienvenido a OneHop"},yGt={nav:fGt,steps:gGt,welcome:hGt},vGt="Failed to load",bGt="Nothing here yet.",xGt="Más detalles",$Gt={failedLoad:vGt,emptyDescription:bGt,moreDetails:xGt},wGt="Todos",kGt="Correcto",CGt="Pendiente",SGt="Reparando",AGt="Fallido",TGt="Reembolsado",RGt="Activo",PGt="Desactivado",_Gt="Agotado",jGt="Reservado",NGt="Canjeado",DGt="Suspendido",MGt="Eliminado",EGt="Normal",IGt="En observación",OGt="Bloqueado",LGt="Concedido",UGt="Revertido",BGt="Expirado",FGt="Denegado",zGt="Borrador",qGt="Publicado",HGt="Obsoleto",VGt="Archivado",KGt="Oculto",GGt="Creado",WGt="Checkout abierto",YGt="Pagado",QGt="Cancelado",XGt="OpenAI Chat",ZGt="OpenAI Responses",JGt="Anthropic Messages",eWt="Google Vertex AI",tWt="OpenAI Images",nWt="Cargo por uso",aWt="Bono de registro",oWt="Bono promocional",sWt="Bono de referido",rWt="Bono de compensación",iWt="Bono de recarga",lWt="Ajuste manual",cWt="Compra de credit",dWt="Pago",uWt="Bono de registro",mWt="Cupón",pWt="Crédito de admin",fWt="Uso de API",gWt="Bono de registro",hWt="Crédito manual",yWt="Síncrono",vWt="Streaming",bWt="Facturación por token",xWt="Facturación por solicitud",$Wt="Facturación de imágenes",wWt="Reasoning bajo",kWt="Reasoning medio",CWt="Reasoning alto",SWt="No aplica",AWt="Desconocido",TWt="Congelado",RWt="Liberado",PWt="Cancelado",_Wt="Parcialmente revertido",jWt="Omitido",NWt={all:wGt,success:kGt,pending:CGt,repairing:SGt,failed:AGt,refunded:TGt,active:RGt,disabled:PGt,exhausted:_Gt,reserved:jGt,redeemed:NGt,suspended:DGt,deleted:MGt,normal:EGt,watchlisted:IGt,blocked:OGt,granted:LGt,reversed:UGt,expired:BGt,denied:FGt,draft:zGt,published:qGt,deprecated:HGt,archived:VGt,public:"Público",hidden:KGt,created:GGt,checkout_opened:WGt,paid:YGt,canceled:QGt,openai_chat:XGt,openai_responses:ZGt,anthropic_messages:JGt,google_vertex_ai:eWt,openai_images:tWt,usage_charge:nWt,bonus_signup_grant:aWt,bonus_promo_grant:oWt,bonus_referral_grant:sWt,bonus_compensation_grant:rWt,bonus_topup_grant:iWt,manual_adjustment:lWt,credit_purchase:cWt,payment:dWt,signup:uWt,coupon:mWt,admin:pWt,api:fWt,signup_bonus:gWt,manual:hWt,sync:yWt,stream:vWt,token:bWt,request:xWt,image:$Wt,low:wWt,medium:kWt,high:CWt,not_applicable:SWt,unknown:AWt,frozen:TWt,released:RWt,cancelled:PWt,partially_reversed:_Wt,skipped:jWt},DWt="{{count}} por página",MWt="Total: {{count}}",EWt={perPage:DWt,total:MWt},IWt="Invita y gana",OWt="Comparte tu enlace exclusivo. Cuando un usuario invitado recarga saldo, las recompensas de ambas partes quedan registradas con claridad.",LWt="No se pudieron cargar los datos de invitación",UWt="Tu enlace de invitación",BWt="Compartir",FWt="Invitación copiada. Pégala en WeChat para compartir.",zWt="Copiar",qWt="Copiado",HWt="WeChat",VWt="X",KWt="Telegram",GWt="Reddit",WWt="LinkedIn",YWt="WhatsApp",QWt="Correo",XWt="Facebook",ZWt={default:{title:"Todos los modelos de AI desde una sola API de OneHop",body:"Regístrate con mi enlace de invitación — haz tu primera recarga en {{firstWindowDays}} días y ambos recibimos un {{percent}}% de vuelta."},x:{title:"Una API para todos los modelos de AI 🤖",body:"Recarga en {{firstWindowDays}} días con mi enlace y ambos recibimos un {{percent}}% de vuelta. 🚀"},telegram:{title:"Crea con todos los modelos de AI desde OneHop",body:"Usa mi enlace de invitación — si haces tu primera recarga en {{firstWindowDays}} días, ambos ganamos un {{percent}}% en crédito de referido."},whatsapp:{title:"Crea con todos los modelos de AI — OneHop",body:"Únete con mi enlace de invitación. Recarga en {{firstWindowDays}} días y ambos recibimos un {{percent}}% de vuelta."},reddit:{title:"OneHop — una API para todos los modelos de AI. Con mi invitación ambos recibimos un {{percent}}% de vuelta en tu primera recarga",body:"Recarga en {{firstWindowDays}} días y ambos ganamos un {{percent}}% en crédito de referido."},email:{title:"Una invitación a OneHop — todos los modelos de AI desde una sola API",body:`Hola,
788
789Estoy usando OneHop para llamar a los principales modelos de AI desde una sola API. Regístrate con mi enlace de invitación y, después de tu primera recarga, ambos ganamos crédito de referido.
790
791Niveles de recompensa: {{tiers}}.
792
793¡Gracias!`},wechat:{title:"OneHop — todos los modelos de AI desde una sola API",body:"Regístrate con mi enlace de invitación. Recarga en {{firstWindowDays}} días y ambos ganamos un {{percent}}% en crédito de referido."}},JWt="El credit por referidos es visible de inmediato tras el pago, pero primero se congela para cubrir la ventana de reembolsos y, al vencer, se libera como credit de recompensa por invitación de OneHop.",eYt="Se libera en {{days}} días.",tYt={referrer:"Invitador",referee:"Invitado"},nYt={referrer:": gana credit de referidos cuando alguien a quien invitas recarga — {{tiers}}.",referee:": regístrate con el enlace y recarga para ganar tú también — {{tiers}}."}
793,aYt={dayRange:"días {{fromDay}}-{{untilDay}}",dayOpenEnded:"desde el día {{fromDay}}"},oYt="Total ganado",sYt="Credit por referidos liberado",rYt="Credit por referidos congelado",iYt="Personas invitadas",lYt="Invitaciones válidas",cYt="Recompensa por invitación liberada",dYt="Recompensa por invitación congelada",uYt="Cancelado / revertido",mYt="Personas que invitaste",pYt="Detalle de recompensas",fYt={user:"Usuario",joined:"Fecha de registro",topups:"Recargas",earned:"Lo que ganaste",frozen:"Congelado",date:"Fecha",event:"Evento",topupAmount:"Su recarga",rate:"Porcentaje",releaseAt:"Fecha de liberación",cashback:"Recompensa",status:"Estado"},gYt={title:"Aún no hay invitaciones",description:"Comparte tu enlace para empezar a ganar recompensas."},hYt={inviteeSignedUp:"El invitado se registró correctamente",youSignedUp:"Te registraste correctamente mediante una invitación",inviteePaid:"El invitado realizó un consumo correctamente",youPaid:"Realizaste un consumo correctamente como invitado"},yYt={frozen:"Congelado",released:"Liberado",cancelled:"Cancelado",partially_reversed:"Parcialmente revertido",reversed:"Revertido",failed:"Fallido",skipped:"Omitido"},vYt={title:IWt,description:OWt,error:LWt,yourLink:UWt,shareVia:BWt,wechatCopied:FWt,copy:zWt,copied:qWt,wechat:HWt,x:VWt,telegram:KWt,reddit:GWt,linkedin:WWt,whatsapp:YWt,email:QWt,facebook:XWt,share:ZWt,offer:JWt,releaseDelay:eYt,role:tYt,roleOffer:nYt,policy:aYt,totalEarned:oYt,availableEarned:sYt,frozenEarned:rYt,invited:iYt,active:lYt,availableReceived:cYt,frozenReceived:dYt,cancelledReversed:uYt,peopleYouInvited:mYt,history:pYt,col:fYt,empty:gYt,event:hYt,status:yYt},bYt="Ajustes",xYt="Gestiona las preferencias de la cuenta y los valores predeterminados de la consola.",$Yt="Sesión iniciada como {{email}}",wYt="Nombre visible",kYt="Idioma",CYt="Zona horaria",SYt="No se pudo cargar el perfil",AYt="No se pudo guardar",TYt="¿Descartar cambios?",RYt="Tienes cambios sin guardar. Si sales ahora, se descartarán.",PYt="Descartar",_Yt="Seguir editando",jYt={title:bYt,description:xYt,signedInAs:$Yt,displayName:wYt,locale:kYt,timezone:CYt,failedLoad:SYt,failedSave:AYt,discardTitle:TYt,discardMessage:RYt,discardConfirm:PYt,keepEditing:_Yt},NYt="Muro de tareas",DYt="Comparte OneHop con tu audiencia y gana crédito de prueba. Revisamos cada envío a mano.",MYt="Enlace a tu publicación",EYt="https://…",IYt="Enviar",OYt="Enviado: lo revisaremos en breve.",LYt="Enlaces aceptados: {{hosts}}",UYt="Rechazado antes: {{reason}}. Corrígelo y vuelve a enviarlo.",BYt={pending:"En revisión",approved:"Acreditado",rejected:"Rechazado",active:"Activo"},FYt={title:"No hay tareas ahora mismo",description:"Vuelve pronto: lanzamos estas campañas de forma periódica."},zYt={x_quote:{title:"Cítanos en X",description:"Cita la publicación fijada de @OneHopAI y añade tu propia opinión.",rules:["Tu cuenta de X debe tener al menos 6 meses y 10 seguidores o más.","Envía el enlace de tu propia cita, no el de la publicación original.","El crédito llega en un plazo de 2 horas tras la aprobación."]},youtube_tutorial:{title:"Publica un tutorial en YouTube",description:"Un vídeo de 6 minutos o más que muestre cómo conectaste OneHop a tu propio agente.",rules:["Envía el enlace del vídeo una vez publicado.","Tu canal de YouTube necesita 50 suscriptores o más.","Una vez por cuenta.","El crédito llega en un plazo de 2 horas tras la aprobación."]},short_video:{title:"Publica un vídeo corto",description:"Un short de 40 segundos o más en TikTok o YouTube que mencione tu configuración de OneHop.",rules:["Envía el enlace del vídeo una vez publicado.","El crédito llega en un plazo de 2 horas tras la aprobación."]},github_readme:{title:"Pon OneHop en tu README de GitHub",description:"Añade un crédito de OneHop al README de un repositorio tuyo. Cada recarga posterior gana un 15% extra.",rules:["Envía el enlace del repositorio cuando el README esté publicado.","Es permanente, no puntual: cada recarga posterior aplica lo que sea mayor, nuestro bono estándar o tu 15%.","El texto para copiar está más abajo."]}},qYt={load:"No se pudo cargar el muro de tareas",generic:"No se pudo enviar",urlRequired:"Pega primero el enlace de tu publicación.",urlTooLong:"Ese enlace es demasiado largo.",urlMalformed:"Eso no parece un enlace válido.",hostNotAllowed:"Esta tarea solo acepta enlaces de las plataformas indicadas arriba.",n
793otAPost:"Enlaza la publicación o el vídeo concreto, no un perfil o una página de inicio.",alreadySubmitted:"Ya has enviado esta tarea.",notAvailable:"Esta tarea no está disponible ahora mismo.",busy:"Hemos alcanzado la capacidad de revisión de hoy. Inténtalo mañana.",emailUnverified:"Verifica primero tu correo electrónico.",accountTooNew:"Tu cuenta aún no tiene la antigüedad necesaria.",riskFlagged:"Esta cuenta no puede participar ahora mismo. Contacta con soporte si crees que es un error.",accountInactive:"Esta cuenta no está activa.",deviceAlreadyClaimed:"Otra cuenta en este dispositivo ya ha participado."},HYt="¡Gracias a [OneHop]({{url}}) por patrocinar este proyecto! OneHop te da una sola clave API compatible con OpenAI para cientos de modelos líderes: GPT, Claude, Gemini, DeepSeek, Kimi y Qwen. Sin gestionar cuentas de varios proveedores, sin cambiar código para cambiar de modelo, y pagas solo por lo que usas. → {{domain}}",VYt="Copiar este texto",KYt={title:NYt,description:DYt,urlLabel:MYt,urlPlaceholder:EYt,submit:IYt,submitted:OYt,allowedHosts:LYt,rejectedHint:UYt,status:BYt,empty:FYt,item:zYt,error:qYt,sponsorBlurb:HYt,copyBlurb:VYt},GYt="Chatea con nosotros",WYt="Tickets de soporte",YYt="Abre un ticket y nuestro equipo te responderá lo antes posible.",QYt="Nuevo ticket",XYt={subject:"Asunto",category:"Tipo",status:"Estado",updated:"Actualizado",user:"User"},ZYt={billing:"Facturación",technical:"Técnico",account:"Cuenta",other:"Otro"},JYt={open:"Abierto",pending:"Pendiente",resolved:"Resuelto",closed:"Cerrado"},eQt={allStatuses:"Todos los estados",allCategories:"All categories",search:"Search email or subject"},tQt={subject:"Asunto",subjectPlaceholder:"Describe brevemente el problema",category:"Tipo",message:"Mensaje",messagePlaceholder:"Cuéntanos qué está pasando…",attachments:"Adjuntos",addAttachment:"Añadir archivo",submit:"Enviar ticket",cancel:"Cancelar"},nQt={you:"Tú",support:"Soporte",system:"Sistema",replyPlaceholder:"Escribe una respuesta…",send:"Enviar",closedNotice:"Este ticket está cerrado. Abre uno nuevo si aún necesitas ayuda.",sendHint:"Pulsa ⌘/Ctrl + Enter para enviar",back:"Volver a los tickets",systemStatus:{open:"Ticket reabierto",pending:"Ticket marcado como pendiente de tu respuesta",resolved:"Ticket marcado como resuelto",closed:"Ticket cerrado"}},aQt={title:"Support tickets",resolve:"Resolve",close:"Close",reopen:"Reopen",unread:"Unread"},oQt="Cargar más",sQt={created:"Ticket enviado",replied:"Respuesta enviada",statusUpdated:"Status updated",error:"Algo salió mal. Inténtalo de nuevo"},rQt="No se encontró el ticket o se eliminó.",iQt={title:"Aún no hay tickets",body:"¿Tienes un problema? Abre un ticket y te ayudaremos.",cta:"Abrir tu primer ticket"},lQt={liveChat:GYt,title:WYt,subtitle:YYt,newTicket:QYt,columns:XYt,category:ZYt,status:JYt,filters:eQt,form:tQt,thread:nQt,admin:aQt,loadMore:oQt,toast:sQt,notFound:rQt,empty:iQt},cQt="Uso",dQt="Saldo, ritmo de consumo y dónde se va tu gasto.",uQt="Actividad",mQt="No hay actividad en este intervalo",pQt="Desglose de uso",fQt="Por API key",gQt="Por modelo",hQt="Por tipo de token",yQt="Sin datos",vQt="Aún no hay uso en este intervalo.",bQt="Al ritmo actual, el saldo alcanzará para {{days}} días (unos {{rate}}/día).",xQt="salida",$Qt="caché",wQt={tokens:"Tokens",requests:"Solicitudes",cost:"Coste"},kQt="Otros",CQt="sol.",SQt="tok",AQt="Actualizando…",TQt="Sin datos",RQt="Haz una solicitud para empezar a acumular datos.",PQt="API keys principales",_Qt="Recargar",jQt={title:"No se pudo cargar el uso"},NQt={firstToken:"primer token",latency:"Latencia media",requests:"Solicitudes",spend:"Consumo",spendSub:"facturado en este periodo",successRate:"{{rate}}% correctas",tokens:"Tokens",textDuration:"texto",mediaDuration:"imagen/vídeo",cacheHit:"{{rate}}% en caché",projected:"≈ {{amount}}/mes",vsPrevious:"vs período anterior"},DQt={activeDays:"Días activos",longestStreak:"Racha más larga",daysValue:"{{n}} días",totalSpend:"Total de este periodo",peakDay:"Día con más actividad"},MQt={all:"Todo el tiempo",custom:"Personalizado",last1h:"Última hora",last30d:"Últimos 30 días",last7d:"Últimos 7 días",thisMonth:"Este mes",today:"Hoy",yesterday:"Ayer",byMonth:"Por mes"},EQt={failed:"Fallidas",success:"Correctas"},IQt={cacheRead:"Lectura de caché",cacheWrite:"Escritura de caché",cacheWrite1h:"Escritura de caché 1h",cacheWrite5m:"Escritura de caché 5m",completion:"Salida",prompt:"Entrada"},OQt={body:"Envía una solicitud desde la terminal o abre el playground; el uso aparecerá aquí en segundos.",openPlayground:"Abrir playground",title:"Tu key está lista"},LQt={body:"Crea tu primer API key, enruta todas las solicitudes con una sola URL y el uso aparecerá aquí.",createKey:"Crear API key",title:"Bienvenido a OneHop",tryPlayground:"Probar playground"},UQt="Actualizar",BQt="{{count}} solicitudes correctas en el filtro actual",FQt="Tokens totales",zQt="Entrada {{input}} / salida {{output}}",qQt="credit facturado",HQt="{{cost}} coste upstream real",VQt="Latencia media",KQt="Primer token {{duration}}",GQt="Actividad de 30 días",WQt="Solicitudes correctas, volumen de tokens y credit facturado.",YQt="Cargando tendencia de uso",QQt="Sin tendencia de uso",XQt="La tendencia de uso aparece después de las solicitudes correctas.",ZQt="Modelos principales",JQt="credit facturado por modelo en los últimos 30 días.",eXt="Aún no hay uso por modelo",tXt="El desglose por modelo aparece después de las solicitudes correctas.",nXt="Modelo",aXt="Todos los modelos",oXt="Estado",sXt="Protocolo",rXt="Filas",iXt="Restablecer",lXt="Registros de uso",cXt="API key",dXt="Endpoint",uXt="Tipo",mXt="Tokens",pXt="Coste",fXt="Duración",gXt="Hora",hXt="User-Agent",yXt="Detalles",vXt="Detalle de solicitud",bXt="Detalles del registro de uso y metadata de facturación.",xXt="ID de solicitud",$Xt="Operación",wXt="Tokens de entrada",kXt="Tokens de salida",CXt="Tokens de lectura de caché",SXt="Tokens de escritura de caché",AXt="Coste de entrada",TXt="Coste de salida",RXt="Coste de lectura de caché",PXt="Coste de escritura de caché",_Xt="Código de error",jXt="Mensaje de error",NXt="No encontrado.",DXt="credit",MXt="Total {{count}}",EXt="Cargando registros de uso",IXt="No hay registros de uso",OXt="Prueba otra combinación de filtros.",LXt="Los registros aparecen cuando las solicitudes pasan por tus API keys.",UXt="Página {{page}} · mostrando {{shown}} de {{total}} registros coincidentes",BXt="Anterior",FXt="Siguiente",zXt="Credit",qXt="Tokens",HXt="Solicitudes",VXt={time:"Hora",apiKey:"API Key",model:"Modelo",reasoningEffort:"Esfuerzo de razonamiento",endpoint:"Endpoint",type:"Tipo",billingMode:"Modo de facturación",inputTokens:"Tokens de entrada",outputTokens:"Tokens de salida",cacheReadTokens:"Tokens de lectura de caché",cacheWriteTokens:"Tokens de escritura de caché",totalTokens:"Tokens totales",billedCredit:"Credit facturado",firstTokenMs:"Primer token ms",durationMs:"Duración ms",status:"Estado",userAgent:"User-Agent"},KXt={mon:"Lun",wed:"Mié",fri:"Vie"},GXt="Menos",WXt="Más",YXt={title:cQt,description:dQt,activity:uQt,activityEmpty:mQt,breakdown:pQt,byApiKey:fQt,byModel:gQt,byTokenType:hQt,chartEmpty:yQt,chartEmptyHint:vQt,burnRate:bQt,in:"entrada",out:xQt,cache:$Qt,metric:wQt,other:kQt,req:CQt,tok:SQt,refreshing:AQt,topEmpty:TQt,topEmptyHint:RQt,topKeys:PQt,topUp:_Qt,error:jQt,kpi:NQt,stat:DQt,range:MQt,requests:EQt,tokenType:IQt,noRequests:OQt,welcome:LQt,refresh:UQt,successfulFilter:BQt,totalTokens:FQt,inOut:zQt,billedCredit:qQt,upstreamA
793ctualCost:HQt,avgLatency:VQt,firstToken:KQt,activityTitle:GQt,activityDescription:WQt,loadingTrend:YQt,noUsageTrend:QQt,trendDescription:XQt,topModels:ZQt,topModelsDescription:JQt,noModelUsage:eXt,noModelUsageDescription:tXt,model:nXt,allModels:aXt,status:oXt,protocol:sXt,rows:rXt,reset:iXt,tableLabel:lXt,apiKey:cXt,endpoint:dXt,type:uXt,tokens:mXt,cost:pXt,duration:fXt,time:gXt,userAgent:hXt,details:yXt,requestDetail:vXt,detailDescription:bXt,requestId:xXt,operation:$Xt,inputTokens:wXt,outputTokens:kXt,cacheReadTokens:CXt,cacheWriteTokens:SXt,inputCost:AXt,outputCost:TXt,cacheReadCost:RXt,cacheWriteCost:PXt,errorCode:_Xt,errorMessage:jXt,notFound:NXt,creditSuffix:DXt,total:MXt,loadingRecords:EXt,noRecords:IXt,differentFilters:OXt,recordsEmpty:LXt,pageSummary:UXt,previous:BXt,next:FXt,chartCredit:zXt,chartTokens:qXt,chartRequests:HXt,csv:VXt,weekday:KXt,activityLess:GXt,activityMore:WXt},QXt="Signup access",XXt="Controlled-launch registration gate. Approved emails, domains, existing users, and active admins can create accounts.",ZXt="Signup access allowlist",JXt="No allowlist entries",eZt="Email / domain",tZt="Note",nZt="Status",aZt="Registration",oZt="Expires",sZt="Invites",rZt="Updated",iZt="Action",lZt="Add",cZt="Bulk add",dZt="Edit",uZt="Save",mZt="Invite",pZt="Restore",fZt="Remove",gZt="Add signup access",hZt="Edit {{email}}",yZt="Bulk add signup access",vZt="Add a specific email or a whole domain with @company.com. Existing users and active admins are always allowed.",bZt="Paste one email or @domain per line. Invalid and duplicate rows will be skipped.",xZt="Email or domain",$Zt="[email protected] or @company.com",wZt="Use @company.com to approve an entire domain.",kZt="Note (optional)",CZt="e.g. founding team",SZt="Expiry (optional)",AZt="Leave empty for no expiry. Expired entries no longer allow new signups.",TZt="Emails / domains",RZt=`[email protected]
794[email protected]
795@partner.com`,PZt="Search",_Zt="Search email or domain",jZt="Status",NZt="Access check",DZt="[email protected]",MZt="Check",EZt="Allowed",IZt="Denied",OZt={existing_user:"Existing user always allowed",active_admin:"Active admin always allowed",email_allowlist:"Matched exact email",domain_allowlist:"Matched domain rule",not_allowed:"No active rule matched"},LZt="Registered",UZt="Not registered",BZt="Admin",FZt="Domain rule",zZt="Never",qZt="Added to signup access.",HZt="Signup access updated.",VZt="Added {{count}} entries.",KZt="Invite sent.",GZt="Entry restored.",WZt="Removed from signup access.",YZt="Remove {{email}} from signup access? They can no longer create a new account unless another rule allows them.",QZt={title:"Email domain rules",description:"Hot-configurable email-domain lists layered on the built-in baseline. Blacklisted domains are blocked at signup; mainstream domains skip the watchlist.",add:"Add domain",addTitle:"Add domain rule",addDescription:"Blacklist blocks signup (403). Mainstream marks the domain as trusted so new users are not watchlisted.",kindLabel:"List",kindBlacklist:"Blacklist — block signup",kindMainstream:"Mainstream — skip watchlist",domainLabel:"Domain",domainPlaceholder:"example.com",noteLabel:"Note",notePlaceholder:"Optional — why this domain",search:"Search",searchPlaceholder:"Filter by domain",kindFilter:"List",allKinds:"All lists",statusFilter:"Status",statusActive:"Active",statusRevoked:"Removed",statusAll:"All",label:"Email domain rules",empty:"No domain rules",colDomain:"Domain",colKind:"List",colNote:"Note",colAddedBy:"Added by",colCreated:"Created",status:"Status",action:"Action",remove:"Remove",restore:"Restore",confirmRemove:"Remove rule for {{domain}}?",added:"Domain rule added",removed:"Domain rule removed",restored:"Domain rule restored",badgeBlacklist:"Blacklist",badgeMainstream:"Mainstream"},XZt={title:QXt,description:XXt,label:ZXt,empty:JXt,email:eZt,note:tZt,status:nZt,registration:aZt,expiresAt:oZt,invites:sZt,updatedAt:rZt,action:iZt,add:lZt,bulkAdd:cZt,edit:dZt,save:uZt,invite:mZt,restore:pZt,revoke:fZt,newTitle:gZt,editTitle:hZt,bulkTitle:yZt,formDescription:vZt,bulkDescription:bZt,emailLabel:xZt,emailPlaceholder:$Zt,emailHint:wZt,noteLabel:kZt,notePlaceholder:CZt,expiresAtLabel:SZt,expiresAtHint:AZt,bulkEntriesLabel:TZt,bulkEntriesPlaceholder:RZt,search:PZt,
795searchPlaceholder:_Zt,statusFilter:jZt,checkLabel:NZt,checkPlaceholder:DZt,check:MZt,checkAllowed:EZt,checkDenied:IZt,checkReasons:OZt,registered:LZt,notRegistered:UZt,adminAllowed:BZt,domainRule:FZt,never:zZt,added:qZt,updated:HZt,bulkAdded:VZt,invited:KZt,restored:GZt,revoked:WZt,confirmRevoke:YZt,domainRules:QZt},ZZt="Ops Billing",JZt="Payments, wallets and refunds across all users.",eJt={payments:"Payments",wallets:"Wallets",refunds:"Refunds"},tJt="User email",nJt="Search by email...",aJt="Created",oJt="Created",sJt="Amount (USD)",rJt="Min",iJt="Max",lJt="Refunds",cJt="No refunds",dJt="Refund",uJt="Type",mJt="Full refund",pJt="Partial refund",fJt="Original payment",gJt="Wallets",hJt="Wallet",yJt="User",vJt="Total",bJt="Purchased",xJt="Bonus",$Jt="No wallets",wJt="Payments",kJt="Payment status",CJt="No payments",SJt="Payment",AJt="Status",TJt="Amount",RJt="Paid",PJt="Refund",_Jt="Not refundable (status must be paid)",jJt="View in Stripe Dashboard",NJt="Failed + dead-letter webhooks in last 7 days. 0=green, 1-9=yellow, 10+=red.",DJt="unhealthy",MJt="Refund {{id}}",EJt="This will refund {{user}} via Stripe. The platform fee shown below is deducted from the amount returned; uncheck it to waive. Promotional credits granted with the original payment will be forfeited proportionally.",IJt="Refund amount (USD)",OJt="Max ${{value}}",LJt="Reason",UJt="Chargement de l'aperçu du remboursement…",BJt="Impossible de charger l'aperçu du remboursement. Aucun remboursement possible tant qu'il n'est pas chargé.",FJt="Aucune transaction remboursable trouvée — ce paiement a peut-être déjà été intégralement remboursé.",zJt="Payé",qJt="Déjà remboursé",HJt="Ce remboursement",VJt="Crédit récupéré",KJt="Inclut {{amount}} de crédit de remise coupon récupéré au prorata",GJt="Inclut {{amount}} de crédit supplémentaire accordé récupéré au prorata",WJt="Bonus révoqué",YJt="Ce remboursement révoquera le bonus promotionnel de {{amount}}.",QJt="Remboursé via Stripe",XJt="Prélever les frais de plateforme ({{fee}}) — couvre les frais Stripe",ZJt="Frais de plateforme ({{fee}})",JJt="Le montant dépasse le maximum remboursable {{value}}",een="Saisissez un montant positif valide",ten="L'utilisateur a déjà consommé une partie du crédit acheté. Maximum remboursable : {{value}}",nen="Ce paiement a déjà été intégralement remboursé",aen="Le montant net après frais est trop faible. Remboursez au moins {{value}}.",oen="Cancel",sen="Issue refund",ren="Submitting...",ien="Refund submitted",len="Stripe will return the funds within 1-3 business days. Audit log written.",cen="Refund failed",den={title:ZZt,description:JZt,tabs:eJt,emailFilter:tJt,emailPlaceholder:nJt,created:aJt,createdRange:oJt,amountRange:sJt,amountMin:rJt,amountMax:iJt,refunds:lJt,noRefunds:cJt,refundId:dJt,refundType:uJt,typeRefund:mJt,typePartialRefund:pJt,originalPayment:fJt,wallets:gJt,wallet:hJt,user:yJt,total:vJt,purchased:bJt,bonus:xJt,noWallets:$Jt,payments:wJt,paymentStatus:kJt,noPayments:CJt,payment:SJt,status:AJt,amount:TJt,paid:RJt,refund:PJt,notRefundable:_Jt,viewInStripe:jJt,webhookHealthHint:NJt,unhealthyWebhooks:DJt,refundConfirmTitle:MJt,refundConfirmBody:EJt,refundAmountLabel:IJt,refundMaxHint:OJt,refundReasonLabel:LJt,refundPreviewLoading:UJt,refundPreviewFailed:BJt,refundNoRefundableTx:FJt,refundPaidRow:zJt,refundAlreadyRefundedRow:qJt,refundThisRefundRow:HJt,refundCreditReclaimRow:VJt,refundCreditCouponNote:KJt,refundCreditExtraNote:GJt,refundBonusReverseRow:WJt,refundBonusForfeitWarning:YJt,refundStripeReturnRow:QJt,refundFeeToggle:XJt,refundPlatformFeeRow:ZJt,refundExceedsMax:JJt,refundAmountInvalid:een,refundInsufficientCredit:ten,refundAlreadyFull:nen,refundBelowMin:aen,cancel:oen,confirmRefund:sen,submitting:ren,refundSubmittedTitle:ien,refundSubmittedBody:len,refundFailedTitle:cen},uen="Campaigns",men="Audience segments, restricted-model access, model discounts, and targeted credit grants.",pen={mobileLabel:"Section campagnes",segments:"Audiences",access:"Model access",discounts:"Model discounts",grants:"Targeted grants",recurring:"Periodic grants"},fen="Status",gen="Actions",hen="All users",yen="Always",ven="No expiry",ben="Active window",xen="Leave blank for always-on. Times are end-of-day on the chosen dates.",$en="Valid from",wen="Valid to",ken="Pause",Cen="Resume",Sen="Add",Aen="Remove",Ten="Delete",Ren="Clear",Pen="Close",_en={allKinds:"Tous les types",segmentKindStatic:"Statique",segmentKindDynamic:"Dynamique",grantKindGrant:"Attribuer",grantKindRevoke:"Révoquer",allStatuses:"Tous les statuts",statusActive:"Actif",statusPaused:"En pause",statusArchived:"Archivé",statusEnded:"Terminé",statusPending:"En attente",statusProcessing:"En cours",statusCompleted:"Terminé",statusFailed:"Échec"},jen={title:"Audiences",create:"New audience",empty:"No audiences yet. Create one to target access, discounts, and grants.",name:"Name",namePlaceholder:"e.g. China power users",description:"Description",kind:"Kind",kind_static:"Static",kind_dynamic:"Dynamic",kindHint:"Static = a hand-picked list of users. Dynamic = users matching a rule, refreshed on materialize.",members:"Members",materialized:"Last refreshed",materializeDone:"Materialized {{count}} members",basics:"Basics",sheetDescription:"Audiences group users so you can target model access, discounts, and grants.",saved:"Audience saved",created:"Audience created",rule:"Matching rule",ruleHint:"All conditions must match (AND). An empty rule matches no one.",countryIn:"Country in",countryInHint:"Comma-separated ISO-2 c
795odes, e.g. CN, US, JP.",signupAfter:"Signed up after",signupBefore:"Signed up before",minSpend:"Min cumulative spend (USD)",minSpendHint:"Only users whose lifetime spend is at least this.",previewing:"Estimating…",matchCount:"Estimated match: {{value}} users",membersTitle:"Members",membersHint:"Search and add users. Rule-matched members are read-only.",addMembers:"Add users",searchUsers:"Search by email or ID",noUsers:"No matching users.",noMembers:"No members yet.",membersAdded:"{{count}} member added",membersAdded_plural:"{{count}} members added",source_manual:"Manual",source_rule:"Rule",materializeTitle:"Materialize",materializeHint:"Snapshot the rule into the member list. Re-run anytime to refresh.",materialize:"Materialize now",materializing:"Materializing…",materializeConfirm:"Refresh members from the current rule? This replaces the rule-matched snapshot.",lastMaterialized:"Last materialized {{value}}",neverMaterialized:"Never materialized",deleteSegment:"Delete audience",deleteConfirm:"Delete this audience? Access, discounts, and grants referencing it will lose this targeting."},Nen={title:"Model access",create:"Grant access",empty:"No access grants yet.",model:"Model",segment:"Audience",target:"Target",validFrom:"Valid from",validTo:"Valid to",sheetDescription:"Give a restricted model to an audience for an optional time window.",created:"Access granted",statusUpdated:"Status updated",deleteConfirm:"Remove this access grant?",noSegmentsTitle:"Create an audience first",noSegmentsDescription:"Access is granted to an audience. Create an audience on the Audiences tab, then come back to grant model access.",publicHint:"This model is public — everyone can already use it.",publicModelTitle:"Model is public",publicModelWarning:"{{model}} is public, so this grant has no effect until it is set to restricted on the Models page. Flip it to restricted there to gate it to this audience.",createAnyway:"Create anyway"},Den={title:"Model discounts",create:"New discount",empty:"No discounts yet.",model:"Model",audience:"Audience",audienceHint:"Leave as all users to discount for everyone.",discount:"Discount",window:"Window",live:"Live",end:"End",amount:"Discount",target:"Target",name:"Internal name",nameHint:"Optional label for your own reference.",percentLabel:"Extra off the platform price",percentHint:"1–99%. Applied on top of our platform price (our_price), not the official price.",percentError:"Enter a value between 1 and 99.",previewPlatform:"Discounted platform price",previewVsOfficial:"Saved vs official",pickStart:"Pick a start date",sheetDescription:"Discounts apply on top of the platform price. The official price is shown for comparison only.",created:"Discount created",saved:"Discount saved",statusUpdated:"Status updated",deleteConfirm:"Delete this discount?",liveReadonly:"This discount is live — value, window, and name are locked. Pause or end it to make changes.",terminalReadonly:"This discount has ended and is read-only."},Men={title:"Targeted grants",create:"New grant",empty:"No targeted grants yet.",time:"Time",kind:"Kind",kind_grant:"Grant",kind_revoke:"Revoke",model:"Models",modelHint:"Credit is shared across the selected models — spending on any of them draws from the same balance.",pickModels:"Pick models",nModels:"{{count}} models selected",pasteEmails:"Bulk add by email",pasteEmailsPlaceholder:"[email protected], [email protected] — separated by newline, comma or semicolon",importEmails:"Parse & add",importMatched:"Matched {{count}} users.",importUnmatched:"{{count}} emails not found:",importInvalid:"{{count}} invalid entries skipped:",importInactive:"{{count}} matched but inactive — will be skipped:",preset7d:"7 days",preset30d:"30 days",preset90d:"90 days",total:"Total",notifyYes:"Yes",notifyNo:"No",recipients:"Recipients",amount:"Amount",expiry:"Expires",expiryHint:"Optional. Unused balance expires on this date.",audience:"Audience",bySegment:"By audience",byUsers:"Specific users",segment:"Audience",users:"Users",searchUsers:"Search by email or ID",noUsers:"No matching users.",grantDetails:"Grant details",amountEach:"Amount per recipient (USD)",amountHint:"0.01–2000 per recipient.",notifyEmail:"Email recipients",note:"Note",summary:"{{count}} recipients × {{amount}} = {{total}} total",send:"Send grant",sending:"Queuing…",queued:"Grant queued — fanning out to recipients",confirmTitle:"Send targeted grant?",confirmMessage:"Grant {{amount}} each to {{count}} recipients ({{total}} total)?",confirmSend:"Send grant",sheetDescription:"Grant model-restr
795icted credit to an audience or a hand-picked list of users.",batchTitle:"Grant batch",succeeded:"Succeeded",failed:"Failed",revokedAmount:"Reclaimed",completedAt:"Completed",revoke:"Revoke",revokeConfirm:"Reclaim unused balance from {{count}} recipients of {{model}}?",revokeQueued:"Revoke queued"},Een={title:"Periodic grants",create:"New periodic grant",editTitle:"Edit periodic grant",empty:"No periodic grants yet. Create one to give recurring free tokens or credit on a daily or weekly cadence.",sheetDescription:"Free tokens or restricted credit, refreshed for an audience every period (lazily, on first use).",basics:"Basics",name:"Name",namePlaceholder:"e.g. Daily free Kimi tokens",unit:"Unit",unitHint:"Tokens = free token allowance per period. USD = restricted credit (single model only).",unitLocked:"Unit is fixed after creation — create a new campaign to switch.",unit_tokens:"Tokens",unit_usd:"USD",allUnits:"All units",targeting:"Targeting",models:"Models",modelsHint:"Free tokens are usable across all selected models.",model:"Model",usdSingleModelHint:"USD grants are restricted to one model — multi-model would make spend unattributable.",pickModels:"Pick models",nModels:"{{count}} model selected",nModels_plural:"{{count}} models selected",audience:"Audience",audienceHint:"Leave as all users to grant to everyone.",schedule:"Amount & schedule",perPeriod:"Per period",tokensHint:"Positive integer, e.g. 100000 tokens per period.",usdHint:"
7950.01–2000 USD per period.",cadence:"Cadence",cadence_daily:"Daily",cadence_weekly:"Weekly",anchorTz:"Anchor timezone",anchorTzHint:"Period boundaries follow local midnight in this timezone.",startsAt:"Starts",startsAtHint:"Optional. Blank = effective immediately.",endsAt:"Ends",endsAtHint:"Optional. Blank = no end date.",immediately:"Immediately",excludeRisky:"Exclude risky accounts",thisPeriod:"This period (users · used/granted)",allStatuses:"All statuses",status_draft:"Draft",status_active:"Active",status_paused:"Paused",status_archived:"Archived",created:"Periodic grant created",saved:"Periodic grant saved"},Ien={title:uen,description:men,tabs:pen,status:fen,actions:gen,allUsers:hen,always:yen,noExpiry:ven,window:ben,windowHint:xen,validFrom:$en,validTo:wen,pause:ken,resume:Cen,actionAdd:Sen,actionRemove:Aen,actionDelete:Ten,actionClear:Ren,actionClose:Pen,filters:_en,segments:jen,access:Nen,discounts:Den,grants:Men,recurring:Een},Oen="Announcements",Len="Banners shown at the top of the marketing site and the console.",Uen="Banners",Ben="Top-of-page banners shown on www and console.",Fen="New Banner",zen="No banners yet. Create one to show a top-of-page announcement.",qen="Message",Hen="Supports inline links: [text](https://… or /path). Multiple links allowed.",Ven="CTA Label",Ken="CTA Link",Gen="Severity",Wen="Audience",Yen="Starts At",Qen="Ends At",Xen="Dismissible",Zen="Status",Jen="Archive",etn="Archive this banner? It will no longer be shown to users.",ttn="New Banner",ntn="Edit Banner",atn="Title",otn="Type",stn="Content",rtn="Display type",itn="Banner",ltn="Modal",ctn="Draft",dtn="Active",utn="Info",mtn="Warning",ptn="Critical",ftn="Console only",gtn="Public site only",htn="Both",ytn="Hero image",vtn="Upload an image, or paste an https URL. Optional. PNG / JPEG / WebP / GIF, up to 5MB.",btn="Upload",xtn="Uploading…",$tn="Remove",wtn="Only PNG, JPEG, WebP and GIF images are supported.",ktn="Image must be 5MB or smaller.",Ctn="Upload failed, please try again.",Stn="Title",Atn="Body",Ttn="Action buttons",Rtn="Button label",Ptn="Button link",_tn="Style",jtn="Add button",Ntn="Remove",Dtn="Primary",Mtn="Secondary",Etn="Link",Itn="Simplified Chinese (source)",Otn="Fill in Simplified Chinese only, then translate to other languages in one click.",Ltn="Translate to all languages",Utn="Translating…",Btn="Other languages (translated, editable)",Ftn="Translated {{ok}} languages",ztn="{{failed}} languages failed — fill in manually or retry",qtn="Chinese source changed but translations weren't refreshed — click Translate again or non-Chinese users will see outdated copy.",Htn="Re-show to users who already dismissed it",Vtn="Fill in the Simplified Chinese body first.",Ktn={title:Oen,description:Len,annTitle:Uen,annDescription:Ben,annNewButton:Fen,annEmpty:zen,annMessage:qen,annInlineLinkHint:Hen,annCtaText:Ven,annCtaUrl:Ken,annSeverity:Gen,annAudience:Wen,annStartsAt:Yen,annEndsAt:Qen,annDismissible:Xen,annStatus:Zen,annArchive:Jen,annArchiveConfirm:etn,annCreateTitle:ttn,annEditTitle:ntn,annColTitle:atn,annColType:otn,annColContent:stn,annDisplayType:rtn,annTypeBanner:itn,annTypeModal:ltn,annStatusDraft:ctn,annStatusActive:dtn,annSevInfo:utn,annSevWarning:mtn,annSevCritical:ptn,annAudConsole:ftn,annAudPublic:gtn,annAudAll:htn,annHeroImage:ytn,annHeroImageHint:vtn,annHeroImageUpload:btn,annHeroImageUploading:xtn,annHeroImageRemove:$tn,annHeroImageBadType:wtn,annHeroImageTooLarge:ktn,annHeroImageUploadFailed:Ctn,annModalTitle:Stn,annBody:Atn,annActions:Ttn,annActionLabel:Rtn,annActionUrl:Ptn,annActionVariant:_tn,annActionAdd:jtn,annActionRemove:Ntn,annVariantPrimary:Dtn,annVariantSecondary:Mtn,annVariantLink:Etn,annSourceLocale:Itn,annSourceHint:Otn,annTranslate:Ltn,annTranslating:Utn,annOtherLocales:Btn,annTranslateDone:Ftn,annTranslateParti
795al:ztn,annTranslateStale:qtn,annBumpRevision:Htn,annTranslateNeedSource:Vtn},Gtn="Operations dashboard",Wtn="Real-time overview of platform health, usage, and alerts.",Ytn="Refresh",Qtn="Refreshing",Xtn="Updated {{time}}",Ztn="Loading dashboard",Jtn="Failed to load dashboard",enn="No data",tnn="No traffic yet",nnn="Video fail rate",ann="Avg latency",onn="Error types",snn="No errors",rnn="Model anomalies",inn="All models healthy",lnn="Components",cnn="req",dnn="Checkout abandon",unn="Refunds",mnn="Chargebacks",pnn="First-charge conversion",fnn={kpis:"Key metrics",alerts:"Alerts",health:"System health",payment:"Payment health",revenue:"Revenue & growth",trend:"Trend",alertSettings:"Alert settings",leaderboard:"Growth leaderboards"},gnn={title:"Referral leaderboard",boardAria:"Select leaderboard",rangeAria:"Select time range",boards:{invites:"Invites",revenue:"Referred revenue"},ranges:{today:"Today","3d":"3d","7d":"7d","30d":"30d"},ofTotal:"of {{total}}",countPair:"{{valid}} / {{total}} valid",empty:"No referrals in this window",failedLoad:"Failed to load leaderboard",validHint:"Valid = normal risk status + active binding"},hnn={requests:"Requests",successRate:"Payment success",activeUsers:"Active users",newSignups:"New signups",newSignupsHint:"Utilisateurs normaux uniquement (hors signalés)",billedCredit:"Billed credit",errorRate:"Error rate",avgLatency:"Avg latency",balance:"Platform balance",vsPrevious:"{{delta}} vs previous",vsYesterday:"vs yesterday",noChange:"No change",successFailed:"{{success}} ok · {{failed}} fail"},ynn={today:"Revenue today",trendTitle:"Revenue today vs yesterday",monthDetail:"{{count}} charges · MTD {{mtd}}"},vnn={summary:"{{paid}} paid · {{failed}} failed · {{pending}} pending"},bnn={paidOfSignups:"{{paid}} first-charged / {{signups}} signups"},xnn={healthy:"Healthy",degraded:"Degraded",down:"Down",unknown:"Unknown"},$nn={critical:"Critical",warning:"Warning",info:"Info",ok:"Healthy"},wnn={operational:"Operational",degraded:"Degraded",down:"Down",upstream:"Upstream channels",gateway:"Gateway",billing:"Billing",jobs:"Job queue",tierReason:{ok:"Healthy",watch:"Watch: nearing threshold",warning:"Warning: over warn line",critical:"Critical: over crit line"}},knn={title:"Active alerts",empty:"All systems operational",activeCount:"{{count}} active alerts",triggeredAt:"Triggered {{time}}",viewDetail:"View detail",acknowledge:"Acknowledge",resolved:"Resolved"},Cnn={title:"Alert settings",description:"Set warning / critical thresholds for the 6 alert types; ops is notified when a metric crosses the line. Severity is derived from the tier automatically.",enabled:"Enabled",warnThreshold:"Warning threshold",critThreshold:"Critical threshold",cooldown:"Cooldown (min)",cooldownHint:"Minimum gap between two notifications for the same alert, to prevent spam.",rateHint:"Rate, 0–1 (e.g. 0.05 = 5%).",countHint:"Absolute value, ≥ 0.",directionHigher:"Higher is worse: warning ≤ critical.",directionLower:"Lower is worse: warning ≥ critical.",lastFired:"Last fired {{time}}",neverFired:"Never fired",save:"Save all",saving:"Saving",saved:"Alert settings saved",saveError:"Failed to save",readonlyHint:"You have read-only access.",noData:"No alert settings",errors:{directionHigher:"Warning threshold must be ≤ critical threshold",directionLower:"Warning threshold must be ≥ critical threshold",rateRange:"Rate thresholds must be within 0–1",nonNegative:"Thresholds must be ≥ 0",cooldownNonNegative:"Cooldown must be ≥ 0",required:"Threshold is required"},types:{payment_success_rate_low:"Payment success rate low",gateway_error_rate_high:"Gateway error rate high",model_error_spike:"Model error spike",webhook_dead_letter:"Webhook dead letter backlog",system_component_down:"System component down",negative_balance_exposure:"Negative balance exposure"}},Snn={label:"Time range",today:"Today",days7:"7 days",days30:"30 days"},Ann="{{failed}}/{{total}} jobs",Tnn="{{delta}}pt vs yesterday",Rnn="Low sample ({{n}})",Pnn="Had gateway calls",_nn="Last 7d cohort · normal users only",jnn="Refund rate {{rate}}%",Nnn={funnel:"opened {{opened}} · paid {{paid}}"}
795,Dnn={title:Gtn,description:Wtn,refresh:Ytn,refreshing:Qtn,lastUpdated:Xtn,loading:Ztn,failedLoad:Jtn,empty:enn,noTraffic:tnn,videoFailRate:nnn,avgLatency:ann,errorTypes:onn,noErrors:snn,modelAnomalies:rnn,noAnomalies:inn,components:lnn,req:cnn,abandonRate:dnn,refunds:unn,chargebacks:mnn,firstChargeConversion:pnn,sections:fnn,leaderboard:gnn,kpi:hnn,revenue:ynn,orders:vnn,conversion:bnn,componentStatus:xnn,severity:$nn,health:wnn,alerts:knn,alertSettings:Cnn,range:Snn,videoJobsDetail:Ann,vsYesterdayPt:Tnn,lowSample:Rnn,activeUsersHint:Pnn,conversionCohortHint:_nn,refundRate:jnn,checkout:Nnn},Mnn="Loading...",Enn="Admin permission required",Inn="Your account does not have permission to access this administrator page.",Onn={loading:Mnn,permissionRequired:Enn,permissionDescription:Inn},Lnn="User growth",Unn="Signup rewards, discount codes, referrals, and credit grants. Manual grants live on the Users page.",Bnn={mobileLabel:"Section croissance",onboarding:"Signup & new users",discount:"Discount codes",referral:"Referral cashback",grants:"Credit grants",topup:"Top-up bonus",redeem:"Codes de recharge",tasks:"Task wall"},Fnn="Coupon batch",znn="Promotion rule",qnn="Count",Hnn="Batch code",Vnn="Creating...",Knn="Create batch",Gnn="{{count}} coupon code created",Wnn="{{count}} coupon codes created",Ynn="Batch {{code}}",Qnn="Copied",Xnn="Copy all",Znn="Credit grants",Jnn="Source",ean="Status",tan="No grants yet",nan="Coupon redemptions, signup bonuses, and manual grants appear here.",aan="Time",oan="User",san="Amount",ran="Signup bonus",ian="Controls the credit automatically granted to new users. Disable it to stop future signup grants.",lan="Enable signup credit",can="Amount (USD)",dan="Save signup bonus",uan="Saving...",man="Current amount {{amount}}",pan="Referral cashback",fan="Configure double-sided referral rewards, release delay, caps, and billing-page messaging.",gan="Enable referral cashback",han="Reward tiers",yan="Add tier",van="Recipient",ban="From day",xan="Until day",$an="Percent",wan="Label",kan="Action",Can="Inviter",San="Invitee",Aan="No end",Tan="Remove tier",Ran="Release delay (days)",Pan="Per-topup cap (USD)",_an="Min topup (USD, blank = none)",jan="Cashback expiry (days, blank = never)",Nan="Billing-page countdown banner",Dan="Banner title",Man="Subtitle",Ean="Countdown mode",Ian="Global deadline",Oan="Each invitee's 30-day window",Lan="Ends at",Uan="Save referral settings",Ban="v{{version}}",Fan="Saving reward tiers, release delay, caps, or expiry publishes a NEW version. Existing referral relationships keep the version they were bound under — only new signups get the new terms. Pausing only affects new signups.",zan="Version history",qan="Version",Han="Status",Van="Reward tiers",Kan="Published",Gan="Superseded",Wan="current",Yan="Top-up discount codes",Qan="Discount codes lower what users pay at checkout; the full top-up amount is credited only after payment succeeds. Configure here, then generate codes below.",Xan="Enable discount codes",Zan="Discount type",Jan="Fixed amount off (USD)",eon="Percentage off (%)",ton="Amount off (USD)",non="Percentage off (0-100)",aon="Save discount",oon="Default low-balance alert",son="New users get an email low-balance alert at this threshold by default. Changing it only affects future signups, not existing wallets.",ron="Threshold (USD)",ion="Save threshold",lon="Current: {{amount}}",con="Generate codes against the discount rule above.",don="In effect: {{state}} · {{value}} off",uon="enabled",mon="disabled",pon="Issued codes",fon="Pick a batch to see who redeemed each code.",gon="No batches yet",hon="Generate a batch above to start tracking redemptions.",yon="Total",von="Redeemed",bon="Reserved",xon="Available",$on="Codes in {{code}}",won="No codes in this batch",kon="Code",Con="Redeemed by",Son="Redeemed at",Aon="Paid",Ton="Discount",Ron="Créer des codes",Pon="Un code partagé est un seul code que plusieurs utilisateurs peuvent utiliser jusqu'à N fois ; un lot de codes uniques est composé de N codes à usage unique.",_on="Type de code",jon="Code partagé unique",Non="Lot de codes uniques",Don="Texte du code (laisser vide pour aléatoire)",Mon="ex. WELCOME100",Eon="Utilisations totales (N)",Ion="Par utilisateur",Oon="Expire le (facultatif)",Lon="groupe facultatif",Uon="Créer le code partagé",Bon="Code partagé créé",Fon="Utiliser une réduction pour ce lot (sinon la règle ci-dessus)",zon="Codes partagés",qon="Un code, plusieurs utilisateurs. Le nombre d'utilisations suit les utilisations payées.",Hon="Aucun code partagé pour le moment",Von="Utilisé / plafond",Kon="Par utilisateur",Gon="Expire",Won="Désactiver",Yon="Désactiver ce code ?",Qon="Les nouveaux paiements sont bloqués immédiatement. Les commandes déjà en cours de paiement peuvent encore aboutir.",Xon="Code désactivé",Zon="CSV",Jon="Statut",esn="E-mail",tsn={code:"Code",discount:"Réduction",redeemed:"Utilisé",cap:"Plafond",perUser:"Par utilisateur",status:"Statut",expiresAt:"Expire le",batch:"Lot",createdAt:"Créé le",redeemedBy:"Utilisé par",redeemedAt:"Utilisé le",paid:"Payé",discountAmount:"Réduction",email:"Email",credited:"Credited",bonus:"Bonus",paidAt:"Paid at"}
795,nsn="Amount",asn="Bound at",osn="Counterparty",ssn="Invitee",rsn="Inviter",isn="Rate",lsn="Released",csn="Role",dsn="Tier",usn="Top-up",msn="Load more",psn="No referrals under this version",fsn="No cashback under this version",gsn="Referrals",hsn="Referral records",ysn="Cashback records",vsn="Version detail",bsn={title:"Top-up bonus",description:"Reward bigger top-ups with bonus credit. Each tier can grant general credit or credit restricted to a model group.",enabled:"Enable top-up bonus",saved:"Top-up bonus saved",tiers:"Bonus tiers",tiersHint:"Top-up matches the highest tier whose threshold it reaches. Restricted credit only applies to synchronous text/image calls — not video or async image jobs.",noTiers:"No tiers yet. Add one to start rewarding top-ups.",min:"Min top-up (USD)",rewardType:"Reward",bonus:"Fixed (USD)",percent:"Percent (%)",rewardBonus:"Bonus amount (USD)",rewardPercent:"Percent of top-up (%)",expiryDays:"Expiry (days, blank = never)",noExpiry:"Never",scope:"Credit scope",scopeHint:"General credit works on any model; a model group restricts the bonus to those models.",scopeGeneral:"General (any model)",removeTier:"Remove tier",addTier:"Add tier",antifraud:"Abuse guards",minTopup:"Min top-up to qualify (USD, blank = none)",maxBonusPerUser:"Max bonus per user (USD, blank = none)",none:"None",excludeRisky:"Exclude watchlisted / blocked users",save:"Save top-up bonus",createScope:"New restricted model group",createScopeDescription:"Pick the models a restricted bonus may be spent on, then reference this group from a tier above.",scopeName:"Group name",scopeNamePlaceholder:"High-margin models",scopeModels:"Models",pickModels:"Pick models",nModels:"{{count}} models",createScopeButton:"Create group",scopeCreated:"Model group created"},xsn="Générer des codes de recharge",$sn="Codes de recharge de type carte prépayée. L'utilisateur saisit le code sur la page de facturation et la valeur faciale est créditée directement (solde offert, sans paiement).",wsn="Nom du lot (facultatif)",ksn="Par exemple : crédit offert Conf-2026",Csn="Nombre à générer",Ssn="Valeur faciale unitaire (USD)",Asn="Codes utilisables par compte dans ce lot (laisser vide = illimité)",Tsn="Illimité",Rsn="Date limite de validité (facultatif)",Psn="Restrict to models (optional)",_sn="General balance (no restriction)",jsn="{{count}} models selected",Nsn="Blank = general balance. Selected models share one earmarked pool.",Dsn="Credit validity after redemption (days, blank = never expires)",Msn="never expires",Esn="{{n}} d",Isn="Models",Osn="Validity",Lsn="General balance",Usn="Générer des codes de recharge",Bsn="Enregistrez-les immédiatement. Vous pourrez aussi les récupérer plus tard via « Exporter en clair » depuis la liste des lots.",Fsn="Lots de codes de recharge",zsn="Cliquez sur un lot pour voir le détail de chaque code ; « Exporter en clair » permet de réexporter les codes en clair.",qsn="Aucun lot de codes de recharge pour le moment",Hsn="Lot",Vsn="Valeur faciale",Ksn="Exporter en clair",Gsn="Annuler ce code déjà utilisé ?",Wsn="La part non encore consommée est récupérée sur le solde de l'utilisateur ; la part déjà consommée est irrécupérable.",Ysn="Annuler",Qsn="Annulé : {{amount}}",Xsn="Codes de recharge exportés",Zsn="Désactiver les codes non utilisés de ce lot ?",Jsn="Tous les codes non encore utilisés deviendront invalides ; les codes déjà utilisés ne sont pas affectés.",ern="{{n}} code(s) désactivé(s)",trn="Bonus % on top-up",nrn="Bonus (%)",arn="Bonus validity (days, optional)",orn="blank = never expires",srn={view:"Payments",title:"Payments via ····{{code}}",email:"User",credited:"Credited",bonus:"Bonus",summary:"{{count}} payments · {{users}} users · {{paid}} paid · {{bonus}} bonus granted",empty:"No payments through this code yet"},rrn={configTitle:"Task wall config",configDescription:"Amounts, switches and accepted hosts. Task copy lives in the translation files, not here. Changes take effect on the next page load — no deploy.",enabled:"Enable the task wall",tasksTitle:"Tasks",taskKey:"Task key",amount:"Amount (USD)",hosts:"Accepted hosts",hostsHint:"Links outside this list are rejected at submission time.",taskEnabled:"Visible to users",addTask:"Add task",guardsTitle:"Abuse guards",dailyCap:"Daily pending c
795ap",dailyCapHint:"0 = no cap. Fail-open if Redis is down.",minAge:"Minimum account age (days)",minAgeHint:"0 = no age gate.",saved:"Task wall saved",queueTitle:"Submissions",queueCount:"{{count}} shown",empty:"Nothing here.",approve:"Approve & pay",approved:"Approved — credit granted",reject:"Reject",rejected:"Rejected",confirmReject:"Confirm reject",reasonPlaceholder:"Why is this rejected?",duplicate:"Same link from {{count}} other account(s)",status:{pending:"Pending",approved:"Approved",rejected:"Rejected"}},irn={title:Lnn,description:Unn,tabs:Bnn,couponBatch:Fnn,promotionRule:znn,count:qnn,batchCode:Hnn,creating:Vnn,createBatch:Knn,codesCreated:Gnn,codesCreated_plural:Wnn,batch:Ynn,copied:Qnn,copyAll:Xnn,creditGrants:Znn,source:Jnn,status:ean,noGrants:tan,noGrantsDescription:nan,time:aan,user:oan,amount:san,signupBonus:ran,signupBonusDescription:ian,signupBonusEnabled:lan,signupBonusAmount:can,saveSignupBonus:dan,saving:uan,currentSignupBonus:man,referral:pan,referralDescription:fan,referralEnabled:gan,referralRewardTiers:han,addTier:yan,tierRole:van,tierFromDay:ban,tierUntilDay:xan,tierPercent:$an,tierLabel:wan,tierAction:kan,roleReferrer:Can,roleReferee:San,noEndDay:Aan,removeTier:Tan,releaseDelayDays:Ran,referralCap:Pan,referralMinTopup:_an,referralExpiryDays:jan,bannerEnabled:Nan,bannerTitle:Dan,bannerSubtitle:Man,bannerMode:Ean,bannerModeGlobal:Ian,bannerModeWindow:Oan,bannerEndsAt:Lan,saveReferral:Uan,referralVersion:Ban,referralPublishHint:Fan,referralVersionHistory:zan,versionCol:qan,versionStatus:Han,versionTiers:Van,versionPublished:Kan,versionSuperseded:Gan,versionCurrent:Wan,discountRule:Yan,discountRuleDescription:Qan,discountEnabled:Xan,discountType:Zan,discountFixed:Jan,discountPercent:eon,discountValueFixed:ton,discountValuePercent:non,saveDiscount:aon,defaultLowBalanceThreshold:oon,defaultLowBalanceThresholdDescription:son,defaultLowBalanceThresholdAmount:ron,saveDefaultLowBalanceThreshold:ion,currentDefaultLowBalanceThreshold:lon,couponBatchDescription:con,discountEffective:don,stateEnabled:uon,stateDisabled:mon,couponTrace:pon,couponTraceDescription:fon,noBatches:gon,noBatchesDescription:hon,batchTotal:yon,batchRedeemed:von,batchReserved:bon,batchActive:xon,codesInBatch:$on,noCodes:won,code:kon,redeemedBy:Con,redeemedAt:Son,paid:Aon,discount:Ton,createIssuance:Ron,createIssuanceDescription:Pon,formLabel:_on,formShared:jon,formUniqueBatch:Non,sharedCodeText:Don,sharedCodeRandomHint:Mon,sharedMaxRedemptions:Eon,sharedPerUser:Ion,expiresAt:Oon,batchCodeOptional:Lon,createSharedCode:Uon,sharedCodeCreated:Bon,batchOwnDiscount:Fon,sharedCodesList:zon,sharedCodesListDescription:qon,noSharedCodes:Hon,colRedeemedTotal:Von,colPerUser:Kon,colExpiry:Gon,disableCode:Won,disableCodeConfirmTitle:Yon,disableCodeConfirmMessage:Qon,codeDisabled:Xon,exportCsv:Zon,statusFilter:Jon,filterByEmail:esn,csv:tsn,colAmount:nsn,colBoundAt:asn,colCounterparty:osn,colInvitee:ssn,colInviter:rsn,colRate:isn,colReleasedAt:lsn,colRole:csn,colTier:dsn,colTopup:usn,loadMore:msn,noBindings:psn,noCashback:fsn,versionBindings:gsn,versionBindingsSection:hsn,versionCashbackSection:ysn,versionDetail:vsn,topup:bsn,redeemCreate:xsn,redeemCreateDescription:$sn,redeemBatchName:wsn,redeemBatchNameHint:ksn,redeemCount:Csn,redeemFaceValue:Ssn,redeemPerUserLimit:Asn,redeemUnlimited:Tsn,redeemExpiresAt:Rsn,redeemModels:Psn,redeemModelsAll:_sn,redeemModelsCount:jsn,redeemModelsHint:Nsn,redeemValidityDays:Dsn,redeemValidityForever:Msn,redeemValidityDaysValue:Esn,redeemColModels:Isn,redeemColValidity:Osn,redeemGeneralBalance:Lsn,redeemCreateBtn:Usn,redeemRevealHint:Bsn,redeemBatches:Fsn,redeemBatchesDescription:zsn,redeemNoBatches:qsn,redeemBatchCol:Hsn,redeemFace:Vsn,redeemReveal:Ksn,redeemReverseTitle:Gsn,redeemReverseMessage:Wsn,redeemReverseBtn:Ysn,redeemReversed:Qsn,redeemRevealed:Xsn,redeemDisableBatchTitle:Zsn,redeemDisableBatchMessage:Jsn,redeemBatchDisabled:ern,discountTypeBonusPercent:trn,discountValueBonusPercent:nrn,bonusExpiryDays:arn,bonusExpiryDaysHint:orn,sharedPayments:srn,tasks:rrn},lrn="Models",crn="Model catalog: create, edit, publish.",drn={label:"Display badges",hint:"Hot / Benefit tags shown on the user-facing models & pricing page.",hot:"Hot",benefit:"Benefit"},urn="Add model",mrn="Edit {{model}}",prn="New model",frn="Close",grn="Basics & content save together; pricing and status changes apply immediately.",hrn="Create the model draft. Set pricing and publish after it exists.",yrn={basics:"Basics",basicsHint:"Identity, upstream mapping, protocols.",config:"Configuration",configHint:"Identity, upstream routing, type and capabilities.",protocols:"Protocols",protocolsHint:"Which API protocols this model serves.",content:"Content & display",contentHint:"i18n summary / description and sort order."},vrn="Provider slug",brn="Pick a known provider or type a custom slug.",xrn="Model slug",$rn="Aliases",wrn="Comma-separated lookup aliases for import and review.",krn="Source (customer-visible)",Crn="Label customers see on the model/logs. Blank = vendor. Use it to distinguish s
795ame-model variants at different prices.",Srn="Platform",Arn="— select platform —",Trn="Upstream model id (optional; choose from upstream or enter manually)",Rrn="Choose from upstream...",Prn="Upstream unavailable",_rn="Protocols",jrn="Input price / 1M (USD)",Nrn="Output price / 1M (USD)",Drn="EN summary",Mrn="Preview",Ern="(No summary)",Irn="No protocol",Orn="Cancel",Lrn="Save",Urn="Create draft",Brn={basic:"Identity & routing",pricing:"Pricing",content:"Content & display"},Frn={config:"1 · Configuration",protocols:"2 · Protocols",pricing:"3 · Pricing",display:"Content & display",back:"Back",next:"Next",create:"Create model"},zrn="Context window (tokens)",qrn="Max input the model accepts. Leave blank if unknown.",Hrn="Max output tokens",Vrn="Max tokens the model can generate per response.",Krn={status:"Status",visibility:"Visibility",hint:"Lifecycle changes apply immediately (with confirmation), separate from Save.",confirmStatus:'Set status to "{{status}}"? Takes effect immediately.',confirmVisibility:'Set visibility to "{{visibility}}"? Takes effect immediately.',statusChanged:"Status set to {{status}}.",visibilityChanged:"Visibility set to {{visibility}}.",publishBlocked:"Cannot publish: core pricing factors are missing. Set them in the Pricing tab first.",statusOption:{draft:"Draft",published:"Published",deprecated:"Deprecated",archived:"Archived"},visibilityOption:{public:"Public",hidden:"Hidden"},availability:"Availability",confirmAvailable:"Mark this model available again? Takes effect immediately.",confirmUnavailable:"Mark this model temporarily unavailable? It stays listed (greyed out) but gateway calls are rejected.",availableChanged:"Model marked available.",unavailableChanged:"Model marked temporarily unavailable.",availabilityOption:{available:"Available",unavailable:"Unavailable"},audience:"Audience",audienceOption:{everyone:"Everyone",paid_only:"Topped-up accounts only"},confirmPaidOnly:"Restrict this model to accounts that have topped up? It stays listed, but users who never paid get a 403 telling them to top up.",confirmEveryone:"Open this model to every account? Takes effect immediately.",paidOnlyChanged:"Model restricted to accounts that have topped up.",everyoneChanged:"Model opened to every account."},Grn="Input modalities",Wrn="Declares what this model can receive, including vision, audio, video, and file inputs.",Yrn="Output modalities",Qrn="Drives the publish gate: text requires text in/out pricing, image/video/embeddings require their factors.",Xrn="Image billing style",Zrn="Video billing style",Jrn="How the upstream charges for this output. Required before publishing — the gate demands the matching price factor.",ein="— select billing style —",tin="Per token (image_output_token)",nin="Per image (per_call_image)",ain="Per second (video_per_second)",oin="Per call (video_per_call)",sin="Display order",rin="Must be a non-negative integer.",iin="Editing locale",lin="Upstream release date",cin="Summary (this locale)",din="Description (Markdown, this locale)",uin={provider:"Provider",status:"Status",visibility:"Visibility",allStatuses:"All model statuses",allVisibility:"All visibility",allProviders:"All providers",search:"Search model slug",mobileTitle:"Filtres"},min={label:"Models",empty:"No models",model:"Model",provider:"Provider",source:"Source",status:"Status",visibility:"Visibility",action:"Action",edit:"Edit",setStatus:"Set status for {{model}}",setVisibility:"Set visibility for {{model}}",confirmSet:'Set {{model}} {{field}} to "{{value}}"?',sub2api:"Sub2API mapping",textPrice:"Price (in / out $/M)",priceByTokens:"{{kind}} · per-token",imageOutput:"image out",officialPrice:"List",saved:"-{{pct}}%"},pin={invalidPrice:"Price must be a number greater than or equal to 0, or left blank.",highRisk:"This change affects live gateway routing and may cause 404s. Continue?",stale:"This model was changed by someone else. Close and reopen it before editing again."},fin={savesImmediately:"Pricing changes apply immediately and are not controlled by Save.",createPriceFailed:"Model created, but some prices were not saved. Add them in the Pricing tab.",factors:{title:"Pricing factors",hint:"Each row is an atomic unit (text input/output, cache, image, …). Active rows determine billing from their effective date; history rows record past prices.",liveBanner:"Changes here apply immediately and are recorded in price history — they are not controlled by the bottom Save button.",draftHint:"Save the model draft first; pricing factors are edited inline after the model exists.",addFactor:"Add factor",changePrice:"Change price",expire:"Expire",confirmExpire:"Expire this factor row? It will stop applying immediately and move to history.",changeSaved:"Factor price updated.",expired:"Factor expired.",factor:"Factor",tier:"Tier",tierNone:"(no tier)",unit:"Unit",ourPrice:"Our price (USD)",officialPrice
795:"Official (USD)",officialAbbr:"official",source:"Source (optional URL or note, ≤128 chars)",historyLabel:"History ({{count}})",emptyTitle:"No active factor prices",empty:'Click "Add factor" to set one.',loadError:"Could not load pricing factors",draftEditorHint:"Set prices now, or leave empty and add them after the model is created.",draftEmpty:"No prices added yet.",remove:"Remove",factorOption:{text_input:"Text input (LLM)",text_output:"Text output (LLM)",cache_read:"Cache read",cache_write_5m:"Cache write (5m TTL)",cache_write_1h:"Cache write (1h TTL)",image_input_token:"Image input token",image_output_token:"Image output token",per_call_image:"Image (per call)",video_per_call:"Video (per call)",video_per_second:"Video (per second)",web_search_call:"Web search call"},unitOption:{per_1m_tokens:"per 1M tokens",per_image:"per image",per_call:"per call",per_second:"per second"},conditions:"Conditions JSON (optional)"},discount:{toggle:"Apply discount",hint:"Set every factor to a fraction of its official price (0.5 = 50% off). Free factors (our price 0) and factors with no official price are skipped.",rate:"Discount rate",preview:"Preview",apply:"Apply",allowMarkup:"Allow markup (rate above 1 prices above official)",noFactors:"No active factors to reprice.",confirmTitle:"Apply discount to all factors?",confirmBody:"Reprice {{count}} factor(s) to {{rate}}× the official price. This is versioned — historical billing is unaffected.",applied:"Repriced {{count}} factor(s) at {{rate}}× official.",stale:"Prices changed since the preview — please preview again.",skipReason:{free_factor_our_zero:"Free factor (our price is 0) — left unchanged",no_official:"No official price — cannot compute",official_zero:"Official price is 0 — skipped"}}},gin="Discard unsaved changes?",hin="Modifier le modèle",yin={title:lrn,description:crn,badges:drn,addModel:urn,editModel:mrn,newModel:prn,close:frn,sheetDescription:grn,sheetDescriptionNew:hrn,sections:yrn,providerSlug:vrn,providerSlugHint:brn,modelSlug:xrn,aliases:$rn,aliasesHint:wrn,source:krn,sourceHint:Crn,platform:Srn,platformUnset:Arn,sub2apiModelId:Trn,chooseSub2api:Rrn,upstreamUnavailable:Prn,protocols:_rn,inputPrice:jrn,outputPrice:Nrn,enSummary:Drn,preview:Mrn,noSummary:Ern,noProtocol:Irn,cancel:Orn,save:Lrn,createDraft:Urn,tabs:Brn,steps:Frn,contextWindow:zrn,contextWindowHint:qrn,maxOutputTokens:Hrn,maxOutputTokensHint:Vrn,lifecycle:Krn,inputModalities:Grn,inputModalitiesHint:Wrn,outputModalities:Yrn,outputModalitiesHint:Qrn,billingStyleImage:Xrn,billingStyleVideo:Zrn,billingStyleHint:Jrn,billingStyleUnset:ein,billingStyleToken:tin,billingStylePerImage:nin,billingStylePerSecond:ain,billingStylePerCall:oin,displayOrder:sin,displayOrderInvalid:rin,contentLocale:iin,upstreamReleaseAt:lin,summary:cin,descriptionField:din,filters:uin,table:min,errors:pin,pricing:fin,discardChanges:gin,editModelShort:hin},vin="Rate Limits",bin="Rate limit policies by scope.",xin="Rate limit policies",$in="No policies",win="Code",kin="Name",Cin="Scope",Sin="Status",Ain="Limits",Tin="No limits",Rin={auth:"Auth",console:"Console",api_gateway:"API gateway",ops:"Ops",global:"Global"},Pin={active:"Active",disabled:"Disabled",archived:"Archived"},_in={rpm_per_key:"RPM / key",rpm_per_user:"RPM / user",concurrent_streams_per_key:"Streams / key",concurrent_streams_per_user:"Streams / user"},jin="New policy",Nin="Edit",Din="Action",Min="New rate limit policy",Ein="Edit {{name}}",Iin="Concurrency and RPM limits applied per API key and per user. Assign a policy to users on the Users page.",Oin='Delete policy "{{name}}"? Keys and users on it fall back to their default.',Lin="Policy deleted.",Uin={identity:"Identity",classification:"Classification",description:"Description",codeImmutable:"Code cannot be changed after creation.",limitsHint:"Leave blank to use the platform default for that limit.",default:"default",invalidLimit:"{{field}} must be a positive integer.",saved:"Policy saved.",cancel:"Cancel",save:"Save",create:"Create policy"},Bin={title:vin,description:bin,label:xin,empty:$in,code:win,name:kin,scope:Cin,status:Sin,limits:Ain,noLimits:Tin,scopes:Rin,statuses:Pin,limitNames:_in,add:jin,edit:Nin,delete:"Delete",action:Din,newTitle:Min,editTitle:Ein,formDescription:Iin,confirmDelete:Oin,deleted:Lin,form:Uin},Fin="Admins",zin="Who can sign in to the admin console. Owner-only.",qin="Admins",Hin="No admins yet",Vin="Email",
795Kin="Name",Gin="Role",Win="Status",Yin="Last login",Qin="Action",Xin="Add admin",Zin="Add admin",Jin="The email becomes an admin immediately and signs in with it — admin access is matched by email. It does not need an account yet.",eln="Email",tln="[email protected]",nln="Name",aln="Display name",oln="Role",sln="Admin added.",rln="Change role",iln="Role updated.",lln="Suspend",cln="Activate",dln="Status updated.",uln="Remove",mln="Admin removed.",pln="Remove {{email}} as an admin? They lose console access immediately.",fln="You",gln="Never",hln={owner:"Owner",admin:"Admin",support:"Support"},yln={active:"Active",suspended:"Suspended"},vln={title:Fin,description:zin,label:qin,empty:Hin,email:Vin,name:Kin,role:Gin,status:Win,lastLogin:Yin,action:Qin,add:Xin,newTitle:Zin,formDescription:Jin,emailLabel:eln,emailPlaceholder:tln,nameLabel:nln,namePlaceholder:aln,roleLabel:oln,added:sln,changeRole:rln,roleChanged:iln,suspend:lln,activate:cln,statusChanged:dln,remove:uln,removed:mln,confirmRemove:pln,self:fln,never:gln,roles:hln,statuses:yln},bln="Upstream",xln="Read-only upstream configuration mirror plus controlled OneHop routing pools.",$ln="Open upstream admin",wln="Upstream tabs",kln={overview:"Overview",keyPools:"Key pools",groups:"Groups",channels:"Channels",accounts:"Accounts"},Cln={todayRequests:"Today requests",total:"{{value}} total",upstreamCostToday:"Upstream cost today",providerAccounts:"Provider accounts",health:"Health",stale:"stale",checkPools:"check pools",online:"online"},Sln={upstreamStatsFailed:"Upstream stats failed to load",retry:"Retry",configAuditFailed:"Config audit failed",keyPoolsLoadFailed:"Key pools failed to load",createKeyPoolFailed:"Create key pool failed",keyPoolTestFailed:"Key pool test failed",keyPoolRotateFailed:"Key pool rotate failed",failedLoad:"{{title}} failed to load"},Aln={title:"Config audit",description:"Compares OneHop key pools and published model routing against upstream routing. Provider groups, channels, pricing, and accounts remain read-only here.",running:"Running...",run:"Run audit",poolsChecked:"Pools checked",modelAudit:"Model audit",checkedAt:"Checked at",needsReview:"needs review",done:"done",ok:"ok",upstreamCoverage:"Couverture amont",coverageUnchecked:"comptes illisibles",coverageOnlyAccount:"seulement {{accounts}}",coverageNoAccount:"Aucun compte planifiable ne mappe cet ID amont"},Tln={title:"Topology",keyPools:"Key pools",activeGroups:"Active groups",activeChannels:"Active channels",accounts:"Accounts",editingBoundaryTitle:"Editing boundary",editingBoundaryDescription:"The upstream admin exposes deep edit workflows for groups, channels, pricing rules, provider accounts, monitoring, and system settings. OneHop intentionally mirrors only the operational read path and owns internal key pools, so edits that change provider routing still happen in the original admin."},Rln={title:"OneHop internal key pools",description:"Pools select which upstream internal key OneHop uses per protocol and model pattern. Full secrets are never displayed.",poolCode:"Pool code",poolName:"Pool name",defaultPool:"Default pool",notDefault:"Not default",plaintextKey:"Plaintext key",create:"Create",label:"Provider routing key pools",pool:"Pool",protocols:"Protocols",models:"Models",routingGroup:"Routing group",status:"Status",health:"Health",key:"Key",lastCheck:"Last check",action:"Action",priority:"priority {{value}}",default:"default",secret:"secret",hidden:"hidden",test:"Test",rotate:"Rotate",empty:"No key pools",emptyDescription:"Create an internal pool before routing production traffic through provider routing.",newPlaintextKey:"New plaintext key",confirmRotate:"Confirm rotate",editProtocols:"Edit protocols",editProtocolsTitle:"Edit protocols (replace)",confirmEditProtocols:"Save protocols",cancelEditProtocols:"Cancel",forceEditProtocols:"Force save (override routing check)"},Pln={editUpstreamConfig:"Edit upstream config",groupsTitle:"Groups",groupsDescription:"Routing buckets from upstream config. OneHop uses these as source-of-truth context for key-pool binding and audit decisions.",groupsLabel:"Routing groups",groupsEmpty:"No groups",groupsEmptyDescription:"Upstream config did not return any groups.",channelsTitle:"Channels",channelsDescription:"Provider channel configuration from upstream config, including model mappings and pricing rule coverage.",channelsLabel:"Provider routing channels",channelsEmpty:"No channels",channelsEmptyDescription:"Upstream config did not return any channels.",accountsTitle:"Accounts",accountsDescription:"Provider accounts are redacted in OneHop. Use the upstream admin for credential edits and OAuth refresh flows.",accountsLabel:"Provider routing accounts",accountsEmpty:"No accounts",accountsEmptyDescription:"Upstream config did not return any provider accounts."},_ln={group:"Group",platform:"Platform",rate:"Rate",rpm:"RPM",accounts:"Accounts",limits:"Limits",status:"Status",updated:"Updated",channel:"Channel",billingSource:"Billing source",mappings:"Mappings",pricing:"Pricing",account:"Account",groups:"Groups",baseUrl:"Base URL",capacity:"Capacity",lastUsed:"Last used"},jln={noDescription:"No description",unlimited:"unlimited",schedulable:"schedulable",notSchedulable:"not schedulable",loading:"Loading...",noPricingRules:"No pricing rules",modelsCount:"{{count}} models",none:"none",channelMapped:"Channel mapped",requestedModel:"Requested model",upstreamModel:"Upstream model",priority:"priority",unknown:"unknown"},Nln={serving:{label:"Serving state",serving:"Serving",rate_limited:"Rate-limited",overloaded:"Overloaded",expired:"Expired",paused:"Paused",error:"Error",disabled:"Disabled"},quota:{label:"Quota (today)",noLimit:"no limit",spend:"{{spend}} / {{limit}}"},accounts:{breakdown:"{{normal}} normal · {{error}} error · {{ratelimit}} limited · {{overload}} overload"},freshness:{updated:"updated {{ago}}",never:"never"},pools:{lastError:"Last error",resync:"Resync"},audit:{poolFindings:"Pool findings",clean:"clean",findingsCount:"{{count}} issue(s)"},tokensToday:"{{count}} tok today"},Dln={title:bln,description:xln,openUpstreamAdmin:$ln,tabsLabel:wln,tabs:kln,metrics:Cln,errors:Sl
795n,audit:Aln,topology:Tln,pools:Rln,readonly:Pln,table:_ln,common:jln,ops:Nln},Mln="Platform usage",Eln="Cross-user request metering with cost, token, latency, and routing signals.",Iln="Refresh",Oln={label:"Auto refresh",off:"Off"},Lln="Exporting",Uln="Export CSV",Bln="Failed to export usage records",Fln="Requests",zln="{{count}} successful",qln="Users",Hln="Matched by current filters",Vln="Billed credit",Kln="{{cost}} upstream cost",Gln="Tokens",Wln="Avg {{duration}}",Yln="User email",Qln="Search by email",Xln="Model",Zln="Search by model",Jln="Status",ecn="Protocol",tcn="Rows",ncn="Reset",acn="Ops usage records",ocn="No usage records",scn="User",rcn="Endpoint",icn="{{count}} total",lcn="In {{input}} / out {{output}}",ccn="Upstream",dcn="Billed",ucn="Latency",mcn="Started",pcn="Page {{page}} · showing {{shown}} of {{total}} matching records",fcn="Previous",gcn="Next",hcn="{{count}} rows on this page",ycn="Times shown in",vcn="{{count}} API keys",bcn="Spend snapshot",xcn="from OneHop billing snapshot",$cn="User spend",wcn="total billed to users",kcn="Avg latency",Ccn="settled requests",Scn="Range",Acn={today:"Today",days7:"7 days",days30:"30 days",all:"All time"},Tcn="Metric",Rcn={cost:"Spend",tokens:"Tokens",requests:"Requests"},Pcn="Distribution",_cn={model:"Modèle",requestedModel:"Requested model",upstreamModel:"Upstream model",apiKey:"API key",user:"User",endpoint:"Endpoint",channel:"Channel",group:"Group",stream:"Transport (stream/sync)"},jcn="Usage trend",Ncn="Usage by model",Dcn="Hourly",Mcn="Daily",Ecn="Top endpoints",Icn="Top dimension rows",Ocn="Request logs",Lcn="API key",Ucn="Type",Bcn="Billing",Fcn="Channel",zcn="Group",qcn="Request ID",Hcn="req_ / usg_ / upstream",Vcn="All types",Kcn="All billing",Gcn={user:"User",time:"Time",model:"Model",tokens:"Tokens",cost:"Spend",routing:"Routing",latency:"Latency",status:"Status",duration:"Duration"},Wcn="Failed to load usage",Ycn="Loading usage records",Qcn="Try a different filter set.",Xcn="No trend data",Zcn="No distribution data",Jcn="No rows",edn="Spend breakdown",tdn={upstreamList:"Upstream list",discount:"Discount",sub2apiActual:"Sub2API actual",groupChannelMultiplier:"Group/channel multiplier",accountMultiplier:"Account multiplier",sub2apiFinalCharge:"Final spend",billedFactors:"Billed to user"},ndn="Request detail",adn="Unknown user",odn="Loading...",sdn="Sub2API actual",rdn="Group multiplier",idn="Account multiplier",ldn="Identity",cdn="User ID",ddn="Key suffix",udn={hopIdentity:"Hop identity",logicalUsageId:"Logical usage ID",logicalRequestedModel:"Logical requested model",logicalModel:"Logical model",actualRequestedModel:"Actual requested model",actualModel:"Actual model",fallbackHop:"Fallback hop",userVisibility:"User visibility",visible:"Visible",hidden:"Hidden",supersedesUsageRecord:"Supersedes record",pricingAudit:"Continuity pricing audit",mode:"Mode",policyVersion:"Policy version",sourceModel:"Source model",targetModel:"Target model",requestedRawQuote:"Requested raw quote",requestedQuote:"Requested quote",actualPricingStatus:"Actual pricing status",actualPricingAvailable:"Available",actualPricingUnavailable:"Unavailable",actualQuote:"Actual quote",chargedQuote:"Charged quote",variance:"Quote variance",actualPricingError:"Actual pricing error"},mdn="Input",pdn="Output",fdn="Cache read",gdn="Cache write",hdn="Raw metadata",ydn="Request",vdn="Usage ID",bdn="OneHop ID",xdn="Sub2API ID",$dn="Sub2API log",wdn="Routing",kdn="Mapping",Cdn="Performance",Sdn="First token",Adn="Total",Tdn="Error",Rdn="Code",Pdn="Message",_dn={time:"Time",user:"User",apiKey:"API key",model:"Model",logicalUsageId:"Logical usage ID",logicalRequestedModel:"Logical requested model",logicalModel:"Logical model",actualRequestedModel:"Actual requested model",actualModel:"Actual model",fallbackHop:"Fallback hop",userVisible:"User visible",supersedesUsageRecord:"Supersedes usage record",upstreamModel:"Upstream model",protocol:"Protocol",endpoint:"Endpoint",type:"Type",status:"Status",inputTokens:"Input tokens",outputTokens:"Output tokens",cacheRead:"Cache read",cacheWrite:"Cache write",sub2a
795piActual:"Sub2API actual",sub2apiCharge:"Spend",continuityMode:"Continuity mode",continuityPolicyVersion:"Continuity policy version",continuitySourceModel:"Continuity source model",continuityTargetModel:"Continuity target model",continuityRequestedRawQuote:"Continuity requested raw quote",continuityRequestedQuote:"Continuity requested quote",continuityActualPricingStatus:"Continuity actual pricing status",continuityActualQuote:"Continuity actual quote",continuityChargedQuote:"Continuity charged quote",continuityVariance:"Continuity quote variance",continuityActualPricingError:"Continuity actual pricing error",durationMs:"Duration ms",channel:"Channel",group:"Group",onehopRequestId:"OneHop request ID",sub2apiRequestId:"Sub2API request ID",firstTokenMs:"First token ms"},jdn={analytics:"Usage analytics",logs:"Request logs"},Ndn={label:"Chart view",stacked:"Over time",ranking:"Ranking"},Ddn={failedOnly:"Failed only",slowOnly:"Slow > {{sec}}s"},Mdn="More filters",Edn="Slow threshold (ms)",Idn="No model usage",Odn="No requests yet — usage will appear here as traffic comes in.",Ldn="Viewing",Udn="streaming requests",Bdn="Avg duration",Fdn="Latency = time to first token (TTFT); Duration = total. The slow filter uses TTFT and only covers successful requests with a recorded first token (earlier or failed requests show —).",zdn="Open request detail",qdn={title:Mln,description:Eln,refresh:Iln,autoRefresh:Oln,exporting:Lln,exportCsv:Uln,exportError:Bln,requests:Fln,successful:zln,users:qln,matchedFilters:Hln,billedCredit:Vln,upstreamCost:Kln,tokens:Gln,avgDuration:Wln,userEmail:Yln,searchEmail:Qln,model:Xln,searchModel:Zln,status:Jln,protocol:ecn,rows:tcn,reset:ncn,label:acn,empty:ocn,user:scn,endpoint:rcn,totalTokens:icn,inOut:lcn,upstream:ccn,billed:dcn,latency:ucn,started:mcn,pageSummary:pcn,previous:fcn,next:gcn,rowsOnPage:hcn,timesShownIn:ycn,apiKeys:vcn,sub2apiCharge:bcn,sub2apiChargeSource:xcn,userSpend:$cn,userSpendSource:wcn,avgLatency:kcn,settledRequests:Ccn,range:Scn,ranges:Acn,metric:Tcn,metrics:Rcn,distribution:Pcn,breakdown:_cn,usageTrend:jcn,stackedByModel:Ncn,hourly:Dcn,daily:Mcn,topEndpoints:Ecn,topDimensionRows:Icn,requestLogs:Ocn,apiKey:Lcn,type:Ucn,billing:Bcn,channel:Fcn,group:zcn,requestId:qcn,requestIdPlaceholder:Hcn,allTypes:Vcn,allBilling:Kcn,table:Gcn,failedLoad:Wcn,loadingRecords:Ycn,tryDifferentFilters:Qcn,noTrendData:Xcn,noDistributionData:Zcn,noRows:Jcn,costBreakdown:edn,adminCost:tdn,requestDetail:ndn,unknownUser:adn,loading:odn,sub2apiActual:sdn,groupMultiplier:rdn,accountMultiplier:idn,identity:ldn,userId:cdn,keySuffix:ddn,continuity:udn,input:mdn,output:pdn,cacheRead:fdn,cacheWrite:gdn,rawMetadata:hdn,request:ydn,usageId:vdn,onehopId:bdn,sub2apiId:xdn,sub2apiLog:$dn,routing:wdn,mapping:kdn,performance:Cdn,firstToken:Sdn,total:Adn,error:Tdn,code:Rdn,message:Pdn,csv:_dn,tabs:jdn,modelView:Ndn,chip:Ddn,moreFilters:Mdn,slowThreshold:Edn,noModelUsage:Idn,noTrendToday:Odn,viewing:Ldn,avgLatencySub:Udn,avgTotalDuration:Bdn,latencyHint:Fdn,openRequestDetail:zdn},Hdn="Search",Vdn="Search by user ID, email, or name",Kdn="User",Gdn="Back to users",Wdn="You do not have permission to view this section.",Ydn="Refund",Qdn="Refunding...",Xdn="Initiate a refund of {{amount}} for {{email}}? Refunds are processed asynchronously; the balance updates after the worker runs.",Zdn="Refund initiated.",Jdn={overview:"Overview",network:"Network & Device",recentCalls:"Recent Calls",apiKeys:"Clés API",payments:"Payments",refunds:"Refunds",subscription:"Subscription",referrals:"Referrals",rewards:"Rewards",audit:"Audit"},eun={title:"Free token allowance",paused:"Free token grants are paused on this account (risk review).",daily:"Daily",weekly:"Weekly",tokensUnit:"tokens",remaining:"{{value}} tokens remaining today"},tun={title:"Free model quota (today)",tokens:"tokens",remaining:"{{value}} tokens remaining today",unlimited:"Free quota: unlimited (gate disabled)",eligibilityLabel:"Free tier eligibility",eligible:"Free tier",ineligible:"Ineligible (same device used)"},nun={phase2:"Subscriptions are coming in Phase 2."},aun={empty:"No payments"},oun={empty:"No refunds"},sun={empty:"No credit buckets",note:"Credit buckets show current balance inventory. Grant and refund history appear in the Audit timeline; referral rewards in the Referrals section."},run={totalEarned:"Total earned",frozenEarned:"Frozen",refereeCount:"Referees",activeCount:"Active",role:"Role",counterparty:"Counterparty",empty:"No referral activity"},iun={empty:"No audit records"},lun={amount:"Amount",credit:"Credit",status:"Status",provider:"Provider",createdAt:"Created",type:"Type",originalTx:"Original tx",remaining:"Remaining",initial:"Initial",expiresAt:"Expires",event:"Event",action:"Action",severity:"Severity"},cun={ipLocationTitle:"IP et localisation",deviceBrowserTitle:"Ap
795pareil et navigateur",stripeTitle:"Stripe",signupIp:"IP d’inscription",signupCountry:"Pays d’inscription",lastLoginIp:"IP de dernière connexion",ipDifferent:"Diffère de l’IP d’inscription",sameIpAccounts_one:"{{count}} compte avec la même IP d’inscription",sameIpAccounts_other:"{{count}} comptes avec la même IP d’inscription",sameDeviceAccounts_one:"{{count}} compte sur le même appareil",sameDeviceAccounts_other:"{{count}} comptes sur le même appareil",deviceFingerprint:"Empreinte de l’appareil",freeTierEligible:"Éligibilité au niveau gratuit",firstDevice:"Premier sur l’appareil",notFirstDevice:"Pas le premier sur l’appareil — pas d’avantages gratuits",browser:"Navigateur",os:"OS",deviceType:"Type d’appareil",acceptLanguage:"Accept-Language",stripeCustomerId:"Stripe Customer ID",viewOnIpinfo:"Voir sur ipinfo.io"},dun={empty:"Aucun appel pour l’instant",viewAll:"Voir tous les logs →",colStatus:"Statut",colTime:"Heure",colModel:"Modèle",colProtocol:"Protocole",colDuration:"Durée",colCost:"Coût",colFreeDiscount:"Crédit gratuit"},uun={empty:"Aucune API key pour le moment",colName:"Nom",colKey:"Key",colStatus:"Statut",colPolicy:"Politique de débit",colLastUsed:"Dernière utilisation",colCreated:"Créée",colExpires:"Expiration",colSpend:"Dépenses",spendTitle:"Détail des dépenses",spend30d:"30 derniers jours",spendAllTime:"Cumul",spendRequests:"Requêtes"},mun="Copier",pun="Copié",fun={search:Hdn,searchPlaceholder:Vdn,title:Kdn,backToList:Gdn,noBlockPerm:Wdn,refund:Ydn,refunding:Qdn,refundConfirm:Xdn,refundInitiated:Zdn,nav:Jdn,freeTokens:eun,freeQuota:tun,subscription:nun,payments:aun,refunds:oun,rewards:sun,referrals:run,audit:iun,col:lun,network:cun,recentCalls:dun,apiKeys:uun,copy:mun,copied:pun},gun="Users",hun="Search users, grant credit, and suspend accounts.",yun="Email",vun="Search by email",bun="Account status",xun={active:"Compte actif ; connexion et appels au gateway autorisés",suspended:"Suspendu ; le gateway rejette toutes les requêtes (401)"},$un="Risk",wun={normal:"Éligible à tous les avantages gratuits",watchlisted:"Aucun token gratuit ni bonus d’inscription ; peut toujours recharger et appeler le gateway",blocked:"Le gateway rejette toutes les requêtes (401) ; bannissement complet"},kun="Users",Cun="No users found",Sun="Country",Aun="Last login",Tun="Action",Run="View",Pun="Deleted",_un="Set status for {{email}}",jun='Set {{email}} to "{{status}}"?',Nun="Grant credit",Dun="Add bonus credit to {{email}}. Recorded in the ledger.",Mun="Amount (USD)",Eun="e.g. 5",Iun="Reason (optional)",Oun="e.g. compensation for downtime",Lun="Type",Uun="Bonus credit",Bun="A gift. Does not count as a top-up.",Fun="Offline payment",zun="Money we actually received. Counts as a top-up: unlocks paid-only models and rate-limit tiers.",qun="Reference no.",Hun="e.g. bank slip 20260907-001",Vun="Record payment",Kun="Recording...",Gun="Cancel",Wun="Granting...",Yun="Grant",Qun="Grant ${{amount}} to {{email}}? This is a large amount.",Xun="No display name",Zun="Loading...",Jun="score {{score}}",emn="Email verified",tmn="Yes",nmn="No",amn="Signup",omn="Signup method",smn="Last login method",rmn="Signup bonus",imn="Onboarding",lmn="Locale / TZ",cmn="Markup ratio",dmn="Rate limit policy",umn="Rate limit policy updated.",mmn="Joined",pmn="Never",fmn="Balance",gmn="Wallet & spend",hmn="Total spent",ymn="Recharged",vmn="Bonus granted",bmn="Refunded",xmn="Requests",$mn="Tokens",wmn="Actions",kmn="Identity & risk",Cmn="Role",Smn="No permitted actions for your role.",Amn="Acquisition source",Tmn="Acquisition by source",Rmn="Direct / unknown",Pmn="Custom source…",_mn="Set",jmn="Auto-detected: {{source}}",Nmn="UTM",Dmn="Referred by",Mmn="Note",Emn="Ajouter une note pour identifier cet utilisateur",Imn="Enregistrer la note",Omn="Note enregistrée",Lmn="Aucune note",Umn="Filtres",Bmn="Location",Fmn="Preferred locale",zmn={title:gun,description:hun,email:yun,searchEmail:vun,status:bun,statusEffect:xun,risk:$un,riskEffect:wun,label:kun,empty:Cun,country:Sun,lastLogin:Aun,action:Tun,view:Run,deleted:Pun,setStatusAria:_un,setStatusConfirm:jun,grantCredit:Nun,grantDescription:Dun,amountUsd:Mun,amountPlaceholder:Eun,reason:Iun,reasonPlaceholder:Oun,grantKind:Lun,grantKindBonus:Uun,grantKindBonusHint:
795Bun,grantKindOffline:Fun,grantKindOfflineHint:zun,referenceNo:qun,referenceNoPlaceholder:Hun,recordPayment:Vun,recording:Kun,cancel:Gun,granting:Wun,grant:Yun,largeGrantConfirm:Qun,noDisplayName:Xun,loading:Zun,score:Jun,emailVerified:emn,yes:tmn,no:nmn,signup:amn,signupMethod:omn,lastLoginMethod:smn,signupBonus:rmn,onboarding:imn,localeTz:lmn,markupRatio:cmn,rateLimitPolicy:dmn,rateLimitPolicyChanged:umn,joined:mmn,never:pmn,walletBalance:fmn,walletSection:gmn,consumed:hmn,recharged:ymn,bonusGranted:vmn,refunded:bmn,requests:xmn,tokens:$mn,actionsSection:wmn,identitySection:kmn,role:Cmn,noPermittedActions:Smn,acquisitionSource:Amn,acquisitionTitle:Tmn,sourceDirect:Rmn,sourceCustomPlaceholder:Pmn,sourceSet:_mn,sourceCaptured:jmn,utm:Nmn,referrer:Dmn,note:Mmn,notePlaceholder:Emn,noteSave:Imn,noteSaved:Omn,noteEmpty:Lmn,filters:Umn,location:Bmn,preferredLocale:Fmn},qmn="Webhooks",Hmn="Stripe webhook events. Status filter, retry, payload inspection.",Vmn="Status",Kmn="Event type",Gmn="Received",Wmn="Event type",Ymn="Status",Qmn="Mode",Xmn="Attempts",Zmn="Retry",Jmn="Retry queued",epn="Event {{event}} reset to pending; next job tick will process.",tpn="Retry failed",npn="No webhook events yet.",apn="Stripe events will appear here once your endpoint is registered.",opn="Loading payload...",spn="Last error",rpn="Payload (JSON)",ipn={title:qmn,description:Hmn,statusFilter:Vmn,eventTypeFilter:Kmn,receivedAt:Gmn,eventType:Wmn,status:Ymn,mode:Qmn,attempts:Xmn,retry:Zmn,retrySubmittedTitle:Jmn,retrySubmittedBody:epn,retryFailedTitle:tpn,empty:npn,emptyHint:apn,detailLoading:opn,lastError:spn,payload:rpn},lpn="API Keys",cpn="Créez votre première key en 10 secondes",dpn="Échec de la copie",upn={label:"Modèles autorisés",allModels:"Tous les modèles",allHint:"Tous les modèles du catalogue sont autorisés.",noModels:"Aucun modèle disponible.",selected:"{{count}} sélectionnés",someHint:"{{count}} modèle(s) autorisé(s)."},mpn={label:"Tags",placeholder:"Ajoutez un tag puis appuyez sur Entrée",remove:"Retirer"},ppn="Créez des keys limitées pour la production, le staging et les workflows d’équipe.",fpn="Actualiser",gpn="Key par défaut",hpn="Nom de la key",ypn="Création...",vpn="Créer une key",bpn="Key complète, affichée une seule fois",xpn="Copier l’API key",$pn="Copié",wpn="Copier",kpn="Copiez-la et conservez-la maintenant. Une fois ce panneau fermé, la key complète ne sera plus visible.",Cpn="Je l’ai enregistrée",Spn="Échec du chargement des API keys",Apn="Réessayer",Tpn="Aucune API key pour le moment",Rpn="Créez votre première key pour commencer à envoyer des requêtes via OneHop.",Ppn={label:"API keys",tags:"Tags",name:"Nom",key:"Key",status:"Statut",created:"Créée",action:"Action",usage:"Usage",quota:"Quota",expires:"Expiration",lastUsed:"Dernière utilisation"},_pn="Révoquer",jpn="Révoquer {{name}} ? Cette action est irréversible.",Npn="Nommez la key. Les limites et l’expiration restent dans les paramètres avancés sauf si vous en avez besoin.",Dpn="Limite mensuelle de credit",Mpn="Expire le",Epn="Illimité",Ipn="Enregistrement...",Opn="Enregistrer",Lpn="Annuler",Upn={title:"Désactivées et révoquées",description:"Keys désactivées ou révoquées. Vous pouvez réactiver une key désactivée; les révoquées restent conservées pour l’historique."},Bpn={title:"Aucune key active",description:"Réactivez une key désactivée ci-dessous ou créez-en une nouvelle."},Fpn={import:"Importer dans CCS",client:"Client CC-Switch",codex:"Codex / OpenAI",claude:"Claude Code",pasteHint:"CC Switch a été ouvert avec un espace réservé. Collez-y votre API key enregistrée.",checking:"Vérification de la compatibilité…",blocked:{title:"{{client}} ne peut pas utiliser cette clé",body:"« {{keyName}} » autorise uniquement des modèles que {{client}} ne peut pas utiliser. L’importation entraînera des erreurs.",adjust:"Ajuster la portée des modèles",forceImport:"Importer quand même (ne fonctionnera pas)"},pin:{title:"Importer en tant que {{model}} pour {{client}}",body:"« {{keyName}} » n’inclut pas le modèle par défaut de {{client}}
795. Voici comment les requêtes {{client}} seront routées via ce fournisseur :",adjust:"Ajuster la portée des modèles",confirm:"Importer avec {{model}}"}},zpn={search:"Rechercher",searchPlaceholder:"Rechercher un nom ou un suffixe de key",status:"Statut",allStatus:"Tous les statuts",clear:"Effacer les filtres",empty:"Aucune key ne correspond à ces filtres",emptyDescription:"Effacez la recherche ou le filtre de statut pour voir toutes les keys.",mobileTitle:"Filtres"},qpn={active:"Active",inactive:"Désactivée",revoked:"Révoquée",expired:"Expirée",quota_exhausted:"Quota épuisé"},Hpn={today:"Aujourd’hui {{requests}} req · {{credit}}",days30:"30 j {{requests}} req · {{credit}}"},Vpn={use:"Détails de connexion",edit:"Modifier",enable:"Activer",disable:"Désactiver",delete:"Supprimer"},Kpn="Utiliser l’API key",Gpn="Utilisez la key enregistrée avec le gateway OneHop. La key complète n’est affichée qu’à la création.",Wpn={baseUrl:"Base URL",keyHint:"API key",authorization:"En-tête Authorization",env:"Variable d’environnement",curl:"cURL",revealing:"Déchiffrement de la key…",fullKeyUnavailable:"La key complète n’est affichée qu’à sa création. Utilisez la valeur enregistrée ou créez une nouvelle key si vous l’avez perdue.",protocolEndpoints:"Endpoints de protocole"},Ypn="Paramètres avancés",Qpn="Créer une API key",Xpn="Modifier l’API key",Zpn={label:"Accès aux modèles",all:"Tous les modèles",limited:"Limiter à des modèles précis",allHint:"Cette key peut appeler tous les modèles, y compris ceux ajoutés plus tard.",snapshotHint:"Uniquement les modèles choisis; les nouveaux modèles ne sont pas ajoutés automatiquement.",snapshotHintEdit:"Uniquement les modèles choisis; les nouveaux modèles ne sont pas ajoutés automatiquement. Passer à Tous les modèles remplace cette liste blanche.",searchPlaceholder:"Rechercher des modèles…",selectAllResults:"Sélectionner tous les résultats ({{count}})",selectedCount:"{{count}} / {{max}} sélectionnés",clear:"Effacer",hiddenSelected:"{{hidden}} sur {{total}} sélectionnés sont masqués par le filtre actuel",selectVendor:"Sélectionner tous les {{vendor}}, {{on}} sur {{total}} sélectionnés",emptyTitle:"Aucun modèle ne correspond",emptyDescription:"Essayez un autre type ou une autre recherche.",loadFailed:"Impossible de charger les modèles",loadFailedHint:"Réessayez ou revenez à Tous les modèles.",type:{all:"Tous",text:"Texte",image:"Image",video:"Vidéo",embedding:"Embedding"},pickAtLeastOne:"Sélectionnez au moins un modèle ou revenez à Tous les modèles.",limitReached:"Reached the {{max}}-model limit"},Jpn={title:"API key créée",subtitle:"{{name}} est prête — connectez-la maintenant.",onceWarning:"Affichée une seule fois. Vous pourrez la révéler à nouveau plus tard, mais copiez-la maintenant par sécurité.",connect:"Connecter",done:"Terminé"},efn="IP",tfn="Révoquée le {{date}}",nfn={title:lpn,emptyTitle:cpn,copyFailed:dpn,allowedModels:upn,tags:mpn,description:ppn,refresh:fpn,defaultName:gpn,keyName:hpn,creating:ypn,createKey:vpn,fullKeyTitle:bpn,copyApiKey:xpn,copied:$pn,copy:wpn,fullKeyDescription:kpn,savedIt:Cpn,loadFailed:Spn,retry:Apn,empty:Tpn,emptyDescription:Rpn,table:Ppn,revoke:_pn,revokeConfirm:jpn,formDescription:Npn,monthlyCreditLimit:Dpn,expiresAt:Mpn,unlimited:Epn,saving:Ipn,save:Opn,cancel:Lpn,parked:Upn,noActive:Bpn,ccswitch:Fpn,filters:zpn,status:qpn,usage:Hpn,actions:Vpn,useTitle:Kpn,useDescription:Gpn,use:Wpn,advancedSettings:Ypn,createTitle:Qpn,editTitle:Xpn,scope:Zpn,created:Jpn,lastUsedIp:efn,revokedAt:tfn},afn="Audit Logs",ofn="High-risk admin actions, by action and time.",sfn="Action",rfn="Clear",ifn={ops_user_update_status:"Statut utilisateur mis à jour",ops_users_allowlist_add:"Accès à l’inscription ajouté",ops_users_allowlist_update:"Accès à l’inscription mis à jour",ops_users_allowlist_invite:"Invitation d’accès à l’inscription envoyée",ops_users_allowlist_revoke:"Accès à l’inscription retiré",ops_users_allowlist_restore:"Accès à l’inscription restauré",ops_model_create:"Modèle créé",ops_model_update:"Modèle mis à jour",ops_model_update_status:"Statut du modèle mis à jour",sub2api_pool_create:"Pool de routage créé",sub2api_pool_test:"Pool de routage testé",sub2api_pool_rotate_secret:"Secret de routage renouvelé"},lfn="Audit logs",cfn="No audit entries",dfn="Time",ufn="Severity",mfn="Target",pfn={ai_model:"Model",sub2a
795pi_key_pool:"Routing key pool",sys_user:"User",wallet:"Wallet"},ffn="Type de cible",gfn="ID de requête",hfn={title:afn,description:ofn,action:sfn,clear:rfn,actions:ifn,label:lfn,empty:cfn,time:dfn,severity:ufn,target:mfn,targetTypes:pfn,targetType:ffn,requestId:gfn},yfn="Connectez-vous à OneHop",vfn="Saisissez votre code",bfn="Continuez avec Google ou email",xfn="Saisissez votre email pour recevoir un code",$fn="Saisissez le code à 6 chiffres envoyé à {{email}}",wfn="Continuer avec Google",kfn="Continuer avec email",Cfn="ou",Sfn="Email",Afn="Envoyer le code de vérification",Tfn="Envoi...",Rfn="Vérifier",Pfn="Vérification...",_fn="Renvoyer dans {{seconds}} s",jfn="Renvoyer le code",Nfn="En continuant, vous acceptez nos",Dfn="Conditions",Mfn="Confidentialité",Efn={signIn:"Connexion",signOutFailed:"Échec de la déconnexion",sendCodeFailed:"Échec de l’envoi du code",notAllowed:"Cet e-mail n’est pas encore autorisé. Contactez votre administrateur pour demander l’accès.",invalidCode:"Code invalide",codeIncorrect:"Code incorrect, réessayez",googleFailed:"Échec de la connexion Google",verifyHuman:"Veuillez terminer la vérification pour continuer",verifyUnavailable:"La vérification humaine est temporairement indisponible. Continuez avec Google ci-dessus ou réessayez plus tard."},Ifn={signInTitle:yfn,enterCodeTitle:vfn,methodIntro:bfn,emailStepIntro:xfn,codeIntro:$fn,continueGoogle:wfn,continueEmail:kfn,or:Cfn,emailLabel:Sfn,sendCode:Afn,sending:Tfn,verify:Rfn,verifying:Pfn,resendIn:_fn,resendCode:jfn,termsPrefix:Nfn,terms:Dfn,privacy:Mfn,errors:Efn},Ofn="Facturation",Lfn="Rechargez des Credits, utilisez des codes promo et consultez les mouvements du wallet.",Ufn={bonuses:"Bonus",topups:"Recharges",usage:"Consommation"},Bfn={available:"Crédité",availableHint:"Déjà inclus dans votre solde disponible",frozen:"En attente (gelé)",frozenHint:"Disponible dans ~{{days}} jours",frozenHintGeneric:"Disponible après la période de retenue",title:"Récompenses de parrainage",viewDetails:"Voir les détails des parrainages"},Ffn={noUsage:"Aucune consommation sur les 30 derniers jours",perDay:"{{amount}} moy./jour",daysLeft:"≈ {{days}} jours au rythme actuel"},zfn={amountUsd:"Montant (USD)",minAmountHint:"Recharge minimum de {{amount}}.",apply:"Appliquer",get:"Recevoir",onehopCredits:"OneHop credits",pay:"Payer",poweredByStripe:"Sécurisé par Stripe",poweredBy:"Sécurisé par {{provider}}",secureCheckout:"Paiement hébergé sécurisé",secureCheckoutShort:"Paiement sécurisé",taxExclusiveNotice:"Les taxes applicables sont calculées lors du paiement et ajoutées à ce montant.",presets:"Montants prédéfinis",promoCode:"Code promo",promoCodePlaceholder:"Saisir le code",serviceFee:"Frais de service",title:"Recharger",topupAmount:"Montant de recharge",totalDue:"Total à payer",payCta:"Payer {{amount}}",previewing:"Vérification…",discount:"Remise du code promo",couponBelowMin:"Le total après remise est trop bas — augmentez le montant ou essayez un autre code.",maintenanceTitle:"Paiements temporairement indisponibles",maintenanceDescription:"Les paiements sont temporairement indisponibles. Contactez-nous sur Telegram si vous devez payer.",contactTelegram:"Contactez-nous sur Telegram",alipay:"Alipay",wechatPay:"WeChat Pay",crypto:"Payer en crypto (USDC / USDT)",payOnStripe:"Le paiement s'effectue sur la page de paiement sécurisée de Stripe.",payOnProvider:"Le paiement s'effectue sur la page de paiement sécurisée de {{provider}}.",payOnHostedCheckout:"Le paiement s'effectue sur la page de paiement sécurisée hébergée.",amountPrecision:"{{provider}} accepte les montants en USD avec au maximum 2 décimales. Ajustez le montant ou le code promo.",couponBonus:"Bonus du code",couponBonusExpiry:"Le crédit bonus expire {{days}} jours après le paiement.",couponInvalid:"Ce code ne peut pas être appliqué — essayez un autre code.",couponErrors:{limitReached:"Vous avez déjà utilisé ce code le nombre maximal de fois.",invalid:"Ce code est invalide.",expired:"Ce code a expiré.",exhausted:"Ce code a été entièrement utilisé.",unavailable:"Ce code est en cours d'utilisation — réessayez dans un instant."},tierBonus:"Bonus promotionnel",tierBonusExpiry:"Le crédit bonus expire {{days}} jours après le paiement.",tierBonusRestricted:"Le crédit bonus est utilisable uniquement sur : {{models}}.",nextTierPercent:"Rechargez {{amount}} de plus pour obtenir {{percent}} % de crédit bonus.",nextTierBonus:"Rechargez {{amount}} de plus pour obtenir {{bonus}} de crédit bonus.",tierCapReached:"Vous avez déjà atteint le bonus maximal de cette promotion."},qfn="Ajouter des Credits",Hfn="Création...",Vfn="Credit disponible",Kfn="Recharger",Gfn="Paiement via Stripe",Wfn="Montant (USD)",Yfn="Montants de recharge prédéfinis",Qfn="Utiliser un code promo",Xfn="Code promo",Zfn="Utilisation...",Jfn="Utiliser",egn="Code promo utilisé, le solde se met à jour.",tgn="Redirection vers le checkout sécurisé...",ngn="Échec du chargement du résumé de facturation",agn="Échec de la recharge",ogn="Onglets d’activité de facturation",sgn="Transactions",rgn="Attributions de Credit",ign="Type de transaction",lgn="Source",cgn="Aucune transaction pour le moment",dgn="Recharges, débits et attributions apparaissent ici.",ugn="Entrées ledger",mgn="Heure",pgn="Type",fgn="Montant",ggn="Solde",hgn="Aucune attribution pour le moment",ygn="Bonus d’inscription, codes promo et attributions manuelles apparaissent ici.",vgn="Statut",bgn={successTitle:"Paiement reçu",polling:"Créditation de votre wallet en cours... environ 30 secondes.",delayed:"L’arrivée prend du temps. Actualisez dans un instant ou consultez vos reçus Stripe.",cancelledTitle:"Paiement annulé",cancelledBody:"Aucun débit n’a été effectué. Réessayez quand vous serez prêt.",failedTitle:"Échec du paiement",failedBody:"Votre paiement n’a pas pu être finalisé. Aucun crédit n’a été ajouté. Réessayez ou utilisez un autre moyen de paiement."},xgn={text:"Les Credits sont un solde de service prépayé, pas un dépôt bancaire. Les Credits consommés ne sont pas remboursables. Tous les prix sont en USD. Voir les",tosLink:"Conditions"},$gn="Reçus",wgn="Ouverture...",kgn="Impossible d’ouvrir le portail de facturation",Cgn={title:"Recharges récentes",subtitle:"90 derniers jours, remboursables sous 24 heures.",loading:"Chargement des recharges...",date:"Date",amount:"Montant",credits:"Credits",status:"Statut",refund:"Rembourser",alreadyRefunded:"Déjà remboursé",windowExpired:"Fenêtre de remboursement expirée (24 heures)",confirmTitle:"Confirmer le remboursement",confirmBody:"Le remboursement sera traité par Stripe sous 1-3 jours ouvrés. Des frais de plateforme ({{fee}}) s’appliquent aux remboursements initiés par l’utilisateur.",amountLabel:"Montant du remboursement (USD)",maxLabel:"Maximum ${{value}}",requestedLabel:"Remboursement demandé",platformFeeLabel:"Frais de plateforme ({{fee}})",cardReturnLabel:"Reversé sur votre carte",bonusForfeitureHint:"Les Credits promotionnels accordés avec cette recharge seront annulés au prorata.",cancel:"Annuler",confirm:"Émettre le remboursement",submitting:"Envoi en cours...",refundSubmittedTitle:"Remboursement envoyé",refundSubmittedBody:"Stripe reversera les fonds sur votre carte sous 1-3 jours ouvrés.",refundFailedTitle:"Échec du remboursement",balance:"Solde",confirmAmount:"Rembourser {{amount}}"},Sgn={title:"Alertes de solde",description:"Nous vous prévenons lorsque votre solde est bas.",emailLabel:"M’avertir par e-mail",webhookLabel:"Webhook",autorechargeLabel:"Recharge automatique",autorechargeUnsupported:"La recharge automatique n'est pas disponible avec le prestataire de paiement actif.",autorechargeAddCardHint:"ajoutez une carte pour maintenir votre solde",autorechargeTopUp:"Recharger de",autorechargeWhenBelow:"lorsque le solde passe sous",autorechargeThreshold:"Seuil de recharge automatique",autorechargeAmount:"Montant de recharge automatique",autorechargeDisabledFailures:"La recharge automatique a été désactivée après plusieurs échecs consécutifs. Mettez à jour votre carte et réactivez-la.",autorechargeIncomplete:"Définissez un montant de recharge et un seuil supérieur à $0.",test:"Tester",testing:"Test en cours…",testQueued:"Livraison de test en file d’attente — vérifiez votre endpoint",testFailed:"Échec de la mise en file de la livraison de test",signingSecret:"Secret de signature",secretOnSave:"Un secret de signature est généré à l’enregistrement.",rotate:"Renouveler",secretRotated:"Secret de signature renouvelé",rotateFailed:"Échec du renouvellement du secret",secretCopied:"Secret de signature copié",saved:"Réglages d’alerte enregistrés",saveFailed:"Échec de l’enregistrement des réglages d’alerte",loadFailed:"Impossible de charger les réglages d’alerte",thresholdRequired:"Définissez un seuil supérieur à $0 pour activer les alertes.",webhookUrlRequired:"Saisissez une URL https:// pour le webhook.",thresholdOrderBad:"Le seuil d’alerte doit être ≥ au seuil de recharge automatique.",card:"Carte",changeCard:"Modifier",removeCard:"Retirer",cardRemoved:"Carte retirée",cardRemoveFailed:"Échec du retrait de la carte",cardSetupFailed:"Impossible de démarrer la configuration de la carte",lowBalanceGroup:"Alertes de solde faible",thresholdLabel:"Seuil d’alerte"},Agn={title:"Historique des transactions",idSearch:"ID de transaction",amountRange:"Plage de montant (USD)",min:"Min.",max:"Max.",clear:"Effacer",retry:"Réessayer",empty:"Aucune transaction sur cette période",date:"Date",typeMethod:"Type / méthode",description:"Description",action:"Action",prevMonth:"Mois précédent",nextMonth:"Mois suivant",viewInvoices:"Voir les factures",emptyNew:"Aucune transaction pour l’instant",emptyNewDesc:"Après une recharge, vos recharges, bonus et remboursements apparaîtront ici.",topUpCta:"Recharger",emptyFiltered:"Aucune transaction ne correspond",emptyFilteredDesc:"Essayez d’effacer les filtres ou d’élargir la période.",clearFilters:"Effacer les filtres"},Tgn="Votre solde est faible et peut interrompre les requêtes. Rechargez ou activez la recharge automatique.",Rgn="Votre solde est faible et peut interrompre les requêtes. Rechargez pour continuer.",Pgn={creditPurchase:"Recharge de crédit",topupBonus:"Top-up bonus",signupBonus:"Signup bonus",referralClawback:"Referral cashback clawback (refund)",couponBonus:"Bonus du code",referralCashback:"Cashback de parrainage",referralInviteeCashback:"Bonus du filleul",redeemCode:"Code de réduction {{code}}",redeemCodeReversal:"Annulation du code",stripeRefund:"Remboursement Stripe",bonusReversal:"Reprise du bonus (remboursement)"},_gn={title:"Crédit dédié",subtitle:"Crédit bonus utilisable uniquement sur certains modèles — distinct de votre solde.",onlyModels:"Uniquement {{models}}",onlyModelsGeneric:"Modèles restreints",validUntil:"Valable jusqu'au {{date}}",noExpiry:"Sans expiration",useInChat:"Use in chat"},jgn={card:"Carte",alipay:"Alipay",wechatPay:"WeChat Pay"},Ngn={title:"Code de recharge",description:"Vous avez un code de recharge ? Saisissez-le pour créditer sa valeur faciale sur votre solde.",placeholder:"Par exemple : OHR-XXXXXXXX",redeem:"Utiliser",redeeming:"Validation…",success:"{{amount}} crédité(s) sur votre solde",successRestricted:"Redeemed {{amount}} — usable with {{models}} only",successValidity:"Valid until {{date}}.",errors:{invalid:"Ce code est invalide.",expired:"Ce code a expiré.",alreadyRedeemed:"Ce code a déjà été utilisé.",perUserLimit:"Vous avez atteint la limite d'utilisation de ce lot."}},Dgn={title:Ofn,description:Lfn,breakdown:Ufn,referralRewards:Bfn,burnRate:Ffn,topup:zfn,addCredits:qfn,creating:Hfn,availableCredit:Vfn,topUp:Kfn,poweredByStripe:Gfn,amountUsd:Wfn,presetAmounts:Yfn,redeemCoupon:Qfn,couponCode:Xfn,redeeming:Zfn,redeem:Jfn,couponRedeemed:egn,redirecting:tgn,summaryFailed:ngn,topupFailed:agn,tabsLabel:ogn,transactions:sgn,creditGrants:rgn,transactionType:ign,source:lgn,noTransactions:cgn,noTransactionsDescription:dgn,ledgerEntries:ugn,time:mgn,type:pgn,amount:fgn,balance:ggn,noGrants:hgn,noGrantsDescription:ygn,status:vgn,topupBanner:bgn,compliance:xgn,receipts:$gn,openingPortal:wgn,portalFailed:kgn,recentTopups:Cgn,alerts:Sgn,history:Agn,lowBalanceWarning:Tgn,lowBalanceWarningNoAutoTopup:Rgn,ledgerDesc:Pgn,earmarked:_gn,paymentMethod:jgn,redeemCard:Ngn},Mgn="Échec du chargement du graphique",Egn="Aucune donnée",Ign="Il n’y a encore rien à tracer.",Ogn={errorTitle:Mgn,emptyTitle:Egn,emptyDescription:Ign},Lgn={copy:"Copier",regenerate:"Régénérer",shareComingSoon:"Partager (bientôt)",download:"Télécharger",copyLink:"Copier le lien",newChat:"Nouveau chat",deleteChat:"Supprimer le chat",openConversationList:"Ouvrir la liste des conversations",openSettings:"Paramètres du chat",collapseSidebar:"Réduire la barre latérale",expandSidebar:"Déployer la barre latérale",cancel:"Annuler",apply:"Appliquer",newChatTooltip:"
795Créer un nouveau chat",copied:"Copié"},Ugn={placeholderReady:"Commencer une nouvelle conversation...",placeholderNoModel:"Choisissez d’abord un modèle ci-dessus",attachmentTooLarge:"Le fichier dépasse {{limit}} et ne peut pas être téléversé",attachmentUnsupported:"Type de fichier non pris en charge. Utilisez PNG, JPEG, WebP, GIF, MP4, WebM ou MOV.",unsupportedVision:"Ce modèle n'accepte pas les entrées image ou vidéo. Changez de modèle avant de déposer des fichiers.",send:"Envoyer",abort:"Arrêter",attachImage:"Ajouter une image",attachMedia:"Ajouter une image ou une vidéo",removeAttachment:"Retirer",shortcutSend:"envoyer",shortcutNewLine:"nouvelle ligne",shortcutAbort:"arrêter",frameFirst:"Première image",frameLast:"Dernière image",frameReference:"Référence",imageMode:"Génération d’image",videoMode:"Génération de vidéo",placeholderComingSoon:"This model is coming soon — pick another one above",reasoning:"Réflexion",reasoningOff:"Désactivé",reasoningAlways:"Toujours activé",placeholderTopupRequired:"Ce modèle est réservé aux comptes rechargés — rechargez pour l'utiliser ici"},Bgn={modelUnavailable:"Le modèle {{model}} n’est pas disponible pour le moment. Votre prompt est quand même conservé.",rateLimited:"Trop de requêtes simultanées. Réessayez dans un instant.",accountDisabled:"Ce compte est désactivé et ne peut pas continuer le chat.",attachmentsUploading:"Images en cours de téléversement. Patientez avant d'envoyer.",attachmentsFailed:"Échec du téléversement d'une image. Supprimez-la et réessayez avant d'envoyer."},Fgn={title:"Commencez à tester n’importe quel modèle ici.",body:"Discutez directement avec n’importe quel modèle. L’usage est facturé à votre wallet PAYG.",starters:{compareModels:"Comparer GPT-5.5 et Claude Opus sur la même tâche de code",analyzeImage:"Analyser un diagramme d’architecture et résumer les risques",draftPrompt:"Rédiger un system prompt pour un agent de support",generateImage:"Générer une image hero produit avec un style SaaS sobre"}},zgn={untitled:"Chat sans titre",deleteConfirm:'Supprimer "{{title}}" ?',emptyTitle:"Aucune conversation pour le moment",emptyBody:"Utilisez + Nouveau chat ci-dessus pour commencer.",listLabel:"Liste des conversations",groups:{today:"Aujourd’hui",yesterday:"Hier",earlier:"Plus tôt"},menu:{rename:"Renommer",delete:"Supprimer"},deleteTitle:"Supprimer la conversation ?"},qgn={paygWallet:"Wallet PAYG"},Hgn={chooseModel:"Choisir un modèle",searchPlaceholder:"Rechercher des modèles...",emptyTitle:"Aucun modèle trouvé",emptyBody:"Essayez un autre terme de recherche ou un autre onglet.",protocols:"{{count}} protocoles",context:"{{value}} ctx",tabs:{all:"Tous",text:"Texte",image:"Image",video:"Vidéo"},maxOut:"sortie {{value}}",unavailable:"Temporairement indisponible",requiresTopup:"Rechargez pour débloquer"},Vgn={title:"Paramètres du chat",protocol:"Protocole",unlimited:"Illimité",fields:{memory_limit:{label:"Mémoire du chat"},temperature:{label:"Temperature"},top_p:{label:"Top P"},max_tokens:{label:"Max Tokens",placeholder:"128000"},service_tier:{label:"Niveau de service",options:{standard:"Standard",priority:"Prioritaire",flex:"Flexible"}},thinking_budget:{label:"Thinking Budget (tokens)",placeholder:"p. ex. 2000"},stop_sequences:{label:"Stop Sequences",placeholder:"Séparées par des virgules, ex. END, STOP",itemLabel:"Stop"},system_prompt:{label:"System Prompt",placeholder:"Saisissez un system prompt..."},prompt_cache_mode:{label:"Prompt Cache",options:{implicit:"Implicite",explicit:"Explicite"}},image_size:{label:"Résolution de l’image"},image_resolution:{label:"Résolution"},image_quality:{label:"Qualité de l’image",options:{Auto:"Auto",auto:"Auto",low:"Basse",medium:"Moyenne",high:"Haute"}},video_ratio:{label:"Format d’image"},video_resolution:{label:"Résolution vidéo"},video_duration_seconds:{label:"Durée"},tools:{label:"Tools (JSON)",placeholder:'[{ "type": "function", "function": { ... } }]'},image_count:{label:"Nombre d’images"},image_aspect_ratio:{label:"Format d’image"},reasoning_effort:{label:"Intensité de raisonnement",options:{none:"Désactivé",minimal:"Minimale",low:"Faible",medium:"Moyenne",high:"Élevée",xhigh:"Très élevée",max:"Maximale"}},reasoning_pro:{label:"Mode Pro"},reasoning_context:{label:"Contexte de raisonnement",options:{auto:"Auto",current_turn:"Tour en cours",all_turns:"Tous les tours"}},reasoning_enabled:{label:"Réflexion"},reasoning_always:{label:"Réflexion",value:"Toujours activé"}}},Kgn={estimating:"estimation...",settling:"règlement...",input:"entrée",output:"sortie",milliseconds:"ms",realCost:"Coût réel",latency:"Latence",logDetail:"Détail du log"},Ggn={copied:"Lien de l’image copié",expired:"Le lien de l’image a expiré. Copiez le lien pour la rouvrir ou régénérez-la.",attachment:"[image jointe]"},Wgn={message:"Ce chat est facturé à votre wallet PAYG",balance:"Solde",billingLink:"Facturation",dismiss:"Fermer"},Ygn={badge:"Earmarked {{amount}}",bannerTitle:"Earmarked credit available",bannerBody:"You have {{amount}} of dedicated credit for this model — it's used first."},Qgn={trigger:"Copier comme code",copied:"Copié comme {{format}}",failed:"Échec de la copie",failedDescription:"L’autorisation du presse-papiers peut être bloquée par le navigateur."},Xgn={interrupted:"[Interrompu]",sending:"envoi"},Zgn={title:"Processus de raisonnement",duration:"A raisonné pendant {{seconds}}s"},Jgn={title:"La génération vidéo arrive bientôt",body:"Ce modèle est listé pour découverte, mais l’envoi vidéo n’est pas encore activé.",switchToText:"Passer à un modèle texte"},ehn={imageGenerating:"Génération de l’image",videoGenerating:"Génération de la vidéo",stage:{queued:"En file d’attente",routing:"Routage",generating:"Génération",storing:"Stockage",settling:"Règlement"}},thn={INSUFFICIENT_CREDITS:"Solde insuffisant",RATE_LIMITED:"Trop de requêtes",rate_limit_error:"Trop de requêtes",MODEL_NO_VISION:"Ce modèle n’accepte pas les images en entrée",CONTENT_REFUSED:"Le modèle a refusé cette requête",EMPTY_RESPONSE:"Le modèle a renvoyé une réponse vide",upstream_error:"Erreur du service en amont",overloaded_error:"Le service en amont est surchargé",upstream_invalid_json:"Réponse du service en amont mal formée",stream_read_error:"Flux de réponse interrompu",invalid_api_key:"Échec d’authentification auprès du service en amont",model_unavailable:"Modèle temporairement indisponible",no_image:"Aucune image n’a été générée",no_body:"Aucune réponse du service en amont",http_error:"Échec de la requête",session_create_failed:"Échec de la création de la session"},nhn={title:"Rechargez pour débloquer ce modèle",body:"Il est réservé aux comptes ayant rechargé. N'importe quel montant le débloque aussitôt, et le solde reste facturé à l'usage.",cta:"Recharger"},ahn={actions:Lgn,composer:Ugn,errors:Bgn,empty:Fgn,sidebar:zgn,header:qgn,modelSelector:Hgn,settings:Vgn,metrics:Kgn,image:Ggn,payg:Wgn,earmark:Ygn,copyAsCode:Qgn,status:Xgn,thinking:Zgn,video:Jgn,media:ehn,errorCodes:thn,topupLock:nhn},ohn="Chargement...",shn="Compte",rhn="Langue",ihn="Se connecter",lhn="Se déconnecter",chn="Déconnexion...",dhn="Enregistrer",uhn="Enregistrement...",mhn="Enregistré.",phn="Retour",fhn="Réessayer",ghn="5 % de remise sur les frais de service lors de la recharge.",hhn="Enregistrer",yhn="Annuler",vhn="Effacer",bhn="Réinitialiser",xhn="Copié",$hn="Échec de la copie",whn="Fermer",khn="Total",Chn={timestamp:"Horodatage",local:"Heure locale",relative:"Relatif"},Shn="Copier",Ahn={title:"Ouvrir dans votre navigateur",description:"Vous consultez cette page dans le <b>navigateur intégré d'une application</b>, où <b>la connexion Google et la vérification humaine ne fonctionnent pas</b>. Ouvrez-la dans le navigateur de votre système pour continuer.",hintWechat:"Appuyez sur le menu ··· en haut à droite et 
795choisissez « Ouvrir dans le navigateur ».",hintGeneric:"Utilisez le menu en haut à droite et choisissez « Ouvrir dans le navigateur / Safari ».",copyLink:"Copier le lien",continueAnyway:"Continuer quand même"},Thn="Tous",Rhn="Actif",Phn="Facultatif",_hn="Retirer",jhn={loading:ohn,account:shn,language:rhn,signIn:ihn,signOut:lhn,signingOut:chn,saveChanges:dhn,saving:uhn,saved:mhn,back:phn,retry:fhn,topUpPromo:ghn,save:hhn,cancel:yhn,clearAll:vhn,reset:bhn,copied:xhn,copyFailed:$hn,dismiss:whn,total:khn,time:Chn,copy:Shn,inAppBrowser:Ahn,all:Thn,active:Rhn,optional:Phn,remove:_hn},Nhn="Tableau de bord",Dhn="Surveillez les credits, l’usage et la santé du gateway depuis une seule console.",Mhn="Créer une API key",Ehn={creditBalance:"Solde de credit",requestsToday:"Requêtes aujourd’hui",activeApiKeys:"API keys actives"},Ihn={title:"Tendance d’usage",description:"Requêtes et credit facturé sur les 14 derniers jours.",viewUsage:"Voir l’usage",loading:"Chargement de la tendance",empty:"Aucun usage pour le moment",emptyDescription:"L’usage apparaîtra ici dès que des requêtes arriveront."},Ohn={title:"Activité de credit",description:"Credit facturé par jour sur les 90 derniers jours.",total:"Total sur 90 jours",loading:"Chargement de l’activité",activeDays:"{{count}} jours actifs sur les {{days}} derniers jours",less:"Moins",more:"Plus"},Lhn={title:"Aperçu de l’usage",description:"Une vue compacte de l’intensité des dépenses, du volume de tokens et du modèle le plus utilisé.",activeDays:"Jours actifs",ofDays:"sur {{days}} jours",avgDailyCredit:"Credit quotidien moyen",nonZeroDays:"sur les jours actifs",peakDay:"Jour de pointe",noPeak:"Aucun usage pour le moment",tokens:"Tokens",topModel:"Modèle principal",creditShare:"Part du credit facturé"},Uhn={title:"Santé rapide",requests7d:"Requêtes sur 7 jours",creditToday:"Credit dépensé aujourd’hui",credit7d:"Credit dépensé sur 7 jours"},Bhn={title:"Requêtes récentes",description:"Derniers appels gateway pour vos keys.",viewRecords:"Voir les enregistrements",table:{label:"Requêtes récentes",model:"Modèle",status:"Statut",tokens:"Tokens",credit:"Credit",time:"Heure",apiKey:"API key"},empty:"Aucune requête pour le moment",emptyDescription:"Créez une API key, envoyez une requête, et les appels récents apparaîtront ici."},Fhn={title:"Envoyer votre première requête",description:"Compatible OpenAI. Créez une key, définissez {{env}}, puis appelez le gateway."},zhn={credit:"Credit",requests:"Requêtes"},qhn={title:Nhn,description:Dhn,createApiKey:Mhn,cards:Ehn,usageTrend:Ihn,activity:Ohn,usageMix:Lhn,quickHealth:Uhn,recent:Bhn,firstRequest:Fhn,tooltip:zhn},Hhn="Sélectionner toutes les lignes",Vhn="Sélectionner la ligne {{row}}",Khn="Échec du chargement",Ghn="Aucune donnée",Whn="Aucun enregistrement à afficher.",Yhn="Plus de détails",Qhn="{{count}} détails supplémentaires",Xhn="Ouvrir les détails",Zhn={selectAllRows:Hhn,selectRow:Vhn,errorTitle:Khn,emptyTitle:Ghn,emptyDescription:Whn,moreDetails:Yhn,moreDetailsWithCount:Qhn,openRow:Xhn},Jhn="Dernière heure",eyn="Aujourd’hui",tyn="Hier",nyn="7 derniers jours",ayn="30 derniers jours",oyn="Ce mois-ci",syn="Par mois",ryn="Personnalisé",iyn="Toute la période",lyn="Sélectionner une date",cyn="Annuler",dyn="Appliquer",uyn="La date de début doit précéder la date de fin.",myn="Préréglages de période",pyn="Mois précédent",fyn="Mois suivant",gyn={last1h:Jhn,today:eyn,yesterday:tyn,last7d:nyn,last30d:ayn,thisMonth:oyn,byMonth:syn,custom:ryn,all:iyn,selectDate:lyn,cancel:cyn,apply:dyn,reversedError:uyn,presetsAriaLabel:myn,previousMonth:pyn,nextMonth:fyn},hyn="Compte indisponible",yyn="Initialisation du compte",vyn={title:"Compte suspendu",description:"Ce compte peut encore se connecter, mais l’accès à la console et les requêtes gateway sont suspendus.",detail:"Si cela vous semble être une erreur, contactez support depuis l’email de ce compte."},byn={accountUnavailable:hyn,accountInitializing:yyn,accountRestricted:vyn},xyn="Tokens gratuits",$yn="Quota quotidien de tokens gratuits pour certains modèles — il se renouvelle automatiquement. Aucun débit sur votre portefeuille.",wyn="Impossible de charger votre quota de tokens gratuits.",kyn="Tous les modèles",Cyn="La campagne se termine le {{date}}",Syn={daily:"Quotidien",weekly:"Hebdomadaire"},Ayn={daily:"Renouvelé chaque jour",weekly:"Renouvelé chaque semaine",localTime:"votre heure locale {{time}}",countdown:"prochain renouvellement dans {{duration}}",refreshingSoon:"renouvellement imminent"},Tyn={title:"Aucune campagne de tokens gratuits en cours",description:"Lorsqu'une campagne de tokens gratuits est active, votre quota quotidien s'affiche ici."},Ryn={title:"L'attribution de tokens gratuits est suspendue sur votre compte",body:"Ce compte semble faire partie d'un schéma d'inscriptions en masse ; l'attribution gratuite est donc suspendue pour le moment. S'il s'agit d'une erreur, contactez-nous à"},Pyn="tokens",_yn="Il reste {{value}} tokens aujourd'hui",jyn={label:"M'avertir par e-mail à l'épuisement",hint:"Recevez un e-mail lorsque vos tokens gratuits du jour sont épuisés."},Nyn={crg_freetoken_daily_cn5:"Modèles chinois · tokens gratuits quotidiens"},Dyn={title:xyn,description:$yn,loadFailed:wyn,allModels:kyn,campaignEnds:Cyn,cadence:Syn,refresh:Ayn,empty:Tyn,paused:Ryn,tokensUnit:Pyn,remainingToday:_yn,emailToggle:jyn,campaigns:Nyn}
795,Myn="Journaux",Eyn="Inspectez le coût, la latence, les tokens, le statut et les signaux de routing par requête.",Iyn={copiedCurl:"curl copié",copiedId:"ID de requête copié",copyCurl:"Copier en curl",copyFailed:"Échec de la copie",copyId:"Copier l’ID de requête",menu:"Actions de ligne",openTab:"Ouvrir dans un nouvel onglet"},Oyn={prompt:"Prompt",ratio:"Taux de hit",read:"Lecture cache",title:"Taux de cache hit"},Lyn={confirm:"Annuler le job",failed:"Échec de l’annulation du job",keep:"Conserver",message:"Ce job est encore en file d’attente. L’annuler empêche son traitement ; aucun frais ne sera appliqué.",success:"Job annulé",title:"Annuler le job ?",pending:"Annulation..."},Uyn={cacheHit:"Cache touché",cost:"Coût",ip:"IP",latency:"Latence",model:"Modèle",source:"Source",status:"Statut",stream:"Streaming",time:"Heure",tokens:"Tokens",tps:"Throughput"},Byn={trigger:"Réglages des colonnes"},Fyn={body:"Envoyez une requête via OneHop et elle apparaîtra ici.",title:"Aucun log sur cette période"},zyn={all:"Tout",apiKey:"API key",cost:"Coût (USD)",desktopDateRangeAria:"Sélectionner la plage de dates sur ordinateur",finishReason:"Raison de fin",latency:"Latence (s)",max:"Max.",min:"Min.",mobileDateRangeAria:"Sélectionner la plage de dates sur mobile",model:"Modèle",modelsSelected:"{{count}} sélectionnés",more:"Plus de filtres",refresh:"Actualiser",request:"Rechercher par ID de requête",requestIdLabel:"ID de requête",status:"Statut",stream:"Streaming",time:"Heure",type:"Type",mobileTitle:"Filtres"},qyn={requests:"requêtes sur cette page",times:"heures affichées en"},Hyn={rowsPer:"Lignes"},Vyn={all:"Toute la période",custom:"Personnalisée",last1h:"Dernière heure",last30d:"30 derniers jours",last7d:"7 derniers jours",thisMonth:"Ce mois-ci",today:"Aujourd’hui",yesterday:"Hier"},Kyn={title:"Client",unknown:"Aucun user-agent signalé",unknownShort:"Inconnu"},Gyn={output:"Tokens de sortie",rate:"Débit",title:"Throughput",window:"Fenêtre de génération"},Wyn={title:"Requête",openDetail:"Ouvrir le détail de la requête",copy:"Copier l’ID",copied:"Copié",copyFailed:"Échec de la copie",close:"Fermer",loading:"Chargement…",response:"Réponse",sections:{request:"Requête",routing:"Routage",tokens:"Tokens",cost:"Décomposition du coût",performance:"Performance",error:"Erreur",outcome:"Résultat",multimodal:"Multimodalité"},fields:{requestId:"ID de requête",time:"Heure",apiKey:"API key",userAgent:"User-Agent",billingMode:"Mode de facturation",onehopModel:"Modèle OneHop",endpoint:"Endpoint",firstToken:"Premier token",total:"Durée totale",throughput:"Throughput",stream:"Streaming",clientIp:"IP client",finishReason:"Raison de fin",mediaType:"Type de média",imageCount:"Images",imageSize:"Taille",errorCode:"Code erreur",errorMessage:"Message d’erreur",requestedModel:"Modèle demandé"},billingMode:{token:"Par token",per_request:"Par requête",image:"Par image"},timeline:{heading:"Cycle de vie",received:"Requête reçue",routed:"Routée",failed:"Échouée",generated:"Générée",metered:"Mesurée",billed:"Facturée"},downloadMedia:"Télécharger"},Yyn={success:"réussi",completed:"terminé",failed:"échoué",pending:"en attente",repairing:"réparation",queued:"en file",running:"en cours",cancelled:"annulé",expired:"expiré"},Qyn={chat:"Chat",image:"Image",video:"Vidéo"},Xyn={stop:"Stop",length:"Limite de longueur",tool_calls:"Appels d’outils",content_filter:"Filtre de contenu",error:"Erreur"},Zyn={true:"Streaming",false:"Sans streaming"},Jyn={title:"Décomposition du coût"},evn={title:"Décomposition des tokens",prompt:"Entrée",completion:"Sortie",imageOutput:"Tokens de sortie d’image",cacheRead:"Lecture cache",cacheWrite:"Écriture cache",cacheWrite5m:"Écriture cache 5m",cacheWrite1h:"Écriture cache 1h",total:"Total"},tvn={timestamp:"Horodatage",local:"Heure locale",relative:"Relatif"},nvn={inputCost:"Coût d’entrée",outputCost:"Coût de sortie",cacheReadCost:"Coût de lecture cache",cacheWriteCost:"Coût d’écriture cache",inputPrice:"Prix d’entrée",outputPrice:"Prix de sortie",total:"Total",officialPrice
795:"Prix officiel",saved:"Économie",factor:{textInput:"Entrée texte",textOutput:"Sortie texte",imageInput:"Entrée image",imageOutput:"Sortie image",perCallImage:"Par image",videoPerSecond:"Vidéo",videoPerCall:"Vidéo",cacheRead:"Lecture cache",cacheWrite:"Écriture cache",cacheWrite5m:"Écriture cache (5m)",cacheWrite1h:"Écriture cache (1h)"},unit:{per1mTokens:"/ 1M tokens",perImage:"/ image",perSecond:"/ s",perCall:"/ appel"},promoBasis:"Avant promo",promoSaved:"Économies promo",freeCovered:"Allocation gratuite ({{tokens}} tokens)",freeCoveredNoCount:"Allocation gratuite"},avn={noPreview:"Aucun aperçu disponible",video:"Vidéo"},ovn={free:"Gratuit"},svn={title:Myn,description:Eyn,actions:Iyn,cacheHit:Oyn,cancelJob:Lyn,col:Uyn,columns:Byn,empty:Fyn,filter:zyn,meta:qyn,pager:Hyn,range:Vyn,source:Kyn,tps:Gyn,drawer:Wyn,status:Yyn,type:Qyn,finishReason:Xyn,stream:Zyn,costBreakdown:Jyn,tokensBreakdown:evn,time:tvn,userCost:nvn,export:{label:"Exporter en CSV",exporting:"Exportation…",done:"{{n}} lignes exportées.",truncated:"Les {{n}} premières lignes ont été exportées. Réduisez la période pour exporter le reste.",failed:"Échec de l'exportation. Veuillez réessayer."},media:avn,cost:ovn},rvn="Modèles",ivn="Parcourez tous les modèles disponibles, leur fenêtre de contexte, leurs prix entrée/sortie et leurs capacités, puis ajoutez vos favoris.",lvn={all:"Tous",favorites:"Mes favoris",benefit:"Avantage",hot:"Populaire",free:"Free"},cvn={capability:"Type",allCapabilities:"Tous les types",capability_text:"Texte",capability_image:"Image",capability_audio:"Audio",capability_video:"Vidéo",provider:"Fournisseur",allProviders:"Tous les fournisseurs",protocol:"Protocole",allProtocols:"Tous les protocoles",sort:"Trier",search:"Rechercher",searchPlaceholder:"Modèle / fournisseur",allContexts:"Toute longueur",context:"Contexte",mobileTitle:"Filtres"},dvn="En vedette",uvn="Plus récents",mvn="Top de la semaine",pvn="Nom (A-Z)",fvn="Prix croissant",gvn="Prix décroissant",hvn="Longueur de contexte",yvn="Latence",vvn="Débit",bvn="OpenAI Chat",xvn="OpenAI Responses",$vn="Anthropic",wvn="Vertex AI",kvn="OpenAI Images",Cvn="OpenAI Video",Svn={label:"Modèles",model:"Modèle",provider:"Fournisseur",capabilities:"Capacités",context:"Contexte",price:"Prix",discount:"Remise",action:"Action",tryIt:"Essayer",type:"Type",maxOutput:"Sortie max.",copyId:"Copier l’ID du modèle",copied:"Copié",usage:"Utilisation",stability:"Stabilité",protocols:"Protocoles",openDetail:"Open model detail"},Avn="Populaire",Tvn="Avantage",Rvn={add:"Ajouter aux favoris",remove:"Retirer des favoris"},Pvn={favorites:"Aucun favori pour l’instant",noMatch:"Aucun modèle correspondant"},_vn="Texte",jvn="Image",Nvn="Fichier",Dvn="Vidéo",Mvn="Audio",Evn="Embeddings",Ivn="Vision",Ovn="Appels d’outils",Lvn="Mode JSON",Uvn="Génération d’images",Bvn="Édition d’images",Fvn="Texte",zvn="Image",qvn="Vidéo",Hvn="Audio",Vvn="Embedding",Kvn="Officiel",Gvn="Kiro",Wvn="dès",Yvn="/ appel",Qvn="/ s",Xvn="/ 1M",Zvn="Rapide",Jvn="Free",ebn="Coming Soon",tbn="Free",nbn={ariaLabel:"Devise des prix",usd:"USD",rmb:"yuan (¥)",settlement:"Prix affichés en yuans à un taux fixe de {{rate}}, à titre indicatif ; votre portefeuille est toujours débité en USD selon l'usage réel."},abn="Recharge requise",obn={title:rvn,description:ivn,tabs:lvn,filters:cvn,sort_featured:dvn,sort_newest:uvn,sort_top_weekly:mvn,sort_name:pvn,sort_price_asc:fvn,sort_price_desc:gvn,sort_context:hvn,sort_latency:yvn,sort_throughput:vvn,protocol_openai_chat:bvn,protocol_openai_responses:xvn,protocol_anthropic_messages:$vn,protocol_google_vertex_ai:wvn,protocol_openai_images:kvn,protocol_openai_sora:Cvn,table:Svn,badge_hot:Avn,badge_benefit:Tvn,favorite:Rvn,empty:Pvn,modality_text:_vn,modality_image:jvn,modality_file:Nvn,modality_video:Dvn,modality_audio:Mvn,modality_embeddings:Evn,capability_vision:Ivn,capability_tool_calling:Ovn,capability_json_mode:Lvn,capability_image_generation:Uvn,capability_image_edit:Bvn,type_text:Fvn,type_image:zvn,type_video:qvn,type_audio:Hvn,type_embedding:Vvn,provider_official:Kvn,provider_kiro:Gvn,price_from:Wvn,price_perCall:Yvn,price_perSec:Qvn,price_per1m:Xvn,price_fast:Zvn,badge_free:Jvn,badge_unavailable:ebn,price_free:tbn,currency:nbn,badge_requiresTopup:abn},sbn={main:"Navigation principale",utility:"Navigation utilitaire",console:"Navigation de la console",openNavigation:"Ouvrir la navigation",collapse:"Réduire la barre latérale",expand:"Développer la barre latérale"},rbn={platform:"Console",chat:"Chat",models:"Modèles",logs:"Journaux",jobs:"Tâches",apiKeys:"API keys",usage:"Utilisation",billing:"Facturation",freeTokens:"Tokens gratuits",referrals:"Parrainage",settings:"Paramètres",admin:"Admin",balance:"Solde",helpSupport:"Aide et support",announcements:"Annonces",announcementsTitle:"Annonces",announcementsEmpty:"Aucune annonce pour l’instant. Revenez bientôt.",announcementsTicketUnread:"{{count}} ticket(s) avec de nouvelles réponses",support:"Assistance",tasks:"Missions",tagNew:"NOUVEAU"},ibn={staff:"Équipe"},lbn={dashboard:"Tableau de bord",users:"Utilisateurs",billing:"Facturation plateforme",usage:"Utilisation plateforme",rateLimits:"Rate limits",access:"Accès",staff:"Admins",growth:"Croissance",models:"Modèles",announcements:"Annonces",upstream:"Upstream",auditLogs:"Journaux d’audit",webhooks:"Webhooks",supp
795ort:"Support",campaigns:"Campaigns",domainRules:"Email domains"},cbn={title:"Notifications",markAllRead:"Mark all read",loading:"Loading…",emptyTitle:"You're all caught up",emptyBody:"New notifications will show up here."},dbn={aria:sbn,public:{models:"Modèles",pricing:"Tarifs",docs:"Docs",blog:"Blog",changelog:"Notes de version"},console:rbn,adminGroups:ibn,admin:lbn,notifications:cbn},ubn={back:"Retour",done:"Terminé",next:"Suivant",stepOf:"{{current}} / {{total}}"},mbn={balance:{body:"Rechargez au fil de l’usage. Le solde non consommé est remboursable à tout moment.",title:"Votre solde"},keys:{body:"Créez une key ici, puis pointez n’importe quel outil vers OneHop.",title:"Créez votre première API key"},models:{body:"Voyez sur une seule page tous les modèles appelables et le prix de chacun.",cta:"Ouvrir les modèles",title:"Parcourir les modèles"}},pbn={body:"Un URL pour tous les modèles. En 30 secondes, on vous montre les trois points clés.",skip:"Ignorer",start:"Commencer",title:"Bienvenue sur OneHop"},fbn={nav:ubn,steps:mbn,welcome:pbn},gbn="Failed to load",hbn="Nothing here yet.",ybn="Plus de détails",vbn={failedLoad:gbn,emptyDescription:hbn,moreDetails:ybn},bbn="Tous",xbn="Succès",$bn="En attente",wbn="Réparation",kbn="Échec",Cbn="Remboursé",Sbn="Actif",Abn="Désactivé",Tbn="Épuisé",Rbn="Réservé",Pb
795n="Utilisé",_bn="Suspendu",jbn="Supprimé",Nbn="Normal",Dbn="Sous surveillance",Mbn="Bloqué",Ebn="Accordé",Ibn="Annulé",Obn="Expiré",Lbn="Refusé",Ubn="Brouillon",Bbn="Publié",Fbn="Déprécié",zbn="Archivé",qbn="Masqué",Hbn="Créé",Vbn="Checkout ouvert",Kbn="Payé",Gbn="Annulé",Wbn="OpenAI Chat",Ybn="OpenAI Responses",Qbn="Anthropic Messages",Xbn="Google Vertex AI",Zbn="OpenAI Images",Jbn="Frais d’usage",exn="Bonus d’inscription",txn="Bonus promo",nxn="Bonus de parrainage",axn="Bonus de compensation",oxn="Bonus de recharge",sxn="Ajustement manuel",rxn="Achat de credit",ixn="Paiement",lxn="Bonus d’inscription",cxn="Coupon",dxn="Crédit admin",uxn="Usage API",mxn="Bonus d’inscription",pxn="Crédit manuel",fxn="Sync",gxn="Streaming",hxn="Facturation token",yxn="Facturation requête",vxn="Facturation image",bxn="Reasoning faible",xxn="Reasoning moyen",$xn="Reasoning élevé",wxn="Sans objet",kxn="Inconnu",Cxn="Gelé",Sxn="Libéré",Axn="Annulé",Txn="Partiellement annulé",Rxn="Ignoré",Pxn={all:bbn,success:xbn,pending:$bn,repairing:wbn,failed:kbn,refunded:Cbn,active:Sbn,disabled:Abn,exhausted:Tbn,reserved:Rbn,redeemed:Pbn,suspended:_bn,deleted:jbn,normal:Nbn,watchlisted:Dbn,blocked:Mbn,granted:Ebn,reversed:Ibn,expired:Obn,denied:Lbn,draft:Ubn,published:Bbn,deprecated:Fbn,archived:zbn,public:"Public",hidden:qbn,created:Hbn,checkout_opened:Vbn,paid:Kbn,canceled:Gbn,openai_chat:Wbn,openai_responses:Ybn,anthropic_messages:Qbn,google_vertex_ai:Xbn,openai_images:Zbn,usage_charge:Jbn,bonus_signup_grant:exn,bonus_promo_grant:txn,bonus_referral_grant:nxn,bonus_compensation_grant:axn,bonus_topup_grant:oxn,manual_adjustment:sxn,credit_purchase:rxn,payment:ixn,signup:lxn,coupon:cxn,admin:dxn,api:uxn,signup_bonus:mxn,manual:pxn,sync:fxn,stream:gxn,token:hxn,request:yxn,image:vxn,low:bxn,medium:xxn,high:$xn,not_applicable:wxn,unknown:kxn,frozen:Cxn,released:Sxn,cancelled:Axn,partially_reversed:Txn,skipped:Rxn},_xn="{{count}} par page",jxn="{{count}} au total",Nxn={perPage:_xn,total:jxn},Dxn="Inviter et gagner",Mxn="Partagez votre lien personnalisé. Lorsqu’un utilisateur invité recharge son compte, les gains de chacun sont consignés en toute clarté.",Exn="Impossible de charger les données de parrainage",Ixn="Votre lien d’invitation",Oxn="Partager",Lxn="Invitation copiée. Collez-la dans WeChat pour partager.",Uxn="Copier",Bxn="Copié",Fxn="WeChat",zxn="X",qxn="Telegram",Hxn="Reddit",Vxn="LinkedIn",Kxn="WhatsApp",Gxn="E-mail",Wxn="Facebook",Yxn={default:{title:"Appelez tous les modèles AI avec une seule API OneHop",body:"Inscrivez-vous avec mon lien d’invitation : rechargez dans les {{firstWindowDays}} jours et nous recevons chacun {{percent}}% de remise."},x:{title:"Une API pour tous les modèles AI 🤖",body:"Rechargez dans les {{firstWindowDays}} jours avec mon lien et nous récupérons chacun {{percent}}%. 🚀"},telegram:{title:"Développez avec tous les modèles AI via OneHop",body:"Utilisez mon lien d’invitation : une première recharge dans les {{firstWindowDays}} jours nous rapporte à tous les deux {{percent}}% de crédit de parrainage."},whatsapp:{title:"Tous les modèles AI avec OneHop",body:"Rejoignez OneHop avec mon lien d’invitation. Rechargez dans les {{firstWindowDays}} jours et nous recevons tous les deux {{percent}}% de remise."},reddit:{title:"OneHop — une API pour tous les modèles AI. Mon invitation nous donne à tous les deux {{percent}}% sur votre première recharge",body:"Rechargez dans les {{firstWindowDays}} jours et nous recevons tous les deux {{percent}}% de crédit de parrainage."},email:{title:"Invitation à OneHop — tous les modèles AI via une seule API",body:`Bonjour,
796
797J’utilise OneHop pour appeler tous les grands modèles AI via une seule API. Inscrivez-vous avec mon lien d’invitation : après votre première recharge, nous recevrons tous les deux du crédit de parrainage.
798
799Paliers de récompense : {{tiers}}.
800
801Merci !`},wechat:{title:"OneHop — tous les modèles AI via une seule API",body:"Inscrivez-vous avec mon lien d’invitation. Rechargez dans les {{firstWindowDays}} jours et nous recevrons tous les deux {{percent}}% de crédit de parrainage."}},Qxn="Les gains sont visibles dès le paiement, mais ils sont d’abord gelés pour couvrir la fenêtre de remboursement ; à expiration, ils sont libérés sous forme de credit de récompense de parrainage OneHop.",Xxn="Lib
801éré dans {{days}} jours.",Zxn={referrer:"Parrain",referee:"Filleul"},Jxn={referrer:" : touchez du credit de parrainage lorsqu’une personne que vous invitez recharge — {{tiers}}.",referee:" : inscrivez-vous avec le lien, puis rechargez pour gagner vous aussi — {{tiers}}."},e$n={dayRange:"jours {{fromDay}}-{{untilDay}}",dayOpenEnded:"à partir du jour {{fromDay}}"},t$n="Total gagné",n$n="Gains de parrainage libérés",a$n="Gains de parrainage gelés",o$n="Personnes invitées",s$n="Invitations valides",r$n="Récompenses de filleul libérées",i$n="Récompenses de filleul gelées",l$n="Annulé / récupéré",c$n="Personnes que vous avez invitées",d$n="Détail des gains",u$n={user:"Utilisateur",joined:"Date d’inscription",topups:"Recharges",earned:"Vos gains",frozen:"Gelé",date:"Date",event:"Événement",topupAmount:"Recharge du filleul",rate:"Taux",releaseAt:"Date de libération",cashback:"Gain",status:"Statut"},m$n={title:"Aucune invitation pour le moment",description:"Partagez votre lien pour commencer à gagner."},p$n={inviteeSignedUp:"Le filleul s’est inscrit",youSignedUp:"Vous vous êtes inscrit via une invitation",inviteePaid:"Le filleul a effectué une dépense",youPaid:"Vous avez effectué une dépense en tant que filleul"},f$n={frozen:"Gelé",released:"Libéré",cancelled:"Annulé",partially_reversed:"Partiellement récupéré",reversed:"Récupéré",failed:"Échec",skipped:"Ignoré"},g$n={title:Dxn,description:Mxn,error:Exn,yourLink:Ixn,shareVia:Oxn,wechatCopied:Lxn,copy:Uxn,copied:Bxn,wechat:Fxn,x:zxn,telegram:qxn,reddit:Hxn,linkedin:Vxn,whatsapp:Kxn,email:Gxn,facebook:Wxn,share:Yxn,offer:Qxn,releaseDelay:Xxn,role:Zxn,roleOffer:Jxn,policy:e$n,totalEarned:t$n,availableEarned:n$n,frozenEarned:a$n,invited:o$n,active:s$n,availableReceived:r$n,frozenReceived:i$n,cancelledReversed:l$n,peopleYouInvited:c$n,history:d$n,col:u$n,empty:m$n,event:p$n,status:f$n},h$n="Paramètres",y$n="Gérez les préférences du compte et les valeurs par défaut de la console.",v$n="Connecté en tant que {{email}}",b$n="Nom affiché",x$n="Langue",$$n="Fuseau horaire",w$n="Impossible de charger le profil",k$n="Impossible d’enregistrer",C$n="Abandonner les modifications ?",S$n="Vous avez des modifications non enregistrées. Quitter maintenant les abandonnera.",A$n="Abandonner",T$n="Continuer à modifier",R$n={title:h$n,description:y$n,signedInAs:v$n,displayName:b$n,locale:x$n,timezone:$$n,failedLoad:w$n,failedSave:k$n,discardTitle:C$n,discardMessage:S$n,discardConfirm:A$n,keepEditing:T$n},P$n="Mur de missions",_$n="Parlez de OneHop à votre audience et gagnez du crédit d'essai. Chaque soumission est vérifiée à la main.",j$n="Lien vers votre publication",N$n="https://…",D$n="Envoyer",M$n="Envoyé — nous examinons cela sous peu.",E$n="Liens acceptés : {{hosts}}",I$n="Refusé précédemment : {{reason}}. Corrigez et renvoyez.",O$n={pending:"En cours d'examen",approved:"Crédité",rejected:"Refusé",active:"Actif"},L$n={title:"Aucune mission pour l'instant",description:"Revenez bientôt — nous lançons ces campagnes régulièrement."},U$n={x_quote:{title:"Citez-nous sur X",description:"Citez le post épinglé de @OneHopAI en ajoutant votre propre avis.",rules:["Votre compte X doit avoir au moins 6 mois et 10 abonnés ou plus.","Envoyez le lien de votre propre citation, pas celui du post d'origine.","Le crédit arrive dans les 2 heures suivant la validation."]},youtube_tutorial:{title:"Publiez un tutoriel YouTube",description:"Une vidéo de 6 minutes ou plus montrant comment vous avez branché OneHop sur votre agent.",rules:["Envoyez le lien de la vidéo une fois publiée.","Votre chaîne YouTube doit avoir 50 abonnés ou plus.","Une seule fois par compte.","Le crédit arrive dans les 2 heures suivant la validation."]},short_video:{title:"Publiez une vidéo courte",description:"Un short de 40 secondes ou plus sur TikTok ou YouTube qui mentionne votre configuration OneHop.",rules:["Envoyez le lien de la vidéo une fois publiée.","Le crédit arrive dans les 2 heures suivant la validation."]},github_readme:{title:"Mettez OneHop dans votre README GitHub",description:"Ajoutez un crédit OneHop au README d'un dépôt qui vous appartient. Chaque rechargement ultérieur rapporte 15% de plus.",rules:["Envoyez le lien du dépôt une fois le README en ligne.","C'est permanent, pas ponctuel : chaque rechargement retient le plus avantageux entre notre bonus standard et vos 15%.","Le texte à copier se trouve ci-dessous."]}},B$n={load:"Impossible de charger le mur de missions",generic:"Envoi impossible",urlRequired:"Collez d'abord le lien de votre publication.",urlTooLong:"Ce lien est trop long.",urlMalformed:"Cela ne ressemble pas à un lien valide.",hostNotAllowed:"Cette mission n'accepte que les liens des plateformes listées ci-dessus.",notAPost:"Indiquez le lien de la publication ou de la vidéo, pas d'un profil ou d'une page d'accueil.",alreadySubmitted:"Vous avez déjà soumis cette mission.",notAvailable:"Cette mission n'est pas disponible actuellement.",busy:"Nous avons atteint notre capacité de vérification du jour. Réessayez demain.",emailUnverified:"Vérifiez d'abord votre adresse e-mail.",accountTooNew:"Votre compte n'est pas encore assez ancien pour cela.",riskFlagged:"Ce compte ne peut pas participer pour le moment. Contactez le support si vous pensez que c'est une erreur.",accountInactive:"Ce compte n'est pas actif.",deviceAlreadyClaimed:"Un autre compte sur cet appareil a déjà participé."},F$n="Merci à [OneHop]({{url}}) de sponsoriser ce projet ! OneHop vous donne une seule clé API compatible OpenAI pour des centaines de modèles de premier plan — GPT, Claude, Gemini, DeepSeek, Kimi et Qwen. Plus de comptes fournisseurs à jongler, aucun changement de code pour changer de modèle, et vous ne payez que ce que vous consommez. → {{domain}}",z$n="Copier ce texte",q$n={title:P$n,description:_$n,urlLabel:j$n,urlPlaceholder:N$n,submit:D$n,submitted:M$n,allowedHosts:E$n,rejectedHint:I$n,status:O$n,empty:L$n,item:U$n,error:B$n,sponsorBlurb:F$n,copyBlurb:z$n},H$n="Discutez avec nous",V$n="Tickets d’assistance",K$n="Ouvrez un ticket, notre équipe vous répondra rapidement.",G$n="Nouveau ticket",W$n={subject:"Objet",category:"Type",status:"Statut",updated:"Mis à jour",user:"User"},Y$n={billing:"Facturation",technical:"Technique",account:"Compte",other:"Autre"},Q$n={open:"Ouvert",pending:"En attente",resolved:"Résolu",closed:"Fermé"},X$n={allStatuses:"Tous les statuts",allCategories:"All categories",search:"Search email or subject"},Z$n={subject:"Objet",subjectPlaceholder:"Décrivez brièvement le problème",category:"Type",message:"Votre message",messagePlaceholder:"Dites-nous ce qui se passe…",attachments:"Pièces jointes",addAttachment:"Ajouter un fichier",submit:"Envoyer le ticket",cancel:"Annuler"},J$n={you:"Vous",support:"Assistance",system:"Système",replyPlaceholder:"Rédiger une réponse…",send:"Envoyer",closedNotice:"Ce ticket est fermé. Ouvrez un nouveau ticket si vous avez encore besoin d’aide.",sendHint:"Appuyez sur ⌘/Ctrl + Entrée pour envoyer",back:"Retour aux tickets",systemStatus:{open:"Ticket rouvert",pending:"Ticket marqué comme en attente de votre réponse",resolved:"Ticket marqué comme résolu",closed:"Ticket fermé"}},ewn={title:"Support tickets",resolve:"Resolve",close:"Close",reopen:"Reopen",unread:"Unread"},twn="Charger plus",nwn={created:"Ticket envoyé",replied:"Réponse envoyée",statusUpdated:"Status updated",error:"Une erreur est survenue. Réessayez"},awn="Ticket introuvable ou supprimé.",own={title:"Aucun ticket pour le moment",body:"Un problème ? Ouvrez un ticket et nous vous aiderons.",cta:"Ouvrir votre premier ticket"},swn={liveChat:H$n,title:V$n,subtitle:K$n,newTicket:G$n,columns:W$n,category:Y$n,status:Q$n,filters:X$n,form:Z$n,thread:J$n,admin:ewn,loadMore:twn,toast:nwn,notFound:awn,empty:own},rwn="Utilisation",iwn="Solde, rythme de consommation et destination de vos dépenses.",lwn="Activité",cwn="Aucune activité sur cette période",dwn="Détail de l’utilisation",uwn="Par API key",mwn="Par modèle",pwn="Par type de token",fwn="Aucune donnée",gwn="Aucune utilisation sur cette période.",hwn="Au rythme actuel, le solde devrait tenir {{days}} jours (environ {{rate}}/jour).",ywn="sortie",vwn="cache",bwn={tokens:"Tokens",requests:"Requêtes",cost:"Coût"},xwn="Autre",$wn="req.",wwn="tok",kwn="Actualisation…",Cwn="Aucune donnée",Swn="Envoyez une requête pour commencer à accumuler des données.",Awn="Principales API keys",Twn="Recharger",Rwn={title:"Impossible de charger l’utilisation"},Pwn={firstToken:"premier token",latency:"Latence moyenne",requests:"Requêtes",spend:"Consommation",spendSub:"facturée sur cette période",successRate:"{{rate}}% de réussite",tokens:"Tokens",textDuration:"texte",mediaDuration:"image/vidéo",cacheHit:"{{rate}}% en cache",projected:"≈ {{amount}}
801/mois",vsPrevious:"vs période précédente"},_wn={activeDays:"Jours actifs",longestStreak:"Plus longue série",daysValue:"{{n}} jours",totalSpend:"Total sur cette période",peakDay:"Jour le plus actif"},jwn={all:"Toute la période",custom:"Personnalisée",last1h:"Dernière heure",last30d:"30 derniers jours",last7d:"7 derniers jours",thisMonth:"Ce mois-ci",today:"Aujourd’hui",yesterday:"Hier",byMonth:"Par mois"},Nwn={failed:"Échec",success:"Réussite"},Dwn={cacheRead:"Lecture cache",cacheWrite:"Écriture cache",cacheWrite1h:"Écriture cache 1h",cacheWrite5m:"Écriture cache 5m",completion:"Sortie",prompt:"Entrée"},Mwn={body:"Envoyez une requête depuis le terminal ou ouvrez le playground — l’utilisation apparaîtra ici en quelques secondes.",openPlayground:"Ouvrir le playground",title:"Votre key est prêt"},Ewn={body:"Créez votre premier API key, routez toutes les requêtes par une URL, puis l’utilisation apparaîtra ici.",createKey:"Créer une API key",title:"Bienvenue sur OneHop",tryPlayground:"Essayer le playground"},Iwn="Actualiser",Own="{{count}} requêtes réussies dans le filtre actuel",Lwn="Tokens totaux",Uwn="Entrée {{input}} / sortie {{output}}",Bwn="Credit facturé",Fwn="{{cost}} coût upstream réel",zwn="Latence moyenne",qwn="Premier token {{duration}}",Hwn="Activité sur 30 jours",Vwn="Requêtes réussies, volume de token et credit facturé.",Kwn="Chargement de la tendance d’utilisation",Gwn="Aucune tendance d’utilisation",Wwn="La tendance d’utilisation apparaît après des requêtes réussies.",Ywn="Modèles principaux",Qwn="Credit facturé par modèle sur les 30 derniers jours.",Xwn="Aucune utilisation par modèle",Zwn="La répartition par modèle apparaît après des requêtes réussies.",Jwn="Modèle",e0n="Tous les modèles",t0n="Statut",n0n="Protocole",a0n="Lignes",o0n="Réinitialiser",s0n="Enregistrements d’utilisation",r0n="API key",i0n="Endpoint",l0n="Type",c0n="Tokens",d0n="Coût",u0n="Durée",m0n="Heure",p0n="User-Agent",f0n="Détails",g0n="Détail de la requête",h0n="Détails de l’enregistrement d’utilisation et metadata de facturation.",y0n="ID de la requête",v0n="Opération",b0n="Tokens d’entrée",x0n="Tokens de sortie",$0n="Tokens cache read",w0n="Tokens cache write",k0n="Coût d’entrée",C0n="Coût de sortie",S0n="Coût cache read",A0n="Coût cache write",T0n="Code d’erreur",R0n="Message d’erreur",P0n="Introuvable.",_0n="credit",j0n="Total {{count}}",N0n="Chargement des enregistrements d’utilisation",D0n="Aucun enregistrement d’utilisation",M0n="Essayez un autre jeu de filtres.",E0n="Les enregistrements apparaissent quand les requêtes passent par vos API keys.",I0n="Page {{page}} · {{shown}} sur {{total}} enregistrements correspondants",O0n="Précédent",L0n="Suivant",U0n="Credit",B0n="Tokens",F0n="Requêtes",z0n={time:"Heure",apiKey:"API Key",model:"Modèle",reasoningEffort:"Effort de raisonnement",endpoint:"Endpoint",type:"Type",billingMode:"Mode de facturation",inputTokens:"Tokens d’entrée",outputTokens:"Tokens de sortie",cacheReadTokens:"Tokens de lecture cache",cacheWriteTokens:"Tokens d’écriture cache",totalTokens:"Tokens totaux",billedCredit:"Credit facturé",firstTokenMs:"Premier Token ms",durationMs:"Durée ms",status:"Statut",userAgent:"User-Agent"},q0n={mon:"Lun",wed:"Mer",fri:"Ven"},H0n="Moins",V0n="Plus",K0n={title:rwn,description:iwn,activity:lwn,activityEmpty:cwn,breakdown:dwn,byApiKey:uwn,byModel:mwn,byTokenType:pwn,chartEmpty:fwn,chartEmptyHint:gwn,burnRate:hwn,in:"entrée",out:ywn,cache:vwn,metric:bwn,other:xwn,req:$wn,tok:wwn,refreshing:kwn,topEmpty:Cwn,topEmptyHint:Swn,topKeys:Awn,topUp:Twn,error:Rwn,kpi:Pwn,stat:_wn,range:jwn,requests:Nwn,tokenType:Dwn,noRequests:Mwn,welcome:Ewn,refresh:Iwn,successfulFilter:Own,totalTokens:Lwn,inOut:Uwn,billedCredit:Bwn,upstreamActualCost:Fwn,avgLatency:zwn,firstToken:qwn,activityTitle:Hwn,activityDescription:Vwn,loadingTrend:Kwn,noUsageTrend:Gwn,trendDescription:Wwn,topModels:Ywn,topModelsDescription:Qwn,noModelUsage:Xwn,noModelUsageDescription:Zwn,model:Jwn,allModels:e0n,status:t0n,protocol:n0n,rows:a0n,reset:o0n,tableLabel:s0n,apiKey:r0n,endpoint:i0n,type:l0n,tokens:c0n,cost:d0n,duration:u0n,time:m0n,userAgent:p0n,details:f0n,requestDetail:g0n,detailDescription:h0n,requestId:y0n,operation:v0n,inputTokens:b0n,outputTokens:x0n,cacheReadTokens:$0n,cacheWriteTokens:w0n,inputCost:k0n,outputCost:C0n,cacheReadCost:S0n,cacheWriteCost:A0n,errorCode:T0n,errorMessage:R0n,notFound:P0n,creditSuffix:_0n,total:j0n,loadingRecords:N0n,noRecords:D0n,differentFilters:M0n,recordsEmpty:E0n,pageSummary:I0n,previous:O0n,next:L0n,chartCredit:U0n,chartTokens:B0n,chartRequests:F0n,csv:z0n,weekday:q0n,activityLess:H0n,activityMore:V0n},G0n="Signup access",W0n="Controlled-launch registration gate. Approved emails, domains, existing users, and active admins can create accounts.",Y0n="Signup access allowlist",Q0n="No allowlist entr
801ies",X0n="Email / domain",Z0n="Note",J0n="Status",ekn="Registration",tkn="Expires",nkn="Invites",akn="Updated",okn="Action",skn="Add",rkn="Bulk add",ikn="Edit",lkn="Save",ckn="Invite",dkn="Restore",ukn="Remove",mkn="Add signup access",pkn="Edit {{email}}",fkn="Bulk add signup access",gkn="Add a specific email or a whole domain with @company.com. Existing users and active admins are always allowed.",hkn="Paste one email or @domain per line. Invalid and duplicate rows will be skipped.",ykn="Email or domain",vkn="[email protected] or @company.com",bkn="Use @company.com to approve an entire domain.",xkn="Note (optional)",$kn="e.g. founding team",wkn="Expiry (optional)",kkn="Leave empty for no expiry. Expired entries no longer allow new signups.",Ckn="Emails / domains",Skn=`[email protected]
802[email protected]
803@partner.com`,Akn="Search",Tkn="Search email or domain",Rkn="Status",Pkn="Access check",_kn="[email protected]",jkn="Check",Nkn="Allowed",Dkn="Denied",Mkn={existing_user:"Existing user always allowed",active_admin:"Active admin always allowed",email_allowlist:"Matched exact email",domain_allowlist:"Matched domain rule",not_allowed:"No active rule matched"},Ekn="Registered",Ikn="Not registered",Okn="Admin",Lkn="Domain rule",Ukn="Never",Bkn="Added to signup access.",Fkn="Signup access updated.",zkn="Added {{count}} entries.",qkn="Invite sent.",Hkn="Entry restored.",Vkn="Removed from signup access.",Kkn="Remove {{email}} from signup access? They can no longer create a new account unless another rule allows them.",Gkn={title:"Email domain rules",description:"Hot-configurable email-domain lists layered on the built-in baseline. Blacklisted domains are blocked at signup; mainstream domains skip the watchlist.",add:"Add domain",addTitle:"Add domain rule",addDescription:"Blacklist blocks signup (403). Mainstream marks the domain as trusted so new users are not watchlisted.",kindLabel:"List",kindBlacklist:"Blacklist — block signup",kindMainstream:"Mainstream — skip watchlist",domainLabel:"Domain",domainPlaceholder:"example.com",noteLabel:"Note",notePlaceholder:"Optional — why this domain",search:"Search",searchPlaceholder:"Filter by domain",kindFilter:"List",allKinds:"All lists",statusFilter:"Status",statusActive:"Active",statusRevoked:"Removed",statusAll:"All",label:"Email domain rules",empty:"No domain rules",colDomain:"Domain",colKind:"List",colNote:"Note",colAddedBy:"Added by",colCreated:"Created",status:"Status",action:"Action",remove:"Remove",restore:"Restore",confirmRemove:"Remove rule for {{domain}}?",added:"Domain rule added",removed:"Domain rule removed",restored:"Domain rule restored",badgeBlacklist:"Blacklist",badgeMainstream:"Mainstream"},Wkn={title:G0n,description:W0n,label:Y0n,empty:Q0n,email:X0n,note:Z0n,status:J0n,registration:ekn,expiresAt:tkn,invites:nkn,updatedAt:akn,action:okn,add:skn,bulkAdd:rkn,edit:ikn,save:lkn,invite:ckn,restore:dkn,revoke:ukn,newTitle:mkn,editTitle:pkn,bulkTitle:fkn,formDescription:gkn,bulkDescription:hkn,emailLabel:ykn,emailPlaceholder:vkn,emailHint:bkn,noteLabel:xkn,notePlaceholder:$kn,expiresAtLabel:wkn,expiresAtHint:kkn,bulkEntriesLabel:Ckn,bulkEntriesPlaceholder:Skn,search:Akn,searchPlaceholder:Tkn,statusFilter:Rkn,checkLabel:Pkn,checkPlaceholder:_kn,check:jkn,checkAllowed:Nkn,checkDenied:Dkn,checkReasons:Mkn,registered:Ekn,notRegistered:Ikn,adminAllowed:Okn,domainRule:Lkn,never:Ukn,added:Bkn,updated:Fkn,bulkAdded:zkn,invited:qkn,restored:Hkn,revoked:Vkn,confirmRevoke:Kkn,domainRules:Gkn},Ykn="Ops Billing",Qkn="Payments, wallets and refunds across all users.",Xkn={payments:"Payments",wallets:"Wallets",refunds:"Refunds"},Zkn="User email",Jkn="Search by email...",eCn="Created",tCn="Created",nCn="Amount (USD)",aCn="Min",oCn="Max",sCn="Refunds",rCn="No refunds",iCn="Refund",lCn="Type",cCn="Full refund",dCn="Partial refund",uCn="Original payment",mCn="Wallets",pCn="Wallet",fCn="User",gCn="Total",hCn="Purchased",yCn="Bonus",vCn="No wallets",bCn="Payments",xCn="Payment status",$Cn="No payments",wCn="Payment",kCn="Status",CCn="Amount",SCn="Paid",ACn="Refund",TCn="Not refundable (status must be paid)",RCn="View in Stripe Dashboard",PCn="Failed + dead-letter webhooks in last 7 days. 0=green, 1-9=yellow, 10+=red.",_Cn="unhealthy",jCn="Refund {{id}}",NCn="This will refund {{user}} via Stripe. The platform fee shown below is deducted from the amount returned; uncheck it to waive. Promotional credits granted with the original payment will be forfeited proportionally.",DCn="Refund amount (USD)",MCn="Max ${{value}}",ECn="Reason",ICn="返金プレビューを読み込み中…",OCn="返金プレビューの読み込みに失敗しました。プレビューが成功するまで返金は実行できません。",LCn="返金可能な取引が見つかりません。この支払いはすでに全額返金済みの可能性があります。",UCn="支払額",BCn="返金済み",FCn="今回の返金",zCn="回収クレジット",qCn="クーポン割引分のクレジット {{amount}} の比例回収を含みます",HCn="追加付与分のクレジット {{amount}} の比例回収を含みます",VCn="ボーナス取り消し",KCn="この返金によりプロモーションボーナス {{amount}} が取り消されます。",GCn="Stripe 経由で返金",WCn="手数料を差し引く({{fee}}、Stripe 決済コスト充当)",YCn="手数料({{fee}})",QCn="金額が返金可能上限 {{value}} を超えています",XCn="有効な正の金額を入力してください",ZCn="ユーザーは購入クレジットの一部をすでに消費しています。返金可能上限: {{value}}",JCn="この支払いはすでに全額返金済みです",e1n="手数料差引後の返金額が小さすぎます。{{value}} 以上で返金してください。",t1n="Cancel",n1n="Issue refund",a1n="Submitting...",o1n="Refund submitted",s1n="Stripe will return the funds within 1-3 business days. Audit log written.",r1n="Refund failed",i1n={title:Ykn,description:Qkn,tabs:Xkn,emailFilter:Zkn,emailPlaceholder:Jkn,created:eCn,createdRange:tCn,amountRange:nCn,amountMin:aCn,amountMax:oCn,refunds:sCn,noRefunds:rCn,refundId:iCn,refundType:lCn,typeRefund:cCn,typePartialRefund:dCn,originalPayment:uCn,wallets:mCn,wallet:pCn,user:fCn,total:gCn,purchased:hCn,bonus:yCn,noWallets:vCn,payments:bCn,paymentStatus:xCn,noPayments:$Cn,payment:wCn,status:kCn,amount:CCn,paid:SCn,refund:ACn,notRefundable:TCn,viewInStripe:RCn,webhookHealthHint:PCn,unhealthyWebhooks:_Cn,refundConfirmTitle:jCn,refundConfirmBody:NCn,refundAmountLabel:DCn,refundMaxHint:MCn,refundReasonLabel:ECn,refundPreviewLoading:ICn,refundPreviewFailed:OCn,refundNoRefundableTx:LCn,refundPaidRow:UCn,refundAlreadyRefundedRow:BCn,refundThisRefundRow:FCn,refundCreditReclaimRow:zCn,refundCreditCouponNote:qCn,refundCreditExtraNote:HCn,refundBonusReverseRow:VCn,refundBonusForfeitWarning:KCn,refundStripeReturnRow:GCn,refundFeeToggle:WCn,refundPlatformFeeRow:YCn,refundExceedsMax:QCn,refundAmountInvalid:XCn,refundInsufficientCredit:ZCn,refundAlreadyFull:JCn,refundBelowMin:e1n,
803cancel:t1n,confirmRefund:n1n,submitting:a1n,refundSubmittedTitle:o1n,refundSubmittedBody:s1n,refundFailedTitle:r1n},l1n="Campaigns",c1n="Audience segments, restricted-model access, model discounts, and targeted credit grants.",d1n={mobileLabel:"キャンペーン セクション",segments:"Audiences",access:"Model access",discounts:"Model discounts",grants:"Targeted grants",recurring:"Periodic grants"},u1n="Status",m1n="Actions",p1n="All users",f1n="Always",g1n="No expiry",h1n="Active window",y1n="Leave blank for always-on. Times are end-of-day on the chosen dates.",v1n="Valid from",b1n="Valid to",x1n="Pause",$1n="Resume",w1n="Add",k1n="Remove",C1n="Delete",S1n="Clear",A1n="Close",T1n={allKinds:"すべての種類",segmentKindStatic:"静的",segmentKindDynamic:"動的",grantKindGrant:"付与",grantKindRevoke:"取り消し",allStatuses:"すべてのステータス",statusActive:"有効",statusPaused:"一時停止中",statusArchived:"アーカイブ済み",statusEnded:"終了済み",statusPending:"保留中",statusProcessing:"処理中",statusCompleted:"完了",statusFailed:"失敗"},R1n={title:"Audiences",create:"New audience",empty:"No audiences yet. Create one to target access, discounts, and grants.",name:"Name",namePlaceholder:"e.g. China power users",description:"Description",kind:"Kind",kind_static:"Static",kind_dynamic:"Dynamic",kindHint:"Static = a hand-picked list of users. Dynamic = users matching a rule, refreshed on materialize.",members:"Members",materialized:"Last refreshed",materializeDone:"Materialized {{count}} members",basics:"Basics",sheetDescription:"Audiences group users so you can target model access, discounts, and grants.",saved:"Audience saved",created:"Audience created",rule:"Matching rule",ruleHint:"All conditions must match (AND). An empty rule matches no one.",countryIn:"Country in",countryInHint:"Comma-separated ISO-2 codes, e.g. CN, US, JP.",signupAfter:"Signed up after",signupBefore:"Signed up before",minSpend:"Min cumulative spend (USD)",minSpendHint:"Only users whose lifetime spend is at least this.",previewing:"Estimating…",matchCount:"Estimated match: {{value}} users",membersTitle:"Members",membersHint:"Search and add users. Rule-matched members are read-only.",addMembers:"Add users",searchUsers:"Search by email or ID",noUsers:"No matching users.",noMembers:"No members yet.",membersAdded:"{{count}} member added",membersAdded_plural:"{{count}} members added",source_manual:"Manual",source_rule:"Rule",materializeTitle:"Materialize",materializeHint:"Snapshot the rule into the member list. Re-run anytime to refresh.",materialize:"Materialize now",materializing:"Materializing…",materializeConfirm:"Refresh members from the current rule? This replaces the rule-matched snapshot.",lastMaterialized:"Last materialized {{value}}",neverMaterialized:"Never materialized",deleteSegment:"Delete audience",deleteConfirm:"Delete this audience? Access, discounts, and grants referencing it will lose this targeting."},P1n={title:"Model access",create:"Grant access",empty:"No access grants yet.",model:"Model",segment:"Audience",target:"Target",validFrom:"Valid from",validTo:"Valid to",sheetDescription:"Give a restricted model to an audience for an optional time window.",created:"Access granted",statusUpdated:"Status updated",deleteConfirm:"Remove this access grant?",noSegmentsTitle:"Create an audience first",noSegmentsDescription:"Access is granted to an audience. Create an audience on the Audiences tab, then come back to grant model access.",publicHint:"This model is public — everyone can already use it.",publicModelTitle:"Model is public",publicModelWarning:"{{model}} is public, so this grant has no effect until it is set to restricted on the Models page. Flip it to restricted there to gate it to this audience.",createAnyway:"Create anyway"},_1n={title:"Model discounts",create:"New discount",empty:"No discounts yet.",model:"Model",audience:"Audience",audienceHint:"Leave as all users to discount for everyone.",discount:"Discount",window:"Window",live:"Live",end:"End",amount:"Discount",target:"Target",name:"Internal name",nameHint:"Optional label for your own reference.",percentLabel:"Extra off the platform price",percentHint:"1–99%. Applied on top of our platform price (our_price), not the official price.",percentError:"Enter a value between 1 and 99.",previewPlatform:"Discounted platform price",previewVsOfficial:"Saved vs official",pickStart:"Pick a start date",sheetDescription:"Discounts apply on top of the platform price. The official price is shown for c
803omparison only.",created:"Discount created",saved:"Discount saved",statusUpdated:"Status updated",deleteConfirm:"Delete this discount?",liveReadonly:"This discount is live — value, window, and name are locked. Pause or end it to make changes.",terminalReadonly:"This discount has ended and is read-only."},j1n={title:"Targeted grants",create:"New grant",empty:"No targeted grants yet.",time:"Time",kind:"Kind",kind_grant:"Grant",kind_revoke:"Revoke",model:"Models",modelHint:"Credit is shared across the selected models — spending on any of them draws from the same balance.",pickModels:"Pick models",nModels:"{{count}} models selected",pasteEmails:"Bulk add by email",pasteEmailsPlaceholder:"[email protected], [email protected] — separated by newline, comma or semicolon",importEmails:"Parse & add",importMatched:"Matched {{count}} users.",importUnmatched:"{{count}} emails not found:",importInvalid:"{{count}} invalid entries skipped:",importInactive:"{{count}} matched but inactive — will be skipped:",preset7d:"7 days",preset30d:"30 days",preset90d:"90 days",total:"Total",notifyYes:"Yes",notifyNo:"No",recipients:"Recipients",amount:"Amount",expiry:"Expires",expiryHint:"Optional. Unused balance expires on this date.",audience:"Audience",bySegment:"By audience",byUsers:"Specific users",segment:"Audience",users:"Users",searchUsers:"Search by email or ID",noUsers:"No matching users.",grantDetails:"Grant details",amountEach:"Amount per recipient (USD)",amountHint:"0.01–2000 per recipient.",notifyEmail:"Email recipients",note:"Note",summary:"{{count}} recipients × {{amount}} = {{total}} total",send:"Send grant",sending:"Queuing…",queued:"Grant queued — fanning out to recipients",confirmTitle:"Send targeted grant?",confirmMessage:"Grant {{amount}} each to {{count}} recipients ({{total}} total)?",confirmSend:"Send grant",sheetDescription:"Grant model-restricted credit to an audience or a hand-picked list of users.",batchTitle:"Grant batch",succeeded:"Succeeded",failed:"Failed",revokedAmount:"Reclaimed",completedAt:"Completed",revoke:"Revoke",revokeConfirm:"Reclaim unused balance from {{count}} recipients of {{model}}?",revokeQueued:"Revoke queued"},N1n={title:"Periodic grants",create:"New periodic grant",editTitle:"Edit periodic grant",empty:"No periodic grants yet. Create one to give recurring free tokens or credit on a daily or weekly cadence.",sheetDescription:"Free tokens or restricted credit, refreshed for an audience every period (lazily, on first use).",basics:"Basics",name:"Name",namePlaceholder:"e.g. Daily free Kimi tokens",unit:"Unit",unitHint:"Tokens = free token allowance per period. USD = restricted credit (single model only).",unitLocked:"Unit is fixed after creation — create a new campaign to switch.",unit_tokens:"Tokens",unit_usd:"USD",allUnits:"All units",targeting:"Targeting",models:"Models",modelsHint:"Free tokens are usable across all selected models.",model:"Model",usdSingleModelHint:"USD grants are restricted to one model — multi-model would make spend unattributable.",pickModels:"Pick models",nModels:"{{count}} model selected",nModels_plural:"{{count}} models selected",audience:"Audience",audienceHint:"Leave as all users to grant to everyone.",schedule:"Amount & schedule",perPeriod:"Per period",tokensHint:"Positive integer, e.g. 100000 tokens per period.",usdHint:"
8030.01–2000 USD per period.",cadence:"Cadence",cadence_daily:"Daily",cadence_weekly:"Weekly",anchorTz:"Anchor timezone",anchorTzHint:"Period boundaries follow local midnight in this timezone.",startsAt:"Starts",startsAtHint:"Optional. Blank = effective immediately.",endsAt:"Ends",endsAtHint:"Optional. Blank = no end date.",immediately:"Immediately",excludeRisky:"Exclude risky accounts",thisPeriod:"This period (users · used/granted)",allStatuses:"All statuses",status_draft:"Draft",status_active:"Active",status_paused:"Paused",status_archived:"Archived",created:"Periodic grant created",saved:"Periodic grant saved"},D1n={title:l1n,description:c1n,tabs:d1n,status:u1n,actions:m1n,allUsers:p1n,always:f1n,noExpiry:g1n,window:h1n,windowHint:y1n,validFrom:v1n,validTo:b1n,pause:x1n,resume:$1n,actionAdd:w1n,actionRemove:k1n,actionDelete:C1n,actionClear:S1n,actionClose:A1n,filters:T1n,segments:R1n,access:P1n,discounts:_1n,grants:j1n,recurring:N1n},M1n="Announcements",E1n="Banners shown at the top of the marketing site and the console.",I1n="Banners",O1n="Top-of-page banners shown on www and console.",L1n="New Banner",U1n="No banners yet. Create one to show a top-of-page announcement.",B1n="Message",F1n="Supports inline links: [text](https://… or /path). Multiple links allowed.",z1n="CTA Label",q1n="CTA Link",H1n="Severity",V1n="Audience",K1n="Starts At",G1n="Ends At",W1n="Dismissible",Y1n="Status",Q1n="Archive",X1n="Archive this banner? It will no longer be shown to users.",Z1n="New Banner",J1n="Edit Banner",eSn="Title",tSn="Type",nSn="Content",aSn="Display type",oSn="Banner",sSn="Modal",rSn="Draft",iSn="Active",lSn="Info",cSn="Warning",dSn="Critical",uSn="Console only",mSn="Public site only",pSn="Both",fSn="Hero image",gSn="Upload an image, or paste an https URL. Optional. PNG / JPEG / WebP / GIF, up to 5MB.",hSn="Upload",ySn="Uploading…",vSn="Remove",bSn="Only PNG, JPEG, WebP and GIF images are supported.",xSn="Image must be 5MB or smaller.",$Sn="Upload failed, please try again.",wSn="Title",kSn="Body",CSn="Action buttons",SSn="Button label",ASn="Button link",TSn="Style",RSn="Add button",PSn="Remove",_Sn="Primary",jSn="Secondary",NSn="Link",DSn="Simplified Chinese (source)",MSn="Fill in Simplified Chinese only, then translate to other languages in one click.",ESn="Translate to all languages",ISn="Translating…",OSn="Other languages (translated, editable)",LSn="Translated {{ok}} languages",USn="{{failed}} languages failed — fill in manually or retry",BSn="Chinese source changed but translations weren't refreshed — click Translate again or non-Chinese users will see outdated copy.",FSn="Re-show to users who already dismissed it",zSn="Fill in the Simplified Chinese body first.",qSn={title:M1n,description:E1n,annTitle:I1n,annDescription:O1n,annNewButton:L1n,annEmpty:U1n,annMessage:B1n,annInlineLinkHint:F1n,annCtaText:z1n,annCtaUrl:q1n,annSeverity:H1n,annAudience:V1n,annStartsAt:K1n,annEndsAt:G1n,annDismissible:W1n,annStatus:Y1n,annArchive:Q1n,annArchiveConfirm:X1n,annCreateTitle:Z1n,annEditTitle:J1n,annColTitle:eSn,annColType:tSn,annColContent:nSn,annDisplayType:aSn,annTypeBanner:oSn,annTypeModal:sSn,annStatusDraft:rSn,annStatusActive:iSn,annSevInfo:lSn,annSevWarning:cSn,annSevCritical:dSn,annAudConsole:uSn,annAudPublic:mSn,annAudAll:pSn,annHeroImage:fSn,annHeroImageHint:gSn,annHeroImageUpload:hSn,annHeroImageUploading:ySn,annHeroImageRemove:vSn,annHeroImageBadType:bSn,annHeroImageTooLarge:xSn,annHeroImageUploadFailed:$Sn,annModalTitle:wSn,annBody:kSn,annActions:CSn,annActionLabel:SSn,annActionUrl:ASn,annActionVariant:TSn,annActionAdd:RSn,annActionRemove:PSn,annVariantPrimary:_Sn,annVariantSecondary:jSn,annVariantLink:NSn,annSourceLocale:DSn,annSourceHint:MSn,annTranslate:ESn,annTranslating:ISn,annOtherLocales:OSn,annTranslateDone:LSn,annTranslateParti
803al:USn,annTranslateStale:BSn,annBumpRevision:FSn,annTranslateNeedSource:zSn},HSn="Operations dashboard",VSn="Real-time overview of platform health, usage, and alerts.",KSn="Refresh",GSn="Refreshing",WSn="Updated {{time}}",YSn="Loading dashboard",QSn="Failed to load dashboard",XSn="No data",ZSn="No traffic yet",JSn="Video fail rate",eAn="Avg latency",tAn="Error types",nAn="No errors",aAn="Model anomalies",oAn="All models healthy",sAn="Components",rAn="req",iAn="Checkout abandon",lAn="Refunds",cAn="Chargebacks",dAn="First-charge conversion",uAn={kpis:"Key metrics",alerts:"Alerts",health:"System health",payment:"Payment health",revenue:"Revenue & growth",trend:"Trend",alertSettings:"Alert settings",leaderboard:"Growth leaderboards"},mAn={title:"Referral leaderboard",boardAria:"Select leaderboard",rangeAria:"Select time range",boards:{invites:"Invites",revenue:"Referred revenue"},ranges:{today:"Today","3d":"3d","7d":"7d","30d":"30d"},ofTotal:"of {{total}}",countPair:"{{valid}} / {{total}} valid",empty:"No referrals in this window",failedLoad:"Failed to load leaderboard",validHint:"Valid = normal risk status + active binding"},pAn={requests:"Requests",successRate:"Payment success",activeUsers:"Active users",newSignups:"New signups",newSignupsHint:"正常なユーザーのみ(フラグ付きを除く)",billedCredit:"Billed credit",errorRate:"Error rate",avgLatency:"Avg latency",balance:"Platform balance",vsPrevious:"{{delta}} vs previous",vsYesterday:"vs yesterday",noChange:"No change",successFailed:"{{success}} ok · {{failed}} fail"},fAn={today:"Revenue today",trendTitle:"Revenue today vs yesterday",monthDetail:"{{count}} charges · MTD {{mtd}}"},gAn={summary:"{{paid}} paid · {{failed}} failed · {{pending}} pending"},hAn={paidOfSignups:"{{paid}} first-charged / {{signups}} signups"},yAn={healthy:"Healthy",degraded:"Degraded",down:"Down",unknown:"Unknown"},vAn={critical:"Critical",warning:"Warning",info:"Info",ok:"Healthy"},bAn={operational:"Operational",degraded:"Degraded",down:"Down",upstream:"Upstream channels",gateway:"Gateway",billing:"Billing",jobs:"Job queue",tierReason:{ok:"Healthy",watch:"Watch: nearing threshold",warning:"Warning: over warn line",critical:"Critical: over crit line"}},xAn={title:"Active alerts",empty:"All systems operational",activeCount:"{{count}} active alerts",triggeredAt:"Triggered {{time}}",viewDetail:"View detail",acknowledge:"Acknowledge",resolved:"Resolved"},$An={title:"Alert settings",description:"Set warning / critical thresholds for the 6 alert types; ops is notified when a metric crosses the line. Severity is derived from the tier automatically.",enabled:"Enabled",warnThreshold:"Warning threshold",critThreshold:"Critical threshold",cooldown:"Cooldown (min)",cooldownHint:"Minimum gap between two notifications for the same alert, to prevent spam.",rateHint:"Rate, 0–1 (e.g. 0.05 = 5%).",countHint:"Absolute value, ≥ 0.",directionHigher:"Higher is worse: warning ≤ critical.",directionLower:"Lower is worse: warning ≥ critical.",lastFired:"Last fired {{time}}",neverFired:"Never fired",save:"Save all",saving:"Saving",saved:"Alert settings saved",saveError:"Failed to save",readonlyHint:"You have read-only access.",noData:"No alert settings",errors:{directionHigher:"Warning threshold must be ≤ critical threshold",directionLower:"Warning threshold must be ≥ critical threshold",rateRange:"Rate thresholds must be within 0–1",nonNegative:"Thresholds must be ≥ 0",cooldownNonNegative:"Cooldown must be ≥ 0",required:"Threshold is required"},types:{payment_success_rate_low:"Payment success rate low",gateway_error_rate_high:"Gateway error rate high",model_error_spike:"Model error spike",webhook_dead_letter:"Webhook dead letter backlog",system_component_down:"System component down",negative_balance_exposure:"Negative balance exposure"}},wAn={label:"Time range",today:"Today",days7:"7 days",days30:"30 days"},kAn="{{failed}}/{{total}} jobs",CAn="{{delta}}pt vs yesterday",SAn="Low sample ({{n}})",AAn="Had gateway calls",TAn="Last 7d cohort · normal users only",RAn="Refund rate {{rate}}%",PAn={funnel:"opened {{opened}} · paid {{paid}}"},_An={title:HSn,description:VSn,refresh:KSn,refreshing:GSn,lastUpdated:WSn,loading:YSn,failedLoad:QSn,empty:XSn,noTraffic:ZSn,videoFailRate:JSn,avgLatency:eAn,errorTypes:tAn,noErrors:nAn,modelAnomalies:aAn,noAnomalies:oAn,c
803omponents:sAn,req:rAn,abandonRate:iAn,refunds:lAn,chargebacks:cAn,firstChargeConversion:dAn,sections:uAn,leaderboard:mAn,kpi:pAn,revenue:fAn,orders:gAn,conversion:hAn,componentStatus:yAn,severity:vAn,health:bAn,alerts:xAn,alertSettings:$An,range:wAn,videoJobsDetail:kAn,vsYesterdayPt:CAn,lowSample:SAn,activeUsersHint:AAn,conversionCohortHint:TAn,refundRate:RAn,checkout:PAn},jAn="Loading...",NAn="Admin permission required",DAn="Your account does not have permission to access this administrator page.",MAn={loading:jAn,permissionRequired:NAn,permissionDescription:DAn},EAn="User growth",IAn="Signup rewards, discount codes, referrals, and credit grants. Manual grants live on the Users page.",OAn={mobileLabel:"成長セクション",onboarding:"Signup & new users",discount:"Discount codes",referral:"Referral cashback",grants:"Credit grants",topup:"Top-up bonus",redeem:"引き換えコード",tasks:"Task wall"},LAn="Coupon batch",UAn="Promotion rule",BAn="Count",FAn="Batch code",zAn="Creating...",qAn="Create batch",HAn="{{count}} coupon code created",VAn="{{count}} coupon codes created",KAn="Batch {{code}}",GAn="Copied",WAn="Copy all",YAn="Credit grants",QAn="Source",XAn="Status",ZAn="No grants yet",JAn="Coupon redemptions, signup bonuses, and manual grants appear here.",eTn="Time",tTn="User",nTn="Amount",aTn="Signup bonus",oTn="Controls the credit automatically granted to new users. Disable it to stop future signup grants.",sTn="Enable signup credit",rTn="Amount (USD)",iTn="Save signup bonus",lTn="Saving...",cTn="Current amount {{amount}}",dTn="Referral cashback",uTn="Configure double-sided referral rewards, release delay, caps, and billing-page messaging.",mTn="Enable referral cashback",pTn="Reward tiers",fTn="Add tier",gTn="Recipient",hTn="From day",yTn="Until day",vTn="Percent",bTn="Label",xTn="Action",$Tn="Inviter",wTn="Invitee",kTn="No end",CTn="Remove tier",STn="Release delay (days)",ATn="Per-topup cap (USD)",TTn="Min topup (USD, blank = none)",RTn="Cashback expiry (days, blank = never)",PTn="Billing-page countdown banner",_Tn="Banner title",jTn="Subtitle",NTn="Countdown mode",DTn="Global deadline",MTn="Each invitee's 30-day window",ETn="Ends at",ITn="Save referral settings",OTn="v{{version}}",LTn="Saving reward tiers, release delay, caps, or expiry publishes a NEW version. Existing referral relationships keep the version they were bound under — only new signups get the new terms. Pausing only affects new signups.",UTn="Version history",BTn="Version",FTn="Status",zTn="Reward tiers",qTn="Published",HTn="Superseded",VTn="current",KTn="Top-up discount codes",GTn="Discount codes lower what users pay at checkout; the full top-up amount is credited only after payment succeeds. Configure here, then generate codes below.",WTn="Enable discount codes",YTn="Discount type",QTn="Fixed amount off (USD)",XTn="Percentage off (%)",ZTn="Amount off (USD)",JTn="Percentage off (0-100)",eRn="Save discount",tRn="Default low-balance alert",nRn="New users get an email low-balance alert at this threshold by default. Changing it only affects future signups, not existing wallets.",aRn="Threshold (USD)",oRn="Save threshold",sRn="Current: {{amount}}",rRn="Generate codes against the discount rule above.",iRn="In effect: {{state}} · {{value}} off",lRn="enabled",cRn="disabled",dRn="Issued codes",uRn="Pick a batch to see who redeemed each code.",mRn="No batches yet",pRn="Generate a batch above to start tracking redemptions.",fRn="Total",gRn="Redeemed",hRn="Reserved",yRn="Available",vRn="Codes in {{code}}",bRn="No codes in this batch",xRn="Code",$Rn="Redeemed by",wRn="Redeemed at",kRn="Paid",CRn="Discount",SRn="コードを作成",ARn="共有コードは 1 つのコードを複数ユーザーが最大 N 回まで利用可能。ユニークコードのバッチは N 個の使い切りコードです。",TRn="コードの種類",RRn="単一の共有コード",PRn="ユニークコードのバッチ",_Rn="コード文字列(空欄でランダム生成)",jRn="例: WELCOME100",NRn="総利用回数(N)",DRn="ユーザーごと",MRn="有効期限(任意)",ERn="グループ(任意)",IRn="共有コードを作成",ORn="共有コードを作成しました",
803LRn="このバッチ専用の割引を使用(未設定なら上記ルールを適用)",URn="共有コード",BRn="1 つのコードを複数ユーザーが利用。利用数は支払い済みの引き換えを集計します。",FRn="共有コードはまだありません",zRn="利用数 / 上限",qRn="ユーザーごと",HRn="有効期限",VRn="無効化",KRn="このコードを無効化しますか?",GRn="新規のチェックアウトは即座にブロックされます。すでにチェックアウト中の注文はそのまま完了できます。",WRn="コードを無効化しました",YRn="CSV",QRn="状態",XRn="メール",ZRn={code:"コード",discount:"割引",redeemed:"利用済み",cap:"上限",perUser:"ユーザーごと",status:"状態",expiresAt:"有効期限",batch:"バッチ",createdAt:"作成日時",redeemedBy:"利用者",redeemedAt:"利用日時",paid:"支払い済み",discountAmount:"割引",email:"Email",credited:"Credited",bonus:"Bonus",paidAt:"Paid at"},JRn="Amount",ePn="Bound at",tPn="Counterparty",nPn="Invitee",aPn="Inviter",oPn="Rate",sPn="Released",rPn="Role",iPn="Tier",lPn="Top-up",cPn="Load more",dPn="No referrals under this version",uPn="No cashback under this version",mPn="Referrals",pPn="Referral records",fPn="Cashback records",gPn="Version detail",hPn={title:"Top-up bonus",description:"Reward bigger top-ups with bonus credit. Each tier can grant general credit or credit restricted to a model group.",enabled:"Enable top-up bonus",saved:"Top-up bonus saved",tiers:"Bonus tiers",tiersHint:"Top-up matches the highest tier whose threshold it reaches. Restricted credit only applies to synchronous text/image calls — not video or async image jobs.",noTiers:"No tiers yet. Add one to start rewarding top-ups.",min:"Min top-up (USD)",rewardType:"Reward",bonus:"Fixed (USD)",percent:"Percent (%)",rewardBonus:"Bonus amount (USD)",rewardPercent:"Percent of top-up (%)",expiryDays:"Expiry (days, blank = never)",noExpiry:"Never",scope:"Credit scope",scopeHint:"General credit works on any model; a model group restricts the bonus to those models.",scopeGeneral:"General (any model)",removeTier:"Remove tier",addTier:"Add tier",antifraud:"Abuse guards",minTopup:"Min top-up to qualify (USD, blank = none)",maxBonusPerUser:"Max bonus per user (USD, blank = none)",none:"None",excludeRisky:"Exclude watchlisted / blocked users",save:"Save top-up bonus",createScope:"New restricted model group",createScopeDescription:"Pick the models a restricted bonus may be spent on, then reference this group from a tier above.",scopeName:"Group name",scopeNamePlaceholder:"High-margin models",scopeModels:"Models",pickModels:"Pick models",nModels:"{{count}} models",createScopeButton:"Create group",scopeCreated:"Model group created"},yPn="引き換えコードを生成",vPn="プリペイドカード型の引き換えコードです。ユーザーが請求ページでコードを入力すると、額面がそのまま残高に反映されます(付与残高のため、支払いは不要です)。",bPn="バッチ名(任意)",xPn="例: Conf-2026 配布分",$Pn="生成数",wPn="1枚あたりの額面(USD)",kPn="このバッチで1アカウントあたりに引き換え可能な枚数(空欄 = 無制限)",CPn="無制限",SPn="引き換え期限(任意)",APn="Restrict to models (optional)",TPn="General balance (no restriction)",RPn="{{count}} models selected",PPn="Blank = general balance. Selected models share one earmarked pool.",_Pn="Credit validity after redemption (days, blank = never expires)",jPn="never expires",NPn="{{n}} d",DPn="Models",MPn="Validity",EPn="General balance",IPn="引き換えコードを生成",OPn="すぐに保存してください。後からでもバッチ一覧の「平文でエクスポート」で再取得できます。",LPn="引き換えコードのバッチ",UPn="バッチをクリックすると各コードの詳細を確認できます。「平文でエクスポート」でコードを再エクスポートできます。",BPn="引き換えコードのバッチはまだありません。",FPn="バッチ",zPn="額面",qPn="平文でエクスポート",HPn="この引き換え済みコードを取り消しますか。",VPn="ユーザー残高から未消費分のみを回収します。消費済みの分は回収できません。",KPn="取り消す",GPn="{{amount}} を取り消しました。",WPn="引き換えコードをエクスポートしました。",YPn="このバッチの未使用コードを無効化しますか。",QPn="未使用のコードはすべて無効になります。使用済みのコードには影響しません。",XPn="{{n}}
803 件のコードを無効化しました。",ZPn="Bonus % on top-up",JPn="Bonus (%)",e_n="Bonus validity (days, optional)",t_n="blank = never expires",n_n={view:"Payments",title:"Payments via ····{{code}}",email:"User",credited:"Credited",bonus:"Bonus",summary:"{{count}} payments · {{users}} users · {{paid}} paid · {{bonus}} bonus granted",empty:"No payments through this code yet"},a_n={configTitle:"Task wall config",configDescription:"Amounts, switches and accepted hosts. Task copy lives in the translation files, not here. Changes take effect on the next page load — no deploy.",enabled:"Enable the task wall",tasksTitle:"Tasks",taskKey:"Task key",amount:"Amount (USD)",hosts:"Accepted hosts",hostsHint:"Links outside this list are rejected at submission time.",taskEnabled:"Visible to users",addTask:"Add task",guardsTitle:"Abuse guards",dailyCap:"Daily pending cap",dailyCapHint:"0 = no cap. Fail-open if Redis is down.",minAge:"Minimum account age (days)",minAgeHint:"0 = no age gate.",saved:"Task wall saved",queueTitle:"Submissions",queueCount:"{{count}} shown",empty:"Nothing here.",approve:"Approve & pay",approved:"Approved — credit granted",reject:"Reject",rejected:"Rejected",confirmReject:"Confirm reject",reasonPlaceholder:"Why is this rejected?",duplicate:"Same link from {{count}} other account(s)",status:{pending:"Pending",approved:"Approved",rejected:"Rejected"}},o_n={title:EAn,description:IAn,tabs:OAn,couponBatch:LAn,promotionRule:UAn,count:BAn,batchCode:FAn,creating:zAn,createBatch:qAn,codesCreated:HAn,codesCreated_plural:VAn,batch:KAn,copied:GAn,copyAll:WAn,creditGrants:YAn,source:QAn,status:XAn,noGrants:ZAn,noGrantsDescription:JAn,time:eTn,user:tTn,amount:nTn,signupBonus:aTn,signupBonusDescription:oTn,signupBonusEnabled:sTn,signupBonusAmount:rTn,saveSignupBonus:iTn,saving:lTn,currentSignupBonus:cTn,referral:dTn,referralDescription:uTn,referralEnabled:mTn,referralRewardTiers:pTn,addTier:fTn,tierRole:gTn,tierFromDay:hTn,tierUntilDay:yTn,tierPercent:vTn,tierLabel:bTn,tierAction:xTn,roleReferrer:$Tn,roleReferee:wTn,noEndDay:kTn,removeTier:CTn,releaseDelayDays:STn,referralCap:ATn,referralMinTopup:TTn,referralExpiryDays:RTn,bannerEnabled:PTn,bannerTitle:_Tn,bannerSubtitle:jTn,bannerMode:NTn,bannerModeGlobal:DTn,bannerModeWindow:MTn,bannerEndsAt:ETn,saveReferral:ITn,referralVersion:OTn,referralPublishHint:LTn,referralVersionHistory:UTn,versionCol:BTn,versionStatus:FTn,versionTiers:zTn,versionPublished:qTn,versionSuperseded:HTn,versionCurrent:VTn,discountRule:KTn,discountRuleDescription:GTn,discountEnabled:WTn,discountType:YTn,discountFixed:QTn,discountPercent:XTn,discountValueFixed:ZTn,discountValuePercent:JTn,saveDiscount:eRn,defaultLowBalanceThreshold:tRn,defaultLowBalanceThresholdDescription:nRn,defaultLowBalanceThresholdAmount:aRn,saveDefaultLowBalanceThreshold:oRn,currentDefaultLowBalanceThreshold:sRn,couponBatchDescription:rRn,discountEffective:iRn,stateEnabled:lRn,stateDisabled:cRn,couponTrace:dRn,couponTraceDescription:uRn,noBatches:mRn,noBatchesDescription:pRn,batchTotal:fRn,batchRedeemed:gRn,batchReserved:hRn,batchActive:yRn,codesInBatch:vRn,noCodes:bRn,code:xRn,redeemedBy:$Rn,redeemedAt:wRn,paid:kRn,discount:CRn,createIssuance:SRn,createIssuanceDescription:ARn,formLabel:TRn,formShared:RRn,formUniqueBatch:PRn,sharedCodeText:_Rn,sharedCodeRandomHint:jRn,sharedMaxRedemptions:NRn,sharedPerUser:DRn,expiresAt:MRn,batchCodeOptional:ERn,createSharedCode:IRn,sharedCodeCreated:ORn,batchOwnDiscount:LRn,sharedCodesList:URn,sharedCodesListDescription:BRn,noSharedCodes:FRn,colRedeemedTotal:zRn,colPerUser:qRn,colExpiry:HRn,disableCode:VRn,disableCodeConfirmTitle:KRn,disableCodeConfirmMessage:GRn,codeDisabled:WRn,exportCsv:YRn,statusFilter:QRn,filterByEmail:XRn,csv:ZRn,colAmount:JRn,colBoundAt:ePn,colCounterparty:tPn,colInvitee:nPn,colInviter:aPn,colRate:oPn,colReleasedAt:sPn,colRole:rPn,colTier:iPn,colTopup:lPn,loadMore:cPn,noBindings:dPn,noCashback:uPn,versionBindings:mPn,versionBindingsSection:pPn,versionCashbackSection:fPn,versionDetail:gPn,topup:hPn,redeemCreate:yPn,redeemCreateDescription:vPn,redeemBatchName:bPn,redeemBatchNameHint:xPn,redeemCount:$Pn,redeemFaceValue:wPn,redeemPerUserLimit:kPn,redeemUnlimited:CPn,redeemExpiresAt:SPn,redeemModels:APn,redeemModelsAll:TPn,redeemModelsCount:RPn,redeemModelsHint:PPn,redeemValidityDays:_Pn,redeemValidityForever:jPn,redeemValidityDaysValue:NPn,redeemColModels:DPn,redeemColValidity:MPn,redeemGeneralBalance:EPn,redeemCreateBtn:IPn,redeemRevealHint:OPn,redeemBatches:LPn,redeemBatchesDescription:UPn,redeemNoBatches:BPn,redeemBatchCol:FPn,redeemFace:zPn,redeemReveal:qPn,redeemReverseTitle:HPn,redeemReverseMessage:VPn,redeemReverseBtn:KPn,redeemReversed:GPn,redeemRevealed:WPn,redeemDisableBatchTitle:YPn,redeemDisableBatchMessage:QPn,redeemBatchDisabled:XPn,discountTypeBonusPercent:ZPn,discountValueBonusPercent:JPn,bonusExpiryDays:e_n,bonusExpiryDaysHint:t_n,sharedPayments:n_n,tasks:a_n},s_n="Models",r_n="Model catalog: create, edit, publish.",i_n={label:"Display badges",hint:"Hot / Benefit tags shown on the user-facing models & pricing page.",hot:"Hot",benefit:"Benefit"},l_n="Add model",c_n="Edit {{model}}
803",d_n="New model",u_n="Close",m_n="Basics & content save together; pricing and status changes apply immediately.",p_n="Create the model draft. Set pricing and publish after it exists.",f_n={basics:"Basics",basicsHint:"Identity, upstream mapping, protocols.",config:"Configuration",configHint:"Identity, upstream routing, type and capabilities.",protocols:"Protocols",protocolsHint:"Which API protocols this model serves.",content:"Content & display",contentHint:"i18n summary / description and sort order."},g_n="Provider slug",h_n="Pick a known provider or type a custom slug.",y_n="Model slug",v_n="Aliases",b_n="Comma-separated lookup aliases for import and review.",x_n="Source (customer-visible)",$_n="Label customers see on the model/logs. Blank = vendor. Use it to distinguish same-model variants at different prices.",w_n="Platform",k_n="— select platform —",C_n="Upstream model id (optional; choose from upstream or enter manually)",S_n="Choose from upstream...",A_n="Upstream unavailable",T_n="Protocols",R_n="Input price / 1M (USD)",P_n="Output price / 1M (USD)",__n="EN summary",j_n="Preview",N_n="(No summary)",D_n="No protocol",M_n="Cancel",E_n="Save",I_n="Create draft",O_n={basic:"Identity & routing",pricing:"Pricing",content:"Content & display"},L_n={config:"1 · Configuration",protocols:"2 · Protocols",pricing:"3 · Pricing",display:"Content & display",back:"Back",next:"Next",create:"Create model"},U_n="Context window (tokens)",B_n="Max input the model accepts. Leave blank if unknown.",F_n="Max output tokens",z_n="Max tokens the model can generate per response.",q_n={status:"Status",visibility:"Visibility",hint:"Lifecycle changes apply immediately (with confirmation), separate from Save.",confirmStatus:'Set status to "{{status}}"? Takes effect immediately.',confirmVisibility:'Set visibility to "{{visibility}}"? Takes effect immediately.',statusChanged:"Status set to {{status}}.",visibilityChanged:"Visibility set to {{visibility}}.",publishBlocked:"Cannot publish: core pricing factors are missing. Set them in the Pricing tab first.",statusOption:{draft:"Draft",published:"Published",deprecated:"Deprecated",archived:"Archived"},visibilityOption:{public:"Public",hidden:"Hidden"},availability:"Availability",confirmAvailable:"Mark this model available again? Takes effect immediately.",confirmUnavailable:"Mark this model temporarily unavailable? It stays listed (greyed out) but gateway calls are rejected.",availableChanged:"Model marked available.",unavailableChanged:"Model marked temporarily unavailable.",availabilityOption:{available:"Available",unavailable:"Unavailable"},audience:"Audience",audienceOption:{everyone:"Everyone",paid_only:"Topped-up accounts only"},confirmPaidOnly:"Restrict this model to accounts that have topped up? It stays listed, but users who never paid get a 403 telling them to top up.",confirmEveryone:"Open this model to every account? Takes effect immediately.",paidOnlyChanged:"Model restricted to accounts that have topped up.",everyoneChanged:"Model opened to every account."},H_n="Input modalities",V_n="Declares what this model can receive, including vision, audio, video, and file inputs.",K_n="Output modalities",G_n="Drives the publish gate: text requires text in/out pricing, image/video/embeddings require their factors.",W_n="Image billing style",Y_n="Video billing style",Q_n="How the upstream charges for this output. Required before publishing — the gate demands the matching price factor.",X_n="— select billing style —",Z_n="Per token (image_output_token)",J_n="Per image (per_call_image)",ejn="Per second (video_per_second)",tjn="Per call (video_per_call)",njn="Display order",ajn="Must be a non-negative integer.",ojn="Editing locale",sjn="Upstream release date",rjn="Summary (this locale)",ijn="Description (Markdown, this locale)",ljn={provider:"Provider",status:"Status",visibility:"Visibility",allStatuses:"All model statuses",allVisibility:"All visibility",allProviders:"All providers",search:"Search model slug",mobileTitle:"フィルター"},cjn={label:"Models",empty:"No models",model:"Model",provider:"Provider",source:"Source",status:"Status",visibility:"Visibility",action:"Action",edit:"Edit",setStatus:"Set status for {{model}}",setVisibility:"Set visibility for {{model}}",confirmSet:'Set {{model}} {{field}} to "{{value}}
803"?',sub2api:"Sub2API mapping",textPrice:"Price (in / out $/M)",priceByTokens:"{{kind}} · per-token",imageOutput:"image out",officialPrice:"List",saved:"-{{pct}}%"},djn={invalidPrice:"Price must be a number greater than or equal to 0, or left blank.",highRisk:"This change affects live gateway routing and may cause 404s. Continue?",stale:"This model was changed by someone else. Close and reopen it before editing again."},ujn={savesImmediately:"Pricing changes apply immediately and are not controlled by Save.",createPriceFailed:"Model created, but some prices were not saved. Add them in the Pricing tab.",factors:{title:"Pricing factors",hint:"Each row is an atomic unit (text input/output, cache, image, …). Active rows determine billing from their effective date; history rows record past prices.",liveBanner:"Changes here apply immediately and are recorded in price history — they are not controlled by the bottom Save button.",draftHint:"Save the model draft first; pricing factors are edited inline after the model exists.",addFactor:"Add factor",changePrice:"Change price",expire:"Expire",confirmExpire:"Expire this factor row? It will stop applying immediately and move to history.",changeSaved:"Factor price updated.",expired:"Factor expired.",factor:"Factor",tier:"Tier",tierNone:"(no tier)",unit:"Unit",ourPrice:"Our price (USD)",officialPrice:"Official (USD)",officialAbbr:"official",source:"Source (optional URL or note, ≤128 chars)",historyLabel:"History ({{count}})",emptyTitle:"No active factor prices",empty:'Click "Add factor" to set one.',loadError:"Could not load pricing factors",draftEditorHint:"Set prices now, or leave empty and add them after the model is created.",draftEmpty:"No prices added yet.",remove:"Remove",factorOption:{text_input:"Text input (LLM)",text_output:"Text output (LLM)",cache_read:"Cache read",cache_write_5m:"Cache write (5m TTL)",cache_write_1h:"Cache write (1h TTL)",image_input_token:"Image input token",image_output_token:"Image output token",per_call_image:"Image (per call)",video_per_call:"Video (per call)",video_per_second:"Video (per second)",web_search_call:"Web search call"},unitOption:{per_1m_tokens:"per 1M tokens",per_image:"per image",per_call:"per call",per_second:"per second"},conditions:"Conditions JSON (optional)"},discount:{toggle:"Apply discount",hint:"Set every factor to a fraction of its official price (0.5 = 50% off). Free factors (our price 0) and factors with no official price are skipped.",rate:"Discount rate",preview:"Preview",apply:"Apply",allowMarkup:"Allow markup (rate above 1 prices above official)",noFactors:"No active factors to reprice.",confirmTitle:"Apply discount to all factors?",confirmBody:"Reprice {{count}} factor(s) to {{rate}}× the official price. This is versioned — historical billing is unaffected.",applied:"Repriced {{count}} factor(s) at {{rate}}× official.",stale:"Prices changed since the preview — please preview again.",skipReason:{free_factor_our_zero:"Free factor (our price is 0) — left unchanged",no_official:"No official price — cannot compute",official_zero:"Official price is 0 — skipped"}}},mjn="Discard unsaved changes?",pjn="モデルを編集",fjn={title:s_n,description:r_n,badges:i_n,addModel:l_n,editModel:c_n,newModel:d_n,close:u_n,sheetDescription:m_n,sheetDescriptionNew:p_n,sections:f_n,providerSlug:g_n,providerSlugHint:h_n,modelSlug:y_n,aliases:v_n,aliasesHint:b_n,source:x_n,sourceHint:$_n,platform:w_n,platformUnset:k_n,sub2apiModelId:C_n,chooseSub2api:S_n,upstreamUnavailable:A_n,protocols:T_n,inputPrice:R_n,outputPrice:P_n,enSummary:__n,preview:j_n,noSummary:N_n,noProtocol:D_n,cancel:M_n,save:E_n,createDraft:I_n,tabs:O_n,steps:L_n,contextWindow:U_n,contextWindowHint:B_n,maxOutputTokens:F_n,maxOutputTokensHint:z_n,lifecycle:q_n,inputModalities:H_n,inputModalitiesHint:V_n,outputModalities:K_n,outputModalitiesHint:G_n,billingStyleImage:W_n,billingStyleVideo:Y_n,billingStyleHint:Q_n,billingStyleUnset:X_n,billingStyleToken:Z_n,billingStylePerImage:J_n,billingStylePerSecond:ejn,billingStylePerCall:tjn,displayOrder:njn,displayOrderInvalid:ajn,contentLocale:ojn,upstreamReleaseAt:sjn,summary:rjn,descriptionField:ijn,filters:ljn,table:cjn,errors:djn,pricing:ujn,discardChanges:mjn,editModelShort:pjn},gjn="Rate Limits",hjn="Rate limit policies by scope.",yjn="Rate limit policies",vjn="No policies",bjn="Code",xjn="Name",$jn="Scope",wjn="Status",kjn="Limits",Cjn="No limits",Sjn={auth:"Auth",console:"Console",api_gateway:"API gateway",ops:"Ops",global:"Global"},Ajn={active:"Active",disabled:"Disabled",archived:"Archived"},Tjn={rpm_per_key:"RPM / key",rpm_per_user:"RPM / user",concurrent_streams_per_key:"Streams / key",concurrent_streams_per_user:"Streams / user"},Rjn="New policy",Pjn="Edit",_jn="Action",jjn="New rate limit policy",Njn="Edit {{name}}",Djn="Concurrency and RPM limits applied per API key and per user. Assign a policy to users on the Users page.",Mjn='Delete policy "{{name}}"? Keys and users on it fall back to their default.',Ejn="Policy deleted.",Ijn={identity:"Identity",classification:"Classification",description:"Description",codeImmutable:"Code cannot be changed after creation.",limitsHint:"Leave blank to use the platform default for that limit.",default:"default",invalidLimit:"{{field}} must be a positive integer.",saved:"Policy saved.",cancel:"Cancel",save:"Save",create:"Create policy"},Ojn={title:gjn,description:hjn,label:yjn,empty:vjn,code:bjn,name:xjn,scope:$jn,status:wjn,limits:kjn,noLimits:Cjn,scopes:Sjn,statuses:Ajn,limitNames:Tjn,add:Rjn,edit:Pjn,delete:"Delete",action:_jn,newTitle:jjn,editTitle:Njn,formDescription:Djn,confirmDelete:Mjn,deleted:Ejn,form:Ijn},Ljn="Admins",Ujn="Who can sign in to the admin console. Owner-only.",Bjn="Admins",Fjn="No admins yet",zjn="Email",qjn="Name",Hjn="Role",Vjn="Status",Kjn="Last login",Gjn="Action",Wjn="Add admin",Yjn="Add admin",Qjn="The email becomes an admin immediately and signs in with it — admin access is matched by email. It does not need an account yet.",Xjn="Email",Zjn="[email protected]",Jjn="Name",e2n="Display name",t2n="Role",n2n="Admin added.",a2n="Change role",o2n="Role updated.",s2n="Suspend",r2n="Activate",i2n="Status updated.",l2n="Remove",c2n="Admin removed.",d2n="Remove {{email}} as an admin? They lose console access immediately.",u2n="You",m2n="Never",p2n={owner:"Owner",admin:"Admin",
803support:"Support"},f2n={active:"Active",suspended:"Suspended"},g2n={title:Ljn,description:Ujn,label:Bjn,empty:Fjn,email:zjn,name:qjn,role:Hjn,status:Vjn,lastLogin:Kjn,action:Gjn,add:Wjn,newTitle:Yjn,formDescription:Qjn,emailLabel:Xjn,emailPlaceholder:Zjn,nameLabel:Jjn,namePlaceholder:e2n,roleLabel:t2n,added:n2n,changeRole:a2n,roleChanged:o2n,suspend:s2n,activate:r2n,statusChanged:i2n,remove:l2n,removed:c2n,confirmRemove:d2n,self:u2n,never:m2n,roles:p2n,statuses:f2n},h2n="Upstream",y2n="Read-only upstream configuration mirror plus controlled OneHop routing pools.",v2n="Open upstream admin",b2n="Upstream tabs",x2n={overview:"Overview",keyPools:"Key pools",groups:"Groups",channels:"Channels",accounts:"Accounts"},$2n={todayRequests:"Today requests",total:"{{value}} total",upstreamCostToday:"Upstream cost today",providerAccounts:"Provider accounts",health:"Health",stale:"stale",checkPools:"check pools",online:"online"},w2n={upstreamStatsFailed:"Upstream stats failed to load",retry:"Retry",configAuditFailed:"Config audit failed",keyPoolsLoadFailed:"Key pools failed to load",createKeyPoolFailed:"Create key pool failed",keyPoolTestFailed:"Key pool test failed",keyPoolRotateFailed:"Key pool rotate failed",failedLoad:"{{title}} failed to load"},k2n={title:"Config audit",description:"Compares OneHop key pools and published model routing against upstream routing. Provider groups, channels, pricing, and accounts remain read-only here.",running:"Running...",run:"Run audit",poolsChecked:"Pools checked",modelAudit:"Model audit",checkedAt:"Checked at",needsReview:"needs review",done:"done",ok:"ok",upstreamCoverage:"上流カバレッジ",coverageUnchecked:"アカウントを取得できません",coverageOnlyAccount:"{{accounts}} のみ",coverageNoAccount:"この上流 ID をマッピングする配車可能なアカウントがありません"},C2n={title:"Topology",keyPools:"Key pools",activeGroups:"Active groups",activeChannels:"Active channels",accounts:"Accounts",editingBoundaryTitle:"Editing boundary",editingBoundaryDescription:"The upstream admin exposes deep edit workflows for groups, channels, pricing rules, provider accounts, monitoring, and system settings. OneHop intentionally mirrors only the operational read path and owns internal key pools, so edits that change provider routing still happen in the original admin."},S2n={title:"OneHop internal key pools",description:"Pools select which upstream internal key OneHop uses per protocol and model pattern. Full secrets are never displayed.",poolCode:"Pool code",poolName:"Pool name",defaultPool:"Default pool",notDefault:"Not default",plaintextKey:"Plaintext key",create:"Create",label:"Provider routing key pools",pool:"Pool",protocols:"Protocols",models:"Models",routingGroup:"Routing group",status:"Status",health:"Health",key:"Key",lastCheck:"Last check",action:"Action",priority:"priority {{value}}",default:"default",secret:"secret",hidden:"hidden",test:"Test",rotate:"Rotate",empty:"No key pools",emptyDescription:"Create an internal pool before routing production traffic through provider routing.",newPlaintextKey:"New plaintext key",confirmRotate:"Confirm rotate",editProtocols:"Edit protocols",editProtocolsTitle:"Edit protocols (replace)",confirmEditProtocols:"Save protocols",cancelEditProtocols:"Cancel",forceEditProtocols:"Force save (override routing check)"},A2n={editUpstreamConfig:"Edit upstream config",groupsTitle:"Groups",groupsDescription:"Routing buckets from upstream config. OneHop uses these as source-of-truth context for key-pool binding and audit decisions.",groupsLabel:"Routing groups",groupsEmpty:"No groups",groupsEmptyDescription:"Upstream config did not return any groups.",channelsTitle:"Channels",channelsDescription:"Provider channel configuration from upstream config, including model mappings and pricing rule coverage.",channelsLabel:"Provider routing channels",channelsEmpty:"No channels",channelsEmptyDescription:"Upstream config did not return any channels.",accountsTitle:"Accounts",accountsDescription:"Provider accounts are redacted in OneHop. Use the upstream admin for credential edits and OAuth refresh flows.",accountsLabel:"Provider routing accounts",accountsEmpty:"No accounts",accountsEmptyDescription:"Upstream config did not return any provider accounts."},T2n={group:"Group",platform:"Platform",rate:"Rate",rpm:"RPM",accounts:"Accounts",limits:"Limits",status:"Status",updated:"Updated",channel:"Channel",billingSource:"Billing source",mappings:"Mappings",pricing:"Pricing",account:"Account",groups:"Groups",baseUrl:"Base URL",capacity:"Capacity",lastUsed:"Last used"},R2n={noDescription:"No description",unlimited:"unlimited",schedulable:"schedulable",notSchedulable:"not schedulable",loading:"Loading...",noPricingRules:"No pricing rules",modelsCount:"{{count}} models",none:"none",channelMapped:"Channel mapped",requestedModel:"Requested model",upstreamModel:"Upstream model",priority:"priority",unknown:"unknown"},P2n={serving:{label:"Serving state",serving:"Serving",rate_limited:"Rate-limited",overloaded:"Overloaded",expired:"Expired",paused:"Paused",error:"Error",disabled:"Disabled"},quota:{label:"Quota (today)",noLimit:"no limit",spend:"{{spend}} / {{limit}}"},accounts:{breakdown:"{{normal}} normal · {{error}} error · {{ratelimit}} limited · {{overload}} overload"},freshness:{updated:"updated {{ago}}",never:"never"},pools:{lastError:"Last error",resync:"Resync"},audit:{poolFindings:"Pool findings",clean:"clean",findingsCount:"{{count}} issue(s)"},tokensToday:"{{count}} tok today"},_2n={title:h2n,description:y2n,openUpstreamAdmin:v2n,tabsLabel:b2n,tabs:x2n,metrics:$2n,errors:w2n,audit:k2n,topology:C2n,pools:S2n,readonly:A2n,table:T2n,common:R2n,ops:P2n},j2n="Platform usage",N2n="Cross-user request metering with cost, token, latency, and routing signals.",D2n="Refresh",M2n={label:"Auto refresh",off:"Off"},E2n="Exporting",I2n="Export CSV",O2n="Failed to export usage records",L2n="Requests",U2n="{{count}} successful",B2n="Users",F2n="Matched by current filters",z2n="Billed credit",q2n="{{cost}} upstream cost",H2n="Tokens",V2n="Avg {{duration}}",K2n="User email",G2n="Search by email",W2n="Model",Y2n="Search by model",Q2n="Status",X2n="Protocol",Z2n="Rows",J2n="Reset",eNn="Ops usage records",tNn="No usage records",nNn="User",aNn="Endpoint",oNn="{{count}} total",sNn="In {{input}} / out {{output}}",rNn="Upstream",iNn="Billed",lNn="Latency",cNn="Started",dNn="Page {{page}} · showing {{shown}} of {{total}} matching records",uNn="Previous",mNn="Next",pNn="{{count}} rows on this page",fNn="Times shown in",gNn="{{count}} API keys",hNn="Spend snapshot",yNn="from OneHop billing snapshot",vNn="User spend",bNn="total billed to users",xNn="Avg latency",$Nn="settled requests",wNn="Range",kNn={today:"Today",days7:"7 days",days30:"30 days",all:"All time"},CNn="Metric",SNn={cost:"Spend",tokens:"Tokens",requests:"Requests"},ANn="Distribution",TNn={model:"モデル",requestedModel:"Requested model",upstreamModel:"Upstream model",apiKey:"API key",user:"User",endpoint:"Endpoint",channel:"Channel",group:"Group",stream
803:"Transport (stream/sync)"},RNn="Usage trend",PNn="Usage by model",_Nn="Hourly",jNn="Daily",NNn="Top endpoints",DNn="Top dimension rows",MNn="Request logs",ENn="API key",INn="Type",ONn="Billing",LNn="Channel",UNn="Group",BNn="Request ID",FNn="req_ / usg_ / upstream",zNn="All types",qNn="All billing",HNn={user:"User",time:"Time",model:"Model",tokens:"Tokens",cost:"Spend",routing:"Routing",latency:"Latency",status:"Status",duration:"Duration"},VNn="Failed to load usage",KNn="Loading usage records",GNn="Try a different filter set.",WNn="No trend data",YNn="No distribution data",QNn="No rows",XNn="Spend breakdown",ZNn={upstreamList:"Upstream list",discount:"Discount",sub2apiActual:"Sub2API actual",groupChannelMultiplier:"Group/channel multiplier",accountMultiplier:"Account multiplier",sub2apiFinalCharge:"Final spend",billedFactors:"Billed to user"},JNn="Request detail",eDn="Unknown user",tDn="Loading...",nDn="Sub2API actual",aDn="Group multiplier",oDn="Account multiplier",sDn="Identity",rDn="User ID",iDn="Key suffix",lDn={hopIdentity:"Hop identity",logicalUsageId:"Logical usage ID",logicalRequestedModel:"Logical requested model",logicalModel:"Logical model",actualRequestedModel:"Actual requested model",actualModel:"Actual model",fallbackHop:"Fallback hop",userVisibility:"User visibility",visible:"Visible",hidden:"Hidden",supersedesUsageRecord:"Supersedes record",pricingAudit:"Continuity pricing audit",mode:"Mode",policyVersion:"Policy version",sourceModel:"Source model",targetModel:"Target model",requestedRawQuote:"Requested raw quote",requestedQuote:"Requested quote",actualPricingStatus:"Actual pricing status",actualPricingAvailable:"Available",actualPricingUnavailable:"Unavailable",actualQuote:"Actual quote",chargedQuote:"Charged quote",variance:"Quote variance",actualPricingError:"Actual pricing error"},cDn="Input",dDn="Output",uDn="Cache read",mDn="Cache write",pDn="Raw metadata",fDn="Request",gDn="Usage ID",hDn="OneHop ID",yDn="Sub2API ID",vDn="Sub2API log",bDn="Routing",xDn="Mapping",$Dn="Performance",wDn="First token",kDn="Total",CDn="Error",SDn="Code",ADn="Message",TDn={time:"Time",user:"User",apiKey:"API key",model:"Model",logicalUsageId:"Logical usage ID",logicalRequestedModel:"Logical requested model",logicalModel:"Logical model",actualRequestedModel:"Actual requested model",actualModel:"Actual model",fallbackHop:"Fallback hop",userVisible:"User visible",supersedesUsageRecord:"Supersedes usage record",upstreamModel:"Upstream model",protocol:"Protocol",endpoint:"Endpoint",type:"Type",status:"Status",inputTokens:"Input tokens",outputTokens:"Output tokens",cacheRead:"Cache read",cacheWrite:"Cache write",sub2apiActual:"Sub2API actual",sub2apiCharge:"Spend",continuityMode:"Continuity mode",continuityPolicyVersion:"Continuity policy version",continuitySourceModel:"Continuity source model",continuityTargetModel:"Continuity target model",continuityRequestedRawQuote:"Continuity requested raw quote",continuityRequestedQuote:"Continuity requested quote",continuityActualPricingStatus:"Continuity actual pricing status",continuityActualQuote:"Continuity actual quote",continuityChargedQuote:"Continuity charged quote",continuityVariance:"Continuity quote variance",continuityActualPricingError:"Continuity actual pricing error",durationMs:"Duration ms",channel:"Channel",group:"Group",onehopRequestId:"OneHop request ID",sub2apiRequestId:"Sub2API request ID",firstTokenMs:"First token ms"},RDn={analytics:"Usage analytics",logs:"Request logs"},PDn={label:"Chart view",stacked:"Over time",ranking:"Ranking"},_Dn={failedOnly:"Failed only",slowOnly:"Slow > {{sec}}s"},jDn="More filters",NDn="Slow threshold (ms)",DDn="No model usage",MDn="No requests yet — usage will appear here as traffic comes in.",EDn="Viewing",IDn="streaming requests",ODn="Avg duration",LDn="Latency = time to first token (TTFT); Duration = total. The slow filter uses TTFT and only covers successful requests with a recorded first token (earlier or failed requests show —).",UDn="Open request detail",BDn={title:j2n,description:N2n,refresh:D2n,autoRefresh:M2n,exporting:E2n,exportCsv:I2n,exportError:O2n,requests:L2n,successful:U2n,users:B2n,matchedFilters:F2n,billedCredit:z2n,upstreamCost:q2n,tokens:H2n,avgDuration:V2n,userEmail:K2n,searchEmail:G2n,model:W2n,searchModel:Y2n,status:Q2n,protocol:X2n,rows:Z2n,reset:J2n,label:eNn,empty:tNn,user:nNn,endpoint:aNn,totalTokens:oNn,inOut:sNn,upstream:rNn,billed:iNn,latency:lNn,started:cNn,pageSummary:dNn,previous:uNn,next:mNn,rowsOnPage:pNn,timesShownIn:fNn,apiKeys:gNn,sub2apiCharge:hNn,sub2apiChargeSource:yNn,userSpend:vNn,userSpendSource:bNn,avgLatency:xNn,settledRequests:$Nn,range:wNn,ranges:kNn,metric:CNn,metrics:SNn,distribution:ANn,breakdown:TNn,usageTrend:RNn,stackedByModel:PNn,hourly:_Nn,daily:jNn,topEndpoints:NNn,topDimensionRows:DNn,requestLogs:MNn,apiKey:ENn,type:INn,billing:ONn,channel:LNn,group:UNn,requestId:BNn,requestIdPlaceholder:FNn,allTypes:zNn,allBilling:qNn,table:HNn,failedLoad:VNn,loadingRecords:KNn,tryDifferentFilters:GNn,noTrendData:WNn,noDistributionData:YNn,noRows:QNn,costBreakdown:XNn,adminCost:ZNn,requestDetail:JNn,unknownUser:eDn,loading:tDn,sub2apiActual:nDn,groupMultiplier:aDn,accountMultiplier:oDn,identity:sDn,userId:rDn,keySuffix:iDn,continuity:lDn,input:cDn,output:
803dDn,cacheRead:uDn,cacheWrite:mDn,rawMetadata:pDn,request:fDn,usageId:gDn,onehopId:hDn,sub2apiId:yDn,sub2apiLog:vDn,routing:bDn,mapping:xDn,performance:$Dn,firstToken:wDn,total:kDn,error:CDn,code:SDn,message:ADn,csv:TDn,tabs:RDn,modelView:PDn,chip:_Dn,moreFilters:jDn,slowThreshold:NDn,noModelUsage:DDn,noTrendToday:MDn,viewing:EDn,avgLatencySub:IDn,avgTotalDuration:ODn,latencyHint:LDn,openRequestDetail:UDn},FDn="Search",zDn="Search by user ID, email, or name",qDn="User",HDn="Back to users",VDn="You do not have permission to view this section.",KDn="Refund",GDn="Refunding...",WDn="Initiate a refund of {{amount}} for {{email}}? Refunds are processed asynchronously; the balance updates after the worker runs.",YDn="Refund initiated.",QDn={overview:"Overview",network:"Network & Device",recentCalls:"Recent Calls",apiKeys:"APIキー",payments:"Payments",refunds:"Refunds",subscription:"Subscription",referrals:"Referrals",rewards:"Rewards",audit:"Audit"},XDn={title:"Free token allowance",paused:"Free token grants are paused on this account (risk review).",daily:"Daily",weekly:"Weekly",tokensUnit:"tokens",remaining:"{{value}} tokens remaining today"},ZDn={title:"Free model quota (today)",tokens:"tokens",remaining:"{{value}} tokens remaining today",unlimited:"Free quota: unlimited (gate disabled)",eligibilityLabel:"Free tier eligibility",eligible:"Free tier",ineligible:"Ineligible (same device used)"},JDn={phase2:"Subscriptions are coming in Phase 2."},eMn={empty:"No payments"},tMn={empty:"No refunds"},nMn={empty:"No credit buckets",note:"Credit buckets show current balance inventory. Grant and refund history appear in the Audit timeline; referral rewards in the Referrals section."},aMn={totalEarned:"Total earned",frozenEarned:"Frozen",refereeCount:"Referees",activeCount:"Active",role:"Role",counterparty:"Counterparty",empty:"No referral activity"},oMn={empty:"No audit records"},sMn={amount:"Amount",credit:"Credit",status:"Status",provider:"Provider",createdAt:"Created",type:"Type",originalTx:"Original tx",remaining:"Remaining",initial:"Initial",expiresAt:"Expires",event:"Event",action:"Action",severity:"Severity"},rMn={ipLocationTitle:"IP・位置情報",deviceBrowserTitle:"デバイス・ブラウザ",stripeTitle:"Stripe",signupIp:"登録時IP",signupCountry:"登録国",lastLoginIp:"最終ログインIP",ipDifferent:"登録時IPと異なる",sameIpAccounts_one:"同じ登録時IPのアカウント {{count}} ä»¶",sameIpAccounts_other:"同じ登録時IPのアカウント {{count}} ä»¶",sameDeviceAccounts_one:"同じデバイスのアカウント {{count}} ä»¶",sameDeviceAccounts_other:"同じデバイスのアカウント {{count}} ä»¶",deviceFingerprint:"デバイスフィンガープリント",freeTierEligible:"無料枠の適用可否",firstDevice:"このデバイスで最初",notFirstDevice:"このデバイスで最初ではありません — 無料特典なし",browser:"ブラウザ",os:"OS",deviceType:"デバイスタイプ",acceptLanguage:"Accept-Language",stripeCustomerId:"Stripe Customer ID",viewOnIpinfo:"ipinfo.ioで表示"},iMn={empty:"まだ呼び出しはありません",viewAll:"すべてのログを表示 →",colStatus:"ステータス",colTime:"時刻",colModel:"モデル",colProtocol:"プロトコル",colDuration:"所要時間",colCost:"コスト",colFreeDiscount:"無料クレジット"},lMn={empty:"API keys はまだありません",colName:"名前",colKey:"Key",colStatus:"状態",colPolicy:"レート制限ポリシー",colLastUsed:"最終使用",colCreated:"作成日時",colExpires:"有効期限",colSpend:"消費額",spendTitle:"消費内訳",spend30d:"過去 30 日",spendAllTime:"累計",spendRequests:"リクエスト数"},cMn="コピー",dMn="コピー済み",uMn={search:FDn,searchPlaceholder:zDn,title:qDn,backToList:HDn,noBlockPerm:VDn,refund:KDn,refunding:GDn,refundConfirm:WDn,refundInitiated:YDn,nav:QDn,freeTokens:XDn,freeQuota:ZDn,subscription:JDn,payments:eMn,refunds:tMn,rewards:nMn,referrals:aMn,audit:oMn,col:sMn,network:rMn,recentCalls:iMn,apiKeys:lMn,copy:cMn,copied:dMn},mMn="Users",pMn="Search users, grant credit, and suspend accounts.",fMn="Email",gMn="Search by email",hMn="Account status",yMn={active:"アカウントは有効。サインインã
803¨ gateway 呼び出しが可能",suspended:"停止中。Gateway がすべてのリクエストを拒否(401)"},vMn="Risk",bMn={normal:"すべての無料特典の対象",watchlisted:"無料 token と登録ボーナスなし。チャージと gateway 呼び出しは可能",blocked:"Gateway がすべてのリクエストを拒否(401)。完全に禁止"},xMn="Users",$Mn="No users found",wMn="Country",kMn="Last login",CMn="Action",SMn="View",AMn="Deleted",TMn="Set status for {{email}}",RMn='Set {{email}} to "{{status}}"?',PMn="Grant credit",_Mn="Add bonus credit to {{email}}. Recorded in the ledger.",jMn="Amount (USD)",NMn="e.g. 5",DMn="Reason (optional)",MMn="e.g. compensation for downtime",EMn="Type",IMn="Bonus credit",OMn="A gift. Does not count as a top-up.",LMn="Offline payment",UMn="Money we actually received. Counts as a top-up: unlocks paid-only models and rate-limit tiers.",BMn="Reference no.",FMn="e.g. bank slip 20260907-001",zMn="Record payment",qMn="Recording...",HMn="Cancel",VMn="Granting...",KMn="Grant",GMn="Grant ${{amount}} to {{email}}? This is a large amount.",WMn="No display name",YMn="Loading...",QMn="score {{score}}",XMn="Email verified",ZMn="Yes",JMn="No",eEn="Signup",tEn="Signup method",nEn="Last login method",aEn="Signup bonus",oEn="Onboarding",sEn="Locale / TZ",rEn="Markup ratio",iEn="Rate limit policy",lEn="Rate limit policy updated.",cEn="Joined",dEn="Never",uEn="Balance",mEn="Wallet & spend",pEn="Total spent",fEn="Recharged",gEn="Bonus granted",hEn="Refunded",yEn="Requests",vEn="Tokens",bEn="Actions",xEn="Identity & risk",$En="Role",wEn="No permitted actions for your role.",kEn="Acquisition source",CEn="Acquisition by source",SEn="Direct / unknown",AEn="Custom source…",TEn="Set",REn="Auto-detected: {{source}}",PEn="UTM",_En="Referred by",jEn="メモ",NEn="このユーザーを識別するためのメモを追加",DEn="メモを保存",MEn="メモを保存しました",EEn="メモなし",IEn="フィルター",OEn="Location",LEn="Preferred locale",UEn={title:mMn,description:pMn,email:fMn,searchEmail:gMn,status:hMn,statusEffect:yMn,risk:vMn,riskEffect:bMn,label:xMn,empty:$Mn,country:wMn,lastLogin:kMn,action:CMn,view:SMn,deleted:AMn,setStatusAria:TMn,setStatusConfirm:RMn,grantCredit:PMn,grantDescription:_Mn,amountUsd:jMn,amountPlaceholder:NMn,reason:DMn,reasonPlaceholder:MMn,grantKind:EMn,grantKindBonus:IMn,grantKindBonusHint:OMn,grantKindOffline:LMn,grantKindOfflineHint:UMn,referenceNo:BMn,referenceNoPlaceholder:FMn,recordPayment:zMn,recording:qMn,cancel:HMn,granting:VMn,grant:KMn,largeGrantConfirm:GMn,noDisplayName:WMn,loading:YMn,score:QMn,emailVerified:XMn,yes:ZMn,no:JMn,signup:eEn,signupMethod:tEn,lastLoginMethod:nEn,signupBonus:aEn,onboarding:oEn,localeTz:sEn,markupRatio:rEn,rateLimitPolicy:iEn,rateLimitPolicyChanged:lEn,joined:cEn,never:dEn,walletBalance:uEn,walletSection:mEn,consumed:pEn,recharged:fEn,bonusGranted:gEn,refunded:hEn,requests:yEn,tokens:vEn,actionsSection:bEn,identitySection:xEn,role:$En,noPermittedActions:wEn,acquisitionSource:kEn,acquisitionTitle:CEn,sourceDirect:SEn,sourceCustomPlaceholder:AEn,sourceSet:TEn,sourceCaptured:REn,utm:PEn,referrer:_En,note:jEn,notePlaceholder:NEn,noteSave:DEn,noteSaved:MEn,noteEmpty:EEn,filters:IEn,location:OEn,preferredLocale:LEn},BEn="Webhooks",FEn="Stripe webhook events. Status filter, retry, payload inspection.",zEn="Status",qEn="Event type",HEn="Received",VEn="Event type",KEn="Status",GEn="Mode",WEn="Attempts",YEn="Retry",QEn="Retry queued",XEn="Event {{event}} reset to pending; next job tick will process.",ZEn="Retry failed",JEn="No webhook events yet.",eIn="Stripe events will appear here once your endpoint is registered.",tIn="Loading payload...",nIn="Last error",aIn="Payload (JSON)",oIn={title:BEn,description:FEn,statusFilter:zEn,eventTypeFilter:qEn,receivedAt:HEn,eventType:VEn,status:KEn,mode:GEn,attempts:WEn,retry:YEn,retrySubmittedTitle:QEn,retrySubmittedBody:XEn,retryFailedTitle:ZEn,empty:JEn,emptyHint:eIn,detailLoading:tIn,lastError:nIn,payload:aIn}
803,sIn="API Keys",rIn="10 秒で最初の key を取得",iIn="コピーに失敗しました",lIn={label:"許可するモデル",allModels:"すべてのモデル",allHint:"カタログ内のすべてのモデルが許可されています。",noModels:"利用できるモデルはありません。",selected:"{{count}} 件選択中",someHint:"{{count}} 件のモデルを許可。"},cIn={label:"タグ",placeholder:"タグを入力して Enter",remove:"削除"},dIn="本番、ステージング、チーム運用向けの scoped key を作成します。",uIn="更新",mIn="デフォルト key",pIn="Key 名",fIn="作成中...",gIn="Key を作成",hIn="完全な key(一度だけ表示)",yIn="API key をコピー",vIn="コピーしました",bIn="コピー",xIn="今すぐコピーして保存してください。このパネルを閉じると完全な key は再表示できません。",$In="保存しました",wIn="API keys の読み込みに失敗しました",kIn="再試行",CIn="API keys はまだありません",SIn="最初の key を作成すると、OneHop 経由でリクエストを送信できます。",AIn={label:"API keys",tags:"タグ",name:"名前",key:"Key",status:"状態",created:"作成日時",action:"操作",usage:"使用量",quota:"上限",expires:"有効期限",lastUsed:"最終使用"},TIn="取り消す",RIn="{{name}} を取り消しますか?この操作は元に戻せません。",PIn="key に名前を付けます。上限と有効期限は必要な場合だけ詳細設定で変更します。",_In="月間 credit 上限",jIn="有効期限",NIn="無制限",DIn="保存中...",MIn="保存",EIn="キャンセル",IIn={title:"無効化 / 取り消し済み",description:"無効化または取り消された key です。無効化された key は再有効化でき、取り消された key は記録として残ります。"},OIn={title:"有効な key はありません",description:"下の無効化された key を再有効化するか、新しい key を作成してください。"},LIn={import:"CCS にインポート",client:"CC-Switch クライアント",codex:"Codex / OpenAI",claude:"Claude Code",pasteHint:"プレースホルダーで CC Switch を開きました。保存した API key を貼り付けてください。",checking:"互換性を確認しています…",blocked:{title:"{{client}} はこのキーを使用できません",body:"「{{keyName}}」では、{{client}} が使用できないモデルのみが許可されています。インポートするとエラーになります。",adjust:"モデル範囲を調整",forceImport:"それでもインポート(動作しません)"},pin:{title:"{{client}} 用に {{model}} としてインポート",body:"「{{keyName}}」には {{client}} のデフォルトモデルが含まれていません。{{client}} のリクエストは、このプロバイダー経由で次のようにルーティングされます:",adjust:"モデル範囲を調整",confirm:"{{model}} でインポート"}},UIn={search:"検索",searchPlaceholder:"名前または key の末尾で検索",status:"状態",allStatus:"すべての状態",clear:"フィルターをクリア",empty:"この条件に一致する key はありません",emptyDescription:"検索または状態フィルターをクリアすると、すべての key が表示されます。",mobileTitle:"フィルター"},BIn={active:"有効",inactive:"無効",revoked:"取り消し済み",expired:"期限切れ",quota_exhausted:"上限到達"},FIn={today:"今日 {{requests}} ä»¶ · {{credit}}",days30:"30 日 {{requests}} ä»¶ · {{credit}}"},zIn={use:"接続情報",edit:"編集",enable:"有効化",disable:"無効化",delete:"削除"},qIn="API key を使う",HIn="保存済みの key で OneHop gateway を呼び出します。完全な key は作成時に一度だけ表示されます。",VIn={baseUrl:"Base URL",keyHint:"API key",authorization:"Authorization ヘッダー",env:"環境変数",curl:"cURL",revealing:"key を復号中…",fullKeyUnavailable:"完全な key は作成時に一度だけ表示されます。保存した値を使うか、失くした場合は新しい key を作成してください。",protocolEndpoints:"プロトコル endpoint"},KIn="詳細設定",GIn="API key を作成",WIn="API key を編集",YIn={label:"モデルアクセス",all:"ã
803™ã¹ã¦ã®ãƒ¢ãƒ‡ãƒ«",limited:"特定のモデルに制限",allHint:"この key は今後追加されるモデルを含め、すべてのモデルを呼び出せます。",snapshotHint:"選択したモデルのみ。後から追加されるモデルは自動では含まれません。",snapshotHintEdit:"選択したモデルのみ。新しいモデルは自動では追加されません。「すべてのモデル」に切り替えるとこのホワイトリストが置き換わります。",searchPlaceholder:"モデルを検索…",selectAllResults:"現在の結果をすべて選択({{count}})",selectedCount:"{{count}} / {{max}} 選択済み",clear:"クリア",hiddenSelected:"選択済み {{total}} 件のうち {{hidden}} 件が現在のフィルターで非表示です",selectVendor:"{{vendor}} をすべて選択、{{on}}/{{total}} 選択済み",emptyTitle:"一致するモデルはありません",emptyDescription:"別のタイプまたは検索語を試してください。",loadFailed:"モデルを読み込めませんでした",loadFailedHint:"再試行するか、「すべてのモデル」に戻してください。",type:{all:"すべて",text:"テキスト",image:"画像",video:"動画",embedding:"埋め込み"},pickAtLeastOne:"少なくとも1つのモデルを選ぶか、「すべてのモデル」に戻してください。",limitReached:"Reached the {{max}}-model limit"},QIn={title:"API key を作成しました",subtitle:"{{name}} の準備ができました。今すぐ接続できます。",onceWarning:"一度だけ表示されます。後から再表示できますが、念のため今コピーしてください。",connect:"接続",done:"完了"},XIn="IP",ZIn="{{date}} に取り消し済み",JIn={title:sIn,emptyTitle:rIn,copyFailed:iIn,allowedModels:lIn,tags:cIn,description:dIn,refresh:uIn,defaultName:mIn,keyName:pIn,creating:fIn,createKey:gIn,fullKeyTitle:hIn,copyApiKey:yIn,copied:vIn,copy:bIn,fullKeyDescription:xIn,savedIt:$In,loadFailed:wIn,retry:kIn,empty:CIn,emptyDescription:SIn,table:AIn,revoke:TIn,revokeConfirm:RIn,formDescription:PIn,monthlyCreditLimit:_In,expiresAt:jIn,unlimited:NIn,saving:DIn,save:MIn,cancel:EIn,parked:IIn,noActive:OIn,ccswitch:LIn,filters:UIn,status:BIn,usage:FIn,actions:zIn,useTitle:qIn,useDescription:HIn,use:VIn,advancedSettings:KIn,createTitle:GIn,editTitle:WIn,scope:YIn,created:QIn,lastUsedIp:XIn,revokedAt:ZIn},eOn="Audit Logs",tOn="High-risk admin actions, by action and time.",nOn="Action",aOn="Clear",oOn={ops_user_update_status:"ユーザーのステータスを更新しました",ops_users_allowlist_add:"登録アクセスを追加しました",ops_users_allowlist_update:"登録アクセスを更新しました",ops_users_allowlist_invite:"登録アクセスの招待を送信しました",ops_users_allowlist_revoke:"登録アクセスを削除しました",ops_users_allowlist_restore:"登録アクセスを復元しました",ops_model_create:"モデルを作成しました",ops_model_update:"モデルを更新しました",ops_model_update_status:"モデルのステータスを更新しました",sub2api_pool_create:"ルーティングプールを作成しました",sub2api_pool_test:"ルーティングプールをテストしました",sub2api_pool_rotate_secret:"ルーティングシークレットをローテーションしました"},sOn="Audit logs",rOn="No audit entries",iOn="Time",lOn="Severity",cOn="Target",dOn={ai_model:"Model",sub2api_key_pool:"Routing key pool",sys_user:"User",wallet:"Wallet"},uOn="対象タイプ",mOn="リクエスト ID",pOn={title:eOn,description:tOn,action:nOn,clear:aOn,actions:oOn,label:sOn,empty:rOn,time:iOn,severity:lOn,target:cOn,targetTypes:dOn,targetType:uOn,requestId:mOn},fOn="OneHop にサインイン",gOn="コードを入力",hOn="Google または Email で続行",yOn="コードを受け取る Email を入力してください",vOn="{{email}} に送信された 6 桁のコードを入力してください",bOn="Google で続行",xOn="Email で続行",$On="または",wOn="Email",kOn="確認コードを送信",COn="送信中...",SOn="確認",AOn="確認中...",TOn="{{seconds}} 秒後に再送信",ROn="コードを再送信",POn="続行すると、以下に同意したものとみなã
803•れます:",_On="利用規約",jOn="プライバシーポリシー",NOn={signIn:"サインイン",signOutFailed:"サインアウトに失敗しました",sendCodeFailed:"コードの送信に失敗しました",notAllowed:"このメールアドレスはまだアクセスが許可されていません。管理者に申請してください。",invalidCode:"コードが無効です",codeIncorrect:"コードが違います。もう一度お試しください",googleFailed:"Google サインインに失敗しました",verifyHuman:"認証を完了してから続行してください",verifyUnavailable:"人間確認が一時的に利用できません。上部の Google ログインをご利用いただくか、しばらくしてからお試しください。"},DOn={signInTitle:fOn,enterCodeTitle:gOn,methodIntro:hOn,emailStepIntro:yOn,codeIntro:vOn,continueGoogle:bOn,continueEmail:xOn,or:$On,emailLabel:wOn,sendCode:kOn,sending:COn,verify:SOn,verifying:AOn,resendIn:TOn,resendCode:ROn,termsPrefix:POn,terms:_On,privacy:jOn,errors:NOn},MOn="請求",EOn="Credits をチャージし、クーポンを引き換えて、ウォレット履歴を確認します。",IOn={bonuses:"ボーナス",topups:"チャージ",usage:"使用量"},OOn={available:"反映済み",availableHint:"利用可能残高に反映済み",frozen:"保留中(凍結)",frozenHint:"約{{days}}日後に反映",frozenHintGeneric:"保留期間終了後に反映",title:"紹介報酬",viewDetails:"紹介明細を表示"},LOn={noUsage:"過去 30 日間の使用量はありません",perDay:"1 日平均 {{amount}}",daysLeft:"現在のペースで約 {{days}} 日分"},UOn={amountUsd:"金額 (USD)",minAmountHint:"最低チャージ額は {{amount}} です。",apply:"適用",get:"受け取る",onehopCredits:"OneHop credits",pay:"支払う",poweredByStripe:"Stripe により保護",poweredBy:"{{provider}} により保護",secureCheckout:"安全なホスト型チェックアウト",secureCheckoutShort:"安全なチェックアウト",taxExclusiveNotice:"税額はチェックアウト時にお客様の地域に応じて計算され、この金額に加算されます。",presets:"プリセット金額",promoCode:"プロモーションコード",promoCodePlaceholder:"コードを入力",serviceFee:"サービス手数料",title:"チャージ",topupAmount:"チャージ金額",totalDue:"支払総額",payCta:"{{amount}} を支払う",previewing:"確認中…",discount:"クーポン割引",couponBelowMin:"割引後の金額が低すぎます。金額を増やすか別のコードをお試しください。",maintenanceTitle:"お支払いを一時的にご利用いただけません",maintenanceDescription:"お支払いを一時的にご利用いただけません。お支払いが必要な場合は Telegram でご連絡ください。",contactTelegram:"Telegram でお問い合わせ",alipay:"Alipay",wechatPay:"WeChat Pay",crypto:"暗号資産で支払う (USDC / USDT)",payOnStripe:"お支払いは Stripe の安全なチェックアウトページで完了します。",payOnProvider:"お支払いは {{provider}} の安全なチェックアウトページで完了します。",payOnHostedCheckout:"お支払いは安全なホスト型チェックアウトページで完了します。",amountPrecision:"{{provider}} は小数点以下 2 桁までの USD 金額に対応しています。金額またはプロモーションコードを調整してください。",couponBonus:"クーポンボーナス",couponBonusExpiry:"ボーナスクレジットはお支払い後 {{days}} 日で失効します。",couponInvalid:"このコードは適用できません。別のコードをお試しください。",couponErrors:{limitReached:"このコードの利用回数が上限に達しています。",invalid:"このコードは無効です。",expired:"このコードは有効期限切れです。",exhausted:"このコードは利用枠が上限に達しました。",unavailable:"このコードは現在使用中です。しばらくしてからお試しください。"},tierBonus:"キャンペーンボーナス",tierBonusExpiry:"ボーナスクレジットはお支払い後 {{days}} 日で失効します。",tierBonusRestricted:"ボーナスクレジットは次のモデルにのみ利用できます: {{models}}",nextTierPercent:"あと {{amount}} チャージすると {{percent}}% のボーナスクレジットを獲得できます。",nextTierBonus:"あと {{amount}} チャージすると {{bonus}} のボーナスクレジットを獲得できます。",tierCapReached:"このキャンペーンのボーナス上限にすでに達しています。"},BOn="Credits を追加",FOn="作成中...",zOn="利用可能 Credit",qOn="チャージ",HOn="決済は Stripe",VOn="金額 (USD)",KOn="プリセットチャージ金額",GOn="クーポンを引き換え",WOn="クーポンコード",YOn="引き換え中...",QOn="引き換え",XOn="クーポンを引き換えました。残高を更新しています。",ZOn="安全な checkout に移動しています...",JOn="請求サマリーの読み込みに失敗しました",e3n="チャージに失敗しました",t3n="請求アクティビティタブ",n3n="取引",a3n="Credit 付与",o3n="å
803–引タイプ",s3n="ソース",r3n="まだ取引はありません",i3n="チャージ、請求、付与がここに表示されます。",l3n="台帳エントリ",c3n="時刻",d3n="タイプ",u3n="金額",m3n="残高",p3n="まだ付与はありません",f3n="登録ボーナス、クーポン、手動付与がここに表示されます。",g3n="状態",h3n={successTitle:"決済を受領しました",polling:"ウォレットに反映中です... 約 30 秒。",delayed:"反映が遅れています。少し待って再読み込みするか、Stripe の領収書をご確認ください。",cancelledTitle:"決済はキャンセルされました",cancelledBody:"請求は発生していません。準備ができたら再度お試しください。",failedTitle:"決済に失敗しました",failedBody:"お支払いを完了できませんでした。クレジットは加算されていません。再度お試しいただくか、別のお支払い方法をご利用ください。"},y3n={text:"Credit は前払いのサービス残高であり、銀行預金ではありません。消費済み Credit は返金不可。価格はすべて USD 建てです。詳しくは",tosLink:"利用規約"},v3n="領収書",b3n="開いています...",x3n="請求ポータルを開けませんでした",$3n={title:"最近のチャージ",subtitle:"直近 90 日。24 時間以内なら返金可能。",loading:"チャージ履歴を読み込み中...",date:"日付",amount:"金額",credits:"Credit",status:"状態",refund:"返金",alreadyRefunded:"返金済み",windowExpired:"返金期限切れ(24 時間)",confirmTitle:"返金の確認",confirmBody:"返金は Stripe により 1~3 営業日で処理されます。ユーザー起票の返金にはプラットフォーム手数料 ({{fee}}) がかかります。",amountLabel:"返金額 (USD)",maxLabel:"上限 ${{value}}",requestedLabel:"返金申請額",platformFeeLabel:"プラットフォーム手数料 ({{fee}})",cardReturnLabel:"カードへの返金額",bonusForfeitureHint:"このチャージに伴って付与されたプロモーション Credit は、按分で失効します。",cancel:"キャンセル",confirm:"返金を実行",submitting:"送信中...",refundSubmittedTitle:"返金を受け付けました",refundSubmittedBody:"Stripe が 1~3 営業日以内にカードへ返金します。",refundFailedTitle:"返金に失敗しました",balance:"入金",confirmAmount:"{{amount}} を返金"},w3n={title:"残高アラート",description:"残高が少なくなったらお知らせします。",emailLabel:"メールで通知",webhookLabel:"Webhook",autorechargeLabel:"自動チャージ",autorechargeUnsupported:"現在の決済プロバイダーでは自動チャージをご利用いただけません。",autorechargeAddCardHint:"カードを登録して残高を自動で補充",autorechargeTopUp:"チャージ額",autorechargeWhenBelow:"残高が次を下回ったら",autorechargeThreshold:"自動チャージのしきい値",autorechargeAmount:"自動チャージ額",autorechargeDisabledFailures:"連続した失敗により自動チャージを無効にしました。カードを更新して再度有効にしてください。",autorechargeIncomplete:"自動チャージ額と $0 より大きいしきい値を設定してください。",test:"テスト",testing:"テスト中…",testQueued:"テスト配信をキューに追加しました —— エンドポイントを確認してください",testFailed:"テスト配信のキュー追加に失敗しました",signingSecret:"署名シークレット",secretOnSave:"保存すると署名シークレットが生成されます。",rotate:"ローテーション",secretRotated:"署名シークレットをローテーションしました",rotateFailed:"シークレットのローテーションに失敗しました",secretCopied:"署名シークレットをコピーしました",saved:"アラート設定を保存しました",saveFailed:"アラート設定の保存に失敗しました",loadFailed:"アラート設定を読み込めませんでした",thresholdRequired:"アラートを有効にするには $0 より大きいしきい値を設定してください。",webhookUrlRequired:"webhook の https:// URL を入力してください。",thresholdOrderBad:"アラートのしきい値は自動チャージのしきい値以上にしてください。",card:"カード",changeCard:"変更",removeCard:"削除",cardRemoved:"カードを削除しました",cardRemoveFailed:"カードの削除に失敗しました",cardSetupFailed:"カード登録を開始できませんでした",lowBalanceGroup:"低残高アラート",thresholdLabel:"アラートしきい値"},k3n={title:"取引履歴",idSearch:"取引 ID",amountRange:"金額範囲 (USD)",min:"最小",max:"最大",clear:"クリア",retry:"再試
803行",empty:"この範囲の取引はありません",date:"日付",typeMethod:"種類 / 方法",description:"説明",action:"操作",prevMonth:"前の月",nextMonth:"次の月",viewInvoices:"請求書を表示",emptyNew:"取引はまだありません",emptyNewDesc:"チャージ後、チャージ、ボーナス、返金の記録がここに表示されます。",topUpCta:"チャージする",emptyFiltered:"一致する取引はありません",emptyFilteredDesc:"フィルターを解除するか、期間を広げてください。",clearFilters:"フィルターをクリア"},C3n="残高が少ないため、リクエストに影響する可能性があります。チャージするか自動チャージを有効にしてください。",S3n="残高が少ないため、リクエストに影響する可能性があります。チャージして続行してください。",A3n={creditPurchase:"クレジットチャージ",topupBonus:"Top-up bonus",signupBonus:"Signup bonus",referralClawback:"Referral cashback clawback (refund)",couponBonus:"クーポンボーナス",referralCashback:"紹介キャッシュバック",referralInviteeCashback:"被紹介者ボーナス",redeemCode:"引き換えコード {{code}}",redeemCodeReversal:"引き換えコードの取消",stripeRefund:"Stripe 返金",bonusReversal:"返金によるボーナス回収"},T3n={title:"専用クレジット",subtitle:"特定モデルのみで使えるボーナスクレジットです。残高とは別管理されます。",onlyModels:"{{models}} のみ",onlyModelsGeneric:"対象限定モデル",validUntil:"{{date}} まで有効",noExpiry:"有効期限なし",useInChat:"Use in chat"},R3n={card:"カード",alipay:"Alipay",wechatPay:"WeChat Pay"},P3n={title:"引き換えコード",description:"引き換えコードをお持ちですか。入力すると額面が残高にチャージされます。",placeholder:"例:OHR-XXXXXXXX",redeem:"引き換える",redeeming:"引き換え中…",success:"{{amount}} を残高にチャージしました。",successRestricted:"Redeemed {{amount}} — usable with {{models}} only",successValidity:"Valid until {{date}}.",errors:{invalid:"このコードは無効です。",expired:"このコードは有効期限切れです。",alreadyRedeemed:"このコードは既に使用されています。",perUserLimit:"このバッチの引き換え上限に達しています。"}},_3n={title:MOn,description:EOn,breakdown:IOn,referralRewards:OOn,burnRate:LOn,topup:UOn,addCredits:BOn,creating:FOn,availableCredit:zOn,topUp:qOn,poweredByStripe:HOn,amountUsd:VOn,presetAmounts:KOn,redeemCoupon:GOn,couponCode:WOn,redeeming:YOn,redeem:QOn,couponRedeemed:XOn,redirecting:ZOn,summaryFailed:JOn,topupFailed:e3n,tabsLabel:t3n,transactions:n3n,creditGrants:a3n,transactionType:o3n,source:s3n,noTransactions:r3n,noTransactionsDescription:i3n,ledgerEntries:l3n,time:c3n,type:d3n,amount:u3n,balance:m3n,noGrants:p3n,noGrantsDescription:f3n,status:g3n,topupBanner:h3n,compliance:y3n,receipts:v3n,openingPortal:b3n,portalFailed:x3n,recentTopups:$3n,alerts:w3n,history:k3n,lowBalanceWarning:C3n,lowBalanceWarningNoAutoTopup:S3n,ledgerDesc:A3n,earmarked:T3n,paymentMethod:R3n,redeemCard:P3n},j3n="チャートを読み込めませんでした",N3n="データがありません",D3n="まだチャート化できるデータがありません。",M3n={errorTitle:j3n,emptyTitle:N3n,emptyDescription:D3n},E3n={copy:"コピー",regenerate:"再生成",shareComingSoon:"共有(近日公開)",download:"ダウンロード",copyLink:"リンクをコピー",newChat:"新しいチャット",deleteChat:"チャットを削除",openConversationList:"会話リストを開く",openSettings:"チャット設定",collapseSidebar:"サイドバーを折りたたむ",expandSidebar:"サイドバーを展開",cancel:"キャンセル",apply:"適用",newChatTooltip:"新しいチャットを作成",copied:"コピーしました"},I3n={placeholderReady:"新しい会話を開始...",placeholderNoModel:"先に上でモデルを選択してください",attachmentTooLarge:"ファイルが {{limit}} を超えているためアップロードできません",attachmentUnsupported:"サポートされていないファイル形式です。PNG、JPEG、WebP、GIF、MP4、WebM、MOV を使用してください。",unsupportedVision:"このモデルは画像・動画入力に対å¿
803œã—ていません。ファイルをドロップする前にモデルを切り替えてください。",send:"送信",abort:"停止",attachImage:"画像を追加",attachMedia:"画像・動画を追加",removeAttachment:"削除",shortcutSend:"送信",shortcutNewLine:"改行",shortcutAbort:"停止",frameFirst:"最初のフレーム",frameLast:"最後のフレーム",frameReference:"参照画像",imageMode:"画像生成",videoMode:"動画生成",placeholderComingSoon:"This model is coming soon — pick another one above",reasoning:"思考",reasoningOff:"オフ",reasoningAlways:"常にオン",placeholderTopupRequired:"このモデルはチャージ済みのアカウント限定です。チャージするとここで使えます"},O3n={modelUnavailable:"モデル {{model}} は現在利用できません。プロンプトは保存されています。",rateLimited:"同時リクエストが多すぎます。しばらくしてから再試行してください。",accountDisabled:"このアカウントは無効化されているため、チャットを続行できません。",attachmentsUploading:"画像をアップロード中です。少し待ってから送信してください。",attachmentsFailed:"画像のアップロードに失敗しました。削除してから再度お試しください。"},L3n={title:"ここで任意のモデルをテストできます。",body:"任意のモデルと直接チャットできます。利用分は PAYG ウォレットに請求されます。",starters:{compareModels:"同じコーディングタスクで GPT-5.5 と Claude Opus を比較する",analyzeImage:"アーキテクチャ図を分析し、リスクを要約する",draftPrompt:"サポートエージェント用の system prompt を作成する",generateImage:"クリーンな SaaS スタイルの商品ヒーロー画像を生成する"}},U3n={untitled:"無題のチャット",deleteConfirm:"「{{title}}」を削除しますか?",emptyTitle:"まだ会話がありません",emptyBody:"上の + 新しいチャット から開始してください。",listLabel:"会話リスト",groups:{today:"今日",yesterday:"昨日",earlier:"以前"},menu:{rename:"名前を変更",delete:"削除"},deleteTitle:"会話を削除しますか?"},B3n={paygWallet:"PAYG ウォレット"},F3n={chooseModel:"モデルを選択",searchPlaceholder:"モデルを検索...",emptyTitle:"モデルが見つかりません",emptyBody:"別の検索語またはタブを試してください。",protocols:"{{count}} protocols",context:"{{value}} ctx",tabs:{all:"すべて",text:"テキスト",image:"画像",video:"動画"},maxOut:"出力 {{value}}",unavailable:"一時的に利用不可",requiresTopup:"チャージで解除"},z3n={title:"チャット設定",protocol:"Protocol",unlimited:"無制限",fields:{memory_limit:{label:"チャットメモリ"},temperature:{label:"Temperature"},top_p:{label:"Top P"},max_tokens:{label:"最大 Tokens",placeholder:"128000"},service_tier:{label:"サービスタイア",options:{standard:"Standard",priority:"Priority",flex:"Flex"}},thinking_budget:{label:"思考予算 (tokens)",placeholder:"例: 2000"},stop_sequences:{label:"停止シーケンス",placeholder:"カンマ区切り、例: END, STOP",itemLabel:"停止"},system_prompt:{label:"System Prompt",placeholder:"system prompt を入力..."},prompt_cache_mode:{label:"Prompt Cache",options:{implicit:"暗黙",explicit:"明示"}},image_size:{label:"画像解像度"},image_resolution:{label:"解像度"},image_quality:{label:"画像品質",options:{Auto:"自動",auto:"自動",low:"低",medium:"中",high:"高"}},video_ratio:{label:"アスペクト比"},video_resolution:{label:"動画解像度"},video_duration_seconds:{label:"長さ"},tools:{label:"Tools (JSON)",placeholder:'[{ "type": "function", "function": { ... } }]'},image_count:{label:"画像数"},image_aspect_ratio:{label:"アスペクト比"},reasoning_effort:{label:"推論の強度",options:{none:"オフ",minimal:"最小",low:"低",medium:"中",high:"高",xhigh:"極高",max:"最大"}},reasoning_pro:{label:"Pro モード"},reasoning_context:{label:"推論コンテキスト",options:{auto:"自動",current_turn:"現在のターン",all_turns:"すべてのターン"}},reasoning_enabled:{label:"思考"},reasoning_always:{label:"思考",value:"常にオン"}}},q3n={estimating:"見積もり中...",settling:"確定中...",input:"入力",output:"出力",milliseconds:"ms",realCost:"実際のコスト",latency:"レイテンシ",logDetail:"ログ詳細"},H3n={copied:"画像リンクをコピーしました",expired:"画像リンクの有効期限が切れています。リンクをコピーして再度開くか、再生成してください。",attachment:"[画像添付]"},V3n={message:"このチャットは PAYG ウォレットに請求されます",balance:"残高",billingLink:"請求",dismiss:"閉じる"},K3n={badge:"Earmarked {{amount}}",bannerTitle:"Earmarked credit available",bannerBody:"You have {{amount}} of dedicated credit for this model — it's used first."},G3n={trigger:"コードとしてコピー",copied:"{{format}} としてコピーしました",failed:"コピーに失敗しました",failedDescription:"ブラウザによってクリップボード権限がブロックされている可能性があります。"},W3n={interrupted:"[中断済み]",sending:"送信中"},Y3n={title:"思考過程",duration:"{{seconds}}s 思考"},Q3n={title:"動画生成は近日公開予定です",body:"このモデルは確認用に表示されていますが、動画送信はまだ有効化されていません。",switchToText:"テキストモデルに切り替え"},X3n={imageGenerating:"画像を生成中",videoGenerating:"動画を生成中",stage:{queued:"待機中",routing:"ルーティング中",generating:"生成中",storing:"保存中",settling:"精算中"}}
803,Z3n={INSUFFICIENT_CREDITS:"残高不足",RATE_LIMITED:"リクエストが多すぎます",rate_limit_error:"リクエストが多すぎます",MODEL_NO_VISION:"このモデルは画像入力に対応していません",CONTENT_REFUSED:"モデルがこのリクエストを拒否しました",EMPTY_RESPONSE:"モデルが空の応答を返しました",upstream_error:"上流サービスのエラー",overloaded_error:"上流サービスが混雑しています",upstream_invalid_json:"上流の応答が不正です",stream_read_error:"応答の読み取りが中断されました",invalid_api_key:"上流の認証に失敗しました",model_unavailable:"モデルが一時的に利用できません",no_image:"画像を生成できませんでした",no_body:"上流からの応答がありません",http_error:"リクエストに失敗しました",session_create_failed:"セッションの作成に失敗しました"},J3n={title:"チャージするとこのモデルを使えます",body:"チャージ済みのアカウント限定です。金額を問わずチャージすればすぐに解除され、残高は従量課金のままです。",cta:"チャージする"},eLn={actions:E3n,composer:I3n,errors:O3n,empty:L3n,sidebar:U3n,header:B3n,modelSelector:F3n,settings:z3n,metrics:q3n,image:H3n,payg:V3n,earmark:K3n,copyAsCode:G3n,status:W3n,thinking:Y3n,video:Q3n,media:X3n,errorCodes:Z3n,topupLock:J3n},tLn="読み込み中...",nLn="アカウント",aLn="言語",oLn="サインイン",sLn="サインアウト",rLn="サインアウト中...",iLn="変更を保存",lLn="保存中...",cLn="保存しました。",dLn="戻る",uLn="再試行",mLn="トップアップのサービス手数料が 5% オフ。",pLn="保存",fLn="キャンセル",gLn="クリア",hLn="リセット",yLn="コピーしました",vLn="コピーに失敗しました",bLn="閉じる",xLn="合計",$Ln={timestamp:"タイムスタンプ",local:"ローカル",relative:"相対時刻"},wLn="コピー",kLn={title:"ブラウザで開いてください",description:"<b>アプリ内ブラウザ</b>で表示しています。<b>Google ログインと人間確認はここでは利用できません</b>。続けるにはお使いのブラウザで開いてください。",hintWechat:"右上の ··· メニューから「ブラウザで開く」を選択してください。",hintGeneric:"右上のメニューから「ブラウザ / Safari で開く」を選択してください。",copyLink:"リンクをコピー",continueAnyway:"このまま続ける"},CLn="すべて",SLn="適用中",ALn="任意",TLn="削除",RLn={loading:tLn,account:nLn,language:aLn,signIn:oLn,signOut:sLn,signingOut:rLn,saveChanges:iLn,saving:lLn,saved:cLn,back:dLn,retry:uLn,topUpPromo:mLn,save:pLn,cancel:fLn,clearAll:gLn,reset:hLn,copied:yLn,copyFailed:vLn,dismiss:bLn,total:xLn,time:$Ln,copy:wLn,inAppBrowser:kLn,all:CLn,active:SLn,optional:ALn,remove:TLn},PLn="ダッシュボード",_Ln="credit、使用量、gateway の主要な健全性を 1 つのコンソールで確認します。",jLn="API key を作成",NLn={creditBalance:"Credit 残高",requestsToday:"今日のリクエスト",activeApiKeys:"有効な API keys"},DLn={title:"使用量の推移",description:"過去 14 日間のリクエスト数と課金 credit。",viewUsage:"使用量を見る",loading:"使用量の推移を読み込み中",empty:"まだ使用量はありません",emptyDescription:"リクエストが流れ始めると、ここに使用量が表示されます。"},MLn={title:"Credit アクティビティ",description:"過去 90 日間の日次の課金 credit。",total:"90 日間の合計",loading:"アクティビティを読み込み中",activeDays:"過去 {{days}} 日間で {{count}} 日アクティブ",less:"少",more:"多"},ELn={title:"使用量の内訳",description:"消費の強度、token 量、最も使われているモデルを 1 画面に凝縮。",activeDays:"アクティブ日数",ofDays:"/ {{days}} 日",avgDailyCredit:"1 日平均 credit",nonZeroDays:"アクティブ日あたり",peakDay:"ピーク日",noPeak:"まだ使用量はありません",tokens:"Tokens",topModel:"主要モデル",creditShare:"課金 credit の割合"},ILn={title:"クイックヘルス",requests7d:"7 日間のリクエスト",creditToday:"今日使った credit",credit7d:"7 日間で使った credit"},OLn={title:"最近のリクエスト",description:"各 key からの最新 gateway 呼び出し。",viewRecords:"記録を見る",table:{label:"最近のリクエスト",model:"モデル",status:"状態",tokens:"Tokens",credit:"Credit",time:"時刻",apiKey:"API key"},empty:"まだリクエストはありません",emptyDescription:"API key を作成してリクエストを送ると、最近の呼び出しがここに表示されます。"},LLn={title:"最初のリクエストを送る",description:"OpenAI 互換です。key を作成し、{{env}} を設定してから gateway を呼び出します。"},ULn={credit:"Credit",requests:"リクエスト"},BLn={title:PLn,description:_Ln,createApiKey:jLn,cards:NLn,usageTrend:DLn,activity:MLn,usageMix:ELn,quickHealth:ILn,recent:OLn,firstRequest:LLn,tooltip:ULn},FLn="すべての行を選択",zLn="{{row}} 行目を選択",qLn="読み込めませんでした",HLn="データがありません",VLn="表示できるレコードがありません。",KLn="詳細を表示",GLn="さらに{{count}}件の詳細",WLn="詳細を開く",YLn={selectAllRows:FLn,selectRow:zLn,errorTitle:qLn,emptyTitle:HLn,emptyDescription:VLn,moreDetails:KLn,moreDetailsWithCount:GLn,openRow:WLn},QLn="過去 1 時間",XLn="今日",ZLn="昨日",JLn="過去 7 日",e4n="過去 30 日",t4n="今月",n4n="月別",a4n="カスタム",o4n="全期間",s4n="日付を選択",r4n="キャンセル",i4n="適用",l4n="開始日は終了日より前である必要があります。",c4n="期間プリセット",d4n="前の月",u4n="次の月",m4n={last1h:QLn,today:XLn,yesterday:ZLn,last7d:JLn,last30d:e4n,thisMonth:t4n,byMonth:n4n,custom:a4n,all:o4n,selectDate:s4n,cancel:r4n,apply:i4n,reversedError:l4n,presetsAriaLabel:c4n,previousMonth:d4n,nextMonth:u4n},p4n="アカウントを利用できません",f4n="アカウントを初期化しています",g4n={title:"アカウントは停止されています",description:"このアカウントはサインインã
803§ãã¾ã™ãŒã€ã‚³ãƒ³ã‚½ãƒ¼ãƒ«ã‚¢ã‚¯ã‚»ã‚¹ã¨ gateway リクエストは停止されています。",detail:"予期しない停止と思われる場合は、このアカウントのメールアドレスで support に連絡してください。"},h4n={accountUnavailable:p4n,accountInitializing:f4n,accountRestricted:g4n},y4n="無料トークン",v4n="対象モデルに毎日付与される無料トークンの利用枠です。自動的に更新され、ウォレットからは課金されません。",b4n="無料トークンの利用枠を読み込めませんでした。",x4n="すべてのモデル",$4n="キャンペーンは {{date}} に終了",w4n={daily:"毎日",weekly:"毎週"},k4n={daily:"毎日更新",weekly:"毎週更新",localTime:"現地時間 {{time}}",countdown:"次回の更新まで {{duration}}",refreshingSoon:"まもなく更新"},C4n={title:"実施中の無料トークンキャンペーンはありません",description:"無料トークンのキャンペーンが実施されると、毎日の利用枠がここに表示されます。"},S4n={title:"お使いのアカウントでは無料トークンの付与が停止されています",body:"このアカウントは大量登録のパターンに該当する可能性があるため、現在、無料付与を停止しています。誤りの場合は、こちらまでご連絡ください:"},A4n="トークン",T4n="本日の残り {{value}} トークン",R4n={label:"使い切ったらメール通知",hint:"本日の無料トークンを使い切ったらメールでお知らせします。"},P4n={crg_freetoken_daily_cn5:"国産モデル · 毎日無料トークン"},_4n={title:y4n,description:v4n,loadFailed:b4n,allModels:x4n,campaignEnds:$4n,cadence:w4n,refresh:k4n,empty:C4n,paused:S4n,tokensUnit:A4n,remainingToday:T4n,emailToggle:R4n,campaigns:P4n},j4n="ログ",N4n="リクエスト単位のコスト、レイテンシ、tokens、状態、routing シグナルを確認します。",D4n={copiedCurl:"curl をコピーしました",copiedId:"リクエスト ID をコピーしました",copyCurl:"curl としてコピー",copyFailed:"コピーに失敗しました",copyId:"リクエスト ID をコピー",menu:"行アクション",openTab:"新しいタブで開く"},M4n={prompt:"Prompt",ratio:"ヒット率",read:"キャッシュ読み取り",title:"キャッシュヒット率"},E4n={confirm:"ジョブをキャンセル",failed:"ジョブをキャンセルできませんでした",keep:"残す",message:"このジョブはまだキューにあります。キャンセルすると処理されず、課金も発生しません。",success:"ジョブをキャンセルしました",title:"ジョブをキャンセルしますか?",pending:"キャンセル中..."},I4n={cacheHit:"キャッシュヒット",cost:"コスト",ip:"IP",latency:"レイテンシ",model:"モデル",source:"ソース",status:"状態",stream:"ストリーミング",time:"時刻",tokens:"Tokens",tps:"スループット"},O4n={trigger:"列設定"},L4n={body:"OneHop 経由でリクエストを送ると、ここに表示されます。",title:"この期間のログはありません"},U4n={all:"すべて",apiKey:"API key",cost:"コスト (USD)",desktopDateRangeAria:"デスクトップの日付範囲を選択",finishReason:"終了理由",latency:"レイテンシ (s)",max:"最大",min:"最小",mobileDateRangeAria:"モバイルの日付範囲を選択",model:"モデル",modelsSelected:"{{count}} 件選択中",more:"その他のフィルター",refresh:"更新",request:"リクエスト ID で検索",requestIdLabel:"リクエスト ID",status:"状態",stream:"ストリーミング",time:"時刻",type:"種類",mobileTitle:"フィルター"},B4n={requests:"このページのリクエスト",times:"時刻表示"},F4n={rowsPer:"行数"},z4n={all:"全期間",custom:"カスタム",last1h:"過去 1 時間",last30d:"過去 30 日",last7d:"過去 7 日",thisMonth:"今月",today:"今日",yesterday:"昨日"},q4n={title:"クライアント",unknown:"user-agent は報告されていません",unknownShort:"不明"},H4n={output:"出力 tokens",rate:"レート",title:"スループット",window:"生成ウィンドウ"},V4n={title:"リクエスト",openDetail:"リクエスト詳細を開く",copy:"ID ã
803‚’コピー",copied:"コピーしました",copyFailed:"コピーに失敗しました",close:"閉じる",loading:"読み込み中…",response:"レスポンス",sections:{request:"リクエスト",routing:"ルーティング",tokens:"Tokens",cost:"コスト内訳",performance:"パフォーマンス",error:"エラー",outcome:"結果",multimodal:"マルチモーダル"},fields:{requestId:"リクエスト ID",time:"時刻",apiKey:"API key",userAgent:"User-Agent",billingMode:"課金モード",onehopModel:"OneHop モデル",endpoint:"Endpoint",firstToken:"初回 token",total:"合計",throughput:"スループット",stream:"ストリーム",clientIp:"クライアント IP",finishReason:"終了理由",mediaType:"メディアタイプ",imageCount:"画像数",imageSize:"サイズ",errorCode:"コード",errorMessage:"メッセージ",requestedModel:"リクエストされたモデル"},billingMode:{token:"token 単位",per_request:"リクエスト単位",image:"画像単位"},timeline:{heading:"ライフサイクル",received:"リクエスト受信",routed:"ルーティング完了",failed:"失敗",generated:"生成完了",metered:"計測完了",billed:"請求完了"},downloadMedia:"ダウンロード"},K4n={success:"成功",completed:"完了",failed:"失敗",pending:"保留中",repairing:"修復中",queued:"キュー中",running:"実行中",cancelled:"キャンセル済み",expired:"期限切れ"},G4n={chat:"チャット",image:"画像",video:"動画"},W4n={stop:"正常終了",length:"長さ上限",tool_calls:"ツール呼び出し",content_filter:"コンテンツフィルター",error:"エラー"},Y4n={true:"ストリーミング",false:"非ストリーミング"},Q4n={title:"コスト内訳"},X4n={title:"Token 内訳",prompt:"Input",completion:"Output",imageOutput:"画像出力 tokens",cacheRead:"キャッシュ読み取り",cacheWrite:"キャッシュ書き込み",cacheWrite5m:"キャッシュ書き込み 5m",cacheWrite1h:"キャッシュ書き込み 1h",total:"合計"},Z4n={timestamp:"タイムスタンプ",local:"ローカル",relative:"相対時刻"},J4n={inputCost:"入力コスト",outputCost:"出力コスト",cacheReadCost:"キャッシュ読み取りコスト",cacheWriteCost:"キャッシュ書き込みコスト",inputPrice:"入力単価",outputPrice:"出力単価",total:"合計",officialPrice:"公式価格",saved:"割引額",factor:{textInput:"テキスト入力",textOutput:"テキスト出力",imageInput:"画像入力",imageOutput:"画像出力",perCallImage:"画像あたり",videoPerSecond:"動画",videoPerCall:"動画",cacheRead:"キャッシュ読み取り",cacheWrite:"キャッシュ書き込み",cacheWrite5m:"キャッシュ書き込み (5m)",cacheWrite1h:"キャッシュ書き込み (1h)"},unit:{per1mTokens:"/ 100万 tokens",perImage:"/ 枚",perSecond:"/ 秒",perCall:"/ 回"},promoBasis:"割引前",promoSaved:"キャンペーン割引",freeCovered:"無料枠で充当({{tokens}} トークン)",freeCoveredNoCount:"無料枠で充当"},e5n={noPreview:"プレビューはありません",video:"動画"},t5n={free:"無料"},n5n={title:j4n,description:N4n,actions:D4n,cacheHit:M4n,cancelJob:E4n,col:I4n,columns:O4n,empty:L4n,filter:U4n,meta:B4n,pager:F4n,range:z4n,source:q4n,tps:H4n,drawer:V4n,status:K4n,type:G4n,finishReason:W4n,stream:Y4n,costBreakdown:Q4n,tokensBreakdown:X4n,time:Z4n,userCost:J4n,export:{label:"CSV をエクスポート",exporting:"エクスポート中…",done:"{{n}} 行をエクスポートしました。",truncated:"先頭 {{n}} 行をエクスポートしました。残りは期間を絞って再度エクスポートしてください。",failed:"エクスポートに失敗しました。もう一度お試しください。"},media:e5n,cost:t5n},a5n="モデル",o5n="利用可能なモデル、コンテキスト長、入出力価格、機能を確認し、よく使うモデルをお気に入りに追加できます。",s5n={all:"ã
803™ã¹ã¦",favorites:"お気に入り",benefit:"特典",hot:"人気",free:"Free"},r5n={capability:"タイプ",allCapabilities:"すべてのタイプ",capability_text:"テキスト",capability_image:"画像",capability_audio:"音声",capability_video:"動画",provider:"プロバイダー",allProviders:"すべてのプロバイダー",protocol:"プロトコル",allProtocols:"すべてのプロトコル",sort:"並び替え",search:"検索",searchPlaceholder:"モデル / メーカー",allContexts:"指定なし",context:"コンテキスト",mobileTitle:"フィルター"},i5n="おすすめ",l5n="新着順",c5n="週間人気",d5n="名前 (A-Z)",u5n="価格(安い順)",m5n="価格(高い順)",p5n="コンテキスト長",f5n="レイテンシ",g5n="スループット",h5n="OpenAI Chat",y5n="OpenAI Responses",v5n="Anthropic",b5n="Vertex AI",x5n="OpenAI Images",$5n="OpenAI Video",w5n={label:"モデル",model:"モデル",provider:"プロバイダー",capabilities:"機能",context:"コンテキスト",price:"料金",discount:"割引",action:"操作",tryIt:"試す",type:"タイプ",maxOutput:"最大出力",copyId:"モデル ID をコピー",copied:"コピーしました",usage:"使用量",stability:"安定性",protocols:"プロトコル",openDetail:"Open model detail"},k5n="人気",C5n="特典",S5n={add:"お気に入りに追加",remove:"お気に入りから削除"},A5n={favorites:"お気に入りはまだありません",noMatch:"一致するモデルはありません"},T5n="テキスト",R5n="画像",P5n="ファイル",_5n="動画",j5n="音声",N5n="埋め込み",D5n="Vision",M5n="ツール呼び出し",E5n="JSONモード",I5n="画像生成",O5n="画像編集",L5n="テキスト",U5n="画像",B5n="動画",F5n="音声",z5n="埋め込み",q5n="公式",H5n="Kiro",V5n="最安",K5n="/ 回",G5n="/ 秒",W5n="/ 1M",Y5n="高速",Q5n="Free",X5n="Coming Soon",Z5n="Free",J5n={ariaLabel:"価格の通貨",usd:"米ドル",rmb:"人民元 (Â¥)",settlement:"価格は固定レート {{rate}} で人民元換算した参考値です。ウォレットは常に米ドルで実使用量に応じて請求されます。"},eUn="チャージ必要",tUn={title:a5n,description:o5n,tabs:s5n,filters:r5n,sort_featured:i5n,sort_newest:l5n,sort_top_weekly:c5n,sort_name:d5n,sort_price_asc:u5n,sort_price_desc:m5n,sort_context:p5n,sort_latency:f5n,sort_throughput:g5n,protocol_openai_chat:h5n,protocol_openai_responses:y5n,protocol_anthropic_messages:v5n,protocol_google_vertex_ai:b5n,protocol_openai_images:x5n,protocol_openai_sora:$5n,table:w5n,badge_hot:k5n,badge_benefit:C5n,favorite:S5n,empty:A5n,modality_text:T5n,modality_image:R5n,modality_file:P5n,modality_video:_5n,modality_audio:j5n,modality_embeddings:N5n,capability_vision:D5n,capability_tool_calling:M5n,capability_json_mode:E5n,capability_image_generation:I5n,capability_image_edit:O5n,type_text:L5n,type_image:U5n,type_video:B5n,type_audio:F5n,type_embedding:z5n,provider_official:q5n,provider_kiro:H5n,price_from:V5n,price_perCall:K5n,price_perSec:G5n,price_per1m:W5n,price_fast:Y5n,badge_free:Q5n,badge_unavailable:X5n,price_free:Z5n,currency:J5n,badge_requiresTopup:eUn},nUn={main:"メインナビゲーション",utility:"ユーティリティナビゲーション",console:"コンソールナビゲーション",openNavigation:"ナビゲーションを開く",collapse:"サイドバーを折りたたむ",expand:"サイドバーを展開"},aUn={platform:"コンソール",chat:"チャット",models:"モデル",logs:"ログ",jobs:"ジョブ",apiKeys:"API keys",usage:"使用量",billing:"請求",freeTokens:"無料トークン",referrals:"紹介",settings:"設定",admin:"管理",balance:"残高",helpSupport:"ヘルプとサポート",announcements:"お知らせ",announcementsTitle:"お知らせ",announcementsEmpty:"お知らせはまだありません。しばらくしてから確認してください。",announcementsTicketUnread:"新しい返信のあるチケット {{count}} ä»¶",support:"サポート",tasks:"タスクウォール",tagNew:"NEW"},oUn={staff:"管理"},sUn={dashboard:"ダッシュボード",users:"ユーザー",billing:"プラットフォーム請求",usage:"プラットフォーム使用量",rateLimits:"レート制限",access:"アクセス制御",staff:"管理者",growth:"成長",models:"モデル",announcements:"お知らせ",upstream:"上流",auditLogs:"監査ログ",webhooks:"Webhooks",supp
803ort:"Support",campaigns:"Campaigns",domainRules:"Email domains"},rUn={title:"Notifications",markAllRead:"Mark all read",loading:"Loading…",emptyTitle:"You're all caught up",emptyBody:"New notifications will show up here."},iUn={aria:nUn,public:{models:"モデル",pricing:"料金",docs:"ドキュメント",blog:"ブログ",changelog:"更新履歴"},console:aUn,adminGroups:oUn,admin:sUn,notifications:rUn},lUn={back:"戻る",done:"完了",next:"次へ",stepOf:"{{current}} / {{total}}"},cUn={balance:{body:"使う分だけチャージ。未使用残高はいつでも返金できます。",title:"残高"},keys:{body:"ここで key を作成し、任意のツールを OneHop に向けるだけです。",title:"最初の API key を作成"},models:{body:"呼び出せるすべてのモデルと料金を1ページで確認できます。",cta:"モデルページを開く",title:"モデルを確認"}},dUn={body:"1つの URL ですべてのモデルを呼び出せます。30秒で3つのポイントを案内します。",skip:"スキップ",start:"開始",title:"OneHop へようこそ"},uUn={nav:lUn,steps:cUn,welcome:dUn},mUn="Failed to load",pUn="Nothing here yet.",fUn="詳細を表示",gUn={failedLoad:mUn,emptyDescription:pUn,moreDetails:fUn},hUn="すべて",yUn="成功",vUn="保留中",bUn="修復中",xUn="失敗",$Un="返金済み",wUn="有効",kUn="無効",CUn="上限到達",SUn="予約済み",AUn="利用済み",TUn="停止中",RUn="削除済み",PUn="通常",_Un="監視中",jUn="ブロック済み",NUn="付与済み",DUn="取り消し済み",MUn="期限切れ",EUn="拒否済み",IUn="下書き",OUn="公開済み",LUn="非推奨",UUn="アーカイブ済み",BUn="非表示",FUn="作成済み",zUn="Checkout 開始済み",qUn="支払い済み",HUn="キャンセル済み",VUn="OpenAI Chat",KUn="OpenAI Responses",GUn="Anthropic Messages",WUn="Google Vertex AI",YUn="OpenAI Images",QUn="使用量課金",XUn="登録ボーナス",ZUn="プロモボーナス",JUn="紹介ボーナス",eBn="補償ボーナス",tBn="チャージボーナス",nBn="手動調整",aBn="Credit 購入",oBn="支払い",sBn="登録ボーナス",rBn="クーポン",iBn="管理者付与",lBn="API 使用量",cBn="登録ボーナス",dBn="手動付与",uBn="同期",mBn="Streaming",pBn="Token 課金",fBn="リクエスト課金",gBn="画像課金",hBn="低 reasoning",yBn="中 reasoning",vBn="高 reasoning",bBn="該当なし",xBn="不明",$Bn="凍結中",wBn="リリース済み",kBn="キャンセル済み",CBn="一部取り消し済み",SBn="スキップ済み",ABn={all:hUn,success:yUn,pending:vUn,repairing:bUn,failed:xUn,refunded:$Un,active:wUn,disabled:kUn,exhausted:CUn,reserved:SUn,redeemed:AUn,suspended:TUn,deleted:RUn,normal:PUn,watchlisted:_Un,blocked:jUn,granted:NUn,reversed:DUn,expired:MUn,denied:EUn,draft:IUn,published:OUn,deprecated:LUn,archived:UUn,public:"公開",hidden:BUn,created:FUn,checkout_opened:zUn,paid:qUn,canceled:HUn,openai_chat:VUn,openai_responses:KUn,anthropic_messages:GUn,google_vertex_ai:WUn,openai_images:YUn,usage_charge:QUn,bonus_signup_grant:XUn,bonus_promo_grant:ZUn,bonus_referral_grant:JUn,bonus_compensation_grant:eBn,bonus_topup_grant:tBn,manual_adjustment:nBn,credit_purchase:aBn,payment:oBn,signup:sBn,coupon:rBn,admin:iBn,api:lBn,signup_bonus:cBn,manual:dBn,sync:uBn,stream:mBn,token:pBn,request:fBn,image:gBn,low:hBn,medium:yBn,high:vBn,not_applicable:bBn,unknown:xBn,frozen:$Bn,released:wBn,cancelled:kBn,partially_reversed:CBn,skipped:SBn},TBn="{{count}} 件/ページ",RBn="合計 {{count}} 件",PBn={perPage:TBn,total:RBn},_Bn="招待して報酬を獲得",jBn="専用リンクをシェアしましょう。招待したユーザーがチャージすると、双方の報酬がすべて明確に記録されます。",NBn="招待データを読み込めません",DBn="あなたの招待リンク",MBn="共有",EBn="招待内容をコピーしました。WeChat に貼り付けて共有してください。",IBn="コピー",OBn="コピーしました",LBn="WeChat",UBn="X",BBn="Telegram",FBn="Reddit",zBn="LinkedIn",qBn="WhatsApp",HBn="メール",VBn="Facebook",KBn={default:{title:"1つの OneHop API で、あらゆる AI モデルを呼び出す",body:"私の招待リンクから登録し、{{firstWindowDays}} 日以内に初回チャージすると、双方に {{percent}}% の還元が付与されます。"},x:{title:"1つの API で、すべての AI モデルへ 🤖",body:"私のリンクから {{firstWindowDays}} 日以内に初回チャージすると、お互いに {{percent}}% 還元 🚀"}
803,telegram:{title:"OneHop であらゆる AI モデルを活用",body:"私の招待リンクを使ってください。{{firstWindowDays}} 日以内の初回チャージで、双方に {{percent}}% の紹介クレジットが付与されます。"},whatsapp:{title:"OneHop であらゆる AI モデルを活用",body:"私の招待リンクから参加してください。{{firstWindowDays}} 日以内に初回チャージすると、お互いに {{percent}}% 還元されます。"},reddit:{title:"OneHop — 1つの API であらゆる AI モデルへ。私の招待リンク経由の初回チャージで双方に {{percent}}% 還元",body:"{{firstWindowDays}} 日以内に初回チャージすると、双方に {{percent}}% の紹介クレジットが付与されます。"},email:{title:"OneHop へのご招待 — 1つの API であらゆる AI モデルを利用",body:`こんにちは。
804
805私は OneHop を使って、単一の API から主要な AI モデルを呼び出しています。私の招待リンクから登録し、初回チャージを行うと、双方に紹介クレジットが付与されます。
806
807還元ティア: {{tiers}}。
808
809よろしくお願いします。`},wechat:{title:"OneHop — 1つの API であらゆる AI モデルへ",body:"私の招待リンクから登録して、{{firstWindowDays}} 日以内に初回チャージすると、お互いに {{percent}}% 還元されます。"}},GBn="報酬は支払い後すぐに表示されますが、返金期間をカバーするため一旦凍結され、期限が過ぎると OneHop の招待報酬 credit として解放されます。",WBn="{{days}} 日後に解放されます。",YBn={referrer:"招待者",referee:"被招待者"},QBn={referrer:":被招待者がチャージすると紹介 credit を獲得します — {{tiers}}。",referee:":リンクから登録してチャージすれば、あなたも還元を受け取れます — {{tiers}}。"},XBn={dayRange:"{{fromDay}}〜{{untilDay}} 日目",dayOpenEnded:"{{fromDay}} 日目以降"},ZBn="累計獲得",JBn="解放済み招待報酬",e6n="凍結中の招待報酬",t6n="招待人数",n6n="有効な招待",a6n="解放済み被招待特典",o6n="凍結中の被招待特典",s6n="キャンセル / 差戻し",r6n="あなたが招待した人",i6n="報酬明細",l6n={user:"ユーザー",joined:"登録日時",topups:"チャージ回数",earned:"あなたの獲得額",frozen:"凍結中",date:"日時",event:"イベント",topupAmount:"相手のチャージ額",rate:"比率",releaseAt:"解放日時",cashback:"報酬",status:"ステータス"},c6n={title:"まだ招待がありません",description:"リンクをシェアすると報酬の獲得を始められます。"},d6n={inviteeSignedUp:"被招待者が登録を完了しました",youSignedUp:"あなたが招待経由で登録を完了しました",inviteePaid:"被招待者が利用料を支払いました",youPaid:"あなたが被招待者として利用料を支払いました"},u6n={frozen:"凍結中",released:"解放済み",cancelled:"キャンセル済み",partially_reversed:"一部差戻し",reversed:"差戻し済み",failed:"失敗",skipped:"スキップ済み"},m6n={title:_Bn,description:jBn,error:NBn,yourLink:DBn,shareVia:MBn,wechatCopied:EBn,copy:IBn,copied:OBn,wechat:LBn,x:UBn,telegram:BBn,reddit:FBn,linkedin:zBn,whatsapp:qBn,email:HBn,facebook:VBn,share:KBn,offer:GBn,releaseDelay:WBn,role:YBn,roleOffer:QBn,policy:XBn,totalEarned:ZBn,availableEarned:JBn,frozenEarned:e6n,invited:t6n,active:n6n,availableReceived:a6n,frozenReceived:o6n,cancelledReversed:s6n,peopleYouInvited:r6n,history:i6n,col:l6n,empty:c6n,event:d6n,status:u6n},p6n="設定",f6n="アカウント設定とコンソールの既定値を管理します。",g6n="{{email}} としてサインイン中",h6n="表示名",y6n="言語",v6n="タイムゾーン",b6n="プロフィールの読み込みに失敗しました",x6n="保存に失敗しました",$6n="変更を破棄しますか?",w6n="保存していない変更があります。今離れると変更は破棄されます。",k6n="破棄",C6n="編集を続ける",S6n={title:p6n,description:f6n,signedInAs:g6n,displayName:h6n,locale:y6n,timezone:v6n,failedLoad:b6n,failedSave:x6n,discardTitle:$6n,discardMessage:w6n,discardConfirm:k6n,keepEditing:C6n},A6n="タスクウォール",T6n="OneHop をあなたのフォロワーに紹介して、トライアルクレジットを獲得しましょう。すべての応募を人手で確認しています。",R6n="投稿のリンク",P6n="https://…",_6n="送信",j6n="送信しました。まもなく確認します。",N6n="対応リンク:{{hosts}}",D6n="前回は却下されました:{{reason}}。修正して再送信できます。",M6n={pending:"確認中",approved:"付与済み",rejected:"却下",active:"有効"},E6n={title:"現在タスクはありません",description:"またご確認ください。キャンペーンは不定期に実施しています。"},I6n={x_quote:{title:"X で引用ポストする",description:"@OneHopAI の固定ポストを引用し、あなた自身の感想を添えてください。",rules:["X アカウントは開設から 6 か月以上、フォロワー 10 人以上が必要です。","元のポストではなく、あなた自身の引用ポストのリンクを送信してください。","承認後 2 時間以内に付与されます。"]},youtube_tutorial:{title:"YouTube にチュートリアルを公開する",description:"OneHop を自分のエージェントに組み込む手順を示す 6 分以上の動画。",rules:["公開後に動画のリンクを送信してください。","YouTube チャンネルの登録者数が 50 人以上必要です。","1 アカウントにつき 1 回まで。","承認後 2 時間以内に付与されます。"]},short_video:{title:"ショート動画を投稿する",description:"TikTok または YouTube で、OneHop の設定に触れた 40 秒以上のショート動画。",rules:["公開後に動画のリンクを送信してください。","承認後 2 時間以内に付与されます。"]},github_readme:{title:"GitHub の README に OneHop を載せる",de
809scription:"あなたのリポジトリの README に OneHop のクレジットを追加すると、以後のチャージが毎回 15% 増量されます。",rules:["README を公開したらリポジトリのリンクを送信してください。","これは一度きりではなく永続的です。以後のチャージでは標準ボーナスとあなたの 15% のうち高い方が適用されます。","コピーして使える文面は下記のとおりです。"]}},O6n={load:"タスクウォールを読み込めませんでした",generic:"送信できませんでした",urlRequired:"まず投稿のリンクを貼り付けてください。",urlTooLong:"リンクが長すぎます。",urlMalformed:"有効なリンクではないようです。",hostNotAllowed:"このタスクは上記のプラットフォームのリンクのみ受け付けます。",notAPost:"プロフィールやホームではなく、その投稿・動画のリンクを指定してください。",alreadySubmitted:"このタスクはすでに送信済みです。",notAvailable:"このタスクは現在利用できません。",busy:"本日の確認上限に達しました。明日お試しください。",emailUnverified:"先にメールアドレスを確認してください。",accountTooNew:"アカウントの開設からの期間が足りません。",riskFlagged:"このアカウントは現在参加できません。誤りだと思われる場合はサポートにご連絡ください。",accountInactive:"このアカウントは有効ではありません。",deviceAlreadyClaimed:"この端末の別のアカウントがすでに参加しています。"},L6n="このプロジェクトを支援してくれた [OneHop]({{url}}) に感謝します。OneHop は OpenAI 互換の API キー 1 本で、GPT・Claude・Gemini・DeepSeek・Kimi・Qwen など数百のモデルを利用できます。複数のプロバイダー契約を管理する必要も、モデルを切り替えるためにコードを書き換える必要もありません。料金は従量課金です。→ {{domain}}",U6n="この文面をコピー",B6n={title:A6n,description:T6n,urlLabel:R6n,urlPlaceholder:P6n,submit:_6n,submitted:j6n,allowedHosts:N6n,rejectedHint:D6n,status:M6n,empty:E6n,item:I6n,error:O6n,sponsorBlurb:L6n,copyBlurb:U6n},F6n="チャットで問い合わせ",z6n="サポートチケット",q6n="チケットを作成してください。担当チームができるだけ早く返信します。",H6n="新規チケット",V6n={subject:"件名",category:"種類",status:"ステータス",updated:"更新日時",user:"User"},K6n={billing:"請求",technical:"技術",account:"アカウント",other:"その他"},G6n={open:"対応待ち",pending:"返信待ち",resolved:"解決済み",closed:"クローズ済み"},W6n={allStatuses:"すべてのステータス",allCategories:"All categories",search:"Search email or subject"},Y6n={subject:"件名",subjectPlaceholder:"問題を簡単に説明してください",category:"種類",message:"内容",messagePlaceholder:"状況を入力してください…",attachments:"添付ファイル",addAttachment:"ファイルを追加",submit:"チケットを送信",cancel:"キャンセル"},Q6n={you:"あなた",support:"サポート",system:"システム",replyPlaceholder:"返信を書く…",send:"送信",closedNotice:"このチケットはクローズされています。まだサポートが必要な場合は新しいチケットを作成してください。",sendHint:"⌘/Ctrl + Enter で送信",back:"チケット一覧に戻る",systemStatus:{open:"チケットを再オープンしました",pending:"チケットをユーザー返信待ちにしました",resolved:"チケットを解決済みにしました",closed:"チケットをクローズしました"}},X6n={title:"Support tickets",resolve:"Resolve",close:"Close",reopen:"Reopen",unread:"Unread"},Z6n="さらに読み込む",J6n={created:"チケットを送信しました",replied:"返信を送信しました",statusUpdated:"Status updated",error:"問題が発生しました。もう一度お試しください"},e8n="チケットが見つからないか、削除されています。",t8n={title:"まだチケットはありません",body:"お困りですか?チケットを作成してください。サポートします。",cta:"最初のチケットを作成"},n8n={liveChat:F6n,title:z6n,subtitle:q6n,newTicket:H6n,columns:V6n,category:K6n,status:G6n,filters:W6n,form:Y6n,thread:Q6n,admin:X6n,loadMore:Z6n,toast:J6n,notFound:e8n,empty:t8n},a8n="使用量",o8n="残高、消費ペース、支出の内訳を確認します。",s8n="アクティビティ",r8n="この期間にアクティビティはありません",i8n="使用量の内訳",l8n="API key 別",c8n="モデル別",d8n="token 種別",u8n="データã
809ªã—",m8n="この期間の使用量はまだありません。",p8n="現在のペースでは残高は約 {{days}} 日({{rate}}/日)持ちます。",f8n="出力",g8n="キャッシュ",h8n={tokens:"Tokens",requests:"リクエスト",cost:"コスト"},y8n="その他",v8n="ä»¶",b8n="tok",x8n="更新中…",$8n="データなし",w8n="リクエストを送るとデータが入り始めます。",k8n="上位 API keys",C8n="チャージ",S8n={title:"使用量を読み込めませんでした"},A8n={firstToken:"初回 token",latency:"平均レイテンシ",requests:"リクエスト",spend:"消費",spendSub:"この期間の請求",successRate:"{{rate}}% 成功",tokens:"Tokens",textDuration:"テキスト",mediaDuration:"画像・動画",cacheHit:"キャッシュ {{rate}}%",projected:"約 {{amount}}/月",vsPrevious:"前期間との比較"},T8n={activeDays:"アクティブ日数",longestStreak:"最長連続日数",daysValue:"{{n}} 日",totalSpend:"この期間の消費",peakDay:"最も利用が多い日"},R8n={all:"全期間",custom:"カスタム",last1h:"過去 1 時間",last30d:"過去 30 日",last7d:"過去 7 日",thisMonth:"今月",today:"今日",yesterday:"昨日",byMonth:"月別"},P8n={failed:"失敗",success:"成功"},_8n={cacheRead:"キャッシュ読み取り",cacheWrite:"キャッシュ書き込み",cacheWrite1h:"キャッシュ書き込み 1h",cacheWrite5m:"キャッシュ書き込み 5m",completion:"出力",prompt:"入力"},j8n={body:"ターミナルからリクエストを送るか playground を開くと、数秒で使用量がここに表示されます。",openPlayground:"playground を開く",title:"key の準備ができました"},N8n={body:"最初の API key を作成し、1 つの URL でリクエストをルーティングすると、使用量がここに表示されます。",createKey:"API key を作成",title:"OneHop へようこそ",tryPlayground:"playground を試す"},D8n="更新",M8n="現在のフィルターで {{count}} 件成功",E8n="合計 tokens",I8n="入力 {{input}} / 出力 {{output}}",O8n="課金 credit",L8n="{{cost}} 上流実コスト",U8n="平均レイテンシ",B8n="初回 token {{duration}}",F8n="30 日間のアクティビティ",z8n="成功リクエスト、token 量、課金 credit。",q8n="使用量トレンドを読み込み中",H8n="使用量トレンドはありません",V8n="成功リクエスト後に使用量トレンドが表示されます。",K8n="上位モデル",G8n="過去 30 日のモデル別課金 credit。",W8n="モデル使用量はまだありません",Y8n="成功リクエスト後にモデル内訳が表示されます。",Q8n="モデル",X8n="すべてのモデル",Z8n="状態",J8n="プロトコル",eFn="行数",tFn="リセット",nFn="使用量レコード",aFn="API key",oFn="Endpoint",sFn="種類",rFn="Tokens",iFn="コスト",lFn="所要時間",cFn="時刻",dFn="User-Agent",uFn="詳細",mFn="リクエスト詳細",pFn="使用量レコードの詳細と課金 metadata。",fFn="リクエスト ID",gFn="操作",hFn="入力 tokens",yFn="出力 tokens",vFn="キャッシュ読み取り tokens",bFn="キャッシュ書き込み tokens",xFn="入力コスト",$Fn="出力コスト",wFn="キャッシュ読み取りコスト",kFn="キャッシュ書き込みコスト",CFn="エラーコード",SFn="エラーメッセージ",AFn="見つかりません。",TFn="credit",RFn="合計 {{count}}",PFn="使用量レコードを読み込み中",_Fn="使用量レコードはありません",jFn="別のフィルター条件を試してください。",NFn="リクエストが API keys を通るとレコードがここに表示されます。",DFn="{{page}} ページ · {{total}} 件中 {{shown}} 件を表示",MFn="前へ",EFn="次へ",IFn="Credit",OFn="Tokens",LFn="リクエスト",UFn={time:"時刻",apiKey:"API Key",model:"モデル",reasoningEffort:"推論強度",endpoint:"Endpoint",type:"種類",billingMode:"課金モード",inputTokens:"入力 Tokens",outputTokens:"出力 Tokens",cacheReadTokens:"キャッシュ読み取り Tokens",cacheWriteTokens:"キャッシュ書き込み Tokens",totalTokens:"合計 Tokens",billedCredit:"課金 Credit",firstTokenMs:"初回 Token ms",durationMs:"所要時間 ms",status:"状態",userAgent:"User-Agent"},BFn={mon:"月",wed:"æ°´",fri:"金"},FFn="少",zFn="多",qFn={title:a8n,description:o8n,activity:s8n,activityEmpty:r8n,breakdown:i8n,byApiKey:l8n,byModel:c8n,byTokenType:d8n,chartEmpty:u8n,chartEmptyHint:m8n,burnRate:p8n,in:"入力",out:f8n,cache:g8n,metric:h8n,other:y8n,req:v8n,tok:b8n,refreshing:x8n,topEmpty:$8n,topEmptyHint:w8n,topKeys:k8n,topUp:C8n,error:S8n,kpi:A8n,stat:T8n,range:R8n,requests:P8n,tokenType:_8n,noRequests:j8n,welcome:N8n,refresh:D8n,successfulFilter:M8n,totalTokens:E8n,inOut:I8n,billedCredit:O8n,upstreamA
809ctualCost:L8n,avgLatency:U8n,firstToken:B8n,activityTitle:F8n,activityDescription:z8n,loadingTrend:q8n,noUsageTrend:H8n,trendDescription:V8n,topModels:K8n,topModelsDescription:G8n,noModelUsage:W8n,noModelUsageDescription:Y8n,model:Q8n,allModels:X8n,status:Z8n,protocol:J8n,rows:eFn,reset:tFn,tableLabel:nFn,apiKey:aFn,endpoint:oFn,type:sFn,tokens:rFn,cost:iFn,duration:lFn,time:cFn,userAgent:dFn,details:uFn,requestDetail:mFn,detailDescription:pFn,requestId:fFn,operation:gFn,inputTokens:hFn,outputTokens:yFn,cacheReadTokens:vFn,cacheWriteTokens:bFn,inputCost:xFn,outputCost:$Fn,cacheReadCost:wFn,cacheWriteCost:kFn,errorCode:CFn,errorMessage:SFn,notFound:AFn,creditSuffix:TFn,total:RFn,loadingRecords:PFn,noRecords:_Fn,differentFilters:jFn,recordsEmpty:NFn,pageSummary:DFn,previous:MFn,next:EFn,chartCredit:IFn,chartTokens:OFn,chartRequests:LFn,csv:UFn,weekday:BFn,activityLess:FFn,activityMore:zFn},HFn="Signup access",VFn="Controlled-launch registration gate. Approved emails, domains, existing users, and active admins can create accounts.",KFn="Signup access allowlist",GFn="No allowlist entries",WFn="Email / domain",YFn="Note",QFn="Status",XFn="Registration",ZFn="Expires",JFn="Invites",ezn="Updated",tzn="Action",nzn="Add",azn="Bulk add",ozn="Edit",szn="Save",rzn="Invite",izn="Restore",lzn="Remove",czn="Add signup access",dzn="Edit {{email}}",uzn="Bulk add signup access",mzn="Add a specific email or a whole domain with @company.com. Existing users and active admins are always allowed.",pzn="Paste one email or @domain per line. Invalid and duplicate rows will be skipped.",fzn="Email or domain",gzn="[email protected] or @company.com",hzn="Use @company.com to approve an entire domain.",yzn="Note (optional)",vzn="e.g. founding team",bzn="Expiry (optional)",xzn="Leave empty for no expiry. Expired entries no longer allow new signups.",$zn="Emails / domains",wzn=`[email protected]
810[email protected]
811@partner.com`,kzn="Search",Czn="Search email or domain",Szn="Status",Azn="Access check",Tzn="[email protected]",Rzn="Check",Pzn="Allowed",_zn="Denied",jzn={existing_user:"Existing user always allowed",active_admin:"Active admin always allowed",email_allowlist:"Matched exact email",domain_allowlist:"Matched domain rule",not_allowed:"No active rule matched"},Nzn="Registered",Dzn="Not registered",Mzn="Admin",Ezn="Domain rule",Izn="Never",Ozn="Added to signup access.",Lzn="Signup access updated.",Uzn="Added {{count}} entries.",Bzn="Invite sent.",Fzn="Entry restored.",zzn="Removed from signup access.",qzn="Remove {{email}} from signup access? They can no longer create a new account unless another rule allows them.",Hzn={title:"Email domain rules",description:"Hot-configurable email-domain lists layered on the built-in baseline. Blacklisted domains are blocked at signup; mainstream domains skip the watchlist.",add:"Add domain",addTitle:"Add domain rule",addDescription:"Blacklist blocks signup (403). Mainstream marks the domain as trusted so new users are not watchlisted.",kindLabel:"List",kindBlacklist:"Blacklist — block signup",kindMainstream:"Mainstream — skip watchlist",domainLabel:"Domain",domainPlaceholder:"example.com",noteLabel:"Note",notePlaceholder:"Optional — why this domain",search:"Search",searchPlaceholder:"Filter by domain",kindFilter:"List",allKinds:"All lists",statusFilter:"Status",statusActive:"Active",statusRevoked:"Removed",statusAll:"All",label:"Email domain rules",empty:"No domain rules",colDomain:"Domain",colKind:"List",colNote:"Note",colAddedBy:"Added by",colCreated:"Created",status:"Status",action:"Action",remove:"Remove",restore:"Restore",confirmRemove:"Remove rule for {{domain}}?",added:"Domain rule added",removed:"Domain rule removed",restored:"Domain rule restored",badgeBlacklist:"Blacklist",badgeMainstream:"Mainstream"},Vzn={title:HFn,description:VFn,label:KFn,empty:GFn,email:WFn,note:YFn,status:QFn,registration:XFn,expiresAt:ZFn,invites:JFn,updatedAt:ezn,action:tzn,add:nzn,bulkAdd:azn,edit:ozn,save:szn,invite:rzn,restore:izn,revoke:lzn,newTitle:czn,editTitle:dzn,bulkTitle:uzn,formDescription:mzn,bulkDescription:pzn,emailLabel:fzn,emailPlaceholder:gzn,emailHint:hzn,noteLabel:yzn,notePlaceholder:vzn,expiresAtLabel:bzn,expiresAtHint:xzn,bulkEntriesLabel:$zn,bulkEntriesPlaceholder:wzn,search:kzn,searchPlaceholder:Czn,statusFilter:Szn,checkLabel:Azn,checkPlaceholder:Tzn,check:Rzn,checkAllowed:Pzn,checkDenied:_z
811n,checkReasons:jzn,registered:Nzn,notRegistered:Dzn,adminAllowed:Mzn,domainRule:Ezn,never:Izn,added:Ozn,updated:Lzn,bulkAdded:Uzn,invited:Bzn,restored:Fzn,revoked:zzn,confirmRevoke:qzn,domainRules:Hzn},Kzn="Ops Billing",Gzn="Payments, wallets and refunds across all users.",Wzn={payments:"Payments",wallets:"Wallets",refunds:"Refunds"},Yzn="User email",Qzn="Search by email...",Xzn="Created",Zzn="Created",Jzn="Amount (USD)",e7n="Min",t7n="Max",n7n="Refunds",a7n="No refunds",o7n="Refund",s7n="Type",r7n="Full refund",i7n="Partial refund",l7n="Original payment",c7n="Wallets",d7n="Wallet",u7n="User",m7n="Total",p7n="Purchased",f7n="Bonus",g7n="No wallets",h7n="Payments",y7n="Payment status",v7n="No payments",b7n="Payment",x7n="Status",$7n="Amount",w7n="Paid",k7n="Refund",C7n="Not refundable (status must be paid)",S7n="View in Stripe Dashboard",A7n="Failed + dead-letter webhooks in last 7 days. 0=green, 1-9=yellow, 10+=red.",T7n="unhealthy",R7n="Refund {{id}}",P7n="This will refund {{user}} via Stripe. The platform fee shown below is deducted from the amount returned; uncheck it to waive. Promotional credits granted with the original payment will be forfeited proportionally.",_7n="Refund amount (USD)",j7n="Max ${{value}}",N7n="Reason",D7n="환불 미리보기를 불러오는 중…",M7n="환불 미리보기를 불러오지 못했습니다. 미리보기가 완료될 때까지 환불할 수 없습니다.",E7n="환불 가능한 거래를 찾을 수 없습니다. 이미 전액 환불된 결제일 수 있습니다.",I7n="결제 금액",O7n="기환불 금액",L7n="이번 환불",U7n="회수 크레딧",B7n="쿠폰 할인 크레딧 {{amount}}의 비례 회수가 포함됩니다",F7n="추가 지급 크레딧 {{amount}}의 비례 회수가 포함됩니다",z7n="보너스 회수",q7n="이번 환불로 프로모션 보너스 {{amount}}이(가) 회수됩니다.",H7n="Stripe로 환불",V7n="수수료 차감({{fee}}, Stripe 결제 비용 충당)",K7n="수수료({{fee}})",G7n="금액이 최대 환불 가능액 {{value}}을(를) 초과합니다",W7n="유효한 양수 금액을 입력하세요",Y7n="사용자가 구매 크레딧 일부를 이미 사용했습니다. 최대 환불 가능액: {{value}}",Q7n="이 결제는 이미 전액 환불되었습니다",X7n="수수료 차감 후 실제 환불액이 너무 적습니다. 최소 {{value}} 이상 환불하세요.",Z7n="Cancel",J7n="Issue refund",eqn="Submitting...",tqn="Refund submitted",nqn="Stripe will return the funds within 1-3 business days. Audit log written.",aqn="Refund failed",oqn={title:Kzn,description:Gzn,tabs:Wzn,emailFilter:Yzn,emailPlaceholder:Qzn,created:Xzn,createdRange:Zzn,amountRange:Jzn,amountMin:e7n,amountMax:t7n,refunds:n7n,noRefunds:a7n,refundId:o7n,refundType:s7n,typeRefund:r7n,typePartialRefund:i7n,originalPayment:l7n,wallets:c7n,wallet:d7n,user:u7n,total:m7n,purchased:p7n,bonus:f7n,noWallets:g7n,payments:h7n,paymentStatus:y7n,noPayments:v7n,payment:b7n,status:x7n,amount:$7n,paid:w7n,refund:k7n,notRefundable:C7n,viewInStripe:S7n,webhookHealthHint:A7n,unhealthyWebhooks:T7n,refundConfirmTitle:R7n,refundConfirmBody:P7n,refundAmountLabel:_7n,refundMaxHint:j7n,refundReasonLabel:N7n,refundPreviewLoading:D7n,refundPreviewFailed:M7n,refundNoRefundableTx:E7n,refundPaidRow:I7n,refundAlreadyRefundedRow:O7n,refundThisRefundRow:L7n,refundCreditReclaimRow:U7n,refundCreditCouponNote:B7n,refundCreditExtraNote:F7n,refundBonusReverseRow:z7n,refundBonusForfeitWarning:q7n,refundStripeReturnRow:H7n,refundFeeToggle:V7n,refundPlatformFeeRow:K7n,refundExceedsMax:G7n,refundAmountInvalid:W7n,refundInsufficientCredit:Y7n,refundAlreadyFull:Q7n,refundBelowMin:X7n,cancel:Z7n,confirmRefund:J7n,submitting:eqn,refundSubmittedTitle:tqn,refundSubmittedBody:nqn,refundFailedTitle:aqn},sqn="Campaigns",rqn="Audience segments, restricted-model access, model discounts, and targeted credit grants.",iqn={mobileLabel:"캠페인 섹션",segments:"Audiences",access:"Model access",discounts:"Model discounts",grants:"Targeted grants",recurring:"Periodic grants"},lqn="Status",cqn="Actions",dqn="All users",uqn="Always",mqn="No expiry",pqn="Active window",fqn="Leave blank for always-on. Times are end-of-day on the chosen dates.",gqn="Valid from",hqn="Valid to",yqn="Pause",vqn="Resume",bqn="Add",xqn="Remove",$qn="Delete",wqn="Clear",kqn="Close",Cqn={allKinds:"모든 유형",segmentKindStatic:"정적",segmentKindDynamic:"동적",grantKindGrant:"지급",grantKindRevoke:"회수",allStatuses:"모든 상태",statusActive:"활ì„
811±",statusPaused:"일시 중지",statusArchived:"보관됨",statusEnded:"종료됨",statusPending:"대기 중",statusProcessing:"처리 중",statusCompleted:"완료됨",statusFailed:"실패"},Sqn={title:"Audiences",create:"New audience",empty:"No audiences yet. Create one to target access, discounts, and grants.",name:"Name",namePlaceholder:"e.g. China power users",description:"Description",kind:"Kind",kind_static:"Static",kind_dynamic:"Dynamic",kindHint:"Static = a hand-picked list of users. Dynamic = users matching a rule, refreshed on materialize.",members:"Members",materialized:"Last refreshed",materializeDone:"Materialized {{count}} members",basics:"Basics",sheetDescription:"Audiences group users so you can target model access, discounts, and grants.",saved:"Audience saved",created:"Audience created",rule:"Matching rule",ruleHint:"All conditions must match (AND). An empty rule matches no one.",countryIn:"Country in",countryInHint:"Comma-separated ISO-2 codes, e.g. CN, US, JP.",signupAfter:"Signed up after",signupBefore:"Signed up before",minSpend:"Min cumulative spend (USD)",minSpendHint:"Only users whose lifetime spend is at least this.",previewing:"Estimating…",matchCount:"Estimated match: {{value}} users",membersTitle:"Members",membersHint:"Search and add users. Rule-matched members are read-only.",addMembers:"Add users",searchUsers:"Search by email or ID",noUsers:"No matching users.",noMembers:"No members yet.",membersAdded:"{{count}} member added",membersAdded_plural:"{{count}} members added",source_manual:"Manual",source_rule:"Rule",materializeTitle:"Materialize",materializeHint:"Snapshot the rule into the member list. Re-run anytime to refresh.",materialize:"Materialize now",materializing:"Materializing…",materializeConfirm:"Refresh members from the current rule? This replaces the rule-matched snapshot.",lastMaterialized:"Last materialized {{value}}",neverMaterialized:"Never materialized",deleteSegment:"Delete audience",deleteConfirm:"Delete this audience? Access, discounts, and grants referencing it will lose this targeting."},Aqn={title:"Model access",create:"Grant access",empty:"No access grants yet.",model:"Model",segment:"Audience",target:"Target",validFrom:"Valid from",validTo:"Valid to",sheetDescription:"Give a restricted model to an audience for an optional time window.",created:"Access granted",statusUpdated:"Status updated",deleteConfirm:"Remove this access grant?",noSegmentsTitle:"Create an audience first",noSegmentsDescription:"Access is granted to an audience. Create an audience on the Audiences tab, then come back to grant model access.",publicHint:"This model is public — everyone can already use it.",publicModelTitle:"Model is public",publicModelWarning:"{{model}} is public, so this grant has no effect until it is set to restricted on the Models page. Flip it to restricted there to gate it to this audience.",createAnyway:"Create anyway"},Tqn={title:"Model discounts",create:"New discount",empty:"No discounts yet.",model:"Model",audience:"Audience",audienceHint:"Leave as all users to discount for everyone.",discount:"Discount",window:"Window",live:"Live",end:"End",amount:"Discount",target:"Target",name:"Internal name",nameHint:"Optional label for your own reference.",percentLabel:"Extra off the platform price",percentHint:"1–99%. Applied on top of our platform price (our_price), not the official price.",percentError:"Enter a value between 1 and 99.",previewPlatform:"Discounted platform price",previewVsOfficial:"Saved vs official",pickStart:"Pick a start date",sheetDescription:"Discounts apply on top of the platform price. The official price is shown for comparison only.",created:"Discount created",saved:"Discount saved",statusUpdated:"Status updated",deleteConfirm:"Delete this discount?",liveReadonly:"This discount is live — value, window, and name are locked. Pause or end it to make changes.",terminalReadonly:"This discount has ended and is read-only."},Rqn={title:"Targeted grants",create:"New grant",empty:"No targeted grants yet.",time:"Time",kind:"Kind",kind_grant:"Grant",kind_revoke:"Revoke",model:"Models",modelHint:"Credit is shared across the selected models — spending on any of them draws from the same balance.",pickModels:"Pick models",nModels:"{{count}} models selected",pasteEmails:"Bulk add by email",pasteEmailsPlaceholder:"[email protected], [email protected] — separated by newline, comma or semicolon",importEmails:"Parse & add",importMatched:"Matched {{count}} users.",importUnmatched:"{{count}} emails not found:",importInvalid:"{{count}} invalid entries skipped:",importInactive:"{{count}} matched but inactive — will be skipped:",preset7d:"7 days",preset30d:"30 days",preset90d:"90 days",total:"Total",notifyYes:"Yes",notifyNo:"No",recipients:"Recipients",amount:"Amount",expiry:"Expires",expiryHint:"Optional. Unused balance expires on this date.",audience:"Audience",bySegment:"By audie
811nce",byUsers:"Specific users",segment:"Audience",users:"Users",searchUsers:"Search by email or ID",noUsers:"No matching users.",grantDetails:"Grant details",amountEach:"Amount per recipient (USD)",amountHint:"0.01–2000 per recipient.",notifyEmail:"Email recipients",note:"Note",summary:"{{count}} recipients × {{amount}} = {{total}} total",send:"Send grant",sending:"Queuing…",queued:"Grant queued — fanning out to recipients",confirmTitle:"Send targeted grant?",confirmMessage:"Grant {{amount}} each to {{count}} recipients ({{total}} total)?",confirmSend:"Send grant",sheetDescription:"Grant model-restricted credit to an audience or a hand-picked list of users.",batchTitle:"Grant batch",succeeded:"Succeeded",failed:"Failed",revokedAmount:"Reclaimed",completedAt:"Completed",revoke:"Revoke",revokeConfirm:"Reclaim unused balance from {{count}} recipients of {{model}}?",revokeQueued:"Revoke queued"},Pqn={title:"Periodic grants",create:"New periodic grant",editTitle:"Edit periodic grant",empty:"No periodic grants yet. Create one to give recurring free tokens or credit on a daily or weekly cadence.",sheetDescription:"Free tokens or restricted credit, refreshed for an audience every period (lazily, on first use).",basics:"Basics",name:"Name",namePlaceholder:"e.g. Daily free Kimi tokens",unit:"Unit",unitHint:"Tokens = free token allowance per period. USD = restricted credit (single model only).",unitLocked:"Unit is fixed after creation — create a new campaign to switch.",unit_tokens:"Tokens",unit_usd:"USD",allUnits:"All units",targeting:"Targeting",models:"Models",modelsHint:"Free tokens are usable across all selected models.",model:"Model",usdSingleModelHint:"USD grants are restricted to one model — multi-model would make spend unattributable.",pickModels:"Pick models",nModels:"{{count}} model selected",nModels_plural:"{{count}} models selected",audience:"Audience",audienceHint:"Leave as all users to grant to everyone.",schedule:"Amount & schedule",perPeriod:"Per period",tokensHint:"Positive integer, e.g. 100000 tokens per period.",usdHint:"
8110.01–2000 USD per period.",cadence:"Cadence",cadence_daily:"Daily",cadence_weekly:"Weekly",anchorTz:"Anchor timezone",anchorTzHint:"Period boundaries follow local midnight in this timezone.",startsAt:"Starts",startsAtHint:"Optional. Blank = effective immediately.",endsAt:"Ends",endsAtHint:"Optional. Blank = no end date.",immediately:"Immediately",excludeRisky:"Exclude risky accounts",thisPeriod:"This period (users · used/granted)",allStatuses:"All statuses",status_draft:"Draft",status_active:"Active",status_paused:"Paused",status_archived:"Archived",created:"Periodic grant created",saved:"Periodic grant saved"},_qn={title:sqn,description:rqn,tabs:iqn,status:lqn,actions:cqn,allUsers:dqn,always:uqn,noExpiry:mqn,window:pqn,windowHint:fqn,validFrom:gqn,validTo:hqn,pause:yqn,resume:vqn,actionAdd:bqn,actionRemove:xqn,actionDelete:$qn,actionClear:wqn,actionClose:kqn,filters:Cqn,segments:Sqn,access:Aqn,discounts:Tqn,grants:Rqn,recurring:Pqn},jqn="Announcements",Nqn="Banners shown at the top of the marketing site and the console.",Dqn="Banners",Mqn="Top-of-page banners shown on www and console.",Eqn="New Banner",Iqn="No banners yet. Create one to show a top-of-page announcement.",Oqn="Message",Lqn="Supports inline links: [text](https://… or /path). Multiple links allowed.",Uqn="CTA Label",Bqn="CTA Link",Fqn="Severity",zqn="Audience",qqn="Starts At",Hqn="Ends At",Vqn="Dismissible",Kqn="Status",Gqn="Archive",Wqn="Archive this banner? It will no longer be shown to users.",Yqn="New Banner",Qqn="Edit Banner",Xqn="Title",Zqn="Type",Jqn="Content",eHn="Display type",tHn="Banner",nHn="Modal",aHn="Draft",oHn="Active",sHn="Info",rHn="Warning",iHn="Critical",lHn="Console only",cHn="Public site only",dHn="Both",uHn="Hero image",mHn="Upload an image, or paste an https URL. Optional. PNG / JPEG / WebP / GIF, up to 5MB.",pHn="Upload",fHn="Uploading…",gHn="Remove",hHn="Only PNG, JPEG, WebP and GIF images are supported.",yHn="Image must be 5MB or smaller.",vHn="Upload failed, please try again.",bHn="Title",xHn="Body",$Hn="Action buttons",wHn="Button label",kHn="Button link",CHn="Style",SHn="Add button",AHn="Remove",THn="Primary",RHn="Secondary",PHn="Link",_Hn="Simplified Chinese (source)",jHn="Fill in Simplified Chinese only, then translate to other languages in one click.",NHn="Translate to all languages",DHn="Translating…",MHn="Other languages (translated, editable)",EHn="Translated {{ok}} languages",IHn="{{failed}} languages failed — fill in manually or retry",OHn="Chinese source changed but translations weren't refreshed — click Translate again or non-Chinese users will see outdated copy.",LHn="Re-show to users who already dismissed it",UHn="Fill in the Simplified Chinese body first.",BHn={title:jqn,description:Nqn,annTitle:Dqn,annDescription:Mqn,annNewButton:Eqn,annEmpty:Iqn,annMessage:Oqn,annInlineLinkHint:Lqn,annCtaText:Uqn,annCtaUrl:Bqn,annSeverity:Fqn,annAudience:zqn,annStartsAt:qqn,annEndsAt:Hqn,annDismissible:Vqn,annStatus:Kqn,annArchive:Gqn,annArchiveConfirm:Wqn,annCreateTitle:Yqn,annEditTitle:Qqn,annColTitle:Xqn,annColType:Zqn,annColContent:Jqn,annDisplayType:eHn,annTypeBanner:tHn,annTypeModal:nHn,annStatusDraft:aHn,annStatusActive:oHn,annSevInfo:sHn,annSevWarning:rHn,annSevCritical:iHn,annAudConsole:lHn,annAudPublic:cHn,annAudAll:dHn,annHeroImage:uHn,annHeroImageHint:mHn,annHeroImageUpload:pHn,annHeroImageUploading:fHn,annHeroImageRemove:gHn,annHeroImageBadType:hHn,annHeroImageTooLarge:yHn,annHeroImageUploadFailed:vHn,annModalTitle:bHn,annBody:xHn,annActions:$Hn,annActionLabel:wHn,annActionUrl:kHn,annActionVariant:CHn,annActionAdd:SHn,annActionRemove:AHn,annVariantPrimary:THn,annVariantSecondary:RHn,annVariantLink:PHn,annSourceLocale:_Hn,annSourceHint:jHn,annTranslate:NHn,annTranslating:DHn,annOtherLocales:MHn,annTranslateDone:EHn,annTranslateParti
811al:IHn,annTranslateStale:OHn,annBumpRevision:LHn,annTranslateNeedSource:UHn},FHn="Operations dashboard",zHn="Real-time overview of platform health, usage, and alerts.",qHn="Refresh",HHn="Refreshing",VHn="Updated {{time}}",KHn="Loading dashboard",GHn="Failed to load dashboard",WHn="No data",YHn="No traffic yet",QHn="Video fail rate",XHn="Avg latency",ZHn="Error types",JHn="No errors",eVn="Model anomalies",tVn="All models healthy",nVn="Components",aVn="req",oVn="Checkout abandon",sVn="Refunds",rVn="Chargebacks",iVn="First-charge conversion",lVn={kpis:"Key metrics",alerts:"Alerts",health:"System health",payment:"Payment health",revenue:"Revenue & growth",trend:"Trend",alertSettings:"Alert settings",leaderboard:"Growth leaderboards"},cVn={title:"Referral leaderboard",boardAria:"Select leaderboard",rangeAria:"Select time range",boards:{invites:"Invites",revenue:"Referred revenue"},ranges:{today:"Today","3d":"3d","7d":"7d","30d":"30d"},ofTotal:"of {{total}}",countPair:"{{valid}} / {{total}} valid",empty:"No referrals in this window",failedLoad:"Failed to load leaderboard",validHint:"Valid = normal risk status + active binding"},dVn={requests:"Requests",successRate:"Payment success",activeUsers:"Active users",newSignups:"New signups",newSignupsHint:"정상 사용자만 (플래그 제외)",billedCredit:"Billed credit",errorRate:"Error rate",avgLatency:"Avg latency",balance:"Platform balance",vsPrevious:"{{delta}} vs previous",vsYesterday:"vs yesterday",noChange:"No change",successFailed:"{{success}} ok · {{failed}} fail"},uVn={today:"Revenue today",trendTitle:"Revenue today vs yesterday",monthDetail:"{{count}} charges · MTD {{mtd}}"},mVn={summary:"{{paid}} paid · {{failed}} failed · {{pending}} pending"},pVn={paidOfSignups:"{{paid}} first-charged / {{signups}} signups"},fVn={healthy:"Healthy",degraded:"Degraded",down:"Down",unknown:"Unknown"},gVn={critical:"Critical",warning:"Warning",info:"Info",ok:"Healthy"},hVn={operational:"Operational",degraded:"Degraded",down:"Down",upstream:"Upstream channels",gateway:"Gateway",billing:"Billing",jobs:"Job queue",tierReason:{ok:"Healthy",watch:"Watch: nearing threshold",warning:"Warning: over warn line",critical:"Critical: over crit line"}},yVn={title:"Active alerts",empty:"All systems operational",activeCount:"{{count}} active alerts",triggeredAt:"Triggered {{time}}",viewDetail:"View detail",acknowledge:"Acknowledge",resolved:"Resolved"},vVn={title:"Alert settings",description:"Set warning / critical thresholds for the 6 alert types; ops is notified when a metric crosses the line. Severity is derived from the tier automatically.",enabled:"Enabled",warnThreshold:"Warning threshold",critThreshold:"Critical threshold",cooldown:"Cooldown (min)",cooldownHint:"Minimum gap between two notifications for the same alert, to prevent spam.",rateHint:"Rate, 0–1 (e.g. 0.05 = 5%).",countHint:"Absolute value, ≥ 0.",directionHigher:"Higher is worse: warning ≤ critical.",directionLower:"Lower is worse: warning ≥ critical.",lastFired:"Last fired {{time}}",neverFired:"Never fired",save:"Save all",saving:"Saving",saved:"Alert settings saved",saveError:"Failed to save",readonlyHint:"You have read-only access.",noData:"No alert settings",errors:{directionHigher:"Warning threshold must be ≤ critical threshold",directionLower:"Warning threshold must be ≥ critical threshold",rateRange:"Rate thresholds must be within 0–1",nonNegative:"Thresholds must be ≥ 0",cooldownNonNegative:"Cooldown must be ≥ 0",required:"Threshold is required"},types:{payment_success_rate_low:"Payment success rate low",gateway_error_rate_high:"Gateway error rate high",model_error_spike:"Model error spike",webhook_dead_letter:"Webhook dead letter backlog",system_component_down:"System component down",negative_balance_exposure:"Negative balance exposure"}},bVn={label:"Time range",today:"Today",days7:"7 days",days30:"30 days"},xVn="{{failed}}/{{total}} jobs",$Vn="{{delta}}pt vs yesterday",wVn="Low sample ({{n}})",kVn="Had gateway calls",CVn="Last 7d cohort · normal users only",SVn="Refund rate {{rate}}%",AVn={funnel:"opened {{opened}} · paid {{paid}}"},TVn={title:FHn,description:zHn,refresh:qHn,refreshing:HHn,lastUpdated:VHn,loading:KHn,failedLoad:GHn,empty:WHn,noTraffic:YHn,videoFailRate:QHn,avgLatency:XHn,errorTypes:ZHn,noErrors:JHn,modelAnomalies:eVn,noAnomalies:tVn,components:nVn,req:aVn,abandonRate:oVn,refunds:sVn,chargebacks:rVn,firstChargeConversion:iVn,sections:lVn,leaderboard:cVn,kpi:dVn,revenue:uVn,orders:mVn,conversion:pVn,componentStatus:fVn,severity:gVn,health:hVn,alerts:yVn,alertSettings:vVn,range:bVn,videoJobsDetail:xVn,vsYesterdayPt:$Vn,lowSample:wVn,activeUsersHint:kVn,conversionCohortHint:CVn,refundRate:SVn,checkout:AVn},RVn="Loading...",PVn="Admin permission required",_Vn="Your account does not have permission to access this administrator page.",jVn={loading:RVn,permissionRequired:PVn,permissionDescription:_Vn},NVn="User growth",DVn="Signup rewards, discount codes, referrals, and credit grants. Manual grants live on the Users page.",MVn={mobileLabel:"성장 섹션",onboarding:"Signup & new users",discount:"Discount codes",referral:"Referral cashback",grants:"Credit grants",topup:"Top-up bonus",redeem:"교환 코드",tasks:"Task wall"},EVn="Coupon batch",IVn="Promotion rule",OVn="Count",LVn="Batch code",UVn="Creating...",BVn="Create batch",FVn="{{count}} coupon code created",zVn="{{count}} coupon codes created",qVn="Batch {{code}}",HVn="Copied",VVn="Copy all",KVn="Credit grants",GVn="Source",WVn="Status",YVn="No grants yet",QVn="Coupon redemptions, signup bonuses, and manual grants appear here.",XVn="Time",ZVn="User",JVn="Amount",e9n="Signup bonus",t9n="Controls the credit automatically granted to new users. Disable it to stop future signup grants.",n9n="Enable signup credit",a9n="Amount (USD)",o9n="Save signup bonus",s9n="Saving...",r9n="Current amount {{amount}}",i9n="Referral cashback",l9n="Configure double-sided referral rewards, release delay, caps, and billing-page messaging.",c9n="Enable referral cashback",d9n="Reward tiers",u9n="Add tier",m9n="Recipient",p9n="From day",f9n="Until day",g9n="Percent",h9n="Label",y9n="Action",v9n="Inviter",b9n="Invitee",x9n="No end",$9n="Remove tier",w9n="Release delay (days)",k9n="Per-topup cap (USD)",C9n="Min topup (USD, blank = none)",S9n="Cashback expiry (days, blank = never)",A9n="Billing-page countdown banner",T9n="Banner title",R9n="Subtitle",P9n="Countdown mode",_9n="Global deadline",j9n="Each invitee's 30-day window",N9n="Ends at",D9n="Save referral settings",M9n="v{{version}}",E9n="Saving reward tiers, release delay, caps, or expiry publishes a NEW version. Existing referral relationships keep the version they were bound under — only new signups get the new terms. Pausing only affects new signups.",I9n="Version history",O9n="Version",L9n="Status",U9n="Reward tiers",B9n="Published",F9n="Superseded",z9n="current",q9n="Top-up discount codes",H9n="Discount codes lower what users pay at checkout; the full top-up amount is credited only after payment succeeds. Configure here, then generate codes below.",V9n="Enable discount codes",K9n="Discount type",G9n="Fixed amount off (USD)",W9n="Percentage off (%)",Y9n="Amount off (USD)",Q9n="Percentage off (0-100)",X9n="Save discount",Z9n="Default low-balance alert",J9n="New users get an email low-balance alert at this threshold by default. Changing it only affects future signups, not existing wallets.",eKn="Threshold (USD)",tKn="Save threshold",nKn="Current: {{amount}}",aKn="Generate codes against the discount rule above.",oKn="In effect: {{state}} · {{value}} off",sKn="enabled",rKn="disabled",iKn="Issued codes",lKn="Pick a batch to see who redeemed each code.",cKn="No batches yet",dKn="Generate a batch above to start tracking redemptions.",uKn="Total",mKn="Redeemed",pKn="Reserved",fKn="Available",gKn="Codes in {{code}}",hKn="No codes in this batch",yKn="Code",vKn="Redeemed by",bKn="Redeemed at",xKn="Paid",$Kn="Discount",wKn="코드 생성",kKn="공유 코드는 하나의 코드를 여러 사용자가 각각 최대 N회까지 사용할 수 있고, 고유 코드 배치는 일회용 코드 N개입니다.",CKn="코드 유형",SKn="단일 공유 코드",AKn="고유 코드 배치",TKn="코드 문자열 (비워 두면 무작위 생성)",RKn="예: WELCOME100",PKn="총 사용 횟수 (N)",_Kn="사용자당",jKn="만료 일시 (선택)",NKn="그룹 (선택)",DKn="공유 코드 생성",MKn="공유 코드가 생성되었습니다",EKn="이 배치에 별도 할인 적용 (미설정 시 위 규칙 사용)",IKn="공유 코드",OKn="하나의 코드를 여러 사용자가 사용합니다. 사용 횟수는 결제 완료된 사용분을 집계합니다.",LKn="아직 공유 코드가 없습니다",UKn="사용 / 한도",BKn="사용자당",FKn="만료",zKn="비활성화",qKn="이 코드를 비활성화할까요?",HKn="새 결제는 즉시 차단됩니다. 이미 결제 진행 중인 주문은 그대로 완료될 수 있습니다.",VKn="코드가 비활성화되었습니다",KKn="CSV",GKn="상태",WKn="이메일",YKn={code:"코드",discount:"할인",redeemed:"사용",cap:"한도",perUser:"사용자당",status:"상태",expiresAt:"만료 일시",batch:"배치",createdAt:"생성 일시",redeemedBy:"사용자",redeemedAt:"사용 일시",paid:"결제",discountAmount:"할인",email:"Email",credited:"Credited",bonus:"Bonus",paidAt:"Paid at"}
811,QKn="Amount",XKn="Bound at",ZKn="Counterparty",JKn="Invitee",eGn="Inviter",tGn="Rate",nGn="Released",aGn="Role",oGn="Tier",sGn="Top-up",rGn="Load more",iGn="No referrals under this version",lGn="No cashback under this version",cGn="Referrals",dGn="Referral records",uGn="Cashback records",mGn="Version detail",pGn={title:"Top-up bonus",description:"Reward bigger top-ups with bonus credit. Each tier can grant general credit or credit restricted to a model group.",enabled:"Enable top-up bonus",saved:"Top-up bonus saved",tiers:"Bonus tiers",tiersHint:"Top-up matches the highest tier whose threshold it reaches. Restricted credit only applies to synchronous text/image calls — not video or async image jobs.",noTiers:"No tiers yet. Add one to start rewarding top-ups.",min:"Min top-up (USD)",rewardType:"Reward",bonus:"Fixed (USD)",percent:"Percent (%)",rewardBonus:"Bonus amount (USD)",rewardPercent:"Percent of top-up (%)",expiryDays:"Expiry (days, blank = never)",noExpiry:"Never",scope:"Credit scope",scopeHint:"General credit works on any model; a model group restricts the bonus to those models.",scopeGeneral:"General (any model)",removeTier:"Remove tier",addTier:"Add tier",antifraud:"Abuse guards",minTopup:"Min top-up to qualify (USD, blank = none)",maxBonusPerUser:"Max bonus per user (USD, blank = none)",none:"None",excludeRisky:"Exclude watchlisted / blocked users",save:"Save top-up bonus",createScope:"New restricted model group",createScopeDescription:"Pick the models a restricted bonus may be spent on, then reference this group from a tier above.",scopeName:"Group name",scopeNamePlaceholder:"High-margin models",scopeModels:"Models",pickModels:"Pick models",nModels:"{{count}} models",createScopeButton:"Create group",scopeCreated:"Model group created"},fGn="교환 코드 생성",gGn="충전 카드 방식의 교환 코드입니다. 사용자가 청구 페이지에서 코드를 입력하면 액면가가 바로 잔액에 반영됩니다(보너스 잔액, 결제 불필요).",hGn="배치 이름(선택)",yGn="예: Conf-2026 증정",vGn="생성 수량",bGn="코드당 액면가(USD)",xGn="계정당 이 배치에서 교환 가능 횟수(비워 두면 = 무제한)",$Gn="무제한",wGn="교환 마감 시간(선택)",kGn="Restrict to models (optional)",CGn="General balance (no restriction)",SGn="{{count}} models selected",AGn="Blank = general balance. Selected models share one earmarked pool.",TGn="Credit validity after redemption (days, blank = never expires)",RGn="never expires",PGn="{{n}} d",_Gn="Models",jGn="Validity",NGn="General balance",DGn="교환 코드 생성",MGn="지금 바로 저장하세요. 이후에도 배치 목록의 「평문 내보내기」로 다시 받을 수 있습니다.",EGn="교환 코드 배치",IGn="배치를 클릭하면 코드별 상세를 볼 수 있습니다. 「평문 내보내기」로 평문을 다시 내보낼 수 있습니다.",OGn="교환 코드 배치가 아직 없습니다",LGn="배치",UGn="액면가",BGn="평문 내보내기",FGn="이미 교환된 이 코드를 취소할까요?",zGn="사용자 잔액에서 아직 사용되지 않은 부분을 회수합니다. 이미 사용된 부분은 회수할 수 없습니다.",qGn="취소",HGn="{{amount}} 취소됨",VGn="교환 코드를 내보냈습니다",KGn="이 배치의 미교환 코드를 비활성화할까요?",GGn="아직 교환되지 않은 모든 코드가 무효화됩니다. 이미 교환된 코드는 영향을 받지 않습니다.",WGn="코드 {{n}}개를 비활성화했습니다",YGn="Bonus % on top-up",QGn="Bonus (%)",XGn="Bonus validity (days, optional)",ZGn="blank = never expires",JGn={view:"Payments",title:"Payments via ····{{code}}",email:"User",credited:"Credited",bonus:"Bonus",summary:"{{count}} payments · {{users}} users · {{paid}} paid · {{bonus}} bonus granted",empty:"No payments through this code yet"},eWn={configTitle:"Task wall config",configDescription:"Amounts, switches and accepted hosts. Task copy lives in the translation files, not here. Changes take effect on the next page load — no deploy.",enabled:"Enable the task wall",tasksTitle:"Tasks",taskKey:"Task key",amount:"Amount (USD)",hosts:"Accepted hosts",hostsHint:"Links outside this list are rejected at submission time.",taskEnabled:"Visible to users",addTask:"Add task",guardsTitle:"Abuse guards",dailyCap:"Daily pending c
811ap",dailyCapHint:"0 = no cap. Fail-open if Redis is down.",minAge:"Minimum account age (days)",minAgeHint:"0 = no age gate.",saved:"Task wall saved",queueTitle:"Submissions",queueCount:"{{count}} shown",empty:"Nothing here.",approve:"Approve & pay",approved:"Approved — credit granted",reject:"Reject",rejected:"Rejected",confirmReject:"Confirm reject",reasonPlaceholder:"Why is this rejected?",duplicate:"Same link from {{count}} other account(s)",status:{pending:"Pending",approved:"Approved",rejected:"Rejected"}},tWn={title:NVn,description:DVn,tabs:MVn,couponBatch:EVn,promotionRule:IVn,count:OVn,batchCode:LVn,creating:UVn,createBatch:BVn,codesCreated:FVn,codesCreated_plural:zVn,batch:qVn,copied:HVn,copyAll:VVn,creditGrants:KVn,source:GVn,status:WVn,noGrants:YVn,noGrantsDescription:QVn,time:XVn,user:ZVn,amount:JVn,signupBonus:e9n,signupBonusDescription:t9n,signupBonusEnabled:n9n,signupBonusAmount:a9n,saveSignupBonus:o9n,saving:s9n,currentSignupBonus:r9n,referral:i9n,referralDescription:l9n,referralEnabled:c9n,referralRewardTiers:d9n,addTier:u9n,tierRole:m9n,tierFromDay:p9n,tierUntilDay:f9n,tierPercent:g9n,tierLabel:h9n,tierAction:y9n,roleReferrer:v9n,roleReferee:b9n,noEndDay:x9n,removeTier:$9n,releaseDelayDays:w9n,referralCap:k9n,referralMinTopup:C9n,referralExpiryDays:S9n,bannerEnabled:A9n,bannerTitle:T9n,bannerSubtitle:R9n,bannerMode:P9n,bannerModeGlobal:_9n,bannerModeWindow:j9n,bannerEndsAt:N9n,saveReferral:D9n,referralVersion:M9n,referralPublishHint:E9n,referralVersionHistory:I9n,versionCol:O9n,versionStatus:L9n,versionTiers:U9n,versionPublished:B9n,versionSuperseded:F9n,versionCurrent:z9n,discountRule:q9n,discountRuleDescription:H9n,discountEnabled:V9n,discountType:K9n,discountFixed:G9n,discountPercent:W9n,discountValueFixed:Y9n,discountValuePercent:Q9n,saveDiscount:X9n,defaultLowBalanceThreshold:Z9n,defaultLowBalanceThresholdDescription:J9n,defaultLowBalanceThresholdAmount:eKn,saveDefaultLowBalanceThreshold:tKn,currentDefaultLowBalanceThreshold:nKn,couponBatchDescription:aKn,discountEffective:oKn,stateEnabled:sKn,stateDisabled:rKn,couponTrace:iKn,couponTraceDescription:lKn,noBatches:cKn,noBatchesDescription:dKn,batchTotal:uKn,batchRedeemed:mKn,batchReserved:pKn,batchActive:fKn,codesInBatch:gKn,noCodes:hKn,code:yKn,redeemedBy:vKn,redeemedAt:bKn,paid:xKn,discount:$Kn,createIssuance:wKn,createIssuanceDescription:kKn,formLabel:CKn,formShared:SKn,formUniqueBatch:AKn,sharedCodeText:TKn,sharedCodeRandomHint:RKn,sharedMaxRedemptions:PKn,sharedPerUser:_Kn,expiresAt:jKn,batchCodeOptional:NKn,createSharedCode:DKn,sharedCodeCreated:MKn,batchOwnDiscount:EKn,sharedCodesList:IKn,sharedCodesListDescription:OKn,noSharedCodes:LKn,colRedeemedTotal:UKn,colPerUser:BKn,colExpiry:FKn,disableCode:zKn,disableCodeConfirmTitle:qKn,disableCodeConfirmMessage:HKn,codeDisabled:VKn,exportCsv:KKn,statusFilter:GKn,filterByEmail:WKn,csv:YKn,colAmount:QKn,colBoundAt:XKn,colCounterparty:ZKn,colInvitee:JKn,colInviter:eGn,colRate:tGn,colReleasedAt:nGn,colRole:aGn,colTier:oGn,colTopup:sGn,loadMore:rGn,noBindings:iGn,noCashback:lGn,versionBindings:cGn,versionBindingsSection:dGn,versionCashbackSection:uGn,versionDetail:mGn,topup:pGn,redeemCreate:fGn,redeemCreateDescription:gGn,redeemBatchName:hGn,redeemBatchNameHint:yGn,redeemCount:vGn,redeemFaceValue:bGn,redeemPerUserLimit:xGn,redeemUnlimited:$Gn,redeemExpiresAt:wGn,redeemModels:kGn,redeemModelsAll:CGn,redeemModelsCount:SGn,redeemModelsHint:AGn,redeemValidityDays:TGn,redeemValidityForever:RGn,redeemValidityDaysValue:PGn,redeemColModels:_Gn,redeemColValidity:jGn,redeemGeneralBalance:NGn,redeemCreateBtn:DGn,redeemRevealHint:MGn,redeemBatches:EGn,redeemBatchesDescription:IGn,redeemNoBatches:OGn,redeemBatchCol:LGn,redeemFace:UGn,redeemReveal:BGn,redeemReverseTitle:FGn,redeemReverseMessage:zGn,redeemReverseBtn:qGn,redeemReversed:HGn,redeemRevealed:VGn,redeemDisableBatchTitle:KGn,redeemDisableBatchMessage:GGn,redeemBatchDisabled:WGn,discountTypeBonusPercent:YGn,discountValueBonusPercent:QGn,bonusExpiryDays:XGn,bonusExpiryDaysHint:ZGn,sharedPayments:JGn,tasks:eWn},nWn="Models",aWn="Model catalog: create, edit, publish.",oWn={label:"Display badges",hint:"Hot / Benefit tags shown on the user-facing models & pricing page.",hot:"Hot",benefit:"Benefit"},sWn="Add model",rWn="Edit {{model}}",iWn="New model",lWn="Close",cWn="Basics & content save together; pricing and status changes apply immediately.",dWn="Create the model draft. Set pricing and publish after it exists.",uWn={basics:"Basics",basicsHint:"Identity, upstream mapping, protocols.",config:"Configuration",configHint:"Identity, upstream routing, type and capabilities.",protocols:"Protocols",protocolsHint:"Which API protocols this model serves.",content:"Content & display",contentHint:"i18n summary / description and sort order."},mWn="Provider slug",pWn="Pick a known provider or type a custom slug.",fWn="Model slug",gWn="Aliases",hWn="Comma-separated lookup aliases for import and review.",yWn="Source (customer-visible)",vWn="Label customers see on the model/logs. Blank = vendor. Use it to distinguish s
811ame-model variants at different prices.",bWn="Platform",xWn="— select platform —",$Wn="Upstream model id (optional; choose from upstream or enter manually)",wWn="Choose from upstream...",kWn="Upstream unavailable",CWn="Protocols",SWn="Input price / 1M (USD)",AWn="Output price / 1M (USD)",TWn="EN summary",RWn="Preview",PWn="(No summary)",_Wn="No protocol",jWn="Cancel",NWn="Save",DWn="Create draft",MWn={basic:"Identity & routing",pricing:"Pricing",content:"Content & display"},EWn={config:"1 · Configuration",protocols:"2 · Protocols",pricing:"3 · Pricing",display:"Content & display",back:"Back",next:"Next",create:"Create model"},IWn="Context window (tokens)",OWn="Max input the model accepts. Leave blank if unknown.",LWn="Max output tokens",UWn="Max tokens the model can generate per response.",BWn={status:"Status",visibility:"Visibility",hint:"Lifecycle changes apply immediately (with confirmation), separate from Save.",confirmStatus:'Set status to "{{status}}"? Takes effect immediately.',confirmVisibility:'Set visibility to "{{visibility}}"? Takes effect immediately.',statusChanged:"Status set to {{status}}.",visibilityChanged:"Visibility set to {{visibility}}.",publishBlocked:"Cannot publish: core pricing factors are missing. Set them in the Pricing tab first.",statusOption:{draft:"Draft",published:"Published",deprecated:"Deprecated",archived:"Archived"},visibilityOption:{public:"Public",hidden:"Hidden"},availability:"Availability",confirmAvailable:"Mark this model available again? Takes effect immediately.",confirmUnavailable:"Mark this model temporarily unavailable? It stays listed (greyed out) but gateway calls are rejected.",availableChanged:"Model marked available.",unavailableChanged:"Model marked temporarily unavailable.",availabilityOption:{available:"Available",unavailable:"Unavailable"},audience:"Audience",audienceOption:{everyone:"Everyone",paid_only:"Topped-up accounts only"},confirmPaidOnly:"Restrict this model to accounts that have topped up? It stays listed, but users who never paid get a 403 telling them to top up.",confirmEveryone:"Open this model to every account? Takes effect immediately.",paidOnlyChanged:"Model restricted to accounts that have topped up.",everyoneChanged:"Model opened to every account."},FWn="Input modalities",zWn="Declares what this model can receive, including vision, audio, video, and file inputs.",qWn="Output modalities",HWn="Drives the publish gate: text requires text in/out pricing, image/video/embeddings require their factors.",VWn="Image billing style",KWn="Video billing style",GWn="How the upstream charges for this output. Required before publishing — the gate demands the matching price factor.",WWn="— select billing style —",YWn="Per token (image_output_token)",QWn="Per image (per_call_image)",XWn="Per second (video_per_second)",ZWn="Per call (video_per_call)",JWn="Display order",eYn="Must be a non-negative integer.",tYn="Editing locale",nYn="Upstream release date",aYn="Summary (this locale)",oYn="Description (Markdown, this locale)",sYn={provider:"Provider",status:"Status",visibility:"Visibility",allStatuses:"All model statuses",allVisibility:"All visibility",allProviders:"All providers",search:"Search model slug",mobileTitle:"필터"},rYn={label:"Models",empty:"No models",model:"Model",provider:"Provider",source:"Source",status:"Status",visibility:"Visibility",action:"Action",edit:"Edit",setStatus:"Set status for {{model}}",setVisibility:"Set visibility for {{model}}",confirmSet:'Set {{model}} {{field}} to "{{value}}"?',sub2api:"Sub2API mapping",textPrice:"Price (in / out $/M)",priceByTokens:"{{kind}} · per-token",imageOutput:"image out",officialPrice:"List",saved:"-{{pct}}%"},iYn={invalidPrice:"Price must be a number greater than or equal to 0, or left blank.",highRisk:"This change affects live gateway routing and may cause 404s. Continue?",stale:"This model was changed by someone else. Close and reopen it before editing again."},lYn={savesImmediately:"Pricing changes apply immediately and are not controlled by Save.",createPriceFailed:"Model created, but some prices were not saved. Add them in the Pricing tab.",factors:{title:"Pricing factors",hint:"Each row is an atomic unit (text input/output, cache, image, …). Active rows determine billing from their effective date; history rows record past prices.",liveBanner:"Changes here apply immediately and are recorded in price history — they are not controlled by the bottom Save button.",draftHint:"Save the model draft first; pricing factors are edited inline after the model exists.",addFactor:"Add factor",changePrice:"Change price",expire:"Expire",confirmExpire:"Expire this factor row? It will stop applying immediately and move to history.",changeSaved:"Factor price updated.",expired:"Factor expired.",factor:"Factor",tier:"Tier",tierNone:"(no tier)",unit:"Unit",ourPrice:"Our price (USD)",officialPrice
811:"Official (USD)",officialAbbr:"official",source:"Source (optional URL or note, ≤128 chars)",historyLabel:"History ({{count}})",emptyTitle:"No active factor prices",empty:'Click "Add factor" to set one.',loadError:"Could not load pricing factors",draftEditorHint:"Set prices now, or leave empty and add them after the model is created.",draftEmpty:"No prices added yet.",remove:"Remove",factorOption:{text_input:"Text input (LLM)",text_output:"Text output (LLM)",cache_read:"Cache read",cache_write_5m:"Cache write (5m TTL)",cache_write_1h:"Cache write (1h TTL)",image_input_token:"Image input token",image_output_token:"Image output token",per_call_image:"Image (per call)",video_per_call:"Video (per call)",video_per_second:"Video (per second)",web_search_call:"Web search call"},unitOption:{per_1m_tokens:"per 1M tokens",per_image:"per image",per_call:"per call",per_second:"per second"},conditions:"Conditions JSON (optional)"},discount:{toggle:"Apply discount",hint:"Set every factor to a fraction of its official price (0.5 = 50% off). Free factors (our price 0) and factors with no official price are skipped.",rate:"Discount rate",preview:"Preview",apply:"Apply",allowMarkup:"Allow markup (rate above 1 prices above official)",noFactors:"No active factors to reprice.",confirmTitle:"Apply discount to all factors?",confirmBody:"Reprice {{count}} factor(s) to {{rate}}× the official price. This is versioned — historical billing is unaffected.",applied:"Repriced {{count}} factor(s) at {{rate}}× official.",stale:"Prices changed since the preview — please preview again.",skipReason:{free_factor_our_zero:"Free factor (our price is 0) — left unchanged",no_official:"No official price — cannot compute",official_zero:"Official price is 0 — skipped"}}},cYn="Discard unsaved changes?",dYn="모델 편집",uYn={title:nWn,description:aWn,badges:oWn,addModel:sWn,editModel:rWn,newModel:iWn,close:lWn,sheetDescription:cWn,sheetDescriptionNew:dWn,sections:uWn,providerSlug:mWn,providerSlugHint:pWn,modelSlug:fWn,aliases:gWn,aliasesHint:hWn,source:yWn,sourceHint:vWn,platform:bWn,platformUnset:xWn,sub2apiModelId:$Wn,chooseSub2api:wWn,upstreamUnavailable:kWn,protocols:CWn,inputPrice:SWn,outputPrice:AWn,enSummary:TWn,preview:RWn,noSummary:PWn,noProtocol:_Wn,cancel:jWn,save:NWn,createDraft:DWn,tabs:MWn,steps:EWn,contextWindow:IWn,contextWindowHint:OWn,maxOutputTokens:LWn,maxOutputTokensHint:UWn,lifecycle:BWn,inputModalities:FWn,inputModalitiesHint:zWn,outputModalities:qWn,outputModalitiesHint:HWn,billingStyleImage:VWn,billingStyleVideo:KWn,billingStyleHint:GWn,billingStyleUnset:WWn,billingStyleToken:YWn,billingStylePerImage:QWn,billingStylePerSecond:XWn,billingStylePerCall:ZWn,displayOrder:JWn,displayOrderInvalid:eYn,contentLocale:tYn,upstreamReleaseAt:nYn,summary:aYn,descriptionField:oYn,filters:sYn,table:rYn,errors:iYn,pricing:lYn,discardChanges:cYn,editModelShort:dYn},mYn="Rate Limits",pYn="Rate limit policies by scope.",fYn="Rate limit policies",gYn="No policies",hYn="Code",yYn="Name",vYn="Scope",bYn="Status",xYn="Limits",$Yn="No limits",wYn={auth:"Auth",console:"Console",api_gateway:"API gateway",ops:"Ops",global:"Global"},kYn={active:"Active",disabled:"Disabled",archived:"Archived"},CYn={rpm_per_key:"RPM / key",rpm_per_user:"RPM / user",concurrent_streams_per_key:"Streams / key",concurrent_streams_per_user:"Streams / user"},SYn="New policy",AYn="Edit",TYn="Action",RYn="New rate limit policy",PYn="Edit {{name}}",_Yn="Concurrency and RPM limits applied per API key and per user. Assign a policy to users on the Users page.",jYn='Delete policy "{{name}}"? Keys and users on it fall back to their default.',NYn="Policy deleted.",DYn={identity:"Identity",classification:"Classification",description:"Description",codeImmutable:"Code cannot be changed after creation.",limitsHint:"Leave blank to use the platform default for that limit.",default:"default",invalidLimit:"{{field}} must be a positive integer.",saved:"Policy saved.",cancel:"Cancel",save:"Save",create:"Create policy"},MYn={title:mYn,description:pYn,label:fYn,empty:gYn,code:hYn,name:yYn,scope:vYn,status:bYn,limits:xYn,noLimits:$Yn,scopes:wYn,statuses:kYn,limitNames:CYn,add:SYn,edit:AYn,delete:"Delete",action:TYn,newTitle:RYn,editTitle:PYn,formDescription:_Yn,confirmDelete:jYn,deleted:NYn,form:DYn},EYn="Admins",IYn="Who can sign in to the admin console. Owner-only.",OYn="Admins",LYn="No admins yet",UYn="Email",BYn="Name",FYn="Role",zYn="Status",qYn="Last login",HYn="Action",VYn="Add admin",KYn="Add admin",GYn="The email becomes an admin immediately and signs in with it — admin access is matched by email. It does not need an account yet.",WYn="Email",YYn="[email protected]",QYn="Name",XYn="Display name",ZYn="Role",JYn="Admin added.",eQn="Change role",tQn="Role updated.",nQn="Suspend",aQn="Activate",oQn="Status updated.",sQn="Remove",rQn="Admin removed.",iQn="Remove {{email}} as an admin? They lose console access immediately.",lQn="You",cQn="Never",dQn={owner:"Owner",admin:"Admin",
811support:"Support"},uQn={active:"Active",suspended:"Suspended"},mQn={title:EYn,description:IYn,label:OYn,empty:LYn,email:UYn,name:BYn,role:FYn,status:zYn,lastLogin:qYn,action:HYn,add:VYn,newTitle:KYn,formDescription:GYn,emailLabel:WYn,emailPlaceholder:YYn,nameLabel:QYn,namePlaceholder:XYn,roleLabel:ZYn,added:JYn,changeRole:eQn,roleChanged:tQn,suspend:nQn,activate:aQn,statusChanged:oQn,remove:sQn,removed:rQn,confirmRemove:iQn,self:lQn,never:cQn,roles:dQn,statuses:uQn},pQn="Upstream",fQn="Read-only upstream configuration mirror plus controlled OneHop routing pools.",gQn="Open upstream admin",hQn="Upstream tabs",yQn={overview:"Overview",keyPools:"Key pools",groups:"Groups",channels:"Channels",accounts:"Accounts"},vQn={todayRequests:"Today requests",total:"{{value}} total",upstreamCostToday:"Upstream cost today",providerAccounts:"Provider accounts",health:"Health",stale:"stale",checkPools:"check pools",online:"online"},bQn={upstreamStatsFailed:"Upstream stats failed to load",retry:"Retry",configAuditFailed:"Config audit failed",keyPoolsLoadFailed:"Key pools failed to load",createKeyPoolFailed:"Create key pool failed",keyPoolTestFailed:"Key pool test failed",keyPoolRotateFailed:"Key pool rotate failed",failedLoad:"{{title}} failed to load"},xQn={title:"Config audit",description:"Compares OneHop key pools and published model routing against upstream routing. Provider groups, channels, pricing, and accounts remain read-only here.",running:"Running...",run:"Run audit",poolsChecked:"Pools checked",modelAudit:"Model audit",checkedAt:"Checked at",needsReview:"needs review",done:"done",ok:"ok",upstreamCoverage:"업스트림 커버리지",coverageUnchecked:"계정을 읽을 수 없음",coverageOnlyAccount:"{{accounts}} 뿐",coverageNoAccount:"이 업스트림 ID를 매핑하는 스케줄 가능 계정이 없음"},$Qn={title:"Topology",keyPools:"Key pools",activeGroups:"Active groups",activeChannels:"Active channels",accounts:"Accounts",editingBoundaryTitle:"Editing boundary",editingBoundaryDescription:"The upstream admin exposes deep edit workflows for groups, channels, pricing rules, provider accounts, monitoring, and system settings. OneHop intentionally mirrors only the operational read path and owns internal key pools, so edits that change provider routing still happen in the original admin."},wQn={title:"OneHop internal key pools",description:"Pools select which upstream internal key OneHop uses per protocol and model pattern. Full secrets are never displayed.",poolCode:"Pool code",poolName:"Pool name",defaultPool:"Default pool",notDefault:"Not default",plaintextKey:"Plaintext key",create:"Create",label:"Provider routing key pools",pool:"Pool",protocols:"Protocols",models:"Models",routingGroup:"Routing group",status:"Status",health:"Health",key:"Key",lastCheck:"Last check",action:"Action",priority:"priority {{value}}",default:"default",secret:"secret",hidden:"hidden",test:"Test",rotate:"Rotate",empty:"No key pools",emptyDescription:"Create an internal pool before routing production traffic through provider routing.",newPlaintextKey:"New plaintext key",confirmRotate:"Confirm rotate",editProtocols:"Edit protocols",editProtocolsTitle:"Edit protocols (replace)",confirmEditProtocols:"Save protocols",cancelEditProtocols:"Cancel",forceEditProtocols:"Force save (override routing check)"},kQn={editUpstreamConfig:"Edit upstream config",groupsTitle:"Groups",groupsDescription:"Routing buckets from upstream config. OneHop uses these as source-of-truth context for key-pool binding and audit decisions.",groupsLabel:"Routing groups",groupsEmpty:"No groups",groupsEmptyDescription:"Upstream config did not return any groups.",channelsTitle:"Channels",channelsDescription:"Provider channel configuration from upstream config, including model mappings and pricing rule coverage.",channelsLabel:"Provider routing channels",channelsEmpty:"No channels",channelsEmptyDescription:"Upstream config did not return any channels.",accountsTitle:"Accounts",accountsDescription:"Provider accounts are redacted in OneHop. Use the upstream admin for credential edits and OAuth refresh flows.",accountsLabel:"Provider routing accounts",accountsEmpty:"No accounts",accountsEmptyDescription:"Upstream config did not return any provider accounts."},CQn={group:"Group",platform:"Platform",rate:"Rate",rpm:"RPM",accounts:"Accounts",limits:"Limits",status:"Status",updated:"Updated",channel:"Channel",billingSource:"Billing source",mappings:"Mappings",pricing:"Pricing",account:"Account",groups:"Groups",baseUrl:"Base URL",capacity:"Capacity",lastUsed:"Last used"},SQn={noDescription:"No description",unlimited:"unlimited",schedulable:"schedulable",notSchedulable:"not schedulable",loading:"Loading...",noPricingRules:"No pricing rules",modelsCount:"{{count}} models",none:"none",channelMapped:"Channel mapped",requestedModel:"Requested model",upstreamModel:"Upstream model",priority:"priority",unknown:"unknown"},AQn={serving:{label:"Serving state",serving:"Serving",rate_limited:"Rate-limited",overloaded:"Overloaded",expired:"Expired",paused:"Paused",error:"Error",disabled:"Disabled"},quota:{label:"Quota (today)",noLimit:"no limit",spend:"{{spend}} / {{limit}}"},accounts:{breakdown:"{{normal}} normal · {{error}} error · {{ratelimit}} limited · {{overload}} overload"},freshness:{updated:"updated {{ago}}",never:"never"},pools:{lastError:"Last error",resync:"Resync"},audit:{poolFindings:"Pool findings",clean:"clean",findingsCount:"{{count}} issue(s)"},tokensToday:"{{count}} tok today"},TQn={title:pQn,description:fQn,openUpstreamAdmin:gQn,tabsLabel:hQn,tabs:yQn,metrics:vQn,errors:bQn,audit:xQn,topology:$Qn,pools:wQn,readonly:kQn,table:CQn,common:SQn,ops:AQn},RQn="Platform usage",PQn="Cross-user request metering with cost, token, latency, and routing signals.",_Qn="Refresh",jQn={label:"Auto refresh",off:"Off"},NQn="Exporting",DQn="Export CSV",MQn="Failed to export usage records",EQn="Requests",IQn="{{count}} successful",OQn="Users",LQn="Matched by current filters",UQn="Billed credit",BQn="{{cost}} upstream cost",FQn="Tokens",zQn="Avg {{duration}}",qQn="User email",HQn="Search by email",VQn="Model",KQn="Search by model",GQn="Status",WQn="Protocol",YQn="Rows",QQn="Reset",XQn="Ops usage records",ZQn="No usage records",JQn="User",eXn="Endpoint",tXn="{{count}} total",nXn="In {{input}} / out {{output}}",aXn="Upstream",oXn="Billed",sXn="Latency",rXn="Started",iXn="Page {{page}} · showing {{shown}} of {{total}} matching records",lXn="Previous",cXn="Next",dXn="{{count}} rows on this page",uXn="Times shown in",mXn="{{count}} API keys",pXn="Spend snapshot",fXn="from OneHop billing snapshot",gXn="User spend",hXn="total billed to users",yXn="Avg latency",vXn="settled requests",bXn="Range",xXn={today:"Today",days7:"7 days",days30:"30 days",all:"All time"},$Xn="Metric",wXn={cost:"Spend",tokens:"Tokens",requests:"Requests"},kXn="Distribution",CXn={model:"모델",requestedModel:"Requested model",upstreamModel:"Upstream model",apiKey:"API key",user:"User",endpoint:"Endpoint",channel:"Channel",group:"Group",stream
811:"Transport (stream/sync)"},SXn="Usage trend",AXn="Usage by model",TXn="Hourly",RXn="Daily",PXn="Top endpoints",_Xn="Top dimension rows",jXn="Request logs",NXn="API key",DXn="Type",MXn="Billing",EXn="Channel",IXn="Group",OXn="Request ID",LXn="req_ / usg_ / upstream",UXn="All types",BXn="All billing",FXn={user:"User",time:"Time",model:"Model",tokens:"Tokens",cost:"Spend",routing:"Routing",latency:"Latency",status:"Status",duration:"Duration"},zXn="Failed to load usage",qXn="Loading usage records",HXn="Try a different filter set.",VXn="No trend data",KXn="No distribution data",GXn="No rows",WXn="Spend breakdown",YXn={upstreamList:"Upstream list",discount:"Discount",sub2apiActual:"Sub2API actual",groupChannelMultiplier:"Group/channel multiplier",accountMultiplier:"Account multiplier",sub2apiFinalCharge:"Final spend",billedFactors:"Billed to user"},QXn="Request detail",XXn="Unknown user",ZXn="Loading...",JXn="Sub2API actual",eZn="Group multiplier",tZn="Account multiplier",nZn="Identity",aZn="User ID",oZn="Key suffix",sZn={hopIdentity:"Hop identity",logicalUsageId:"Logical usage ID",logicalRequestedModel:"Logical requested model",logicalModel:"Logical model",actualRequestedModel:"Actual requested model",actualModel:"Actual model",fallbackHop:"Fallback hop",userVisibility:"User visibility",visible:"Visible",hidden:"Hidden",supersedesUsageRecord:"Supersedes record",pricingAudit:"Continuity pricing audit",mode:"Mode",policyVersion:"Policy version",sourceModel:"Source model",targetModel:"Target model",requestedRawQuote:"Requested raw quote",requestedQuote:"Requested quote",actualPricingStatus:"Actual pricing status",actualPricingAvailable:"Available",actualPricingUnavailable:"Unavailable",actualQuote:"Actual quote",chargedQuote:"Charged quote",variance:"Quote variance",actualPricingError:"Actual pricing error"},rZn="Input",iZn="Output",lZn="Cache read",cZn="Cache write",dZn="Raw metadata",uZn="Request",mZn="Usage ID",pZn="OneHop ID",fZn="Sub2API ID",gZn="Sub2API log",hZn="Routing",yZn="Mapping",vZn="Performance",bZn="First token",xZn="Total",$Zn="Error",wZn="Code",kZn="Message",CZn={time:"Time",user:"User",apiKey:"API key",model:"Model",logicalUsageId:"Logical usage ID",logicalRequestedModel:"Logical requested model",logicalModel:"Logical model",actualRequestedModel:"Actual requested model",actualModel:"Actual model",fallbackHop:"Fallback hop",userVisible:"User visible",supersedesUsageRecord:"Supersedes usage record",upstreamModel:"Upstream model",protocol:"Protocol",endpoint:"Endpoint",type:"Type",status:"Status",inputTokens:"Input tokens",outputTokens:"Output tokens",cacheRead:"Cache read",cacheWrite:"Cache write",sub2apiActual:"Sub2API actual",sub2apiCharge:"Spend",continuityMode:"Continuity mode",continuityPolicyVersion:"Continuity policy version",continuitySourceModel:"Continuity source model",continuityTargetModel:"Continuity target model",continuityRequestedRawQuote:"Continuity requested raw quote",continuityRequestedQuote:"Continuity requested quote",continuityActualPricingStatus:"Continuity actual pricing status",continuityActualQuote:"Continuity actual quote",continuityChargedQuote:"Continuity charged quote",continuityVariance:"Continuity quote variance",continuityActualPricingError:"Continuity actual pricing error",durationMs:"Duration ms",channel:"Channel",group:"Group",onehopRequestId:"OneHop request ID",sub2apiRequestId:"Sub2API request ID",firstTokenMs:"First token ms"},SZn={analytics:"Usage analytics",logs:"Request logs"},AZn={label:"Chart view",stacked:"Over time",ranking:"Ranking"},TZn={failedOnly:"Failed only",slowOnly:"Slow > {{sec}}s"},RZn="More filters",PZn="Slow threshold (ms)",_Zn="No model usage",jZn="No requests yet — usage will appear here as traffic comes in.",NZn="Viewing",DZn="streaming requests",MZn="Avg duration",EZn="Latency = time to first token (TTFT); Duration = total. The slow filter uses TTFT and only covers successful requests with a recorded first token (earlier or failed requests show —).",IZn="Open request detail",OZn={title:RQn,description:PQn,refresh:_Qn,autoRefresh:jQn,exporting:NQn,exportCsv:DQn,exportError:MQn,requests:EQn,successful:IQn,users:OQn,matchedFilters:LQn,billedCredit:UQn,upstreamCost:BQn,tokens:FQn,avgDuration:zQn,userEmail:qQn,searchEmail:HQn,model:VQn,searchModel:KQn,status:GQn,protocol:WQn,rows:YQn,reset:QQn,label:XQn,empty:ZQn,user:JQn,endpoint:eXn,totalTokens:tXn,inOut:nXn,upstream:aXn,billed:oXn,latency:sXn,started:rXn,pageSummary:iXn,previous:lXn,next:cXn,rowsOnPage:dXn,timesShownIn:uXn,apiKeys:mXn,sub2apiCharge:pXn,sub2apiChargeSource:fXn,userSpend:gXn,userSpendSource:hXn,avgLatency:yXn,settledRequests:vXn,range:bXn,ranges:xXn,metric:$Xn,metrics:wXn,distribution:kXn,breakdown:CXn,usageTrend:SXn,stackedByModel:AXn,hourly:TXn,daily:RXn,topEndpoints:PXn,topDimensionRows:_Xn,requestLogs:jXn,apiKey:NXn,type:DXn,billing:MXn,channel:EXn,group:IXn,requestId:OXn,requestIdPlaceholder:LXn,allTypes:UXn,allBilling:BXn,table:FXn,failedLoad:zXn,loadingRecords:qXn,tryDifferentFilters:HXn,noTrendData:VXn,noDistributionData:KXn,noRows:GXn,costBreakdown:WXn,adminCost:YXn,requestDetail:QXn,unknownUser:XXn,loading:ZXn,sub2apiActual:JXn,groupMultiplier:eZn,accountMultiplier:tZn,identity:nZn,userId:aZn,keySuffix:oZn,
811continuity:sZn,input:rZn,output:iZn,cacheRead:lZn,cacheWrite:cZn,rawMetadata:dZn,request:uZn,usageId:mZn,onehopId:pZn,sub2apiId:fZn,sub2apiLog:gZn,routing:hZn,mapping:yZn,performance:vZn,firstToken:bZn,total:xZn,error:$Zn,code:wZn,message:kZn,csv:CZn,tabs:SZn,modelView:AZn,chip:TZn,moreFilters:RZn,slowThreshold:PZn,noModelUsage:_Zn,noTrendToday:jZn,viewing:NZn,avgLatencySub:DZn,avgTotalDuration:MZn,latencyHint:EZn,openRequestDetail:IZn},LZn="Search",UZn="Search by user ID, email, or name",BZn="User",FZn="Back to users",zZn="You do not have permission to view this section.",qZn="Refund",HZn="Refunding...",VZn="Initiate a refund of {{amount}} for {{email}}? Refunds are processed asynchronously; the balance updates after the worker runs.",KZn="Refund initiated.",GZn={overview:"Overview",network:"Network & Device",recentCalls:"Recent Calls",apiKeys:"API 키",payments:"Payments",refunds:"Refunds",subscription:"Subscription",referrals:"Referrals",rewards:"Rewards",audit:"Audit"},WZn={title:"Free token allowance",paused:"Free token grants are paused on this account (risk review).",daily:"Daily",weekly:"Weekly",tokensUnit:"tokens",remaining:"{{value}} tokens remaining today"},YZn={title:"Free model quota (today)",tokens:"tokens",remaining:"{{value}} tokens remaining today",unlimited:"Free quota: unlimited (gate disabled)",eligibilityLabel:"Free tier eligibility",eligible:"Free tier",ineligible:"Ineligible (same device used)"},QZn={phase2:"Subscriptions are coming in Phase 2."},XZn={empty:"No payments"},ZZn={empty:"No refunds"},JZn={empty:"No credit buckets",note:"Credit buckets show current balance inventory. Grant and refund history appear in the Audit timeline; referral rewards in the Referrals section."},eJn={totalEarned:"Total earned",frozenEarned:"Frozen",refereeCount:"Referees",activeCount:"Active",role:"Role",counterparty:"Counterparty",empty:"No referral activity"},tJn={empty:"No audit records"},nJn={amount:"Amount",credit:"Credit",status:"Status",provider:"Provider",createdAt:"Created",type:"Type",originalTx:"Original tx",remaining:"Remaining",initial:"Initial",expiresAt:"Expires",event:"Event",action:"Action",severity:"Severity"},aJn={ipLocationTitle:"IP 및 위치",deviceBrowserTitle:"기기 및 브라우저",stripeTitle:"Stripe",signupIp:"가입 IP",signupCountry:"가입 국가",lastLoginIp:"마지막 로그인 IP",ipDifferent:"가입 IP와 다름",sameIpAccounts_one:"동일 가입 IP의 계정 {{count}}개",sameIpAccounts_other:"동일 가입 IP의 계정 {{count}}개",sameDeviceAccounts_one:"동일 기기의 계정 {{count}}개",sameDeviceAccounts_other:"동일 기기의 계정 {{count}}개",deviceFingerprint:"기기 지문",freeTierEligible:"무료 티어 자격",firstDevice:"이 기기의 첫 계정",notFirstDevice:"이 기기의 첫 계정 아님 — 무료 혜택 없음",browser:"브라우저",os:"OS",deviceType:"기기 유형",acceptLanguage:"Accept-Language",stripeCustomerId:"Stripe Customer ID",viewOnIpinfo:"ipinfo.io에서 보기"},oJn={empty:"아직 호출 없음",viewAll:"모든 로그 보기 →",colStatus:"상태",colTime:"시간",colModel:"모델",colProtocol:"프로토콜",colDuration:"소요 시간",colCost:"비용",colFreeDiscount:"무료 크레딧"},sJn={empty:"아직 API keys 없음",colName:"이름",colKey:"Key",colStatus:"상태",colPolicy:"레이트 리밋 정책",colLastUsed:"마지막 사용",colCreated:"생성일",colExpires:"만료일",colSpend:"사용 금액",spendTitle:"사용 내역",spend30d:"최근 30일",spendAllTime:"누적",spendRequests:"요청 수"},rJn="복사",iJn="복사됨",lJn={search:LZn,searchPlaceholder:UZn,title:BZn,backToList:FZn,noBlockPerm:zZn,refund:qZn,refunding:HZn,refundConfirm:VZn,refundInitiated:KZn,nav:GZn,freeTokens:WZn,freeQuota:YZn,subscription:QZn,payments:XZn,refunds:ZZn,rewards:JZn,referrals:eJn,audit:tJn,col:nJn,network:aJn,recentCalls:oJn,apiKeys:sJn,copy:rJn,copied:iJn},cJn="Users",dJn="Search users, grant credit, and suspend accounts.",uJn="Email",mJn="Search by email",pJn="Account status",fJn={active:"계정 활성 상태. 로그인 및 gateway 호출 가능",suspended:"정지됨. Gateway가 모든 요청을 거부함(401)"}
811,gJn="Risk",hJn={normal:"모든 무료 혜택 대상",watchlisted:"무료 token 및 가입 보너스 없음. 충전 및 gateway 호출은 가능",blocked:"Gateway가 모든 요청을 거부함(401). 완전 차단"},yJn="Users",vJn="No users found",bJn="Country",xJn="Last login",$Jn="Action",wJn="View",kJn="Deleted",CJn="Set status for {{email}}",SJn='Set {{email}} to "{{status}}"?',AJn="Grant credit",TJn="Add bonus credit to {{email}}. Recorded in the ledger.",RJn="Amount (USD)",PJn="e.g. 5",_Jn="Reason (optional)",jJn="e.g. compensation for downtime",NJn="Type",DJn="Bonus credit",MJn="A gift. Does not count as a top-up.",EJn="Offline payment",IJn="Money we actually received. Counts as a top-up: unlocks paid-only models and rate-limit tiers.",OJn="Reference no.",LJn="e.g. bank slip 20260907-001",UJn="Record payment",BJn="Recording...",FJn="Cancel",zJn="Granting...",qJn="Grant",HJn="Grant ${{amount}} to {{email}}? This is a large amount.",VJn="No display name",KJn="Loading...",GJn="score {{score}}",WJn="Email verified",YJn="Yes",QJn="No",XJn="Signup",ZJn="Signup method",JJn="Last login method",eea="Signup bonus",tea="Onboarding",nea="Locale / TZ",aea="Markup ratio",oea="Rate limit policy",sea="Rate limit policy updated.",rea="Joined",iea="Never",lea="Balance",cea="Wallet & spend",dea="Total spent",uea="Recharged",mea="Bonus granted",pea="Refunded",fea="Requests",gea="Tokens",hea="Actions",yea="Identity & risk",vea="Role",bea="No permitted actions for your role.",xea="Acquisition source",$ea="Acquisition by source",wea="Direct / unknown",kea="Custom source…",Cea="Set",Sea="Auto-detected: {{source}}",Aea="UTM",Tea="Referred by",Rea="메모",Pea="이 사용자를 식별할 메모 추가",_ea="메모 저장",jea="메모 저장됨",Nea="메모 없음",Dea="필터",Mea="Location",Eea="Preferred locale",Iea={title:cJn,description:dJn,email:uJn,searchEmail:mJn,status:pJn,statusEffect:fJn,risk:gJn,riskEffect:hJn,label:yJn,empty:vJn,country:bJn,lastLogin:xJn,action:$Jn,view:wJn,deleted:kJn,setStatusAria:CJn,setStatusConfirm:SJn,grantCredit:AJn,grantDescription:TJn,amountUsd:RJn,amountPlaceholder:PJn,reason:_Jn,reasonPlaceholder:jJn,grantKind:NJn,grantKindBonus:DJn,grantKindBonusHint:MJn,grantKindOffline:EJn,grantKindOfflineHint:IJn,referenceNo:OJn,referenceNoPlaceholder:LJn,recordPayment:UJn,recording:BJn,cancel:FJn,granting:zJn,grant:qJn,largeGrantConfirm:HJn,noDisplayName:VJn,loading:KJn,score:GJn,emailVerified:WJn,yes:YJn,no:QJn,signup:XJn,signupMethod:ZJn,lastLoginMethod:JJn,signupBonus:eea,onboarding:tea,localeTz:nea,markupRatio:aea,rateLimitPolicy:oea,rateLimitPolicyChanged:sea,joined:rea,never:iea,walletBalance:lea,walletSection:cea,consumed:dea,recharged:uea,bonusGranted:mea,refunded:pea,requests:fea,tokens:gea,actionsSection:hea,identitySection:yea,role:vea,noPermittedActions:bea,acquisitionSource:xea,acquisitionTitle:$ea,sourceDirect:wea,sourceCustomPlaceholder:kea,sourceSet:Cea,sourceCaptured:Sea,utm:Aea,referrer:Tea,note:Rea,notePlaceholder:Pea,noteSave:_ea,noteSaved:jea,noteEmpty:Nea,filters:Dea,location:Mea,preferredLocale:Eea},Oea="Webhooks",Lea="Stripe webhook events. Status filter, retry, payload inspection.",Uea="Status",Bea="Event type",Fea="Received",zea="Event type",qea="Status",Hea="Mode",Vea="Attempts",Kea="Retry",Gea="Retry queued",Wea="Event {{event}} reset to pending; next job tick will process.",Yea="Retry failed",Qea="No webhook events yet.",Xea="Stripe events will appear here once your endpoint is registered.",Zea="Loading payload...",Jea="Last error",eta="Payload (JSON)",tta={title:Oea,description:Lea,statusFilter:Uea,eventTypeFilter:Bea,receivedAt:Fea,eventType:zea,status:qea,mode:Hea,attempts:Vea,retry:Kea,retrySubmittedTitle:Gea,retrySubmittedBody:Wea,retryFailedTitle:Yea,empty:Qea,emptyHint:Xea,detailLoading:Zea,lastError:Jea,payload:eta},nta="API Keys",ata="10초 안에 첫 key 만들기",ota="복사하지 못했습니다",sta={label:"허용된 모델",allModels:"모든 모델",allHint:"카탈로그의 모든 모델이 허용됩니다.",noModels:"사용 가능한 모델이 없습니다.",selected:"{{count}}개 선택됨",someHint:"{{count}}개 모델 허용."},rta={label:"태그",placeholder:"태그를 입력하고 Enter를 누르세요",remove:"제거"},ita="프로덕션, 스테이징, 팀 워크플로용 scoped key를 만듭니다.",lta="새로고침",cta="기본 key",dta="Key 이름",uta="생성 중...",mta="Key 만들기",pta="전체 key, 한 번만 표시",fta="API key 복
811사",gta="복사됨",hta="복사",yta="지금 복사해 저장하세요. 이 패널을 닫으면 전체 key를 다시 볼 수 없습니다.",vta="저장했습니다",bta="API keys 로드 실패",xta="다시 시도",$ta="아직 API keys 없음",wta="첫 key를 만들면 OneHop을 통해 요청을 보낼 수 있습니다.",kta={label:"API keys",tags:"태그",name:"이름",key:"Key",status:"상태",created:"생성일",action:"작업",usage:"사용량",quota:"한도",expires:"만료일",lastUsed:"마지막 사용"},Cta="폐기",Sta="{{name}}을(를) 폐기할까요? 이 작업은 되돌릴 수 없습니다.",Ata="key 이름을 지정하세요. 한도와 만료일은 필요한 경우에만 고급 설정에서 조정합니다.",Tta="월간 credit 한도",Rta="만료일",Pta="무제한",_ta="저장 중...",jta="저장",Nta="취소",Dta={title:"비활성 / 취소됨",description:"꺼져 있거나 취소된 key입니다. 비활성 key는 다시 활성화할 수 있고 취소된 key는 기록으로 보관됩니다."},Mta={title:"활성 key가 없습니다",description:"아래에서 비활성화된 key를 다시 활성화하거나 새 key를 만드세요."},Eta={import:"CCS로 가져오기",client:"CC-Switch 클라이언트",codex:"Codex / OpenAI",claude:"Claude Code",pasteHint:"플레이스홀더로 CC Switch를 열었습니다. 저장한 API key를 붙여넣으세요.",checking:"호환성을 확인하는 중…",blocked:{title:"{{client}}에서 이 키를 사용할 수 없습니다",body:"“{{keyName}}”은 {{client}}에서 사용할 수 없는 모델만 허용합니다. 가져오면 오류가 발생합니다.",adjust:"모델 범위 조정",forceImport:"그래도 가져오기(작동하지 않음)"},pin:{title:"{{client}}용으로 {{model}}로 가져오기",body:"“{{keyName}}”에는 {{client}}의 기본 모델이 포함되어 있지 않습니다. {{client}} 요청은 이 공급자를 통해 다음과 같이 라우팅됩니다:",adjust:"모델 범위 조정",confirm:"{{model}}로 가져오기"}},Ita={search:"검색",searchPlaceholder:"이름 또는 key 접미사 검색",status:"상태",allStatus:"모든 상태",clear:"필터 지우기",empty:"이 필터와 일치하는 key가 없습니다",emptyDescription:"검색 또는 상태 필터를 지우면 모든 key를 볼 수 있습니다.",mobileTitle:"필터"},Ota={active:"활성",inactive:"비활성",revoked:"폐기됨",expired:"만료됨",quota_exhausted:"한도 소진"},Lta={today:"오늘 {{requests}}회 · {{credit}}",days30:"30일 {{requests}}회 · {{credit}}"},Uta={use:"연결 정보",edit:"편집",enable:"활성화",disable:"비활성화",delete:"삭제"},Bta="API key 사용",Fta="저장한 key로 OneHop gateway를 호출합니다. 전체 key는 생성 시 한 번만 표시됩니다.",zta={baseUrl:"Base URL",keyHint:"API key",authorization:"Authorization 헤더",env:"환경 변수",curl:"cURL",revealing:"key 복호화 중…",fullKeyUnavailable:"전체 key는 생성 시 한 번만 표시됩니다. 저장해 둔 값을 사용하거나, 잃어버렸다면 새 key를 만드세요.",protocolEndpoints:"프로토콜 endpoint"},qta="고급 설정",Hta="API key 만들기",Vta="API key 편집",Kta={label:"모델 접근",all:"모든 모델",limited:"특정 모델로 제한",allHint:"이 key는 나중에 추가되는 모델을 포함해 모든 모델을 호출할 수 있습니다.",snapshotHint:"선택한 모델만 포함됩니다. 이후 추가되는 모델은 자동으로 포함되지 않습니다.",snapshotHintEdit:"선택한 모델만 포함됩니다. 새 모델은 자동으로 추가되지 않습니다. 모든 모델로 전환하면 이 화이트리스트가 대체됩니다.",searchPlaceholder:"모델 검색…",selectAllResults:"현재 결과 모두 선택({{count}})",selectedCount:"{{count}} / {{max}} 선택됨",clear:"지우기",hiddenSelected:"선택한 {{total}}개 중 {{hidden}}개가 현재 필터에 숨겨져 있습니다",selectVendor:"{{vendor}} 모두 선택, {{on}}/{{total}} 선택됨",emptyTitle:"일치하는 모델이 없습니다",emptyDescription:"다른 유형이나 검색어를 시도하세요.",loadFailed:"모델을 불러올 수 없습니다",loadFailedHint:"다시 시도하거나 모든 모델로 전환하세요.",type:{all:"전체",text:"텍스트",image:"이미지",video:"동영상",embedding:"임베딩"},pickAtLeastOne:"모델을 하나 이상 선택하거나 모든 모델로 전환하세요.",limitReached:"Reached the {{max}}-model limit"},Gta={title:"API key가 생성되었습니다",subtitle:"{{name}} 준비가 완료되었습니다. 지금 연결하세요.",onceWarning:"한 번만 표시됩니다. 나중에 다시 표시할 수 있지만 지금 복사해 두는 것이 안전합니다.",connect:"연결",done:"완료"},Wta="IP",Yta="{{date}}에 취소됨",Qta={title:nta,emptyTitle:ata,copyFailed:ota,allowedModels:sta,tags:rta,description:ita,refresh:lta,defaultName:cta,keyName:dta,creating:uta,createKey:mta,fullKeyTitle:pta,copyApiKey:fta,copied:gta,copy:hta,fullKeyDescription:yta,savedIt:vta,loadFailed:bta,retry:xta,empty:$ta,emptyDescription:wta,table:kta,revoke:Cta,revokeConfirm:Sta,formDescription:Ata,monthlyCreditLimit:Tta,expiresAt:Rta,unlimited:Pta,saving:_ta,save:jta,cancel:Nta,parked:Dta,noActive:Mta,ccswitch:Eta,filters:Ita,status:Ota,usage:Lta,actions:Uta,useTitle:Bta,useDescription:Fta,use:zta,advancedSettings:qta,createTitle:Hta,editTitle:Vta,scope:Kta,created:Gta,lastUsedIp:Wta,revokedAt:Yta},Xta="Audit Logs",Zta="High-risk admin actions, by action and time.",Jta="Action",ena="Clear",tna={ops_user_update_status:"사용자 상태가 업데이트됨",ops_users_allowlist_add:"가입 접근 권한이 추가됨",ops_users_allowlist_update:"가입 접근 권한이 업데이트됨",ops_users_allowlist_invite:"가입 접근 초대가 전송됨",ops_users_allowlist_revoke:"가입 접근 권한이 제거됨",ops_users_allowlist_restore:"가입 접근 권한이 복원됨",ops_model_create:"모델이 생성됨",ops_model_update:"모델이 업데이트됨",ops_model_update_status:"모델 상태가 업데이트됨",sub2api_pool_create:"라우팅 풀이 생성됨",sub2api_pool_test:"라우팅 풀이 테스트됨",sub2api_pool_rotate_secret:"라우팅 시크릿이 교체됨"},nna="Audit logs",ana="No audit entries",ona="Time",sna="Severity",rna="Target",ina={ai_model:"Model",sub2a
811pi_key_pool:"Routing key pool",sys_user:"User",wallet:"Wallet"},lna="대상 유형",cna="요청 ID",dna={title:Xta,description:Zta,action:Jta,clear:ena,actions:tna,label:nna,empty:ana,time:ona,severity:sna,target:rna,targetTypes:ina,targetType:lna,requestId:cna},una="OneHop에 로그인",mna="코드 입력",pna="Google 또는 Email로 계속하세요",fna="코드를 받을 Email을 입력하세요",gna="{{email}} 주소로 보낸 6자리 코드를 입력하세요",hna="Google로 계속",yna="Email로 계속",vna="또는",bna="Email",xna="인증 코드 보내기",$na="보내는 중...",wna="확인",kna="확인 중...",Cna="{{seconds}}초 후 재전송",Sna="코드 다시 보내기",Ana="계속하면 다음에 동의하는 것입니다:",Tna="서비스 약관",Rna="개인정보 처리방침",Pna={signIn:"로그인",signOutFailed:"로그아웃 실패",sendCodeFailed:"코드를 보내지 못했습니다",notAllowed:"이 이메일은 아직 접근이 승인되지 않았습니다. 관리자에게 요청하세요.",invalidCode:"코드가 올바르지 않습니다",codeIncorrect:"코드가 틀렸습니다. 다시 시도하세요",googleFailed:"Google 로그인 실패",verifyHuman:"인증을 완료한 후 계속하세요",verifyUnavailable:"사람 인증을 일시적으로 사용할 수 없습니다. 위의 Google 로그인을 이용하거나 잠시 후 다시 시도해 주세요."},_na={signInTitle:una,enterCodeTitle:mna,methodIntro:pna,emailStepIntro:fna,codeIntro:gna,continueGoogle:hna,continueEmail:yna,or:vna,emailLabel:bna,sendCode:xna,sending:$na,verify:wna,verifying:kna,resendIn:Cna,resendCode:Sna,termsPrefix:Ana,terms:Tna,privacy:Rna,errors:Pna},jna="결제",Nna="Credits를 충전하고 쿠폰을 사용하며 지갑 내역을 확인합니다.",Dna={bonuses:"보너스",topups:"충전",usage:"사용량"},Mna={available:"지급 완료",availableHint:"사용 가능 잔액에 이미 반영됨",frozen:"대기 중(동결)",frozenHint:"약 {{days}}일 후 지급",frozenHintGeneric:"보류 기간 종료 후 지급",title:"추천 보상",viewDetails:"추천 내역 보기"},Ena={noUsage:"최근 30일 동안 사용량이 없습니다",perDay:"일평균 {{amount}}",daysLeft:"현재 속도로 약 {{days}}일 남음"},Ina={amountUsd:"금액 (USD)",minAmountHint:"최소 충전 금액은 {{amount}}입니다.",apply:"적용",get:"받을 금액",onehopCredits:"OneHop credits",pay:"결제",poweredByStripe:"Stripe 보호",poweredBy:"{{provider}} 보호",secureCheckout:"안전한 호스팅 결제",secureCheckoutShort:"안전 결제",taxExclusiveNotice:"세금은 결제 시 거주 지역에 따라 계산되어 이 금액에 추가됩니다.",presets:"미리 정한 금액",promoCode:"프로모션 코드",promoCodePlaceholder:"코드 입력",serviceFee:"서비스 수수료",title:"충전",topupAmount:"충전 금액",totalDue:"결제 총액",payCta:"{{amount}} 결제",previewing:"확인 중…",discount:"쿠폰 할인",couponBelowMin:"할인 후 금액이 너무 낮습니다. 금액을 늘리거나 다른 코드를 사용하세요.",maintenanceTitle:"결제를 일시적으로 이용할 수 없습니다",maintenanceDescription:"결제를 일시적으로 이용할 수 없습니다. 결제가 필요하면 Telegram으로 문의해 주세요.",contactTelegram:"Telegram으로 문의하기",alipay:"알리페이",wechatPay:"위챗페이",crypto:"가상자산으로 결제 (USDC / USDT)",payOnStripe:"결제는 Stripe의 안전한 결제 페이지에서 완료됩니다.",payOnProvider:"결제는 {{provider}}의 안전한 결제 페이지에서 완료됩니다.",payOnHostedCheckout:"결제는 안전한 호스팅 결제 페이지에서 완료됩니다.",amountPrecision:"{{provider}}는 소수점 두 자리까지의 USD 금액만 지원합니다. 금액 또는 프로모션 코드를 조정하세요.",couponBonus:"쿠폰 보너스",couponBonusExpiry:"보너스 크레딧은 결제 후 {{days}}일이 지나면 만료됩니다.",couponInvalid:"이 코드는 적용할 수 없습니다. 다른 코드를 시도해 주세요.",couponErrors:{limitReached:"이 코드의 사용 횟수 한도에 도달했습니다.",invalid:"유효하지 않은 코드입니다.",expired:"이 코드는 만료되었습니다.",exhausted:"이 코드는 모두 소진되었습니다.",unavailable:"이 코드는 현재 사용 중입니다. 잠시 후 다시 시도해 주세요."},tierBonus:"프로모션 보너스",tierBonusExpiry:"보너스 크레딧은 결제 후 {{days}}일이 지나면 만료됩니다.",tierBonusRestricted:"보너스 크레딧은 다음 모델에서만 사용할 수 있습니다: {{models}}",nextTierPercent:"{{amount}}를 더 충전하면 {{percent}}% 보너스 크레딧을 받습니다.",nextTierBonus:"{{amount}}를 더 충전하면 {{bonus}} 보너스 크레딧을 받습니다.",tierCapReached:"이 프로모션의 최대 보너스를 이미 받으셨습니다."},Ona="Credits 추가",Lna="생성 중...",Una="사용 가능 Credit",Bna="충전",Fna="결제는 Stripe",zna="금액 (USD)",qna="미리 정한 충전 금액",Hna="쿠폰 사용",Vna="쿠폰 코드",Kna="사용 중...",Gna="사용",Wna="쿠폰이 사용되었습니다. 잔액을 새로고침합니다.",Yna="보안 checkout으로 이동 중...",Qna="결제 요약 로드 실패",Xna="충전 실패",Zna="결제 활동 탭",Jna="거래",eaa="Credit 지급",taa="거래 유형",naa="소스",aaa="아직 거래 없음",oaa="충전, 차감, 지급 기록이 여기에 표시됩니다.",saa="원장 기록",raa="시간",iaa="유형",laa="금액",caa="잔액",daa="아직 지급 기록 없음",uaa="가입 보너스, 쿠폰, 수동 지급이 여기에 표시됩니다.",maa="상태",paa={successTitle:"결제가 접수되었습니다",polling:"지갑에 Credit을 적립하는 중... 약 30초 소요됩니다.",delayed:"도착이 지연되고 있습니다. 잠시 후 새로고침하거나 Stripe 영수증을 확인해 주세요.",cancelledTitle:"결제가 취소되었습니다",cancelledBody:"청구되지 않았습니다. 준비되시면 다시 시도해 주세요.",failedTitle:"결제에 실패했습니다",failedBody:"결제를 완료하지 못했습니다. 크레딧이 적립되지 않았습니다. 다시 시도하거나 다른 결제 수단을 이용해 주세요."},faa={text:"Credit은 선불 서비스 한도이며 은행 예금이 아닙니다. 소비된 Credit은 환불되지 않습니다. 모든 가격은 USD로 표시됩니다. 자세한 내용은",tosLink:"서비스 약관"},gaa="영수증",haa="여는 중...",yaa="결제 포털을 열 수 없습니다",vaa={title:"최근 충전 내역",subt
811itle:"최근 90일, 24시간 이내 환불 가능.",loading:"충전 내역을 불러오는 중...",date:"날짜",amount:"금액",credits:"Credit",status:"상태",refund:"환불",alreadyRefunded:"이미 환불됨",windowExpired:"환불 기한 만료(24시간)",confirmTitle:"환불 확인",confirmBody:"환불은 Stripe를 통해 1-3 영업일 내에 처리됩니다. 사용자 요청 환불에는 플랫폼 수수료({{fee}})가 적용됩니다.",amountLabel:"환불 금액 (USD)",maxLabel:"최대 ${{value}}",requestedLabel:"환불 신청 금액",platformFeeLabel:"플랫폼 수수료 ({{fee}})",cardReturnLabel:"카드로 반환되는 금액",bonusForfeitureHint:"이 충전과 함께 지급된 프로모션 Credit은 비례하여 회수됩니다.",cancel:"취소",confirm:"환불 진행",submitting:"제출 중...",refundSubmittedTitle:"환불이 접수되었습니다",refundSubmittedBody:"Stripe가 1-3 영업일 내에 카드로 금액을 반환합니다.",refundFailedTitle:"환불에 실패했습니다",balance:"입금",confirmAmount:"{{amount}} 환불"},baa={title:"잔액 알림",description:"잔액이 부족해지면 알려드립니다.",emailLabel:"이메일로 알림",webhookLabel:"Webhook",autorechargeLabel:"자동 충전",autorechargeUnsupported:"현재 결제 제공업체에서는 자동 충전을 사용할 수 없습니다.",autorechargeAddCardHint:"카드를 등록해 잔액을 자동으로 충전",autorechargeTopUp:"충전 금액",autorechargeWhenBelow:"잔액이 다음 미만일 때",autorechargeThreshold:"자동 충전 임계값",autorechargeAmount:"자동 충전 금액",autorechargeDisabledFailures:"결제가 여러 번 연속 실패하여 자동 충전이 비활성화되었습니다. 카드를 업데이트하고 다시 켜세요.",autorechargeIncomplete:"자동 충전 금액과 $0 보다 큰 임계값을 설정하세요.",test:"테스트",testing:"테스트 중…",testQueued:"테스트 전송을 대기열에 추가했습니다 —— 엔드포인트를 확인하세요",testFailed:"테스트 전송 대기열 추가 실패",signingSecret:"서명 시크릿",secretOnSave:"저장하면 서명 시크릿이 생성됩니다.",rotate:"교체",secretRotated:"서명 시크릿을 교체했습니다",rotateFailed:"시크릿 교체 실패",secretCopied:"서명 시크릿을 복사했습니다",saved:"알림 설정을 저장했습니다",saveFailed:"알림 설정 저장 실패",loadFailed:"알림 설정을 불러올 수 없습니다",thresholdRequired:"알림을 켜려면 $0 보다 큰 임계값을 설정하세요.",webhookUrlRequired:"webhook의 https:// URL을 입력하세요.",thresholdOrderBad:"알림 임계값은 자동 충전 임계값 이상이어야 합니다.",card:"카드",changeCard:"변경",removeCard:"삭제",cardRemoved:"카드를 삭제했습니다",cardRemoveFailed:"카드 삭제 실패",cardSetupFailed:"카드 등록을 시작하지 못했습니다",lowBalanceGroup:"잔액 부족 알림",thresholdLabel:"알림 임계값"},xaa={title:"거래 내역",idSearch:"거래 ID",amountRange:"금액 범위 (USD)",min:"최소",max:"최대",clear:"지우기",retry:"다시 시도",empty:"이 범위에 거래가 없습니다",date:"날짜",typeMethod:"유형 / 방식",description:"설명",action:"작업",prevMonth:"이전 달",nextMonth:"다음 달",viewInvoices:"청구서 보기",emptyNew:"아직 거래가 없습니다",emptyNewDesc:"충전 후 충전, 보너스, 환불 기록이 여기에 표시됩니다.",topUpCta:"충전하기",emptyFiltered:"일치하는 거래가 없습니다",emptyFilteredDesc:"필터를 지우거나 기간을 넓혀 보세요.",clearFilters:"필터 지우기"},$aa="잔액이 낮아 요청에 영향을 줄 수 있습니다. 충전하거나 자동 충전을 켜세요.",waa="잔액이 낮아 요청에 영향을 줄 수 있습니다. 충전 후 계속하세요.",kaa={creditPurchase:"크레딧 충전",topupBonus:"Top-up bonus",signupBonus:"Signup bonus",referralClawback:"Referral cashback clawback (refund)",couponBonus:"쿠폰 보너스",referralCashback:"추천 캐시백",referralInviteeCashback:"피추천인 보너스",redeemCode:"교환 코드 {{code}}",redeemCodeReversal:"교환 코드 취소",stripeRefund:"Stripe 환불",bonusReversal:"환불로 인한 보너스 회수"},Caa={title:"전용 크레딧",subtitle:"특정 모델에서만 사용할 수 있는 보너스 크레딧으로, 잔액과 별도로 관리됩니다.",onlyModels:"{{models}} 전용",onlyModelsGeneric:"제한된 모델",validUntil:"{{date}}까지 유효",noExpiry:"만료 없음",useInChat:"Use in chat"},Saa={card:"카드",alipay:"알리페이",wechatPay:"위챗페이"},Aaa={title:"교환 코드",description:"교환 코드가 있나요? 입력하면 액면가가 잔액에 충전됩니다.",placeholder:"예: OHR-XXXXXXXX",redeem:"교환",redeeming:"교환 중…",success:"{{amount}}을(를) 잔액에 교환했습니다",successRestricted:"Redeemed {{amount}} — usable with {{models}} only",successValidity:"Valid until {{date}}.",errors:{invalid:"유효하지 않은 코드입니다.",expired:"이 코드는 만료되었습니다.",alreadyRedeemed:"이미 사용된 코드입니다.",perUserLimit:"이 배치의 교환 한도에 도달했습니다."}},Taa={title:jna,description:Nna,breakdown:Dna,referralRewards:Mna,burnRate:Ena,topup:Ina,addCredits:Ona,creating:Lna,availableCredit:Una,topUp:Bna,poweredByStripe:Fna,amountUsd:zna,presetAmounts:qna,redeemCoupon:Hna,couponCode:Vna,redeeming:Kna,redeem:Gna,couponRedeemed:Wna,redirecting:Yna,summaryFailed:Qna,topupFailed:Xna,tabsLabel:Zna,transactions:Jna,creditGrants:eaa,transactionType:taa,source:naa,noTransactions:aaa,noTransactionsDescription:oaa,ledgerEntries:saa,time:raa,type:iaa,amount:laa,balance:caa,noGrants:daa,noGrantsDescription:uaa,status:maa,topupBanner:paa,compliance:faa,receipts:gaa,openingPortal:haa,portalFailed:yaa,recentTopups:vaa,alerts:baa,history:xaa,lowBalanceWarning:$aa,lowBalanceWarningNoAutoTopup:waa,ledgerDesc:kaa,earmarked:Caa,paymentMethod:Saa,redeemCard:Aaa},Raa="차트 로드 실패",Paa="데이터 없음",_aa="아직 차트로 표시할 데이터가 없습니다.",jaa={errorTitle:Raa,emptyTitle:Paa,emptyDescription:_aa},Naa={copy:"복사",regenerate:"다시 생성",shareComingSoon:"공유(ê³§ 제공 예정)",download:"다운로드",copyLink:"링크 복사",newChat:"새 채íŒ
811…",deleteChat:"채팅 삭제",openConversationList:"대화 목록 열기",openSettings:"채팅 설정",collapseSidebar:"사이드바 접기",expandSidebar:"사이드바 펼치기",cancel:"취소",apply:"적용",newChatTooltip:"새 채팅 만들기",copied:"복사됨"},Daa={placeholderReady:"새 대화 시작...",placeholderNoModel:"먼저 위에서 모델을 선택하세요",attachmentTooLarge:"파일이 {{limit}}을(를) 초과하여 업로드할 수 없습니다",attachmentUnsupported:"지원하지 않는 파일 형식입니다. PNG, JPEG, WebP, GIF, MP4, WebM 또는 MOV를 사용하세요.",unsupportedVision:"이 모델은 이미지 또는 동영상 입력을 지원하지 않습니다. 파일을 놓기 전에 모델을 변경하세요.",send:"전송",abort:"중지",attachImage:"이미지 추가",attachMedia:"이미지 또는 동영상 추가",removeAttachment:"제거",shortcutSend:"전송",shortcutNewLine:"줄바꿈",shortcutAbort:"중지",frameFirst:"첫 프레임",frameLast:"마지막 프레임",frameReference:"참조 이미지",imageMode:"이미지 생성",videoMode:"동영상 생성",placeholderComingSoon:"This model is coming soon — pick another one above",reasoning:"사고",reasoningOff:"꺼짐",reasoningAlways:"항상 켜짐",placeholderTopupRequired:"이 모델은 충전한 계정만 사용할 수 있습니다 — 충전하면 여기서 바로 쓸 수 있어요"},Maa={modelUnavailable:"모델 {{model}}은 현재 사용할 수 없습니다. 프롬프트는 저장되어 있습니다.",rateLimited:"동시 요청이 너무 많습니다. 잠시 후 다시 시도하세요.",accountDisabled:"이 계정은 비활성화되어 채팅을 계속할 수 없습니다.",attachmentsUploading:"이미지를 업로드하는 중입니다. 잠시 후 보내세요.",attachmentsFailed:"이미지 업로드에 실패했습니다. 제거한 후 다시 시도하세요."},Eaa={title:"여기에서 어떤 모델이든 테스트해 보세요.",body:"원하는 모델과 바로 채팅하세요. 사용량은 PAYG 지갑에 청구됩니다.",starters:{compareModels:"같은 코딩 작업에서 GPT-5.5와 Claude Opus 비교하기",analyzeImage:"아키텍처 다이어그램을 분석하고 리스크 요약하기",draftPrompt:"지원 에이전트용 system prompt 작성하기",generateImage:"깔끔한 SaaS 스타일의 제품 히어로 이미지 생성하기"}},Iaa={untitled:"제목 없는 채팅",deleteConfirm:'"{{title}}"을 삭제할까요?',emptyTitle:"아직 대화가 없습니다",emptyBody:"위의 + 새 채팅으로 시작하세요.",listLabel:"대화 목록",groups:{today:"오늘",yesterday:"어제",earlier:"이전"},menu:{rename:"이름 변경",delete:"삭제"},deleteTitle:"대화를 삭제할까요?"},Oaa={paygWallet:"PAYG 지갑"},Laa={chooseModel:"모델 선택",searchPlaceholder:"모델 검색...",emptyTitle:"모델을 찾을 수 없습니다",emptyBody:"다른 검색어나 탭을 시도해 보세요.",protocols:"{{count}} protocols",context:"{{value}} ctx",tabs:{all:"전체",text:"텍스트",image:"이미지",video:"비디오"},maxOut:"출력 {{value}}",unavailable:"일시적으로 사용 불가",requiresTopup:"충전 시 사용 가능"},Uaa={title:"채팅 설정",protocol:"Protocol",unlimited:"무제한",fields:{memory_limit:{label:"채팅 메모리"},temperature:{label:"Temperature"},top_p:{label:"Top P"},max_tokens:{label:"최대 Tokens",placeholder:"128000"},service_tier:{label:"서비스 티어",options:{standard:"표준",priority:"우선",flex:"Flex"}},thinking_budget:{label:"사고 예산 (tokens)",placeholder:"예: 2000"},stop_sequences:{label:"중지 시퀀스",placeholder:"쉼표로 구분, 예: END, STOP",itemLabel:"중지"},system_prompt:{label:"System Prompt",placeholder:"system prompt 입력..."},prompt_cache_mode:{label:"Prompt Cache",options:{implicit:"암시적",explicit:"명시적"}},image_size:{label:"이미지 해상도"},image_resolution:{label:"해상도"},image_quality:{label:"이미지 품질",options:{Auto:"자동",auto:"자동",low:"낮음",medium:"중간",high:"높음"}},video_ratio:{label:"화면 비율"},video_resolution:{label:"동영상 해상도"},video_duration_seconds:{label:"길이"},tools:{label:"Tools (JSON)",placeholder:'[{ "type": "function", "function": { ... } }]'},image_count:{label:"이미지 수"},image_aspect_ratio:{label:"가로세로 비율"}
811,reasoning_effort:{label:"추론 강도",options:{none:"꺼짐",minimal:"최소",low:"낮음",medium:"보통",high:"높음",xhigh:"매우 높음",max:"최대"}},reasoning_pro:{label:"Pro 모드"},reasoning_context:{label:"추론 컨텍스트",options:{auto:"자동",current_turn:"현재 턴",all_turns:"모든 턴"}},reasoning_enabled:{label:"사고"},reasoning_always:{label:"사고",value:"항상 켜짐"}}},Baa={estimating:"추정 중...",settling:"정산 중...",input:"입력",output:"출력",milliseconds:"ms",realCost:"실제 비용",latency:"지연 시간",logDetail:"로그 상세"},Faa={copied:"이미지 링크가 복사되었습니다",expired:"이미지 링크가 만료되었습니다. 링크를 복사해 다시 열거나 재생성하세요.",attachment:"[이미지 첨부]"},zaa={message:"이 채팅은 PAYG 지갑으로 청구됩니다",balance:"잔액",billingLink:"청구",dismiss:"닫기"},qaa={badge:"Earmarked {{amount}}",bannerTitle:"Earmarked credit available",bannerBody:"You have {{amount}} of dedicated credit for this model — it's used first."},Haa={trigger:"코드로 복사",copied:"{{format}}로 복사됨",failed:"복사 실패",failedDescription:"브라우저에서 클립보드 권한이 차단되었을 수 있습니다."},Vaa={interrupted:"[중단됨]",sending:"전송 중"},Kaa={title:"사고 과정",duration:"{{seconds}}s 동안 사고"},Gaa={title:"비디오 생성은 곧 제공됩니다",body:"이 모델은 탐색용으로 표시되어 있지만, 비디오 전송은 아직 활성화되지 않았습니다.",switchToText:"텍스트 모델로 전환"},Waa={imageGenerating:"이미지 생성 중",videoGenerating:"동영상 생성 중",stage:{queued:"대기 중",routing:"라우팅 중",generating:"생성 중",storing:"저장 중",settling:"정산 중"}},Yaa={INSUFFICIENT_CREDITS:"잔액 부족",RATE_LIMITED:"요청이 너무 많습니다",rate_limit_error:"요청이 너무 많습니다",MODEL_NO_VISION:"이 모델은 이미지 입력을 지원하지 않습니다",CONTENT_REFUSED:"모델이 이 요청을 거부했습니다",EMPTY_RESPONSE:"모델이 빈 응답을 반환했습니다",upstream_error:"업스트림 서비스 오류",overloaded_error:"업스트림 서비스가 혼잡합니다",upstream_invalid_json:"업스트림 응답이 올바르지 않습니다",stream_read_error:"응답 스트림이 중단되었습니다",invali
811d_api_key:"업스트림 인증 실패",model_unavailable:"모델을 일시적으로 사용할 수 없습니다",no_image:"이미지를 생성하지 못했습니다",no_body:"업스트림에서 응답이 없습니다",http_error:"요청 실패",session_create_failed:"세션 생성 실패"},Qaa={title:"충전하면 이 모델을 사용할 수 있습니다",body:"충전한 계정만 사용할 수 있습니다. 금액에 관계없이 충전하면 바로 열리고, 잔액은 사용량만큼 차감됩니다.",cta:"충전하기"},Xaa={actions:Naa,composer:Daa,errors:Maa,empty:Eaa,sidebar:Iaa,header:Oaa,modelSelector:Laa,settings:Uaa,metrics:Baa,image:Faa,payg:zaa,earmark:qaa,copyAsCode:Haa,status:Vaa,thinking:Kaa,video:Gaa,media:Waa,errorCodes:Yaa,topupLock:Qaa},Zaa="불러오는 중...",Jaa="계정",eoa="언어",toa="로그인",noa="로그아웃",aoa="로그아웃 중...",ooa="변경 사항 저장",soa="저장 중...",roa="저장되었습니다.",ioa="뒤로",loa="다시 시도",coa="충전 시 서비스 수수료 5% 할인.",doa="저장",uoa="취소",moa="지우기",poa="재설정",foa="복사됨",goa="복사 실패",hoa="닫기",yoa="합계",voa={timestamp:"타임스탬프",local:"로컬 시간",relative:"상대 시간"},boa="복사",xoa={title:"브라우저에서 열어 주세요",description:"<b>앱 내장 브라우저</b>에서 보고 있습니다. <b>여기서는 Google 로그인과 사람 인증을 사용할 수 없습니다</b>. 계속하려면 시스템 브라우저에서 열어 주세요.",hintWechat:"오른쪽 상단 ··· 메뉴에서 '브라우저에서 열기'를 선택하세요.",hintGeneric:"오른쪽 상단 메뉴에서 '브라우저 / Safari에서 열기'를 선택하세요.",copyLink:"링크 복사",continueAnyway:"계속 진행"}
811,$oa="전체",woa="적용됨",koa="선택 사항",Coa="삭제",Soa={loading:Zaa,account:Jaa,language:eoa,signIn:toa,signOut:noa,signingOut:aoa,saveChanges:ooa,saving:soa,saved:roa,back:ioa,retry:loa,topUpPromo:coa,save:doa,cancel:uoa,clearAll:moa,reset:poa,copied:foa,copyFailed:goa,dismiss:hoa,total:yoa,time:voa,copy:boa,inAppBrowser:xoa,all:$oa,active:woa,optional:koa,remove:Coa},Aoa="대시보드",Toa="한 콘솔에서 credit, 사용량, gateway 핵심 상태를 확인합니다.",Roa="API key 만들기",Poa={creditBalance:"Credit 잔액",requestsToday:"오늘 요청",activeApiKeys:"활성 API keys"},_oa={title:"사용량 추이",description:"최근 14일 요청 수와 과금 credit입니다.",viewUsage:"사용량 보기",loading:"사용량 추이 로드 중",empty:"아직 사용량 없음",emptyDescription:"요청이 들어오기 시작하면 여기에 사용량이 표시됩니다."},joa={title:"Credit 활동",description:"최근 90일 동안의 일별 과금 credit입니다.",total:"90일 합계",loading:"활동 로드 중",activeDays:"최근 {{days}}일 중 {{count}}일 활성",less:"적음",more:"많음"},Noa={title:"사용량 구성",description:"소비 강도, token 규모, 사용량이 가장 많은 모델을 한 화면에 압축했습니다.",activeDays:"활성 일수",ofDays:"/ {{days}}일",avgDailyCredit:"일평균 credit",nonZeroDays:"활성일 기준",peakDay:"피크일",noPeak:"아직 사용량 없음",tokens:"Tokens",topModel:"주요 모델",creditShare:"과금 credit 비중"},Doa={title:"빠른 상태",requests7d:"7일 요청",creditToday:"오늘 사용한 credit",credit7d:"7일 사용 credit"},Moa={title:"최근 요청",description:"각 key의 최신 gateway 호출입니다.",viewRecords:"기록 보기",table:{label:"최근 요청",model:"모델",status:"상태",tokens:"Tokens",credit:"Credit",time:"시간",apiKey:"API key"},empty:"아직 요청 없음",emptyDescription:"API key를 만들고 요청을 보내면 최근 호출이 여기에 표시됩니다."},Eoa={title:"첫 요청 보내기",description:"OpenAI 호환입니다. key를 만들고 {{env}}를 설정한 뒤 gateway를 호출하세요."},Ioa={credit:"Credit",requests:"요청"},Ooa={title:Aoa,description:Toa,createApiKey:Roa,cards:Poa,usageTrend:_oa,activity:joa,usageMix:Noa,quickHealth:Doa,recent:Moa,firstRequest:Eoa,tooltip:Ioa},Loa="모든 행 선택",Uoa="{{row}}행 선택",Boa="로드 실패",Foa="데이터 없음",zoa="표시할 레코드가 없습니다.",qoa="자세히 보기",Hoa="추가 세부 정보 {{count}}개",Voa="세부 정보 열기",Koa={selectAllRows:Loa,selectRow:Uoa,errorTitle:Boa,emptyTitle:Foa,emptyDescription:zoa,moreDetails:qoa,moreDetailsWithCount:Hoa,openRow:Voa},Goa="최근 1시간",Woa="오늘",Yoa="어제",Qoa="최근 7일",Xoa="최근 30일",Zoa="이번 달",Joa="월별",esa="사용자 지정",tsa="전체 기간",nsa="날짜 선택",asa="취소",osa="적용",ssa="시작 날짜는 종료 날짜보다 앞서야 합니다.",rsa="기간 프리셋",isa="이전 달",lsa="다음 달",csa={last1h:Goa,today:Woa,yesterday:Yoa,last7d:Qoa,last30d:Xoa,thisMonth:Zoa,byMonth:Joa,custom:esa,all:tsa,selectDate:nsa,cancel:asa,apply:osa,reversedError:ssa,presetsAriaLabel:rsa,previousMonth:isa,nextMonth:lsa},dsa="계정을 사용할 수 없습니다",usa="계정을 초기화하는 중입니다",msa={title:"계정이 정지되었습니다",description:"이 계정은 로그인할 수 있지만 콘솔 접근과 gateway 요청은 일시 중지되었습니다.",detail:"예상하지 못한 상태라면 이 계정의 이메일로 support에 문의하세요."},psa={accountUnavailable:dsa,accountInitializing:usa,accountRestricted:msa},fsa="무료 토큰",gsa="선택된 모델에 매일 지급되는 무료 토큰 한도입니다. 자동으로 갱신되며 지갑에서 차감되지 않습니다.",hsa="무료 토큰 한도를 불러오지 못했습니다.",ysa="전체 모델",vsa="캠페인 종료: {{date}}",bsa={daily:"매일",weekly:"매주"},xsa={daily:"매일 갱신",weekly:"매주 갱신",localTime:"현지 시간 {{time}}",countdown:"다음 갱신까지 {{duration}}",refreshingSoon:"곧 갱신"},$sa={title:"진행 중인 무료 토큰 캠페인이 없습니다",description:"무료 토큰 캠페인이 진행되면 매일 한도가 여기에 표시됩니다."},wsa={title:"이 계정은 무료 토큰 지급이 일시 중지되었습니다",body:"이 계정은 대량 가입 패턴의 일부로 보여 현재 무료 지급이 일시 중지되었습니다. 오류라고 생각되시면 다음으로 문의해 주세요:"},ksa="토큰",Csa="오늘 남은 {{value}} 토큰",Ssa={label:"소진 시 이메일 알림",hint:"오늘의 무료 토큰을 모두 사용하면 이메일로 알려드립니다."},Asa={crg_freetoken_daily_cn5:"국산 모델 · 매일 무료 토큰"},Tsa={title:fsa,description:gsa,loadFailed:hsa,allModels:ysa,campaignEnds:vsa,cadence:bsa,refresh:xsa,empty:$sa,paused:wsa,tokensUnit:ksa,remainingToday:Csa,emailToggle:Ssa,campaigns:Asa},Rsa="로그",Psa="요청별 비용, 지연 시간, tokens, 상태, routing 신호를 확인합니다.",_sa={copiedCurl:"curl 복사됨",copiedId:"요청 ID 복사됨",copyCurl:"curl로 복사",copyFailed:"복사 실패",copyId:"요청 ID 복사",menu:"행 작업",openTab:"새 탭에서 열기"},jsa={prompt:"Prompt",ratio:"적중률",read:"캐시 읽기",title:"캐시 적중률"},Nsa={confirm:"작업 취소",failed:"작업 취소 실패",keep:"유지",message:"이 작업은 아직 대기열에 있습니다. 취소하면 처리되지 않으며 비용도 발생하지 않습니다.",success:"작업이 취소되었습니다",title:"작업을 취소할까요?",pending:"취소 중..."},Dsa={cacheHit:"캐시 적중",cost:"비용",ip:"IP",latency:"지연 시간",model:"모델",source:"소스",status:"상태",stream
811:"스트리밍",time:"시간",tokens:"Tokens",tps:"처리량"},Msa={trigger:"열 설정"},Esa={body:"OneHop을 통해 요청을 보내면 여기에 표시됩니다.",title:"이 기간에는 로그가 없습니다"},Isa={all:"전체",apiKey:"API key",cost:"비용 (USD)",desktopDateRangeAria:"데스크톱 날짜 범위 선택",finishReason:"종료 사유",latency:"지연 시간 (s)",max:"최대",min:"최소",mobileDateRangeAria:"모바일 날짜 범위 선택",model:"모델",modelsSelected:"{{count}}개 선택됨",more:"더 많은 필터",refresh:"새로고침",request:"요청 ID로 검색",requestIdLabel:"요청 ID",status:"상태",stream:"스트리밍",time:"시간",type:"유형",mobileTitle:"필터"},Osa={requests:"이 페이지의 요청",times:"시간 표시 기준"},Lsa={rowsPer:"페이지당"},Usa={all:"전체 기간",custom:"사용자 지정",last1h:"최근 1시간",last30d:"최근 30일",last7d:"최근 7일",thisMonth:"이번 달",today:"오늘",yesterday:"어제"},Bsa={title:"클라이언트",unknown:"보고된 user-agent 없음",unknownShort:"알 수 없음"},Fsa={output:"출력 tokens",rate:"속도",title:"처리량",window:"생성 구간"},zsa={title:"요청",openDetail:"요청 상세 열기",copy:"ID 복사",copied:"복사됨",copyFailed:"복사 실패",close:"닫기",loading:"로드 중…",response:"응답",sections:{request:"요청",routing:"라우팅",tokens:"Tokens",cost:"비용 분해",performance:"성능",error:"오류",outcome:"결과",multimodal:"멀티모달"},fields:{requestId:"요청 ID",time:"시간",apiKey:"API key",userAgent:"User-Agent",billingMode:"과금 방식",onehopModel:"OneHop 모델",endpoint:"Endpoint",firstToken:"첫 token",total:"총 시간",throughput:"처리량",stream:"스트림",clientIp:"클라이언트 IP",finishReason:"종료 이유",mediaType:"미디어 유형",imageCount:"이미지 수",imageSize:"크기",errorCode:"코드",errorMessage:"메시지",requestedModel:"요청한 모델"},billingMode:{token:"token 단위",per_request:"요청 단위",image:"이미지 단위"},timeline:{heading:"라이프사이클",received:"요청 수신",routed:"라우팅됨",failed:"실패",generated:"생성됨",metered:"계량됨",billed:"과금됨"},downloadMedia:"다운로드"},qsa={success:"성공",completed:"완료",failed:"실패",pending:"대기 중",repairing:"복구 중",queued:"대기열",running:"실행 중",cancelled:"취소됨",expired:"만료됨"},Hsa={chat:"채팅",image:"이미지",video:"비디오"},Vsa={stop:"정상 종료",length:"길이 제한",tool_calls:"도구 호출",content_filter:"콘텐츠 필터",error:"오류"},Ksa={true:"스트리밍",false:"비스트리밍"},Gsa={title:"비용 내역"},Wsa={title:"Token 내역",prompt:"Input",completion:"Output",imageOutput:"이미지 출력 토큰",cacheRead:"캐시 읽기",cacheWrite:"캐시 쓰기",cacheWrite5m:"캐시 쓰기 5m",cacheWrite1h:"캐시 쓰기 1h",total:"합계"},Ysa={timestamp:"타임스탬프",local:"로컬 시간",relative:"상대 시간"},Qsa={inputCost:"입력 비용",outputCost:"출력 비용",cacheReadCost:"캐시 읽기 비용",cacheWriteCost:"캐시 쓰기 비용",inputPrice:"입력 단가",outputPrice:"출력 단가",total:"합계",officialPrice:"공식 가격",saved:"절감액",factor:{textInput:"텍스트 입력",textOutput:"텍스트 출력",imageInput:"이미지 입력",imageOutput:"이미지 출력",perCallImage:"이미지당",videoPerSecond:"비디오",videoPerCall:"비디오",cacheRead:"캐시 읽기",cacheWrite:"캐시 쓰기",cacheWrite5m:"캐시 쓰기 (5m)",cacheWrite1h:"캐시 쓰기 (1h)"},unit:{per1mTokens:"/ 100만 tokens",perImage:"/ 장",perSecond:"/ 초",perCall:"/ 회"},promoBasis:"프로모션 전",promoSaved:"프로모션 할인",freeCovered:"무료 한도 적용 ({{tokens}} 토큰)",freeCoveredNoCount:"무료 한도 적용"},Xsa={noPreview:"미리보기가 없습니다",video:"동영상"},Zsa={free:"무료"},Jsa={title:Rsa,description:Psa,actions:_sa,cacheHit:jsa,cancelJob:Nsa,col:Dsa,columns:Msa,empty:Esa,filter:Isa,meta:Osa,pager:Lsa,range:Usa,source:Bsa,tps:Fsa,drawer:zsa,status:qsa,type:Hsa,finishReason:Vsa,stream:Ksa,costBreakdown:Gsa,tokensBreakdown:Wsa,time:Ysa,userCost:Qsa,export:{label:"CSV 내보내기",exp
811orting:"내보내는 중…",done:"{{n}}개 행을 내보냈습니다.",truncated:"처음 {{n}}개 행을 내보냈습니다. 기간을 좁혀 나머지를 내보내세요.",failed:"내보내기에 실패했습니다. 다시 시도해 주세요."},media:Xsa,cost:Zsa},era="모델",tra="사용 가능한 모든 모델, 컨텍스트 길이, 입출력 가격과 기능을 확인하고 자주 쓰는 모델을 즐겨찾기에 추가하세요.",nra={all:"전체",favorites:"내 즐겨찾기",benefit:"혜택",hot:"인기",free:"Free"},ara={capability:"유형",allCapabilities:"모든 유형",capability_text:"텍스트",capability_image:"이미지",capability_audio:"오디오",capability_video:"동영상",provider:"제공사",allProviders:"모든 제공사",protocol:"프로토콜",allProtocols:"모든 프로토콜",sort:"정렬",search:"검색",searchPlaceholder:"모델 / 제조사",allContexts:"제한 없음",context:"컨텍스트",mobileTitle:"필터"},ora="추천",sra="최신순",rra="주간 인기",ira="이름 (A-Z)",lra="가격 낮은순",cra="가격 높은순",dra="컨텍스트 길이",ura="지연 시간",mra="처리량",pra="OpenAI Chat",fra="OpenAI Responses",gra="Anthropic",hra="Vertex AI",yra="OpenAI Images",vra="OpenAI Video",bra={label:"모델",model:"모델",provider:"제공사",capabilities:"기능",context:"컨텍스트",price:"가격",discount:"할인",action:"작업",tryIt:"사용해 보기",type:"유형",maxOutput:"최대 출력",copyId:"모델 ID 복사",copied:"복사됨",usage:"사용량",stability:"안정성",protocols:"프로토콜",openDetail:"Open model detail"},xra="인기",$ra="혜택",wra={add:"즐겨찾기 추가",remove:"즐겨찾기 해제"},kra={favorites:"아직 즐겨찾기가 없습니다",noMatch:"일치하는 모델이 없습니다"},Cra="텍스트",Sra="이미지",Ara="파일",Tra="동영상",Rra="오디오",Pra="임베딩",_ra="Vision",jra="도구 호출",Nra="JSON 모드",Dra="이미지 생성",Mra="이미지 편집",Era="텍스트",Ira="이미지",Ora="동영상",Lra="오디오",Ura="임베딩",Bra="공식",Fra="Kiro",zra="최저",qra="/ 회",Hra="/ 초",Vra="/ 1M",Kra="고속",Gra="Free",Wra="Coming Soon",Yra="Free",Qra={ariaLabel:"가격 통화",usd:"미국 달러",rmb:"위안 (¥)",settlement:"가격은 고정 환율 {{rate}}로 위안화 환산한 참고 값입니다. 지갑은 항상 미국 달러로 실제 사용량에 따라 청구됩니다."},Xra="충전 필요",Zra={title:era,description:tra,tabs:nra,filters:ara,sort_featured:ora,sort_newest:sra,sort_top_weekly:rra,sort_name:ira,sort_price_asc:lra,sort_price_desc:cra,sort_context:dra,sort_latency:ura,sort_throughput:mra,protocol_openai_chat:pra,protocol_openai_responses:fra,protocol_anthropic_messages:gra,protocol_google_vertex_ai:hra,protocol_openai_images:yra,protocol_openai_sora:vra,table:bra,badge_hot:xra,badge_benefit:$ra,favorite:wra,empty:kra,modality_text:Cra,modality_image:Sra,modality_file:Ara,modality_video:Tra,modality_audio:Rra,modality_embeddings:Pra,capability_vision:_ra,capability_tool_calling:jra,capability_json_mode:Nra,capability_image_generation:Dra,capability_image_edit:Mra,type_text:Era,type_image:Ira,type_video:Ora,type_audio:Lra,type_embedding:Ura,provider_official:Bra,provider_kiro:Fra,price_from:zra,price_perCall:qra,price_perSec:Hra,price_per1m:Vra,price_fast:Kra,badge_free:Gra,badge_unavailable:Wra,price_free:Yra,currency:Qra,badge_requiresTopup:Xra},Jra={main:"기본 탐색",utility:"도구 탐색",console:"콘솔 탐색",openNavigation:"탐색 열기",collapse:"사이드바 접기",expand:"사이드바 펼치기"},eia={platform:"콘솔",chat:"채팅",models:"모델",logs:"로그",jobs:"작업",apiKeys:"API keys",usage:"사용량",billing:"결제",freeTokens:"무료 토큰",referrals:"추천",settings:"설정",admin:"관리",balance:"잔액",helpSupport:"도움말 및 지원",announcements:"공지",announcementsTitle:"공지",announcementsEmpty:"아직 공지가 없습니다. 곧 다시 확인하세요.",announcementsTicketUnread:"새 답변이 있는 티켓 {{count}}개",support:"지원",tasks:"태스크 월",tagNew:"NEW"},tia={staff:"관리"},nia={dashboard:"대시보드",users:"사용자",billing:"플랫폼 결제",usage:"플랫폼 사용량",rateLimits:"속도 제한",access:"접근 제어",staff:"관리자",growth:"성장",models:"모델",announcements:"공지",upstream:"업스트림",auditLogs:"감사 로그",webhooks:"Webhooks",supp
811ort:"Support",campaigns:"Campaigns",domainRules:"Email domains"},aia={title:"Notifications",markAllRead:"Mark all read",loading:"Loading…",emptyTitle:"You're all caught up",emptyBody:"New notifications will show up here."},oia={aria:Jra,public:{models:"모델",pricing:"가격",docs:"문서",blog:"블로그",changelog:"변경 내역"},console:eia,adminGroups:tia,admin:nia,notifications:aia},sia={back:"이전",done:"완료",next:"다음",stepOf:"{{current}} / {{total}}"},ria={balance:{body:"필요한 만큼 충전하세요. 사용하지 않은 잔액은 언제든 환불됩니다.",title:"내 잔액"},keys:{body:"여기서 key를 만들고 원하는 도구가 OneHop을 가리키게 하세요.",title:"첫 API key 만들기"},models:{body:"한 페이지에서 호출 가능한 모든 모델과 각 가격을 확인하세요.",cta:"모델 페이지 열기",title:"모델 살펴보기"}},iia={body:"하나의 URL로 모든 모델을 호출할 수 있습니다. 30초 동안 세 가지를 안내합니다.",skip:"건너뛰기",start:"시작",title:"OneHop에 오신 것을 환영합니다"},lia={nav:sia,steps:ria,welcome:iia},cia="Failed to load",dia="Nothing here yet.",uia="자세히 보기",mia={failedLoad:cia,emptyDescription:dia,moreDetails:uia},pia="전체",fia="성공",gia="대기 중",hia="복구 중",yia="실패",via="환불됨",bia="활성",xia="비활성",$ia="소진됨",wia="예약됨",kia="사용됨",Cia="정지됨",Sia="삭제됨",Aia="정상",Tia="관찰 중",Ria="차단됨",Pia="지급됨",_ia="되돌림",jia="만료됨",Nia="거부됨",Dia="초안",Mia="게시됨",Eia="사용 중단",Iia="보관됨",Oia="숨김",Lia="생성됨",Uia="Checkout 열림",Bia="결제됨",Fia="취소됨",zia="OpenAI Chat",qia="OpenAI Responses",Hia="Anthropic Messages",Via="Google Vertex AI",Kia="OpenAI Images",Gia="사용량 과금",Wia="가입 보너스",Yia="프로모션 보너스",Qia="추천 보너스",Xia="보상 보너스",Zia="충전 보너스",Jia="수동 조정",ela="Credit 구매",tla="결제",nla="가입 보너스",ala="쿠폰",ola="관리자 지급",sla="API 사용량",rla="가입 보너스",ila="수동 지급",lla="동기",cla="Streaming",dla="Token 과금",ula="요청 과금",mla="이미지 과금",pla="낮은 reasoning",fla="중간 reasoning",gla="높은 reasoning",hla="해당 없음",yla="알 수 없음",vla="동결됨",bla="해제됨",xla="취소됨",$la="부분 되돌림",wla="건너뜀",kla={all:pia,success:fia,pending:gia,repairing:hia,failed:yia,refunded:via,active:bia,disabled:xia,exhausted:$ia,reserved:wia,redeemed:kia,suspended:Cia,deleted:Sia,normal:Aia,watchlisted:Tia,blocked:Ria,granted:Pia,reversed:_ia,expired:jia,denied:Nia,draft:Dia,published:Mia,deprecated:Eia,archived:Iia,public:"공개",hidden:Oia,created:Lia,checkout_opened:Uia,paid:Bia,canceled:Fia,openai_chat:zia,openai_responses:qia,anthropic_messages:Hia,google_vertex_ai:Via,openai_images:Kia,usage_charge:Gia,bonus_signup_grant:Wia,bonus_promo_grant:Yia,bonus_referral_grant:Qia,bonus_compensation_grant:Xia,bonus_topup_grant:Zia,manual_adjustment:Jia,credit_purchase:ela,payment:tla,signup:nla,coupon:ala,admin:ola,api:sla,signup_bonus:rla,manual:ila,sync:lla,stream:cla,token:dla,request:ula,image:mla,low:pla,medium:fla,high:gla,not_applicable:hla,unknown:yla,frozen:vla,released:bla,cancelled:xla,partially_reversed:$la,skipped:wla},Cla="페이지당 {{count}}개",Sla="총 {{count}}개",Ala={perPage:Cla,total:Sla},Tla="초대하고 리워드 받기",Rla="나만의 초대 링크를 공유하세요. 초대받은 사용자가 충전하면 양쪽 모두의 리워드가 명확하게 기록됩니다.",Pla="초대 데이터를 불러올 수 없습니다",_la="내 초대 링크",jla="공유",Nla="초대 내용을 복사했어요. WeChat에 붙여넣어 공유하세요.",Dla="복사",Mla="복사됨",Ela="WeChat",Ila="X",Ola="Telegram",Lla="Reddit",Ula="LinkedIn",Bla="WhatsApp",Fla="이메일",zla="Facebook",qla={default:{title:"하나의 OneHop API로 모든 AI 모델 호출",body:"제 초대 링크로 가입하고 {{firstWindowDays}}일 안에 첫 충전하면, 양쪽 모두 {{percent}}%를 돌려받습니다."},x:{title:"모든 AI 모델을 하나의 API로 🤖",body:"제 링크로 {{firstWindowDays}}일 안에 첫 충전하면 우리 둘 다 {{percent}}% 환급 🚀"},telegram:{title:"OneHop으로 모든 AI 모델을 사용하세요",body:"제 초대 링크를 사용하세요. {{firstWindowDays}}일 안에 첫 충전하면 양쪽 모두 {{percent}}% 추천 크레딧을 받습니다."},whatsapp:{title:"OneHop으로 모든 AI 모델을 사용하세요",body:"제 초대 링크로 가입해 보세요. {{firstWindowDays}}일 안에 첫 충전하면 우리 둘 다 {{percent}}%를 돌려받습니다."},reddit:{title:"OneHop — 모든 AI 모델을 위한 하나의 API. 제 초대 링크로 첫 충전하면 양쪽 모두 {{percent}}%를 돌려받습니다",body:"{{firstWindowDays}}일 안에 첫 충전하면 양쪽 모두 {{percent}}% 추천 크레딧을 받습니다."},email:{title:"OneHop 초대 — 하나의 API로 모든 AI 모델 사용",body:`안녕하세요,
812
813저는 OneHop을 사용해 하나의 API로 주요 AI 모델을 호출하고 있습니다. 제 초대 링크로 가입한 뒤 첫 충전을 완료하면, 양쪽 모두 추천 크레딧을 받을 수 있습니다.
814
815리워드 등급: {{tiers}}.
816
817감사합니다.`},wechat:{title:"OneHop — 하나의 API로 모든 AI 모델 호출",body:"제 초대 링크로 가입하고 {{firstWindowDays}}일 안에 첫 충전하면, 우리 둘 다 {{percent}}%를 돌려받습니다."}},Hla="리워드는 결제 직후 바로 표시되지만, 환불 기간을 대비해 먼저 동결되며 만료 후 OneHop 초대 보상 credit으로 지급됩니다.",Vla="{{days}}일 후 지급됩니다.",Kla={referrer:"초대한 사람",referee:"ì´
817ˆëŒ€ë°›ì€ 사람"},Gla={referrer:": 초대받은 사람이 충전하면 추천 credit을 받습니다 — {{tiers}}.",referee:": 링크로 가입하고 충전하면 회원님도 함께 적립받습니다 — {{tiers}}."},Wla={dayRange:"{{fromDay}}-{{untilDay}}일",dayOpenEnded:"{{fromDay}}일 이후"},Yla="누적 획득",Qla="지급된 초대 리워드",Xla="동결 중인 초대 리워드",Zla="초대 인원",Jla="유효 초대",eca="지급된 피초대 보상",tca="동결 중인 피초대 보상",nca="취소 / 회수",aca="내가 초대한 사람",oca="리워드 내역",sca={user:"사용자",joined:"가입 시간",topups:"충전 횟수",earned:"내가 획득",frozen:"동결 중",date:"시간",event:"이벤트",topupAmount:"상대방 충전액",rate:"비율",releaseAt:"지급 시간",cashback:"리워드",status:"상태"},rca={title:"아직 초대가 없습니다",description:"링크를 공유하면 리워드를 받기 시작할 수 있습니다."},ica={inviteeSignedUp:"초대받은 사용자가 가입을 완료했습니다",youSignedUp:"초대를 통해 가입을 완료했습니다",inviteePaid:"초대받은 사용자가 결제를 완료했습니다",youPaid:"피초대자로서 결제를 완료했습니다"},lca={frozen:"동결 중",released:"지급됨",cancelled:"취소됨",partially_reversed:"부분 회수",reversed:"회수됨",failed:"실패",skipped:"건너뜀"},cca={title:Tla,description:Rla,error:Pla,yourLink:_la,shareVia:jla,wechatCopied:Nla,copy:Dla,copied:Mla,wechat:Ela,x:Ila,telegram:Ola,reddit:Lla,linkedin:Ula,whatsapp:Bla,email:Fla,facebook:zla,share:qla,offer:Hla,releaseDelay:Vla,role:Kla,roleOffer:Gla,policy:Wla,totalEarned:Yla,availableEarned:Qla,frozenEarned:Xla,invited:Zla,active:Jla,availableReceived:eca,frozenReceived:tca,cancelledReversed:nca,peopleYouInvited:aca,history:oca,col:sca,empty:rca,event:ica,status:lca},dca="설정",uca="계정 기본 설정과 콘솔 기본값을 관리합니다.",mca="{{email}} 계정으로 로그인됨",pca="표시 이름",fca="언어",gca="시간대",hca="프로필을 불러오지 못했습니다",yca="저장하지 못했습니다",vca="변경 사항을 버릴까요?",bca="저장하지 않은 변경 사항이 있습니다. 지금 나가면 변경 사항이 버려집니다.",xca="버리기",$ca="계속 편집",wca={title:dca,description:uca,signedInAs:mca,displayName:pca,locale:fca,timezone:gca,failedLoad:hca,failedSave:yca,discardTitle:vca,discardMessage:bca,discardConfirm:xca,keepEditing:$ca},kca="태스크 월",Cca="OneHop을 여러분의 독자에게 알리고 체험 크레딧을 받으세요. 모든 제출은 사람이 직접 검토합니다.",Sca="게시물 링크",Aca="https://…",Tca="제출",Rca="제출했습니다. ê³§ 검토하겠습니다.",Pca="허용 링크: {{hosts}}",_ca="이전에 반려됨: {{reason}}. 수정 후 다시 제출할 수 있습니다.",jca={pending:"검토 중",approved:"지급 완료",rejected:"반려됨",active:"적용 중"},Nca={title:"현재 진행 중인 태스크가 없습니다",description:"ê³§ 다시 확인해 주세요. 이런 캠페인은 수시로 진행합니다."},Dca={x_quote:{title:"X에서 인용 게시하기",description:"@OneHopAI의 고정 게시물을 인용하고 직접 사용 후기를 덧붙여 주세요.",rules:["X 계정은 개설 6개월 이상, 팔로워 10명 이상이어야 합니다.","원본이 아니라 본인이 작성한 인용 게시물 링크를 제출하세요.","승인 후 2시간 이내에 지급됩니다."]},youtube_tutorial:{title:"YouTube 튜토리얼 올리기",description:"OneHop을 본인 에이전트에 연결하는 과정을 보여 주는 6분 이상 영상.",rules:["게시 후 영상 링크를 제출하세요.","YouTube 채널 구독자가 50명 이상이어야 합니다.","계정당 1회만 참여할 수 있습니다.","승인 후 2시간 이내에 지급됩니다."]},short_video:{title:"숏폼 영상 올리기",description:"TikTok 또는 YouTube에 OneHop 설정을 언급한 40초 이상 숏폼 영상.",rules:["게시 후 영상 링크를 제출하세요.","승인 후 2시간 이내에 지급됩니다."]},github_readme:{title:"GitHub README에 OneHop 넣기",description:"본인 저장소의 README에 OneHop 크레딧을 추가하면 이후 모든 충전에 15%가 추가 지급됩니다.",rules:["README를 공개한 뒤 저장소 링크를 제출하세요.","일회성이 아니라 영구적입니다. 이후 충전에는 기본 보너스와 15% 중 더 높은 쪽이 적용됩니다.","복사해서 쓸 수 있는 문구는 아래에 있습니다."]}},Mca={load:"태스크 월을 불러오지 못했습니다",generic:"제출하지 못했습니다",urlRequired:"먼저 게시물 링크를 붙여넣어 주세요.",urlTooLong:"링크가 너무 깁니다.",urlMalformed:"유효한 링크로 보이지 않습니다.",hostNotAllowed:"이 태스크는 위에 나열된 플랫폼의 링크만 받습니다.",notAPost:"프로필이나 홈이 아니라 해당 게시물·영상 링크를 입력하세요.",alreadySubmitted:"이 태스크는 이미 제출했습니다.",notAvailable:"현재 이용할 수 없는 태스크입니다.",busy:"오늘 검토 가능 건수를 모두 소진했습니다. 내일 다시 시도해 주세요.",emailUnverified:"먼저 이메일을 인증해 주세요.",accountTooNew:"계정 개설 기간이 아직 부족합니다.",riskFlagged:"이 계정은 현재 참여할 수 없습니다. 잘못되었다고 생각되면 고객지원에 문의하세요.",accountInactive:"활ì„
817± 상태가 아닌 계정입니다.",deviceAlreadyClaimed:"이 기기의 다른 계정이 이미 참여했습니다."},Eca="이 프로젝트를 후원해 준 [OneHop]({{url}})에 감사드립니다! OneHop은 OpenAI 호환 API 키 하나로 GPT, Claude, Gemini, DeepSeek, Kimi, Qwen 등 수백 개의 주요 모델을 사용할 수 있게 해 줍니다. 여러 제공업체 계정을 관리할 필요도, 모델을 바꾸려고 코드를 ê³ ì¹  필요도 없으며, 사용한 만큼만 지불합니다. → {{domain}}",Ica="이 문구 복사",Oca={title:kca,description:Cca,urlLabel:Sca,urlPlaceholder:Aca,submit:Tca,submitted:Rca,allowedHosts:Pca,rejectedHint:_ca,status:jca,empty:Nca,item:Dca,error:Mca,sponsorBlurb:Eca,copyBlurb:Ica},Lca="채팅 상담",Uca="지원 티켓",Bca="티켓을 열면 저희 팀이 최대한 빠르게 답변드립니다.",Fca="새 티켓",zca={subject:"제목",category:"유형",status:"상태",updated:"업데이트",user:"User"},qca={billing:"청구",technical:"기술",account:"계정",other:"기타"},Hca={open:"처리 대기",pending:"답변 대기",resolved:"해결됨",closed:"종료됨"},Vca={allStatuses:"모든 상태",allCategories:"All categories",search:"Search email or subject"},Kca={subject:"제목",subjectPlaceholder:"문제를 간단히 설명해 주세요",category:"유형",message:"내용",messagePlaceholder:"어떤 일이 있었는지 알려주세요…",attachments:"첨부 파일",addAttachment:"파일 추가",submit:"티켓 제출",cancel:"취소"},Gca={you:"나",support:"지원팀",system:"시스템",replyPlaceholder:"답변 작성…",send:"보내기",closedNotice:"이 티켓은 종료되었습니다. 아직 도움이 필요하면 새 티켓을 열어 주세요.",sendHint:"⌘/Ctrl + Enter로 보내기",back:"티켓 목록으로 돌아가기",systemStatus:{open:"티켓을 다시 열었습니다",pending:"티켓을 사용자 답변 대기로 표시했습니다",resolved:"티켓을 해결됨으로 표시했습니다",closed:"티켓을 종료했습니다"}},Wca={title:"Support tickets",resolve:"Resolve",close:"Close",reopen:"Reopen",unread:"Unread"},Yca="더 불러오기",Qca={created:"티켓이 제출되었습니다",replied:"답변을 보냈습니다",statusUpdated:"Status updated",error:"문제가 발생했습니다. 다시 시도해 주세요"},Xca="티켓을 찾을 수 없거나 삭제되었습니다.",Zca={title:"아직 티켓이 없습니다",body:"문제가 있나요? 티켓을 열면 저희가 도와드리겠습니다.",cta:"첫 티켓 열기"},Jca={liveChat:Lca,title:Uca,subtitle:Bca,newTicket:Fca,columns:zca,category:qca,status:Hca,filters:Vca,form:Kca,thread:Gca,admin:Wca,loadMore:Yca,toast:Qca,notFound:Xca,empty:Zca},eda="사용량",tda="잔액, 소진 속도, 지출이 어디에 쓰였는지 확인합니다.",nda="활동",ada="이 기간에는 활동이 없습니다",oda="사용량 내역",sda="API key별",rda="모델별",ida="token 유형별",lda="데이터 없음",cda="이 기간에는 아직 사용량이 없습니다.",dda="현재 속도라면 잔액은 약 {{days}}일(하루 {{rate}}) 더 사용할 수 있습니다.",uda="출력",mda="캐시",pda={tokens:"Tokens",requests:"요청 수",cost:"비용"},fda="기타",gda="회",hda="tok",yda="새로고침 중…",vda="데이터 없음",bda="요청을 보내면 데이터가 쌓이기 시작합니다.",xda="상위 API keys",$da="충전",wda={title:"사용량을 불러올 수 없습니다"},kda={firstToken:"첫 token",latency:"평균 지연 시간",requests:"요청",spend:"사용액",spendSub:"이번 기간 과금",successRate:"{{rate}}% 성공",tokens:"Tokens",textDuration:"텍스트",mediaDuration:"이미지·동영상",cacheHit:"캐시 {{rate}}%",projected:"약 {{amount}}/월",vsPrevious:"이전 기간 대비"},Cda={activeDays:"활성 일수",longestStreak:"최장 연속",daysValue:"{{n}}일",totalSpend:"이번 기간 사용액",peakDay:"가장 활발한 날"},Sda={all:"전체 기간",custom:"사용자 지정",last1h:"최근 1시간",last30d:"최근 30일",last7d:"최근 7일",thisMonth:"이번 달",today:"오늘",yesterday:"어제",byMonth:"월별"},Ada={failed:"실패",success:"성공"},Tda={cacheRead:"캐시 읽기",cacheWrite:"캐시 쓰기",cacheWrite1h:"캐시 쓰기 1h",cacheWrite5m:"캐시 쓰기 5m",completion:"출력",prompt:"입력"},Rda={body:"터미널에서 요청을 보내거나 playground를 열면 몇 초 안에 사용량이 여기에 표시됩니다.",openPlayground:"playground 열기",title:"key 준비 완료"},Pda={body:"첫 API key를 만들고 하나의 URL로 모든 요청을 라우팅하면, 사용량이 ê³§ 여기에 표시됩니다.",createKey:"API key 만들기",title:"OneHop에 오신 것을 환영합니다",tryPlayground:"playground 사용해 보기"},_da="새로고침",jda="현재 필터에서 {{count}}개 성공 요청",Nda="총 tokens",Dda="입력 {{input}} / 출력 {{output}}",Mda="과금 credit",Eda="{{cost}} upstream 실제 비용",Ida="평균 지연 시간",Oda="첫 token {{duration}}",Lda="30일 활동",Uda="성공 요청, token 양, 과금 credit입니다.",Bda="사용량 추이 로드 중",Fda="사용량 추이 없음",zda="성공 요청 후 사용량 추이가 표시됩니다.",qda="상위 모델",Hda="최근 30일 모델별 과금 credit입니다.",Vda="아직 모델 사용량 없음",Kda="성공 요청 후 모델 분석이 표시됩니다.",Gda="모델",Wda="모든 모델",Yda="상태",Qda="프로토콜",Xda="행 수",Zda="초기화",Jda="사용량 기록",eua="API key",tua="Endpoint",nua="유형",aua="Tokens",oua="비용",sua="소요 시간",rua="시간",iua="User-Agent",lua="상세",cua="요청 상세",dua="사용량 기록 상세와 과금 metadata입니다.",uua="요청 ID",mua="작업",pua="입력 tokens",fua="출력 tokens",gua="캐시 읽기 tokens",hua="캐시 쓰기 tokens",yua="입력 비용",vua="출력 비용",bua="캐시 읽기 비용",xua="캐시 쓰기 비용",$ua="오류 코드",wua="오류 메시지",kua="찾을 수 없습니다.",Cua="credit",Sua="총 {{count}}",Aua="사용량 기록 로드 중",Tua="사용량 기록 없음",Rua="다른 필터 조합을 시도하세요.",Pua="요청이 API keys를 통과하면 기록이 여기에 표시됩니다.",_ua="{{page}}페이지 · 일치하는 {{total}}개 중 {{shown}}개 표시",jua="이전",Nua="다음",Dua="Credit",Mua="Tokens",Eua="요청",Iua={time:"시간",apiKey:"API Key",model:"모델",reasoningEffort:"추론 강ë
817„",endpoint:"Endpoint",type:"유형",billingMode:"과금 방식",inputTokens:"입력 Tokens",outputTokens:"출력 Tokens",cacheReadTokens:"캐시 읽기 Tokens",cacheWriteTokens:"캐시 쓰기 Tokens",totalTokens:"총 Tokens",billedCredit:"과금 Credit",firstTokenMs:"첫 Token ms",durationMs:"소요 시간 ms",status:"상태",userAgent:"User-Agent"},Oua={mon:"월",wed:"수",fri:"금"},Lua="적음",Uua="많음",Bua={title:eda,description:tda,activity:nda,activityEmpty:ada,breakdown:oda,byApiKey:sda,byModel:rda,byTokenType:ida,chartEmpty:lda,chartEmptyHint:cda,burnRate:dda,in:"입력",out:uda,cache:mda,metric:pda,other:fda,req:gda,tok:hda,refreshing:yda,topEmpty:vda,topEmptyHint:bda,topKeys:xda,topUp:$da,error:wda,kpi:kda,stat:Cda,range:Sda,requests:Ada,tokenType:Tda,noRequests:Rda,welcome:Pda,refresh:_da,successfulFilter:jda,totalTokens:Nda,inOut:Dda,billedCredit:Mda,upstreamActualCost:Eda,avgLatency:Ida,firstToken:Oda,activityTitle:Lda,activityDescription:Uda,loadingTrend:Bda,noUsageTrend:Fda,trendDescription:zda,topModels:qda,topModelsDescription:Hda,noModelUsage:Vda,noModelUsageDescription:Kda,model:Gda,allModels:Wda,status:Yda,protocol:Qda,rows:Xda,reset:Zda,tableLabel:Jda,apiKey:eua,endpoint:tua,type:nua,tokens:aua,cost:oua,duration:sua,time:rua,userAgent:iua,details:lua,requestDetail:cua,detailDescription:dua,requestId:uua,operation:mua,inputTokens:pua,outputTokens:fua,cacheReadTokens:gua,cacheWriteTokens:hua,inputCost:yua,outputCost:vua,cacheReadCost:bua,cacheWriteCost:xua,errorCode:$ua,errorMessage:wua,notFound:kua,creditSuffix:Cua,total:Sua,loadingRecords:Aua,noRecords:Tua,differentFilters:Rua,recordsEmpty:Pua,pageSummary:_ua,previous:jua,next:Nua,chartCredit:Dua,chartTokens:Mua,chartRequests:Eua,csv:Iua,weekday:Oua,activityLess:Lua,activityMore:Uua},Fua="Signup access",zua="Controlled-launch registration gate. Approved emails, domains, existing users, and active admins can create accounts.",qua="Signup access allowlist",Hua="No allowlist entries",Vua="Email / domain",Kua="Note",Gua="Status",Wua="Registration",Yua="Expires",Qua="Invites",Xua="Updated",Zua="Action",Jua="Add",ema="Bulk add",tma="Edit",nma="Save",ama="Invite",oma="Restore",sma="Remove",rma="Add signup access",ima="Edit {{email}}",lma="Bulk add signup access",cma="Add a specific email or a whole domain with @company.com. Existing users and active admins are always allowed.",dma="Paste one email or @domain per line. Invalid and duplicate rows will be skipped.",uma="Email or domain",mma="[email protected] or @company.com",pma="Use @company.com to approve an entire domain.",fma="Note (optional)",gma="e.g. founding team",hma="Expiry (optional)",yma="Leave empty for no expiry. Expired entries no longer allow new signups.",vma="Emails / domains",bma=`[email protected]
818[email protected]
819@partner.com`,xma="Search",$ma="Search email or domain",wma="Status",kma="Access check",Cma="[email protected]",Sma="Check",Ama="Allowed",Tma="Denied",Rma={existing_user:"Existing user always allowed",active_admin:"Active admin always allowed",email_allowlist:"Matched exact email",domain_allowlist:"Matched domain rule",not_allowed:"No active rule matched"},Pma="Registered",_ma="Not registered",jma="Admin",Nma="Domain rule",Dma="Never",Mma="Added to signup access.",Ema="Signup access updated.",Ima="Added {{count}} entries.",Oma="Invite sent.",Lma="Entry restored.",Uma="Removed from signup access.",Bma="Remove {{email}} from signup access? They can no longer create a new account unless another rule allows them.",Fma={title:"Email domain rules",description:"Hot-configurable email-domain lists layered on the built-in baseline. Blacklisted domains are blocked at signup; mainstream domains skip the watchlist.",add:"Add domain",addTitle:"Add domain rule",addDescription:"Blacklist blocks signup (403). Mainstream marks the domain as trusted so new users are not watchlisted.",kindLabel:"List",kindBlacklist:"Blacklist — block signup",kindMainstream:"Mainstream — skip watchlist",domainLabel:"Domain",domainPlaceholder:"example.com",noteLabel:"Note",notePlaceholder:"Optional — why this domain",search:"Search",searchPlaceholder:"Filter by domain",kindFilter:"List",allKinds:"All lists",statusFilter:"Status",statusActive:"Active",statusRevoked:"Removed",statusAll:"All",label:"Email domain rules",empty:"No domain rules",colDomain:"Domain",colKind:"List",colNote:"Note",colAddedBy:"Added by",colCreated:"Created",status:"Status",action:"Action",remove:"Remove",restore:"Restore",confirmRemove:"Remove rule for {{domain}}?",added:"Domain rule added",removed:"Domain rule removed",restored:"Domain rule restored",badgeBlacklist:"Blacklist",badgeMainstream:"Mainstream"},zma={title:Fua,description:zua,label:qua,empty:Hua,email:Vua,note:Kua,status:Gua,registration:Wua,expiresAt:Yua,invites:Qua,updatedAt:Xua,action:Zua,add:Jua,bulkAdd:ema,edit:tma,save:nma,invite:ama,restore:oma,revoke:sma,newTitle:rma,editTitle:ima,bulkTitle:lma,formDescription:cma,bulkDescription:dma,emailLabel:uma,emailPlaceholder:mma,emailHint:pma,noteLabel:fma,notePlaceholder:gma,expiresAtLabel:hma,expiresAtHint:yma,bulkEntriesLabel:vma,bulkEntriesPlaceholder:bma,search:xma,searchPlaceholder:$ma,statusFilter:wma,checkLabel:kma,checkPlaceholder:Cma,check:Sma,checkAllowed:Ama,checkDenied:Tma,checkReasons:Rma,registered:Pma,notRegistered:_ma,adminAllowed:jma,domainRule:Nma,never:Dma,added:Mma,updated:Ema,bulkAdded:Ima,invited:Oma,restored:Lma,revoked:Uma,confirmRevoke:Bma,domainRules:Fma},qma="Ops Billing",Hma="Payments, wallets and refunds across all users.",Vma={payments:"Payments",wallets:"Wallets",refunds:"Refunds"},Kma="User email",Gma="Search by email...",Wma="Created",Yma="Created",Qma="Amou
819nt (USD)",Xma="Min",Zma="Max",Jma="Refunds",epa="No refunds",tpa="Refund",npa="Type",apa="Full refund",opa="Partial refund",spa="Original payment",rpa="Wallets",ipa="Wallet",lpa="User",cpa="Total",dpa="Purchased",upa="Bonus",mpa="No wallets",ppa="Payments",fpa="Payment status",gpa="No payments",hpa="Payment",ypa="Status",vpa="Amount",bpa="Paid",xpa="Refund",$pa="Not refundable (status must be paid)",wpa="View in Stripe Dashboard",kpa="Failed + dead-letter webhooks in last 7 days. 0=green, 1-9=yellow, 10+=red.",Cpa="unhealthy",Spa="Refund {{id}}",Apa="This will refund {{user}} via Stripe. The platform fee shown below is deducted from the amount returned; uncheck it to waive. Promotional credits granted with the original payment will be forfeited proportionally.",Tpa="Refund amount (USD)",Rpa="Max ${{value}}",Ppa="Reason",_pa="Carregando a prévia do reembolso…",jpa="Não foi possível carregar a prévia do reembolso. O reembolso fica bloqueado até a prévia carregar.",Npa="Nenhuma transação reembolsável encontrada — este pagamento pode já ter sido totalmente reembolsado.",Dpa="Pago",Mpa="Já reembolsado",Epa="Este reembolso",Ipa="Crédito recuperado",Opa="Inclui {{amount}} de crédito do desconto de cupom recuperado proporcionalmente",Lpa="Inclui {{amount}} de crédito extra concedido recuperado proporcionalmente",Upa="Bônus revogado",Bpa="Este reembolso revogará o bônus promocional de {{amount}}.",Fpa="Devolvido via Stripe",zpa="Cobrar taxa da plataforma ({{fee}}) — cobre o custo do Stripe",qpa="Taxa da plataforma ({{fee}})",Hpa="O valor excede o máximo reembolsável {{value}}",Vpa="Informe um valor positivo válido",Kpa="O usuário já consumiu parte do crédito comprado. Máximo reembolsável: {{value}}",Gpa="Este pagamento já foi totalmente reembolsado",Wpa="O valor líquido após as taxas é baixo demais. Reembolse ao menos {{value}}.",Ypa="Cancel",Qpa="Issue refund",Xpa="Submitting...",Zpa="Refund submitted",Jpa="Stripe will return the funds within 1-3 business days. Audit log written.",efa="Refund failed",tfa={title:qma,description:Hma,tabs:Vma,emailFilter:Kma,emailPlaceholder:Gma,created:Wma,createdRange:Yma,amountRange:Qma,amountMin:Xma,amountMax:Zma,refunds:Jma,noRefunds:epa,refundId:tpa,refundType:npa,typeRefund:apa,typePartialRefund:opa,originalPayment:spa,wallets:rpa,wallet:ipa,user:lpa,total:cpa,purchased:dpa,bonus:upa,noWallets:mpa,payments:ppa,paymentStatus:fpa,noPayments:gpa,payment:hpa,status:ypa,amount:vpa,paid:bpa,refund:xpa,notRefundable:$pa,viewInStripe:wpa,webhookHealthHint:kpa,unhealthyWebhooks:Cpa,refundConfirmTitle:Spa,refundConfirmBody:Apa,refundAmountLabel:Tpa,refundMaxHint:Rpa,refundReasonLabel:Ppa,refundPreviewLoading:_pa,refundPreviewFailed:jpa,refundNoRefundableTx:Npa,refundPaidRow:Dpa,refundAlreadyRefundedRow:Mpa,refundThisRefundRow:Epa,refundCreditReclaimRow:Ipa,refundCreditCouponNote:Opa,refundCreditExtraNote:Lpa,refundBonusReverseRow:Upa,refundBonusForfeitWarning:Bpa,refundStripeReturnRow:Fpa,refundFeeToggle:zpa,refundPlatformFeeRow:qpa,refundExceedsMax:Hpa,refundAmountInvalid:Vpa,refundInsufficientCredit:Kpa,refundAlreadyFull:Gpa,refundBelowMin:Wpa,cancel:Ypa,confirmRefund:Qpa,submitting:Xpa,refundSubmittedTitle:Zpa,refundSubmittedBody:Jpa,refundFailedTitle:efa},nfa="Campaigns",afa="Audience segments, restricted-model access, model discounts, and targeted credit grants.",ofa={mobileLabel:"Seção de campanhas",segments:"Audiences",access:"Model access",discounts:"Model discounts",grants:"Targeted grants",recurring:"Periodic grants"},sfa="Status",rfa="Actions",ifa="All users",lfa="Always",cfa="No expiry",dfa="Active window",ufa="Leave blank for always-on. Times are end-of-day on the chosen dates.",mfa="Valid from",pfa="Valid to",ffa="Pause",gfa="Resume",hfa="Add",yfa="Remove",vfa="Delete",bfa="Clear",xfa="Close",$fa={allKinds:"Todos os tipos",segmentKindStatic:"Estático",segmentKindDynamic:"Dinâmico",grantKindGrant:"Conceder",grantKindRevoke:"Revogar",allStatuses:"Todos os status",statusActive:"Ativo",statusPaused:"Pausado",statusArchived:"Arquivado",statusEnded:"Encerrado",statusPending:"Pendente",statusProcessing:"Processando",statusCompleted:"Concluído",statusFailed:"Falhou"},wfa={title:"Audiences",create:"New audience",empty:"No audiences yet. Create one to target access, discounts, and grants.",name:"Name",namePlaceholder:"e.g. China power users",description:"Description",kind:"Kind",kind_static:"Static",kind_dynamic:"Dynamic",kindHint:"Static = a hand-picked list of users. Dynamic = users matching a rule, refreshed on materialize.",members:"Members",materialized:"Last refreshed",materializeDone:"Materialized {{count}} members",basics:"Basics",sheetDescription:"Audiences group users so you can target model access, discounts, and grants.",saved:"Audience saved",created:"Audience created",rule:"Matching rule",ruleHint:"All conditions must match (AND). An empty rule matches no one.",countryIn:"Country in",countryInHint:"Comma-separated ISO-2 c
819odes, e.g. CN, US, JP.",signupAfter:"Signed up after",signupBefore:"Signed up before",minSpend:"Min cumulative spend (USD)",minSpendHint:"Only users whose lifetime spend is at least this.",previewing:"Estimating…",matchCount:"Estimated match: {{value}} users",membersTitle:"Members",membersHint:"Search and add users. Rule-matched members are read-only.",addMembers:"Add users",searchUsers:"Search by email or ID",noUsers:"No matching users.",noMembers:"No members yet.",membersAdded:"{{count}} member added",membersAdded_plural:"{{count}} members added",source_manual:"Manual",source_rule:"Rule",materializeTitle:"Materialize",materializeHint:"Snapshot the rule into the member list. Re-run anytime to refresh.",materialize:"Materialize now",materializing:"Materializing…",materializeConfirm:"Refresh members from the current rule? This replaces the rule-matched snapshot.",lastMaterialized:"Last materialized {{value}}",neverMaterialized:"Never materialized",deleteSegment:"Delete audience",deleteConfirm:"Delete this audience? Access, discounts, and grants referencing it will lose this targeting."},kfa={title:"Model access",create:"Grant access",empty:"No access grants yet.",model:"Model",segment:"Audience",target:"Target",validFrom:"Valid from",validTo:"Valid to",sheetDescription:"Give a restricted model to an audience for an optional time window.",created:"Access granted",statusUpdated:"Status updated",deleteConfirm:"Remove this access grant?",noSegmentsTitle:"Create an audience first",noSegmentsDescription:"Access is granted to an audience. Create an audience on the Audiences tab, then come back to grant model access.",publicHint:"This model is public — everyone can already use it.",publicModelTitle:"Model is public",publicModelWarning:"{{model}} is public, so this grant has no effect until it is set to restricted on the Models page. Flip it to restricted there to gate it to this audience.",createAnyway:"Create anyway"},Cfa={title:"Model discounts",create:"New discount",empty:"No discounts yet.",model:"Model",audience:"Audience",audienceHint:"Leave as all users to discount for everyone.",discount:"Discount",window:"Window",live:"Live",end:"End",amount:"Discount",target:"Target",name:"Internal name",nameHint:"Optional label for your own reference.",percentLabel:"Extra off the platform price",percentHint:"1–99%. Applied on top of our platform price (our_price), not the official price.",percentError:"Enter a value between 1 and 99.",previewPlatform:"Discounted platform price",previewVsOfficial:"Saved vs official",pickStart:"Pick a start date",sheetDescription:"Discounts apply on top of the platform price. The official price is shown for comparison only.",created:"Discount created",saved:"Discount saved",statusUpdated:"Status updated",deleteConfirm:"Delete this discount?",liveReadonly:"This discount is live — value, window, and name are locked. Pause or end it to make changes.",terminalReadonly:"This discount has ended and is read-only."},Sfa={title:"Targeted grants",create:"New grant",empty:"No targeted grants yet.",time:"Time",kind:"Kind",kind_grant:"Grant",kind_revoke:"Revoke",model:"Models",modelHint:"Credit is shared across the selected models — spending on any of them draws from the same balance.",pickModels:"Pick models",nModels:"{{count}} models selected",pasteEmails:"Bulk add by email",pasteEmailsPlaceholder:"[email protected], [email protected] — separated by newline, comma or semicolon",importEmails:"Parse & add",importMatched:"Matched {{count}} users.",importUnmatched:"{{count}} emails not found:",importInvalid:"{{count}} invalid entries skipped:",importInactive:"{{count}} matched but inactive — will be skipped:",preset7d:"7 days",preset30d:"30 days",preset90d:"90 days",total:"Total",notifyYes:"Yes",notifyNo:"No",recipients:"Recipients",amount:"Amount",expiry:"Expires",expiryHint:"Optional. Unused balance expires on this date.",audience:"Audience",bySegment:"By audience",byUsers:"Specific users",segment:"Audience",users:"Users",searchUsers:"Search by email or ID",noUsers:"No matching users.",grantDetails:"Grant details",amountEach:"Amount per recipient (USD)",amountHint:"0.01–2000 per recipient.",notifyEmail:"Email recipients",note:"Note",summary:"{{count}} recipients × {{amount}} = {{total}} total",send:"Send grant",sending:"Queuing…",queued:"Grant queued — fanning out to recipients",confirmTitle:"Send targeted grant?",confirmMessage:"Grant {{amount}} each to {{count}} recipients ({{total}} total)?",confirmSend:"Send grant",sheetDescription:"Grant model-restr
819icted credit to an audience or a hand-picked list of users.",batchTitle:"Grant batch",succeeded:"Succeeded",failed:"Failed",revokedAmount:"Reclaimed",completedAt:"Completed",revoke:"Revoke",revokeConfirm:"Reclaim unused balance from {{count}} recipients of {{model}}?",revokeQueued:"Revoke queued"},Afa={title:"Periodic grants",create:"New periodic grant",editTitle:"Edit periodic grant",empty:"No periodic grants yet. Create one to give recurring free tokens or credit on a daily or weekly cadence.",sheetDescription:"Free tokens or restricted credit, refreshed for an audience every period (lazily, on first use).",basics:"Basics",name:"Name",namePlaceholder:"e.g. Daily free Kimi tokens",unit:"Unit",unitHint:"Tokens = free token allowance per period. USD = restricted credit (single model only).",unitLocked:"Unit is fixed after creation — create a new campaign to switch.",unit_tokens:"Tokens",unit_usd:"USD",allUnits:"All units",targeting:"Targeting",models:"Models",modelsHint:"Free tokens are usable across all selected models.",model:"Model",usdSingleModelHint:"USD grants are restricted to one model — multi-model would make spend unattributable.",pickModels:"Pick models",nModels:"{{count}} model selected",nModels_plural:"{{count}} models selected",audience:"Audience",audienceHint:"Leave as all users to grant to everyone.",schedule:"Amount & schedule",perPeriod:"Per period",tokensHint:"Positive integer, e.g. 100000 tokens per period.",usdHint:"
8190.01–2000 USD per period.",cadence:"Cadence",cadence_daily:"Daily",cadence_weekly:"Weekly",anchorTz:"Anchor timezone",anchorTzHint:"Period boundaries follow local midnight in this timezone.",startsAt:"Starts",startsAtHint:"Optional. Blank = effective immediately.",endsAt:"Ends",endsAtHint:"Optional. Blank = no end date.",immediately:"Immediately",excludeRisky:"Exclude risky accounts",thisPeriod:"This period (users · used/granted)",allStatuses:"All statuses",status_draft:"Draft",status_active:"Active",status_paused:"Paused",status_archived:"Archived",created:"Periodic grant created",saved:"Periodic grant saved"},Tfa={title:nfa,description:afa,tabs:ofa,status:sfa,actions:rfa,allUsers:ifa,always:lfa,noExpiry:cfa,window:dfa,windowHint:ufa,validFrom:mfa,validTo:pfa,pause:ffa,resume:gfa,actionAdd:hfa,actionRemove:yfa,actionDelete:vfa,actionClear:bfa,actionClose:xfa,filters:$fa,segments:wfa,access:kfa,discounts:Cfa,grants:Sfa,recurring:Afa},Rfa="Announcements",Pfa="Banners shown at the top of the marketing site and the console.",_fa="Banners",jfa="Top-of-page banners shown on www and console.",Nfa="New Banner",Dfa="No banners yet. Create one to show a top-of-page announcement.",Mfa="Message",Efa="Supports inline links: [text](https://… or /path). Multiple links allowed.",Ifa="CTA Label",Ofa="CTA Link",Lfa="Severity",Ufa="Audience",Bfa="Starts At",Ffa="Ends At",zfa="Dismissible",qfa="Status",Hfa="Archive",Vfa="Archive this banner? It will no longer be shown to users.",Kfa="New Banner",Gfa="Edit Banner",Wfa="Title",Yfa="Type",Qfa="Content",Xfa="Display type",Zfa="Banner",Jfa="Modal",ega="Draft",tga="Active",nga="Info",aga="Warning",oga="Critical",sga="Console only",rga="Public site only",iga="Both",lga="Hero image",cga="Upload an image, or paste an https URL. Optional. PNG / JPEG / WebP / GIF, up to 5MB.",dga="Upload",uga="Uploading…",mga="Remove",pga="Only PNG, JPEG, WebP and GIF images are supported.",fga="Image must be 5MB or smaller.",gga="Upload failed, please try again.",hga="Title",yga="Body",vga="Action buttons",bga="Button label",xga="Button link",$ga="Style",wga="Add button",kga="Remove",Cga="Primary",Sga="Secondary",Aga="Link",Tga="Simplified Chinese (source)",Rga="Fill in Simplified Chinese only, then translate to other languages in one click.",Pga="Translate to all languages",_ga="Translating…",jga="Other languages (translated, editable)",Nga="Translated {{ok}} languages",Dga="{{failed}} languages failed — fill in manually or retry",Mga="Chinese source changed but translations weren't refreshed — click Translate again or non-Chinese users will see outdated copy.",Ega="Re-show to users who already dismissed it",Iga="Fill in the Simplified Chinese body first.",Oga={title:Rfa,description:Pfa,annTitle:_fa,annDescription:jfa,annNewButton:Nfa,annEmpty:Dfa,annMessage:Mfa,annInlineLinkHint:Efa,annCtaText:Ifa,annCtaUrl:Ofa,annSeverity:Lfa,annAudience:Ufa,annStartsAt:Bfa,annEndsAt:Ffa,annDismissible:zfa,annStatus:qfa,annArchive:Hfa,annArchiveConfirm:Vfa,annCreateTitle:Kfa,annEditTitle:Gfa,annColTitle:Wfa,annColType:Yfa,annColContent:Qfa,annDisplayType:Xfa,annTypeBanner:Zfa,annTypeModal:Jfa,annStatusDraft:ega,annStatusActive:tga,annSevInfo:nga,annSevWarning:aga,annSevCritical:oga,annAudConsole:sga,annAudPublic:rga,annAudAll:iga,annHeroImage:lga,annHeroImageHint:cga,annHeroImageUpload:dga,annHeroImageUploading:uga,annHeroImageRemove:mga,annHeroImageBadType:pga,annHeroImageTooLarge:fga,annHeroImageUploadFailed:gga,annModalTitle:hga,annBody:yga,annActions:vga,annActionLabel:bga,annActionUrl:xga,annActionVariant:$ga,annActionAdd:wga,annActionRemove:kga,annVariantPrimary:Cga,annVariantSecondary:Sga,annVariantLink:Aga,annSourceLocale:Tga,annSourceHint:Rga,annTranslate:Pga,annTranslating:_ga,annOtherLocales:jga,annTranslateDone:Nga,annTranslateParti
819al:Dga,annTranslateStale:Mga,annBumpRevision:Ega,annTranslateNeedSource:Iga},Lga="Operations dashboard",Uga="Real-time overview of platform health, usage, and alerts.",Bga="Refresh",Fga="Refreshing",zga="Updated {{time}}",qga="Loading dashboard",Hga="Failed to load dashboard",Vga="No data",Kga="No traffic yet",Gga="Video fail rate",Wga="Avg latency",Yga="Error types",Qga="No errors",Xga="Model anomalies",Zga="All models healthy",Jga="Components",eha="req",tha="Checkout abandon",nha="Refunds",aha="Chargebacks",oha="First-charge conversion",sha={kpis:"Key metrics",alerts:"Alerts",health:"System health",payment:"Payment health",revenue:"Revenue & growth",trend:"Trend",alertSettings:"Alert settings",leaderboard:"Growth leaderboards"},rha={title:"Referral leaderboard",boardAria:"Select leaderboard",rangeAria:"Select time range",boards:{invites:"Invites",revenue:"Referred revenue"},ranges:{today:"Today","3d":"3d","7d":"7d","30d":"30d"},ofTotal:"of {{total}}",countPair:"{{valid}} / {{total}} valid",empty:"No referrals in this window",failedLoad:"Failed to load leaderboard",validHint:"Valid = normal risk status + active binding"},iha={requests:"Requests",successRate:"Payment success",activeUsers:"Active users",newSignups:"New signups",newSignupsHint:"Apenas usuários normais (exclui sinalizados)",billedCredit:"Billed credit",errorRate:"Error rate",avgLatency:"Avg latency",balance:"Platform balance",vsPrevious:"{{delta}} vs previous",vsYesterday:"vs yesterday",noChange:"No change",successFailed:"{{success}} ok · {{failed}} fail"},lha={today:"Revenue today",trendTitle:"Revenue today vs yesterday",monthDetail:"{{count}} charges · MTD {{mtd}}"},cha={summary:"{{paid}} paid · {{failed}} failed · {{pending}} pending"},dha={paidOfSignups:"{{paid}} first-charged / {{signups}} signups"},uha={healthy:"Healthy",degraded:"Degraded",down:"Down",unknown:"Unknown"},mha={critical:"Critical",warning:"Warning",info:"Info",ok:"Healthy"},pha={operational:"Operational",degraded:"Degraded",down:"Down",upstream:"Upstream channels",gateway:"Gateway",billing:"Billing",jobs:"Job queue",tierReason:{ok:"Healthy",watch:"Watch: nearing threshold",warning:"Warning: over warn line",critical:"Critical: over crit line"}},fha={title:"Active alerts",empty:"All systems operational",activeCount:"{{count}} active alerts",triggeredAt:"Triggered {{time}}",viewDetail:"View detail",acknowledge:"Acknowledge",resolved:"Resolved"},gha={title:"Alert settings",description:"Set warning / critical thresholds for the 6 alert types; ops is notified when a metric crosses the line. Severity is derived from the tier automatically.",enabled:"Enabled",warnThreshold:"Warning threshold",critThreshold:"Critical threshold",cooldown:"Cooldown (min)",cooldownHint:"Minimum gap between two notifications for the same alert, to prevent spam.",rateHint:"Rate, 0–1 (e.g. 0.05 = 5%).",countHint:"Absolute value, ≥ 0.",directionHigher:"Higher is worse: warning ≤ critical.",directionLower:"Lower is worse: warning ≥ critical.",lastFired:"Last fired {{time}}",neverFired:"Never fired",save:"Save all",saving:"Saving",saved:"Alert settings saved",saveError:"Failed to save",readonlyHint:"You have read-only access.",noData:"No alert settings",errors:{directionHigher:"Warning threshold must be ≤ critical threshold",directionLower:"Warning threshold must be ≥ critical threshold",rateRange:"Rate thresholds must be within 0–1",nonNegative:"Thresholds must be ≥ 0",cooldownNonNegative:"Cooldown must be ≥ 0",required:"Threshold is required"},types:{payment_success_rate_low:"Payment success rate low",gateway_error_rate_high:"Gateway error rate high",model_error_spike:"Model error spike",webhook_dead_letter:"Webhook dead letter backlog",system_component_down:"System component down",negative_balance_exposure:"Negative balance exposure"}},hha={label:"Time range",today:"Today",days7:"7 days",days30:"30 days"},yha="{{failed}}/{{total}} jobs",vha="{{delta}}pt vs yesterday",bha="Low sample ({{n}})",xha="Had gateway calls",$ha="Last 7d cohort · normal users only",wha="Refund rate {{rate}}%",kha={funnel:"opened {{opened}} · paid {{paid}}"},Cha={title:Lga,description:Uga,refresh:Bga,refreshing:Fga,lastUpdated:zga,loading:qga,failedLoad:Hga,empty:Vga,noTraffic:Kga,videoFailRate:Gga,avgLatency:Wga,errorTypes:Yga,noErrors:Qga,modelAnomalies:Xga,noAnomalies:Zga,components:Jga,req:eha,abandonRate:tha,refunds:nha,chargebacks:aha,firstChargeConversion:oha,sections:sha,leaderboard:rha,kpi:iha,revenue:lha,orders:cha,conversion:dha,c
819omponentStatus:uha,severity:mha,health:pha,alerts:fha,alertSettings:gha,range:hha,videoJobsDetail:yha,vsYesterdayPt:vha,lowSample:bha,activeUsersHint:xha,conversionCohortHint:$ha,refundRate:wha,checkout:kha},Sha="Loading...",Aha="Admin permission required",Tha="Your account does not have permission to access this administrator page.",Rha={loading:Sha,permissionRequired:Aha,permissionDescription:Tha},Pha="User growth",_ha="Signup rewards, discount codes, referrals, and credit grants. Manual grants live on the Users page.",jha={mobileLabel:"Seção de crescimento",onboarding:"Signup & new users",discount:"Discount codes",referral:"Referral cashback",grants:"Credit grants",topup:"Top-up bonus",redeem:"Código de resgate",tasks:"Task wall"},Nha="Coupon batch",Dha="Promotion rule",Mha="Count",Eha="Batch code",Iha="Creating...",Oha="Create batch",Lha="{{count}} coupon code created",Uha="{{count}} coupon codes created",Bha="Batch {{code}}",Fha="Copied",zha="Copy all",qha="Credit grants",Hha="Source",Vha="Status",Kha="No grants yet",Gha="Coupon redemptions, signup bonuses, and manual grants appear here.",Wha="Time",Yha="User",Qha="Amount",Xha="Signup bonus",Zha="Controls the credit automatically granted to new users. Disable it to stop future signup grants.",Jha="Enable signup credit",eya="Amount (USD)",tya="Save signup bonus",nya="Saving...",aya="Current amount {{amount}}",oya="Referral cashback",sya="Configure double-sided referral rewards, release delay, caps, and billing-page messaging.",rya="Enable referral cashback",iya="Reward tiers",lya="Add tier",cya="Recipient",dya="From day",uya="Until day",mya="Percent",pya="Label",fya="Action",gya="Inviter",hya="Invitee",yya="No end",vya="Remove tier",bya="Release delay (days)",xya="Per-topup cap (USD)",$ya="Min topup (USD, blank = none)",wya="Cashback expiry (days, blank = never)",kya="Billing-page countdown banner",Cya="Banner title",Sya="Subtitle",Aya="Countdown mode",Tya="Global deadline",Rya="Each invitee's 30-day window",Pya="Ends at",_ya="Save referral settings",jya="v{{version}}",Nya="Saving reward tiers, release delay, caps, or expiry publishes a NEW version. Existing referral relationships keep the version they were bound under — only new signups get the new terms. Pausing only affects new signups.",Dya="Version history",Mya="Version",Eya="Status",Iya="Reward tiers",Oya="Published",Lya="Superseded",Uya="current",Bya="Top-up discount codes",Fya="Discount codes lower what users pay at checkout; the full top-up amount is credited only after payment succeeds. Configure here, then generate codes below.",zya="Enable discount codes",qya="Discount type",Hya="Fixed amount off (USD)",Vya="Percentage off (%)",Kya="Amount off (USD)",Gya="Percentage off (0-100)",Wya="Save discount",Yya="Default low-balance alert",Qya="New users get an email low-balance alert at this threshold by default. Changing it only affects future signups, not existing wallets.",Xya="Threshold (USD)",Zya="Save threshold",Jya="Current: {{amount}}",eva="Generate codes against the discount rule above.",tva="In effect: {{state}} · {{value}} off",nva="enabled",ava="disabled",ova="Issued codes",sva="Pick a batch to see who redeemed each code.",rva="No batches yet",iva="Generate a batch above to start tracking redemptions.",lva="Total",cva="Redeemed",dva="Reserved",uva="Available",mva="Codes in {{code}}",pva="No codes in this batch",fva="Code",gva="Redeemed by",hva="Redeemed at",yva="Paid",vva="Discount",bva="Criar códigos",xva="Um código compartilhado é um único código que muitos usuários podem resgatar até N vezes; um lote de códigos únicos são N códigos de uso único.",$va="Tipo de código",wva="Código compartilhado único",kva="Lote de códigos únicos",Cva="Texto do código (deixe em branco para aleatório)",Sva="ex.: WELCOME100",Ava="Total de resgates (N)",Tva="Por usuário",Rva="Expira em (opcional)",Pva="grupo opcional",_va="Criar código compartilhado",jva="Código compartilhado criado",Nva="Usar um desconto para este lote (senão, a regra acima)",Dva="Códigos compartilhados",Mva="Um código, muitos usuários. A contagem de usos registra os resgates pagos.",Eva="Ainda sem códigos compartilhados",Iva="Usados / limite",Ova="Por usuário",Lva="Expira",Uva="Desativar",Bva="Desativar este código?",Fva="Novos checkouts são bloqueados imediatamente. Pedidos jÃ
819¡ em checkout ainda podem ser concluídos.",zva="Código desativado",qva="CSV",Hva="Status",Vva="E-mail",Kva={code:"Código",discount:"Desconto",redeemed:"Resgatado",cap:"Limite",perUser:"Por usuário",status:"Status",expiresAt:"Expira em",batch:"Lote",createdAt:"Criado em",redeemedBy:"Resgatado por",redeemedAt:"Resgatado em",paid:"Pago",discountAmount:"Desconto",email:"Email",credited:"Credited",bonus:"Bonus",paidAt:"Paid at"},Gva="Amount",Wva="Bound at",Yva="Counterparty",Qva="Invitee",Xva="Inviter",Zva="Rate",Jva="Released",eba="Role",tba="Tier",nba="Top-up",aba="Load more",oba="No referrals under this version",sba="No cashback under this version",rba="Referrals",iba="Referral records",lba="Cashback records",cba="Version detail",dba={title:"Top-up bonus",description:"Reward bigger top-ups with bonus credit. Each tier can grant general credit or credit restricted to a model group.",enabled:"Enable top-up bonus",saved:"Top-up bonus saved",tiers:"Bonus tiers",tiersHint:"Top-up matches the highest tier whose threshold it reaches. Restricted credit only applies to synchronous text/image calls — not video or async image jobs.",noTiers:"No tiers yet. Add one to start rewarding top-ups.",min:"Min top-up (USD)",rewardType:"Reward",bonus:"Fixed (USD)",percent:"Percent (%)",rewardBonus:"Bonus amount (USD)",rewardPercent:"Percent of top-up (%)",expiryDays:"Expiry (days, blank = never)",noExpiry:"Never",scope:"Credit scope",scopeHint:"General credit works on any model; a model group restricts the bonus to those models.",scopeGeneral:"General (any model)",removeTier:"Remove tier",addTier:"Add tier",antifraud:"Abuse guards",minTopup:"Min top-up to qualify (USD, blank = none)",maxBonusPerUser:"Max bonus per user (USD, blank = none)",none:"None",excludeRisky:"Exclude watchlisted / blocked users",save:"Save top-up bonus",createScope:"New restricted model group",createScopeDescription:"Pick the models a restricted bonus may be spent on, then reference this group from a tier above.",scopeName:"Group name",scopeNamePlaceholder:"High-margin models",scopeModels:"Models",pickModels:"Pick models",nModels:"{{count}} models",createScopeButton:"Create group",scopeCreated:"Model group created"},uba="Gerar código de resgate",mba="Código de resgate no estilo cartão pré-pago. O usuário insere o código na página de cobrança, e o valor é creditado diretamente no saldo (saldo promocional, sem pagamento).",pba="Nome do lote (opcional)",fba="Ex.: brinde Conf-2026",gba="Quantidade a gerar",hba="Valor por código (USD)",yba="Qtd. resgatável por conta neste lote (vazio = sem limite)",vba="Sem limite",bba="Prazo final para resgate (opcional)",xba="Restrict to models (optional)",$ba="General balance (no restriction)",wba="{{count}} models selected",kba="Blank = general balance. Selected models share one earmarked pool.",Cba="Credit validity after redemption (days, blank = never expires)",Sba="never expires",Aba="{{n}} d",Tba="Models",Rba="Validity",Pba="General balance",_ba="Gerar código de resgate",jba="Salve agora mesmo. Depois, você também pode recuperar pela lista de lotes usando “Exportar em texto”.",Nba="Lotes de códigos de resgate",Dba="Clique em um lote para ver os detalhes de cada código; “Exportar em texto” permite exportar novamente os códigos em texto puro.",Mba="Ainda não há lotes de códigos de resgate",Eba="Lote",Iba="Valor",Oba="Exportar em texto",Lba="Revogar este código já resgatado?",Uba="Recupera do saldo do usuário a parte ainda não consumida; a parte já consumida não pode ser recuperada.",Bba="Revogar",Fba="{{amount}} revogado",zba="Códigos de resgate exportados",qba="Desativar os códigos não resgatados deste lote?",Hba="Todos os códigos ainda não resgatados ficarão inválidos; os já resgatados não serão afetados.",Vba="{{n}} códigos desativados",Kba="Bonus % on top-up",Gba="Bonus (%)",Wba="Bonus validity (days, optional)",Yba="blank = never expires",Qba={view:"Payments",title:"Payments via ····{{code}}",email:"User",credited:"Credited",bonus:"Bonus",summary:"{{count}} payments · {{users}} users · {{paid}} paid · {{bonus}} bonus granted",empty:"No payments through this code yet"},Xba={configTitle:"Task wall config",configDescription:"Amounts, switches and accepted hosts. Task copy lives in the translation files, not here. Changes take effect on the next page load — no deploy.",enabled:"Enable the task wall",tasksTitle:"Tasks",taskKey:"Task key",amount:"Amount (USD)",hosts:"Accepted hosts",hostsHint:"Links outside this list are rejected at submission time.",taskEnabled:"Visible to users",addTask:"Add task",guardsTitle:"Abuse guards",dailyCap:"Daily pending c
819ap",dailyCapHint:"0 = no cap. Fail-open if Redis is down.",minAge:"Minimum account age (days)",minAgeHint:"0 = no age gate.",saved:"Task wall saved",queueTitle:"Submissions",queueCount:"{{count}} shown",empty:"Nothing here.",approve:"Approve & pay",approved:"Approved — credit granted",reject:"Reject",rejected:"Rejected",confirmReject:"Confirm reject",reasonPlaceholder:"Why is this rejected?",duplicate:"Same link from {{count}} other account(s)",status:{pending:"Pending",approved:"Approved",rejected:"Rejected"}},Zba={title:Pha,description:_ha,tabs:jha,couponBatch:Nha,promotionRule:Dha,count:Mha,batchCode:Eha,creating:Iha,createBatch:Oha,codesCreated:Lha,codesCreated_plural:Uha,batch:Bha,copied:Fha,copyAll:zha,creditGrants:qha,source:Hha,status:Vha,noGrants:Kha,noGrantsDescription:Gha,time:Wha,user:Yha,amount:Qha,signupBonus:Xha,signupBonusDescription:Zha,signupBonusEnabled:Jha,signupBonusAmount:eya,saveSignupBonus:tya,saving:nya,currentSignupBonus:aya,referral:oya,referralDescription:sya,referralEnabled:rya,referralRewardTiers:iya,addTier:lya,tierRole:cya,tierFromDay:dya,tierUntilDay:uya,tierPercent:mya,tierLabel:pya,tierAction:fya,roleReferrer:gya,roleReferee:hya,noEndDay:yya,removeTier:vya,releaseDelayDays:bya,referralCap:xya,referralMinTopup:$ya,referralExpiryDays:wya,bannerEnabled:kya,bannerTitle:Cya,bannerSubtitle:Sya,bannerMode:Aya,bannerModeGlobal:Tya,bannerModeWindow:Rya,bannerEndsAt:Pya,saveReferral:_ya,referralVersion:jya,referralPublishHint:Nya,referralVersionHistory:Dya,versionCol:Mya,versionStatus:Eya,versionTiers:Iya,versionPublished:Oya,versionSuperseded:Lya,versionCurrent:Uya,discountRule:Bya,discountRuleDescription:Fya,discountEnabled:zya,discountType:qya,discountFixed:Hya,discountPercent:Vya,discountValueFixed:Kya,discountValuePercent:Gya,saveDiscount:Wya,defaultLowBalanceThreshold:Yya,defaultLowBalanceThresholdDescription:Qya,defaultLowBalanceThresholdAmount:Xya,saveDefaultLowBalanceThreshold:Zya,currentDefaultLowBalanceThreshold:Jya,couponBatchDescription:eva,discountEffective:tva,stateEnabled:nva,stateDisabled:ava,couponTrace:ova,couponTraceDescription:sva,noBatches:rva,noBatchesDescription:iva,batchTotal:lva,batchRedeemed:cva,batchReserved:dva,batchActive:uva,codesInBatch:mva,noCodes:pva,code:fva,redeemedBy:gva,redeemedAt:hva,paid:yva,discount:vva,createIssuance:bva,createIssuanceDescription:xva,formLabel:$va,formShared:wva,formUniqueBatch:kva,sharedCodeText:Cva,sharedCodeRandomHint:Sva,sharedMaxRedemptions:Ava,sharedPerUser:Tva,expiresAt:Rva,batchCodeOptional:Pva,createSharedCode:_va,sharedCodeCreated:jva,batchOwnDiscount:Nva,sharedCodesList:Dva,sharedCodesListDescription:Mva,noSharedCodes:Eva,colRedeemedTotal:Iva,colPerUser:Ova,colExpiry:Lva,disableCode:Uva,disableCodeConfirmTitle:Bva,disableCodeConfirmMessage:Fva,codeDisabled:zva,exportCsv:qva,statusFilter:Hva,filterByEmail:Vva,csv:Kva,colAmount:Gva,colBoundAt:Wva,colCounterparty:Yva,colInvitee:Qva,colInviter:Xva,colRate:Zva,colReleasedAt:Jva,colRole:eba,colTier:tba,colTopup:nba,loadMore:aba,noBindings:oba,noCashback:sba,versionBindings:rba,versionBindingsSection:iba,versionCashbackSection:lba,versionDetail:cba,topup:dba,redeemCreate:uba,redeemCreateDescription:mba,redeemBatchName:pba,redeemBatchNameHint:fba,redeemCount:gba,redeemFaceValue:hba,redeemPerUserLimit:yba,redeemUnlimited:vba,redeemExpiresAt:bba,redeemModels:xba,redeemModelsAll:$ba,redeemModelsCount:wba,redeemModelsHint:kba,redeemValidityDays:Cba,redeemValidityForever:Sba,redeemValidityDaysValue:Aba,redeemColModels:Tba,redeemColValidity:Rba,redeemGeneralBalance:Pba,redeemCreateBtn:_ba,redeemRevealHint:jba,redeemBatches:Nba,redeemBatchesDescription:Dba,redeemNoBatches:Mba,redeemBatchCol:Eba,redeemFace:Iba,redeemReveal:Oba,redeemReverseTitle:Lba,redeemReverseMessage:Uba,redeemReverseBtn:Bba,redeemReversed:Fba,redeemRevealed:zba,redeemDisableBatchTitle:qba,redeemDisableBatchMessage:Hba,redeemBatchDisabled:Vba,discountTypeBonusPercent:Kba,discountValueBonusPercent:Gba,bonusExpiryDays:Wba,bonusExpiryDaysHint:Yba,sharedPayments:Qba,tasks:Xba},Jba="Models",exa="Model catalog: create, edit, publish.",txa={label:"Display badges",hint:"Hot / Benefit tags shown on the user-facing models & pricing page.",hot:"Hot",benefit:"Benefit"},nxa="Add model",axa="Edit {{model}}",oxa="New model",sxa="Close",rxa="Basics & content save together; pricing and status changes apply immediately.",ixa="Create the model draft. Set pricing and publish after it exists.",lxa={basics:"Basics",basicsHint:"Identity, upstream mapping, protocols.",config:"Configuration",configHint:"Identity, upstream routing, type and capabilities.",protocols:"Protocols",protocolsHint:"Which API protocols this model serves.",content:"Content & display",contentHint:"i18n summary / description and sort order."},cxa="Provider slug",dxa="Pick a known provider or type a custom slug.",uxa="Model slug",mxa="Aliases",pxa="Comma-separated lookup aliases for import and review.",fxa="Source (customer-visible)",gxa="Label customers see on the model/logs. Blank = vendor. Use it to distinguish s
819ame-model variants at different prices.",hxa="Platform",yxa="— select platform —",vxa="Upstream model id (optional; choose from upstream or enter manually)",bxa="Choose from upstream...",xxa="Upstream unavailable",$xa="Protocols",wxa="Input price / 1M (USD)",kxa="Output price / 1M (USD)",Cxa="EN summary",Sxa="Preview",Axa="(No summary)",Txa="No protocol",Rxa="Cancel",Pxa="Save",_xa="Create draft",jxa={basic:"Identity & routing",pricing:"Pricing",content:"Content & display"},Nxa={config:"1 · Configuration",protocols:"2 · Protocols",pricing:"3 · Pricing",display:"Content & display",back:"Back",next:"Next",create:"Create model"},Dxa="Context window (tokens)",Mxa="Max input the model accepts. Leave blank if unknown.",Exa="Max output tokens",Ixa="Max tokens the model can generate per response.",Oxa={status:"Status",visibility:"Visibility",hint:"Lifecycle changes apply immediately (with confirmation), separate from Save.",confirmStatus:'Set status to "{{status}}"? Takes effect immediately.',confirmVisibility:'Set visibility to "{{visibility}}"? Takes effect immediately.',statusChanged:"Status set to {{status}}.",visibilityChanged:"Visibility set to {{visibility}}.",publishBlocked:"Cannot publish: core pricing factors are missing. Set them in the Pricing tab first.",statusOption:{draft:"Draft",published:"Published",deprecated:"Deprecated",archived:"Archived"},visibilityOption:{public:"Public",hidden:"Hidden"},availability:"Availability",confirmAvailable:"Mark this model available again? Takes effect immediately.",confirmUnavailable:"Mark this model temporarily unavailable? It stays listed (greyed out) but gateway calls are rejected.",availableChanged:"Model marked available.",unavailableChanged:"Model marked temporarily unavailable.",availabilityOption:{available:"Available",unavailable:"Unavailable"},audience:"Audience",audienceOption:{everyone:"Everyone",paid_only:"Topped-up accounts only"},confirmPaidOnly:"Restrict this model to accounts that have topped up? It stays listed, but users who never paid get a 403 telling them to top up.",confirmEveryone:"Open this model to every account? Takes effect immediately.",paidOnlyChanged:"Model restricted to accounts that have topped up.",everyoneChanged:"Model opened to every account."},Lxa="Input modalities",Uxa="Declares what this model can receive, including vision, audio, video, and file inputs.",Bxa="Output modalities",Fxa="Drives the publish gate: text requires text in/out pricing, image/video/embeddings require their factors.",zxa="Image billing style",qxa="Video billing style",Hxa="How the upstream charges for this output. Required before publishing — the gate demands the matching price factor.",Vxa="— select billing style —",Kxa="Per token (image_output_token)",Gxa="Per image (per_call_image)",Wxa="Per second (video_per_second)",Yxa="Per call (video_per_call)",Qxa="Display order",Xxa="Must be a non-negative integer.",Zxa="Editing locale",Jxa="Upstream release date",e$a="Summary (this locale)",t$a="Description (Markdown, this locale)",n$a={provider:"Provider",status:"Status",visibility:"Visibility",allStatuses:"All model statuses",allVisibility:"All visibility",allProviders:"All providers",search:"Search model slug",mobileTitle:"Filtros"},a$a={label:"Models",empty:"No models",model:"Model",provider:"Provider",source:"Source",status:"Status",visibility:"Visibility",action:"Action",edit:"Edit",setStatus:"Set status for {{model}}",setVisibility:"Set visibility for {{model}}",confirmSet:'Set {{model}} {{field}} to "{{value}}"?',sub2api:"Sub2API mapping",textPrice:"Price (in / out $/M)",priceByTokens:"{{kind}} · per-token",imageOutput:"image out",officialPrice:"List",saved:"-{{pct}}%"},o$a={invalidPrice:"Price must be a number greater than or equal to 0, or left blank.",highRisk:"This change affects live gateway routing and may cause 404s. Continue?",stale:"This model was changed by someone else. Close and reopen it before editing again."},s$a={savesImmediately:"Pricing changes apply immediately and are not controlled by Save.",createPriceFailed:"Model created, but some prices were not saved. Add them in the Pricing tab.",factors:{title:"Pricing factors",hint:"Each row is an atomic unit (text input/output, cache, image, …). Active rows determine billing from their effective date; history rows record past prices.",liveBanner:"Changes here apply immediately and are recorded in price history — they are not controlled by the bottom Save button.",draftHint:"Save the model draft first; pricing factors are edited inline after the model exists.",addFactor:"Add factor",changePrice:"Change price",expire:"Expire",confirmExpire:"Expire this factor row? It will stop applying immediately and move to history.",changeSaved:"Factor price updated.",expired:"Factor expired.",factor:"Factor",tier:"Tier",tierNone:"(no tier)",unit:"Unit",ourPrice:"Our price (USD)",officialPrice
819:"Official (USD)",officialAbbr:"official",source:"Source (optional URL or note, ≤128 chars)",historyLabel:"History ({{count}})",emptyTitle:"No active factor prices",empty:'Click "Add factor" to set one.',loadError:"Could not load pricing factors",draftEditorHint:"Set prices now, or leave empty and add them after the model is created.",draftEmpty:"No prices added yet.",remove:"Remove",factorOption:{text_input:"Text input (LLM)",text_output:"Text output (LLM)",cache_read:"Cache read",cache_write_5m:"Cache write (5m TTL)",cache_write_1h:"Cache write (1h TTL)",image_input_token:"Image input token",image_output_token:"Image output token",per_call_image:"Image (per call)",video_per_call:"Video (per call)",video_per_second:"Video (per second)",web_search_call:"Web search call"},unitOption:{per_1m_tokens:"per 1M tokens",per_image:"per image",per_call:"per call",per_second:"per second"},conditions:"Conditions JSON (optional)"},discount:{toggle:"Apply discount",hint:"Set every factor to a fraction of its official price (0.5 = 50% off). Free factors (our price 0) and factors with no official price are skipped.",rate:"Discount rate",preview:"Preview",apply:"Apply",allowMarkup:"Allow markup (rate above 1 prices above official)",noFactors:"No active factors to reprice.",confirmTitle:"Apply discount to all factors?",confirmBody:"Reprice {{count}} factor(s) to {{rate}}× the official price. This is versioned — historical billing is unaffected.",applied:"Repriced {{count}} factor(s) at {{rate}}× official.",stale:"Prices changed since the preview — please preview again.",skipReason:{free_factor_our_zero:"Free factor (our price is 0) — left unchanged",no_official:"No official price — cannot compute",official_zero:"Official price is 0 — skipped"}}},r$a="Discard unsaved changes?",i$a="Editar modelo",l$a={title:Jba,description:exa,badges:txa,addModel:nxa,editModel:axa,newModel:oxa,close:sxa,sheetDescription:rxa,sheetDescriptionNew:ixa,sections:lxa,providerSlug:cxa,providerSlugHint:dxa,modelSlug:uxa,aliases:mxa,aliasesHint:pxa,source:fxa,sourceHint:gxa,platform:hxa,platformUnset:yxa,sub2apiModelId:vxa,chooseSub2api:bxa,upstreamUnavailable:xxa,protocols:$xa,inputPrice:wxa,outputPrice:kxa,enSummary:Cxa,preview:Sxa,noSummary:Axa,noProtocol:Txa,cancel:Rxa,save:Pxa,createDraft:_xa,tabs:jxa,steps:Nxa,contextWindow:Dxa,contextWindowHint:Mxa,maxOutputTokens:Exa,maxOutputTokensHint:Ixa,lifecycle:Oxa,inputModalities:Lxa,inputModalitiesHint:Uxa,outputModalities:Bxa,outputModalitiesHint:Fxa,billingStyleImage:zxa,billingStyleVideo:qxa,billingStyleHint:Hxa,billingStyleUnset:Vxa,billingStyleToken:Kxa,billingStylePerImage:Gxa,billingStylePerSecond:Wxa,billingStylePerCall:Yxa,displayOrder:Qxa,displayOrderInvalid:Xxa,contentLocale:Zxa,upstreamReleaseAt:Jxa,summary:e$a,descriptionField:t$a,filters:n$a,table:a$a,errors:o$a,pricing:s$a,discardChanges:r$a,editModelShort:i$a},c$a="Rate Limits",d$a="Rate limit policies by scope.",u$a="Rate limit policies",m$a="No policies",p$a="Code",f$a="Name",g$a="Scope",h$a="Status",y$a="Limits",v$a="No limits",b$a={auth:"Auth",console:"Console",api_gateway:"API gateway",ops:"Ops",global:"Global"},x$a={active:"Active",disabled:"Disabled",archived:"Archived"},$$a={rpm_per_key:"RPM / key",rpm_per_user:"RPM / user",concurrent_streams_per_key:"Streams / key",concurrent_streams_per_user:"Streams / user"},w$a="New policy",k$a="Edit",C$a="Action",S$a="New rate limit policy",A$a="Edit {{name}}",T$a="Concurrency and RPM limits applied per API key and per user. Assign a policy to users on the Users page.",R$a='Delete policy "{{name}}"? Keys and users on it fall back to their default.',P$a="Policy deleted.",_$a={identity:"Identity",classification:"Classification",description:"Description",codeImmutable:"Code cannot be changed after creation.",limitsHint:"Leave blank to use the platform default for that limit.",default:"default",invalidLimit:"{{field}} must be a positive integer.",saved:"Policy saved.",cancel:"Cancel",save:"Save",create:"Create policy"},j$a={title:c$a,description:d$a,label:u$a,empty:m$a,code:p$a,name:f$a,scope:g$a,status:h$a,limits:y$a,noLimits:v$a,scopes:b$a,statuses:x$a,limitNames:$$a,add:w$a,edit:k$a,delete:"Delete",action:C$a,newTitle:S$a,editTitle:A$a,formDescription:T$a,confirmDelete:R$a,deleted:P$a,form:_$a},N$a="Admins",D$a="Who can sign in to the admin console. Owner-only.",M$a="Admins",E$a="No admins yet",I$a="Email",O$a="Name",L$a="Role",U$a="Status",B$a="Last login",F$a="Action",z$a="Add admin",q$a="Add admin",H$a="The email becomes an admin immediately and signs in with it — admin access is matched by email. It does not need an account yet.",V$a="Email",
819K$a="[email protected]",G$a="Name",W$a="Display name",Y$a="Role",Q$a="Admin added.",X$a="Change role",Z$a="Role updated.",J$a="Suspend",ewa="Activate",twa="Status updated.",nwa="Remove",awa="Admin removed.",owa="Remove {{email}} as an admin? They lose console access immediately.",swa="You",rwa="Never",iwa={owner:"Owner",admin:"Admin",support:"Support"},lwa={active:"Active",suspended:"Suspended"},cwa={title:N$a,description:D$a,label:M$a,empty:E$a,email:I$a,name:O$a,role:L$a,status:U$a,lastLogin:B$a,action:F$a,add:z$a,newTitle:q$a,formDescription:H$a,emailLabel:V$a,emailPlaceholder:K$a,nameLabel:G$a,namePlaceholder:W$a,roleLabel:Y$a,added:Q$a,changeRole:X$a,roleChanged:Z$a,suspend:J$a,activate:ewa,statusChanged:twa,remove:nwa,removed:awa,confirmRemove:owa,self:swa,never:rwa,roles:iwa,statuses:lwa},dwa="Upstream",uwa="Read-only upstream configuration mirror plus controlled OneHop routing pools.",mwa="Open upstream admin",pwa="Upstream tabs",fwa={overview:"Overview",keyPools:"Key pools",groups:"Groups",channels:"Channels",accounts:"Accounts"},gwa={todayRequests:"Today requests",total:"{{value}} total",upstreamCostToday:"Upstream cost today",providerAccounts:"Provider accounts",health:"Health",stale:"stale",checkPools:"check pools",online:"online"},hwa={upstreamStatsFailed:"Upstream stats failed to load",retry:"Retry",configAuditFailed:"Config audit failed",keyPoolsLoadFailed:"Key pools failed to load",createKeyPoolFailed:"Create key pool failed",keyPoolTestFailed:"Key pool test failed",keyPoolRotateFailed:"Key pool rotate failed",failedLoad:"{{title}} failed to load"},ywa={title:"Config audit",description:"Compares OneHop key pools and published model routing against upstream routing. Provider groups, channels, pricing, and accounts remain read-only here.",running:"Running...",run:"Run audit",poolsChecked:"Pools checked",modelAudit:"Model audit",checkedAt:"Checked at",needsReview:"needs review",done:"done",ok:"ok",upstreamCoverage:"Cobertura de upstream",coverageUnchecked:"contas ilegíveis",coverageOnlyAccount:"apenas {{accounts}}",coverageNoAccount:"Nenhuma conta agendável mapeia este ID de upstream"},vwa={title:"Topology",keyPools:"Key pools",activeGroups:"Active groups",activeChannels:"Active channels",accounts:"Accounts",editingBoundaryTitle:"Editing boundary",editingBoundaryDescription:"The upstream admin exposes deep edit workflows for groups, channels, pricing rules, provider accounts, monitoring, and system settings. OneHop intentionally mirrors only the operational read path and owns internal key pools, so edits that change provider routing still happen in the original admin."},bwa={title:"OneHop internal key pools",description:"Pools select which upstream internal key OneHop uses per protocol and model pattern. Full secrets are never displayed.",poolCode:"Pool code",poolName:"Pool name",defaultPool:"Default pool",notDefault:"Not default",plaintextKey:"Plaintext key",create:"Create",label:"Provider routing key pools",pool:"Pool",protocols:"Protocols",models:"Models",routingGroup:"Routing group",status:"Status",health:"Health",key:"Key",lastCheck:"Last check",action:"Action",priority:"priority {{value}}",default:"default",secret:"secret",hidden:"hidden",test:"Test",rotate:"Rotate",empty:"No key pools",emptyDescription:"Create an internal pool before routing production traffic through provider routing.",newPlaintextKey:"New plaintext key",confirmRotate:"Confirm rotate",editProtocols:"Edit protocols",editProtocolsTitle:"Edit protocols (replace)",confirmEditProtocols:"Save protocols",cancelEditProtocols:"Cancel",forceEditProtocols:"Force save (override routing check)"},xwa={editUpstreamConfig:"Edit upstream config",groupsTitle:"Groups",groupsDescription:"Routing buckets from upstream config. OneHop uses these as source-of-truth context for key-pool binding and audit decisions.",groupsLabel:"Routing groups",groupsEmpty:"No groups",groupsEmptyDescription:"Upstream config did not return any groups.",channelsTitle:"Channels",channelsDescription:"Provider channel configuration from upstream config, including model mappings and pricing rule coverage.",channelsLabel:"Provider routing channels",channelsEmpty:"No channels",channelsEmptyDescription:"Upstream config did not return any channels.",accountsTitle:"Accounts",accountsDescription:"Provider accounts are redacted in OneHop. Use the upstream admin for credential edits and OAuth refresh flows.",accountsLabel:"Provider routing accounts",accountsEmpty:"No accounts",accountsEmptyDescription:"Upstream config did not return any provider accounts."},$wa={group:"Group",platform:"Platform",rate:"Rate",rpm:"RPM",accounts:"Accounts",limits:"Limits",status:"Status",updated:"Updated",channel:"Channel",billingSource:"Billing source",mappings:"Mappings",pricing:"Pricing",account:"Account",groups:"Groups",baseUrl:"Base URL",capacity:"Capacity",lastUsed:"Last used"},wwa={noDescription:"No description",unlimited:"unlimited",schedulable:"schedulable",notSchedulable:"not schedulable",loading:"Loading...",noPricingRules:"No pricing rules",modelsCount:"{{count}} models",none:"none",channelMapped:"Channel mapped",requestedModel:"Requested model",upstreamModel:"Upstream model",priority:"priority",unknown:"unknown"},kwa={serving:{label:"Serving state",serving:"Serving",rate_limited:"Rate-limited",overloaded:"Overloaded",expired:"Expired",paused:"Paused",error:"Error",disabled:"Disabled"},quota:{label:"Quota (today)",noLimit:"no limit",spend:"{{spend}} / {{limit}}"},accounts:{breakdown:"{{normal}} normal · {{error}} error · {{ratelimit}} limited · {{overload}} overload"},freshness:{updated:"updated {{ago}}",never:"never"},pools:{lastError:"Last error",resync:"Resync"},audit:{poolFindings:"Pool findings",clean:"clean",findingsCount:"{{count}} issue(s)"},tokensToday:"{{count}} tok today"},Cwa={title:dwa,description:uwa,openUpstreamAdmin:mwa,tabsLabel:pwa,tabs:fwa,metrics:gwa,errors:hwa,audit:ywa,topology:vwa,pools:bwa,readonly:xwa,table:$wa,common:wwa,ops:kwa},Swa="Platform usage",Awa="Cross-user request metering with cost, token, latency, and routing signals.",Twa="Refresh",Rwa={label:"Auto refresh",off:"Off"},Pwa="Exporting",_wa="Export CSV",jwa="Failed to export usage records",Nwa="Requests",Dwa="{{count}} successful",Mwa="Users",Ewa="Matched by current filters",Iwa="Billed credit",Owa="{{cost}} upstream cost",Lwa="Tokens",Uwa="Avg {{duration}}",Bwa="User email",Fwa="Search by email",zwa="Model",qwa="Search by model",Hwa="Status",Vwa="Protocol",Kwa="Rows",Gwa="Reset",Wwa="Ops usage records",Ywa="No usage records",Qwa="User",Xwa="Endpoint",Zwa="{{count}} total",Jwa="In {{input}} / out {{output}}",e0a="Upstream",t0a="Billed",n0a="Latency",a0a="Started",o0a="Page {{page}} · showing {{shown}} of {{total}} matching records",s0a="Previous",r0a="Next",i0a="{{count}} rows on this page",l0a="Times shown in",c0a="{{count}} API keys",d0a="Spend snapshot",u0a="from OneHop billing snapshot",m0a="User spend",p0a="total billed to users",f0a="Avg latency",g0a="settled requests",h0a="Range",y0a={today:"Today",days7:"7 days",days30:"30 days",all:"All time"},v0a="Metric",b0a={cost:"Spend",tokens:"Tokens",requests:"Requests"},x0a="Distribution",$0a={model:"Modelo",requestedModel:"Requested model",upstreamModel:"Upstream model",apiKey:"API key",user:"User",endpoint:"Endpoint",channel:"Channel",group:"Group",stream
819:"Transport (stream/sync)"},w0a="Usage trend",k0a="Usage by model",C0a="Hourly",S0a="Daily",A0a="Top endpoints",T0a="Top dimension rows",R0a="Request logs",P0a="API key",_0a="Type",j0a="Billing",N0a="Channel",D0a="Group",M0a="Request ID",E0a="req_ / usg_ / upstream",I0a="All types",O0a="All billing",L0a={user:"User",time:"Time",model:"Model",tokens:"Tokens",cost:"Spend",routing:"Routing",latency:"Latency",status:"Status",duration:"Duration"},U0a="Failed to load usage",B0a="Loading usage records",F0a="Try a different filter set.",z0a="No trend data",q0a="No distribution data",H0a="No rows",V0a="Spend breakdown",K0a={upstreamList:"Upstream list",discount:"Discount",sub2apiActual:"Sub2API actual",groupChannelMultiplier:"Group/channel multiplier",accountMultiplier:"Account multiplier",sub2apiFinalCharge:"Final spend",billedFactors:"Billed to user"},G0a="Request detail",W0a="Unknown user",Y0a="Loading...",Q0a="Sub2API actual",X0a="Group multiplier",Z0a="Account multiplier",J0a="Identity",eka="User ID",tka="Key suffix",nka={hopIdentity:"Hop identity",logicalUsageId:"Logical usage ID",logicalRequestedModel:"Logical requested model",logicalModel:"Logical model",actualRequestedModel:"Actual requested model",actualModel:"Actual model",fallbackHop:"Fallback hop",userVisibility:"User visibility",visible:"Visible",hidden:"Hidden",supersedesUsageRecord:"Supersedes record",pricingAudit:"Continuity pricing audit",mode:"Mode",policyVersion:"Policy version",sourceModel:"Source model",targetModel:"Target model",requestedRawQuote:"Requested raw quote",requestedQuote:"Requested quote",actualPricingStatus:"Actual pricing status",actualPricingAvailable:"Available",actualPricingUnavailable:"Unavailable",actualQuote:"Actual quote",chargedQuote:"Charged quote",variance:"Quote variance",actualPricingError:"Actual pricing error"},aka="Input",oka="Output",ska="Cache read",rka="Cache write",ika="Raw metadata",lka="Request",cka="Usage ID",dka="OneHop ID",uka="Sub2API ID",mka="Sub2API log",pka="Routing",fka="Mapping",gka="Performance",hka="First token",yka="Total",vka="Error",bka="Code",xka="Message",$ka={time:"Time",user:"User",apiKey:"API key",model:"Model",logicalUsageId:"Logical usage ID",logicalRequestedModel:"Logical requested model",logicalModel:"Logical model",actualRequestedModel:"Actual requested model",actualModel:"Actual model",fallbackHop:"Fallback hop",userVisible:"User visible",supersedesUsageRecord:"Supersedes usage record",upstreamModel:"Upstream model",protocol:"Protocol",endpoint:"Endpoint",type:"Type",status:"Status",inputTokens:"Input tokens",outputTokens:"Output tokens",cacheRead:"Cache read",cacheWrite:"Cache write",sub2apiActual:"Sub2API actual",sub2apiCharge:"Spend",continuityMode:"Continuity mode",continuityPolicyVersion:"Continuity policy version",continuitySourceModel:"Continuity source model",continuityTargetModel:"Continuity target model",continuityRequestedRawQuote:"Continuity requested raw quote",continuityRequestedQuote:"Continuity requested quote",continuityActualPricingStatus:"Continuity actual pricing status",continuityActualQuote:"Continuity actual quote",continuityChargedQuote:"Continuity charged quote",continuityVariance:"Continuity quote variance",continuityActualPricingError:"Continuity actual pricing error",durationMs:"Duration ms",channel:"Channel",group:"Group",onehopRequestId:"OneHop request ID",sub2apiRequestId:"Sub2API request ID",firstTokenMs:"First token ms"},wka={analytics:"Usage analytics",logs:"Request logs"},kka={label:"Chart view",stacked:"Over time",ranking:"Ranking"},Cka={failedOnly:"Failed only",slowOnly:"Slow > {{sec}}s"},Ska="More filters",Aka="Slow threshold (ms)",Tka="No model usage",Rka="No requests yet — usage will appear here as traffic comes in.",Pka="Viewing",_ka="streaming requests",jka="Avg duration",Nka="Latency = time to first token (TTFT); Duration = total. The slow filter uses TTFT and only covers successful requests with a recorded first token (earlier or failed requests show —).",Dka="Open request detail",Mka={title:Swa,description:Awa,refresh:Twa,autoRefresh:Rwa,exporting:Pwa,exportCsv:_wa,exportError:jwa,requests:Nwa,successful:Dwa,users:Mwa,matchedFilters:Ewa,billedCredit:Iwa,upstreamCost:Owa,tokens:Lwa,avgDuration:Uwa,userEmail:Bwa,searchEmail:Fwa,model:zwa,searchModel:qwa,status:Hwa,protocol:Vwa,rows:Kwa,reset:Gwa,label:Wwa,empty:Ywa,user:Qwa,endpoint:Xwa,totalTokens:Zwa,inOut:Jw
819a,upstream:e0a,billed:t0a,latency:n0a,started:a0a,pageSummary:o0a,previous:s0a,next:r0a,rowsOnPage:i0a,timesShownIn:l0a,apiKeys:c0a,sub2apiCharge:d0a,sub2apiChargeSource:u0a,userSpend:m0a,userSpendSource:p0a,avgLatency:f0a,settledRequests:g0a,range:h0a,ranges:y0a,metric:v0a,metrics:b0a,distribution:x0a,breakdown:$0a,usageTrend:w0a,stackedByModel:k0a,hourly:C0a,daily:S0a,topEndpoints:A0a,topDimensionRows:T0a,requestLogs:R0a,apiKey:P0a,type:_0a,billing:j0a,channel:N0a,group:D0a,requestId:M0a,requestIdPlaceholder:E0a,allTypes:I0a,allBilling:O0a,table:L0a,failedLoad:U0a,loadingRecords:B0a,tryDifferentFilters:F0a,noTrendData:z0a,noDistributionData:q0a,noRows:H0a,costBreakdown:V0a,adminCost:K0a,requestDetail:G0a,unknownUser:W0a,loading:Y0a,sub2apiActual:Q0a,groupMultiplier:X0a,accountMultiplier:Z0a,identity:J0a,userId:eka,keySuffix:tka,continuity:nka,input:aka,output:oka,cacheRead:ska,cacheWrite:rka,rawMetadata:ika,request:lka,usageId:cka,onehopId:dka,sub2apiId:uka,sub2apiLog:mka,routing:pka,mapping:fka,performance:gka,firstToken:hka,total:yka,error:vka,code:bka,message:xka,csv:$ka,tabs:wka,modelView:kka,chip:Cka,moreFilters:Ska,slowThreshold:Aka,noModelUsage:Tka,noTrendToday:Rka,viewing:Pka,avgLatencySub:_ka,avgTotalDuration:jka,latencyHint:Nka,openRequestDetail:Dka},Eka="Search",Ika="Search by user ID, email, or name",Oka="User",Lka="Back to users",Uka="You do not have permission to view this section.",Bka="Refund",Fka="Refunding...",zka="Initiate a refund of {{amount}} for {{email}}? Refunds are processed asynchronously; the balance updates after the worker runs.",qka="Refund initiated.",Hka={overview:"Overview",network:"Network & Device",recentCalls:"Recent Calls",apiKeys:"Chaves de API",payments:"Payments",refunds:"Refunds",subscription:"Subscription",referrals:"Referrals",rewards:"Rewards",audit:"Audit"},Vka={title:"Free token allowance",paused:"Free token grants are paused on this account (risk review).",daily:"Daily",weekly:"Weekly",tokensUnit:"tokens",remaining:"{{value}} tokens remaining today"},Kka={title:"Free model quota (today)",tokens:"tokens",remaining:"{{value}} tokens remaining today",unlimited:"Free quota: unlimited (gate disabled)",eligibilityLabel:"Free tier eligibility",eligible:"Free tier",ineligible:"Ineligible (same device used)"},Gka={phase2:"Subscriptions are coming in Phase 2."},Wka={empty:"No payments"},Yka={empty:"No refunds"},Qka={empty:"No credit buckets",note:"Credit buckets show current balance inventory. Grant and refund history appear in the Audit timeline; referral rewards in the Referrals section."},Xka={totalEarned:"Total earned",frozenEarned:"Frozen",refereeCount:"Referees",activeCount:"Active",role:"Role",counterparty:"Counterparty",empty:"No referral activity"},Zka={empty:"No audit records"},Jka={amount:"Amount",credit:"Credit",status:"Status",provider:"Provider",createdAt:"Created",type:"Type",originalTx:"Original tx",remaining:"Remaining",initial:"Initial",expiresAt:"Expires",event:"Event",action:"Action",severity:"Severity"},eCa={ipLocationTitle:"IP e localização",deviceBrowserTitle:"Dispositivo e navegador",stripeTitle:"Stripe",signupIp:"IP de cadastro",signupCountry:"País de cadastro",lastLoginIp:"IP do último login",ipDifferent:"Diferente do IP de cadastro",sameIpAccounts_one:"{{count}} conta com o mesmo IP de cadastro",sameIpAccounts_other:"{{count}} contas com o mesmo IP de cadastro",sameDeviceAccounts_one:"{{count}} conta no mesmo dispositivo",sameDeviceAccounts_other:"{{count}} contas no mesmo dispositivo",deviceFingerprint:"Impressão digital do dispositivo",freeTierEligible:"Elegibilidade ao plano gratuito",firstDevice:"Primeira no dispositivo",notFirstDevice:"Não é a primeira no dispositivo — sem benefícios gratuitos",browser:"Navegador",os:"OS",deviceType:"Tipo de dispositivo",acceptLanguage:"Accept-Language",stripeCustomerId:"Stripe Customer ID",viewOnIpinfo:"Ver no ipinfo.io"},tCa={empty:"Ainda sem chamadas",viewAll:"Ver todos os logs →",colStatus:"Status",colTime:"Hora",colModel:"Modelo",colProtocol:"Protocolo",colDuration:"Duração",colCost:"Custo",colFreeDiscount:"Crédito gratuito"},nCa={empty:"Ainda não há API keys",colName:"Nome",colKey:"Key",colStatus:"Status",colPolicy:"Política de limite de uso",colLastUsed:"Último uso",colCreated:"Criada",colExpires:"Expira em",colSpend:"Gasto",spendTitle:"Detalhamento do gasto",spend30d:"Últimos 30 dias",spendAllTime:"Total",spendRequests:"Requisições"},aCa="Copiar",oCa="Copiado",sCa={search:Eka,searchPlaceholder:Ika,title:Oka,backToList:Lka,noBlockPerm:Uka,refund:Bka,refunding:Fka,refundConfirm:zka,refundInitiated:qka,nav:Hka,freeTokens:Vka,freeQuota:Kka,subscription:Gka,payments:Wka,refunds:Yka,rewards:Qka,referrals:Xka,audit:Zka,col:Jka,network:eCa,recentCalls:tCa,apiKeys:nCa,copy:aCa,copied:oCa},rCa="Users",iCa="Search users, grant credit, and suspend accounts.",lCa="Email",cCa="Search by email",dCa="Account status",uCa={active:"Conta ativa; pode entrar e chamar o gateway",suspended:"Suspensa; o gateway rejeita todas as solicitações (401)"},mCa="Risk",pCa={normal:"Elegível para todos os benefícios gratuitos",watchlisted:"Sem tokens gratuitos nem bônus de cadastro; ainda pode recarregar e chamar o gateway",blocked:"O gateway rejeita todas as solicitações (401); banimento total"},fCa="Users",gCa="No users found",hCa="Country",yCa="Last login",vCa="Action",bCa="View",xCa="Deleted",$Ca="Set status for {{email}}",wCa='Set {{email}} to "{{status}}"?',kCa="Grant credit",CCa="Add bonus credit to {{email}}. Recorded in the ledger.",SCa="Amount (USD)",ACa="e.g. 5",TCa="Reason (optional)",RCa="e.g. compensation for downtime",PCa="Type",_Ca="Bonus credit",jCa="A gift. Does not count as a top-up.",NCa="Offline payment",DCa="Money we actually received. Counts as a top-up: unlocks paid-only models and rate-limit tiers.",MCa="Reference no.",ECa="e.g. bank slip 20260907-001",ICa="Record payment",OCa="Recording...",LCa="Cancel",UCa="Granting...",BCa="Grant",FCa="Grant ${{amount}} to {{email}}? This is a large amount.",zCa="No display name",qCa="Loading...",HCa="score {{score}}",VCa="Email verified",KCa="Yes",GCa="No",WCa="Signup",YCa="Signup method",QCa="Last login method",XCa="Signup bonus",ZCa="Onboarding",JCa="Locale / TZ",e1a="Markup ratio",t1a="Rate limit policy",n1a="Rate limit policy updated.",a1a="Joined",o1a="Never",s1a="Balance",r1a="Wallet & spend",i1a="Total spent",l1a="Recharged",c1a="Bonus granted",d1a="Refunded",u1a="Requests",m1a="Tokens",p1a="Actions",f1a="Identity & risk",g1a="Role",h1a="No permitted actions for your role.",y1a="Acquisition source",v1a="Acquisition by source",b1a="Direct / unknown",x1a="Custom source…",$1a="Set",w1a="Auto-detected: {{source}}",k1a="UTM",C1a="Referred by",S1a="Nota",A1a="Adicione uma nota para identificar este usuário",T1a="Salvar nota",R1a="Nota salva",P1a="Sem nota",_1a="Filtros",j1a="Location",N1a="Preferred locale",D1a={title:rCa,description:iCa,email:lCa,searchEmail:cCa,status:dCa,statusEffect:uCa,risk:mCa,riskEffect:pCa,label:fCa,empty:gCa,country:hCa,lastLogin:yCa,action:vCa,view:bCa,deleted:xCa,setStatusAria:$Ca,setStatusConfirm:wCa,grantCredit:kCa,grantDescription:CCa,amountUsd:SCa,amountPlaceholder:ACa,reason:TCa,reasonPlaceholder:RCa,grantKind:PCa,grantKindBonus:_Ca,grantKindBonusHint:jCa,grantKindOffline:NCa,grantKindOfflineHint:DCa,referenceNo:MCa,referenceNoPlaceholder:ECa,recordPayment:ICa,recording:OCa,cancel:LCa,granting:UCa,grant:BCa,largeGrantConfirm:FCa,noDisplayName:zCa,loading:qCa,score:HCa,emailVerified:VCa,yes:KCa,no:GCa,signup:WCa,signupMethod:YCa,lastLoginMethod:QCa,signupBonus:XCa,onboarding:ZCa,localeTz:JCa,markupRatio:e1a,rateLimitPolicy:t1a,rateLimitPolicyChanged:n1a,joined:a1a,never:o1a,walletBalance:s1a,walletSection:r1a,consumed:i1a,recharged:l1a,bonusGranted:c1a,refunded:d1a,requests:u1a,tokens:m1a,actionsSection:p1a,identitySection:f1a,role:g1a,noPermittedActions:h1a,acquisitionSource:y1a,acquisitionTitle:v1a,sourceDirect:b1a,sourceCustomPlaceholder:x1a,sourceSet:$1a,sourceCaptured:w1a,utm:k1a,referrer:C1a,note:S1a,notePlaceholder:A1a,noteSave:T1a,noteSaved:R1a,noteEmpty:P1a,filters:_1a,location:j1a,preferredLocale:N1a},M1a="Webhooks",E1a="Stripe webhook events. Status filter, retry, payload inspection.",I1a="Status",O1a="Event type",L1a="Received",U1a="Event type",B1a="Status",F1a="Mode",z1a="Attempts",q1a="Retry",H1a="Retry queued",V1a="Event {{event}} reset to pending; next job tick will process.",K1a="Retry failed",G1a="No webhook events yet.",W1a="Stripe events will appear here once your endpoint is registered.",Y1a="Loading payload...",Q1a="Last error",X1a="Payload (JSON)",Z1a={title:M1a,description:E1a,statusFilter:I1a,eventTypeFilter:O1a,receivedAt:L1a,eventType:U1a,status:B1a,mode:F1a,attempts:z1a,retry:q1a,retrySubmittedTitle:H1a,retrySubmittedBody:V1a,retryFailedTitle:K1a,empty:G1a,emptyHint:W1a,detailLoa
819ding:Y1a,lastError:Q1a,payload:X1a},J1a="API Keys",eSa="Crie seu primeiro key em 10 segundos",tSa="Falha ao copiar",nSa={label:"Modelos permitidos",allModels:"Todos os modelos",allHint:"Todos os modelos do catálogo estão permitidos.",noModels:"Nenhum modelo disponível.",selected:"{{count}} selecionados",someHint:"{{count}} modelo(s) permitido(s)."},aSa={label:"Tags",placeholder:"Adicione uma tag e pressione Enter",remove:"Remover"},oSa="Crie keys com escopo para produção, staging e fluxos de equipe.",sSa="Atualizar",rSa="Key padrão",iSa="Nome da key",lSa="Criando...",cSa="Criar key",dSa="Key completa, exibida uma vez",uSa="Copiar API key",mSa="Copiado",pSa="Copiar",fSa="Copie e guarde agora. Depois de fechar este painel, a key completa não poderá ser vista novamente.",gSa="Já salvei",hSa="Falha ao carregar API keys",ySa="Tentar novamente",vSa="Ainda não há API keys",bSa="Crie sua primeira key para começar a enviar requisições pelo OneHop.",xSa={label:"API keys",tags:"Tags",name:"Nome",key:"Key",status:"Status",created:"Criada",action:"Ação",usage:"Uso",quota:"Cota",expires:"Expira em",lastUsed:"Último uso"},$Sa="Revogar",wSa="Revogar {{name}}? Esta ação não pode ser desfeita.",kSa="Dê um nome ao key. Limites e expiração ficam nas configurações avançadas, salvo quando você precisar deles.",CSa="Limite mensal de credit",SSa="Expira em",ASa="Ilimitado",TSa="Salvando...",RSa="Salvar",PSa="Cancelar",_Sa={title:"Desabilitadas e revogadas",description:"Keys desativadas ou revogadas. Reative uma desabilitada ou mantenha as revogadas como registro."},jSa={title:"Nenhuma key ativa",description:"Reative uma key desabilitada abaixo ou crie uma nova."},NSa={import:"Importar para CCS",client:"Cliente CC-Switch",codex:"Codex / OpenAI",claude:"Claude Code",pasteHint:"O CC Switch foi aberto com um marcador. Cole ali sua API key salva.",checking:"Verificando compatibilidade…",blocked:{title:"{{client}} não pode usar esta chave",body:"“{{keyName}}” permite apenas modelos que {{client}} não pode usar. A importação resultará em erros.",adjust:"Ajustar escopo de modelos",forceImport:"Importar mesmo assim (não funcionará)"},pin:{title:"Importar como {{model}} para {{client}}",body:"“{{keyName}}” não inclui o modelo padrão de {{client}}. Veja como as solicitações de {{client}} serão roteadas por este provedor:",adjust:"Ajustar escopo de modelos",confirm:"Importar com {{model}}"}},DSa={search:"Buscar",searchPlaceholder:"Buscar nome ou sufixo do key",status:"Status",allStatus:"Todos os status",clear:"Limpar filtros",empty:"Nenhum key corresponde a estes filtros",emptyDescription:"Limpe a busca ou o filtro de status para ver todos os keys.",mobileTitle:"Filtros"},MSa={active:"Ativo",inactive:"Desativado",revoked:"Revogado",expired:"Expirado",quota_exhausted:"Cota esgotada"},ESa={today:"Hoje {{requests}} req · {{credit}}",days30:"30 d {{requests}} req · {{credit}}"},ISa={use:"Detalhes de conexão",edit:"Editar",enable:"Ativar",disable:"Desativar",delete:"Excluir"},OSa="Usar API key",LSa="Use o key salvo com o gateway da OneHop. O key completo só aparece no momento da criação.",USa={baseUrl:"Base URL",keyHint:"API key",authorization:"Cabeçalho Authorization",env:"Variável de ambiente",curl:"cURL",revealing:"Descriptografando key…",fullKeyUnavailable:"O key completo só é mostrado quando é criado. Use o valor que você salvou ou crie um novo key se o perdeu.",protocolEndpoints:"Endpoints de protocolo"},BSa="Configurações avançadas",FSa="Criar API key",zSa="Editar API key",qSa={label:"Acesso a modelos",all:"Todos os modelos",limited:"Restringir a modelos específicos",allHint:"Esta key pode chamar todos os modelos, incluindo os adicionados depois.",snapshotHint:"Somente os modelos escolhidos; modelos adicionados depois não entram automaticamente.",snapshotHintEdit:"Somente os modelos escolhidos; novos modelos não entram automaticamente. Mudar para Todos os modelos substitui esta lista permitida.",searchPlaceholder:"Buscar modelos…",selectAllResults:"Selecionar todos os resultados ({{count}})",selectedCount:"{{count}} / {{max}} selecionados",clear:"Limpar",hiddenSelected:"{{hidden}} de {{total}} selecionados estão ocultos pelo filtro atual",selectVendor:"Selecionar todos de {{vendor}}, {{on}} de {{total}} selecionados",emptyTitle:"Nenhum modelo corresponde",emptyDescription:"Tente outro tipo ou busca.",loadFailed:"Não foi possível carregar os modelos",loadFailedHint:"Tente novamente ou volte para Todos os modelos.",type:{all:"Todos",text:"Texto",image:"Imagem",video:"Vídeo",embedding:"Embedding"},pickAtLeastOne:"Selecione pelo menos um modelo ou volte para Todos os modelos.",limitReached:"Reached the {{max}}-model limit"},HSa={title:"API key criada",subtitle:"{{name}} está pronta; conecte agora.",onceWarning:"Mostrada uma vez. Você pode revelá-la novamente depois, mas copie agora por segurança.",connect:"Conectar",done:"Concluído"},VSa="IP",KSa="Revogada em {{date}}",GSa={title:J1a,emptyTitle:eSa,copyFailed:tSa,allowedModels:nSa,tags:aSa,description:oSa,refresh:sSa,defaultName:rSa,keyName:iSa,creating:lSa,createKey:cSa,fullKeyTitle:dSa,copyApiKey:uSa,copied:mSa,copy:pSa,fullKeyDescription:fSa,savedIt:gSa,loadFailed:hSa,retry:ySa,empty:vSa,emptyDescription:bSa,table:
819xSa,revoke:$Sa,revokeConfirm:wSa,formDescription:kSa,monthlyCreditLimit:CSa,expiresAt:SSa,unlimited:ASa,saving:TSa,save:RSa,cancel:PSa,parked:_Sa,noActive:jSa,ccswitch:NSa,filters:DSa,status:MSa,usage:ESa,actions:ISa,useTitle:OSa,useDescription:LSa,use:USa,advancedSettings:BSa,createTitle:FSa,editTitle:zSa,scope:qSa,created:HSa,lastUsedIp:VSa,revokedAt:KSa},WSa="Audit Logs",YSa="High-risk admin actions, by action and time.",QSa="Action",XSa="Clear",ZSa={ops_user_update_status:"Status do usuário atualizado",ops_users_allowlist_add:"Acesso de cadastro adicionado",ops_users_allowlist_update:"Acesso de cadastro atualizado",ops_users_allowlist_invite:"Convite de acesso de cadastro enviado",ops_users_allowlist_revoke:"Acesso de cadastro removido",ops_users_allowlist_restore:"Acesso de cadastro restaurado",ops_model_create:"Modelo criado",ops_model_update:"Modelo atualizado",ops_model_update_status:"Status do modelo atualizado",sub2api_pool_create:"Pool de roteamento criado",sub2api_pool_test:"Pool de roteamento testado",sub2api_pool_rotate_secret:"Segredo de roteamento rotacionado"},JSa="Audit logs",eAa="No audit entries",tAa="Time",nAa="Severity",aAa="Target",oAa={ai_model:"Model",sub2api_key_pool:"Routing key pool",sys_user:"User",wallet:"Wallet"},sAa="Tipo de alvo",rAa="ID da requisição",iAa={title:WSa,description:YSa,action:QSa,clear:XSa,actions:ZSa,label:JSa,empty:eAa,time:tAa,severity:nAa,target:aAa,targetTypes:oAa,targetType:sAa,requestId:rAa},lAa="Entre no OneHop",cAa="Digite seu código",dAa="Continue com Google ou email",uAa="Digite seu email para receber um código",mAa="Digite o código de 6 dígitos enviado para {{email}}",pAa="Continuar com Google",fAa="Continuar com email",gAa="ou",hAa="Email",yAa="Enviar código de verificação",vAa="Enviando...",bAa="Verificar",xAa="Verificando...",$Aa="Reenviar em {{seconds}}s",wAa="Reenviar código",kAa="Ao continuar, você aceita nossos",CAa="Termos",SAa="Privacidade",AAa={signIn:"Entrar",signOutFailed:"Falha ao sair",sendCodeFailed:"Falha ao enviar o código",notAllowed:"Este e-mail ainda não tem acesso aprovado. Contate seu administrador para solicitar.",invalidCode:"Código inválido",codeIncorrect:"Código incorreto, tente novamente",googleFailed:"Falha ao entrar com Google",verifyHuman:"Conclua a verificação para continuar",verifyUnavailable:"A verificação humana está temporariamente indisponível. Continue com o Google acima ou tente novamente mais tarde."},TAa={signInTitle:lAa,enterCodeTitle:cAa,methodIntro:dAa,emailStepIntro:uAa,codeIntro:mAa,continueGoogle:pAa,continueEmail:fAa,or:gAa,emailLabel:hAa,sendCode:yAa,sending:vAa,verify:bAa,verifying:xAa,resendIn:$Aa,resendCode:wAa,termsPrefix:kAa,terms:CAa,privacy:SAa,errors:AAa},RAa="Faturamento",PAa="Recarregue Credits, resgate cupons e revise a atividade da wallet.",_Aa={bonuses:"Bônus",topups:"Recargas",usage:"Consumo"},jAa={available:"Creditado",availableHint:"Já incluído no saldo disponível",frozen:"Pendente (bloqueado)",frozenHint:"Disponível em ~{{days}} dias",frozenHintGeneric:"Disponível após o período de retenção",title:"Recompensas por indicação",viewDetails:"Ver detalhes das indicações"},NAa={noUsage:"Sem consumo nos últimos 30 dias",perDay:"{{amount}} média/dia",daysLeft:"≈ {{days}} dias no ritmo atual"},DAa={amountUsd:"Valor (USD)",minAmountHint:"Recarga mínima de {{amount}}.",apply:"Aplicar",get:"Receber",onehopCredits:"OneHop credits",pay:"Pagar",poweredByStripe:"Protegido pela Stripe",poweredBy:"Protegido pela {{provider}}",secureCheckout:"Checkout hospedado seguro",secureCheckoutShort:"Checkout seguro",taxExclusiveNotice:"Os impostos aplicáveis são calculados no checkout e adicionados a este valor.",presets:"Valores predefinidos",promoCode:"Código promocional",promoCodePlaceholder:"Digite o código",serviceFee:"Taxa de serviço",title:"Recarregar",topupAmount:"Valor da recarga",totalDue:"Total a pagar",payCta:"Pagar {{amount}}",previewing:"Verificando…",discount:"Desconto do cupom",couponBelowMin:"O total com desconto é muito baixo — aumente o valor ou tente outro código.",maintenanceTitle:"Pagamentos temporariamente indisponíveis",maintenanceDescription:"Os pagamentos estão temporariamente indisponíveis. Fale conosco no Telegram se precisar pagar.",contactTelegram:"Fale conosco no Telegram",alipay:"Alipay",wechatPay:"WeChat Pay",crypto:"Pagar com cripto (USDC / USDT)",payOnStripe:"O pagamento é concluído na página segura de checkout da Stripe.",payOnProvider:"O pagamento é concluído na página segura de checkout da {{provider}}.",payOnHostedCheckout:"O pagamento é concluído na página segura de checkout hospedada.",amountPrecision:"A {{provider}} aceita valores em USD com no máximo 2 casas decimais. Ajuste o valor ou o código promocional.",couponBonus:"Bônus do cupom",couponBonusExpiry:"Os créditos de bônus expiram {{days}} dias após o pagamento.",couponInvalid:"Este código não pode ser aplicado — tente outro código.",couponErrors:{limitReached:"Você já usou este código o número máximo de vezes.",invalid:"Este código é inválido.",expired:"Este código expirou.",exhausted:"Este código já foi totalmente resgatado.",unavailable:"Este código está em uso — tente novamente em instantes."},tierBonus:"Bônus da promoção",tierBonusExpiry:"Os créditos de bônus expiram {{days}} dias após o pagamento.",tierBonusRestricted:"Os créditos de bônus só podem ser usados em: {{models}}.",nextTierPercent:"Recarregue mais {{amount}} e ganhe {{percent}}% em créditos de bônus.",nextTierBonus:"Recarregue mais {{amount}} e ganhe {{bonus}} em créditos de bônus.",tierCapReached:"Você já recebeu o bônus máximo desta promoção."},MAa="Adicionar Credits",EAa="Criando...",IAa="Credit disponível",OAa="Recarregar",LAa="Pagamentos via Stripe",UAa="Valor (USD)",BAa="Valores de recarga predefinidos",FAa="Resgatar cupom",zAa="Código do cupom",qAa="Resgatando...",HAa="Resgatar",VAa="Cupom resgatado. O saldo está atualizando.",KAa="Redirecionando para checkout seguro...",GAa="Falha ao carregar resumo de faturamento",WAa="Falha na recarga",YAa="Abas de atividade de faturamento",QAa="Transações",XAa="Concessões de Credit",ZAa="Tipo de transação",JAa="Origem",eTa="Ainda sem transações",tTa="Recargas, cobranças e concessões aparecem aqui.",nTa="Entradas do ledger",aTa="Hora",oTa="Tipo",sTa="Valor",rTa="Saldo",iTa="Ainda sem concessões",lTa="Bônus de cadastro, cupons e concessões manuais aparecem aqui.",cTa="Status",dTa={successTitle:"Pagamento recebido",polling:"Creditando sua wallet... cerca de 30 segundos.",delayed:"Está demorando. Atualize daqui a pouco ou verifique seus recibos na Stripe.",cancelledTitle:"Pagamento cancelado",cancelledBody:"Nenhuma cobrança foi feita. Tente novamente quando quiser.",failedTitle:"Falha no pagamento",failedBody:"Não foi possível concluir seu pagamento. Nenhum crédito foi adicionado. Tente novamente ou use outra forma de pagamento."},uTa={text:"Credits são saldo de serviço pré-pago, não depósito bancário. Credits consumidos não são reembolsáveis. Todos os preços em USD. Veja",tosLink:"Termos"},mTa="Recibos",pTa="Abrindo...",fTa="Não foi possível abrir o portal de faturamento",gTa={title:"Recargas recentes",subtitle:"Últimos 90 dias, reembolsáveis em até 24 horas.",loading:"Carregando recargas...",date:"Data",amount:"Valor",credits:"Credits",status:"Status",refund:"Reembolsar",alreadyRefunded:"Já reembolsado",windowExpired:"Janela de reembolso expirou (24 horas)",confirmTitle:"Confirmar reembolso",confirmBody:"O reembolso será processado pela Stripe em 1-3 dias úteis. Há uma taxa de plataforma ({{fee}}) para reembolsos iniciados pelo usuário.",amountLabel:"Valor do reembolso (USD)",maxLabel:"Máx. ${{value}}",requestedLabel:"Reembolso solicitado",platformFeeLabel:"Taxa da plataforma ({{fee}})",cardReturnLabel:"Devolvido ao seu cartão",bonusForfeitureHint:"Credits promocionais concedidos junto com esta recarga serão revertidos proporcionalmente.",cancel:"Cancelar",confirm:"Emitir reembolso",submitting:"Env
819iando...",refundSubmittedTitle:"Reembolso enviado",refundSubmittedBody:"A Stripe devolverá o valor ao seu cartão em 1-3 dias úteis.",refundFailedTitle:"Falha no reembolso",balance:"Saldo",confirmAmount:"Reembolsar {{amount}}"},hTa={title:"Alertas de saldo",description:"Avisamos quando seu saldo ficar baixo.",emailLabel:"Avisar por e-mail",webhookLabel:"Webhook",autorechargeLabel:"Recarga automática",autorechargeUnsupported:"A recarga automática não está disponível com o provedor de pagamento ativo.",autorechargeAddCardHint:"adicione um cartão para manter seu saldo",autorechargeTopUp:"Recarregar",autorechargeWhenBelow:"quando o saldo cair abaixo de",autorechargeThreshold:"Limite de recarga automática",autorechargeAmount:"Valor da recarga automática",autorechargeDisabledFailures:"A recarga automática foi desativada após várias falhas seguidas. Atualize seu cartão e reative.",autorechargeIncomplete:"Defina um valor de recarga e um limite acima de $0.",test:"Testar",testing:"Testando…",testQueued:"Entrega de teste na fila: confira seu endpoint",testFailed:"Falha ao enfileirar a entrega de teste",signingSecret:"Segredo de assinatura",secretOnSave:"Um segredo de assinatura é gerado ao salvar.",rotate:"Girar",secretRotated:"Segredo de assinatura girado",rotateFailed:"Falha ao girar o segredo",secretCopied:"Segredo de assinatura copiado",saved:"Configurações de alerta salvas",saveFailed:"Falha ao salvar as configurações de alerta",loadFailed:"Não foi possível carregar as configurações de alerta",thresholdRequired:"Defina um limite acima de $0 para ativar os alertas.",webhookUrlRequired:"Insira uma URL https:// para o webhook.",thresholdOrderBad:"O limite de alerta deve ser ≥ ao limite de recarga automática.",card:"Cartão",changeCard:"Alterar",removeCard:"Remover",cardRemoved:"Cartão removido",cardRemoveFailed:"Falha ao remover o cartão",cardSetupFailed:"Falha ao iniciar a configuração do cartão",lowBalanceGroup:"Alertas de saldo baixo",thresholdLabel:"Limite de alerta"},yTa={title:"Histórico de transações",idSearch:"ID da transação",amountRange:"Faixa de valor (USD)",min:"Mín",max:"Máx",clear:"Limpar",retry:"Tentar novamente",empty:"Nenhuma transação neste intervalo",date:"Data",typeMethod:"Tipo / método",description:"Descrição",action:"Ação",prevMonth:"Mês anterior",nextMonth:"Próximo mês",viewInvoices:"Ver faturas",emptyNew:"Ainda não há transações",emptyNewDesc:"Depois de recarregar, suas recargas, bônus e reembolsos aparecerão aqui.",topUpCta:"Recarregar",emptyFiltered:"Nenhuma transação corresponde",emptyFilteredDesc:"Tente limpar filtros ou ampliar o período.",clearFilters:"Limpar filtros"},vTa="Seu saldo está baixo e pode interromper solicitações. Recarregue ou ative a recarga automática.",bTa="Seu saldo está baixo e pode interromper solicitações. Recarregue para continuar.",xTa={creditPurchase:"Recarga de crédito",topupBonus:"Top-up bonus",signupBonus:"Signup bonus",referralClawback:"Referral cashback clawback (refund)",couponBonus:"Bônus do cupom",referralCashback:"Cashback de indicação",referralInviteeCashback:"Bônus do indicado",redeemCode:"Código de resgate {{code}}",redeemCodeReversal:"Resgate revertido",stripeRefund:"Reembolso Stripe",bonusReversal:"Estorno de bônus (reembolso)"},$Ta={title:"Crédito vinculado",subtitle:"Crédito de bônus utilizável apenas em modelos específicos — separado do seu saldo.",onlyModels:"Apenas {{models}}",onlyModelsGeneric:"Modelos restritos",validUntil:"Válido até {{date}}",noExpiry:"Sem expiração",useInChat:"Use in chat"},wTa={card:"Cartão",alipay:"Alipay",wechatPay:"WeChat Pay"},kTa={title:"Código de resgate",description:"Tem um código de resgate? Insira-o para adicionar o valor ao seu saldo.",placeholder:"Ex.: OHR-XXXXXXXX",redeem:"Resgatar",redeeming:"Resgatando…",success:"{{amount}} adicionado ao saldo",successRestricted:"Redeemed {{amount}} — usable with {{models}} only",successValidity:"Valid until {{date}}.",errors:{invalid:"Este código é inválido.",expired:"Este código expirou.",alreadyRedeemed:"Este código já foi resgatado.",perUserLimit:"Você atingiu o limite de resgate deste lote."}},CTa={title:RAa,description:PAa,breakdown:_Aa,referralRewards:jAa,burnRate:NAa,topup:DAa,addCredits:MAa,creating:EAa,availableCredit:IAa,topUp:OAa,poweredByStripe:LAa,amountUsd:UAa,presetAmounts:BAa,redeemCoupon:FAa,couponCode:zAa,redeeming:qAa,redeem:HAa,couponRedeemed:VAa,redirecting:KAa,summaryFailed:GAa,topupFailed:WAa,tabsLabel:YAa,transactions:QAa,creditGrants:XAa,transactionType:ZAa,source:JAa,noTransactions:eTa,noTransactionsDescription:tTa,ledgerEntries:nTa,time:aTa,type:oTa,amount:sTa,balance:rTa,noGrants:iTa,noGrantsDescription:lTa,status:cTa,topupBanner:dTa,compliance:uTa,receipts:mTa,openingPortal:pTa,portalFailed:fTa,recentTopups:gTa,alerts:hTa,history:yTa,lowBalanceWarning:vTa,lowBalanceWarningNoAutoTopup:bTa,ledgerDesc:xTa,earmarked:$Ta,paymentMethod:wTa,redeemCard:kTa},STa="Falha ao carregar o gráfico",ATa="Sem dados",TTa="Ainda não há dados para o gráfico.",RTa={errorTitle:STa,emptyTitle:ATa,empty
819Description:TTa},PTa={copy:"Copiar",regenerate:"Gerar novamente",shareComingSoon:"Compartilhar (em breve)",download:"Baixar",copyLink:"Copiar link",newChat:"Novo chat",deleteChat:"Excluir chat",openConversationList:"Abrir lista de conversas",openSettings:"Configurações do chat",collapseSidebar:"Recolher barra lateral",expandSidebar:"Expandir barra lateral",cancel:"Cancelar",apply:"Aplicar",newChatTooltip:"Criar novo chat",copied:"Copiado"},_Ta={placeholderReady:"Inicie uma nova conversa...",placeholderNoModel:"Escolha um modelo acima primeiro",attachmentTooLarge:"O arquivo excede {{limit}} e não pode ser enviado",attachmentUnsupported:"Tipo de arquivo não suportado. Use PNG, JPEG, WebP, GIF, MP4, WebM ou MOV.",unsupportedVision:"Este modelo não aceita entrada de imagem ou vídeo. Troque de modelo antes de soltar arquivos.",send:"Enviar",abort:"Parar",attachImage:"Adicionar imagem",attachMedia:"Adicionar imagem ou vídeo",removeAttachment:"Remover",shortcutSend:"enviar",shortcutNewLine:"nova linha",shortcutAbort:"parar",frameFirst:"Primeiro quadro",frameLast:"Último quadro",frameReference:"Referência",imageMode:"Geração de imagem",videoMode:"Geração de vídeo",placeholderComingSoon:"This model is coming soon — pick another one above",reasoning:"Raciocínio",reasoningOff:"Desativado",reasoningAlways:"Sempre ativado",placeholderTopupRequired:"Este modelo é para contas que já recarregaram — recarregue para usá-lo aqui"},jTa={modelUnavailable:"O modelo {{model}} não está disponível no momento. Seu prompt ainda foi salvo.",rateLimited:"Há muitas solicitações simultâneas. Tente novamente em instantes.",accountDisabled:"Esta conta está desativada e não pode continuar usando o chat.",attachmentsUploading:"As imagens ainda estão sendo enviadas. Aguarde um momento antes de enviar.",attachmentsFailed:"Falha ao enviar uma imagem. Remova-a e tente novamente antes de enviar."},NTa={title:"Comece a testar qualquer modelo aqui.",body:"Converse diretamente com qualquer modelo. O uso é cobrado da sua carteira PAYG.",starters:{compareModels:"Compare GPT-5.5 e Claude Opus na mesma tarefa de programação",analyzeImage:"Analise um diagrama de arquitetura e resuma os riscos",draftPrompt:"Crie um system prompt para um agente de suporte",generateImage:"Gere uma imagem hero de produto com um estilo SaaS limpo"}},DTa={untitled:"Chat sem título",deleteConfirm:'Excluir "{{title}}"?',emptyTitle:"Ainda não há conversas",emptyBody:"Use + Novo chat acima para começar.",listLabel:"Lista de conversas",groups:{today:"Hoje",yesterday:"Ontem",earlier:"Anteriores"},menu:{rename:"Renomear",delete:"Excluir"},deleteTitle:"Excluir conversa?"},MTa={paygWallet:"Carteira PAYG"},ETa={chooseModel:"Escolher modelo",searchPlaceholder:"Buscar modelos...",emptyTitle:"Nenhum modelo encontrado",emptyBody:"Tente outro termo de busca ou outra aba.",protocols:"{{count}} protocolos",context:"{{value}} ctx",tabs:{all:"Todos",text:"Texto",image:"Imagem",video:"Vídeo"},maxOut:"saída {{value}}",unavailable:"Temporariamente indisponível",requiresTopup:"Recarregue para desbloquear"},ITa={title:"Configurações do chat",protocol:"Protocolo",unlimited:"Ilimitado",fields:{memory_limit:{label:"Memória do chat"},temperature:{label:"Temperatura"},top_p:{label:"Top P"},max_tokens:{label:"Máximo de tokens",placeholder:"128000"},service_tier:{label:"Nível de serviço",options:{standard:"Padrão",priority:"Prioritário",flex:"Flexível"}},thinking_budget:{label:"Orçamento de raciocínio (tokens)",placeholder:"ex.: 2000"},stop_sequences:{label:"Sequências de parada",placeholder:"Separadas por vírgula, ex.: END, STOP",itemLabel:"Parada"},system_prompt:{label:"System Prompt",placeholder:"Insira um system prompt..."},prompt_cache_mode:{label:"Prompt Cache",options:{implicit:"Implícito",explicit:"Explícito"}},image_size:{label:"Resolução da imagem"},image_resolution:{label:"Resolução"},image_quality:{label:"Qualidade da imagem",options:{Auto:"Auto",auto:"Auto",low:"Baixa",medium:"Média",high:"Alta"}},video_ratio:{label:"Proporção"},video_resolution:{label:"Resolução do vídeo"},video_duration_seconds:{label:"Duração"},tools:{label:"Tools (JSON)",placeholder:'[{ "type": "function", "function": { ... } }]'},image_count:{label:"Quantidade de imagens"},image_aspect_ratio:{label:"Proporção"},reasoning_effort:{label:"Intensidade de raciocínio",options:{none:"Desativado",minimal:"Mínima",low:"Baixa",medium:"Média",high:"Alta",xhigh:"Muito alta",max:"Máxima"}},reasoning_pro:{label:"Modo Pro"},reasoning_context:{label:"Contexto de raciocínio",options:{auto:"Automático",current_turn:"Interação atual",all_turns:"Todas as interações"}},reasoning_enabled:{label:"Raciocínio"},reasoning_always:{label:"Raciocínio",value:"Sempre ativado"}}},OTa={estimating:"estimando...",settling:"finalizando...",input:"entrada",output:"saída",milliseconds:"ms",realCost:"Custo real",latency:"Latência",logDetail:"Detalhe do log"},LTa={copied:"Link da imagem copiado",expired:"O link da imagem expirou. Copie o link para reabrir ou gere novamente.",attachment:"[imagem anexada]"},UTa={message:"Este chat é cobrado da sua carteira PAYG",balance:"Saldo",billingLink:"Faturamento",dismiss:"Dispensar"},BTa={badge:"Earmarked {{amount}}",bannerTitle:"Earmarked credit available",bannerBody:"You have {{amount}} of dedicated credit for this model — it's used first."},FTa={trigger:"Copiar como código",copied:"Copiado como {{format}}",failed:"Falha ao copiar",failedDescription:"A permissão da área de transferência pode estar bloqueada pelo navegador."},zTa={interrupted:"[Interrompido]",sending:"enviando"},qTa={title:"Processo de raciocínio",duration:"Pensou por {{seconds}}s"},HTa={title:"A geração de vídeo estará disponível em breve",body:"Este modelo aparece para descoberta, mas o envio de vídeo ainda não está habilitado.",switchToText:"Mudar para um modelo de texto"},VTa={imageGenerating:"Gerando imagem",videoGenerating:"Gerando vídeo",stage:{queued:"Na fila",routing:"Roteando",generating:"Gerando",storing:"Armazenando",settling:"Liquidando"}},KTa={INSUFFICIENT_CREDITS:"Saldo insuficiente",RATE_LIMITED:"Muitas solicitações",rate_limit_error:"Muitas solicitações",MODEL_NO_VISION:"Este modelo não aceita entrada de imagens",CONTENT_REFUSED:"O modelo recusou esta solicitação",EMPTY_RESPONSE:"O modelo retornou uma resposta vazia",upstream_error:"Erro do serviço upstream",overloaded_error:"O serviço upstream está sobrecarregado",upstream_invalid_json:"Resposta do upstream malformada",stream_read_error:"Fluxo de resposta interrompido",invali
819d_api_key:"Falha de autenticação com o upstream",model_unavailable:"Modelo temporariamente indisponível",no_image:"Nenhuma imagem foi gerada",no_body:"Sem resposta do upstream",http_error:"Falha na solicitação",session_create_failed:"Falha ao criar a sessão"},GTa={title:"Recarregue para desbloquear este modelo",body:"Está disponível para contas que já recarregaram. Qualquer valor libera na hora, e o saldo continua sendo cobrado por uso.",cta:"Recarregar"},WTa={actions:PTa,composer:_Ta,errors:jTa,empty:NTa,sidebar:DTa,header:MTa,modelSelector:ETa,settings:ITa,metrics:OTa,image:LTa,payg:UTa,earmark:BTa,copyAsCode:FTa,status:zTa,thinking:qTa,video:HTa,media:VTa,errorCodes:KTa,topupLock:GTa},YTa="Carregando...",QTa="Conta",XTa="Idioma",ZTa="Entrar",JTa="Sair",eRa="Saindo...",tRa="Salvar alterações",nRa="Salvando...",aRa="Salvo.",oRa="Voltar",sRa="Tentar novamente",rRa="5% de desconto na taxa de serviço ao recarregar.",iRa="Salvar",lRa="Cancelar",cRa="Limpar",dRa="Redefinir",uRa="Copiado",mRa="Falha ao copiar",pRa="Fechar",fRa="Total",gRa={timestamp:"Timestamp",local:"Hora local",relative:"Relativo"},hRa="Copiar",yRa={title:"Abra no seu navegador",description:"Você está vendo isto no <b>navegador interno de um app</b>, onde <b>o login do Google e a verificação humana não funcionam</b>. Abra no navegador do seu sistema para continuar.",hintWechat:"Toque no menu ··· no canto superior direito e escolha “Abrir no navegador”.",hintGeneric:"Use o menu no canto superior direito e escolha “Abrir no navegador / Safari”.",copyLink:"Copiar link",continueAnyway:"Continuar mesmo assim"},vRa="Todos",bRa="Ativo",xRa="Opcional",$Ra="Remover",wRa={loading:YTa,account:QTa,language:XTa,signIn:ZTa,signOut:JTa,signingOut:eRa,saveChanges:tRa,saving:nRa,saved:aRa,back:oRa,retry:sRa,topUpPromo:rRa,save:iRa,cancel:lRa,clearAll:cRa,reset:dRa,copied:uRa,copyFailed:mRa,dismiss:pRa,total:fRa,time:gRa,copy:hRa,inAppBrowser:yRa,all:vRa,active:bRa,optional:xRa,remove:$Ra},kRa="Dashboard",CRa="Monitore créditos, uso e saúde do gateway em um só console.",SRa="Criar API key",ARa={creditBalance:"Saldo de credit",requestsToday:"Requisições hoje",activeApiKeys:"API keys ativas"},TRa={title:"Tendência de uso",description:"Requisições e credit faturado nos últimos 14 dias.",viewUsage:"Ver uso",loading:"Carregando tendência de uso",empty:"Ainda sem uso",emptyDescription:"O uso aparece aqui quando as requisições começarem."},RRa={title:"Atividade de credit",description:"Credit faturado por dia nos últimos 90 dias.",total:"Total de 90 dias",loading:"Carregando atividade",activeDays:"{{count}} dias ativos nos últimos {{days}} dias",less:"Menos",more:"Mais"},PRa={title:"Resumo de uso",description:"Uma visão compacta da intensidade de gasto, volume de tokens e o modelo com mais uso.",activeDays:"Dias ativos",ofDays:"de {{days}} dias",avgDailyCredit:"Credit médio diário",nonZeroDays:"em dias ativos",peakDay:"Dia de pico",noPeak:"Ainda sem uso",tokens:"Tokens",topModel:"Modelo principal",creditShare:"Participação no credit faturado"},_Ra={title:"Saúde rápida",requests7d:"Requisições em 7 dias",creditToday:"Credit gasto hoje",credit7d:"Credit gasto em 7 dias"},jRa={title:"Requisições recentes",description:"Últimas chamadas do gateway nas suas keys.",viewRecords:"Ver registros",table:{label:"Requisições recentes",model:"Modelo",status:"Status",tokens:"Tokens",credit:"Credit",time:"Hora",apiKey:"API key"},empty:"Ainda sem requisições",emptyDescription:"Crie uma API key, envie uma requisição e as chamadas recentes aparecerão aqui."},NRa={title:"Faça sua primeira requisição",description:"Compatível com OpenAI. Crie uma key, configure {{env}} e chame o gateway."},DRa={credit:"Credit",requests:"Requisições"},MRa={title:kRa,description:CRa,createApiKey:SRa,cards:ARa,usageTrend:TRa,activity:RRa,usageMix:PRa,quickHealth:_Ra,recent:jRa,firstRequest:NRa,tooltip:DRa},ERa="Selecionar todas as linhas",IRa="Selecionar linha {{row}}",ORa="Falha ao carregar",LRa="Sem dados",URa="Não há registros para mostrar.",BRa="Mais detalhes",FRa="Mais {{count}} detalhes",zRa="Abrir detalhes",qRa={selectAllRows:ERa,selectRow:IRa,errorTitle:ORa,emptyTitle:LRa,emptyDescription:URa,moreDetails:BRa,moreDetailsWithCount:FR
819a,openRow:zRa},HRa="Última hora",VRa="Hoje",KRa="Ontem",GRa="Últimos 7 dias",WRa="Últimos 30 dias",YRa="Este mês",QRa="Por mês",XRa="Personalizado",ZRa="Todo o período",JRa="Selecionar data",ePa="Cancelar",tPa="Aplicar",nPa="A data inicial deve ser anterior à data final.",aPa="Predefinições de intervalo",oPa="Mês anterior",sPa="Próximo mês",rPa={last1h:HRa,today:VRa,yesterday:KRa,last7d:GRa,last30d:WRa,thisMonth:YRa,byMonth:QRa,custom:XRa,all:ZRa,selectDate:JRa,cancel:ePa,apply:tPa,reversedError:nPa,presetsAriaLabel:aPa,previousMonth:oPa,nextMonth:sPa},iPa="Conta indisponível",lPa="A conta está inicializando",cPa={title:"Conta suspensa",description:"Esta conta ainda pode entrar, mas o acesso ao console e as requisições gateway estão pausados.",detail:"Se isso parecer inesperado, fale com support usando o email desta conta."},dPa={accountUnavailable:iPa,accountInitializing:lPa,accountRestricted:cPa},uPa="Tokens grátis",mPa="Cota diária de tokens grátis para modelos selecionados — ela se renova automaticamente. Nada é cobrado da sua carteira.",pPa="Não foi possível carregar sua cota de tokens grátis.",fPa="Todos os modelos",gPa="A campanha termina em {{date}}",hPa={daily:"Diária",weekly:"Semanal"},yPa={daily:"Renova diariamente",weekly:"Renova semanalmente",localTime:"seu horário local {{time}}",countdown:"próxima renovação em {{duration}}",refreshingSoon:"renovando em breve"},vPa={title:"Nenhuma campanha de tokens grátis ativa",description:"Quando uma campanha de tokens grátis estiver em andamento, sua cota diária aparecerá aqui."},bPa={title:"A concessão de tokens grátis está pausada na sua conta",body:"Esta conta parece fazer parte de um padrão de cadastro em massa, então as concessões gratuitas estão pausadas por enquanto. Se isso for um engano, fale conosco em"},xPa="tokens",$Pa="Restam {{value}} tokens hoje",wPa={label:"Avisar por e-mail ao esgotar",hint:"Receba um e-mail quando seus tokens grátis do dia acabarem."},kPa={crg_freetoken_daily_cn5:"Modelos chineses · tokens grátis diários"},CPa={title:uPa,description:mPa,loadFailed:pPa,allModels:fPa,campaignEnds:gPa,cadence:hPa,refresh:yPa,empty:vPa,paused:bPa,tokensUnit:xPa,remainingToday:$Pa,emailToggle:wPa,campaigns:kPa},SPa="Logs",APa="Inspecione custo, latência, tokens, status e sinais de routing por requisição.",TPa={copiedCurl:"curl copiado",copiedId:"ID da requisição copiado",copyCurl:"Copiar como curl",copyFailed:"Falha ao copiar",copyId:"Copiar ID da requisição",menu:"Ações da linha",openTab:"Abrir em nova aba"},RPa={prompt:"Prompt",ratio:"Taxa de acerto",read:"Leitura de cache",title:"Taxa de acerto de cache"},PPa={confirm:"Cancelar tarefa",failed:"Falha ao cancelar tarefa",keep:"Manter",message:"Esta tarefa ainda está na fila. Ao cancelar, ela não será processada e nenhuma cobrança será aplicada.",success:"Tarefa cancelada",title:"Cancelar tarefa?",pending:"Cancelando..."},_Pa={cacheHit:"Acerto de cache",cost:"Custo",ip:"IP",latency:"Latência",model:"Modelo",source:"Origem",status:"Status",stream:"Streaming",time:"Hora",tokens:"Tokens",tps:"Throughput"},jPa={trigger:"Configurações de colunas"},NPa={body:"Faça uma requisição pela OneHop e ela aparecerá aqui.",title:"Sem logs neste intervalo"},DPa={all:"Tudo",apiKey:"API key",cost:"Custo (USD)",desktopDateRangeAria:"Selecionar intervalo de datas no desktop",finishReason:"Motivo de término",latency:"Latência (s)",max:"Máx.",min:"Mín.",mobileDateRangeAria:"Selecionar intervalo de datas no celular",model:"Modelo",modelsSelected:"{{count}} selecionados",more:"Mais filtros",refresh:"Atualizar",request:"Buscar por ID da requisição",requestIdLabel:"ID da requisição",status:"Status",stream:"Streaming",time:"Hora",type:"Tipo",mobileTitle:"Filtros"},MPa={requests:"registros nesta página",times:"horários exibidos em"},EPa={rowsPer:"Linhas"},IPa={all:"Todo o período",custom:"Personalizado",last1h:"Última 1 hora",last30d:"Últimos 30 dias",last7d:"Últimos 7 dias",thisMonth:"Este mês",today:"Hoje",yesterday:"Ontem"},OPa={title:"Cliente",unknown:"Nenhum user-agent informado",unknownShort:"Desconhecido"},LPa={output:"Tokens de saída",rate:"Taxa",title:"Throughput",window:"Janela de geração"},UPa={title:"Requisição",openDetail:"Abrir detalhes da requisição",copy:"Copiar ID",copied:"Copiado",copyFailed:"Falha ao copiar",close:"Fechar",loading:"Carregando…",response:"Resposta",sections:{request:"Requisição",routing:"Roteamento",tokens:"Tokens",cost:"Detalhamento de custo",performance:"Desempenho",error:"Erro",outcome:"Resultado",multimodal:"Multimodalidades"},fields:{requestId:"ID da requisição",time:"Hora",apiKey:"API key",userAgent:"User-Agent",billingMode:"Modo de faturamento",onehopModel:"Modelo OneHop",endpoint:"Endpoint",firstToken:"Primeiro token",total:"Duração total",throughput:"Throughput",stream:"Streaming",clientIp:"IP do cliente",finishReason:"Motivo de término",mediaType:"Tipo de mídia",imageCount:"Imagens",imageSize:"Tamanho",errorCode:"Código",errorMessage:"Mensagem",requestedModel:"Modelo solicitado"},billingMode:{token:"Por token",per_request:"Por requisição",image:"Por imagem"},timeline:{heading:"Ciclo de vida",received:"Solicitação recebida",routed:"Roteada",failed:"Falhou",generated:"Gerada",metered:"Medida",billed:"Faturada"},downloadMedia:"Baixar"},BPa={success:"sucesso",completed:"concluído",failed:"falhou",pending:"pendente",repairing:"reparando",queued:"na fila",running:"em execução",cancelled:"cancelado",expired:"expirado"},FPa={chat:"Chat",image:"Imagem",video:"Vídeo"},zPa={stop:"Stop",length:"Limite de tamanho",tool_calls:"Chamadas de ferramenta",content_filter:"Filtro de conteúdo",error:"Erro"},qPa={true:"Streaming",false:"Sem streaming"},HPa={title:"Detalhamento do custo"},VPa={title:"Detalhamento de tokens",prompt:"Entrada",completion:"Saída",imageOutput:"Tokens de saída de imagem",cacheRead:"Leitura de cache",cacheWrite:"Escrita de cache",cacheWrite5m:"Escrita de cache 5m",cacheWrite1h:"Escrita de cache 1h",total:"Total"},KPa={timestamp:"Timestamp",local:"Hora local",relative:"Relativo"},GPa={inputCost:"Custo de entrada",outputCost:"Custo de saída",cacheReadCost:"Custo de leitura de cache",cacheWriteCost:"Custo de escrita de cache",inputPrice:"Preço de entrada",outputPrice:"Preço de saída",total:"Total",officialPrice
819:"Preço oficial",saved:"Economia",factor:{textInput:"Entrada de texto",textOutput:"Saída de texto",imageInput:"Entrada de imagem",imageOutput:"Saída de imagem",perCallImage:"Por imagem",videoPerSecond:"Vídeo",videoPerCall:"Vídeo",cacheRead:"Leitura de cache",cacheWrite:"Escrita de cache",cacheWrite5m:"Escrita de cache (5m)",cacheWrite1h:"Escrita de cache (1h)"},unit:{per1mTokens:"/ 1M tokens",perImage:"/ imagem",perSecond:"/ s",perCall:"/ chamada"},promoBasis:"Antes da promoção",promoSaved:"Economia da promoção",freeCovered:"Cota gratuita ({{tokens}} tokens)",freeCoveredNoCount:"Cota gratuita"},WPa={noPreview:"Prévia indisponível",video:"Vídeo"},YPa={free:"Grátis"},QPa={title:SPa,description:APa,actions:TPa,cacheHit:RPa,cancelJob:PPa,col:_Pa,columns:jPa,empty:NPa,filter:DPa,meta:MPa,pager:EPa,range:IPa,source:OPa,tps:LPa,drawer:UPa,status:BPa,type:FPa,finishReason:zPa,stream:qPa,costBreakdown:HPa,tokensBreakdown:VPa,time:KPa,userCost:GPa,export:{label:"Exportar CSV",exporting:"Exportando…",done:"{{n}} linhas exportadas.",truncated:"Foram exportadas as primeiras {{n}} linhas. Reduza o intervalo de datas para exportar o restante.",failed:"Falha na exportação. Tente novamente."},media:WPa,cost:YPa},XPa="Modelos",ZPa="Veja todos os modelos disponíveis, janela de contexto, preço de entrada/saída e recursos, e favorite os que você mais usa.",JPa={all:"Todos",favorites:"Meus favoritos",benefit:"Benefício",hot:"Popular",free:"Free"},e_a={capability:"Tipo",allCapabilities:"Todos os tipos",capability_text:"Texto",capability_image:"Imagem",capability_audio:"Áudio",capability_video:"Vídeo",provider:"Provedor",allProviders:"Todos os provedores",protocol:"Protocolo",allProtocols:"Todos os protocolos",sort:"Ordenar",search:"Buscar",searchPlaceholder:"Modelo / provedor",allContexts:"Qualquer tamanho",context:"Contexto",mobileTitle:"Filtros"},t_a="Em destaque",n_a="Mais recentes",a_a="Mais usados na semana",o_a="Nome (A-Z)",s_a="Preço (menor para maior)",r_a="Preço (maior para menor)",i_a="Tamanho do contexto",l_a="Latência",c_a="Throughput",d_a="OpenAI Chat",u_a="OpenAI Responses",m_a="Anthropic",p_a="Vertex AI",f_a="OpenAI Images",g_a="OpenAI Video",h_a={label:"Modelos",model:"Modelo",provider:"Provedor",capabilities:"Recursos",context:"Contexto",price:"Preço",discount:"Desconto",action:"Ação",tryIt:"Testar",type:"Tipo",maxOutput:"Saída máxima",copyId:"Copiar ID do modelo",copied:"Copiado",usage:"Uso",stability:"Estabilidade",protocols:"Protocolos",openDetail:"Open model detail"},y_a="Popular",v_a="Benefício",b_a={add:"Adicionar favorito",remove:"Remover favorito"},x_a={favorites:"Ainda não há favoritos",noMatch:"Nenhum modelo encontrado"},$_a="Texto",w_a="Imagem",k_a="Arquivo",C_a="Vídeo",S_a="Áudio",A_a="Embeddings",T_a="Vision",R_a="Chamada de ferramentas",P_a="Modo JSON",__a="Geração de imagem",j_a="Edição de imagem",N_a="Texto",D_a="Imagem",M_a="Vídeo",E_a="Áudio",I_a="Embedding",O_a="Oficial",L_a="Kiro",U_a="a partir de",B_a="/ chamada",F_a="/ s",z_a="/ 1M",q_a="Rápido",H_a="Free",V_a="Coming Soon",K_a="Free",G_a={ariaLabel:"Moeda dos preços",usd:"USD",rmb:"yuan (¥)",settlement:"Preços exibidos em yuans a uma taxa fixa de {{rate}}, apenas para referência; sua carteira é sempre cobrada em USD conforme o uso real."},W_a="Requer recarga",Y_a={title:XPa,description:ZPa,tabs:JPa,filters:e_a,sort_featured:t_a,sort_newest:n_a,sort_top_weekly:a_a,sort_name:o_a,sort_price_asc:s_a,sort_price_desc:r_a,sort_context:i_a,sort_latency:l_a,sort_throughput:c_a,protocol_openai_chat:d_a,protocol_openai_responses:u_a,protocol_anthropic_messages:m_a,protocol_google_vertex_ai:p_a,protocol_openai_images:f_a,protocol_openai_sora:g_a,table:h_a,badge_hot:y_a,badge_benefit:v_a,favorite:b_a,empty:x_a,modality_text:$_a,modality_image:w_a,modality_file:k_a,modality_video:C_a,modality_audio:S_a,modality_embeddings:A_a,capability_vision:T_a,capability_tool_calling:R_a,capability_json_mode:P_a,capability_image_generation:__a,capability_image_edit:j_a,type_text:N_a,type_image:D_a,type_video:M_a,type_audio:E_a,type_embedding:I_a,provider_official:O_a,provider_kiro:L_a,price_from:U_a,price_perCall:B_a,price_perSec:F_a,price_per1m:z_a,price_fast:q_a,badge_free:H_a,badge_unavailable:V_a,price_free:K_a,currency:G_a,badge_requiresTopup:W_a},Q_a={main:"Navegação principal",utility:"Navegação utilitária",console:"Navegação do console",openNavigation:"Abrir navegação",collapse:"Recolher barra lateral",expand:"Expandir barra lateral"},X_a={platform:"Console",chat:"Chat",models:"Modelos",logs:"Logs",jobs:"Tarefas",apiKeys:"API keys",usage:"Uso",billing:"Cobrança",freeTokens:"Tokens grátis",referrals:"Indicações",settings:"Configurações",admin:"Admin",balance:"Saldo",helpSupport:"Ajuda e suporte",announcements:"Anúncios",announcementsTitle:"Anúncios",announcementsEmpty:"Ainda não há anúncios. Volte em breve.",announcementsTicketUnread:"{{count}}
819 ticket(s) com novas respostas",support:"Suporte",tasks:"Tarefas",tagNew:"NOVO"},Z_a={staff:"Equipe"},J_a={dashboard:"Painel",users:"Usuários",billing:"Cobrança da plataforma",usage:"Uso da plataforma",rateLimits:"Limites de taxa",access:"Acesso",staff:"Admins",growth:"Crescimento",models:"Modelos",announcements:"Anúncios",upstream:"Upstream",auditLogs:"Logs de auditoria",webhooks:"Webhooks",support:"Support",campaigns:"Campaigns",domainRules:"Email domains"},eja={title:"Notifications",markAllRead:"Mark all read",loading:"Loading…",emptyTitle:"You're all caught up",emptyBody:"New notifications will show up here."},tja={aria:Q_a,public:{models:"Modelos",pricing:"Preços",docs:"Documentação",blog:"Blog",changelog:"Histórico de versões"},console:X_a,adminGroups:Z_a,admin:J_a,notifications:eja},nja={back:"Voltar",done:"Concluir",next:"Avançar",stepOf:"{{current}} / {{total}}"},aja={balance:{body:"Recarregue conforme usar. O saldo não consumido pode ser reembolsado a qualquer momento.",title:"Seu saldo"},keys:{body:"Clique aqui para criar uma key e apontar qualquer ferramenta para a OneHop.",title:"Crie sua primeira API key"},models:{body:"Veja em uma página todos os modelos que você pode chamar e quanto cada um custa.",cta:"Abrir modelos",title:"Explore os modelos"}},oja={body:"Um URL para todos os modelos. Em 30 segundos, mostramos três pontos principais.",skip:"Pular",start:"Começar",title:"Boas-vindas à OneHop"},sja={nav:nja,steps:aja,welcome:oja},rja="Failed to load",ija="Nothing here yet.",lja="Mais detalhes",cja={failedLoad:rja,emptyDescription:ija,moreDetails:lja},dja="Todos",uja="Sucesso",mja="Pendente",pja="Reparando",fja="Falhou",gja="Reembolsado",hja="Ativo",yja="Desativado",vja="Esgotado",bja="Reservado",xja="Resgatado",$ja="Suspenso",wja="Excluído",kja="Normal",Cja="Em observação",Sja="Bloqueado",Aja="Concedido",Tja="Revertido",Rja="Expirado",Pja="Negado",_ja="Rascunho",jja="Publicado",Nja="Obsoleto",Dja="Arquivado",Mja="Oculto",Eja="Criado",Ija="Checkout aberto",Oja="Pago",Lja="Cancelado",Uja="OpenAI Chat",Bja="OpenAI Responses",Fja="Anthropic Messages",zja="Google Vertex AI",qja="OpenAI Images",Hja="Cobrança por uso",Vja="Bônus de cadastro",Kja="Bônus promocional",Gja="Bônus de indicação",Wja="Bônus de compensação",Yja="Bônus de recarga",Qja="Ajuste manual",Xja="Compra de credit",Zja="Pagamento",Jja="Bônus de cadastro",e2a="Cupom",t2a="Crédito de admin",n2a="Uso de API",a2a="Bônus de cadastro",o2a="Crédito manual",s2a="Síncrono",r2a="Streaming",i2a="Cobrança por token",l2a="Cobrança por requisição",c2a="Cobrança de imagem",d2a="Reasoning baixo",u2a="Reasoning médio",m2a="Reasoning alto",p2a="Não aplicável",f2a="Desconhecido",g2a="Congelado",h2a="Liberado",y2a="Cancelado",v2a="Parcialmente revertido",b2a="Ignorado",x2a={all:dja,success:uja,pending:mja,repairing:pja,failed:fja,refunded:gja,active:hja,disabled:yja,exhausted:vja,reserved:bja,redeemed:xja,suspended:$ja,deleted:wja,normal:kja,watchlisted:Cja,blocked:Sja,granted:Aja,reversed:Tja,expired:Rja,denied:Pja,draft:_ja,published:jja,deprecated:Nja,archived:Dja,public:"Público",hidden:Mja,created:Eja,checkout_opened:Ija,paid:Oja,canceled:Lja,openai_chat:Uja,openai_responses:Bja,anthropic_messages:Fja,google_vertex_ai:zja,openai_images:qja,usage_charge:Hja,bonus_signup_grant:Vja,bonus_promo_grant:Kja,bonus_referral_grant:Gja,bonus_compensation_grant:Wja,bonus_topup_grant:Yja,manual_adjustment:Qja,credit_purchase:Xja,payment:Zja,signup:Jja,coupon:e2a,admin:t2a,api:n2a,signup_bonus:a2a,manual:o2a,sync:s2a,stream:r2a,token:i2a,request:l2a,image:c2a,low:d2a,medium:u2a,high:m2a,not_applicable:p2a,unknown:f2a,frozen:g2a,released:h2a,cancelled:y2a,partially_reversed:v2a,skipped:b2a},$2a="{{count}} por página",w2a="Total: {{count}}",k2a={perPage:$2a,total:w2a},C2a="Indique e ganhe",S2a="Compartilhe seu link exclusivo. Quando o usuário indicado adicionar saldo, as recompensas de ambos ficam registradas com clareza.",A2a="Não foi possível carregar os dados de indicação",T2a="Seu link de indicação",R2a="Compartilhar",P2a="Convite copiado. Cole no WeChat para compartilhar.",_2a="Copiar",j2a="Copiado",N2a="WeChat",D2a="X",M2a="Telegram",E2a="Reddit",I2a="LinkedIn",O2a="WhatsApp",L2a="E-mail",U2a="Facebook",B2a={default:{title:"Todos os modelos de AI em uma única API da OneHop",body:"Cadastre-se pelo meu link de convite — faça a primeira recarga em até {{firstWindowDays}} dias e nós dois ganhamos {{percent}}% de volta."},x:{title:"Uma API para todos os modelos de AI 🤖",body:"Recarregue em até {{firstWindowDays}} dias com meu link e cada um ganha {{percent}}% de volta. 🚀"},telegram:{title:"Crie com todos os modelos de AI pela OneHop",body:"Use meu link de convite — a primeira recarga em até {{firstWindowDays}} dias rende {{percent}}% em crédito de indicação para nós dois."},whatsapp:{title:"Crie com todos os modelos de AI — OneHop",body:"Entre pelo meu link de convite. Recarregue em até {{firstWindowDays}} dias e nós dois ganhamos {{percent}}% de volta."},reddit:{title:"OneHop — uma API para todos os modelos de AI. Meu convite dá {{percent}}% de volta para nós dois na sua primeira recarga",body:"Recarregue em até {{firstWindowDays}} dias e nós dois ganhamos {{percent}}% em crédito de indicação."},email:{title:"Um convite para a OneHop — todos os modelos de AI em uma única API",body:`Olá,
820
821Estou usando a OneHop para chamar todos os principais modelos de AI por uma única API. Cadastre-se pelo meu link de convite e, depois da sua primeira recarga, nós dois ganhamos crédito de indicação.
822
823Faixas de recompensa: {{tiers}}.
824
825Obrigado!`},wechat:{title:"OneHop — todos os modelos de AI em uma única API",body:"Cadastre-se pelo meu link de convite. Recarregue em até {{firstWindowDays}} dias e nós dois ganhamos {{percent}}% em crédito de indicação."}},F2a="A recompensa fica visível assim que o pagamento é feito, mas primeiro é congelada para cobrir a janela de reembolso e, ao expirar, é liberada como credit de bônus de indicação OneHop.",z2a="Liberada em {{days}} dias.",q2a={referrer:"Indicante",referee:"Indicado"},H2a={referrer:": ganhe credit de indicação quando alguém que você convida faz uma recarga — {{tiers}}.",referee:": cadastre-se pelo link e faça uma recarga para ganhar também — {{tiers}}."},V2a={dayRange:"dias {{fromDay}}-{{untilDay}
825}",dayOpenEnded:"a partir do dia {{fromDay}}"},K2a="Total ganho",G2a="Recompensa de indicação liberada",W2a="Recompensa de indicação congelada",Y2a="Pessoas indicadas",Q2a="Indicações válidas",X2a="Bônus de indicado liberado",Z2a="Bônus de indicado congelado",J2a="Cancelado / estornado",eNa="Pessoas que você indicou",tNa="Detalhamento das recompensas",nNa={user:"Usuário",joined:"Data de cadastro",topups:"Recargas",earned:"Você ganhou",frozen:"Congelado",date:"Data",event:"Evento",topupAmount:"Recarga do indicado",rate:"Percentual",releaseAt:"Data de liberação",cashback:"Recompensa",status:"Status"},aNa={title:"Nenhuma indicação ainda",description:"Compartilhe seu link para começar a ganhar recompensas."},oNa={inviteeSignedUp:"Indicado cadastrado com sucesso",youSignedUp:"Você se cadastrou por indicação",inviteePaid:"Indicado realizou consumo",youPaid:"Você, como indicado, realizou consumo"},sNa={frozen:"Congelada",released:"Liberada",cancelled:"Cancelada",partially_reversed:"Parcialmente estornada",reversed:"Estornada",failed:"Falhou",skipped:"Ignorada"},rNa={title:C2a,description:S2a,error:A2a,yourLink:T2a,shareVia:R2a,wechatCopied:P2a,copy:_2a,copied:j2a,wechat:N2a,x:D2a,telegram:M2a,reddit:E2a,linkedin:I2a,whatsapp:O2a,email:L2a,facebook:U2a,share:B2a,offer:F2a,releaseDelay:z2a,role:q2a,roleOffer:H2a,policy:V2a,totalEarned:K2a,availableEarned:G2a,frozenEarned:W2a,invited:Y2a,active:Q2a,availableReceived:X2a,frozenReceived:Z2a,cancelledReversed:J2a,peopleYouInvited:eNa,history:tNa,col:nNa,empty:aNa,event:oNa,status:sNa},iNa="Configurações",lNa="Gerencie preferências da conta e padrões do console.",cNa="Conectado como {{email}}",dNa="Nome de exibição",uNa="Idioma",mNa="Fuso horário",pNa="Falha ao carregar o perfil",fNa="Falha ao salvar",gNa="Descartar alterações?",hNa="Você tem alterações não salvas. Sair agora vai descartá-las.",yNa="Descartar",vNa="Continuar editando",bNa={title:iNa,description:lNa,signedInAs:cNa,displayName:dNa,locale:uNa,timezone:mNa,failedLoad:pNa,failedSave:fNa,discardTitle:gNa,discardMessage:hNa,discardConfirm:yNa,keepEditing:vNa},xNa="Mural de tarefas",$Na="Compartilhe o OneHop com seu público e ganhe crédito de teste. Revisamos cada envio manualmente.",wNa="Link da sua publicação",kNa="https://…",CNa="Enviar",SNa="Enviado — vamos revisar em breve.",ANa="Links aceitos: {{hosts}}",TNa="Recusado antes: {{reason}}. Corrija e envie de novo.",RNa={pending:"Em análise",approved:"Creditado",rejected:"Recusado",active:"Ativo"},PNa={title:"Nenhuma tarefa no momento",description:"Volte em breve — fazemos essas campanhas periodicamente."},_Na={x_quote:{title:"Cite a gente no X",description:"Cite o post fixado do @OneHopAI e acrescente sua própria opinião.",rules:["Sua conta no X precisa ter pelo menos 6 meses e 10 seguidores ou mais.","Envie o link do seu próprio post de citação, não o do original.","O crédito cai em até 2 horas após a aprovação."]},youtube_tutorial:{title:"Publique um tutorial no YouTube",description:"Um vídeo de 6 minutos ou mais mostrando como você conectou o OneHop ao seu próprio agente.",rules:["Envie o link do vídeo depois de publicá-lo.","Seu canal do YouTube precisa de 50 inscritos ou mais.","Uma vez por conta.","O crédito cai em até 2 horas após a aprovação."]},short_video:{title:"Poste um vídeo curto",description:"Um short de 40 segundos ou mais no TikTok ou YouTube mencionando sua configuração do OneHop.",rules:["Envie o link do vídeo depois de publicá-lo.","O crédito cai em até 2 horas após a aprovação."]},github_readme:{title:"Coloque o OneHop no seu README do GitHub",description:"Adicione um crédito ao OneHop no README de um repositório seu. Cada recarga posterior rende 15% a mais.",rules:["Envie o link do repositório assim que o README estiver publicado.","É permanente, não pontual: cada recarga posterior aplica o maior valor entre o bônus padrão e os seus 15%.","O texto para copiar está abaixo."]}},jNa={load:"Não foi possível carregar o mural de tarefas",generic:"Não foi possível enviar",urlRequired:"Cole primeiro o link da sua publicação.",urlTooLong:"Esse link é muito longo.",urlMalformed:"Isso não parece um link válido.",hostNotAllowed:"Esta tarefa aceita apenas links das plataformas listadas acima.",notAPost:"Aponte para a publicação ou o vídeo específico, não para um perfil ou página inicial.",alreadySubmitted:"Você já enviou esta tarefa.",notAvailable:"Esta tarefa não está disponível no momento.",busy:"Atingimos a capacidade de revisão de hoje. Tente novamente amanhã.",emailUnverified:"Verifique seu e-mail primeiro.",accountTooNew:"Sua conta ainda não tem tempo suficiente para isso.",riskFlagged:"Esta conta não pode participar agora. Fale com o suporte se achar que é um engano.",accountInactive:"Esta conta não está ativa.",deviceAlreadyClaimed:"Outra conta neste dispositivo já participou."},NNa="Obrigado ao [OneHop]({{url}}) por patrocinar este projeto! O OneHop te dá uma única chave de API compatível com OpenAI para centenas de modelos de ponta — GPT, Claude, Gemini, DeepSeek, Kimi e Qwen. Sem malabarismo com contas de vários provedores, sem mudar código para trocar de modelo, e você paga só pelo que usar. → {{domain}}",DNa="Copiar este texto",MNa={title:xNa,description:$Na,urlLabel:wNa,urlPlaceholder:kNa,submit:CNa,submitted:SNa,allowedHosts:ANa,rejectedHint:TNa,status:RNa,empty:PNa,item:_Na,error:jNa,sponsorBlurb:NNa,copyBlurb:DNa},ENa="Fale conosco no chat",INa="Chamados de suporte",ONa="Abra um chamado e nossa equipe responderá o quanto antes.",LNa="Novo chamado",UNa={subject:"Assunto",category:"Tipo",status:"Situação",updated:"Atualizado",user:"User"},BNa={billing:"Faturamento",technical:"Técnico",account:"Conta",other:"Outro"},FNa={open:"Aberto",pending:"Pendente",resolved:"Resolvido",closed:"Fechado"},zNa={allStatuses:"Todos os status",allCategories:"All categories",search:"Search email or subject"}
825,qNa={subject:"Assunto",subjectPlaceholder:"Descreva o problema em poucas palavras",category:"Tipo",message:"Mensagem",messagePlaceholder:"Conte o que está acontecendo…",attachments:"Anexos",addAttachment:"Adicionar arquivo",submit:"Enviar chamado",cancel:"Cancelar"},HNa={you:"Você",support:"Suporte",system:"Sistema",replyPlaceholder:"Escreva uma resposta…",send:"Enviar",closedNotice:"Este chamado está fechado. Abra um novo chamado se ainda precisar de ajuda.",sendHint:"Pressione ⌘/Ctrl + Enter para enviar",back:"Voltar aos chamados",systemStatus:{open:"Chamado reaberto",pending:"Chamado marcado como aguardando sua resposta",resolved:"Chamado marcado como resolvido",closed:"Chamado fechado"}},VNa={title:"Support tickets",resolve:"Resolve",close:"Close",reopen:"Reopen",unread:"Unread"},KNa="Carregar mais",GNa={created:"Chamado enviado",replied:"Resposta enviada",statusUpdated:"Status updated",error:"Algo deu errado. Tente novamente"},WNa="O chamado não foi encontrado ou foi removido.",YNa={title:"Ainda não há chamados",body:"Encontrou um problema? Abra um chamado e vamos ajudar.",cta:"Abrir seu primeiro chamado"},QNa={liveChat:ENa,title:INa,subtitle:ONa,newTicket:LNa,columns:UNa,category:BNa,status:FNa,filters:zNa,form:qNa,thread:HNa,admin:VNa,loadMore:KNa,toast:GNa,notFound:WNa,empty:YNa},XNa="Uso",ZNa="Saldo, ritmo de consumo e para onde vai seu gasto.",JNa="Atividade",eDa="Sem atividade neste intervalo",tDa="Detalhamento de uso",nDa="Por API key",aDa="Por modelo",oDa="Por tipo de token",sDa="Sem dados",rDa="Ainda não há uso neste intervalo.",iDa="No ritmo atual, o saldo deve durar {{days}} dias (cerca de {{rate}}/dia).",lDa="saída",cDa="cache",dDa={tokens:"Tokens",requests:"Requisições",cost:"Custo"},uDa="Outros",mDa="req.",pDa="tok",fDa="Atualizando…",gDa="Sem dados",hDa="Faça uma requisição para começar a acumular dados.",yDa="Principais API keys",vDa="Recarregar",bDa={title:"Não foi possível carregar o uso"},xDa={firstToken:"primeiro token",latency:"Latência média",requests:"Requisições",spend:"Consumo",spendSub:"faturado neste período",successRate:"{{rate}}% sucesso",tokens:"Tokens",textDuration:"texto",mediaDuration:"imagem/vídeo",cacheHit:"{{rate}}% em cache",projected:"≈ {{amount}}/mês",vsPrevious:"vs período anterior"},$Da={activeDays:"Dias ativos",longestStreak:"Maior sequência",daysValue:"{{n}} dias",totalSpend:"Total no período",peakDay:"Dia mais ativo"},wDa={all:"Todo o período",custom:"Personalizado",last1h:"Última 1 hora",last30d:"Últimos 30 dias",last7d:"Últimos 7 dias",thisMonth:"Este mês",today:"Hoje",yesterday:"Ontem",byMonth:"Por mês"},kDa={failed:"Falhas",success:"Sucesso"},CDa={cacheRead:"Leitura de cache",cacheWrite:"Escrita de cache",cacheWrite1h:"Escrita de cache 1h",cacheWrite5m:"Escrita de cache 5m",completion:"Saída",prompt:"Entrada"},SDa={body:"Faça uma requisição pelo terminal ou abra o playground; o uso aparece aqui em segundos.",openPlayground:"Abrir playground",title:"Seu key está pronto"},ADa={body:"Crie seu primeiro API key, roteie todas as requisições por uma única URL e o uso aparecerá aqui.",createKey:"Criar API key",title:"Boas-vindas ao OneHop",tryPlayground:"Testar playground"},TDa="Atualizar",RDa="{{count}} requisições bem-sucedidas no filtro atual",PDa="Tokens totais",_Da="Entrada {{input}} / saída {{output}}",jDa="credit faturado",NDa="{{cost}} custo upstream real",DDa="Latência média",MDa="Primeiro token {{duration}}",EDa="Atividade de 30 dias",IDa="Requisições bem-sucedidas, volume de tokens e credit faturado.",ODa="Carregando tendência de uso",LDa="Sem tendência de uso",UDa="A tendência de uso aparece depois de requisições bem-sucedidas.",BDa="Principais modelos",FDa="credit faturado por modelo nos últimos 30 dias.",zDa="Ainda sem uso por modelo",qDa="O detalhamento por modelo aparece depois de requisições bem-sucedidas.",HDa="Modelo",VDa="Todos os modelos",KDa="Status",GDa="Protocolo",WDa="Linhas",YDa="Redefinir",QDa="Registros de uso",XDa="API key",ZDa="Endpoint",JDa="Tipo",eMa="Tokens",tMa="Custo",nMa="Duração",aMa="Hora",oMa="User-Agent",sMa="Detalhes",rMa="Detalhes da requisição",iMa="Detalhes do registro de uso e metadata de faturamento.",lMa="ID da requisição",cMa="Operação",dMa="Tokens de entrada",uMa="Tokens de saída",mMa="Tokens de leitura de cache",pMa="Tokens de escrita de cache",fMa="Custo de entrada",gMa="Custo de saída",hMa="Custo de leitura de cache",yMa="Custo de escrita de cache",vMa="Código de erro",bMa="Mensagem de erro",xMa="Não encontrado.",$Ma="credit",wMa="Total {{count}}",kMa="Carregando registros de uso",CMa="Sem registros de uso",SMa="Tente outro conjunto de filtros.",AMa="Os registros aparecem quando as requisições passarem pelas suas API keys.",TMa="Página {{page}} · mostrando {{shown}} de {{total}} registros correspondentes",RMa="Anterior",PMa="Próxima",_Ma="Credit",jMa="Tokens",NMa="Requisições",DMa={time:"Hora",apiKey:"API Key",model:"Modelo",reasoningEffort:"Esforço de raciocínio",endpoint:"Endpoint",type:"Tipo",billingMode:"Modo de faturamento",inputTokens:"Tokens de entrada",outputTokens:"Tokens de saída",cacheReadTokens:"Tokens de leitura de cache",cacheWriteTokens:"Tokens de escrita de cache",totalTokens:"Tokens totais",billedCredit:"Credit faturado",firstTokenMs:"Primeiro token ms",durationMs:"Duração ms",status:"Status",userAgent:"User-Agent"},MMa={mon:"Seg",wed:"Qua",fri:"Sex"},EMa="Menos",IMa="Mais",OMa={title:XNa,description:ZNa,activity:JNa,activityEmpty:eDa,breakdown:tDa,byApiKey:nDa,byModel:aDa,byTokenType:oDa,chartEmpty:sDa,chartEmptyHint:rDa,burnRate:iDa,in:"entrada",out:lDa,cache:cDa,metric:dDa,other:uDa,req:mDa,tok:pDa,refreshing:fDa,topEmpty:gDa,topEmptyHint:hDa,topKeys:yDa,topUp:vDa,error:bDa,kpi:xDa,stat:$Da,range:wDa,requests:kDa,tokenType:CDa,noRequests:SDa,welcome:ADa,refresh:TDa,successfulFilter:RDa,totalTokens:PDa,inOut:_Da,billedCredit:jDa,upstreamA
825ctualCost:NDa,avgLatency:DDa,firstToken:MDa,activityTitle:EDa,activityDescription:IDa,loadingTrend:ODa,noUsageTrend:LDa,trendDescription:UDa,topModels:BDa,topModelsDescription:FDa,noModelUsage:zDa,noModelUsageDescription:qDa,model:HDa,allModels:VDa,status:KDa,protocol:GDa,rows:WDa,reset:YDa,tableLabel:QDa,apiKey:XDa,endpoint:ZDa,type:JDa,tokens:eMa,cost:tMa,duration:nMa,time:aMa,userAgent:oMa,details:sMa,requestDetail:rMa,detailDescription:iMa,requestId:lMa,operation:cMa,inputTokens:dMa,outputTokens:uMa,cacheReadTokens:mMa,cacheWriteTokens:pMa,inputCost:fMa,outputCost:gMa,cacheReadCost:hMa,cacheWriteCost:yMa,errorCode:vMa,errorMessage:bMa,notFound:xMa,creditSuffix:$Ma,total:wMa,loadingRecords:kMa,noRecords:CMa,differentFilters:SMa,recordsEmpty:AMa,pageSummary:TMa,previous:RMa,next:PMa,chartCredit:_Ma,chartTokens:jMa,chartRequests:NMa,csv:DMa,weekday:MMa,activityLess:EMa,activityMore:IMa},LMa="Signup access",UMa="Controlled-launch registration gate. Approved emails, domains, existing users, and active admins can create accounts.",BMa="Signup access allowlist",FMa="No allowlist entries",zMa="Email / domain",qMa="Note",HMa="Status",VMa="Registration",KMa="Expires",GMa="Invites",WMa="Updated",YMa="Action",QMa="Add",XMa="Bulk add",ZMa="Edit",JMa="Save",eEa="Invite",tEa="Restore",nEa="Remove",aEa="Add signup access",oEa="Edit {{email}}",sEa="Bulk add signup access",rEa="Add a specific email or a whole domain with @company.com. Existing users and active admins are always allowed.",iEa="Paste one email or @domain per line. Invalid and duplicate rows will be skipped.",lEa="Email or domain",cEa="[email protected] or @company.com",dEa="Use @company.com to approve an entire domain.",uEa="Note (optional)",mEa="e.g. founding team",pEa="Expiry (optional)",fEa="Leave empty for no expiry. Expired entries no longer allow new signups.",gEa="Emails / domains",hEa=`[email protected]
826[email protected]
827@partner.com`,yEa="Search",vEa="Search email or domain",bEa="Status",xEa="Access check",$Ea="[email protected]",wEa="Check",kEa="Allowed",CEa="Denied",SEa={existing_user:"Existing user always allowed",active_admin:"Active admin always allowed",email_allowlist:"Matched exact email",domain_allowlist:"Matched domain rule",not_allowed:"No active rule matched"},AEa="Registered",TEa="Not registered",REa="Admin",PEa="Domain rule",_Ea="Never",jEa="Added to signup access.",NEa="Signup access updated.",DEa="Added {{count}} entries.",MEa="Invite sent.",EEa="Entry restored.",IEa="Removed from signup access.",OEa="Remove {{email}} from signup access? They can no longer create a new account unless another rule allows them.",LEa={title:"Email domain rules",description:"Hot-configurable email-domain lists layered on the built-in baseline. Blacklisted domains are blocked at signup; mainstream domains skip the watchlist.",add:"Add domain",addTitle:"Add domain rule",addDescription:"Blacklist blocks signup (403). Mainstream marks the domain as trusted so new users are not watchlisted.",kindLabel:"List",kindBlacklist:"Blacklist — block signup",kindMainstream:"Mainstream — skip watchlist",domainLabel:"Domain",domainPlaceholder:"example.com",noteLabel:"Note",notePlaceholder:"Optional — why this domain",search:"Search",searchPlaceholder:"Filter by domain",kindFilter:"List",allKinds:"All lists",statusFilter:"Status",statusActive:"Active",statusRevoked:"Removed",statusAll:"All",label:"Email domain rules",empty:"No domain rules",colDomain:"Domain",colKind:"List",colNote:"Note",colAddedBy:"Added by",colCreated:"Created",status:"Status",action:"Action",remove:"Remove",restore:"Restore",confirmRemove:"Remove rule for {{domain}}?",added:"Domain rule added",removed:"Domain rule removed",restored:"Domain rule restored",badgeBlacklist:"Blacklist",badgeMainstream:"Mainstream"},UEa={title:LMa,description:UMa,label:BMa,empty:FMa,email:zMa,note:qMa,status:HMa,registration:VMa,expiresAt:KMa,invites:GMa,updatedAt:WMa,action:YMa,add:QMa,bulkAdd:XMa,edit:ZMa,save:JMa,invite:eEa,restore:tEa,revoke:nEa,newTitle:aEa,editTitle:oEa,bulkTitle:sEa,formDescription:rEa,bulkDescription:iEa,emailLabel:lEa,emailPlaceholder:cEa,emailHint:dEa,noteLabel:uEa,notePlaceholder:mEa,expiresAtLabel:pEa,expiresAtHint:fEa,bulkEntriesLabel:gEa,bulkEntriesPlaceholder:hEa,search:yEa,searchPlaceholder:vEa,statusFilter:bEa,checkLabel:xEa,checkPlaceholder:$Ea,check:wEa,checkAllowed:kEa,checkDenied:CEa,checkReasons:SEa,registered:AEa,notRegistered:TEa,adminAllowed:REa,domainRule:PEa,never:_Ea,added:jEa,updated:NEa,bulkAdded:DEa,invited:MEa,restored:EEa,revoked:IEa,confirmRevoke:OEa,domainRules:LEa},BEa="Ops Billing",FEa="Payments, wallets and refunds across all users.",zEa={payments:"Payments",wallets:"Wallets",refunds:"Refunds"},qEa="User email",HEa="Search by email...",VEa="Created",KEa="Created",GEa="Amount (USD)",WEa="Min",YEa="Max",QEa="Refunds",XEa="No refunds",ZEa="Refund",JEa="Type",eIa="Full refund",tIa="Partial refund",nIa="Original payment",aIa="Wallets",oIa="Wallet",sIa="User",rIa="Total",iIa="Purchased",lIa="Bonus",cIa="No wallets",dIa="Payments",uIa="Payment status",mIa="No payments",pIa="Payment",fIa="Status",gIa="Amount",hIa="Paid",yIa="Refund",vIa="Not refundable (status must be paid)",bIa="View in Stripe Dashboard",xIa="Failed + dead-letter webhooks in last 7 days. 0=green, 1-9=yellow, 10+=red.",$Ia="unhealthy",wIa="Refund {{id}}",kIa="This will refund {{user}} via Stripe. The platform fee shown below is deducted from the amount returned; uncheck it to waive. Promotional credits granted with the original payment will be forfeited proportionally.",CIa="Refund amount (USD)",SIa="Max ${{value}}",AIa="Reason",TIa="Загрузка предпросмотра возврата…",RIa="Не удалось загрузить предпросмотр возврата. Возврат недоступен, пока предпросмотр не загрузится.",PIa="Транзакция для возврата не найдена — возможно, этот платёж уже полностью возвращён.",_Ia="Оплачено",jIa="Уже возвращено",NIa="Этот возврат",DIa="Изымаемые кредиты",MIa="Включает {{amount}} кредитов купонной скидки, изымаемых пропорционально",EIa="Включает {{amount}} дополнительно начисленных кредитов, изымаемых пропорционально",IIa="Бонус отозван",OIa="Вместе с этим возвратом будет отозван промобонус {{amount}}.",LIa="Возврат через Stripe",UIa="Удержать комиссию ({{fee}}) — покрывает издержки Stripe",BIa="Комиссия ({{fee}})",FIa="Сумма превышает максимально возможный возврат {{value}}",zIa="Введите корректную положительную сумму",qIa="Пользователь уже израсходовал часть купленных кредитов. Максимум к возврату: {{value}}",HIa="Этот платёж уже полностью возвращён",VIa="Сумма к возврату после комиссии слишком мала. Верните не менее {{value}}.",KIa="Cancel",GIa="Issue refund",WIa="Submitting...",YIa="Refund submitted",QIa="Stripe will return the funds within 1-3 business days. Audit log written.",XIa="Refund failed",ZIa={title:BEa,description:FEa,tabs:zEa,emailFilter:qEa,emailPlaceholder:HEa,created:VEa,createdRange:KEa,amountRange:GEa,amountMin:WEa,amountMax:YEa,refunds:QEa,noRefunds:XEa,refundId:ZEa,refundType:JEa,typeRefund:eIa,typePartialRefund:tIa,originalPayment:nIa,wallets:aIa,wallet:oIa,user:sIa,total:rIa,purchased:iIa,bonus:lIa,noWallets:cIa,payments:dIa,paymentStatus:uIa,noPayments:mIa,payment:pIa,status:fIa,amount:gIa,paid:hIa,refund:yIa,notRefundable:vIa,viewInStripe:bIa,webhookHealthHint:xIa,unhealthyWebhooks:$Ia,refundConfirmTitle:wIa,refundConfirmBody:kIa,refundAmountLabel:CIa,refundMaxHint:SIa,refundReasonLabel:AIa,refundPreviewLoading:TIa,refundPreviewFailed:R
827Ia,refundNoRefundableTx:PIa,refundPaidRow:_Ia,refundAlreadyRefundedRow:jIa,refundThisRefundRow:NIa,refundCreditReclaimRow:DIa,refundCreditCouponNote:MIa,refundCreditExtraNote:EIa,refundBonusReverseRow:IIa,refundBonusForfeitWarning:OIa,refundStripeReturnRow:LIa,refundFeeToggle:UIa,refundPlatformFeeRow:BIa,refundExceedsMax:FIa,refundAmountInvalid:zIa,refundInsufficientCredit:qIa,refundAlreadyFull:HIa,refundBelowMin:VIa,cancel:KIa,confirmRefund:GIa,submitting:WIa,refundSubmittedTitle:YIa,refundSubmittedBody:QIa,refundFailedTitle:XIa},JIa="Campaigns",eOa="Audience segments, restricted-model access, model discounts, and targeted credit grants.",tOa={mobileLabel:"Раздел кампаний",segments:"Audiences",access:"Model access",discounts:"Model discounts",grants:"Targeted grants",recurring:"Periodic grants"},nOa="Status",aOa="Actions",oOa="All users",sOa="Always",rOa="No expiry",iOa="Active window",lOa="Leave blank for always-on. Times are end-of-day on the chosen dates.",cOa="Valid from",dOa="Valid to",uOa="Pause",mOa="Resume",pOa="Add",fOa="Remove",gOa="Delete",hOa="Clear",yOa="Close",vOa={allKinds:"Все типы",segmentKindStatic:"Статический",segmentKindDynamic:"Динамический",grantKindGrant:"Начислить",grantKindRevoke:"Отозвать",allStatuses:"Все статусы",statusActive:"Активен",statusPaused:"Приостановлен",statusArchived:"В архиве",statusEnded:"Завершен",statusPending:"Ожидает",statusProcessing:"Обрабатывается",statusCompleted:"Выполнен",statusFailed:"Ошибка"},bOa={title:"Audiences",create:"New audience",empty:"No audiences yet. Create one to target access, discounts, and grants.",name:"Name",namePlaceholder:"e.g. China power users",description:"Description",kind:"Kind",kind_static:"Static",kind_dynamic:"Dynamic",kindHint:"Static = a hand-picked list of users. Dynamic = users matching a rule, refreshed on materialize.",members:"Members",materialized:"Last refreshed",materializeDone:"Materialized {{count}} members",basics:"Basics",sheetDescription:"Audiences group users so you can target model access, discounts, and grants.",saved:"Audience saved",created:"Audience created",rule:"Matching rule",ruleHint:"All conditions must match (AND). An empty rule matches no one.",countryIn:"Country in",countryInHint:"Comma-separated ISO-2 codes, e.g. CN, US, JP.",signupAfter:"Signed up after",signupBefore:"Signed up before",minSpend:"Min cumulative spend (USD)",minSpendHint:"Only users whose lifetime spend is at least this.",previewing:"Estimating…",matchCount:"Estimated match: {{value}} users",membersTitle:"Members",membersHint:"Search and add users. Rule-matched members are read-only.",addMembers:"Add users",searchUsers:"Search by email or ID",noUsers:"No matching users.",noMembers:"No members yet.",membersAdded:"{{count}} member added",membersAdded_plural:"{{count}} members added",source_manual:"Manual",source_rule:"Rule",materializeTitle:"Materialize",materializeHint:"Snapshot the rule into the member list. Re-run anytime to refresh.",materialize:"Materialize now",materializing:"Materializing…",materializeConfirm:"Refresh members from the current rule? This replaces the rule-matched snapshot.",lastMaterialized:"Last materialized {{value}}",neverMaterialized:"Never materialized",deleteSegment:"Delete audience",deleteConfirm:"Delete this audience? Access, discounts, and grants referencing it will lose this targeting."},xOa={title:"Model access",create:"Grant access",empty:"No access grants yet.",model:"Model",segment:"Audience",target:"Target",validFrom:"Valid from",validTo:"Valid to",sheetDescription:"Give a restricted model to an audience for an optional time window.",created:"Access granted",statusUpdated:"Status updated",deleteConfirm:"Remove this access grant?",noSegmentsTitle:"Create an audience first",noSegmentsDescription:"Access is granted to an audience. Create an audience on the Audiences tab, then come back to grant model access.",publicHint:"This model is public — everyone can already use it.",publicModelTitle:"Model is public",publicModelWarning:"{{model}} is public, so this grant has no effect until it is set to restricted on the Models page. Flip it to restricted there to gate it to this audie
827nce.",createAnyway:"Create anyway"},$Oa={title:"Model discounts",create:"New discount",empty:"No discounts yet.",model:"Model",audience:"Audience",audienceHint:"Leave as all users to discount for everyone.",discount:"Discount",window:"Window",live:"Live",end:"End",amount:"Discount",target:"Target",name:"Internal name",nameHint:"Optional label for your own reference.",percentLabel:"Extra off the platform price",percentHint:"1–99%. Applied on top of our platform price (our_price), not the official price.",percentError:"Enter a value between 1 and 99.",previewPlatform:"Discounted platform price",previewVsOfficial:"Saved vs official",pickStart:"Pick a start date",sheetDescription:"Discounts apply on top of the platform price. The official price is shown for comparison only.",created:"Discount created",saved:"Discount saved",statusUpdated:"Status updated",deleteConfirm:"Delete this discount?",liveReadonly:"This discount is live — value, window, and name are locked. Pause or end it to make changes.",terminalReadonly:"This discount has ended and is read-only."},wOa={title:"Targeted grants",create:"New grant",empty:"No targeted grants yet.",time:"Time",kind:"Kind",kind_grant:"Grant",kind_revoke:"Revoke",model:"Models",modelHint:"Credit is shared across the selected models — spending on any of them draws from the same balance.",pickModels:"Pick models",nModels:"{{count}} models selected",pasteEmails:"Bulk add by email",pasteEmailsPlaceholder:"[email protected], [email protected] — separated by newline, comma or semicolon",importEmails:"Parse & add",importMatched:"Matched {{count}} users.",importUnmatched:"{{count}} emails not found:",importInvalid:"{{count}} invalid entries skipped:",importInactive:"{{count}} matched but inactive — will be skipped:",preset7d:"7 days",preset30d:"30 days",preset90d:"90 days",total:"Total",notifyYes:"Yes",notifyNo:"No",recipients:"Recipients",amount:"Amount",expiry:"Expires",expiryHint:"Optional. Unused balance expires on this date.",audience:"Audience",bySegment:"By audience",byUsers:"Specific users",segment:"Audience",users:"Users",searchUsers:"Search by email or ID",noUsers:"No matching users.",grantDetails:"Grant details",amountEach:"Amount per recipient (USD)",amountHint:"0.01–2000 per recipient.",notifyEmail:"Email recipients",note:"Note",summary:"{{count}} recipients × {{amount}} = {{total}} total",send:"Send grant",sending:"Queuing…",queued:"Grant queued — fanning out to recipients",confirmTitle:"Send targeted grant?",confirmMessage:"Grant {{amount}} each to {{count}} recipients ({{total}} total)?",confirmSend:"Send grant",sheetDescription:"Grant model-restricted credit to an audience or a hand-picked list of users.",batchTitle:"Grant batch",succeeded:"Succeeded",failed:"Failed",revokedAmount:"Reclaimed",completedAt:"Completed",revoke:"Revoke",revokeConfirm:"Reclaim unused balance from {{count}} recipients of {{model}}?",revokeQueued:"Revoke queued"},kOa={title:"Periodic grants",create:"New periodic grant",editTitle:"Edit periodic grant",empty:"No periodic grants yet. Create one to give recurring free tokens or credit on a daily or weekly cadence.",sheetDescription:"Free tokens or restricted credit, refreshed for an audience every period (lazily, on first use).",basics:"Basics",name:"Name",namePlaceholder:"e.g. Daily free Kimi tokens",unit:"Unit",unitHint:"Tokens = free token allowance per period. USD = restricted credit (single model only).",unitLocked:"Unit is fixed after creation — create a new campaign to switch.",unit_tokens:"Tokens",unit_usd:"USD",allUnits:"All units",targeting:"Targeting",models:"Models",modelsHint:"Free tokens are usable across all selected models.",model:"Model",usdSingleModelHint:"USD grants are restricted to one model — multi-model would make spend unattributable.",pickModels:"Pick models",nModels:"{{count}} model selected",nModels_plural:"{{count}} models selected",audience:"Audience",audienceHint:"Leave as all users to grant to everyone.",schedule:"Amount & schedule",perPeriod:"Per period",tokensHint:"Positive integer, e.g. 100000 tokens per period.",usdHint:"
8270.01–2000 USD per period.",cadence:"Cadence",cadence_daily:"Daily",cadence_weekly:"Weekly",anchorTz:"Anchor timezone",anchorTzHint:"Period boundaries follow local midnight in this timezone.",startsAt:"Starts",startsAtHint:"Optional. Blank = effective immediately.",endsAt:"Ends",endsAtHint:"Optional. Blank = no end date.",immediately:"Immediately",excludeRisky:"Exclude risky accounts",thisPeriod:"This period (users · used/granted)",allStatuses:"All statuses",status_draft:"Draft",status_active:"Active",status_paused:"Paused",status_archived:"Archived",created:"Periodic grant created",saved:"Periodic grant saved"},COa={title:JIa,description:eOa,tabs:tOa,status:nOa,actions:aOa,allUsers:oOa,always:sOa,noExpiry:rOa,window:iOa,windowHint:lOa,validFrom:cOa,validTo:dOa,pause:uOa,resume:mOa,actionAdd:pOa,actionRemove:fOa,actionDelete:gOa,actionClear:hOa,actionClose:yOa,filters:vOa,segments:bOa,access:xOa,discounts:$Oa,grants:wOa,recurring:kOa},SOa="Announcements",AOa="Banners shown at the top of the marketing site and the console.",TOa="Banners",ROa="Top-of-page banners shown on www and console.",POa="New Banner",_Oa="No banners yet. Create one to show a top-of-page announcement.",jOa="Message",NOa="Supports inline links: [text](https://… or /path). Multiple links allowed.",DOa="CTA Label",MOa="CTA Link",EOa="Severity",IOa="Audience",OOa="Starts At",LOa="Ends At",UOa="Dismissible",BOa="Status",FOa="Archive",zOa="Archive this banner? It will no longer be shown to users.",qOa="New Banner",HOa="Edit Banner",VOa="Title",KOa="Type",GOa="Content",WOa="Display type",YOa="Banner",QOa="Modal",XOa="Draft",ZOa="Active",JOa="Info",e3a="Warning",t3a="Critical",n3a="Console only",a3a="Public site only",o3a="Both",s3a="Hero image",r3a="Upload an image, or paste an https URL. Optional. PNG / JPEG / WebP / GIF, up to 5MB.",i3a="Upload",l3a="Uploading…",c3a="Remove",d3a="Only PNG, JPEG, WebP and GIF images are supported.",u3a="Image must be 5MB or smaller.",m3a="Upload failed, please try again.",p3a="Title",f3a="Body",g3a="Action buttons",h3a="Button label",y3a="Button link",v3a="Style",b3a="Add button",x3a="Remove",$3a="Primary",w3a="Secondary",k3a="Link",C3a="Simplified Chinese (source)",S3a="Fill in Simplified Chinese only, then translate to other languages in one click.",A3a="Translate to all languages",T3a="Translating…",R3a="Other languages (translated, editable)",P3a="Translated {{ok}} languages",_3a="{{failed}} languages failed — fill in manually or retry",j3a="Chinese source changed but translations weren't refreshed — click Translate again or non-Chinese users will see outdated copy.",N3a="Re-show to users who already dismissed it",D3a="Fill in the Simplified Chinese body first.",M3a={title:SOa,description:AOa,annTitle:TOa,annDescription:ROa,annNewButton:POa,annEmpty:_Oa,annMessage:jOa,annInlineLinkHint:NOa,annCtaText:DOa,annCtaUrl:MOa,annSeverity:EOa,annAudience:IOa,annStartsAt:OOa,annEndsAt:LOa,annDismissible:UOa,annStatus:BOa,annArchive:FOa,annArchiveConfirm:zOa,annCreateTitle:qOa,annEditTitle:HOa,annColTitle:VOa,annColType:KOa,annColContent:GOa,annDisplayType:WOa,annTypeBanner:YOa,annTypeModal:QOa,annStatusDraft:XOa,annStatusActive:ZOa,annSevInfo:JOa,annSevWarning:e3a,annSevCritical:t3a,annAudConsole:n3a,annAudPublic:a3a,annAudAll:o3a,annHeroImage:s3a,annHeroImageHint:r3a,annHeroImageUpload:i3a,annHeroImageUploading:l3a,annHeroImageRemove:c3a,annHeroImageBadType:d3a,annHeroImageTooLarge:u3a,annHeroImageUploadFailed:m3a,annModalTitle:p3a,annBody:f3a,annActions:g3a,annActionLabel:h3a,annActionUrl:y3a,annActionVariant:v3a,annActionAdd:b3a,annActionRemove:x3a,annVariantPrimary:$3a,annVariantSecondary:w3a,annVariantLink:k3a,annSourceLocale:C3a,annSourceHint:S3a,annTranslate:A3a,annTranslating:T3a,annOtherLocales:R3a,annTranslateDone:P3a,annTranslateParti
827al:_3a,annTranslateStale:j3a,annBumpRevision:N3a,annTranslateNeedSource:D3a},E3a="Operations dashboard",I3a="Real-time overview of platform health, usage, and alerts.",O3a="Refresh",L3a="Refreshing",U3a="Updated {{time}}",B3a="Loading dashboard",F3a="Failed to load dashboard",z3a="No data",q3a="No traffic yet",H3a="Video fail rate",V3a="Avg latency",K3a="Error types",G3a="No errors",W3a="Model anomalies",Y3a="All models healthy",Q3a="Components",X3a="req",Z3a="Checkout abandon",J3a="Refunds",eLa="Chargebacks",tLa="First-charge conversion",nLa={kpis:"Key metrics",alerts:"Alerts",health:"System health",payment:"Payment health",revenue:"Revenue & growth",trend:"Trend",alertSettings:"Alert settings",leaderboard:"Growth leaderboards"},aLa={title:"Referral leaderboard",boardAria:"Select leaderboard",rangeAria:"Select time range",boards:{invites:"Invites",revenue:"Referred revenue"},ranges:{today:"Today","3d":"3d","7d":"7d","30d":"30d"},ofTotal:"of {{total}}",countPair:"{{valid}} / {{total}} valid",empty:"No referrals in this window",failedLoad:"Failed to load leaderboard",validHint:"Valid = normal risk status + active binding"},oLa={requests:"Requests",successRate:"Payment success",activeUsers:"Active users",newSignups:"New signups",newSignupsHint:"Только обычные пользователи (без помеченных)",billedCredit:"Billed credit",errorRate:"Error rate",avgLatency:"Avg latency",balance:"Platform balance",vsPrevious:"{{delta}} vs previous",vsYesterday:"vs yesterday",noChange:"No change",successFailed:"{{success}} ok · {{failed}} fail"},sLa={today:"Revenue today",trendTitle:"Revenue today vs yesterday",monthDetail:"{{count}} charges · MTD {{mtd}}"},rLa={summary:"{{paid}} paid · {{failed}} failed · {{pending}} pending"},iLa={paidOfSignups:"{{paid}} first-charged / {{signups}} signups"},lLa={healthy:"Healthy",degraded:"Degraded",down:"Down",unknown:"Unknown"},cLa={critical:"Critical",warning:"Warning",info:"Info",ok:"Healthy"},dLa={operational:"Operational",degraded:"Degraded",down:"Down",upstream:"Upstream channels",gateway:"Gateway",billing:"Billing",jobs:"Job queue",tierReason:{ok:"Healthy",watch:"Watch: nearing threshold",warning:"Warning: over warn line",critical:"Critical: over crit line"}},uLa={title:"Active alerts",empty:"All systems operational",activeCount:"{{count}} active alerts",triggeredAt:"Triggered {{time}}",viewDetail:"View detail",acknowledge:"Acknowledge",resolved:"Resolved"},mLa={title:"Alert settings",description:"Set warning / critical thresholds for the 6 alert types; ops is notified when a metric crosses the line. Severity is derived from the tier automatically.",enabled:"Enabled",warnThreshold:"Warning threshold",critThreshold:"Critical threshold",cooldown:"Cooldown (min)",cooldownHint:"Minimum gap between two notifications for the same alert, to prevent spam.",rateHint:"Rate, 0–1 (e.g. 0.05 = 5%).",countHint:"Absolute value, ≥ 0.",directionHigher:"Higher is worse: warning ≤ critical.",directionLower:"Lower is worse: warning ≥ critical.",lastFired:"Last fired {{time}}",neverFired:"Never fired",save:"Save all",saving:"Saving",saved:"Alert settings saved",saveError:"Failed to save",readonlyHint:"You have read-only access.",noData:"No alert settings",errors:{directionHigher:"Warning threshold must be ≤ critical threshold",directionLower:"Warning threshold must be ≥ critical threshold",rateRange:"Rate thresholds must be within 0–1",nonNegative:"Thresholds must be ≥ 0",cooldownNonNegative:"Cooldown must be ≥ 0",required:"Threshold is required"},types:{payment_success_rate_low:"Payment success rate low",gateway_error_rate_high:"Gateway error rate high",model_error_spike:"Model error spike",webhook_dead_letter:"Webhook dead letter backlog",system_component_down:"System component down",negative_balance_exposure:"Negative balance exposure"}},pLa={label:"Time range",today:"Today",days7:"7 days",days30:"30 days"},fLa="{{failed}}/{{total}} jobs",gLa="{{delta}}pt vs yesterday",hLa="Low sample ({{n}})",yLa="Had gateway calls",vLa="Last 7d cohort · normal users only",bLa="Refund rate {{rate}}%",xLa={funnel:"opened {{opened}} · paid {{paid}}"},$La={title:E3a,description:I3a,refresh:O3a,refreshing:L3a,lastUpdated:U3a,loading:B3a,failedLoad:F3a,empty:z3a,noTraffic:q3a,videoFailRate:H3a,avgLatency:V3a,errorTypes:K3a,noErrors:G3a,modelAnomalies:W3a,noAnomalies:Y3a,components:Q3a,req:X3a,abandonRate:Z3a,refunds:J3a,chargebacks:eLa,firstChargeConversion:tLa,sections:nLa,leaderboard:aLa,kpi:oLa,revenue:sLa,orders:rLa,conversion:iLa,componentStatus:lLa,severity:cLa,health:dLa,alerts:uLa,alertSettings:mLa,range:pLa,videoJobsDetail:fLa,vsYesterdayPt:gLa,lowSample:hLa,activeUsersHint:yLa,conversionCohortHint:vLa,refundRate:bLa,checkout:xLa},wLa="Loading...",kLa="Admin permission required",CLa="Your account does not have permission to access this administrator page.",SLa={loading:wLa,permissionRequired:kLa,permissionDescription:CLa},ALa="User growth",TLa="Signup rewards, discount codes, referrals, and credit grants. Manual grants live on the Users page.",RLa={mobileLabel:"Раздел роста",onboarding:"Signup & new users",discount:"Discount codes",referral:"Referral cashback",grants:"Credit grants",topup:"Top-up bonus",redeem:"Коды пополнения",tasks:"Task wall"},PLa="Coupon batch",_La="Promotion rule",jLa="Count",NLa="Batch code",DLa="Creating...",MLa="Create batch",ELa="{{count}} coupon code created",ILa="{{count}} coupon codes created",OLa="Batch {{code}}",LLa="Copied",ULa="Copy all",BLa="Credit grants",FLa="Source",zLa="Status",qLa="No grants yet",HLa="Coupon redemptions, signup bonuses, and manual grants appear here.",VLa="Time",KLa="User",GLa="Amount",WLa="Signup bonus",YLa="Controls the credit automatically granted to new users. Disable it to stop future signup grants.",QLa="Enable signup credit",XLa="Amount (USD)",ZLa="Save signup bonus",JLa="Saving...",e4a="Current amount {{amount}}",t4a="Referral cashback",n4a="Configure double-sided referral rewards, release delay, caps, and billing-page messaging.",a4a="Enable referral cashback",o4a="Reward tiers",s4a="Add tier",r4a="Recipient",i4a="From day",l4a="Until day",c4a="Percent",d4a="Label",u4a="Action",m4a="Inviter",p4a="Invitee",f4a="No end",g4a="Remove tier",h4a="Release delay (days)",y4a="Per-topup cap (USD)",v4a="Min topup (USD, blank = none)",b4a="Cashback expiry (days, blank = never)",x4a="Billing-page countdown banner",$4a="Banner title",w4a="Subtitle",k4a="Countdown mode",C4a="Global deadline",S4a="Each invitee's 30-day window",A4a="Ends at",T4a="Save referral settings",R4a="v{{version}}",P4a="Saving reward tiers, release delay, caps, or expiry publishes a NEW version. Existing referral relationships keep the version they were bound under — only new signups get the new terms. Pausing only affects new signups.",_4a="Version history",j4a="Version",N4a="Status",D4a="Reward tiers",M4a="Published",E4a="Superseded",I4a="current",O4a="Top-up discount codes",L4a="Discount codes lower what users pay at checkout; the full top-up amount is credited only after payment succeeds. Configure here, then generate codes below.",U4a="Enable discount codes",B4a="Discount type",F4a="Fixed amount off (USD)",z4a="Percentage off (%)",q4a="Amou
827nt off (USD)",H4a="Percentage off (0-100)",V4a="Save discount",K4a="Default low-balance alert",G4a="New users get an email low-balance alert at this threshold by default. Changing it only affects future signups, not existing wallets.",W4a="Threshold (USD)",Y4a="Save threshold",Q4a="Current: {{amount}}",X4a="Generate codes against the discount rule above.",Z4a="In effect: {{state}} · {{value}} off",J4a="enabled",e5a="disabled",t5a="Issued codes",n5a="Pick a batch to see who redeemed each code.",a5a="No batches yet",o5a="Generate a batch above to start tracking redemptions.",s5a="Total",r5a="Redeemed",i5a="Reserved",l5a="Available",c5a="Codes in {{code}}",d5a="No codes in this batch",u5a="Code",m5a="Redeemed by",p5a="Redeemed at",f5a="Paid",g5a="Discount",h5a="Создать коды",y5a="Общий код — это один код, который многие пользователи могут активировать до N раз; пакет уникальных кодов — это N одноразовых кодов.",v5a="Тип кода",b5a="Один общий код",x5a="Пакет уникальных кодов",$5a="Текст кода (оставьте пустым для случайного)",w5a="напр. WELCOME100",k5a="Всего активаций (N)",C5a="На пользователя",S5a="Истекает (необязательно)",A5a="группа (необязательно)",T5a="Создать общий код",R5a="Общий код создан",P5a="Использовать скидку для этого пакета (иначе правило выше)",_5a="Общие коды",j5a="Один код, много пользователей. Счётчик использований отражает оплаченные активации.",N5a="Общих кодов пока нет",D5a="Использовано / лимит",M5a="На пользователя",E5a="Истекает",I5a="Отключить",O5a="Отключить этот код?",L5a="Новые оформления заказа блокируются немедленно. Заказы, уже находящиеся в оформлении, могут быть завершены.",U5a="Код отключён",B5a="CSV",F5a="Статус",z5a="E-mail",q5a={code:"Код",discount:"Скидка",redeemed:"Активировано",cap:"Лимит",perUser:"На пользователя",status:"Статус",expiresAt:"Истекает",batch:"Пакет",createdAt:"Создано",redeemedBy:"Кем активировано",redeemedAt:"Когда активировано",paid:"Оплачено",discountAmount:"Скидка",email:"Email",credited:"Credited",bonus:"Bonus",paidAt:"Paid at"},H5a="Amount",V5a="Bound at",K5a="Counterparty",G5a="Invitee",W5a="Inviter",Y5a="Rate",Q5a="Released",X5a="Role",Z5a="Tier",J5a="Top-up",eUa="Load more",tUa="No referrals under this version",nUa="No cashback under this version",aUa="Referrals",oUa="Referral records",sUa="Cashback records",rUa="Version detail",iUa={title:"Top-up bonus",description:"Reward bigger top-ups with bonus credit. Each tier can grant general credit or credit restricted to a model group.",enabled:"Enable top-up bonus",saved:"Top-up bonus saved",tiers:"Bonus tiers",tiersHint:"Top-up matches the highest tier whose threshold it reaches. Restricted credit only applies to synchronous text/image calls — not video or async image jobs.",noTiers:"No tiers yet. Add one to start rewarding top-ups.",min:"Min top-up (USD)",rewardType:"Reward",bonus:"Fixed (USD)",percent:"Percent (%)",rewardBonus:"Bonus amount (USD)",rewardPercent:"Percent of top-up (%)",expiryDays:"Expiry (days, blank = never)",noExpiry:"Never",scope:"Credit scope",scopeHint:"General credit works on any model; a model group restricts the bonus to those models.",scopeGeneral:"General (any model)",removeTier:"Remove tier",addTier:"Add tier",antifraud:"Abuse guards",minTopup:"Min top-up to qualify (USD, blank = none)",maxBonusPerUser:"Max bonus per user (USD, blank = none)",none:"None",excludeRisky:"Exclude watchlisted / blocked users",save:"Save top-up bonus",createScope:"New restricted model group",createScopeDescription:"Pick the models a restricted bonus may be spent on, then reference this group from a tier above.",scopeName:"Group name",scopeNamePlaceholder:"High-margin models",scopeModels:"Models",pickModels:"Pick models",nModels:"{{count}} models",createScopeButton:"Create group",scopeCreated:"Model group created"},lUa="Создать коды пополнения",cUa="Коды пополнения в формате предоплаченных карт. Пользователь вводит код на странице биллинга, и номинал сразу зачисляется на баÐ
827»Ð°Ð½Ñ (бонусный баланс, без оплаты).",dUa="Название партии (необязательно)",uUa="Например: подарок Conf-2026",mUa="Количество кодов",pUa="Номинал одного кода (USD)",fUa="Лимит активаций из этой партии на аккаунт (пусто = без лимита)",gUa="Без лимита",hUa="Срок действия кода (необязательно)",yUa="Restrict to models (optional)",vUa="General balance (no restriction)",bUa="{{count}} models selected",xUa="Blank = general balance. Selected models share one earmarked pool.",$Ua="Credit validity after redemption (days, blank = never expires)",wUa="never expires",kUa="{{n}} d",CUa="Models",SUa="Validity",AUa="General balance",TUa="Создать коды пополнения",RUa="Сохраните коды сразу. Позже их можно снова получить через «Экспорт в открытом виде» в списке партий.",PUa="Партии кодов пополнения",_Ua="Нажмите на партию, чтобы открыть детали по каждому коду; «Экспорт в открытом виде» позволяет повторно выгрузить коды в открытом виде.",jUa="Партий кодов пополнения пока нет",NUa="Партия",DUa="Номинал",MUa="Экспорт в открытом виде",EUa="Отозвать этот уже активированный код?",IUa="Вернуть с баланса пользователя только неизрасходованную часть; уже потраченная часть возврату не подлежит.",OUa="Отозвать",LUa="Отозвано {{amount}}",UUa="Коды пополнения экспортированы",BUa="Отключить неактивированные коды в этой партии?",FUa="Все коды, которые еще не были активированы, станут недействительными; уже активированные коды не затрагиваются.",zUa="Отключено кодов: {{n}}",qUa="Bonus % on top-up",HUa="Bonus (%)",VUa="Bonus validity (days, optional)",KUa="blank = never expires",GUa={view:"Payments",title:"Payments via ····{{code}}",email:"User",credited:"Credited",bonus:"Bonus",summary:"{{count}} payments · {{users}} users · {{paid}} paid · {{bonus}} bonus granted",empty:"No payments through this code yet"},WUa={configTitle:"Task wall config",configDescription:"Amounts, switches and accepted hosts. Task copy lives in the translation files, not here. Changes take effect on the next page load — no deploy.",enabled:"Enable the task wall",tasksTitle:"Tasks",taskKey:"Task key",amount:"Amount (USD)",hosts:"Accepted hosts",hostsHint:"Links outside this list are rejected at submission time.",taskEnabled:"Visible to users",addTask:"Add task",guardsTitle:"Abuse guards",dailyCap:"Daily pending cap",dailyCapHint:"0 = no cap. Fail-open if Redis is down.",minAge:"Minimum account age (days)",minAgeHint:"0 = no age gate.",saved:"Task wall saved",queueTitle:"Submissions",queueCount:"{{count}} shown",empty:"Nothing here.",approve:"Approve & pay",approved:"Approved — credit granted",reject:"Reject",rejected:"Rejected",confirmReject:"Confirm reject",reasonPlaceholder:"Why is this rejected?",duplicate:"Same link from {{count}} other account(s)",status:{pending:"Pending",approved:"Approved",rejected:"Rejected"}},YUa={title:ALa,description:TLa,tabs:RLa,couponBatch:PLa,promotionRule:_La,count:jLa,batchCode:NLa,creating:DLa,createBatch:MLa,codesCreated:ELa,codesCreated_plural:ILa,batch:OLa,copied:LLa,copyAll:ULa,creditGrants:BLa,source:FLa,status:zLa,noGrants:qLa,noGrantsDescription:HLa,time:VLa,user:KLa,amount:GLa,signupBonus:WLa,signupBonusDescription:YLa,signupBonusEnabled:QLa,signupBonusAmount:XLa,saveSignupBonus:ZLa,saving:JLa,currentSignupBonus:e4a,referral:t4a,referralDescription:n4a,referralEnabled:a4a,referralRewardTiers:o4a,addTier:s4a,tierRole:r4a,tierFromDay:i4a,tierUntilDay:l4a,tierPercent:c4a,tierLabel:d4a,tierAction:u4a,roleReferrer:m4a,roleReferee:p4a,noEndDay:f4a,removeTier:g4a,releaseDelayDays:h4a,referralCap:y4a,referralMinTopup:v4a,referralExpiryDays:b4a,bannerEnabled:x4a,bannerTitle:$4a,bannerSubtitle:w4a,bannerMode:k4a,bannerModeGlobal:C4a,bannerModeWindow:S4a,bannerEndsAt:A4a,saveReferral:T4a,referralVersion:R4a,referralPublishHint:P4a,referralVersionHistory:_4a,versionCol:j4a,versionStatus:N4a,versionTiers:D4a,versionPublished:M4a,versionSuperseded:E4a,versionCurrent:I4a,discountRule:O4a,discountRuleDescription:L4a,discountEnabled:U4a,discountType:B4a,discountFixed:F4a,discountPercent:z4a,discountValueFixed:q4a,discountValuePercent:H4a,saveDiscount:V4a,defaultLowBalanceThreshold:K4a,defaultLowBalanceThresholdDescription:G4a,defaultLowBalanceThresholdAmount:W4a,saveDefaultLowBalanceThreshold:Y4a,currentDefaultLowBalanceThreshold:Q4a,couponBatchDescription:X4a,discountEffective:Z4a,stateEnabled:J4a,stateDisabled:e5a,couponTrace:t5a,couponTraceDescription:n5
827a,noBatches:a5a,noBatchesDescription:o5a,batchTotal:s5a,batchRedeemed:r5a,batchReserved:i5a,batchActive:l5a,codesInBatch:c5a,noCodes:d5a,code:u5a,redeemedBy:m5a,redeemedAt:p5a,paid:f5a,discount:g5a,createIssuance:h5a,createIssuanceDescription:y5a,formLabel:v5a,formShared:b5a,formUniqueBatch:x5a,sharedCodeText:$5a,sharedCodeRandomHint:w5a,sharedMaxRedemptions:k5a,sharedPerUser:C5a,expiresAt:S5a,batchCodeOptional:A5a,createSharedCode:T5a,sharedCodeCreated:R5a,batchOwnDiscount:P5a,sharedCodesList:_5a,sharedCodesListDescription:j5a,noSharedCodes:N5a,colRedeemedTotal:D5a,colPerUser:M5a,colExpiry:E5a,disableCode:I5a,disableCodeConfirmTitle:O5a,disableCodeConfirmMessage:L5a,codeDisabled:U5a,exportCsv:B5a,statusFilter:F5a,filterByEmail:z5a,csv:q5a,colAmount:H5a,colBoundAt:V5a,colCounterparty:K5a,colInvitee:G5a,colInviter:W5a,colRate:Y5a,colReleasedAt:Q5a,colRole:X5a,colTier:Z5a,colTopup:J5a,loadMore:eUa,noBindings:tUa,noCashback:nUa,versionBindings:aUa,versionBindingsSection:oUa,versionCashbackSection:sUa,versionDetail:rUa,topup:iUa,redeemCreate:lUa,redeemCreateDescription:cUa,redeemBatchName:dUa,redeemBatchNameHint:uUa,redeemCount:mUa,redeemFaceValue:pUa,redeemPerUserLimit:fUa,redeemUnlimited:gUa,redeemExpiresAt:hUa,redeemModels:yUa,redeemModelsAll:vUa,redeemModelsCount:bUa,redeemModelsHint:xUa,redeemValidityDays:$Ua,redeemValidityForever:wUa,redeemValidityDaysValue:kUa,redeemColModels:CUa,redeemColValidity:SUa,redeemGeneralBalance:AUa,redeemCreateBtn:TUa,redeemRevealHint:RUa,redeemBatches:PUa,redeemBatchesDescription:_Ua,redeemNoBatches:jUa,redeemBatchCol:NUa,redeemFace:DUa,redeemReveal:MUa,redeemReverseTitle:EUa,redeemReverseMessage:IUa,redeemReverseBtn:OUa,redeemReversed:LUa,redeemRevealed:UUa,redeemDisableBatchTitle:BUa,redeemDisableBatchMessage:FUa,redeemBatchDisabled:zUa,discountTypeBonusPercent:qUa,discountValueBonusPercent:HUa,bonusExpiryDays:VUa,bonusExpiryDaysHint:KUa,sharedPayments:GUa,tasks:WUa},QUa="Models",XUa="Model catalog: create, edit, publish.",ZUa={label:"Display badges",hint:"Hot / Benefit tags shown on the user-facing models & pricing page.",hot:"Hot",benefit:"Benefit"},JUa="Add model",eBa="Edit {{model}}",tBa="New model",nBa="Close",aBa="Basics & content save together; pricing and status changes apply immediately.",oBa="Create the model draft. Set pricing and publish after it exists.",sBa={basics:"Basics",basicsHint:"Identity, upstream mapping, protocols.",config:"Configuration",configHint:"Identity, upstream routing, type and capabilities.",protocols:"Protocols",protocolsHint:"Which API protocols this model serves.",content:"Content & display",contentHint:"i18n summary / description and sort order."},rBa="Provider slug",iBa="Pick a known provider or type a custom slug.",lBa="Model slug",cBa="Aliases",dBa="Comma-separated lookup aliases for import and review.",uBa="Source (customer-visible)",mBa="Label customers see on the model/logs. Blank = vendor. Use it to distinguish same-model variants at different prices.",pBa="Platform",fBa="— select platform —",gBa="Upstream model id (optional; choose from upstream or enter manually)",hBa="Choose from upstream...",yBa="Upstream unavailable",vBa="Protocols",bBa="Input price / 1M (USD)",xBa="Output price / 1M (USD)",$Ba="EN summary",wBa="Preview",kBa="(No summary)",CBa="No protocol",SBa="Cancel",ABa="Save",TBa="Create draft",RBa={basic:"Identity & routing",pricing:"Pricing",content:"Content & display"},PBa={config:"1 · Configuration",protocols:"2 · Protocols",pricing:"3 · Pricing",display:"Content & display",back:"Back",next:"Next",create:"Create model"},_Ba="Context window (tokens)",jBa="Max input the model accepts. Leave blank if unknown.",NBa="Max output tokens",DBa="Max tokens the model can generate per response.",MBa={status:"Status",visibility:"Visibility",hint:"Lifecycle changes apply immediately (with confirmation), separate from Save.",confirmStatus:'Set status to "{{status}}"? Takes effect immediately.',confirmVisibility:'Set visibility to "{{visibility}}"? Takes effect immediately.',statusChanged:"Status set to {{status}}.",visibilityChanged:"Visibility set to {{visibility}}.",publishBlocked:"Cannot publish: core pricing factors are missing. Set them in the Pricing tab first.",statusOption:{draft:"Draft",published:"Published",deprecated:"Deprecated",archived:"Archived"},visibilityOption:{public:"Public",hidden:"Hidden"},availability:"Availability",confirmAvailable:"Mark this model available again? Takes effect immediately.",confirmUnavailable:"Mark this model temporarily unavailable? It stays listed (greyed out) but gateway calls are rejected.",availableChanged:"Model marked available.",unavailableChanged:"Model marked temporarily unavailable.",availabilityOption:{available:"Available",unavailable:"Unavailable"},audience:"Audience",audienceOption:{everyone:"Everyone",paid_only:"Topped-up accounts only"},confirmPaidOnly:"Restrict this model to accounts that have topped up? It stays listed, but users who never paid get a 403 telling them to top up.",confirmEveryone:"Open this model to every account? Takes effect immediately.",paidOnlyChanged:"Model restricted to accounts that have topped up.",everyoneChanged:"Model opened to every account."},EBa="Input modalities",IBa="Declares what this model can receive, including vision, audio, video, and file inputs.",OBa="Output modalities",LBa="Drives the publish gate: text requires text in/out pricing, image/video/embeddings require their factors.",UBa="Image billing style",BBa="Video billing style",FBa="How the upstream charges for this output. Required before publishing — the gate demands the matching price factor.",zBa="— select billing style —",qBa="Per token (image_output_token)",HBa="Per image (per_call_image)",VBa="Per second (video_per_second)",KBa="Per call (video_per_call)",GBa="Display order",WBa="Must be a non-negative integer.",YBa="Editing locale",QBa="Upstream release date",XBa="Summary (this locale)",ZBa="Description (Markdown, this locale)",JBa={provider:"Provider",status:"Status",visibility:"Visibility",allStatuses:"All model statuses",allVisibility:"All visibility",allProviders:"All providers",search:"Search model slug",mobileTitle:"Фильтры"},e6a={label:"Models",empty:"No models",model:"Model",provider:"Provider",source:"Source",status:"Status",visibility:"Visibility",action:"Action",edit:"Edit",setStatus:"Set status for {{model}}",setVisibility:"Set visibility for {{model}}",confirmSet:'Set {{model}} {{field}} to "{{value}}
827"?',sub2api:"Sub2API mapping",textPrice:"Price (in / out $/M)",priceByTokens:"{{kind}} · per-token",imageOutput:"image out",officialPrice:"List",saved:"-{{pct}}%"},t6a={invalidPrice:"Price must be a number greater than or equal to 0, or left blank.",highRisk:"This change affects live gateway routing and may cause 404s. Continue?",stale:"This model was changed by someone else. Close and reopen it before editing again."},n6a={savesImmediately:"Pricing changes apply immediately and are not controlled by Save.",createPriceFailed:"Model created, but some prices were not saved. Add them in the Pricing tab.",factors:{title:"Pricing factors",hint:"Each row is an atomic unit (text input/output, cache, image, …). Active rows determine billing from their effective date; history rows record past prices.",liveBanner:"Changes here apply immediately and are recorded in price history — they are not controlled by the bottom Save button.",draftHint:"Save the model draft first; pricing factors are edited inline after the model exists.",addFactor:"Add factor",changePrice:"Change price",expire:"Expire",confirmExpire:"Expire this factor row? It will stop applying immediately and move to history.",changeSaved:"Factor price updated.",expired:"Factor expired.",factor:"Factor",tier:"Tier",tierNone:"(no tier)",unit:"Unit",ourPrice:"Our price (USD)",officialPrice:"Official (USD)",officialAbbr:"official",source:"Source (optional URL or note, ≤128 chars)",historyLabel:"History ({{count}})",emptyTitle:"No active factor prices",empty:'Click "Add factor" to set one.',loadError:"Could not load pricing factors",draftEditorHint:"Set prices now, or leave empty and add them after the model is created.",draftEmpty:"No prices added yet.",remove:"Remove",factorOption:{text_input:"Text input (LLM)",text_output:"Text output (LLM)",cache_read:"Cache read",cache_write_5m:"Cache write (5m TTL)",cache_write_1h:"Cache write (1h TTL)",image_input_token:"Image input token",image_output_token:"Image output token",per_call_image:"Image (per call)",video_per_call:"Video (per call)",video_per_second:"Video (per second)",web_search_call:"Web search call"},unitOption:{per_1m_tokens:"per 1M tokens",per_image:"per image",per_call:"per call",per_second:"per second"},conditions:"Conditions JSON (optional)"},discount:{toggle:"Apply discount",hint:"Set every factor to a fraction of its official price (0.5 = 50% off). Free factors (our price 0) and factors with no official price are skipped.",rate:"Discount rate",preview:"Preview",apply:"Apply",allowMarkup:"Allow markup (rate above 1 prices above official)",noFactors:"No active factors to reprice.",confirmTitle:"Apply discount to all factors?",confirmBody:"Reprice {{count}} factor(s) to {{rate}}× the official price. This is versioned — historical billing is unaffected.",applied:"Repriced {{count}} factor(s) at {{rate}}× official.",stale:"Prices changed since the preview — please preview again.",skipReason:{free_factor_our_zero:"Free factor (our price is 0) — left unchanged",no_official:"No official price — cannot compute",official_zero:"Official price is 0 — skipped"}}},a6a="Discard unsaved changes?",o6a="Редактировать модель",s6a={title:QUa,description:XUa,badges:ZUa,addModel:JUa,editModel:eBa,newModel:tBa,close:nBa,sheetDescription:aBa,sheetDescriptionNew:oBa,sections:sBa,providerSlug:rBa,providerSlugHint:iBa,modelSlug:lBa,aliases:cBa,aliasesHint:dBa,source:uBa,sourceHint:mBa,platform:pBa,platformUnset:fBa,sub2apiModelId:gBa,chooseSub2api:hBa,upstreamUnavailable:yBa,protocols:vBa,inputPrice:bBa,outputPrice:xBa,enSummary:$Ba,preview:wBa,noSummary:kBa,noProtocol:CBa,cancel:SBa,save:ABa,createDraft:TBa,tabs:RBa,steps:PBa,contextWindow:_Ba,contextWindowHint:jBa,maxOutputTokens:NBa,maxOutputTokensHint:DBa,lifecycle:MBa,inputModalities:EBa,inputModalitiesHint:IBa,outputModalities:OBa,outputModalitiesHint:LBa,billingStyleImage:UBa,billingStyleVideo:BBa,billingStyleHint:FBa,billingStyleUnset:zBa,billingStyleToken:qBa,billingStylePerImage:HBa,billingStylePerSecond:VBa,billingStylePerCall:KBa,displayOrder:GBa,displayOrderInvalid:WBa,contentLocale:YBa,upstreamReleaseAt:QBa,summary:XBa,descriptionField:ZBa,filters:JBa,table:e6a,errors:t6a,pricing:n6a,discardChanges:a6a,editModelShort:o6a},r6a="Rate Limits",i6a="Rate limit policies by scope.",l6a="Rate limit policies",c6a="No policies",d6a="Code",u6a="Name",m6a="Scope",p6a="Status",f6a="Limits",g6a="No limits",h6a={auth:"Auth",console:"Console",api_gateway:"API gateway",ops:"Ops",global:"Global"},y6a={active:"Active",disabled:"Disabled",archived:"Archived"},v6a={rpm_per_key:"RPM / key",rpm_per_user:"RPM / user",concurrent_streams_per_key:"Streams / key",concurrent_streams_per_user:"Streams / user"},b6a="New policy",x6a="Edit",$6a="Action",w6a="New rate limit policy",k6a="Edit {{name}}",C6a="Concurrency and RPM limits applied per API key and per user. Assign a policy to users on the Users page.",S6a='Delete policy "{{name}}"? Keys and users on it fall back to their default.',A6a="Policy deleted.",T6a={identity:"Identity",classification:"Classification",description:"Description",codeImmutable:"Code cannot be changed after creation.",limitsHint:"Leave blank to use the platform default for that limit.",default:"default",invalidLimit:"{{field}} must be a positive integer.",saved:"Policy saved.",cancel:"Cancel",save:"Save",create:"Create policy"},R6a={title:r6a,description:i6a,label:l6a,empty:c6a,code:d6a,name:u6a,scope:m6a,status:p6a,limits:f6a,noLimits:g6a,scopes:h6a,statuses:y6a,limitNames:v6a,add:b6a,edit:x6a,delete:"Delete",action:$6a,newTitle:w6a,editTitle:k6a,formDescription:C6a,confirmDelete:S6a,deleted:A6a,form:T6a},P6a="Admins",_6a="Who can sign in to the admin console. Owner-only.",j6a="Admins",N6a="No admins yet",D6a="Email",M6a="Name",E6a="Role",I6a="Status",O6a="Last login",L6a="Action",U6a="Add admin",B6a="Add admin",F6a="The email becomes an admin immediately and signs in with it — admin access is matched by email. It does not need an account yet.",z6a="Email",q6
827a="[email protected]",H6a="Name",V6a="Display name",K6a="Role",G6a="Admin added.",W6a="Change role",Y6a="Role updated.",Q6a="Suspend",X6a="Activate",Z6a="Status updated.",J6a="Remove",e8a="Admin removed.",t8a="Remove {{email}} as an admin? They lose console access immediately.",n8a="You",a8a="Never",o8a={owner:"Owner",admin:"Admin",support:"Support"},s8a={active:"Active",suspended:"Suspended"},r8a={title:P6a,description:_6a,label:j6a,empty:N6a,email:D6a,name:M6a,role:E6a,status:I6a,lastLogin:O6a,action:L6a,add:U6a,newTitle:B6a,formDescription:F6a,emailLabel:z6a,emailPlaceholder:q6a,nameLabel:H6a,namePlaceholder:V6a,roleLabel:K6a,added:G6a,changeRole:W6a,roleChanged:Y6a,suspend:Q6a,activate:X6a,statusChanged:Z6a,remove:J6a,removed:e8a,confirmRemove:t8a,self:n8a,never:a8a,roles:o8a,statuses:s8a},i8a="Upstream",l8a="Read-only upstream configuration mirror plus controlled OneHop routing pools.",c8a="Open upstream admin",d8a="Upstream tabs",u8a={overview:"Overview",keyPools:"Key pools",groups:"Groups",channels:"Channels",accounts:"Accounts"},m8a={todayRequests:"Today requests",total:"{{value}} total",upstreamCostToday:"Upstream cost today",providerAccounts:"Provider accounts",health:"Health",stale:"stale",checkPools:"check pools",online:"online"},p8a={upstreamStatsFailed:"Upstream stats failed to load",retry:"Retry",configAuditFailed:"Config audit failed",keyPoolsLoadFailed:"Key pools failed to load",createKeyPoolFailed:"Create key pool failed",keyPoolTestFailed:"Key pool test failed",keyPoolRotateFailed:"Key pool rotate failed",failedLoad:"{{title}} failed to load"},f8a={title:"Config audit",description:"Compares OneHop key pools and published model routing against upstream routing. Provider groups, channels, pricing, and accounts remain read-only here.",running:"Running...",run:"Run audit",poolsChecked:"Pools checked",modelAudit:"Model audit",checkedAt:"Checked at",needsReview:"needs review",done:"done",ok:"ok",upstreamCoverage:"Покрытие апстрима",coverageUnchecked:"аккаунты недоступны",coverageOnlyAccount:"только {{accounts}}",coverageNoAccount:"Ни один планируемый аккаунт не сопоставлен с этим ID апстрима"},g8a={title:"Topology",keyPools:"Key pools",activeGroups:"Active groups",activeChannels:"Active channels",accounts:"Accounts",editingBoundaryTitle:"Editing boundary",editingBoundaryDescription:"The upstream admin exposes deep edit workflows for groups, channels, pricing rules, provider accounts, monitoring, and system settings. OneHop intentionally mirrors only the operational read path and owns internal key pools, so edits that change provider routing still happen in the original admin."},h8a={title:"OneHop internal key pools",description:"Pools select which upstream internal key OneHop uses per protocol and model pattern. Full secrets are never displayed.",poolCode:"Pool code",poolName:"Pool name",defaultPool:"Default pool",notDefault:"Not default",plaintextKey:"Plaintext key",create:"Create",label:"Provider routing key pools",pool:"Pool",protocols:"Protocols",models:"Models",routingGroup:"Routing group",status:"Status",health:"Health",key:"Key",lastCheck:"Last check",action:"Action",priority:"priority {{value}}",default:"default",secret:"secret",hidden:"hidden",test:"Test",rotate:"Rotate",empty:"No key pools",emptyDescription:"Create an internal pool before routing production traffic through provider routing.",newPlaintextKey:"New plaintext key",confirmRotate:"Confirm rotate",editProtocols:"Edit protocols",editProtocolsTitle:"Edit protocols (replace)",confirmEditProtocols:"Save protocols",cancelEditProtocols:"Cancel",forceEditProtocols:"Force save (override routing check)"},y8a={editUpstreamConfig:"Edit upstream config",groupsTitle:"Groups",groupsDescription:"Routing buckets from upstream config. OneHop uses these as source-of-truth context for key-pool binding and audit decisions.",groupsLabel:"Routing groups",groupsEmpty:"No groups",groupsEmptyDescription:"Upstream config did not return any groups.",channelsTitle:"Channels",channelsDescription:"Provider channel configuration from upstream config, including model mappings and pricing rule coverage.",channelsLabel:"Provider routing channels",channelsEmpty:"No channels",channelsEmptyDescription:"Upstream config did not return any channels.",accountsTitle:"Accounts",accountsDescription:"Provider accounts are redacted in OneHop. Use the upstream admin for credential edits and OAuth refresh flows.",accountsLabel:"Provider routing accounts",accountsEmpty:"No accounts",accountsEmptyDescription:"Upstream config did not return any provider accounts."},v8a={group:"Group",platform:"Platform",rate:"Rate",rpm:"RPM",accounts:"Accounts",limits:"Limits",status:"Status",updated:"Updated",channel:"Channel",billingSource:"Billing source",mappings:"Mappings",pricing:"Pricing",account:"Account",groups:"Groups",baseUrl:"Base URL",capacity:"Capacity",lastUsed:"Last used"},b8a={noDescription:"No description",unlimited:"unlimited",schedulable:"schedulable",notSchedulable:"not schedulable",loading:"Loading...",noPricingRules:"No pricing rules",modelsCount:"{{count}} models",none:"none",channelMapped:"Channel mapped",requestedModel:"Requested model",upstreamModel:"Upstream model",priority:"priority",unknown:"unknown"},x8a={serving:{label:"Serving state",serving:"Serving",rate_limited:"Rate-limited",overloaded:"Overloaded",expired:"Expired",paused:"Paused",error:"Error",disabled:"Disabled"},quota:{label:"Quota (today)",noLimit:"no limit",spend:"{{spend}} / {{limit}}"},accounts:{breakdown:"{{normal}} normal · {{error}} error · {{ratelimit}} limited · {{overload}} overload"},freshness:{updated:"updated {{ago}}",never:"never"},pools:{lastError:"Last error",resync:"Resync"},audit:{poolFindings:"Pool findings",clean:"clean",findingsCount:"{{count}} issue(s)"},tokensToday:"{{count}} tok today"},$8a={title:i8a,description:l8a,openUpstreamAdmin:c8a,tabsLabel:d8a,tabs:u8a,metrics:m8a,errors:p8a,audit:f8a,topology:g8a,pools:h8a,readonly:y8a,table:v8a,common:b8a,ops:x8a},w8a="Platform usage",k8a="Cross-user request metering with cost, token, latency, and routing signals.",C8a="Refresh",S8a={label:"Auto refresh",off:"Off"},A8a="Exporting",T8a="Export CSV",R8a="Failed to export usage records",P8a="Requests",_8a="{{count}} successful",j8a="Users",N8a="Matched by current filters",D8a="Billed credit",M8a="{{cost}} upstream cost",E8a="Tokens",I8a="Avg {{duration}}",O8a="User email",L8a="Search by email",U8a="Model",B8a="Search by model",F8a="Status",z8a="Protocol",q8a="Rows",H8a="Reset",V8a="Ops usage records",K8a="No usage records",G8a="User",W8a="Endpoint",Y8a="{{count}} total",Q8a="In {{input}} / out {{output}}",X8a="Upstream",Z8a="Billed",J8a="Latency",eFa="Started",tFa="Page {{page}} · showing {{shown}} of {{total}} matching records",nFa="Previous",aFa="Next",oFa="{{count}} rows on this page",sFa="Times shown in",rFa="{{count}} API keys",iFa="Spend snapshot",lFa="from OneHop billing snapshot",cFa="User spend",dFa="total billed to users",uFa="Avg latency",mFa="settled requests",pFa="Range",fFa={today:"Today",days7:"7 days",days30:"30 days",all:"All time"},gFa="Metric",hFa={cost:"Spend",tokens:"Tokens",requests:"Requests"},yFa="Distribution",vFa={model:"Модель",requestedModel:"Requested model",upstreamModel:"Upstream model",apiKey:"API key",user:"User",endpoint:"Endpoint",channel:"Channel",group:"Group",stream
827:"Transport (stream/sync)"},bFa="Usage trend",xFa="Usage by model",$Fa="Hourly",wFa="Daily",kFa="Top endpoints",CFa="Top dimension rows",SFa="Request logs",AFa="API key",TFa="Type",RFa="Billing",PFa="Channel",_Fa="Group",jFa="Request ID",NFa="req_ / usg_ / upstream",DFa="All types",MFa="All billing",EFa={user:"User",time:"Time",model:"Model",tokens:"Tokens",cost:"Spend",routing:"Routing",latency:"Latency",status:"Status",duration:"Duration"},IFa="Failed to load usage",OFa="Loading usage records",LFa="Try a different filter set.",UFa="No trend data",BFa="No distribution data",FFa="No rows",zFa="Spend breakdown",qFa={upstreamList:"Upstream list",discount:"Discount",sub2apiActual:"Sub2API actual",groupChannelMultiplier:"Group/channel multiplier",accountMultiplier:"Account multiplier",sub2apiFinalCharge:"Final spend",billedFactors:"Billed to user"},HFa="Request detail",VFa="Unknown user",KFa="Loading...",GFa="Sub2API actual",WFa="Group multiplier",YFa="Account multiplier",QFa="Identity",XFa="User ID",ZFa="Key suffix",JFa={hopIdentity:"Hop identity",logicalUsageId:"Logical usage ID",logicalRequestedModel:"Logical requested model",logicalModel:"Logical model",actualRequestedModel:"Actual requested model",actualModel:"Actual model",fallbackHop:"Fallback hop",userVisibility:"User visibility",visible:"Visible",hidden:"Hidden",supersedesUsageRecord:"Supersedes record",pricingAudit:"Continuity pricing audit",mode:"Mode",policyVersion:"Policy version",sourceModel:"Source model",targetModel:"Target model",requestedRawQuote:"Requested raw quote",requestedQuote:"Requested quote",actualPricingStatus:"Actual pricing status",actualPricingAvailable:"Available",actualPricingUnavailable:"Unavailable",actualQuote:"Actual quote",chargedQuote:"Charged quote",variance:"Quote variance",actualPricingError:"Actual pricing error"},eza="Input",tza="Output",nza="Cache read",aza="Cache write",oza="Raw metadata",sza="Request",rza="Usage ID",iza="OneHop ID",lza="Sub2API ID",cza="Sub2API log",dza="Routing",uza="Mapping",mza="Performance",pza="First token",fza="Total",gza="Error",hza="Code",yza="Message",vza={time:"Time",user:"User",apiKey:"API key",model:"Model",logicalUsageId:"Logical usage ID",logicalRequestedModel:"Logical requested model",logicalModel:"Logical model",actualRequestedModel:"Actual requested model",actualModel:"Actual model",fallbackHop:"Fallback hop",userVisible:"User visible",supersedesUsageRecord:"Supersedes usage record",upstreamModel:"Upstream model",protocol:"Protocol",endpoint:"Endpoint",type:"Type",status:"Status",inputTokens:"Input tokens",outputTokens:"Output tokens",cacheRead:"Cache read",cacheWrite:"Cache write",sub2apiActual:"Sub2API actual",sub2apiCharge:"Spend",continuityMode:"Continuity mode",continuityPolicyVersion:"Continuity policy version",continuitySourceModel:"Continuity source model",continuityTargetModel:"Continuity target model",continuityRequestedRawQuote:"Continuity requested raw quote",continuityRequestedQuote:"Continuity requested quote",continuityActualPricingStatus:"Continuity actual pricing status",continuityActualQuote:"Continuity actual quote",continuityChargedQuote:"Continuity charged quote",continuityVariance:"Continuity quote variance",continuityActualPricingError:"Continuity actual pricing error",durationMs:"Duration ms",channel:"Channel",group:"Group",onehopRequestId:"OneHop request ID",sub2apiRequestId:"Sub2API request ID",firstTokenMs:"First token ms"},bza={analytics:"Usage analytics",logs:"Request logs"},xza={label:"Chart view",stacked:"Over time",ranking:"Ranking"},$za={failedOnly:"Failed only",slowOnly:"Slow > {{sec}}s"},wza="More filters",kza="Slow threshold (ms)",Cza="No model usage",Sza="No requests yet — usage will appear here as traffic comes in.",Aza="Viewing",Tza="streaming requests",Rza="Avg duration",Pza="Latency = time to first token (TTFT); Duration = total. The slow filter uses TTFT and only covers successful requests with a recorded first token (earlier or failed requests show —).",_za="Open request detail",jza={title:w8a,description:k8a,refresh:C8a,autoRefresh:S8a,exporting:A8a,exportCsv:T8a,exportError:R8a,requests:P8a,successful:_8a,users:j8a,matchedFilters:N8a,billedCredit:D8a,upstreamCost:M8a,tokens:E8a,avgDuration:I8a,userEmail:O8a,searchEmail:L8a,model:U8a,searchModel:B8a,status:F8a,protocol:z8a,rows:q8a,reset:H8a,label:V8a,empty:K8a,user:G8a,endpoint:W8a,totalTokens:Y8a,inOut:Q8a,upstream:X8a,billed:Z8a,latency:J8a,started:eFa,pageSummary:tFa,previous:nFa,next:aFa,rowsOnPage:oFa,timesShownIn:sFa,apiKeys:rFa,sub2apiCharge:iFa,sub2apiChargeSource:lFa,userSpend:cFa,userSpendSource:dFa,avgLatency:uFa,settledRequests:mFa,range:pFa,ranges:fFa,metric:gFa,metrics:hFa,distribution:yFa,breakdown:vFa,usageTrend:bFa,stackedByModel:xFa,hourly:$Fa,daily:wF
827a,topEndpoints:kFa,topDimensionRows:CFa,requestLogs:SFa,apiKey:AFa,type:TFa,billing:RFa,channel:PFa,group:_Fa,requestId:jFa,requestIdPlaceholder:NFa,allTypes:DFa,allBilling:MFa,table:EFa,failedLoad:IFa,loadingRecords:OFa,tryDifferentFilters:LFa,noTrendData:UFa,noDistributionData:BFa,noRows:FFa,costBreakdown:zFa,adminCost:qFa,requestDetail:HFa,unknownUser:VFa,loading:KFa,sub2apiActual:GFa,groupMultiplier:WFa,accountMultiplier:YFa,identity:QFa,userId:XFa,keySuffix:ZFa,continuity:JFa,input:eza,output:tza,cacheRead:nza,cacheWrite:aza,rawMetadata:oza,request:sza,usageId:rza,onehopId:iza,sub2apiId:lza,sub2apiLog:cza,routing:dza,mapping:uza,performance:mza,firstToken:pza,total:fza,error:gza,code:hza,message:yza,csv:vza,tabs:bza,modelView:xza,chip:$za,moreFilters:wza,slowThreshold:kza,noModelUsage:Cza,noTrendToday:Sza,viewing:Aza,avgLatencySub:Tza,avgTotalDuration:Rza,latencyHint:Pza,openRequestDetail:_za},Nza="Search",Dza="Search by user ID, email, or name",Mza="User",Eza="Back to users",Iza="You do not have permission to view this section.",Oza="Refund",Lza="Refunding...",Uza="Initiate a refund of {{amount}} for {{email}}? Refunds are processed asynchronously; the balance updates after the worker runs.",Bza="Refund initiated.",Fza={overview:"Overview",network:"Network & Device",recentCalls:"Recent Calls",apiKeys:"API-ключи",payments:"Payments",refunds:"Refunds",subscription:"Subscription",referrals:"Referrals",rewards:"Rewards",audit:"Audit"},zza={title:"Free token allowance",paused:"Free token grants are paused on this account (risk review).",daily:"Daily",weekly:"Weekly",tokensUnit:"tokens",remaining:"{{value}} tokens remaining today"},qza={title:"Free model quota (today)",tokens:"tokens",remaining:"{{value}} tokens remaining today",unlimited:"Free quota: unlimited (gate disabled)",eligibilityLabel:"Free tier eligibility",eligible:"Free tier",ineligible:"Ineligible (same device used)"},Hza={phase2:"Subscriptions are coming in Phase 2."},Vza={empty:"No payments"},Kza={empty:"No refunds"},Gza={empty:"No credit buckets",note:"Credit buckets show current balance inventory. Grant and refund history appear in the Audit timeline; referral rewards in the Referrals section."},Wza={totalEarned:"Total earned",frozenEarned:"Frozen",refereeCount:"Referees",activeCount:"Active",role:"Role",counterparty:"Counterparty",empty:"No referral activity"},Yza={empty:"No audit records"},Qza={amount:"Amount",credit:"Credit",status:"Status",provider:"Provider",createdAt:"Created",type:"Type",originalTx:"Original tx",remaining:"Remaining",initial:"Initial",expiresAt:"Expires",event:"Event",action:"Action",severity:"Severity"},Xza={ipLocationTitle:"IP и местоположение",deviceBrowserTitle:"Устройство и браузер",stripeTitle:"Stripe",signupIp:"IP при регистрации",signupCountry:"Страна регистрации",lastLoginIp:"IP последнего входа",ipDifferent:"Отличается от IP при регистрации",sameIpAccounts_one:"{{count}} аккаунт с тем же IP при регистрации",sameIpAccounts_other:"{{count}} аккаунтов с тем же IP при регистрации",sameDeviceAccounts_one:"{{count}} аккаунт на том же устройстве",sameDeviceAccounts_other:"{{count}} аккаунтов на том же устройстве",deviceFingerprint:"Отпечаток устройства",freeTierEligible:"Право на бесплатный тариф",firstDevice:"Первый на устройстве",notFirstDevice:"Не первый на устройстве — без бесплатных привилегий",browser:"Браузер",os:"OS",deviceType:"Тип устройства",acceptLanguage:"Accept-Language",stripeCustomerId:"Stripe Customer ID",viewOnIpinfo:"Открыть в ipinfo.io"},Zza={empty:"Вызовов пока нет",viewAll:"Показать все логи →",colStatus:"Статус",colTime:"Время",colModel:"Модель",colProtocol:"Протокол",colDuration:"Длительность",colCost:"Стоимость",colFreeDiscount:"Бесплатный кредит"},Jza={empty:"API keys пока нет",colName:"Название",colKey:"Key",colStatus:"Статус",colPolicy:"Политика лимитов",colL
827astUsed:"Последнее использование",colCreated:"Создан",colExpires:"Истекает",colSpend:"Расходы",spendTitle:"Разбивка расходов",spend30d:"Последние 30 дней",spendAllTime:"За всё время",spendRequests:"Запросы"},e7a="Копировать",t7a="Скопировано",n7a={search:Nza,searchPlaceholder:Dza,title:Mza,backToList:Eza,noBlockPerm:Iza,refund:Oza,refunding:Lza,refundConfirm:Uza,refundInitiated:Bza,nav:Fza,freeTokens:zza,freeQuota:qza,subscription:Hza,payments:Vza,refunds:Kza,rewards:Gza,referrals:Wza,audit:Yza,col:Qza,network:Xza,recentCalls:Zza,apiKeys:Jza,copy:e7a,copied:t7a},a7a="Users",o7a="Search users, grant credit, and suspend accounts.",s7a="Email",r7a="Search by email",i7a="Account status",l7a={active:"Аккаунт активен; вход и вызовы gateway доступны",suspended:"Приостановлен; gateway отклоняет все запросы (401)"},c7a="Risk",d7a={normal:"Доступны все бесплатные бонусы",watchlisted:"Нет бесплатных token и регистрационного бонуса; пополнение и вызовы gateway доступны",blocked:"Gateway отклоняет все запросы (401); полный бан"},u7a="Users",m7a="No users found",p7a="Country",f7a="Last login",g7a="Action",h7a="View",y7a="Deleted",v7a="Set status for {{email}}",b7a='Set {{email}} to "{{status}}"?',x7a="Grant credit",$7a="Add bonus credit to {{email}}. Recorded in the ledger.",w7a="Amount (USD)",k7a="e.g. 5",C7a="Reason (optional)",S7a="e.g. compensation for downtime",A7a="Type",T7a="Bonus credit",R7a="A gift. Does not count as a top-up.",P7a="Offline payment",_7a="Money we actually received. Counts as a top-up: unlocks paid-only models and rate-limit tiers.",j7a="Reference no.",N7a="e.g. bank slip 20260907-001",D7a="Record payment",M7a="Recording...",E7a="Cancel",I7a="Granting...",O7a="Grant",L7a="Grant ${{amount}} to {{email}}? This is a large amount.",U7a="No display name",B7a="Loading...",F7a="score {{score}}",z7a="Email verified",q7a="Yes",H7a="No",V7a="Signup",K7a="Signup method",G7a="Last login method",W7a="Signup bonus",Y7a="Onboarding",Q7a="Locale / TZ",X7a="Markup ratio",Z7a="Rate limit policy",J7a="Rate limit policy updated.",eqa="Joined",tqa="Never",nqa="Balance",aqa="Wallet & spend",oqa="Total spent",sqa="Recharged",rqa="Bonus granted",iqa="Refunded",lqa="Requests",cqa="Tokens",dqa="Actions",uqa="Identity & risk",mqa="Role",pqa="No permitted actions for your role.",fqa="Acquisition source",gqa="Acquisition by source",hqa="Direct / unknown",yqa="Custom source…",vqa="Set",bqa="Auto-detected: {{source}}",xqa="UTM",$qa="Referred by",wqa="Примечание",kqa="Добавьте примечание, чтобы идентифицировать пользователя",Cqa="Сохранить примечание",Sqa="Примечание сохранено",Aqa="Нет примечания",Tqa="Фильтры",Rqa="Location",Pqa="Preferred locale",_qa={title:a7a,description:o7a,email:s7a,searchEmail:r7a,status:i7a,statusEffect:l7a,risk:c7a,riskEffect:d7a,label:u7a,empty:m7a,country:p7a,lastLogin:f7a,action:g7a,view:h7a,deleted:y7a,setStatusAria:v7a,setStatusConfirm:b7a,grantCredit:x7a,grantDescription:$7a,amountUsd:w7a,amountPlaceholder:k7a,reason:C7a,reasonPlaceholder:S7a,grantKind:A7a,grantKindBonus:T7a,grantKindBonusHint:R7a,grantKindOffline:P7a,grantKindOfflineHint:_7a,referenceNo:j7a,referenceNoPlaceholder:N7a,recordPayment:D7a,recording:M7a,cancel:E7a,granting:I7a,grant:O7a,largeGrantConfirm:L7a,noDisplayName:U7a,loading:B7a,score:F7a,emailVerified:z7a,yes:q7a,no:H7a,signup:V7a,signupMethod:K7a,lastLoginMethod:G7a,signupBonus:W7a,onboarding:Y7a,localeTz:Q7a,markupRatio:X7a,rateLimitPolicy:Z7a,rateLimitPolicyChanged:J7a,joined:eqa,never:tqa,walletBalance:nqa,walletSection:aqa,consumed:oqa,recharged:sqa,bonusGranted:rqa,refunded:iqa,requests:lqa,tokens:cqa,actionsSection:dqa,identitySection:uqa,role:mqa,noPermittedActions:pqa,acquisitionSource:fqa,acquisitionTitle:gqa,sourceDirect:hqa,sourceCustomPlaceholder:yqa,sourceSet:vqa,sourceCaptured:bqa,utm:xqa,referrer:$qa,note:wqa,notePlaceholder:kqa,noteSave:Cqa,noteSaved:Sqa,noteEmpty:Aqa,filters:Tqa,location:Rqa,preferredLocale:Pqa},jqa="Webhooks",Nqa="Stripe webhook events. Status filter, retry, payload inspection.",Dqa="Status",Mqa="Event type",Eqa="Received",Iqa="Event type",Oqa="Status",Lqa="Mode",Uqa="Attempts",Bqa="Retry",Fqa="Retry queued",zqa="Event {{event}} reset to pending; next job tick will process.",qqa="Retry failed",Hqa="No webhook events yet.",Vqa="Stripe events will appear here once your endpoint is registered.",Kqa="Loading payload...",Gqa="Last error",Wqa="Payload (JSON)",Yqa={title:jqa,description:Nqa,statusFilter:Dqa,eventTypeFilter:Mqa,receivedAt:Eqa,eventType:Iqa,status:Oqa,mode:Lqa,attempts:Uqa,retry:Bqa,retrySubmittedTitle:Fqa,retrySubmittedBody:zqa,retryFailedTitle:qqa,empty:Hqa,emptyHint:Vqa,detailLoa
827ding:Kqa,lastError:Gqa,payload:Wqa},Qqa="API Keys",Xqa="Получите первый key за 10 секунд",Zqa="Не удалось скопировать",Jqa={label:"Разрешенные модели",allModels:"Все модели",allHint:"Разрешены все модели в каталоге.",noModels:"Нет доступных моделей.",selected:"Выбрано: {{count}}",someHint:"Разрешено моделей: {{count}}."},eHa={label:"Теги",placeholder:"Добавьте тег и нажмите Enter",remove:"Удалить"},tHa="Создавайте scoped keys для production, staging и командных процессов.",nHa="Обновить",aHa="Key по умолчанию",oHa="Название key",sHa="Создание...",rHa="Создать key",iHa="Полный key, показывается один раз",lHa="Скопировать API key",cHa="Скопировано",dHa="Копировать",uHa="Скопируйте и сохраните его сейчас. После закрытия панели полный key больше нельзя будет увидеть.",mHa="Я сохранил",pHa="Не удалось загрузить API keys",fHa="Повторить",gHa="API keys пока нет",hHa="Создайте первый key, чтобы отправлять запросы через OneHop.",yHa={label:"API keys",tags:"Теги",name:"Название",key:"Key",status:"Статус",created:"Создан",action:"Действие",usage:"Использование",quota:"Лимит",expires:"Истекает",lastUsed:"Последнее использование"},vHa="Отозвать",bHa="Отозвать {{name}}? Это действие нельзя отменить.",xHa="Назовите key. Лимиты и срок действия остаются в расширенных настройках, если они вам не нужны.",$Ha="Месячный лимит credit",wHa="Истекает",kHa="Без ограничений",CHa="Сохранение...",SHa="Сохранить",AHa="Отмена",THa={title:"Отключенные и отозванные",description:"Отключенные или отозванные key. Отключенный key можно включить снова, отозванные остаются для истории."},RHa={title:"Нет активных key",description:"Повторно включите отключенный key ниже или создайте новый."},PHa={import:"Импортировать в CCS",client:"Клиент CC-Switch",codex:"Codex / OpenAI",claude:"Claude Code",pasteHint:"CC Switch открыт с заполнителем. Вставьте туда сохранённый API key.",checking:"Проверка совместимости…",blocked:{title:"{{client}} не может использовать этот ключ",body:"«{{keyName}}» разрешает только модели, которые {{client}} не может использовать. Импорт приведет к ошибкам.",adjust:"Изменить область моделей",forceImport:"Все равно импортировать (не будет работать)"},pin:{title:"Импортировать для {{client}} как {{model}}",body:"«{{keyName}}» не включает модель по умолчанию для {{client}}. Вот как запросы {{client}} будут маршрутизироваться через этого провайдера:",adjust:"Изменить область моделей",confirm:"Импортировать с {{model}}"}},_Ha={search:"Поиск",searchPlaceholder:"Искать по имени или суффиксу key",status:"Статус",allStatus:"Все статусы",clear:"Очистить фильтры",empty:"Нет key, подходящих под эти фильтры",emptyDescription:"Очистите поиск или фильтр статуса, чтобы увидеть все keys.",mobileTitle:"Фильтры"},jHa={active:"Активен",inactive:"Отключен",revoked:"Отозван",expired:"Истек",quota_exhausted:"Лимит исчерпан"},NHa={today:"Сегодня {{requests}} req · {{credit}}",days30:"30 д {{requests}} req · {{credit}}"},DHa={use:"Данные подключения",edit:"Редактировать",enable:"Включить",disable:"Отключить",delete:"Удалить"},MHa="Использовать API key",EHa="Используйте сохраненный key с gateway OneHop. Полный key показывается только при создании.",IHa={baseUrl:"Base URL",keyHint:"API key",authorization:"Заголовок Authorization",env:"Переменная окружения",curl:"cURL",revealing:"Расшифровываем key…",fullKeyUnavailable:"Полный key показывается только при создании. Используйте сохраненное значение или создайте новый key, если потеряли его.",protocolEndpoints:"Endpoints протокола"},OHa="Расширенные настройки",LHa="Создать API key",UHa="Редактировать API key",BHa={label:"Доступ к моделям",all:"Все модели",limited:"Ограничить конкретными моделями",allHint:"Этот key может вызывать все модели, включая добавленные позже.",snapshotHint:"Только выбранные модели; новые модели не добавляются автоматически.",snapshotHintEdit:"Только выбранные модели; новые модели не добавляются автоматически. Переключение на Все модели заменит этот белый список.",searchPlaceholder:"Поиск моделей…",selectAllResults:"Выбрать все результаты ({{count}})",selectedCount:"Выбрано {{count}} / {{max}}",clear:"Очистить",hiddenSelected:"{{hidden}} из {{total}} выбранных скрыты текущим фильтром",selectVendor:"Выбрать все {{vendor}}, выбрано {{on}} из {{total}}",emptyTitle:"Подходящих моделей нет",emptyDescription:"Попробуйте другой тип или поисковый запрос.",loadFailed:"Не удалось загрузить модели",loadFailedHint:"Повторите попытку или вернитесь к Все модели.",type:{all:"Все",text:"Текст",image:"Изображение",video:"Видео",embedding:"Embedding"},pickAtLeastOne:"Выберите хотя бы одну модель или вернитесь к Все модели.",limitReached:"Reached the {{max}}-model limit"},FHa={title:"API key создан",subtitle:"{{name}} готов — подключите его сейчас.",onceWarning:"Показывается один раз. Вы сможете открыть его снова позже, но лучше скопировать сейчас.",connect:"Подключить",done:"Готово"},zHa="IP",qHa="Отозван {{date}}",HHa={title:Qqa,emptyTitle:Xqa,copyFailed:Zqa,allowedModels:Jqa,tags:eHa,description:tHa,refresh:nHa,defaultName:aHa,keyName:oHa,creating:sHa,createKey:rHa,fullKeyTitle:iHa,copyApiKey:lHa,copied:cHa,copy:dHa,fullKeyDescription:uHa,savedIt:mHa,loadFailed:pHa,retry:fHa,empty:gHa,emptyDescription:hHa,table:yHa,revoke:vHa,revokeConfirm:bHa,formDescription:xHa,monthlyCreditLimit:$Ha,expiresAt:wHa,unlimited:kHa,saving:CHa,save:SHa,cancel:AHa,parked:THa,noActive:RHa,ccswitch:PHa,filters:_Ha,status:jHa,usage:NHa,actions:DHa,useTitle:MHa,useDescription:EHa,use:IHa,advancedSettings:OHa,createTitle:LHa,editTitle:UHa,scope:BHa,created:FHa,lastUsedIp:zHa,revokedAt:qHa},VHa="Audit Logs",KHa="High-risk admin actions, by action and time.",GHa="Action",WHa="Clear",YHa={ops_user_update_status:"Статус пользователя обновлен",ops_users_allowlist_add:"Доступ к регистрации добавлен",ops_users_allowlist_update:"Доступ к регистрации обновлен",ops_users_allowlist_invite:"Приглашение для доступа к регистрации отправлено",ops_users_allowlist_revoke:"Доступ к регистрации удален",ops_users_allowlist_restore:"Доступ к регистрации восстановлен",ops_model_create:"Модель создана",ops_model_update:"Модель обновлена",ops_model_update_status:"Статус модели обновлен",sub2api_pool_create:"Пул маршрутизации создан",sub2api_pool_test:"Пул маршрутизации протестирован",sub2api_pool_rotate_secret:"Секрет маршрутизации ротирован"},QHa="Audit logs",XHa="No audit entries",ZHa="Time",JHa="Severity",eVa="Target",tVa={ai_model:"Model",sub2a
827pi_key_pool:"Routing key pool",sys_user:"User",wallet:"Wallet"},nVa="Тип цели",aVa="ID запроса",oVa={title:VHa,description:KHa,action:GHa,clear:WHa,actions:YHa,label:QHa,empty:XHa,time:ZHa,severity:JHa,target:eVa,targetTypes:tVa,targetType:nVa,requestId:aVa},sVa="Войти в OneHop",rVa="Введите код",iVa="Продолжите через Google или email",lVa="Введите email, чтобы получить код",cVa="Введите 6-значный код, отправленный на {{email}}",dVa="Продолжить с Google",uVa="Продолжить с email",mVa="или",pVa="Email",fVa="Отправить код подтверждения",gVa="Отправка...",hVa="Подтвердить",yVa="Проверка...",vVa="Повторить через {{seconds}} с",bVa="Отправить код еще раз",xVa="Продолжая, вы соглашаетесь с",$Va="Условиями",wVa="Политикой конфиденциальности",kVa={signIn:"Войти",signOutFailed:"Не удалось выйти",sendCodeFailed:"Не удалось отправить код",notAllowed:"Этот адрес ещё не одобрен для доступа. Обратитесь к администратору, чтобы запросить доступ.",invalidCode:"Недействительный код",codeIncorrect:"Код неверный, попробуйте еще раз",googleFailed:"Не удалось войти через Google",verifyHuman:"Завершите проверку, чтобы продолжить",verifyUnavailable:"Проверка на человека временно недоступна. Войдите через Google выше или повторите попытку позже."},CVa={signInTitle:sVa,enterCodeTitle:rVa,methodIntro:iVa,emailStepIntro:lVa,codeIntro:cVa,continueGoogle:dVa,continueEmail:uVa,or:mVa,emailLabel:pVa,sendCode:fVa,sending:gVa,verify:hVa,verifying:yVa,resendIn:vVa,resendCode:bVa,termsPrefix:xVa,terms:$Va,privacy:wVa,errors:kVa},SVa="Биллинг",AVa="Пополняйте Credits, активируйте купоны и просматривайте активность wallet.",TVa={bonuses:"Бонусы",topups:"Пополнения",usage:"Расход"},RVa={available:"Зачислено",availableHint:"Уже включено в доступный баланс",frozen:"Ожидает (заморожено)",frozenHint:"Будет доступно через ~{{days}} дн.",frozenHintGeneric:"Будет доступно после периода удержания",title:"Бонусы за приглашения",viewDetails:"Посмотреть детали приглашений"},PVa={noUsage:"За последние 30 дней расхода нет",perDay:"{{amount}} в среднем/день",daysLeft:"≈ {{days}} дн. при текущем темпе"},_Va={amountUsd:"Сумма (USD)",minAmountHint:"Минимальное пополнение — {{amount}}.",apply:"Применить",get:"Получить",onehopCredits:"OneHop credits",pay:"Оплатить",poweredByStripe:"Защищено Stripe",poweredBy:"Защищено {{provider}}",secureCheckout:"Защищённое размещённое оформление заказа",secureCheckoutShort:"Защищённая оплата",taxExclusiveNotice:"Применимые налоги рассчитываются при оплате и добавляются к этой сумме.",presets:"Предустановленные суммы",promoCode:"Промокод",promoCodePlaceholder:"Введите код",serviceFee:"Сервисный сбор",title:"Пополнить",topupAmount:"Сумма пополнения",totalDue:"Итого к оплате",payCta:"Оплатить {{amount}}",previewing:"Проверка…",discount:"Скидка по купону",couponBelowMin:"Сумма со скидкой слишком мала — увеличьте сумму или попробуйте другой код.",maintenanceTitle:"Платежи временно недоступны",maintenanceDescription:"Платежи временно недоступны. Свяжитесь с нами в Telegram, если вам нужно оплатить.",contactTelegram:"Связаться с нами в Telegram",alipay:"Alipay",wechatPay:"WeChat Pay",crypto:"Оплата криптовалютой (USDC / USDT)",payOnStripe:"Оплата выполняется на защищённой странице оформления заказа Str
827ipe.",payOnProvider:"Оплата выполняется на защищённой странице оформления заказа {{provider}}.",payOnHostedCheckout:"Оплата выполняется на защищённой размещённой странице оформления заказа.",amountPrecision:"{{provider}} принимает суммы в USD не более чем с 2 знаками после запятой. Измените сумму или промокод.",couponBonus:"Бонус по купону",couponBonusExpiry:"Бонусные кредиты истекают через {{days}} дней после оплаты.",couponInvalid:"Этот код нельзя применить — попробуйте другой.",couponErrors:{limitReached:"Вы уже использовали этот код максимальное число раз.",invalid:"Этот код недействителен.",expired:"Срок действия этого кода истёк.",exhausted:"Этот код полностью использован.",unavailable:"Этот код сейчас используется — попробуйте чуть позже."},tierBonus:"Бонус акции",tierBonusExpiry:"Бонусные кредиты истекают через {{days}} дней после оплаты.",tierBonusRestricted:"Бонусные кредиты можно потратить только на: {{models}}.",nextTierPercent:"Пополните ещё на {{amount}}, чтобы получить {{percent}}% бонусных кредитов.",nextTierBonus:"Пополните ещё на {{amount}}, чтобы получить {{bonus}} бонусных кредитов.",tierCapReached:"Вы уже получили максимальный бонус по этой акции."},jVa="Добавить Credits",NVa="Создание...",DVa="Доступный Credit",MVa="Пополнить",EVa="Платежи через Stripe",IVa="Сумма (USD)",OVa="Предустановленные суммы пополнения",LVa="Активировать купон",UVa="Код купона",BVa="Активация...",FVa="Активировать",zVa="Купон активирован. Баланс обновляется.",qVa="Переход к безопасному checkout...",HVa="Не удалось загрузить сводку биллинга",VVa="Пополнение не удалось",KVa="Вкладки активности биллинга",GVa="Транзакции",WVa="Начисления Credit",YVa="Тип транзакции",QVa="Источник",XVa="Транзакций пока нет",ZVa="Пополнения, списания и начисления появятся здесь.",JVa="Записи ledger",e9a="Время",t9a="Тип",n9a="Сумма",a9a="Баланс",o9a="Начислений пока нет",s9a="Бонусы регистрации, купоны и ручные начисления появятся здесь.",r9a="Статус",i9a={successTitle:"Платёж получен",polling:"Зачисляем Credit в вашу wallet... около 30 секунд.",delayed:"Зачисление задерживается. Обновите страницу через минуту или проверьте чеки в Stripe.",cancelledTitle:"Платёж отменён",cancelledBody:"Списание не произошло. Попробуйте снова, когда будете готовы.",failedTitle:"Платёж не прошёл",failedBody:"Не удалось завершить платёж. Кредиты не начислены. Попробуйте снова или выберите другой способ оплаты."},l9a={text:"Credits — это предоплаченный баланс сервиса, а не банковский вклад. Израсходованные Credits не возвращаются. Все цены указаны в USD. См.",tosLink:"Условия"},c9a="Чеки",d9a="Открываем...",u9a="Не удалось открыть портал биллинга",m9a={title:"Недавние пополнения",subtitle:"За последние 90 дней. Возврат доступен в течение 24 часов.",loading:"Загружаем пополнения...",date:"Дата",amount:"Сумма",credits:"Credit",status:"Статус",refund:"Вернуть",alreadyRefunded:"Уже возвращено",windowExpired:"Окно возврата истекло (24 часа)",confirmTitle:"Подтвердите возврат",confirmBody:"Возврат будет обработан Stripe в течение 1-3 рабочих дней. Для возвратов по инициативе пользователя применяется комиссия платформы ({{fee}}).",amountLabel:"Сумма возврата (USD)",maxLabel:"Максимум ${{value}}",requestedLabel:"Запрошено к возврату",platformFeeLabel:"Комиссия платформы ({{fee}})",cardReturnLabel:"Вернётся на вашу карту",bonusForfeitureHint:"Промо-Credit, начисленные вместе с этим пополнением, будут пропорционально аннулированы.",cancel:"Отмена",confirm:"Оформить возврат",submitting:"Отправляем...",refundSubmittedTitle:"Возврат отправлен",refundSubmittedBody:"Stripe вернёт средства на вашу карту в течение 1-3 рабочих дней.",refundFailedTitle:"Возврат не удался",balance:"Баланс",confirmAmount:"Вернуть {{amount}}"},p9a={title:"Уведомления о балансе",description:"Сообщим, когда баланс станет низким.",emailLabel:"Уведомлять по e-mail",webhookLabel:"Webhook",autorechargeLabel:"Автопополнение",autorechargeUnsupported:"Автопополнение недоступно у текущего платёжного провайдера.",autorechargeAddCardHint:"добавьте карту, чтобы поддерживать баланс",autorechargeTopUp:"Пополнять на",autorechargeWhenBelow:"когда баланс опустится ниже",autorechargeThreshold:"Порог автопополнения",autorechargeAmount:"Сумма автопополнения",autorechargeDisabledFailures:"Автопополнение отключено после нескольких неудачных списаний подряд. Обновите карту и включите снова.",autorechargeIncomplete:"Укажите сумму пополнения и порог больше $0.",test:"Тест",testing:"Тестирование…",testQueued:"Тестовая доставка поставлена в очередь — проверьте ваш эндпоинт",testFailed:"Не удалось поставить тестовую доставку в очередь",signingSecret:"Секрет подписи",secretOnSave:"Секрет подписи создаётся при сохранении.",rotate:"Сменить",secretRotated:"Секрет подписи обновлён",rotateFailed:"Не удалось сменить секрет",secretCopied:"Секрет подписи скопирован",saved:"Настройки уведомлений сохранены",saveFailed:"Не удалось сохранить настройки уведомлений",loadFailed:"Не удалось загрузить настройки уведомлений",thresholdRequired:"Укажите порог больше $0, чтобы включить уведомления.",webhookUrlRequired:"Введите https:// URL для webhook.",thresholdOrderBad:"Порог уведомления должен быть ≥ порога автопополнения.",card:"Карта",changeCard:"Изменить",removeCard:"Удалить",cardRemoved:"Карта удалена",cardRemoveFailed:"Не удалось удалить карту",cardSetupFailed:"Не удалось начать привязку карты",lowBalanceGroup:"Оповещения о низком балансе",thresholdLabel:"Порог оповещения"},f9a={title:"История транзакций",idSearch:"ID транзакции",amountRange:"Диапазон суммы (USD)",min:"Мин.",max:"Макс.",clear:"Очистить",retry:"Повторить",empty:"В этом диапазоне транзакций нет",date:"Дата",typeMethod:"Тип / метод",description:"Описание",action:"Действие",prevMonth:"Предыдущий месяц",nextMonth:"Следующий месяц",viewInvoices:"Посмотреть счета",emptyNew:"Транзакций пока нет",emptyNewDesc:"После пополнения здесь появятся пополнения, бонусы и возвраты.",topUpCta:"Пополнить",emptyFiltered:"Подходящих транзакций нет",emptyFilteredDesc:"Очистите фильтры или расширьте диапазон дат.",clearFilters:"Очистить фильтры"},g9a="Баланс низкий и может прервать запросы. Пополните баланс или включите автопополнение.",h9a="Баланс низкий и может прервать запросы. Пополните баланс, чтобы продолжить.",y9a={creditPurchase:"Пополнение баланса",topupBonus:"Top-up bonus",signupBonus:"Signup bonus",referralClawback:"Referral cashback clawback (refund)",couponBonus:"Бонус по купону",referralCashback:"Реферальный кэшбэк",referralInviteeCashback:"Бонус приглашённого",redeemCode:"Код погашения {{code}}",redeemCodeReversal:"Отмена кода погашения",stripeRefund:"Возврат Stripe",bonusReversal:"Возврат бонуса (по возврату средств)"}
827,v9a={title:"Целевые кредиты",subtitle:"Бонусные кредиты, доступные только для определённых моделей — отдельно от вашего баланса.",onlyModels:"Только {{models}}",onlyModelsGeneric:"Ограниченные модели",validUntil:"Действует до {{date}}",noExpiry:"Без срока действия",useInChat:"Use in chat"},b9a={card:"Карта",alipay:"Alipay",wechatPay:"WeChat Pay"},x9a={title:"Код пополнения",description:"Есть код пополнения? Введите его, чтобы зачислить номинал на баланс.",placeholder:"Например: OHR-XXXXXXXX",redeem:"Активировать",redeeming:"Активация…",success:"На баланс зачислено {{amount}}",successRestricted:"Redeemed {{amount}} — usable with {{models}} only",successValidity:"Valid until {{date}}.",errors:{invalid:"Этот код недействителен.",expired:"Срок действия этого кода истёк.",alreadyRedeemed:"Этот код уже использован.",perUserLimit:"Вы достигли лимита погашений для этой партии."}},$9a={title:SVa,description:AVa,breakdown:TVa,referralRewards:RVa,burnRate:PVa,topup:_Va,addCredits:jVa,creating:NVa,availableCredit:DVa,topUp:MVa,poweredByStripe:EVa,amountUsd:IVa,presetAmounts:OVa,redeemCoupon:LVa,couponCode:UVa,redeeming:BVa,redeem:FVa,couponRedeemed:zVa,redirecting:qVa,summaryFailed:HVa,topupFailed:VVa,tabsLabel:KVa,transactions:GVa,creditGrants:WVa,transactionType:YVa,source:QVa,noTransactions:XVa,noTransactionsDescription:ZVa,ledgerEntries:JVa,time:e9a,type:t9a,amount:n9a,balance:a9a,noGrants:o9a,noGrantsDescription:s9a,status:r9a,topupBanner:i9a,compliance:l9a,receipts:c9a,openingPortal:d9a,portalFailed:u9a,recentTopups:m9a,alerts:p9a,history:f9a,lowBalanceWarning:g9a,lowBalanceWarningNoAutoTopup:h9a,ledgerDesc:y9a,earmarked:v9a,paymentMethod:b9a,redeemCard:x9a},w9a="Не удалось загрузить график",k9a="Нет данных",C9a="Пока нет данных для графика.",S9a={errorTitle:w9a,emptyTitle:k9a,emptyDescription:C9a},A9a={copy:"Копировать",regenerate:"Сгенерировать заново",shareComingSoon:"Поделиться (скоро)",download:"Скачать",copyLink:"Копировать ссылку",newChat:"Новый чат",deleteChat:"Удалить чат",openConversationList:"Открыть список диалогов",openSettings:"Настройки чата",collapseSidebar:"Свернуть боковую панель",expandSidebar:"Развернуть боковую панель",cancel:"Отмена",apply:"Применить",newChatTooltip:"Создать новый чат",copied:"Скопировано"},T9a={placeholderReady:"Начните новый диалог...",placeholderNoModel:"Сначала выберите модель выше",attachmentTooLarge:"Файл больше {{limit}}, его нельзя загрузить",attachmentUnsupported:"Неподдерживаемый тип файла. Используйте PNG, JPEG, WebP, GIF, MP4, WebM или MOV.",unsupportedVision:"Эта модель не принимает изображения и видео. Смените модель, прежде чем перетаскивать файлы.",send:"Отправить",abort:"Остановить",attachImage:"Добавить изображение",attachMedia:"Добавить изображение или видео",removeAttachment:"Удалить",shortcutSend:"отправить",shortcutNewLine:"новая строка",shortcutAbort:"остановить",frameFirst:"Первый кадр",frameLast:"Последний кадр",frameReference:"Референс",imageMode:"Генерация изображений",videoMode:"Генерация видео",placeholderComingSoon:"This model is coming soon — pick another one above",reasoning:"Обдумывание",reasoningOff:"Выкл.",reasoningAlways:"Всегда включено",placeholderTopupRequired:"Эта модель доступна аккаунтам с пополнением — пополните баланс, чтобы использовать её здесь"},R9a={modelUnavailable:"Модель {{model}} сейчас недоступна. Ваш prompt сохранен.",rateLimited:"Слишком много параллельных запросов. Повторите попытку чуть позже.",accountDisabled:"Эта учетная запись отключена и не может продолжать чат.",attachmentsUploading:"Изображения ещё загружаются. Подождите перед отправкой.",attachmentsFailed:"Не удалось загрузить изображение. Удалите его и повторите попытку перед отправкой."},P9a={title:"Начните тестировать любую модель здесь.",body:"Общайтесь напрямую с любой моделью. Использование списывается с вашего PAYG-кошелька.",starters:{compareModels:"Сравнить GPT-5.5 и Claude Opus на одной задаче по коду",anal
827yzeImage:"Проанализировать архитектурную диаграмму и кратко описать риски",draftPrompt:"Подготовить system prompt для агента поддержки",generateImage:"Сгенерировать hero-изображение продукта в чистом SaaS-стиле"}},_9a={untitled:"Без названия",deleteConfirm:'Удалить "{{title}}"?',emptyTitle:"Диалогов пока нет",emptyBody:"Чтобы начать, используйте + Новый чат выше.",listLabel:"Список диалогов",groups:{today:"Сегодня",yesterday:"Вчера",earlier:"Ранее"},menu:{rename:"Переименовать",delete:"Удалить"},deleteTitle:"Удалить разговор?"},j9a={paygWallet:"PAYG-кошелек"},N9a={chooseModel:"Выбрать модель",searchPlaceholder:"Поиск моделей...",emptyTitle:"Модели не найдены",emptyBody:"Попробуйте другой поисковый запрос или вкладку.",protocols:"{{count}} протоколов",context:"{{value}} ctx",tabs:{all:"Все",text:"Текст",image:"Изображение",video:"Видео"},maxOut:"вывод {{value}}",unavailable:"Временно недоступно",requiresTopup:"Пополните, чтобы открыть"},D9a={title:"Настройки чата",protocol:"Протокол",unlimited:"Без ограничений",fields:{memory_limit:{label:"Память чата"},temperature:{label:"Temperature"},top_p:{label:"Top P"},max_tokens:{label:"Макс. tokens",placeholder:"128000"},service_tier:{label:"Уровень обслуживания",options:{standard:"Стандартный",priority:"Приоритетный",flex:"Гибкий"}},thinking_budget:{label:"Thinking Budget (tokens)",placeholder:"например, 2000"},stop_sequences:{label:"Stop Sequences",placeholder:"Через запятую, например END, STOP",itemLabel:"Stop"},system_prompt:{label:"System Prompt",placeholder:"Введите system prompt..."},prompt_cache_mode:{label:"Prompt Cache",options:{implicit:"Неявный",explicit:"Явный"}},image_size:{label:"Разрешение изображения"},image_resolution:{label:"Разрешение"},image_quality:{label:"Качество изображения",options:{Auto:"Auto",auto:"Auto",low:"Низкое",medium:"Среднее",high:"Высокое"}},video_ratio:{label:"Соотношение сторон"},video_resolution:{label:"Разрешение видео"},video_duration_seconds:{label:"Длительность"},tools:{label:"Tools (JSON)",placeholder:'[{ "type": "function", "function": { ... } }]'},image_count:{label:"Количество изображений"},image_aspect_ratio:{label:"Соотношение сторон"},reasoning_effort:{label:"Интенсивность рассуждения",options:{none:"Выкл.",minimal:"Минимальная",low:"Низкая",medium:"Средняя",high:"Высокая",xhigh:"Очень высокая",max:"Максимальная"}},reasoning_pro:{label:"Режим Pro"},reasoning_context:{label:"Контекст рассуждения",options:{auto:"Авто",current_turn:"Текущий ход",all_turns:"Все ходы"}},reasoning_enabled:{label:"Обдумывание"},reasoning_always:{label:"Обдумывание",value:"Всегда включено"}}},M9a={estimating:"оценка...",settling:"расчет...",input:"вход",output:"выход",milliseconds:"ms",realCost:"Фактическая стоимость",latency:"Задержка",logDetail:"Детали лога"},E9a={copied:"Ссылка на изображение скопирована",expired:"Ссылка на изображение истекла. Скопируйте ссылку, чтобы открыть снова, или сгенерируйте заново.",attachment:"[изображение]"},I9a={message:"Этот чат оплачивается из вашего PAYG-кошелька",balance:"Баланс",billingLink:"Биллинг",dismiss:"Закрыть"},O9a={badge:"Earmarked {{amount}}",bannerTitle:"Earmarked credit available",bannerBody:"You have {{amount}} of dedicated credit for this model — it's used first."},L9a={trigger:"Копировать как код",copied:"Скопировано как {{format}}",failed:"Не удалось скопировать",failedDescription:"Разрешение на доступ к буферу обмена может быть заблокировано браузером."},U9a={interrupted:"[Прервано]",sending:"отправка"},B9a={title:"Ход рассуждения",duration:"Думал {{seconds}}s"},F9a={title:"Генерация видео скоро появится",body:"Эта модель доступна для поиска, но отправка видео пока не включена.",switchToText:"Переключиться на текстовую модель"},z9a={imageGenerating:"Генерируем изображение",videoGenerating:"Генерируем видео",stage:{queued:"В очереди",routing:"Маршрутизация",generating:"Генерация",storing:"Сохранение",settling:"Расчёт"}},q9a={INSUFFICIENT_CREDITS:"Недостаточно средств",RATE_LIMITED:"Слишком много запросов",rate_limit_error:"Слишком много запросов",MODEL_NO_VISION:"Эта модель не поддерживает ввод изображений",CONTENT_REFUSED:"Модель отклонила этот запрос",EMPTY_RESPONSE:"Модель вернула пустой ответ",upstream_error:"Ошибка вышестоящего сервиса",overloaded_error:"Вышестоящий сервис перегружен",upstream_invalid_json:"Некорректный ответ вышестоящего сервиса",stream_read_error:"Поток ответа прерван",invali
827d_api_key:"Ошибка аутентификации вышестоящего сервиса",model_unavailable:"Модель временно недоступна",no_image:"Изображение не сгенерировано",no_body:"Нет ответа от вышестоящего сервиса",http_error:"Запрос не выполнен",session_create_failed:"Не удалось создать сессию"},H9a={title:"Пополните баланс, чтобы открыть эту модель",body:"Она доступна аккаунтам с пополнением. Любая сумма открывает её сразу, а баланс по-прежнему списывается по факту использования.",cta:"Пополнить"},V9a={actions:A9a,composer:T9a,errors:R9a,empty:P9a,sidebar:_9a,header:j9a,modelSelector:N9a,settings:D9a,metrics:M9a,image:E9a,payg:I9a,earmark:O9a,copyAsCode:L9a,status:U9a,thinking:B9a,video:F9a,media:z9a,errorCodes:q9a,topupLock:H9a},K9a="Загрузка...",G9a="Аккаунт",W9a="Язык",Y9a="Войти",Q9a="Выйти",X9a="Выход...",Z9a="Сохранить изменения",J9a="Сохранение...",eKa="Сохранено.",tKa="Назад",nKa="Повторить",aKa="Скидка 5% на сервисный сбор при пополнении.",oKa="Сохранить",sKa="Отмена",rKa="Очистить",iKa="Сбросить",lKa="Скопировано",cKa="Не удалось скопировать",dKa="Закрыть",uKa="Итого",mKa={timestamp:"Метка времени",local:"Локальное время",relative:"Относительно"},pKa="Копировать",fKa={title:"Откройте в браузере",description:"Вы просматриваете страницу во <b>встроенном браузере приложения</b>, где <b>вход через Google и проверка на человека не работают</b>. Откройте её в системном браузере, чтобы продолжить.",hintWechat:"Нажмите меню ··· в правом верхнем углу и выберите «Открыть в браузере».",hintGeneric:"В меню в правом верхнем углу выберите «Открыть в браузере / Safari».",copyLink:"Скопировать ссылку",continueAnyway:"Всё равно продолжить"},gKa="Все",hKa="Активно",yKa="Необязательно",vKa="Удалить",bKa={loading:K9a,account:G9a,language:W9a,signIn:Y9a,signOut:Q9a,signingOut:X9a,saveChanges:Z9a,saving:J9a,saved:eKa,back:tKa,retry:nKa,topUpPromo:aKa,save:oKa,cancel:sKa,clearAll:rKa,reset:iKa,copied:lKa,copyFailed:cKa,dismiss:dKa,total:uKa,time:mKa,copy:pKa,inAppBrowser:fKa,all:gKa,active:hKa,optional:yKa,remove:vKa},xKa="Панель",$Ka="Следите за credit, использованием и состоянием gateway в одной консоли.",wKa="Создать API key",kKa={creditBalance:"Баланс credit",requestsToday:"Запросы сегодня",activeApiKeys:"Активные API keys"},CKa={title:"Динамика использования",description:"Запросы и списанный credit за последние 14 дней.",viewUsage:"Открыть usage",loading:"Загрузка динамики usage",empty:"Использования пока нет",emptyDescription:"Данные появятся здесь после первых запросов."},SKa={title:"Активность credit",description:"Списанный credit по дням за последние 90 дней.",total:"Итог за 90 дней",loading:"Загрузка активности",activeDays:"{{count}} активных дней за последние {{days}} дней",less:"Меньше",more:"Больше"},AKa={title:"Структура использования",description:"Компактный обзор интенсивности расходов, объёма tokens и модели с наибольшим использованием.",activeDays:"Активные дни",ofDays:"из {{days}} дней",avgDailyCredit:"Средний credit в день",nonZeroDays:"по активным дням",peakDay:"Пиковый день",noPeak:"Использования пока нет",tokens:"Tokens",topModel:"Основная модель",creditShare:"Доля списанного credit"},TKa={title:"Быстрый статус",requests7d:"Запросы за 7 дней",creditToday:"Credit потрачен сегодня",credit7d:"Credit потрачен за 7 дней"},RKa={title:"Последние запросы",description:"Последние вызовы gateway по вашим keys.",viewRecords:"Открыть записи",table:{label:"Последние запросы",model:"Модель",status:"Статус",tokens:"Tokens",credit:"Credit",time:"Время",apiKey:"API key"},empty:"Запросов пока нет",emptyDescription:"Создайте API key, отправьте запрос, и последние вызовы появятся здесь."},PKa={title:"Отправьте первый запрос",description:"Совместимо с OpenAI. Создайте key, задайте {{env}}, затем вызовите gateway."},_Ka={credit:"Credit",requests:"Запросы"},jKa={title:xKa,description:$Ka,createApiKey:wKa,cards:kKa,usageTrend:CKa,activity:SKa,usageMix:AKa,quickHealth:TKa,recent:RKa,firstRequest:PKa,tooltip:_Ka},NKa="Выбрать все строки",DKa="Выбрать строку {{row}}",MKa="Не удалось загрузить",EKa="Нет данных",IKa="Нет записей для отображения.",OKa="Подробнее",LKa="Еще {{count}} деталей",UKa="Открыть детали",BKa={selectAllRows:NKa,selectRow:DKa,errorTitle:MKa,emptyTitle:EKa,emptyDescription:IKa,moreDetails:OKa,moreDetailsWithCount:LKa,openRow:UKa},FKa="Последний час",zKa="Сегодня",qKa="Вчера",HKa="Последние 7 дней",VKa="Последние 30 дней",KKa="Этот месяц",GKa="По месяцам",WKa="Произвольно",YKa="Все время",QKa="Выбрать дату",XKa="Отмена",ZKa="Применить",JKa="Дата начала должна быть раньше даты окончания.",eGa="Шаблоны диапазона",tGa="Предыдущий месяц",nGa="Следующий месяц",aGa={last1h:FKa,today:zKa,yesterday:qKa,last7d:HKa,last30d:VKa,thisMonth:KKa,byMonth:GKa,custom:WKa,all:YKa,selectDate:QKa,cancel:XKa,apply:ZKa,reversedError:JKa,presetsAriaLabel:eGa,previousMonth:tGa,nextMonth:nGa},oGa="Аккаунт недоступен",sGa="Аккаунт инициализируется",rGa={title:"Аккаунт приостановлен",description:"Этот аккаунт может войти, но доступ к консоли и gateway-запросы приостановлены.",detail:"Если это выглядит неожиданно, свяжитесь с supp
827ort с email этого аккаунта."},iGa={accountUnavailable:oGa,accountInitializing:sGa,accountRestricted:rGa},lGa="Бесплатные токены",cGa="Ежедневный лимит бесплатных токенов для выбранных моделей — он обновляется автоматически. С вашего кошелька ничего не списывается.",dGa="Не удалось загрузить ваш лимит бесплатных токенов.",uGa="Все модели",mGa="Акция завершится {{date}}",pGa={daily:"Ежедневно",weekly:"Еженедельно"},fGa={daily:"Обновляется ежедневно",weekly:"Обновляется еженедельно",localTime:"ваше местное время {{time}}",countdown:"следующее обновление через {{duration}}",refreshingSoon:"скоро обновится"},gGa={title:"Нет активных акций с бесплатными токенами",description:"Когда будет проходить акция с бесплатными токенами, ваш ежедневный лимит появится здесь."},hGa={title:"Выдача бесплатных токенов на вашем аккаунте приостановлена",body:"Этот аккаунт похож на часть массовой регистрации, поэтому бесплатная выдача пока приостановлена. Если это ошибка, напишите нам по адресу"},yGa="токенов",vGa="Сегодня осталось {{value}} токенов",bGa={label:"Письмо при исчерпании",hint:"Получайте письмо, когда дневные бесплатные токены заканчиваются."},xGa={crg_freetoken_daily_cn5:"Китайские модели · бесплатные токены ежедневно"},$Ga={title:lGa,description:cGa,loadFailed:dGa,allModels:uGa,campaignEnds:mGa,cadence:pGa,refresh:fGa,empty:gGa,paused:hGa,tokensUnit:yGa,remainingToday:vGa,emailToggle:bGa,campaigns:xGa},wGa="Логи",kGa="Проверяйте стоимость, задержку, tokens, статус и сигналы routing по каждому запросу.",CGa={copiedCurl:"curl скопирован",copiedId:"ID запроса скопирован",copyCurl:"Копировать как curl",copyFailed:"Не удалось скопировать",copyId:"Копировать ID запроса",menu:"Действия строки",openTab:"Открыть в новой вкладке"},SGa={prompt:"Prompt",ratio:"Доля попаданий",read:"Чтение кэша",title:"Доля попаданий в кэш"},AGa={confirm:"Отменить задачу",failed:"Не удалось отменить задачу",keep:"Оставить",message:"Эта задача всё ещё в очереди. При отмене она не будет обработана, и списание не произойдет.",success:"Задача отменена",title:"Отменить задачу?",pending:"Отмена..."},TGa={cacheHit:"Попадание в кэш",cost:"Стоимость",ip:"IP",latency:"Задержка",model:"Модель",source:"Источник",status:"Статус",stream:"Потоковая",time:"Время",tokens:"Tokens",tps:"Throughput"},RGa={trigger:"Настройка столбцов"},PGa={body:"Отправьте запрос через OneHop, и он появится здесь.",title:"В этом диапазоне логов нет"},_Ga={all:"Все",apiKey:"API key",cost:"Стоимость (USD)",desktopDateRangeAria:"Выбрать диапазон дат на компьютере",finishReason:"Причина завершения",latency:"Задержка (s)",max:"Макс.",min:"Мин.",mobileDateRangeAria:"Выбрать диапазон дат на мобильном",model:"Модель",modelsSelected:"Выбрано: {{count}}",more:"Больше фильтров",refresh:"Обновить",request:"Поиск по ID запроса",requestIdLabel:"ID запроса",status:"Статус",stream
827:"Потоковая",time:"Время",type:"Тип",mobileTitle:"Фильтры"},jGa={requests:"записей на этой странице",times:"время показано в"},NGa={rowsPer:"Строк"},DGa={all:"За всё время",custom:"Произвольно",last1h:"Последний 1 час",last30d:"Последние 30 дней",last7d:"Последние 7 дней",thisMonth:"Этот месяц",today:"Сегодня",yesterday:"Вчера"},MGa={title:"Клиент",unknown:"user-agent не передан",unknownShort:"Неизвестно"},EGa={output:"Выходные tokens",rate:"Скорость",title:"Throughput",window:"Окно генерации"},IGa={title:"Запрос",openDetail:"Открыть детали запроса",copy:"Копировать ID",copied:"Скопировано",copyFailed:"Не удалось скопировать",close:"Закрыть",loading:"Загрузка…",response:"Ответ",sections:{request:"Запрос",routing:"Маршрутизация",tokens:"Tokens",cost:"Разбивка стоимости",performance:"Производительность",error:"Ошибка",outcome:"Результат",multimodal:"Мультимодальность"},fields:{requestId:"ID запроса",time:"Время",apiKey:"API key",userAgent:"User-Agent",billingMode:"Режим тарификации",onehopModel:"Модель OneHop",endpoint:"Endpoint",firstToken:"Первый token",total:"Общая длительность",throughput:"Throughput",stream:"Поток",clientIp:"IP клиента",finishReason:"Причина завершения",mediaType:"Тип медиа",imageCount:"Изображения",imageSize:"Размер",errorCode:"Код",errorMessage:"Сообщение",requestedModel:"Запрошенная модель"},billingMode:{token:"За token",per_request:"За запрос",image:"За изображение"},timeline:{heading:"Жизненный цикл",received:"Запрос получен",routed:"Маршрутизирован",failed:"Ошибка",generated:"Сгенерировано",metered:"Учтено",billed:"Списано"},downloadMedia:"Скачать"},OGa={success:"успешно",completed:"завершено",failed:"ошибка",pending:"ожидание",repairing:"исправление",queued:"в очереди",running:"выполняется",cancelled:"отменено",expired:"истекло"},LGa={chat:"Чат",image:"Изображение",video:"Видео"},UGa={stop:"Stop",length:"Лимит длины",tool_calls:"Вызовы инструментов",content_filter:"Фильтр контента",error:"Ошибка"},BGa={true:"Потоковый",false:"Непотоковый"},FGa={title:"Разбивка стоимости"},zGa={title:"Разбивка tokens",prompt:"Ввод",completion:"Вывод",imageOutput:"Tokens вывода изображения",cacheRead:"Чтение кэша",cacheWrite:"Запись кэша",cacheWrite5m:"Запись кэша 5m",cacheWrite1h:"Запись кэша 1h",total:"Итого"},qGa={timestamp:"Метка времени",local:"Локальное время",relative:"Относительно"},HGa={inputCost:"Стоимость входа",outputCost:"Стоимость выхода",cacheReadCost:"Стоимость чтения кэша",cacheWriteCost:"Стоимость записи кэша",inputPrice:"Цена входа",outputPrice:"Цена выхода",total:"Итого",officialPrice:"Официальная цена",saved:"Экономия",factor:{textInput:"Ввод текста",textOutput:"Вывод текста",imageInput:"Ввод изображения",imageOutput:"Вывод изображения",perCallImage:"За изображение",videoPerSecond:"Видео",videoPerCall:"Видео",cacheRead:"Чтение кэша",cacheWrite:"Запись кэша",cacheWrite5m:"Запись кэша (5m)",cacheWrite1h:"Запись кэша (1h)"},unit:{per1mTokens:"/ 1M tokens",perImage:"/ изобр.",perSecond:"/ с",perCall:"/ вызов"},promoBasis:"До акции",promoSaved:"Скидка по акции",free
827Covered:"Бесплатный лимит ({{tokens}} токенов)",freeCoveredNoCount:"Бесплатный лимит"},VGa={noPreview:"Предпросмотр недоступен",video:"Видео"},KGa={free:"Бесплатно"},GGa={title:wGa,description:kGa,actions:CGa,cacheHit:SGa,cancelJob:AGa,col:TGa,columns:RGa,empty:PGa,filter:_Ga,meta:jGa,pager:NGa,range:DGa,source:MGa,tps:EGa,drawer:IGa,status:OGa,type:LGa,finishReason:UGa,stream:BGa,costBreakdown:FGa,tokensBreakdown:zGa,time:qGa,userCost:HGa,export:{label:"Экспорт CSV",exporting:"Экспорт…",done:"Экспортировано строк: {{n}}.",truncated:"Экспортированы первые {{n}} строк. Сузьте период, чтобы экспортировать остальное.",failed:"Не удалось экспортировать. Попробуйте ещё раз."},media:VGa,cost:KGa},WGa="Модели",YGa="Просматривайте все доступные модели, длину контекста, цены на ввод/вывод и возможности, а также добавляйте частые модели в избранное.",QGa={all:"Все",favorites:"Избранное",benefit:"Выгода",hot:"Популярное",free:"Free"},XGa={capability:"Тип",allCapabilities:"Все типы",capability_text:"Текст",capability_image:"Изображение",capability_audio:"Аудио",capability_video:"Видео",provider:"Провайдер",allProviders:"Все провайдеры",protocol:"Протокол",allProtocols:"Все протоколы",sort:"Сортировка",search:"Поиск",searchPlaceholder:"Модель / провайдер",allContexts:"Любая длина",context:"Контекст",mobileTitle:"Фильтры"},ZGa="Рекомендуемые",JGa="Сначала новые",eWa="Популярное за неделю",tWa="Название (A-Z)",nWa="Цена (по возрастанию)",aWa="Цена (по убыванию)",oWa="Длина контекста",sWa="Задержка",rWa="Пропускная способность",iWa="OpenAI Chat",lWa="OpenAI Responses",cWa="Anthropic",dWa="Vertex AI",uWa="OpenAI Images",mWa="OpenAI Video",pWa={label:"Модели",model:"Модель",provider:"Провайдер",capabilities:"Возможности",context:"Контекст",price:"Цена",discount:"Скидка",action:"Действие",tryIt:"Попробовать",type:"Тип",maxOutput:"Макс. вывод",copyId:"Скопировать ID модели",copied:"Скопировано",usage:"Использование",stability:"Стабильность",protocols:"Протоколы",openDetail:"Open model detail"},fWa="Популярное",gWa="Выгода",hWa={add:"Добавить в избранное",remove:"Убрать из избранного"},yWa={favorites:"Избранных моделей пока нет",noMatch:"Подходящих моделей нет"},vWa="Текст",bWa="Изображение",xWa="Файл",$Wa="Видео",wWa="Аудио",kWa="Embeddings",CWa="Vision",SWa="Вызов инструментов",AWa="Режим JSON",TWa="Генерация изображений",RWa="Редактирование изображений",PWa="Текст",_Wa="Изображение",jWa="Видео",NWa="Аудио",DWa="Embedding",MWa="Официальный",EWa="Kiro",IWa="от",OWa="/ вызов",LWa="/ с",UWa="/ 1M",BWa="Быстрый",FWa="Free",zWa="Coming Soon",qWa="Free",HWa={ariaLabel:"Валюта цен",usd:"USD",rmb:"юань (¥)",settlement:"Цены показаны в юанях по фиксированному курсу {{rate}}, только для справки; с кошелька всегда списывается в USD по фактическому использованию."},VWa="Нужно пополнение",KWa={title:WGa,description:YGa,tabs:QGa,filters:XGa,sort_featured:ZGa,sort_newest:JGa,sort_top_weekly:eWa,sort_name:tWa,sort_price_asc:nWa,sort_price_desc:aWa,sort_context:oWa,sort_latency:sWa,sort_throughput:rWa,protocol_openai_chat:iWa,protocol_openai_responses:lWa,protocol_anthropic_messages:cWa,protocol_google_vertex_ai:dWa,protocol_openai_images:uWa,protocol_openai_sora:mWa,table:pWa,badge_hot:fWa,badge_benefit:gWa,favorite:hWa,empty:yWa,modality_text:vWa,modality_image:bWa,modality_file:xWa,modality_video:$Wa,modality_audio:wWa,modality_embeddings:kWa,capability_vision:CWa,capability_tool_calling:SWa,capability_json_mode:AWa,capability_image_generation:TWa,capability_image_edit:RWa,type_text:PWa,type_image:_Wa,type_video:jWa,type_audio:NWa,type_embedding:DWa,provider_official:MWa,provider_kiro:EWa,price_from:IWa,price_perCall:OWa,price_perSec:LWa,price_per1m:UWa,price_fast:BWa,badge_free:FWa,badge_unavailable:zWa,price_free:qWa,currency:HWa,badge_requiresTopup:VWa},GWa={main:"Основная навигация",utility:"Служебная навигация",console:"Навигация консоли",openNavigation:"Открыть навигацию",collapse:"Свернуть боковую панель",expand:"Развернуть боковую панель"},WWa={platform:"Консоль",chat:"Чат",models:"Модели",logs:"Логи",jobs:"Задачи",apiKeys:"API keys",usage:"Использование",billing:"Биллинг",freeTokens:"Бесплатные токены",referrals:"Рефералы",settings:"Настройки",admin:"Админ",balance:"Баланс",helpSupport:"Помощь и поддержка",announcements:"Объявления",announcementsTitle:"Объявления",announcementsEmpty:"Объявлений пока нет. Загляните позже.",announcementsTicketUnread:"{{count}} тикет(ов) с новыми ответами",support:"Поддержка",tasks:"Задания",tagNew:"НОВОЕ"},YWa={staff:"Сотрудники"},QWa={dashboard:"Обзор",users:"Пользователи",billing:"Биллинг платформы",usage:"Использование платформы",rateLimits:"Rate limits",access:"Доступ",staff:"Админы",growth:"Рост",models:"Модели",announcements:"Объявления",upstream:"Upstream",auditLogs:"Журнал аудита",webhooks:"Webhooks",supp
827ort:"Support",campaigns:"Campaigns",domainRules:"Email domains"},XWa={title:"Notifications",markAllRead:"Mark all read",loading:"Loading…",emptyTitle:"You're all caught up",emptyBody:"New notifications will show up here."},ZWa={aria:GWa,public:{models:"Модели",pricing:"Цены",docs:"Документация",blog:"Блог",changelog:"История изменений"},console:WWa,adminGroups:YWa,admin:QWa,notifications:XWa},JWa={back:"Назад",done:"Готово",next:"Далее",stepOf:"{{current}} / {{total}}"},eYa={balance:{body:"Пополняйте по мере использования. Неиспользованный баланс можно вернуть в любой момент.",title:"Ваш баланс"},keys:{body:"Создайте здесь key и укажите OneHop в любом инструменте.",title:"Создайте первый API key"},models:{body:"На одной странице видны все доступные модели и стоимость каждой.",cta:"Открыть модели",title:"Посмотрите модели"}},tYa={body:"Один URL для всех моделей. За 30 секунд покажем три главные вещи.",skip:"Пропустить",start:"Начать",title:"Добро пожаловать в OneHop"},nYa={nav:JWa,steps:eYa,welcome:tYa},aYa="Failed to load",oYa="Nothing here yet.",sYa="Подробнее",rYa={failedLoad:aYa,emptyDescription:oYa,moreDetails:sYa},iYa="Все",lYa="Успешно",cYa="Ожидает",dYa="Восстановление",uYa="Ошибка",mYa="Возвращено",pYa="Активен",fYa="Отключён",gYa="Исчерпан",hYa="Зарезервирован",yYa="Активирован",vYa="Приостановлен",bYa="Удален",xYa="Норма",$Ya="Под наблюдением",wYa="Заблокирован",kYa="Начислено",CYa="Отменено",SYa="Истекло",AYa="Отклонено",TYa="Черновик",RYa="Опубликовано",PYa="Устарело",_Ya="В архиве",jYa="Скрыто",NYa="Создано",DYa="Checkout открыт",MYa="Оплачено",EYa="Отменено",IYa="OpenAI Chat",OYa="OpenAI Responses",LYa="Anthropic Messages",UYa="Google Vertex AI",BYa="OpenAI Images",FYa="Списание за usage",zYa="Бонус за регистрацию",qYa="Промо-бонус",HYa="Реферальный бонус",VYa="Компенсационный бонус",KYa="Бонус за пополнение",GYa="Ручная корректировка",WYa="Покупка credit",YYa="Платеж",QYa="Бонус за регистрацию",XYa="Купон",ZYa="Начисление админом",JYa="API usage",eQa="Бонус за регистрацию",tQa="Ручное начисление",nQa="Sync",aQa="Streaming",oQa="Token billing",sQa="Request billing",rQa="Image billing",iQa="Low reasoning",lQa="Medium reasoning",cQa="High reasoning",dQa="Не применимо",uQa="Неизвестно",mQa="Заморожено",pQa="Начислено",fQa="Отменено",gQa="Частично отменено",hQa="Пропущено",yQa={all:iYa,success:lYa,pending:cYa,repairing:dYa,failed:uYa,refunded:mYa,active:pYa,disabled:fYa,exhausted:gYa,reserved:hYa,redeemed:yYa,suspended:vYa,deleted:bYa,normal:xYa,watchlisted:$Ya,blocked:wYa,granted:kYa,reversed:CYa,expired:SYa,denied:AYa,draft:TYa,published:RYa,deprecated:PYa,archived:_Ya,public:"Публично",hidden:jYa,created:NYa,checkout_opened:DYa,paid:MYa,canceled:EYa,openai_chat:IYa,openai_responses:OYa,anthropic_messages:LYa,google_vertex_ai:UYa,openai_images:BYa,usage_charge:FYa,bonus_signup_grant:zYa,bonus_promo_grant:qYa,bonus_referral_grant:HYa,bonus_compensation_grant:VYa,bonus_topup_grant:KYa,manual_adjustment:GYa,credit_purchase:WYa,payment:YYa,signup:QYa,coupon:XYa,admin:ZYa,api:JYa,signup_bonus:eQa,manual:tQa,sync:nQa,stream:aQa,token:oQa,request:sQa,image:rQa,low:iQa,medium:lQa,high:cQa,not_applicable:dQa,unknown:uQa,frozen:mQa,released:pQa,cancelled:fQa,partially_reversed:gQa,skipped:hQa},vQa="{{count}} на странице",bQa="Всего {{count}}",xQa={perPage:vQa,total:bQa},$Qa="Приглашайте и зарабатывайте",wQa="Поделитесь своей персональной ссылкой. Когда приглашённый пользователь пополняет баланс, вознаграждения обеих сторон чётко фиксируются.",kQa="Не удалось загрузить данные о приглашениях",CQa="Ваша реферальная ссылка",SQa="Поделиться",AQa="Приглашение скопировано. Вставьте его в WeChat, чтобы поделиться.",TQa="Копировать",RQa="Скопировано",PQa="WeChat",_Qa="X",jQa="Telegram",
827NQa="Reddit",DQa="LinkedIn",MQa="WhatsApp",EQa="Email",IQa="Facebook",OQa={default:{title:"Все AI-модели через один OneHop API",body:"Зарегистрируйтесь по моей пригласительной ссылке — пополните баланс в течение {{firstWindowDays}} дней, и мы оба получим {{percent}}% возврата."},x:{title:"Один API для всех AI-моделей 🤖",body:"Пополните баланс в течение {{firstWindowDays}} дней по моей ссылке — каждый из нас получит {{percent}}% возврата. 🚀"},telegram:{title:"Разрабатывайте со всеми AI-моделями через OneHop",body:"Используйте мою пригласительную ссылку — первое пополнение в течение {{firstWindowDays}} дней принесет нам обоим {{percent}}% реферального кредита."},whatsapp:{title:"Все AI-модели для разработки — OneHop",body:"Присоединяйтесь по моей пригласительной ссылке. Пополните баланс в течение {{firstWindowDays}} дней, и мы оба получим {{percent}}% возврата."},reddit:{title:"OneHop — один API для всех AI-моделей. По моему приглашению мы оба получим {{percent}}% возврата с вашего первого пополнения",body:"Пополните баланс в течение {{firstWindowDays}} дней, и мы оба получим {{percent}}% реферального кредита."},email:{title:"Приглашение в OneHop — все AI-модели через один API",body:`Здравствуйте,
828
829Я пользуюсь OneHop, чтобы обращаться ко всем основным AI-моделям через один API. Зарегистрируйтесь по моей пригласительной ссылке, и после вашего первого пополнения мы оба получим реферальный кредит.
830
831Уровни вознаграждения: {{tiers}}.
832
833Спасибо!`},wechat:{title:"OneHop — все AI-модели через один API",body:"Зарегистрируйтесь по моей пригласительной ссылке. Пополните баланс в течение {{firstWindowDays}} дней, и мы оба получим {{percent}}% реферального кредита."}},LQa="Вознаграждение отображается сразу после оплаты, но сначала замораживается на время окна возвратов, а по его истечении высвобождается в виде реферального credit OneHop.",UQa="Высвобождается через {{days}} дн.",BQa={referrer:"Пригласивший",referee:"Приглашённый"},FQa={referrer:": получайте реферальный credit, когда приглашённый вами человек пополняет баланс — {{tiers}}.",referee:": зарегистрируйтесь по ссылке и пополните баланс, чтобы тоже получить вознаграждение — {{tiers}}."},zQa={dayRange:"дни {{fromDay}}-{{untilDay}}",dayOpenEnded:"с дня {{fromDay}}"},qQa="Всего заработано",HQa="Высвобожденное вознаграждение за приглашения",VQa="Замороженное вознаграждение за приглашения",KQa="Приглашено пользователей",GQa="Активные приглашения",WQa="Высвобожденный бонус приглашённого",YQa="Замороженный бонус приглашённого",QQa="Отменено / возвращено",XQa="Приглашённые вами",ZQa="История вознаграждений",JQa={user:"Пользователь",joined:"Дата регистрации",topups:"Пополнений",earned:"Вы заработали",frozen:"Заморожено",date:"Время",event:"Событие",topupAmount:"Пополнение пользователя",rate:"Ставка",releaseAt:"Время высвобождения",cashback:"Вознаграждение",status:"Статус"},eXa={title:"Пока нет приглашений",description:"Поделитесь своей ссылкой, чтобы начать получать вознаграждения."},tXa={inviteeSignedUp:"Приглашённый успешно зарегистрировался",youSignedUp:"Вы успешно зарегистрировались по приглашению",inviteePaid:"Приглашённый совершил оплату",youPaid:"Вы как приглашённый совершили оплату"},nXa={frozen:"Заморожено",released:"Высвобождено",cancelled:"Отменено",partially_reversed:"Частично возвращено",reversed:"Возвращено",failed:"Ошибка",skipped:"Пропущено"},aXa={title:$Qa,description:wQa,error:kQa,yourLink:CQa,shareVia:SQa,wechatCopied:AQa,copy:TQa,copied:RQa,wechat:PQa,x:_Qa,telegram:jQa,reddit:NQa,linkedin:DQa,whatsapp:MQa,email:EQa,facebook:IQa,share:OQa,offer:LQa,releaseDelay:UQa,role:BQa,roleOffer:FQa,policy:zQa,totalEarned:qQa,availableEarned:HQa,frozenEarned:VQa,invited:KQa,active:GQa,availableReceived:WQa,frozenReceived:YQa,cancelledReversed:QQa,peopleYouInvited:XQa,history:ZQa,col:JQa,empty:eXa,event:tXa,status:nXa},oXa="Настройки",sXa="Управляйте настройками аккаунта и значениями консоли по умолчанию.",rXa="Вы вошли как {{email}}",iXa="Отображаемое имя",lXa="Язык",cXa="Часовой пояс",dXa="Не удалось загрузить профиль",uXa="Не удалось сохранить",mXa="Отменить изменения?",pXa="У вас есть несохраненные изменения. Если уйти сейчас, они будут потеряны.",fXa="Отменить",gXa="Продолжить редактирование",hXa={title:oXa,description:sXa,signedInAs:rXa,displayName:iXa,locale:lXa,timezone:cXa,failedLoad:dXa,failedSave:uXa,discardTitle:mXa,discardMessage:pXa,discardConfirm:fXa,keepEditing:gXa},yXa="Стена заданий",vXa="Расскажите о OneHop своей аудитории и получите пробные кредиты. Каждую заявку мы проверяем вручную.",bXa="Ссылка на вашу публикацию",xXa="https://…",$Xa="Отправить",wXa="Отправлено — скоро проверим.",kXa="Принимаемые ссылки: {{hosts}}",CXa="Ранее отклонено: {{reason}}. Исправьте и отправьте снова.",SXa={pending:"На проверке",approved:"Зачислено",rejected:"Отклонено",active:"Действует"}
833,AXa={title:"Сейчас заданий нет",description:"Загляните позже — такие кампании мы проводим периодически."},TXa={x_quote:{title:"Процитируйте нас в X",description:"Процитируйте закреплённый пост @OneHopAI и добавьте своё мнение.",rules:["Аккаунту в X должно быть не менее 6 месяцев, и у него должно быть 10 подписчиков или больше.","Отправьте ссылку на свой пост-цитату, а не на оригинал.","Кредиты зачисляются в течение 2 часов после одобрения."]},youtube_tutorial:{title:"Опубликуйте туториал на YouTube",description:"Видео от 6 минут о том, как вы подключили OneHop к своему агенту.",rules:["Отправьте ссылку на видео после публикации.","На вашем канале YouTube должно быть 50 подписчиков или больше.","Один раз на аккаунт.","Кредиты зачисляются в течение 2 часов после одобрения."]},short_video:{title:"Опубликуйте короткое видео",description:"Ролик от 40 секунд в TikTok или YouTube с упоминанием вашей настройки OneHop.",rules:["Отправьте ссылку на видео после публикации.","Кредиты зачисляются в течение 2 часов после одобрения."]},github_readme:{title:"Добавьте OneHop в свой GitHub README",description:"Добавьте упоминание OneHop в README своего репозитория. Каждое последующее пополнение принесёт дополнительные 15%.",rules:["Отправьте ссылку на репозиторий после публикации README.","Это навсегда, а не разово: при каждом пополнении применяется большее из двух — стандартный бонус или ваши 15%.","Текст для копирования — ниже."]}},RXa={load:"Не удалось загрузить стену заданий",generic:"Не удалось отправить",urlRequired:"Сначала вставьте ссылку на вашу публикацию.",urlTooLong:"Эта ссылка слишком длинная.",urlMalformed:"Это не похоже на корректную ссылку.",hostNotAllowed:"Это задание принимает ссылки только с перечисленных выше платформ.",notAPost:"Укажите ссылку на конкретную публикацию или видео, а не на профиль или главную страницу.",alreadySubmitted:"Вы уже отправляли это задание.",notAvailable:"Это задание сейчас недоступно.",busy:"На сегодня лимит проверок исчерпан. Попробуйте завтра.",emailUnverified:"Сначала подтвердите адрес электронной почты.",accountTooNew:"Ваш аккаунт ещё слишком новый для этого.",riskFlagged:"Этот аккаунт сейчас не может участвовать. Если это ошибка, напишите в поддержку.",accountInactive:"Этот аккаунт неактивен.",deviceAlreadyClaimed:"Другой аккаунт на этом устройстве уже участвовал."},PXa="Спасибо [OneHop]({{url}}) за поддержку этого проекта! OneHop даёт один API-ключ, совместимый с OpenAI, к сотням ведущих моделей — GPT, Claude, Gemini, DeepSeek, Kimi и Qwen. Не нужно вести несколько аккаунтов у провайдеров и править код ради смены модели, а платите вы только за использование. → {{domain}}",_Xa="Скопировать текст",jXa={title:yXa,description:vXa,urlLabel:bXa,urlPlaceholder:xXa,submit:$Xa,submitted:wXa,allowedHosts:kXa,rejectedHint:CXa,status:SXa,empty:AXa,item:TXa,error:RXa,sponsorBlurb:PXa,copyBlurb:_Xa},NXa="Онлайн-чат",DXa="Заявки в поддержку",MXa="Откройте заявку, и наша команда ответит как можно скорее.",EXa="Новая заявка",IXa={subject:"Тема",category:"Тип",status:"Статус",updated:"Обновлено",user:"User"},OXa={billing:"Оплата",technical:"Технический",account:"Аккаунт",other:"Другое"}
833,LXa={open:"Открыт",pending:"Ожидает ответа",resolved:"Решён",closed:"Закрыт"},UXa={allStatuses:"Все статусы",allCategories:"All categories",search:"Search email or subject"},BXa={subject:"Тема",subjectPlaceholder:"Кратко опишите проблему",category:"Тип",message:"Сообщение",messagePlaceholder:"Расскажите, что произошло…",attachments:"Вложения",addAttachment:"Добавить файл",submit:"Отправить заявку",cancel:"Отмена"},FXa={you:"Вы",support:"Поддержка",system:"Система",replyPlaceholder:"Напишите ответ…",send:"Отправить",closedNotice:"Эта заявка закрыта. Если помощь всё ещё нужна, откройте новую заявку.",sendHint:"Нажмите ⌘/Ctrl + Enter для отправки",back:"Назад к заявкам",systemStatus:{open:"Заявка снова открыта",pending:"Заявка ожидает вашего ответа",resolved:"Заявка помечена как решённая",closed:"Заявка закрыта"}},zXa={title:"Support tickets",resolve:"Resolve",close:"Close",reopen:"Reopen",unread:"Unread"},qXa="Загрузить ещё",HXa={created:"Заявка отправлена",replied:"Ответ отправлен",statusUpdated:"Status updated",error:"Что-то пошло не так. Попробуйте ещё раз"},VXa="Заявка не найдена или была удалена.",KXa={title:"Заявок пока нет",body:"Возникла проблема? Откройте заявку, и мы поможем.",cta:"Открыть первую заявку"},GXa={liveChat:NXa,title:DXa,subtitle:MXa,newTicket:EXa,columns:IXa,category:OXa,status:LXa,filters:UXa,form:BXa,thread:FXa,admin:zXa,loadMore:qXa,toast:HXa,notFound:VXa,empty:KXa},WXa="Использование",YXa="Баланс, скорость расхода и куда уходят ваши расходы.",QXa="Активность",XXa="В этом диапазоне активности нет",ZXa="Детализация использования",JXa="По API key",eZa="По модели",tZa="По типу token",nZa="Нет данных",aZa="В этом диапазоне пока нет использования.",oZa="При текущем темпе баланса хватит примерно на {{days}} дней (около {{rate}}/день).",sZa="выход",rZa="кэш",iZa={tokens:"Tokens",requests:"Запросы",cost:"Стоимость"},lZa="Другое",cZa="запр.",dZa="tok",uZa="Обновление…",mZa="Нет данных",pZa="Отправьте запрос, чтобы начать накапливать данные.",fZa="Популярные API keys",gZa="Пополнить",hZa={title:"Не удалось загрузить использование"},yZa={firstToken:"первый token",latency:"Средняя задержка",requests:"Запросы",spend:"Расход",spendSub:"списано за период",successRate:"{{rate}}% успешно",tokens:"Tokens",textDuration:"текст",mediaDuration:"фото/видео",cacheHit:"{{rate}}% из кэша",projected:"≈ {{amount}}/мес",vsPrevious:"к предыдущему периоду"},vZa={activeDays:"Активные дни",longestStreak:"Самая длинная серия",daysValue:"{{n}} дней",totalSpend:"Всего за период",peakDay:"Самый активный день"},bZa={all:"За всё время",custom:"Произвольно",last1h:"Последний 1 час",last30d:"Последние 30 дней",last7d:"Последние 7 дней",thisMonth:"Этот месяц",today:"Сегодня",yesterday:"Вчера",byMonth:"По месяцам"},xZa={failed:"Ошибки",success:"Успешные"},$Za={cacheRead:"Чтение кэша",cacheWrite:"Запись кэша",cacheWrite1h:"Запись кэша 1h",cacheWrite5m:"Запись кэша 5m",completion:"Выход",prompt:"Вход"},wZa={body:"Отправьте запрос из терминала или откройте playground, и использование появится здесь через несколько секунд.",openPlayground:"Открыть playground",title:"Ваш key готов"},kZa={body:"Создайте первый API key, маршрутизируйте все запросы через один URL, и использование появится здесь.",createKey:"Создать API key",title:"Добро пожаловать в OneHop",tryPlayground:"Попробовать playground"},CZa="Обновить",SZa="{{count}} успешных запросов в текущем фильтре",AZa="Всего tokens",TZa="Вход {{input}} / выход {{output}}",RZa="Списанный credit",PZa="{{cost}} фактическая стоимость upstream",_Za="Средняя задержка",jZa="Первый token {{duration}}",NZa="Активность за 30 дней",DZa="Успешные запросы, объем tokens и списанный credit.",MZa="Загрузка тренда использования",EZa="Тренда использования нет",IZa="Тренд использования появится после успешных запросов.",OZa="Популярные модели",LZa="Списанный credit по моделям за последние 30 дней.",UZa="Использования моделей пока нет",BZa="Разбивка по моделям появится после успешных запросов.",FZa="Модель",zZa="Все модели",qZa="Статус",HZa="Протокол",VZa="Строки",KZa="Сбросить",GZa="Записи использования",WZa="API key",YZa="Endpoint",QZa="Тип",XZa="Tokens",ZZa="Стоимость",JZa="Длительность",eJa="Время",tJa="User-Agent",nJa="Детали",aJa="Детали запроса",oJa="Детали записи использования и metadata биллинга.",sJa="ID запроса",rJa="Операция",iJa="Входные tokens",lJa="Выходные tokens",cJa="Tokens чтения кэша",dJa="Tokens записи к
833эша",uJa="Стоимость входа",mJa="Стоимость выхода",pJa="Стоимость чтения кэша",fJa="Стоимость записи кэша",gJa="Код ошибки",hJa="Сообщение об ошибке",yJa="Не найдено.",vJa="credit",bJa="Всего {{count}}",xJa="Загрузка записей использования",$Ja="Записей использования нет",wJa="Попробуйте другой набор фильтров.",kJa="Записи появятся, когда запросы пойдут через ваши API keys.",CJa="Страница {{page}} · показано {{shown}} из {{total}} совпадающих записей",SJa="Назад",AJa="Далее",TJa="Credit",RJa="Tokens",PJa="Запросы",_Ja={time:"Время",apiKey:"API Key",model:"Модель",reasoningEffort:"Усилие рассуждения",endpoint:"Endpoint",type:"Тип",billingMode:"Режим тарификации",inputTokens:"Входные Tokens",outputTokens:"Выходные Tokens",cacheReadTokens:"Tokens чтения кэша",cacheWriteTokens:"Tokens записи кэша",totalTokens:"Всего Tokens",billedCredit:"Списанный Credit",firstTokenMs:"Первый token, мс",durationMs:"Длительность, мс",status:"Статус",userAgent:"User-Agent"},jJa={mon:"Пн",wed:"Ср",fri:"Пт"},NJa="Меньше",DJa="Больше",MJa={title:WXa,description:YXa,activity:QXa,activityEmpty:XXa,breakdown:ZXa,byApiKey:JXa,byModel:eZa,byTokenType:tZa,chartEmpty:nZa,chartEmptyHint:aZa,burnRate:oZa,in:"вход",out:sZa,cache:rZa,metric:iZa,other:lZa,req:cZa,tok:dZa,refreshing:uZa,topEmpty:mZa,topEmptyHint:pZa,topKeys:fZa,topUp:gZa,error:hZa,kpi:yZa,stat:vZa,range:bZa,requests:xZa,tokenType:$Za,noRequests:wZa,welcome:kZa,refresh:CZa,successfulFilter:SZa,totalTokens:AZa,inOut:TZa,billedCredit:RZa,upstreamActualCost:PZa,avgLatency:_Za,firstToken:jZa,activityTitle:NZa,activityDescription:DZa,loadingTrend:MZa,noUsageTrend:EZa,trendDescription:IZa,topModels:OZa,topModelsDescription:LZa,noModelUsage:UZa,noModelUsageDescription:BZa,model:FZa,allModels:zZa,status:qZa,protocol:HZa,rows:VZa,reset:KZa,tableLabel:GZa,apiKey:WZa,endpoint:YZa,type:QZa,tokens:XZa,cost:ZZa,duration:JZa,time:eJa,userAgent:tJa,details:nJa,requestDetail:aJa,detailDescription:oJa,requestId:sJa,operation:rJa,inputTokens:iJa,outputTokens:lJa,cacheReadTokens:cJa,cacheWriteTokens:dJa,inputCost:uJa,outputCost:mJa,cacheReadCost:pJa,cacheWriteCost:fJa,errorCode:gJa,errorMessage:hJa,notFound:yJa,creditSuffix:vJa,total:bJa,loadingRecords:xJa,noRecords:$Ja,differentFilters:wJa,recordsEmpty:kJa,pageSummary:CJa,previous:SJa,next:AJa,chartCredit:TJa,chartTokens:RJa,chartRequests:PJa,
833csv:_Ja,weekday:jJa,activityLess:NJa,activityMore:DJa},EJa="Signup access",IJa="Controlled-launch registration gate. Approved emails, domains, existing users, and active admins can create accounts.",OJa="Signup access allowlist",LJa="No allowlist entries",UJa="Email / domain",BJa="Note",FJa="Status",zJa="Registration",qJa="Expires",HJa="Invites",VJa="Updated",KJa="Action",GJa="Add",WJa="Bulk add",YJa="Edit",QJa="Save",XJa="Invite",ZJa="Restore",JJa="Remove",eeo="Add signup access",teo="Edit {{email}}",neo="Bulk add signup access",aeo="Add a specific email or a whole domain with @company.com. Existing users and active admins are always allowed.",oeo="Paste one email or @domain per line. Invalid and duplicate rows will be skipped.",seo="Email or domain",reo="[email protected] or @company.com",ieo="Use @company.com to approve an entire domain.",leo="Note (optional)",ceo="e.g. founding team",deo="Expiry (optional)",ueo="Leave empty for no expiry. Expired entries no longer allow new signups.",meo="Emails / domains",peo=`[email protected]
834[email protected]
835@partner.com`,feo="Search",geo="Search email or domain",heo="Status",yeo="Access check",veo="[email protected]",beo="Check",xeo="Allowed",$eo="Denied",weo={existing_user:"Existing user always allowed",active_admin:"Active admin always allowed",email_allowlist:"Matched exact email",domain_allowlist:"Matched domain rule",not_allowed:"No active rule matched"},keo="Registered",Ceo="Not registered",Seo="Admin",Aeo="Domain rule",Teo="Never",Reo="Added to signup access.",Peo="Signup access updated.",_eo="Added {{count}} entries.",jeo="Invite sent.",Neo="Entry restored.",Deo="Removed from signup access.",Meo="Remove {{email}} from signup access? They can no longer create a new account unless another rule allows them.",Eeo={title:"Email domain rules",description:"Hot-configurable email-domain lists layered on the built-in baseline. Blacklisted domains are blocked at signup; mainstream domains skip the watchlist.",add:"Add domain",addTitle:"Add domain rule",addDescription:"Blacklist blocks signup (403). Mainstream marks the domain as trusted so new users are not watchlisted.",kindLabel:"List",kindBlacklist:"Blacklist — block signup",kindMainstream:"Mainstream — skip watchlist",domainLabel:"Domain",domainPlaceholder:"example.com",noteLabel:"Note",notePlaceholder:"Optional — why this domain",search:"Search",searchPlaceholder:"Filter by domain",kindFilter:"List",allKinds:"All lists",statusFilter:"Status",statusActive:"Active",statusRevoked:"Removed",statusAll:"All",label:"Email domain rules",empty:"No domain rules",colDomain:"Domain",colKind:"List",colNote:"Note",colAddedBy:"Added by",colCreated:"Created",status:"Status",action:"Action",remove:"Remove",restore:"Restore",confirmRemove:"Remove rule for {{domain}}?",added:"Domain rule added",removed:"Domain rule removed",restored:"Domain rule restored",badgeBlacklist:"Blacklist",badgeMainstream:"Mainstream"},Ieo={title:EJa,description:IJa,label:OJa,empty:LJa,email:UJa,note:BJa,status:FJa,registration:zJa,expiresAt:qJa,invites:HJa,updatedAt:VJa,action:KJa,add:GJa,bulkAdd:WJa,edit:YJa,save:QJa,invite:XJa,restore:ZJa,revoke:JJa,newTitle:eeo,editTitle:teo,bulkTitle:neo,formDescription:aeo,bulkDescription:oeo,emailLabel:seo,emailPlaceholder:reo,emailHint:ieo,noteLabel:leo,notePlaceholder:ceo,expiresAtLabel:deo,expiresAtHint:ueo,bulkEntriesLabel:meo,bulkEntriesPlaceholder:peo,search:feo,searchPlaceholder:geo,statusFilter:heo,checkLabel:yeo,checkPlaceholder:veo,check:beo,checkAllowed:xeo,checkDenied:$eo,checkReasons:weo,registered:keo,notRegistered:Ceo,adminAllowed:Seo,domainRule:Aeo,never:Teo,added:Reo,updated:Peo,bulkAdded:_eo,invited:jeo,restored:Neo,revoked:Deo,confirmRevoke:Meo,domainRules:Eeo},Oeo="Ops Billing",Leo="Payments, wallets and refunds across all users.",Ueo={payments:"Payments",wallets:"Wallets",refunds:"Refunds"},Beo="User email",Feo="Search by email...",zeo="Created",qeo="Created",Heo="Amount (USD)",Veo="Min",Keo="Max",Geo="Refunds",Weo="No refunds",Yeo="Refund",Qeo="Type",Xeo="Full refund",Zeo="Partial refund",Jeo="Original payment",eto="Wallets",tto="Wallet",nto="User",ato="Total",oto="Purchased",sto="Bonus",rto="No wallets",ito="Payments",lto="Payment status",cto="No payments",dto="Payment",uto="Status",mto="Amou
835nt",pto="Paid",fto="Refund",gto="Not refundable (status must be paid)",hto="View in Stripe Dashboard",yto="Failed + dead-letter webhooks in last 7 days. 0=green, 1-9=yellow, 10+=red.",vto="unhealthy",bto="Refund {{id}}",xto="This will refund {{user}} via Stripe. The platform fee shown below is deducted from the amount returned; uncheck it to waive. Promotional credits granted with the original payment will be forfeited proportionally.",$to="Refund amount (USD)",wto="Max ${{value}}",kto="Reason",Cto="İade önizlemesi yükleniyor…",Sto="İade önizlemesi yüklenemedi. Önizleme yüklenene kadar iade yapılamaz.",Ato="İade edilebilir işlem bulunamadı — bu ödeme zaten tamamen iade edilmiş olabilir.",Tto="Ödenen",Rto="İade edilmiş",Pto="Bu iade",_to="Geri alınan kredi",jto="Orantılı olarak geri alınan {{amount}} kupon indirimi kredisini içerir",Nto="Orantılı olarak geri alınan {{amount}} ek verilen krediyi içerir",Dto="Bonus iptal edildi",Mto="Bu iadeyle {{amount}} tutarındaki promosyon bonusu geri alınacak.",Eto="Stripe ile iade",Ito="Platform ücreti al ({{fee}}) — Stripe işlem maliyetini karşılar",Oto="Platform ücreti ({{fee}})",Lto="Tutar, iade edilebilir üst sınır {{value}} değerini aşıyor",Uto="Geçerli bir pozitif tutar girin",Bto="Kullanıcı satın alınan kredinin bir kısmını zaten harcadı. En fazla iade: {{value}}",Fto="Bu ödeme zaten tamamen iade edildi",zto="Ücret sonrası net iade tutarı çok düşük. En az {{value}} iade edin.",qto="Cancel",Hto="Issue refund",Vto="Submitting...",Kto="Refund submitted",Gto="Stripe will return the funds within 1-3 business days. Audit log written.",Wto="Refund failed",Yto={title:Oeo,description:Leo,tabs:Ueo,emailFilter:Beo,emailPlaceholder:Feo,created:zeo,createdRange:qeo,amountRange:Heo,amountMin:Veo,amountMax:Keo,refunds:Geo,noRefunds:Weo,refundId:Yeo,refundType:Qeo,typeRefund:Xeo,typePartialRefund:Zeo,originalPayment:Jeo,wallets:eto,wallet:tto,user:nto,total:ato,purchased:oto,bonus:sto,noWallets:rto,payments:ito,paymentStatus:lto,noPayments:cto,payment:dto,status:uto,amount:mto,paid:pto,refund:fto,notRefundable:gto,viewInStripe:hto,webhookHealthHint:yto,unhealthyWebhooks:vto,refundConfirmTitle:bto,refundConfirmBody:xto,refundAmountLabel:$to,refundMaxHint:wto,refundReasonLabel:kto,refundPreviewLoading:Cto,refundPreviewFailed:Sto,refundNoRefundableTx:Ato,refundPaidRow:Tto,refundAlreadyRefundedRow:Rto,refundThisRefundRow:Pto,refundCreditReclaimRow:_to,refundCreditCouponNote:jto,refundCreditExtraNote:Nto,refundBonusReverseRow:Dto,refundBonusForfeitWarning:Mto,refundStripeReturnRow:Eto,refundFeeToggle:Ito,refundPlatformFeeRow:Oto,refundExceedsMax:Lto,refundAmountInvalid:Uto,refundInsufficientCredit:Bto,refundAlreadyFull:Fto,refundBelowMin:zto,cancel:qto,confirmRefund:Hto,submitting:Vto,refundSubmittedTitle:Kto,refundSubmittedBody:Gto,refundFailedTitle:Wto},Qto="Campaigns",Xto="Audience segments, restricted-model access, model discounts, and targeted credit grants.",Zto={mobileLabel:"Kampanya bölümü",segments:"Audiences",access:"Model access",discounts:"Model discounts",grants:"Targeted grants",recurring:"Periodic grants"},Jto="Status",eno="Actions",tno="All users",nno="Always",ano="No expiry",ono="Active window",sno="Leave blank for always-on. Times are end-of-day on the chosen dates.",rno="Valid from",ino="Valid to",lno="Pause",cno="Resume",dno="Add",uno="Remove",mno="Delete",pno="Clear",fno="Close",gno={allKinds:"Tüm türler",segmentKindStatic:"Statik",segmentKindDynamic:"Dinamik",grantKindGrant:"Tanımla",grantKindRevoke:"Geri al",allStatuses:"Tüm durumlar",statusActive:"Aktif",statusPaused:"Duraklatıldı",statusArchived:"Arşivlendi",statusEnded:"Sona erdi",statusPending:"Beklemede",statusProcessing:"İşleniyor",statusCompleted:"Tamamlandı",statusFailed:"Başarısız"},hno={title:"Audiences",create:"New audience",empty:"No audiences yet. Create one to target access, discounts, and grants.",name:"Name",namePlaceholder:"e.g. China power users",description:"Description",kind:"Kind",kind_static:"Static",kind_dynamic:"Dynamic",kindHint:"Static = a hand-picked list of users. Dynamic = users matching a rule, refreshed on materialize.",members:"Members",materialized:"Last refreshed",materializeDone:"Materialized {{count}} members",basics:"Basics",sheetDescription:"Audiences group users so you can target model access, discounts, and grants.",saved:"Audience saved",created:"Audience created",rule:"Matching rule",ruleHint:"All conditions must match (AND). An empty rule matches no one.",countryIn:"Country in",countryInHint:"Comma-separated ISO-2 c
835odes, e.g. CN, US, JP.",signupAfter:"Signed up after",signupBefore:"Signed up before",minSpend:"Min cumulative spend (USD)",minSpendHint:"Only users whose lifetime spend is at least this.",previewing:"Estimating…",matchCount:"Estimated match: {{value}} users",membersTitle:"Members",membersHint:"Search and add users. Rule-matched members are read-only.",addMembers:"Add users",searchUsers:"Search by email or ID",noUsers:"No matching users.",noMembers:"No members yet.",membersAdded:"{{count}} member added",membersAdded_plural:"{{count}} members added",source_manual:"Manual",source_rule:"Rule",materializeTitle:"Materialize",materializeHint:"Snapshot the rule into the member list. Re-run anytime to refresh.",materialize:"Materialize now",materializing:"Materializing…",materializeConfirm:"Refresh members from the current rule? This replaces the rule-matched snapshot.",lastMaterialized:"Last materialized {{value}}",neverMaterialized:"Never materialized",deleteSegment:"Delete audience",deleteConfirm:"Delete this audience? Access, discounts, and grants referencing it will lose this targeting."},yno={title:"Model access",create:"Grant access",empty:"No access grants yet.",model:"Model",segment:"Audience",target:"Target",validFrom:"Valid from",validTo:"Valid to",sheetDescription:"Give a restricted model to an audience for an optional time window.",created:"Access granted",statusUpdated:"Status updated",deleteConfirm:"Remove this access grant?",noSegmentsTitle:"Create an audience first",noSegmentsDescription:"Access is granted to an audience. Create an audience on the Audiences tab, then come back to grant model access.",publicHint:"This model is public — everyone can already use it.",publicModelTitle:"Model is public",publicModelWarning:"{{model}} is public, so this grant has no effect until it is set to restricted on the Models page. Flip it to restricted there to gate it to this audience.",createAnyway:"Create anyway"},vno={title:"Model discounts",create:"New discount",empty:"No discounts yet.",model:"Model",audience:"Audience",audienceHint:"Leave as all users to discount for everyone.",discount:"Discount",window:"Window",live:"Live",end:"End",amount:"Discount",target:"Target",name:"Internal name",nameHint:"Optional label for your own reference.",percentLabel:"Extra off the platform price",percentHint:"1–99%. Applied on top of our platform price (our_price), not the official price.",percentError:"Enter a value between 1 and 99.",previewPlatform:"Discounted platform price",previewVsOfficial:"Saved vs official",pickStart:"Pick a start date",sheetDescription:"Discounts apply on top of the platform price. The official price is shown for comparison only.",created:"Discount created",saved:"Discount saved",statusUpdated:"Status updated",deleteConfirm:"Delete this discount?",liveReadonly:"This discount is live — value, window, and name are locked. Pause or end it to make changes.",terminalReadonly:"This discount has ended and is read-only."},bno={title:"Targeted grants",create:"New grant",empty:"No targeted grants yet.",time:"Time",kind:"Kind",kind_grant:"Grant",kind_revoke:"Revoke",model:"Models",modelHint:"Credit is shared across the selected models — spending on any of them draws from the same balance.",pickModels:"Pick models",nModels:"{{count}} models selected",pasteEmails:"Bulk add by email",pasteEmailsPlaceholder:"[email protected], [email protected] — separated by newline, comma or semicolon",importEmails:"Parse & add",importMatched:"Matched {{count}} users.",importUnmatched:"{{count}} emails not found:",importInvalid:"{{count}} invalid entries skipped:",importInactive:"{{count}} matched but inactive — will be skipped:",preset7d:"7 days",preset30d:"30 days",preset90d:"90 days",total:"Total",notifyYes:"Yes",notifyNo:"No",recipients:"Recipients",amount:"Amount",expiry:"Expires",expiryHint:"Optional. Unused balance expires on this date.",audience:"Audience",bySegment:"By audience",byUsers:"Specific users",segment:"Audience",users:"Users",searchUsers:"Search by email or ID",noUsers:"No matching users.",grantDetails:"Grant details",amountEach:"Amount per recipient (USD)",amountHint:"0.01–2000 per recipient.",notifyEmail:"Email recipients",note:"Note",summary:"{{count}} recipients × {{amount}} = {{total}} total",send:"Send grant",sending:"Queuing…",queued:"Grant queued — fanning out to recipients",confirmTitle:"Send targeted grant?",confirmMessage:"Grant {{amount}} each to {{count}} recipients ({{total}} total)?",confirmSend:"Send grant",sheetDescription:"Grant model-restr
835icted credit to an audience or a hand-picked list of users.",batchTitle:"Grant batch",succeeded:"Succeeded",failed:"Failed",revokedAmount:"Reclaimed",completedAt:"Completed",revoke:"Revoke",revokeConfirm:"Reclaim unused balance from {{count}} recipients of {{model}}?",revokeQueued:"Revoke queued"},xno={title:"Periodic grants",create:"New periodic grant",editTitle:"Edit periodic grant",empty:"No periodic grants yet. Create one to give recurring free tokens or credit on a daily or weekly cadence.",sheetDescription:"Free tokens or restricted credit, refreshed for an audience every period (lazily, on first use).",basics:"Basics",name:"Name",namePlaceholder:"e.g. Daily free Kimi tokens",unit:"Unit",unitHint:"Tokens = free token allowance per period. USD = restricted credit (single model only).",unitLocked:"Unit is fixed after creation — create a new campaign to switch.",unit_tokens:"Tokens",unit_usd:"USD",allUnits:"All units",targeting:"Targeting",models:"Models",modelsHint:"Free tokens are usable across all selected models.",model:"Model",usdSingleModelHint:"USD grants are restricted to one model — multi-model would make spend unattributable.",pickModels:"Pick models",nModels:"{{count}} model selected",nModels_plural:"{{count}} models selected",audience:"Audience",audienceHint:"Leave as all users to grant to everyone.",schedule:"Amount & schedule",perPeriod:"Per period",tokensHint:"Positive integer, e.g. 100000 tokens per period.",usdHint:"
8350.01–2000 USD per period.",cadence:"Cadence",cadence_daily:"Daily",cadence_weekly:"Weekly",anchorTz:"Anchor timezone",anchorTzHint:"Period boundaries follow local midnight in this timezone.",startsAt:"Starts",startsAtHint:"Optional. Blank = effective immediately.",endsAt:"Ends",endsAtHint:"Optional. Blank = no end date.",immediately:"Immediately",excludeRisky:"Exclude risky accounts",thisPeriod:"This period (users · used/granted)",allStatuses:"All statuses",status_draft:"Draft",status_active:"Active",status_paused:"Paused",status_archived:"Archived",created:"Periodic grant created",saved:"Periodic grant saved"},$no={title:Qto,description:Xto,tabs:Zto,status:Jto,actions:eno,allUsers:tno,always:nno,noExpiry:ano,window:ono,windowHint:sno,validFrom:rno,validTo:ino,pause:lno,resume:cno,actionAdd:dno,actionRemove:uno,actionDelete:mno,actionClear:pno,actionClose:fno,filters:gno,segments:hno,access:yno,discounts:vno,grants:bno,recurring:xno},wno="Announcements",kno="Banners shown at the top of the marketing site and the console.",Cno="Banners",Sno="Top-of-page banners shown on www and console.",Ano="New Banner",Tno="No banners yet. Create one to show a top-of-page announcement.",Rno="Message",Pno="Supports inline links: [text](https://… or /path). Multiple links allowed.",_no="CTA Label",jno="CTA Link",Nno="Severity",Dno="Audience",Mno="Starts At",Eno="Ends At",Ino="Dismissible",Ono="Status",Lno="Archive",Uno="Archive this banner? It will no longer be shown to users.",Bno="New Banner",Fno="Edit Banner",zno="Title",qno="Type",Hno="Content",Vno="Display type",Kno="Banner",Gno="Modal",Wno="Draft",Yno="Active",Qno="Info",Xno="Warning",Zno="Critical",Jno="Console only",eao="Public site only",tao="Both",nao="Hero image",aao="Upload an image, or paste an https URL. Optional. PNG / JPEG / WebP / GIF, up to 5MB.",oao="Upload",sao="Uploading…",rao="Remove",iao="Only PNG, JPEG, WebP and GIF images are supported.",lao="Image must be 5MB or smaller.",cao="Upload failed, please try again.",dao="Title",uao="Body",mao="Action buttons",pao="Button label",fao="Button link",gao="Style",hao="Add button",yao="Remove",vao="Primary",bao="Secondary",xao="Link",$ao="Simplified Chinese (source)",wao="Fill in Simplified Chinese only, then translate to other languages in one click.",kao="Translate to all languages",Cao="Translating…",Sao="Other languages (translated, editable)",Aao="Translated {{ok}} languages",Tao="{{failed}} languages failed — fill in manually or retry",Rao="Chinese source changed but translations weren't refreshed — click Translate again or non-Chinese users will see outdated copy.",Pao="Re-show to users who already dismissed it",_ao="Fill in the Simplified Chinese body first.",jao={title:wno,description:kno,annTitle:Cno,annDescription:Sno,annNewButton:Ano,annEmpty:Tno,annMessage:Rno,annInlineLinkHint:Pno,annCtaText:_no,annCtaUrl:jno,annSeverity:Nno,annAudience:Dno,annStartsAt:Mno,annEndsAt:Eno,annDismissible:Ino,annStatus:Ono,annArchive:Lno,annArchiveConfirm:Uno,annCreateTitle:Bno,annEditTitle:Fno,annColTitle:zno,annColType:qno,annColContent:Hno,annDisplayType:Vno,annTypeBanner:Kno,annTypeModal:Gno,annStatusDraft:Wno,annStatusActive:Yno,annSevInfo:Qno,annSevWarning:Xno,annSevCritical:Zno,annAudConsole:Jno,annAudPublic:eao,annAudAll:tao,annHeroImage:nao,annHeroImageHint:aao,annHeroImageUpload:oao,annHeroImageUploading:sao,annHeroImageRemove:rao,annHeroImageBadType:iao,annHeroImageTooLarge:lao,annHeroImageUploadFailed:cao,annModalTitle:dao,annBody:uao,annActions:mao,annActionLabel:pao,annActionUrl:fao,annActionVariant:gao,annActionAdd:hao,annActionRemove:yao,annVariantPrimary:vao,annVariantSecondary:bao,annVariantLink:xao,annSourceLocale:$ao,annSourceHint:wao,annTranslate:kao,annTranslating:Cao,annOtherLocales:Sao,annTranslateDone:Aao,annTranslateParti
835al:Tao,annTranslateStale:Rao,annBumpRevision:Pao,annTranslateNeedSource:_ao},Nao="Operations dashboard",Dao="Real-time overview of platform health, usage, and alerts.",Mao="Refresh",Eao="Refreshing",Iao="Updated {{time}}",Oao="Loading dashboard",Lao="Failed to load dashboard",Uao="No data",Bao="No traffic yet",Fao="Video fail rate",zao="Avg latency",qao="Error types",Hao="No errors",Vao="Model anomalies",Kao="All models healthy",Gao="Components",Wao="req",Yao="Checkout abandon",Qao="Refunds",Xao="Chargebacks",Zao="First-charge conversion",Jao={kpis:"Key metrics",alerts:"Alerts",health:"System health",payment:"Payment health",revenue:"Revenue & growth",trend:"Trend",alertSettings:"Alert settings",leaderboard:"Growth leaderboards"},eoo={title:"Referral leaderboard",boardAria:"Select leaderboard",rangeAria:"Select time range",boards:{invites:"Invites",revenue:"Referred revenue"},ranges:{today:"Today","3d":"3d","7d":"7d","30d":"30d"},ofTotal:"of {{total}}",countPair:"{{valid}} / {{total}} valid",empty:"No referrals in this window",failedLoad:"Failed to load leaderboard",validHint:"Valid = normal risk status + active binding"},too={requests:"Requests",successRate:"Payment success",activeUsers:"Active users",newSignups:"New signups",newSignupsHint:"Yalnızca normal kullanıcılar (işaretliler hariç)",billedCredit:"Billed credit",errorRate:"Error rate",avgLatency:"Avg latency",balance:"Platform balance",vsPrevious:"{{delta}} vs previous",vsYesterday:"vs yesterday",noChange:"No change",successFailed:"{{success}} ok · {{failed}} fail"},noo={today:"Revenue today",trendTitle:"Revenue today vs yesterday",monthDetail:"{{count}} charges · MTD {{mtd}}"},aoo={summary:"{{paid}} paid · {{failed}} failed · {{pending}} pending"},ooo={paidOfSignups:"{{paid}} first-charged / {{signups}} signups"},soo={healthy:"Healthy",degraded:"Degraded",down:"Down",unknown:"Unknown"},roo={critical:"Critical",warning:"Warning",info:"Info",ok:"Healthy"},ioo={operational:"Operational",degraded:"Degraded",down:"Down",upstream:"Upstream channels",gateway:"Gateway",billing:"Billing",jobs:"Job queue",tierReason:{ok:"Healthy",watch:"Watch: nearing threshold",warning:"Warning: over warn line",critical:"Critical: over crit line"}},loo={title:"Active alerts",empty:"All systems operational",activeCount:"{{count}} active alerts",triggeredAt:"Triggered {{time}}",viewDetail:"View detail",acknowledge:"Acknowledge",resolved:"Resolved"},coo={title:"Alert settings",description:"Set warning / critical thresholds for the 6 alert types; ops is notified when a metric crosses the line. Severity is derived from the tier automatically.",enabled:"Enabled",warnThreshold:"Warning threshold",critThreshold:"Critical threshold",cooldown:"Cooldown (min)",cooldownHint:"Minimum gap between two notifications for the same alert, to prevent spam.",rateHint:"Rate, 0–1 (e.g. 0.05 = 5%).",countHint:"Absolute value, ≥ 0.",directionHigher:"Higher is worse: warning ≤ critical.",directionLower:"Lower is worse: warning ≥ critical.",lastFired:"Last fired {{time}}",neverFired:"Never fired",save:"Save all",saving:"Saving",saved:"Alert settings saved",saveError:"Failed to save",readonlyHint:"You have read-only access.",noData:"No alert settings",errors:{directionHigher:"Warning threshold must be ≤ critical threshold",directionLower:"Warning threshold must be ≥ critical threshold",rateRange:"Rate thresholds must be within 0–1",nonNegative:"Thresholds must be ≥ 0",cooldownNonNegative:"Cooldown must be ≥ 0",required:"Threshold is required"},types:{payment_success_rate_low:"Payment success rate low",gateway_error_rate_high:"Gateway error rate high",model_error_spike:"Model error spike",webhook_dead_letter:"Webhook dead letter backlog",system_component_down:"System component down",negative_balance_exposure:"Negative balance exposure"}},doo={label:"Time range",today:"Today",days7:"7 days",days30:"30 days"},uoo="{{failed}}/{{total}} jobs",moo="{{delta}}pt vs yesterday",poo="Low sample ({{n}})",foo="Had gateway calls",goo="Last 7d cohort · normal users only",hoo="Refund rate {{rate}}%",yoo={funnel:"opened {{opened}} · paid {{paid}}"},voo={title:Nao,description:Dao,refresh:Mao,refreshing:Eao,lastUpdated:Iao,loading:Oao,failedLoad:Lao,empty:Uao,noTraffic:Bao,videoFailRate:Fao,avgLatency:zao,errorTypes:qao,noErrors:Hao,modelAnomalies:Vao,noAnomalies:Kao,c
835omponents:Gao,req:Wao,abandonRate:Yao,refunds:Qao,chargebacks:Xao,firstChargeConversion:Zao,sections:Jao,leaderboard:eoo,kpi:too,revenue:noo,orders:aoo,conversion:ooo,componentStatus:soo,severity:roo,health:ioo,alerts:loo,alertSettings:coo,range:doo,videoJobsDetail:uoo,vsYesterdayPt:moo,lowSample:poo,activeUsersHint:foo,conversionCohortHint:goo,refundRate:hoo,checkout:yoo},boo="Loading...",xoo="Admin permission required",$oo="Your account does not have permission to access this administrator page.",woo={loading:boo,permissionRequired:xoo,permissionDescription:$oo},koo="User growth",Coo="Signup rewards, discount codes, referrals, and credit grants. Manual grants live on the Users page.",Soo={mobileLabel:"Büyüme bölümü",onboarding:"Signup & new users",discount:"Discount codes",referral:"Referral cashback",grants:"Credit grants",topup:"Top-up bonus",redeem:"Kullanım kodu",tasks:"Task wall"},Aoo="Coupon batch",Too="Promotion rule",Roo="Count",Poo="Batch code",_oo="Creating...",joo="Create batch",Noo="{{count}} coupon code created",Doo="{{count}} coupon codes created",Moo="Batch {{code}}",Eoo="Copied",Ioo="Copy all",Ooo="Credit grants",Loo="Source",Uoo="Status",Boo="No grants yet",Foo="Coupon redemptions, signup bonuses, and manual grants appear here.",zoo="Time",qoo="User",Hoo="Amount",Voo="Signup bonus",Koo="Controls the credit automatically granted to new users. Disable it to stop future signup grants.",Goo="Enable signup credit",Woo="Amount (USD)",Yoo="Save signup bonus",Qoo="Saving...",Xoo="Current amount {{amount}}",Zoo="Referral cashback",Joo="Configure double-sided referral rewards, release delay, caps, and billing-page messaging.",eso="Enable referral cashback",tso="Reward tiers",nso="Add tier",aso="Recipient",oso="From day",sso="Until day",rso="Percent",iso="Label",lso="Action",cso="Inviter",dso="Invitee",uso="No end",mso="Remove tier",pso="Release delay (days)",fso="Per-topup cap (USD)",gso="Min topup (USD, blank = none)",hso="Cashback expiry (days, blank = never)",yso="Billing-page countdown banner",vso="Banner title",bso="Subtitle",xso="Countdown mode",$so="Global deadline",wso="Each invitee's 30-day window",kso="Ends at",Cso="Save referral settings",Sso="v{{version}}",Aso="Saving reward tiers, release delay, caps, or expiry publishes a NEW version. Existing referral relationships keep the version they were bound under — only new signups get the new terms. Pausing only affects new signups.",Tso="Version history",Rso="Version",Pso="Status",_so="Reward tiers",jso="Published",Nso="Superseded",Dso="current",Mso="Top-up discount codes",Eso="Discount codes lower what users pay at checkout; the full top-up amount is credited only after payment succeeds. Configure here, then generate codes below.",Iso="Enable discount codes",Oso="Discount type",Lso="Fixed amount off (USD)",Uso="Percentage off (%)",Bso="Amount off (USD)",Fso="Percentage off (0-100)",zso="Save discount",qso="Default low-balance alert",Hso="New users get an email low-balance alert at this threshold by default. Changing it only affects future signups, not existing wallets.",Vso="Threshold (USD)",Kso="Save threshold",Gso="Current: {{amount}}",Wso="Generate codes against the discount rule above.",Yso="In effect: {{state}} · {{value}} off",Qso="enabled",Xso="disabled",Zso="Issued codes",Jso="Pick a batch to see who redeemed each code.",ero="No batches yet",tro="Generate a batch above to start tracking redemptions.",nro="Total",aro="Redeemed",oro="Reserved",sro="Available",rro="Codes in {{code}}",iro="No codes in this batch",lro="Code",cro="Redeemed by",dro="Redeemed at",uro="Paid",mro="Discount",pro="Kod oluştur",fro="Paylaşılan kod, birçok kullanıcının N kez kullanabileceği tek bir koddur; benzersiz kod grubu ise N adet tek kullanımlık koddur.",gro="Kod türü",hro="Tek paylaşılan kod",yro="Benzersiz kod grubu",vro="Kod metni (rastgele için boş bırakın)",bro="ör. WELCOME100",xro="Toplam kullanım (N)",$ro="Kullanıcı başına",wro="Sona erme tarihi (isteğe bağlı)",kro="isteğe bağlı grup",Cro="Paylaşılan kod oluştur",Sro="Paylaşılan kod oluşturuldu",Aro="Bu grup için ayrı bir indirim kullan (yoksa yukarıdaki kural geçerli)",Tro="Paylaşılan kodlar",Rro="Tek kod, birçok kullanıcı. Kullanım sayısı, ödenen kullanımları izler.",Pro="Henüz paylaşılan kod yok",_ro="Kullanım / üst sınır",jro="Kullanıcı başına",Nro="Sona erer",Dro="Devre dışı bırak",Mro="Bu kod devre dışı bırakılsın mı?",Ero="Yeni ödemeler hemen engellenir. Hâlihazırda ödeme aşamasındaki siparişler yine de tamamlanabilir.",Iro="Kod devre dışı bırakıldı",Oro="CSV",Lro="Durum",Uro="E-posta",Bro={code:"Kod",discount:"İndirim",redeemed:"Kullanıldı",cap:"Üst sınır",perUser:"Kullanıcı başına",status:"Durum",expiresAt:"Sona erme tarihi",batch:"Grup",createdAt:"Oluşturulma tarihi",redeemedBy:"Kullanan",redeemedAt:"Kullanım tarihi",paid:"Ödendi",discountAmount:"İndirim",email:"Email",credited:"Credited",bonus:"Bonus",paidAt:"Paid at"},Fro="Amount",zro="Bound at",qro="Counterparty",Hro="Invitee",Vro="Inviter",Kro="Rate",Gro="Released",Wro="Role",Yro="Tier",Qro="Top-up",Xro="Load more",Zro="No referrals under this version",Jro="No cashback under this version",eio="Referrals",tio="Referral records",nio="Cashback records",aio="Version detail",oio={title:"Top-up bonus",description:"Reward bigger top-ups with bonus credit. Each tier can grant general credit or credit restricted to a model group.",enabled:"Enable top-up bonus",saved:"Top-up bonus saved",tiers:"Bonus tiers",tiersHint:"Top-up matches the highest tier whose threshold it reaches. Restricted credit only applies to synchronous text/image calls — not video or async image jobs.",noTiers:"No tiers yet. Add one to start rewarding top-ups.",min:"Min top-up (USD)",rewardType:"Reward",bonus:"Fixed (USD)",percent:"Percent (%)",rewardBonus:"Bonus amount (USD)",rewardPercent:"Percent of top-up (%)",expiryDays:"Expiry (days, blank = never)",noExpiry:"Never",scope:"Credit scope",scopeHint:"General credit works on any model; a model group restricts the bonus to those models.",scopeGeneral:"General (any model)",removeTier:"Remove tier",addTier:"Add tier",antifraud:"Abuse guards",minTopup:"Min top-up to qualify (USD, blank = none)",maxBonusPerUser:"Max bonus per user (USD, blank = none)",none:"None",excludeRisky:"Exclude watchlisted / blocked users",save:"Save top-up bonus",createScope:"New restricted model group",createScopeDescription:"Pick the models a restricted bonus may be spent on, then reference this group from a tier above.",scopeName:"Group name",scopeNamePlaceholder:"High-margin models",scopeModels:"Models",pickModels:"Pick models",nModels:"{{count}} models",createScopeButton:"Create group",scopeCreated:"Model group created"},sio="Kullanım kodu oluştur",rio="Ön ödemeli kart tarzı kullanım kodu. Kullanıcı fatura sayfasında kodu girdiğinde tutar doğrudan bakiyeye eklenir (hediye bakiye, ödeme gerekmez).",iio="Parti adı (isteğe bağlı)",lio="Örn: Conf-2026 hediyesi",cio="Oluşturulacak adet",dio="Kod başına tutar (USD)",uio="Bu partide hesap başına kullanım limiti (boş bırak = sınırsız)",mio="Sınırsız",pio="Son kullanım tarihi (isteğe bağlı)",fio="Restrict to models (optional)",gio="General balance (no restriction)",hio="{{count}} models selected",yio="Blank = general balance. Selected models share one earmarked pool.",vio="Credit validity after redemption (days, blank = never expires)",bio="never expires",xio="{{n}} d",$io="Models",wio="Validity",kio="General balance",Cio="Kullanım kodu oluştur",Sio='Hemen kaydedin. Daha sonra parti listesinden "Düz metin olarak dışa aktar" ile yeniden alabilirsiniz.',Aio="Kullanım kodu partileri",Tio='Tekil ayrıntıları görmek için partiye tıklayın; "Düz metin olarak dışa aktar" ile kodlar yeniden dışa aktarılabilir.',Rio="Henüz kullanım kodu partisi yok",Pio="Parti",_io="Tutar",jio="Düz metin olarak dışa aktar",Nio="Kullanılmış bu kod geri alınsın mı?",Dio="Kullanıcının bakiyesinden henüz harcanmamış kısmı ger
835i alınır; harcanmış kısım geri alınamaz.",Mio="Geri al",Eio="{{amount}} geri alındı",Iio="Kullanım kodları dışa aktarıldı",Oio="Bu partide kullanılmamış kodlar devre dışı bırakılsın mı?",Lio="Henüz kullanılmamış tüm kodlar geçersiz olur; kullanılmış kodlar etkilenmez.",Uio="{{n}} kod devre dışı bırakıldı",Bio="Bonus % on top-up",Fio="Bonus (%)",zio="Bonus validity (days, optional)",qio="blank = never expires",Hio={view:"Payments",title:"Payments via ····{{code}}",email:"User",credited:"Credited",bonus:"Bonus",summary:"{{count}} payments · {{users}} users · {{paid}} paid · {{bonus}} bonus granted",empty:"No payments through this code yet"},Vio={configTitle:"Task wall config",configDescription:"Amounts, switches and accepted hosts. Task copy lives in the translation files, not here. Changes take effect on the next page load — no deploy.",enabled:"Enable the task wall",tasksTitle:"Tasks",taskKey:"Task key",amount:"Amount (USD)",hosts:"Accepted hosts",hostsHint:"Links outside this list are rejected at submission time.",taskEnabled:"Visible to users",addTask:"Add task",guardsTitle:"Abuse guards",dailyCap:"Daily pending cap",dailyCapHint:"0 = no cap. Fail-open if Redis is down.",minAge:"Minimum account age (days)",minAgeHint:"0 = no age gate.",saved:"Task wall saved",queueTitle:"Submissions",queueCount:"{{count}} shown",empty:"Nothing here.",approve:"Approve & pay",approved:"Approved — credit granted",reject:"Reject",rejected:"Rejected",confirmReject:"Confirm reject",reasonPlaceholder:"Why is this rejected?",duplicate:"Same link from {{count}} other account(s)",status:{pending:"Pending",approved:"Approved",rejected:"Rejected"}},Kio={title:koo,description:Coo,tabs:Soo,couponBatch:Aoo,promotionRule:Too,count:Roo,batchCode:Poo,creating:_oo,createBatch:joo,codesCreated:Noo,codesCreated_plural:Doo,batch:Moo,copied:Eoo,copyAll:Ioo,creditGrants:Ooo,source:Loo,status:Uoo,noGrants:Boo,noGrantsDescription:Foo,time:zoo,user:qoo,amount:Hoo,signupBonus:Voo,signupBonusDescription:Koo,signupBonusEnabled:Goo,signupBonusAmount:Woo,saveSignupBonus:Yoo,saving:Qoo,currentSignupBonus:Xoo,referral:Zoo,referralDescription:Joo,referralEnabled:eso,referralRewardTiers:tso,addTier:nso,tierRole:aso,tierFromDay:oso,tierUntilDay:sso,tierPercent:rso,tierLabel:iso,tierAction:lso,roleReferrer:cso,roleReferee:dso,noEndDay:uso,removeTier:mso,releaseDelayDays:pso,referralCap:fso,referralMinTopup:gso,referralExpiryDays:hso,bannerEnabled:yso,bannerTitle:vso,bannerSubtitle:bso,bannerMode:xso,bannerModeGlobal:$so,bannerModeWindow:wso,bannerEndsAt:kso,saveReferral:Cso,referralVersion:Sso,referralPublishHint:Aso,referralVersionHistory:Tso,versionCol:Rso,versionStatus:Pso,versionTiers:_so,versionPublished:jso,versionSuperseded:Nso,versionCurrent:Dso,discountRule:Mso,discountRuleDescription:Eso,discountEnabled:Iso,discountType:Oso,discountFixed:Lso,discountPercent:Uso,discountValueFixed:Bso,discountValuePercent:Fso,saveDiscount:zso,defaultLowBalanceThreshold:qso,defaultLowBalanceThresholdDescription:Hso,defaultLowBalanceThresholdAmount:Vso,saveDefaultLowBalanceThreshold:Kso,currentDefaultLowBalanceThreshold:Gso,couponBatchDescription:Wso,discountEffective:Yso,stateEnabled:Qso,stateDisabled:Xso,couponTrace:Zso,couponTraceDescription:Jso,noBatches:ero,noBatchesDescription:tro,batchTotal:nro,batchRedeemed:aro,batchReserved:oro,batchActive:sro,codesInBatch:rro,noCodes:iro,code:lro,redeemedBy:cro,redeemedAt:dro,paid:uro,discount:mro,createIssuance:pro,createIssuanceDescription:fro,formLabel:gro,formShared:hro,formUniqueBatch:yro,sharedCodeText:vro,sharedCodeRandomHint:bro,sharedMaxRedemptions:xro,sharedPerUser:$ro,expiresAt:wro,batchCodeOptional:kro,createSharedCode:Cro,sharedCodeCreated:Sro,batchOwnDiscount:Aro,sharedCodesList:Tro,sharedCodesListDescription:Rro,noSharedCodes:Pro,colRedeemedTotal:_ro,colPerUser:jro,colExpiry:Nro,disableCode:Dro,disableCodeConfirmTitle:Mro,disableCodeConfirmMessage:Ero,codeDisabled:Iro,exportCsv:Oro,statusFilter:Lro,filterByEmail:Uro,csv:Bro,colAmount:Fro,colBoundAt:zro,colCounterparty:qro,colInvitee:Hro,colInviter:Vro,colRate:Kro,colReleasedAt:Gro,colRole:Wro,colTier:Yro,colTopup:Qro,loadMore:Xro,noBindings:Zro,noCashback:Jro,versionBindings:eio,versionBindingsSection:tio,versionCashbackSection:nio,versionDetail:aio,topup:oio,redeemCreate:sio,redeemCreateDescription:rio,redeemBatchName:iio,redeemBatchNameHint:lio,redeemCount:cio,redeemFaceValue:dio,redeemPerUserLimit:uio,redeemUnlimited:mio,redeemExpiresAt:pio,redeemModels:fio,redeemModelsAll:gio,redeemModelsCount:hio,redeemModelsHint:yio,redeemValidityDays:vio,redeemValidityForever:bio,redeemValidityDaysValue:xio,redeemColModels:$io,redeemColValidity:wio,redeemGeneralBalance:kio,redeemCreateBtn:Cio,redeemRevealHint:Sio,redeemBatches:Aio,redeemBatchesDescription:Tio,redeemNoBatches:Rio,redeemBatchCol:Pio,redeemFace:_io,redeemReveal:jio,redeemReverseTitle:Nio,redeemReverseMessage:Dio,redeemReverseBtn:Mio,redeemReversed:Eio,redeemRevealed:Iio,redeemDisableBatchTitle:Oio,redeemDisableBatchMessage:Lio,redeemBatchDisabled:Uio,discountTypeBonusPercent:Bio,discountValueBonusPercent:Fio,bonusExpiryDays:zio,bonusExpiryDaysHint:qio,sharedPayments:Hio,tasks:Vio},Gio="Models",Wio="Model catalog: create, edit, publish.",Yio={label:"Display badges",hint:"Hot / Benefit tags shown on the user-facing models & pricing page.",hot:"Hot",benefit:"Benefit"},Qio="Add model",Xio="Edit {{model}}",Zio="New model",Jio="Close",elo="Basics & content save together; pricing and status changes apply immediately.",tlo="Create the model draft. Set pricing and publish after it exists.",nlo={basics:"Basics",basicsHint:"Identity, upstream mapping, protocols.",config:"Configuration",configHint:"Identity, upstream routing, type and capabilities.",protocols:"Protocols",protocolsHint:"Which API protocols this model serves.",content:"Content & display",contentHint:"i18n summary / description and sort order."},alo="Provider slug",olo="Pick a known provider or type a custom slug.",slo="Model slug",rlo="Aliases",ilo="Comma-separated lookup aliases for import and review.",llo="Source (customer-visible)",clo="Label customers see on the model/logs. Blank = vendor. Use it to distinguish s
835ame-model variants at different prices.",dlo="Platform",ulo="— select platform —",mlo="Upstream model id (optional; choose from upstream or enter manually)",plo="Choose from upstream...",flo="Upstream unavailable",glo="Protocols",hlo="Input price / 1M (USD)",ylo="Output price / 1M (USD)",vlo="EN summary",blo="Preview",xlo="(No summary)",$lo="No protocol",wlo="Cancel",klo="Save",Clo="Create draft",Slo={basic:"Identity & routing",pricing:"Pricing",content:"Content & display"},Alo={config:"1 · Configuration",protocols:"2 · Protocols",pricing:"3 · Pricing",display:"Content & display",back:"Back",next:"Next",create:"Create model"},Tlo="Context window (tokens)",Rlo="Max input the model accepts. Leave blank if unknown.",Plo="Max output tokens",_lo="Max tokens the model can generate per response.",jlo={status:"Status",visibility:"Visibility",hint:"Lifecycle changes apply immediately (with confirmation), separate from Save.",confirmStatus:'Set status to "{{status}}"? Takes effect immediately.',confirmVisibility:'Set visibility to "{{visibility}}"? Takes effect immediately.',statusChanged:"Status set to {{status}}.",visibilityChanged:"Visibility set to {{visibility}}.",publishBlocked:"Cannot publish: core pricing factors are missing. Set them in the Pricing tab first.",statusOption:{draft:"Draft",published:"Published",deprecated:"Deprecated",archived:"Archived"},visibilityOption:{public:"Public",hidden:"Hidden"},availability:"Availability",confirmAvailable:"Mark this model available again? Takes effect immediately.",confirmUnavailable:"Mark this model temporarily unavailable? It stays listed (greyed out) but gateway calls are rejected.",availableChanged:"Model marked available.",unavailableChanged:"Model marked temporarily unavailable.",availabilityOption:{available:"Available",unavailable:"Unavailable"},audience:"Audience",audienceOption:{everyone:"Everyone",paid_only:"Topped-up accounts only"},confirmPaidOnly:"Restrict this model to accounts that have topped up? It stays listed, but users who never paid get a 403 telling them to top up.",confirmEveryone:"Open this model to every account? Takes effect immediately.",paidOnlyChanged:"Model restricted to accounts that have topped up.",everyoneChanged:"Model opened to every account."},Nlo="Input modalities",Dlo="Declares what this model can receive, including vision, audio, video, and file inputs.",Mlo="Output modalities",Elo="Drives the publish gate: text requires text in/out pricing, image/video/embeddings require their factors.",Ilo="Image billing style",Olo="Video billing style",Llo="How the upstream charges for this output. Required before publishing — the gate demands the matching price factor.",Ulo="— select billing style —",Blo="Per token (image_output_token)",Flo="Per image (per_call_image)",zlo="Per second (video_per_second)",qlo="Per call (video_per_call)",Hlo="Display order",Vlo="Must be a non-negative integer.",Klo="Editing locale",Glo="Upstream release date",Wlo="Summary (this locale)",Ylo="Description (Markdown, this locale)",Qlo={provider:"Provider",status:"Status",visibility:"Visibility",allStatuses:"All model statuses",allVisibility:"All visibility",allProviders:"All providers",search:"Search model slug",mobileTitle:"Filtreler"},Xlo={label:"Models",empty:"No models",model:"Model",provider:"Provider",source:"Source",status:"Status",visibility:"Visibility",action:"Action",edit:"Edit",setStatus:"Set status for {{model}}",setVisibility:"Set visibility for {{model}}",confirmSet:'Set {{model}} {{field}} to "{{value}}"?',sub2api:"Sub2API mapping",textPrice:"Price (in / out $/M)",priceByTokens:"{{kind}} · per-token",imageOutput:"image out",officialPrice:"List",saved:"-{{pct}}%"},Zlo={invalidPrice:"Price must be a number greater than or equal to 0, or left blank.",highRisk:"This change affects live gateway routing and may cause 404s. Continue?",stale:"This model was changed by someone else. Close and reopen it before editing again."},Jlo={savesImmediately:"Pricing changes apply immediately and are not controlled by Save.",createPriceFailed:"Model created, but some prices were not saved. Add them in the Pricing tab.",factors:{title:"Pricing factors",hint:"Each row is an atomic unit (text input/output, cache, image, …). Active rows determine billing from their effective date; history rows record past prices.",liveBanner:"Changes here apply immediately and are recorded in price history — they are not controlled by the bottom Save button.",draftHint:"Save the model draft first; pricing factors are edited inline after the model exists.",addFactor:"Add factor",changePrice:"Change price",expire:"Expire",confirmExpire:"Expire this factor row? It will stop applying immediately and move to history.",changeSaved:"Factor price updated.",expired:"Factor expired.",factor:"Factor",tier:"Tier",tierNone:"(no tier)",unit:"Unit",ourPrice:"Our price (USD)",officialPrice
835:"Official (USD)",officialAbbr:"official",source:"Source (optional URL or note, ≤128 chars)",historyLabel:"History ({{count}})",emptyTitle:"No active factor prices",empty:'Click "Add factor" to set one.',loadError:"Could not load pricing factors",draftEditorHint:"Set prices now, or leave empty and add them after the model is created.",draftEmpty:"No prices added yet.",remove:"Remove",factorOption:{text_input:"Text input (LLM)",text_output:"Text output (LLM)",cache_read:"Cache read",cache_write_5m:"Cache write (5m TTL)",cache_write_1h:"Cache write (1h TTL)",image_input_token:"Image input token",image_output_token:"Image output token",per_call_image:"Image (per call)",video_per_call:"Video (per call)",video_per_second:"Video (per second)",web_search_call:"Web search call"},unitOption:{per_1m_tokens:"per 1M tokens",per_image:"per image",per_call:"per call",per_second:"per second"},conditions:"Conditions JSON (optional)"},discount:{toggle:"Apply discount",hint:"Set every factor to a fraction of its official price (0.5 = 50% off). Free factors (our price 0) and factors with no official price are skipped.",rate:"Discount rate",preview:"Preview",apply:"Apply",allowMarkup:"Allow markup (rate above 1 prices above official)",noFactors:"No active factors to reprice.",confirmTitle:"Apply discount to all factors?",confirmBody:"Reprice {{count}} factor(s) to {{rate}}× the official price. This is versioned — historical billing is unaffected.",applied:"Repriced {{count}} factor(s) at {{rate}}× official.",stale:"Prices changed since the preview — please preview again.",skipReason:{free_factor_our_zero:"Free factor (our price is 0) — left unchanged",no_official:"No official price — cannot compute",official_zero:"Official price is 0 — skipped"}}},eco="Discard unsaved changes?",tco="Modeli düzenle",nco={title:Gio,description:Wio,badges:Yio,addModel:Qio,editModel:Xio,newModel:Zio,close:Jio,sheetDescription:elo,sheetDescriptionNew:tlo,sections:nlo,providerSlug:alo,providerSlugHint:olo,modelSlug:slo,aliases:rlo,aliasesHint:ilo,source:llo,sourceHint:clo,platform:dlo,platformUnset:ulo,sub2apiModelId:mlo,chooseSub2api:plo,upstreamUnavailable:flo,protocols:glo,inputPrice:hlo,outputPrice:ylo,enSummary:vlo,preview:blo,noSummary:xlo,noProtocol:$lo,cancel:wlo,save:klo,createDraft:Clo,tabs:Slo,steps:Alo,contextWindow:Tlo,contextWindowHint:Rlo,maxOutputTokens:Plo,maxOutputTokensHint:_lo,lifecycle:jlo,inputModalities:Nlo,inputModalitiesHint:Dlo,outputModalities:Mlo,outputModalitiesHint:Elo,billingStyleImage:Ilo,billingStyleVideo:Olo,billingStyleHint:Llo,billingStyleUnset:Ulo,billingStyleToken:Blo,billingStylePerImage:Flo,billingStylePerSecond:zlo,billingStylePerCall:qlo,displayOrder:Hlo,displayOrderInvalid:Vlo,contentLocale:Klo,upstreamReleaseAt:Glo,summary:Wlo,descriptionField:Ylo,filters:Qlo,table:Xlo,errors:Zlo,pricing:Jlo,discardChanges:eco,editModelShort:tco},aco="Rate Limits",oco="Rate limit policies by scope.",sco="Rate limit policies",rco="No policies",ico="Code",lco="Name",cco="Scope",dco="Status",uco="Limits",mco="No limits",pco={auth:"Auth",console:"Console",api_gateway:"API gateway",ops:"Ops",global:"Global"},fco={active:"Active",disabled:"Disabled",archived:"Archived"},gco={rpm_per_key:"RPM / key",rpm_per_user:"RPM / user",concurrent_streams_per_key:"Streams / key",concurrent_streams_per_user:"Streams / user"},hco="New policy",yco="Edit",vco="Action",bco="New rate limit policy",xco="Edit {{name}}",$co="Concurrency and RPM limits applied per API key and per user. Assign a policy to users on the Users page.",wco='Delete policy "{{name}}"? Keys and users on it fall back to their default.',kco="Policy deleted.",Cco={identity:"Identity",classification:"Classification",description:"Description",codeImmutable:"Code cannot be changed after creation.",limitsHint:"Leave blank to use the platform default for that limit.",default:"default",invalidLimit:"{{field}} must be a positive integer.",saved:"Policy saved.",cancel:"Cancel",save:"Save",create:"Create policy"},Sco={title:aco,description:oco,label:sco,empty:rco,code:ico,name:lco,scope:cco,status:dco,limits:uco,noLimits:mco,scopes:pco,statuses:fco,limitNames:gco,add:hco,edit:yco,delete:"Delete",action:vco,newTitle:bco,editTitle:xco,formDescription:$co,confirmDelete:wco,deleted:kco,form:Cco},Aco="Admins",Tco="Who can sign in to the admin console. Owner-only.",Rco="Admins",Pco="No admins yet",_co="Email",jco="Name",Nco="Role",Dco="Status",Mco="Last login",Eco="Action",Ico="Add admin",Oco="Add admin",Lco="The email becomes an admin immediately and signs in with it — admin access is matched by email. It does not need an account yet.",Uco="Email",Bco="[email protected]",Fco="Name",zco="Display name",qco="Role",Hco="Admin added.",Vco="Change role",Kco="Role updated.",Gco="Suspend",Wco="Activate",Yco="Status updated.",Qco="Remove",Xco="Admin removed.",Zco="Remove {{email}} as an admin? They lose console access immediately.",Jco="You",edo="Never",tdo={owner:"Owner",admin:"Admin",
835support:"Support"},ndo={active:"Active",suspended:"Suspended"},ado={title:Aco,description:Tco,label:Rco,empty:Pco,email:_co,name:jco,role:Nco,status:Dco,lastLogin:Mco,action:Eco,add:Ico,newTitle:Oco,formDescription:Lco,emailLabel:Uco,emailPlaceholder:Bco,nameLabel:Fco,namePlaceholder:zco,roleLabel:qco,added:Hco,changeRole:Vco,roleChanged:Kco,suspend:Gco,activate:Wco,statusChanged:Yco,remove:Qco,removed:Xco,confirmRemove:Zco,self:Jco,never:edo,roles:tdo,statuses:ndo},odo="Upstream",sdo="Read-only upstream configuration mirror plus controlled OneHop routing pools.",rdo="Open upstream admin",ido="Upstream tabs",ldo={overview:"Overview",keyPools:"Key pools",groups:"Groups",channels:"Channels",accounts:"Accounts"},cdo={todayRequests:"Today requests",total:"{{value}} total",upstreamCostToday:"Upstream cost today",providerAccounts:"Provider accounts",health:"Health",stale:"stale",checkPools:"check pools",online:"online"},ddo={upstreamStatsFailed:"Upstream stats failed to load",retry:"Retry",configAuditFailed:"Config audit failed",keyPoolsLoadFailed:"Key pools failed to load",createKeyPoolFailed:"Create key pool failed",keyPoolTestFailed:"Key pool test failed",keyPoolRotateFailed:"Key pool rotate failed",failedLoad:"{{title}} failed to load"},udo={title:"Config audit",description:"Compares OneHop key pools and published model routing against upstream routing. Provider groups, channels, pricing, and accounts remain read-only here.",running:"Running...",run:"Run audit",poolsChecked:"Pools checked",modelAudit:"Model audit",checkedAt:"Checked at",needsReview:"needs review",done:"done",ok:"ok",upstreamCoverage:"Upstream kapsamı",coverageUnchecked:"hesaplar okunamıyor",coverageOnlyAccount:"yalnızca {{accounts}}",coverageNoAccount:"Bu upstream kimliğini eşleyen zamanlanabilir hesap yok"},mdo={title:"Topology",keyPools:"Key pools",activeGroups:"Active groups",activeChannels:"Active channels",accounts:"Accounts",editingBoundaryTitle:"Editing boundary",editingBoundaryDescription:"The upstream admin exposes deep edit workflows for groups, channels, pricing rules, provider accounts, monitoring, and system settings. OneHop intentionally mirrors only the operational read path and owns internal key pools, so edits that change provider routing still happen in the original admin."},pdo={title:"OneHop internal key pools",description:"Pools select which upstream internal key OneHop uses per protocol and model pattern. Full secrets are never displayed.",poolCode:"Pool code",poolName:"Pool name",defaultPool:"Default pool",notDefault:"Not default",plaintextKey:"Plaintext key",create:"Create",label:"Provider routing key pools",pool:"Pool",protocols:"Protocols",models:"Models",routingGroup:"Routing group",status:"Status",health:"Health",key:"Key",lastCheck:"Last check",action:"Action",priority:"priority {{value}}",default:"default",secret:"secret",hidden:"hidden",test:"Test",rotate:"Rotate",empty:"No key pools",emptyDescription:"Create an internal pool before routing production traffic through provider routing.",newPlaintextKey:"New plaintext key",confirmRotate:"Confirm rotate",editProtocols:"Edit protocols",editProtocolsTitle:"Edit protocols (replace)",confirmEditProtocols:"Save protocols",cancelEditProtocols:"Cancel",forceEditProtocols:"Force save (override routing check)"},fdo={editUpstreamConfig:"Edit upstream config",groupsTitle:"Groups",groupsDescription:"Routing buckets from upstream config. OneHop uses these as source-of-truth context for key-pool binding and audit decisions.",groupsLabel:"Routing groups",groupsEmpty:"No groups",groupsEmptyDescription:"Upstream config did not return any groups.",channelsTitle:"Channels",channelsDescription:"Provider channel configuration from upstream config, including model mappings and pricing rule coverage.",channelsLabel:"Provider routing channels",channelsEmpty:"No channels",channelsEmptyDescription:"Upstream config did not return any channels.",accountsTitle:"Accounts",accountsDescription:"Provider accounts are redacted in OneHop. Use the upstream admin for credential edits and OAuth refresh flows.",accountsLabel:"Provider routing accounts",accountsEmpty:"No accounts",accountsEmptyDescription:"Upstream config did not return any provider accounts."},gdo={group:"Group",platform:"Platform",rate:"Rate",rpm:"RPM",accounts:"Accounts",limits:"Limits",status:"Status",updated:"Updated",channel:"Channel",billingSource:"Billing source",mappings:"Mappings",pricing:"Pricing",account:"Account",groups:"Groups",baseUrl:"Base URL",capacity:"Capacity",lastUsed:"Last used"},hdo={noDescription:"No description",unlimited:"unlimited",schedulable:"schedulable",notSchedulable:"not schedulable",loading:"Loading...",noPricingRules:"No pricing rules",modelsCount:"{{count}} models",none:"none",channelMapped:"Channel mapped",requestedModel:"Requested model",upstreamModel:"Upstream model",priority:"priority",unknown:"unknown"},ydo={serving:{label:"Serving state",serving:"Serving",rate_limited:"Rate-limited",overloaded:"Overloaded",expired:"Expired",paused:"Paused",error:"Error",disabled:"Disabled"},quota:{label:"Quota (today)",noLimit:"no limit",spend:"{{spend}} / {{limit}}"},accounts:{breakdown:"{{normal}} normal · {{error}} error · {{ratelimit}} limited · {{overload}} overload"},freshness:{updated:"updated {{ago}}",never:"never"},pools:{lastError:"Last error",resync:"Resync"},audit:{poolFindings:"Pool findings",clean:"clean",findingsCount:"{{count}} issue(s)"},tokensToday:"{{count}} tok today"},vdo={title:odo,description:sdo,openUpstreamAdmin:rdo,tabsLabel:ido,tabs:ldo,metrics:cdo,errors:ddo,audit:udo,topology:mdo,pools:pdo,readonly:fdo,table:gdo,common:hdo,ops:ydo},bdo="Platform usage",xdo="Cross-user request metering with cost, token, latency, and routing signals.",$do="Refresh",wdo={label:"Auto refresh",off:"Off"},kdo="Exporting",Cdo="Export CSV",Sdo="Failed to export usage records",Ado="Requests",Tdo="{{count}} successful",Rdo="Users",Pdo="Matched by current filters",_do="Billed credit",jdo="{{cost}} upstream cost",Ndo="Tokens",Ddo="Avg {{duration}}",Mdo="User email",Edo="Search by email",Ido="Model",Odo="Search by model",Ldo="Status",Udo="Protocol",Bdo="Rows",Fdo="Reset",zdo="Ops usage records",qdo="No usage records",Hdo="User",Vdo="Endpoint",Kdo="{{count}} total",Gdo="In {{input}} / out {{output}}
835",Wdo="Upstream",Ydo="Billed",Qdo="Latency",Xdo="Started",Zdo="Page {{page}} · showing {{shown}} of {{total}} matching records",Jdo="Previous",euo="Next",tuo="{{count}} rows on this page",nuo="Times shown in",auo="{{count}} API keys",ouo="Spend snapshot",suo="from OneHop billing snapshot",ruo="User spend",iuo="total billed to users",luo="Avg latency",cuo="settled requests",duo="Range",uuo={today:"Today",days7:"7 days",days30:"30 days",all:"All time"},muo="Metric",puo={cost:"Spend",tokens:"Tokens",requests:"Requests"},fuo="Distribution",guo={model:"Model",requestedModel:"Requested model",upstreamModel:"Upstream model",apiKey:"API key",user:"User",endpoint:"Endpoint",channel:"Channel",group:"Group",stream:"Transport (stream/sync)"},huo="Usage trend",yuo="Usage by model",vuo="Hourly",buo="Daily",xuo="Top endpoints",$uo="Top dimension rows",wuo="Request logs",kuo="API key",Cuo="Type",Suo="Billing",Auo="Channel",Tuo="Group",Ruo="Request ID",Puo="req_ / usg_ / upstream",_uo="All types",juo="All billing",Nuo={user:"User",time:"Time",model:"Model",tokens:"Tokens",cost:"Spend",routing:"Routing",latency:"Latency",status:"Status",duration:"Duration"},Duo="Failed to load usage",Muo="Loading usage records",Euo="Try a different filter set.",Iuo="No trend data",Ouo="No distribution data",Luo="No rows",Uuo="Spend breakdown",Buo={upstreamList:"Upstream list",discount:"Discount",sub2apiActual:"Sub2API actual",groupChannelMultiplier:"Group/channel multiplier",accountMultiplier:"Account multiplier",sub2apiFinalCharge:"Final spend",billedFactors:"Billed to user"},Fuo="Request detail",zuo="Unknown user",quo="Loading...",Huo="Sub2API actual",Vuo="Group multiplier",Kuo="Account multiplier",Guo="Identity",Wuo="User ID",Yuo="Key suffix",Quo={hopIdentity:"Hop identity",logicalUsageId:"Logical usage ID",logicalRequestedModel:"Logical requested model",logicalModel:"Logical model",actualRequestedModel:"Actual requested model",actualModel:"Actual model",fallbackHop:"Fallback hop",userVisibility:"User visibility",visible:"Visible",hidden:"Hidden",supersedesUsageRecord:"Supersedes record",pricingAudit:"Continuity pricing audit",mode:"Mode",policyVersion:"Policy version",sourceModel:"Source model",targetModel:"Target model",requestedRawQuote:"Requested raw quote",requestedQuote:"Requested quote",actualPricingStatus:"Actual pricing status",actualPricingAvailable:"Available",actualPricingUnavailable:"Unavailable",actualQuote:"Actual quote",chargedQuote:"Charged quote",variance:"Quote variance",actualPricingError:"Actual pricing error"},Xuo="Input",Zuo="Output",Juo="Cache read",emo="Cache write",tmo="Raw metadata",nmo="Request",amo="Usage ID",omo="OneHop ID",smo="Sub2API ID",rmo="Sub2API log",imo="Routing",lmo="Mapping",cmo="Performance",dmo="First token",umo="Total",mmo="Error",pmo="Code",fmo="Message",gmo={time:"Time",user:"User",apiKey:"API key",model:"Model",logicalUsageId:"Logical usage ID",logicalRequestedModel:"Logical requested model",logicalModel:"Logical model",actualRequestedModel:"Actual requested model",actualModel:"Actual model",fallbackHop:"Fallback hop",userVisible:"User visible",supersedesUsageRecord:"Supersedes usage record",upstreamModel:"Upstream model",protocol:"Protocol",endpoint:"Endpoint",type:"Type",status:"Status",inputTokens:"Input tokens",outputTokens:"Output tokens",cacheRead:"Cache read",cacheWrite:"Cache write",sub2apiActual:"Sub2API actual",sub2apiCharge:"Spend",continuityMode:"Continuity mode",continuityPolicyVersion:"Continuity policy version",continuitySourceModel:"Continuity source model",continuityTargetModel:"Continuity target model",continuityRequestedRawQuote:"Continuity requested raw quote",continuityRequestedQuote:"Continuity requested quote",continuityActualPricingStatus:"Continuity actual pricing status",continuityActualQuote:"Continuity actual quote",continuityChargedQuote:"Continuity charged quote",continuityVariance:"Continuity quote variance",continuityActualPricingError:"Continuity actual pricing error",durationMs:"Duration ms",channel:"Channel",group:"Group",onehopRequestId:"OneHop request ID",sub2apiRequestId:"Sub2API request ID",firstTokenMs:"First token ms"},hmo={analytics:"Usage analytics",logs:"Request logs"},ymo={label:"Chart view",stacked:"Over time",ranking:"Ranking"},vmo={failedOnly:"Failed only",slowOnly:"Slow > {{sec}}s"},bmo="More filters",xmo="Slow threshold (ms)",$mo="No model usage",wmo="No requests yet — usage will appear here as traffic comes in.",kmo="Viewing",Cmo="streaming requests",Smo="Avg duration",Amo="Latency = time to first token (TTFT); Duration = total. The slow filter uses TTFT and only covers successful requests with a recorded first token (earlier or failed requests show —).",Tmo="Open request detail",Rmo={title:bdo,description:xdo,refresh:$do,autoRefresh:wdo,exporting:kdo,exportCsv:Cdo,exportError:Sdo,requests:Ado,successful:Tdo,users:Rdo,matchedFilters:Pdo,billedCredit:_do,upstreamCost:jdo,tokens:Ndo,avgDuration:Ddo,userEmail:Mdo,searchEmail:Edo,model:Ido,searchModel:Odo,status:Ldo,protocol:Udo,rows:Bdo,reset:Fdo,label:zdo,empty:qdo,user:Hdo,endpoint:Vdo,totalTokens:Kdo,inOut:Gdo,upstream:Wdo,billed:Ydo,latency:Qdo,started:Xdo,pageSummary:Zdo,previous:Jdo,next:euo,rowsOnPage:tuo,timesShownIn:nuo,apiKeys:auo,sub2apiCharge:ouo,sub2apiChargeSource:suo,userSpend:ruo,userSpendSource:iuo,avgLatency:luo,settledRequests:cuo,range:duo,ranges:uuo,metric:muo,metrics:puo,distribution:fuo,breakdown:guo,usageTrend:huo,stackedByModel:yuo,hourly:vuo,daily:buo,topEndpoints:xuo,topDimensionRows:$uo,requestLogs:wuo,apiKey:kuo,type:Cuo,billing:Suo,channel:Auo,group:Tuo,requestId:Ruo,requestIdPlaceholder:Puo,allTypes:_uo,allBilling:juo,table:Nuo,failedLoad:Duo,loadingRecords:Muo,tryDifferentFilters:Euo,noTrendData:Iuo,noDistributionData:Ouo,noRows:Luo,costBreakdown:Uuo,adminCost:Buo,requestDetail:Fuo,unknownUser:zuo,loading:quo,sub2apiActual:Huo,groupMultiplier:Vuo,accountMultiplier:Kuo,identity:Guo,userId:Wuo,keySuffix:Yuo,continuity:Quo,input:Xuo,output:Zuo,cacheRead:Juo,cacheWrite:emo,rawMetadata:tmo,request:nmo,usageId:amo,onehopId:omo,sub2apiId:smo,sub2apiLog:rmo,routing:imo,mapping:lmo,performance:cmo,firstToken:dmo,total:umo,error:mmo,code:pmo,message:fmo,csv:gmo,tabs:hmo,modelView:ymo,chip:vmo,moreFilters:bmo,slowThreshold:xmo,noModelUsage:$mo,noTrendToday:wmo,viewing:kmo,avgLatencySub:Cmo,avgTotalDuration:Smo,latencyHint:Amo,openRequestDetail:Tmo},Pmo="Search",_mo="Search by user ID, email, or name",jmo="User",Nmo="Back to users",Dmo="You do not have permission to view this 
835section.",Mmo="Refund",Emo="Refunding...",Imo="Initiate a refund of {{amount}} for {{email}}? Refunds are processed asynchronously; the balance updates after the worker runs.",Omo="Refund initiated.",Lmo={overview:"Overview",network:"Network & Device",recentCalls:"Recent Calls",apiKeys:"API Anahtarları",payments:"Payments",refunds:"Refunds",subscription:"Subscription",referrals:"Referrals",rewards:"Rewards",audit:"Audit"},Umo={title:"Free token allowance",paused:"Free token grants are paused on this account (risk review).",daily:"Daily",weekly:"Weekly",tokensUnit:"tokens",remaining:"{{value}} tokens remaining today"},Bmo={title:"Free model quota (today)",tokens:"tokens",remaining:"{{value}} tokens remaining today",unlimited:"Free quota: unlimited (gate disabled)",eligibilityLabel:"Free tier eligibility",eligible:"Free tier",ineligible:"Ineligible (same device used)"},Fmo={phase2:"Subscriptions are coming in Phase 2."},zmo={empty:"No payments"},qmo={empty:"No refunds"},Hmo={empty:"No credit buckets",note:"Credit buckets show current balance inventory. Grant and refund history appear in the Audit timeline; referral rewards in the Referrals section."},Vmo={totalEarned:"Total earned",frozenEarned:"Frozen",refereeCount:"Referees",activeCount:"Active",role:"Role",counterparty:"Counterparty",empty:"No referral activity"},Kmo={empty:"No audit records"},Gmo={amount:"Amount",credit:"Credit",status:"Status",provider:"Provider",createdAt:"Created",type:"Type",originalTx:"Original tx",remaining:"Remaining",initial:"Initial",expiresAt:"Expires",event:"Event",action:"Action",severity:"Severity"},Wmo={ipLocationTitle:"IP ve Konum",deviceBrowserTitle:"Cihaz ve Tarayıcı",stripeTitle:"Stripe",signupIp:"Kayıt IP’si",signupCountry:"Kayıt Ülkesi",lastLoginIp:"Son Giriş IP’si",ipDifferent:"Kayıt IP’sinden farklı",sameIpAccounts_one:"Aynı kayıt IP’sinde {{count}} hesap",sameIpAccounts_other:"Aynı kayıt IP’sinde {{count}} hesap",sameDeviceAccounts_one:"Aynı cihazda {{count}} hesap",sameDeviceAccounts_other:"Aynı cihazda {{count}} hesap",deviceFingerprint:"Cihaz Parmak İzi",freeTierEligible:"Ücretsiz Katman Uygunluğu",firstDevice:"Cihazdaki ilk hesap",notFirstDevice:"Cihazdaki ilk hesap değil — ücretsiz avantaj yok",browser:"Tarayıcı",os:"OS",deviceType:"Cihaz Türü",acceptLanguage:"Accept-Language",stripeCustomerId:"Stripe Customer ID",viewOnIpinfo:"ipinfo.io’da görüntüle"},Ymo={empty:"Henüz çağrı yok",viewAll:"Tüm logları görüntüle →",colStatus:"Durum",colTime:"Zaman",colModel:"Model",colProtocol:"Protokol",colDuration:"Süre",colCost:"Maliyet",colFreeDiscount:"Ücretsiz Kredi"},Qmo={empty:"Henüz API keys yok",colName:"Ad",colKey:"Key",colStatus:"Durum",colPolicy:"Hız limiti politikası",colLastUsed:"Son kullanım",colCreated:"Oluşturuldu",colExpires:"Süre sonu",colSpend:"Harcama",spendTitle:"Harcama dökümü",spend30d:"Son 30 gün",spendAllTime:"Tüm zamanlar",spendRequests:"İstek"},Xmo="Kopyala",Zmo="Kopyalandı",Jmo={search:Pmo,searchPlaceholder:_mo,title:jmo,backToList:Nmo,noBlockPerm:Dmo,refund:Mmo,refunding:Emo,refundConfirm:Imo,refundInitiated:Omo,nav:Lmo,freeTokens:Umo,freeQuota:Bmo,subscription:Fmo,payments:zmo,refunds:qmo,rewards:Hmo,referrals:Vmo,audit:Kmo,col:Gmo,network:Wmo,recentCalls:Ymo,apiKeys:Qmo,copy:Xmo,copied:Zmo},epo="Users",tpo="Search users, grant credit, and suspend accounts.",npo="Email",apo="Search by email",opo="Account status",spo={active:"Hesap aktif; oturum açabilir ve gateway çağırabilir",suspended:"Askıya alındı; gateway tüm istekleri reddeder (401)"},rpo="Risk",ipo={normal:"Tüm ücretsiz avantajlardan yararlanabilir",watchlisted:"Ücretsiz token veya kayıt bonusu yok; yine de bakiye yükleyip gateway çağırabilir",blocked:"Gateway tüm istekleri reddeder (401); tamamen yasaklı"},lpo="Users",cpo="No users found",dpo="Country",upo="Last login",mpo="Action",ppo="View",fpo="Deleted",gpo="Set status for {{email}}",hpo='Set {{email}} to "{{status}}"?',ypo="Grant credit",vpo="Add bonus credit to {{email}}. Recorded in the ledger.",bpo="Amount (USD)",xpo="e.g. 5",$po="Reason (optional)",wpo="e.g. compensation for downtime",kpo="Type",Cpo="Bonus credit",Spo="A gift. Does not count as a top-up.",Apo="Offline payment",Tpo="Money we actually received. Counts as a top-up: unlocks paid-only models and rate-limit tiers.",Rpo="Reference no.",Ppo="e.g. bank slip 20260907-001",_po="Record payment",jpo="Recording...",Npo="Cancel",Dpo="Granting...",Mpo="Grant",Epo="Grant ${{amount}} to {{email}}? This is a large amount.",Ipo="No display name",Opo="Loading...",Lpo="score {{score}}",Upo="Email verified",Bpo="Yes",Fpo="No",zpo="Signup",qpo="Signup method",Hpo="Last login method",Vpo="Signup bonus",Kpo="Onboarding",Gpo="Locale / TZ",Wpo="Markup ratio",Ypo="Rate limit policy",Qpo="Rate limit policy updated.",Xpo="Joined",Zpo="Never",Jpo="Balance",efo="Wallet & spend",tfo="Total spent",nfo="Recharged",afo="Bonus granted",ofo="Refunded",sfo="Requests",rfo="Tokens",ifo="Actions",lfo="Identity & risk",cfo="Role",dfo="No permitted actions for your role.",ufo="Acquisition source",mfo="Acquisition by source",pfo="Direct / unknown",ffo="Custom source…",gfo="Set",hfo="Auto-detected: {{source}}",yfo="UTM",vfo="Referred by",bfo="Not",xfo="Bu kullanıcıyı tanımlamak için not ekleyin",$fo="Notu kaydet",wfo="Not kaydedildi",kfo="Not yok",Cfo="Filtreler",Sfo="Location",Afo="Preferred locale",Tfo={title:epo,description:tpo,email:npo,searchEmail:apo,status:opo,statusEffect:spo,risk:rpo,riskEffect:ipo,label:lpo,empty:cpo,country:dpo,lastLogin:upo,action:mpo,view:ppo,deleted:fpo,setStatusAria:gpo,setStatusConfirm:hpo,grantCredit:ypo,grantDescription:vpo,amountUsd:bpo,amountPlaceholder:xpo,reason:$po,reasonPlaceholder:wpo,grantKind:kpo,grantKindBonus:Cp
835o,grantKindBonusHint:Spo,grantKindOffline:Apo,grantKindOfflineHint:Tpo,referenceNo:Rpo,referenceNoPlaceholder:Ppo,recordPayment:_po,recording:jpo,cancel:Npo,granting:Dpo,grant:Mpo,largeGrantConfirm:Epo,noDisplayName:Ipo,loading:Opo,score:Lpo,emailVerified:Upo,yes:Bpo,no:Fpo,signup:zpo,signupMethod:qpo,lastLoginMethod:Hpo,signupBonus:Vpo,onboarding:Kpo,localeTz:Gpo,markupRatio:Wpo,rateLimitPolicy:Ypo,rateLimitPolicyChanged:Qpo,joined:Xpo,never:Zpo,walletBalance:Jpo,walletSection:efo,consumed:tfo,recharged:nfo,bonusGranted:afo,refunded:ofo,requests:sfo,tokens:rfo,actionsSection:ifo,identitySection:lfo,role:cfo,noPermittedActions:dfo,acquisitionSource:ufo,acquisitionTitle:mfo,sourceDirect:pfo,sourceCustomPlaceholder:ffo,sourceSet:gfo,sourceCaptured:hfo,utm:yfo,referrer:vfo,note:bfo,notePlaceholder:xfo,noteSave:$fo,noteSaved:wfo,noteEmpty:kfo,filters:Cfo,location:Sfo,preferredLocale:Afo},Rfo="Webhooks",Pfo="Stripe webhook events. Status filter, retry, payload inspection.",_fo="Status",jfo="Event type",Nfo="Received",Dfo="Event type",Mfo="Status",Efo="Mode",Ifo="Attempts",Ofo="Retry",Lfo="Retry queued",Ufo="Event {{event}} reset to pending; next job tick will process.",Bfo="Retry failed",Ffo="No webhook events yet.",zfo="Stripe events will appear here once your endpoint is registered.",qfo="Loading payload...",Hfo="Last error",Vfo="Payload (JSON)",Kfo={title:Rfo,description:Pfo,statusFilter:_fo,eventTypeFilter:jfo,receivedAt:Nfo,eventType:Dfo,status:Mfo,mode:Efo,attempts:Ifo,retry:Ofo,retrySubmittedTitle:Lfo,retrySubmittedBody:Ufo,retryFailedTitle:Bfo,empty:Ffo,emptyHint:zfo,detailLoading:qfo,lastError:Hfo,payload:Vfo},Gfo="API Keys",Wfo="İlk key’inizi 10 saniyede alın",Yfo="Kopyalanamadı",Qfo={label:"İzin verilen modeller",allModels:"Tüm modeller",allHint:"Katalogdaki tüm modeller izinli.",noModels:"Kullanılabilir model yok.",selected:"{{count}} seçildi",someHint:"{{count}}
835 model izinli."},Xfo={label:"Etiketler",placeholder:"Etiket ekleyip Enter’a basın",remove:"Kaldır"},Zfo="Production, staging ve ekip iş akışları için scoped key’ler oluşturun.",Jfo="Yenile",ego="Varsayılan key",tgo="Key adı",ngo="Oluşturuluyor...",ago="Key oluştur",ogo="Tam key, bir kez gösterilir",sgo="API key kopyala",rgo="Kopyalandı",igo="Kopyala",lgo="Şimdi kopyalayıp saklayın. Bu panel kapanınca tam key tekrar görüntülenemez.",cgo="Kaydettim",dgo="API keys yüklenemedi",ugo="Tekrar dene",mgo="Henüz API keys yok",pgo="OneHop üzerinden istek göndermeye başlamak için ilk key’inizi oluşturun.",fgo={label:"API keys",tags:"Etiketler",name:"Ad",key:"Key",status:"Durum",created:"Oluşturuldu",action:"İşlem",usage:"Kullanım",quota:"Kota",expires:"Süre sonu",lastUsed:"Son kullanım"},ggo="İptal et",hgo="{{name}} iptal edilsin mi? Bu işlem geri alınamaz.",ygo="key’e ad verin. Limitler ve süre sonu, gerekmedikçe gelişmiş ayarlarda kalır.",vgo="Aylık credit limiti",bgo="Süre sonu",xgo="Sınırsız",$go="Kaydediliyor...",wgo="Kaydet",kgo="İptal",Cgo={title:"Devre dışı ve iptal edilmiş",description:"Kapatılmış veya iptal edilmiş key’ler. Devre dışı olanı yeniden etkinleştirebilir, iptal edilenleri kayıt olarak tutabilirsiniz."},Sgo={title:"Aktif key yok",description:"Aşağıda devre dışı bırakılmış bir 
835key’i yeniden etkinleştirin veya yeni bir tane oluşturun."},Ago={import:"CCS’ye aktar",client:"CC-Switch istemcisi",codex:"Codex / OpenAI",claude:"Claude Code",pasteHint:"CC Switch bir yer tutucuyla açıldı. Kaydettiğiniz API key’i oraya yapıştırın.",checking:"Uyumluluk kontrol ediliyor…",blocked:{title:"{{client}} bu anahtarı kullanamaz",body:"“{{keyName}}” yalnızca {{client}} tarafından kullanılamayan modellere izin verir. İçe aktarma hatalara neden olur.",adjust:"Model kapsamını ayarla",forceImport:"Yine de içe aktar (çalışmayacak)"},pin:{title:"{{client}} için {{model}} olarak içe aktar",body:"“{{keyName}}”, {{client}} varsayılan modelini içermiyor. {{client}} istekleri bu sağlayıcı üzerinden şu şekilde yönlendirilecek:",adjust:"Model kapsamını ayarla",confirm:"{{model}} ile içe aktar"}},Tgo={search:"Ara",searchPlaceholder:"Ad veya key son eki ara",status:"Durum",allStatus:"Tüm durumlar",clear:"Filtreleri temizle",empty:"Bu filtrelerle eşleşen key yok",emptyDescription:"Tüm key’leri görmek için aramayı veya durum filtresini temizleyin.",mobileTitle:"Filtreler"},Rgo={active:"Aktif",inactive:"Devre dışı",revoked:"İptal edildi",expired:"Süresi doldu",quota_exhausted:"Kota tükendi"},Pgo={today:"Bugün {{requests}} req · {{credit}}",days30:"30 g {{requests}} req · {{credit}}"},_go={use:"Bağlantı bilgileri",edit:"Düzenle",enable:"Etkinleştir",disable:"Devre dışı bırak",delete:"Sil"},jgo="API key kullan",Ngo="Kaydettiğiniz key ile OneHop gateway’i kullanın. Tam key yalnızca oluşturulurken gösterilir.",Dgo={baseUrl:"Base URL",keyHint:"API key",authorization:"Authorization başlığı",env:"Ortam değişkeni",curl:"cURL",revealing:"key çözülüyor…",fullKeyUnavailable:"Tam key yalnızca oluşturulduğunda gösterilir. Kaydettiğiniz değeri kullanın veya kaybettiyseniz yeni bir key oluşturun.",protocolEndpoints:"Protokol endpoint’leri"},Mgo="Gelişmiş ayarlar",Ego="API key oluştur",Igo="API key düzenle",Ogo={label:"Model erişimi",all:"Tüm modeller",limited:"Belirli modellerle sınırla",allHint:"Bu key, sonradan eklenenler dahil tüm modelleri çağırabilir.",snapshotHint:"Yalnızca seçtiğiniz modeller; sonradan eklenen modeller otomatik eklenmez.",snapshotHintEdit:"Yalnızca seçtiğiniz modeller; yeni modeller otomatik eklenmez. Tüm modeller’e geçmek bu beyaz listeyi değiştirir.",searchPlaceholder:"Model ara…",selectAllResults:"Tüm sonuçları seç ({{count}})",selectedCount:"{{count}} / {{max}} seçili",clear:"Temizle",hiddenSelected:"Seçili {{total}} öğeden {{hidden}} tanesi mevcut filtreyle gizli",selectVendor:"Tüm {{vendor}} öğelerini seç, {{on}} / {{total}} seçili",emptyTitle:"Eşleşen model yok",emptyDescription:"Başka bir tür veya arama deneyin.",loadFailed:"Modeller yüklenemedi",loadFailedHint:"Tekrar deneyin veya Tüm modeller’e dönün.",type:{all:"Tümü",text:"Metin",image:"Görsel",video:"Video",embedding:"Embedding"},pickAtLeastOne:"En az bir model seçin veya Tüm modeller’e dönün.",limitReached:"Reached the {{max}}-model limit"},Lgo={title:"API key oluşturuldu",subtitle:"{{name}} hazır — şimdi bağlayın.",onceWarning:"Bir kez gösterilir. Daha sonra tekrar gösterebilirsiniz, ama güvenli olmak için şimdi kopyalayın.",connect:"Bağlan",done:"Tamam"},Ugo="IP",Bgo="{{date}} tarihinde iptal edildi",Fgo={title:Gfo,emptyTitle:Wfo,copyFailed:Yfo,allowedModels:Qfo,tags:Xfo,description:Zfo,refresh:Jfo,defaultName:ego,keyName:tgo,creating:ngo,createKey:ago,fullKeyTitle:ogo,copyApiKey:sgo,copied:rgo,copy:igo,fullKeyDescription:lgo,savedIt:cgo,loadFailed:dgo,retry:ugo,empty:mgo,emptyDescription:pgo,table:fgo,revoke:ggo,revokeConfirm:hgo,formDescription:ygo,monthlyCreditLimit:vgo,expiresAt:bgo,unlimited:xgo,saving:$go,save:wgo,cancel:kgo,parked:Cgo,noActive:Sgo,ccswitch:Ago,filters:Tgo,status:Rgo,usage:Pgo,actions:_go,useTitle:jgo,useDescription:Ngo,use:Dgo,advancedSettings:Mgo,createTitle:Ego,editTitle:Igo,scope:Ogo,created:Lgo,lastUsedIp:Ugo,revokedAt:Bgo},zgo="Audit Logs",qgo="High-risk admin actions, by action and time.",Hgo="Action",Vgo="Clear",Kgo={ops_user_update_status:"Kullanıcı durumu güncellendi",ops_users_allowlist_add:"Kayıt erişimi eklendi",ops_users_allowlist_update:"Kayıt erişimi güncellendi",ops_users_allowlist_invite:"Kayıt erişimi daveti gönderildi",ops_users_allowlist_revoke:"Kayıt erişimi kaldırıldı",ops_users_allowlist_restore:"Kayıt erişimi geri yüklendi",ops_model_create:"Model oluşturuldu",ops_model_update:"Model güncellendi",ops_model_update_status:"Model durumu güncellendi",sub2api_pool_create:"Yönlendirme havuzu oluşturuldu",sub2api_pool_test:"Yönlendirme havuzu test edildi",sub2api_pool_rotate_secret:"Yönlendirme sırrı yenilendi"},Ggo="Audit logs",Wgo="No audit entries",Ygo="Time",Qgo="Severity",Xgo="Target",Zgo={ai_model:"Model",sub2a
835pi_key_pool:"Routing key pool",sys_user:"User",wallet:"Wallet"},Jgo="Hedef türü",eho="İstek ID",tho={title:zgo,description:qgo,action:Hgo,clear:Vgo,actions:Kgo,label:Ggo,empty:Wgo,time:Ygo,severity:Qgo,target:Xgo,targetTypes:Zgo,targetType:Jgo,requestId:eho},nho="OneHop’a giriş yap",aho="Kodunu gir",oho="Google veya email ile devam et",sho="Kod almak için email adresini gir",rho="{{email}} adresine gönderilen 6 haneli kodu gir",iho="Google ile devam et",lho="Email ile devam et",cho="veya",dho="Email",uho="Doğrulama kodu gönder",mho="Gönderiliyor...",pho="Doğrula",fho="Doğrulanıyor...",gho="{{seconds}} sn sonra yeniden gönder",hho="Kodu yeniden gönder",yho="Devam ederek şunları kabul etmiş olursun:",vho="Şartlar",bho="Gizlilik",xho={signIn:"Giriş yap",signOutFailed:"Çıkış yapılamadı",sendCodeFailed:"Kod gönderilemedi",notAllowed:"Bu e-posta henüz erişime onaylanmadı. Erişim için yöneticinize başvurun.",invalidCode:"Geçersiz kod",codeIncorrect:"Kod yanlış, tekrar dene",googleFailed:"Google girişi başarısız",verifyHuman:"Devam etmek için doğrulamayı tamamla",verifyUnavailable:"İnsan doğrulaması geçici olarak kullanılamıyor. Yukarıdan Google ile devam edin veya daha sonra tekrar deneyin."},$ho={signInTitle:nho,enterCodeTitle:aho,methodIntro:oho,emailStepIntro:sho,codeIntro:rho,continueGoogle:iho,continueEmail:lho,or:cho,emailLabel:dho,sendCode:uho,sending:mho,verify:pho,verifying:fho,resendIn:gho,resendCode:hho,termsPrefix:yho,terms:vho,privacy:bho,errors:xho},who="Faturalama",kho="Credits yükleyin, kuponları kullanın ve wallet hareketlerini inceleyin.",Cho={bonuses:"Bonuslar",topups:"Yüklemeler",usage:"Tüketim"},Sho={available:"Hesaba geçti",availableHint:"Kullanılabilir bakiyeye zaten dahil",frozen:"Beklemede (donduruldu)",frozenHint:"~{{days}} gün sonra kullanılabilir",frozenHintGeneric:"Bekletme süresi bitince kullanılabilir",title:"Davet ödülleri",viewDetails:"Davet detaylarını görüntüle"},Aho={noUsage:"Son 30 günde tüketim yok",perDay:"{{amount}} ort./gün",daysLeft:"Mevcut hızla ≈ {{days}} gün kaldı"},Tho={amountUsd:"Tutar (USD)",minAmountHint:"Minimum yükleme tutarı {{amount}}.",apply:"Uygula",get:"Alınacak",onehopCredits:"OneHop credits",pay:"Öde",poweredByStripe:"Stripe güvencesiyle",poweredBy:"{{provider}} güvencesiyle",secureCheckout:"Güvenli barındırılan ödeme",secureCheckoutShort:"Güvenli ödeme",taxExclusiveNotice:"Geçerli vergiler ödeme sırasında hesaplanır ve bu tutara eklenir.",presets:"Ön tanımlı tutarlar",promoCode:"Promosyon kodu",promoCodePlaceholder:"Kodu girin",serviceFee:"Hizmet ücreti",title:"Yükle",topupAmount:"Yükleme tutarı",totalDue:"Ödenecek toplam",payCta:"{{amount}} öde",previewing:"Kontrol ediliyor…",discount:"Kupon indirimi",couponBelowMin:"İndirimli tutar çok düşük; tutarı artırın veya başka bir kod deneyin.",maintenanceTitle:"Ödemeler geçici olarak kullanılamıyor",maintenanceDescription:"Ödemeler geçici olarak kullanılamıyor. Ödeme yapmanız gerekiyorsa Telegram'dan bize ulaşın.",contactTelegram:"Telegram'dan bize ulaşın",alipay:"Alipay",wechatPay:"WeChat Pay",crypto:"Kripto ile öde (USDC / USDT)",payOnStripe:"Ödeme, Stripe'ın güvenli ödeme sayfasında tamamlanır.",payOnProvider:"Ödeme, {{provider}}'nun güvenli ödeme sayfasında tamamlanır.",payOnHostedCheckout:"Ödeme, güvenli barındırılan ödeme sayfasında tamamlanır.",amountPrecision:"{{provider}}, en fazla 2 ondalık basamaklı USD tutarlarını kabul eder. Tutarı veya promosyon kodunu ayarlayın.",couponBonus:"Kupon bonusu",couponBonusExpiry:"Bonus krediler ödemeden {{days}} gün sonra sona erer.",couponInvalid:"Bu kod uygulanamıyor — başka bir kod deneyin.",couponErrors:{limitReached:"Bu kodu en fazla kullanım sayısına ulaştınız.",invalid:"Bu kod geçersiz.",expired:"Bu kodun süresi doldu.",exhausted:"Bu kodun kullanım hakkı tükendi.",unavailable:"Bu kod şu anda kullanılıyor — az sonra tekrar deneyin."},tierBonus:"Kampanya bonusu",tierBonusExpiry:"Bonus krediler ödemeden {{days}} gün sonra sona erer.",tierBonusRestricted:"Bonus krediler yalnızca şunlarda kullanılabilir: {{models}}.",nextTierPercent:"{{amount}} daha yükleyin, %{{percent}} bonus kredi kazanın.",nextTierBonus:"{{amount}} daha yükleyin, {{bonus}} bonus kredi kazanın.",tierCapReached:"Bu kampanyadaki en yüksek bonusu zaten kazandınız."},Rho="Credits ekle",Pho="Oluşturuluyor...",_ho="Kullanılabilir Credit",jho="Yükle",Nho="Ödeme Stripe tarafından sağlanır",Dho="Tutar (USD)",Mho="Ön tanımlı yükleme tutarları",Eho="Kupon kullan",Iho="Kupon kodu",Oho="Kullanılıyor...",Lho="Kullan",Uho="Kupon kullanıldı, bakiye yenileniyor.",Bho="Güvenli checkout’a yönlendiriliyor...",Fho="Faturalama özeti yüklenemedi",zho="Yükleme başarısız",qho="Faturalama aktivitesi sekmeleri",Hho="İşlemler",Vho="Credit hibeleri",Kho="İşlem türü",Gho="Kaynak",Who="Henüz işlem yok",Yho="Yüklemeler, kesintiler ve hibeler burada görünür.",Qho="Ledger kayıtları",Xho="Zaman",Zho="Tür",Jho="Tutar",eyo="Bakiye",tyo="Henüz hibe kaydı yok",nyo="Kayıt bonusları, kuponlar ve manuel hibeler burada görünür.",ayo="Durum",oyo={successTitle:"Ödeme alındı",polling:"Wallet'ınıza Credit işleniyor... yaklaşık 30 saniye.",delayed:"Yansıması yavaş. Birazdan yenileyin veya Stripe makbuzlarınızı kontrol edin.",cancelledTitle:"Ödeme iptal edildi",cancelledBody:"Herhangi bir ödeme alınmadı. Hazır olduğunuzda tekrar deneyin.",failedTitle:"Ödeme başarısız",failedBody:"Ödemeniz tamamlanamadı. Bakiye eklenmedi. Tekrar deneyin veya farklı bir ödeme yöntemi kullanın."},syo={text:"Credits ön ödemeli hizmet bakiyesidir, banka mevduatı değildir. Tüketilen credits iade edilmez. Tüm fiyatlar USD cinsindendir. Bkz.",tosLink:"Şartlar"},ryo="Makbuzlar",iyo="Açılıyor...",lyo="Faturalama portalı açılamadı",cyo={title:"Son yüklemeler",subtitle:"Son 90 gün, 24 saat içinde iade edilebilir.",loading:"Yüklemeler yükleniyor...",date:"Tarih",amount:"Tutar",credits:"Credits",status:"Durum",refund:"İade",alreadyRefunded:"Zaten iade edildi",windowExpired:"İade penceresi doldu (24 saat)",confirmTitle:"İadeyi onayla",confirmBody:"İade, Str
835ipe tarafından 1-3 iş günü içinde işlenir. Kullanıcı tarafından başlatılan iadelerde platform ücreti ({{fee}}) uygulanır.",amountLabel:"İade tutarı (USD)",maxLabel:"Maks. ${{value}}",requestedLabel:"Talep edilen iade",platformFeeLabel:"Platform ücreti ({{fee}})",cardReturnLabel:"Kartınıza dönecek",bonusForfeitureHint:"Bu yüklemeyle verilen promosyon Credits orantılı olarak iptal edilir.",cancel:"İptal",confirm:"İadeyi başlat",submitting:"Gönderiliyor...",refundSubmittedTitle:"İade gönderildi",refundSubmittedBody:"Stripe, tutarı 1-3 iş günü içinde kartınıza iade edecek.",refundFailedTitle:"İade başarısız",balance:"Bakiye",confirmAmount:"{{amount}} iade et"},dyo={title:"Bakiye uyarıları",description:"Bakiyeniz azaldığında sizi bilgilendiririz.",emailLabel:"E-posta ile bildir",webhookLabel:"Webhook",autorechargeLabel:"Otomatik yükleme",autorechargeUnsupported:"Otomatik yükleme, etkin ödeme sağlayıcısıyla kullanılamaz.",autorechargeAddCardHint:"bakiyenizi korumak için bir kart ekleyin",autorechargeTopUp:"Şu kadar yükle",autorechargeWhenBelow:"bakiye şunun altına düştüğünde",autorechargeThreshold:"Otomatik yükleme eşiği",autorechargeAmount:"Otomatik yükleme tutarı",autorechargeDisabledFailures:"Art arda birkaç başarısız denemeden sonra otomatik yükleme devre dışı bırakıldı. Kartınızı güncelleyip yeniden etkinleştirin.",autorechargeIncomplete:"Bir yükleme tutarı ve $0 üzerinde bir eşik belirleyin.",test:"Test et",testing:"Test ediliyor…",testQueued:"Test teslimi kuyruğa alındı — uç noktanızı kontrol edin",testFailed:"Test teslimi kuyruğa alınamadı",
835signingSecret:"İmza gizli anahtarı",secretOnSave:"Kaydettiğinizde bir imza gizli anahtarı oluşturulur.",rotate:"Yenile",secretRotated:"İmza gizli anahtarı yenilendi",rotateFailed:"Gizli anahtar yenilenemedi",secretCopied:"İmza gizli anahtarı kopyalandı",saved:"Uyarı ayarları kaydedildi",saveFailed:"Uyarı ayarları kaydedilemedi",loadFailed:"Uyarı ayarları yüklenemedi",thresholdRequired:"Uyarıları etkinleştirmek için $0 üzerinde bir eşik belirleyin.",webhookUrlRequired:"Webhook için https:// ile başlayan bir URL girin.",thresholdOrderBad:"Uyarı eşiği, otomatik yükleme eşiğinden büyük veya ona eşit olmalıdır.",card:"Kart",changeCard:"Değiştir",removeCard:"Kaldır",cardRemoved:"Kart kaldırıldı",cardRemoveFailed:"Kart kaldırılamadı",cardSetupFailed:"Kart kurulumu başlatılamadı",lowBalanceGroup:"Düşük bakiye uyarıları",thresholdLabel:"Uyarı eşiği"},uyo={title:"İşlem geçmişi",idSearch:"İşlem ID",amountRange:"Tutar aralığı (USD)",min:"Min.",max:"Maks",clear:"Temizle",retry:"Tekrar dene",empty:"Bu aralıkta işlem yok",date:"Tarih",typeMethod:"Tür / yöntem",description:"Açıklama",action:"İşlem",prevMonth:"Önceki ay",nextMonth:"Sonraki ay",viewInvoices:"Faturaları görüntüle",emptyNew:"Henüz işlem yok",emptyNewDesc:"Yükleme yaptıktan sonra yüklemeler, bonuslar ve iadeler burada görünür.",topUpCta:"Yükleme yap",emptyFiltered:"Eşleşen işlem yok",emptyFilteredDesc:"Filtreleri temizlemeyi veya tarih aralığını genişletmeyi deneyin.",clearFilters:"Filtreleri temizle"},myo="Bakiyeniz düşük ve istekleri kesintiye uğratabilir. Yükleme yapın veya otomatik yüklemeyi açın.",pyo="Bakiyeniz düşük ve istekleri kesintiye uğratabilir. Devam etmek için yükleme yapın.",fyo={creditPurchase:"Bakiye yükleme",topupBonus:"Top-up bonus",signupBonus:"Signup bonus",referralClawback:"Referral cashback clawback (refund)",couponBonus:"Kupon bonusu",referralCashback:"Davet iadesi",referralInviteeCashback:"Davet edilen bonusu",redeemCode:"Kullanım kodu {{code}}",redeemCodeReversal:"Kod kullanımı iptali",stripeRefund:"Stripe iadesi",bonusReversal:"Bonus geri alımı (iade)"},gyo={title:"Tahsis edilmiş kredi",subtitle:"Yalnızca belirli modellerde kullanılabilen bonus kredi — bakiyenizden ayrı tutulur.",onlyModels:"Yalnızca {{models}}",onlyModelsGeneric:"Kısıtlı modeller",validUntil:"{{date}} tarihine kadar geçerli",noExpiry:"Süresiz",useInChat:"Use in chat"},hyo={card:"Kart",alipay:"Alipay",wechatPay:"WeChat Pay"},yyo={title:"Kullanım kodu",description:"Kullanım kodunuz mu var? Girin, tutar doğrudan bakiyenize eklensin.",placeholder:"Örn: OHR-XXXXXXXX",redeem:"Kullan",redeeming:"Kullanılıyor…",success:"{{amount}} bakiyenize eklendi",successRestricted:"Redeemed {{amount}} — usable with {{models}} only",successValidity:"Valid until {{date}}.",errors:{invalid:"Bu kod geçersiz.",expired:"Bu kodun süresi doldu.",alreadyRedeemed:"Bu kod zaten kullanılmış.",perUserLimit:"Bu parti için kullanım sınırına ulaştınız."}},vyo={title:who,description:kho,breakdown:Cho,referralRewards:Sho,burnRate:Aho,topup:Tho,addCredits:Rho,creating:Pho,availableCredit:_ho,topUp:jho,poweredByStripe:Nho,amountUsd:Dho,presetAmounts:Mho,redeemCoupon:Eho,couponCode:Iho,redeeming:Oho,redeem:Lho,couponRedeemed:Uho,redirecting:Bho,summaryFailed:Fho,topupFailed:zho,tabsLabel:qho,transactions:Hho,creditGrants:Vho,transactionType:Kho,source:Gho,noTransactions:Who,noTransactionsDescription:Yho,ledgerEntries:Qho,time:Xho,type:Zho,amount:Jho,balance:eyo,noGrants:tyo,noGrantsDescription:nyo,status:ayo,topupBanner:oyo,compliance:syo,receipts:ryo,openingPortal:iyo,portalFailed:lyo,recentTopups:cyo,alerts:dyo,history:uyo,lowBalanceWarning:myo,lowBalanceWarningNoAutoTopup:pyo,ledgerDesc:fyo,earmarked:gyo,paymentMethod:hyo,redeemCard:yyo},byo="Grafik yüklenemedi",xyo="Veri yok",$yo="Henüz grafiklenecek veri yok.",wyo={errorTitle:byo,emptyTitle:xyo,emptyDescription:$yo},kyo={copy:"Kopyala",regenerate:"Yeniden oluştur",shareComingSoon:"Paylaş (yakında)",download:"İndir",copyLink:"Bağlantıyı kopyala",newChat:"Yeni sohbet",deleteChat:"Sohbeti sil",openConversationList:"Sohbet listesini aç",openSettings:"Sohbet ayarları",collapseSidebar:"Kenar çubuğunu daralt",expandSidebar:"Kenar çubuğunu genişlet",cancel:"İptal",apply:"Uygula",newChatTooltip:"Yeni sohbet oluştur",copied:"Kopyalandı"},Cyo={placeholderReady:"Yeni bir sohbet başlat...",placeholderNoModel:"Önce yukarıdan bir model seç",attachmentTooLarge:"Dosya {{limit}} sınırını aşıyor ve yüklenemiyor",attachmentUnsupported:"Desteklenmeyen dosya türü. PNG, JPEG, WebP, GIF, MP4, WebM veya MOV kullanın.",unsupportedVision:"Bu model görsel veya video girişini desteklemiyor. Dosya bırakmadan önce model değiştirin.",send:"Gönder",abort:"Durdur",attachImage:"Görsel ekle",attachMedia:"Görsel veya video ekle",removeAttachment:"Kaldır",shortcutSend:"gönder",shortcutNewLine:"yeni satır",shortcutAbort:"durdur",frameFirst:"İlk kare",frameLast:"Son kare",frameReference:"Referans",imageMode:"Görsel üretimi",videoMode:"Video üretimi",placeholderComingSoon:"This model is coming soon — pick another one above",reasoning:"Düşünme",reasoningOff:"Kapalı",reasoningAlways:"Her zaman açık",placeholderTopupRequired:"Bu model yükleme yapmış hesaplara açık — burada kullanmak için bakiye yükleyin"},Syo={modelUnavailable:"{{model}} modeli şu anda kullanılamıyor. Prompt’unuz yine de kaydedildi.",rateLimited:"Çok fazla eşzamanlı istek var. Birazdan tekrar deneyin.",accountDisabled:"Bu hesap devre dışı ve sohbete devam edemez.",attachmentsUploading:"Görseller hâlâ yükleniyor. Göndermeden önce biraz bekleyin.",attachmentsFailed:"Bir görsel yüklenemedi. Kaldırıp tekrar deneyin, sonra gönderin."},Ayo={title:"Burada herhangi bir modeli test etmeye başlayın.",body:"Herhangi bir modelle doğrudan sohbet edin. Kullanım PAYG cüzdanınızdan ücretlendirilir.",starters:{compareModels:"Aynı kodlama görevinde GPT-5.5 ve Claude Opus’u karşılaştır",analyzeImage:"Bir mimari diyagramını analiz edip riskleri özetle",draftPrompt:"Bir destek agent için system prompt taslağı hazırla",generateImage:"Temiz SaaS stilinde bir ürün hero görseli üret"}},Tyo={untitled:"Adsız sohbet",deleteConfirm:'"{{title}}" silinsin mi?',emptyTitle:"Henüz sohbet yok",emptyBody:"Başlamak için yukarıdaki + Yeni sohbeti kullanın.",listLabel:"Sohbet listesi",groups:{today:"Bugün",yesterday:"Dün",earlier:"Daha önce"},menu:{rename:"Yeniden adlandır",delete:"Sil"},deleteTitle:"Sohbet silinsin mi?"},Ryo={paygWallet:"PAYG cüzdanı"},Pyo={chooseModel:"Model seç",searchPlaceholder:"Model ara...",emptyTitle:"Model bulunamadı",emptyBody:"Başka bir arama terimi veya sekme deneyin.",protocols:"{{count}} protokol",context:"{{value}} ctx",tabs:{all:"Tümü",text:"Metin",image:"Görsel",video:"Video"},maxOut:"çıktı {{value}}",unavailable:"Geçici olarak kullanılamıyor",requiresTopup:"Açmak için yükleyin"},_yo={title:"Sohbet ayarları",protocol:"Protokol",unlimited:"Sınırsız",fields:{memory_limit:{label:"Sohbet hafızası"},temperature:{label:"Temperature"},top_p:{label:"Top P"},max_tokens:{label:"Max Tokens",placeholder:"128000"},service_tier:{label:"Hizmet katmanı",options:{standard:"Standart",priority:"Öncelikli",flex:"Esnek"}},thinking_budget:{label:"Thinking Budget (tokens)",placeholder:"örn. 2000"},stop_sequences:{label:"Stop Sequences",placeholder:"Virgülle ayırın, örn. END, STOP",itemLabel:"Stop"},system_prompt:{label:"System Prompt",placeholder:"Bir system prompt girin..."},prompt_cache_mode:{label:"Prompt Cache",options:{implicit:"Örtük",explicit:"Açık"}},image_size:{label:"Görsel çözünürlüğü"},image_resolution:{label:"Çözünürlük"},image_quality:{label:"Görsel kalitesi",options:{Auto:"Auto",auto:"Auto",low:"Düşük",medium:"Orta",high:"Yüksek"}},video_ratio:{label:"En-boy oranı"},video_resolution:{label:"Video çözünürlüğü"},video_duration_seconds:{label:"Süre"},tools:{label:"Tools (JSON)",placeholder:'[{ "type": "function", "function": { ... } }]'},image_count:{label:"Görsel sayısı"},image_aspect_ratio:{label:"En-boy oranı"},reasoning_effort:{label:"Akıl yürütme yoğunluğu",options:{none:"Kapalı",minimal:"En düşük",low:"Düşük",medium:"Orta",high:"Yüksek",xhigh:"Çok yüksek",max:"En yüksek"}},reasoning_pro:{label:"Pro modu"},reasoning_context:{label:"Akıl yürütme bağlamı",options:{auto:"Otomatik",current_turn:"Mevcut tur",all_turns:"Tüm turlar"}},reasoning_enabled:{label:"Düşünme"},reasoning_always:{label:"Düşünme",value:"Her zaman açık"}}},jyo={estimating:"tahmin ediliyor...",settling:"hesaplanıyor...",input:"girdi",output:"çıktı",milliseconds:"ms",realCost:"Gerçek maliyet",latency:"Gecikme",logDetail:"Log detayı"},Nyo={copied:"Görsel bağlantısı kopyalandı",expired:"Görsel bağlantısının süresi doldu. Yeniden açmak için bağlantıyı kopyalayın veya yeniden oluşturun.",attachment:"[görsel eki]"},Dyo={message:"Bu sohbet PAYG cüzdanınızdan ücretlendirilir",balance:"Bakiye",billingLink:"Faturalama",dismiss:"Kapat"},Myo={trigger:"Kod olarak kopyala",copied:"{{format}} olarak kopyalandı",failed:"Kopyalanamadı",failedDescription:"Pano izni tarayıcı tarafından engellenmiş olabilir."},Eyo={interrupted:"[Kesildi]",sending:"gönderiliyor"}
835,Iyo={title:"Düşünme süreci",duration:"{{seconds}}s düşündü"},Oyo={title:"Video üretimi yakında",body:"Bu model keşif için listeleniyor, ancak video gönderimi henüz etkin değil.",switchToText:"Metin modeline geç"},Lyo={imageGenerating:"Görsel oluşturuluyor",videoGenerating:"Video oluşturuluyor",stage:{queued:"Sırada",routing:"Yönlendiriliyor",generating:"Oluşturuluyor",storing:"Depolanıyor",settling:"Hesaplanıyor"}},Uyo={badge:"Earmarked {{amount}}",bannerTitle:"Earmarked credit available",bannerBody:"You have {{amount}} of dedicated credit for this model — it's used first."},Byo={INSUFFICIENT_CREDITS:"Yetersiz bakiye",RATE_LIMITED:"Çok fazla istek",rate_limit_error:"Çok fazla istek",MODEL_NO_VISION:"Bu model görüntü girişini desteklemiyor",CONTENT_REFUSED:"Model bu isteği reddetti",EMPTY_RESPONSE:"Model boş bir yanıt döndürdü",upstream_error:"Yukarı akış hizmeti hatası",overloaded_error:"Yukarı akış hizmeti meşgul",upstream_invalid_json:"Yukarı akış yanıtı bozuk",stream_read_error:"Yanıt akışı kesildi",invalid_api_key:"Yukarı akış kimlik doğrulaması başarısız",model_unavailable:"Model geçici olarak kullanılamıyor",no_image:"Görüntü oluşturulamadı",no_body:"Yukarı akıştan yanıt yok",http_error:"İstek başarısız",session_create_failed:"Oturum oluşturulamadı"},Fyo={title:"Bu modeli açmak için bakiye yükleyin",body:"Bakiye yüklemiş hesaplara açıktır. Herhangi bir tutar anında kilidi açar, bakiyeniz yine kullandıkça düşülür.",cta:"Bakiye yükle"},zyo={actions:kyo,composer:Cyo,errors:Syo,empty:Ayo,sidebar:Tyo,header:Ryo,modelSelector:Pyo,settings:_yo,metrics:jyo,image:Nyo,payg:Dyo,copyAsCode:Myo,status:Eyo,thinking:Iyo,video:Oyo,media:Lyo,earmark:Uyo,errorCodes:Byo,topupLock:Fyo},qyo="Yükleniyor...",Hyo="Hesap",Vyo="Dil",Kyo="Giriş yap",Gyo="Çıkış yap",Wyo="Çıkış yapılıyor...",Yyo="Değişiklikleri kaydet",Qyo="Kaydediliyor...",Xyo="Kaydedildi.",Zyo="Geri",Jyo="Tekrar dene",evo="Yüklemede hizmet ücretinden %5 indirim.",tvo="Kaydet",nvo="İptal",avo="Temizle",ovo="Sıfırla",svo="Kopyalandı",rvo="Kopyalanamadı",ivo="Kapat",lvo="Toplam",cvo={timestamp:"Zaman damgası",local:"Yerel saat",relative:"Göreli"},dvo="Kopyala",uvo={title:"Tarayıcında aç",description:"Bu sayfayı bir <b>uygulama içi tarayıcıda</b> görüntülüyorsun; <b>burada Google ile giriş ve insan doğrulaması çalışmaz</b>. Devam etmek için sistem tarayıcında aç.",hintWechat:"Sağ üstteki ··· menüsüne dokun ve “Tarayıcıda Aç” seçeneğini seç.",hintGeneric:"Sağ üstteki menüden “Tarayıcıda / S
835afari'de Aç” seçeneğini seç.",copyLink:"Bağlantıyı kopyala",continueAnyway:"Yine de devam et"},mvo="Tümü",pvo="Etkin",fvo="İsteğe bağlı",gvo="Kaldır",hvo={loading:qyo,account:Hyo,language:Vyo,signIn:Kyo,signOut:Gyo,signingOut:Wyo,saveChanges:Yyo,saving:Qyo,saved:Xyo,back:Zyo,retry:Jyo,topUpPromo:evo,save:tvo,cancel:nvo,clearAll:avo,reset:ovo,copied:svo,copyFailed:rvo,dismiss:ivo,total:lvo,time:cvo,copy:dvo,inAppBrowser:uvo,all:mvo,active:pvo,optional:fvo,remove:gvo},yvo="Pano",vvo="Credit, kullanım ve gateway sağlığını tek konsoldan izleyin.",bvo="API key oluştur",xvo={creditBalance:"Credit bakiyesi",requestsToday:"Bugünkü istekler",activeApiKeys:"Aktif API keys"},$vo={title:"Kullanım trendi",description:"Son 14 gündeki istekler ve faturalanan credit.",viewUsage:"Kullanımı görüntüle",loading:"Kullanım trendi yükleniyor",empty:"Henüz kullanım yok",emptyDescription:"İstekler akmaya başladığında kullanım burada görünür."},wvo={title:"Credit etkinliği",description:"Son 90 gündeki günlük faturalanan credit.",total:"90 günlük toplam",loading:"Etkinlik yükleniyor",activeDays:"Son {{days}} günde {{count}} aktif gün",less:"Az",more:"Çok"},kvo={title:"Kullanım dağılımı",description:"Harcama yoğunluğu, token hacmi ve en çok kullanılan modelin tek ekranda özeti.",activeDays:"Aktif günler",ofDays:"/ {{days}} gün",avgDailyCredit:"Günlük ort. credit",nonZeroDays:"aktif günlerde",peakDay:"Zirve gün",noPeak:"Henüz kullanım yok",tokens:"Tokens",topModel:"Başlıca model",creditShare:"Faturalanan credit payı"},Cvo={title:"Hızlı sağlık",requests7d:"7 günlük istekler",creditToday:"Bugün harcanan credit",credit7d:"7 günlük credit harcaması"},Svo={title:"Son istekler",description:"Key’lerinizdeki son gateway çağrıları.",viewRecords:"Kayıtları görüntüle",table:{label:"Son istekler",model:"Model",status:"Durum",tokens:"Tokens",credit:"Credit",time:"Zaman",apiKey:"API key"},empty:"Henüz istek yok",emptyDescription:"Bir API key oluşturup istek gönderdiğinizde son çağrılar burada görünür."},Avo={title:"İlk isteğinizi gönderin",description:"OpenAI uyumlu. Bir key oluşturun, {{env}} ayarlayın ve gateway’i çağırın."},Tvo={credit:"Credit",requests:"İstekler"},Rvo={title:yvo,description:vvo,createApiKey:bvo,cards:xvo,usageTrend:$vo,activity:wvo,usageMix:kvo,quickHealth:Cvo,recent:Svo,firstRequest:Avo,tooltip:Tvo},Pvo="Tüm satırları seç",_vo="{{row}}. satırı seç",jvo="Yüklenemedi",Nvo="Veri yok",Dvo="Gösterilecek kayıt yok.",Mvo="Daha fazla ayrıntı",Evo="{{count}} ek ayrıntı",Ivo="Ayrıntıları aç",Ovo={selectAllRows:Pvo,selectRow:_vo,errorTitle:jvo,emptyTitle:Nvo,emptyDescription:Dvo,moreDetails:Mvo,moreDetailsWithCount:Evo,openRow:Ivo},Lvo="Son 1 saat",Uvo="Bugün",Bvo="Dün",Fvo="Son 7 gün",zvo="Son 30 gün",qvo="Bu ay",Hvo="Aya göre",Vvo="Özel",Kvo="Tüm zamanlar",Gvo="Tarih seç",Wvo="İptal",Yvo="Uygula",Qvo="Başlangıç tarihi bitiş tarihinden önce olmalı.",Xvo="Aralık hazır seçenekleri",Zvo="Önceki ay",Jvo="Sonraki ay",ebo={last1h:Lvo,today:Uvo,yesterday:Bvo,last7d:Fvo,last30d:zvo,thisMonth:qvo,byMonth:Hvo,custom:Vvo,all:Kvo,selectDate:Gvo,cancel:Wvo,apply:Yvo,reversedError:Qvo,presetsAriaLabel:Xvo,previousMonth:Zvo,nextMonth:Jvo},tbo="Hesap kullanılamıyor",nbo="Hesap başlatılıyor",abo={title:"Hesap askıya alındı",description:"Bu hesap oturum açabilir, ancak konsol erişimi ve gateway istekleri durduruldu.",detail:"Bunun beklenmedik olduğunu düşünüyorsan bu hesabın email adresiyle support ile iletişime geç."},obo={accountUnavailable:tbo,accountInitializing:nbo,accountRestricted:abo},sbo="Ücretsiz Token",rbo="Seçili modeller için günlük ücretsiz token kotası — kendiliğinden yenilenir. Cüzdanınızdan ücret alınmaz.",ibo="Ücretsiz token kotanız yüklenemedi.",lbo="Tüm modeller",cbo="Kampanya {{date}} tarihinde sona eriyor",dbo={daily:"Günlük",weekly:"Haftalık"},ubo={daily:"Her gün yenilenir",weekly:"Her hafta yenilenir",localTime:"yerel saatiniz {{time}}",countdown:"sonraki yenileme {{duration}}
835 sonra",refreshingSoon:"yakında yenilenecek"},mbo={title:"Aktif ücretsiz token kampanyası yok",description:"Bir ücretsiz token kampanyası başladığında günlük kotanız burada görünecek."},pbo={title:"Hesabınızda ücretsiz token verilmesi duraklatıldı",body:"Bu hesap toplu kayıt düzenine benziyor; bu nedenle ücretsiz tahsisler şimdilik duraklatıldı. Bu bir yanlışlıksa bize şu adresten ulaşın:"},fbo="token",gbo="Bugün kalan {{value}} token",hbo={label:"Bitince e-posta gönder",hint:"Günlük ücretsiz token'ların bittiğinde sana e-posta gönderelim."},ybo={crg_freetoken_daily_cn5:"Çin modelleri · her gün ücretsiz token"},vbo={title:sbo,description:rbo,loadFailed:ibo,allModels:lbo,campaignEnds:cbo,cadence:dbo,refresh:ubo,empty:mbo,paused:pbo,tokensUnit:fbo,remainingToday:gbo,emailToggle:hbo,campaigns:ybo},bbo="Loglar",xbo="İstek bazında maliyet, gecikme, tokens, durum ve routing sinyallerini inceleyin.",$bo={copiedCurl:"curl kopyalandı",copiedId:"İstek ID kopyalandı",copyCurl:"curl olarak kopyala",copyFailed:"Kopyalanamadı",copyId:"İstek ID kopyala",menu:"Satır işlemleri",openTab:"Yeni sekmede aç"},wbo={prompt:"Prompt",ratio:"Hit oranı",read:"Cache okuma",title:"Cache hit oranı"},kbo={confirm:"İşi iptal et",failed:"İş iptal edilemedi",keep:"Tut",message:"Bu iş hâlâ kuyrukta. İptal ederseniz işlenmez; herhangi bir ücret uygulanmaz.",success:"İş iptal edildi",title:"İş iptal edilsin mi?",pending:"İptal ediliyor..."},Cbo={cacheHit:"Önbellek isabeti",cost:"Maliyet",ip:"IP",latency:"Gecikme",model:"Model",source:"Kaynak",status:"Durum",stream:"Akış",time:"Zaman",tokens:"Tokens",tps:"Throughput"},Sbo={trigger:"Sütun ayarları"},Abo={body:"OneHop üzerinden bir istek gönderdiğinizde burada görünür.",title:"Bu aralıkta log yok"},Tbo={all:"Tümü",apiKey:"API key",cost:"Maliyet (USD)",desktopDateRangeAria:"Masaüstü tarih aralığını seç",finishReason:"Bitiş nedeni",latency:"Gecikme (s)",max:"Maks",min:"Min.",mobileDateRangeAria:"Mobil tarih aralığını seç",model:"Model",modelsSelected:"{{count}} seçili",more:"Daha fazla filtre",refresh:"Yenile",request:"İstek ID ile ara",requestIdLabel:"İstek ID",status:"Durum",stream:"Akış",time:"Zaman",type:"Tür",mobileTitle:"Filtreler"},Rbo={requests:"bu sayfadaki istekler",times:"zaman gösterimi"},Pbo={rowsPer:"Satır"},_bo={all:"Tüm zamanlar",custom:"Özel",last1h:"Son 1 saat",last30d:"Son 30 gün",last7d:"Son 7 gün",thisMonth:"Bu ay",today:"Bugün",yesterday:"Dün"},jbo={title:"İstemci",unknown:"user-agent bildirilmedi",unknownShort:"Bilinmiyor"},Nbo={output:"Çıktı tokens",rate:"Oran",title:"Throughput",window:"Üretim penceresi"},Dbo={title:"İstek",openDetail:"İstek ayrıntılarını aç",copy:"ID kopyala",copied:"Kopyalandı",copyFailed:"Kopyalanamadı",close:"Kapat",loading:"Yükleniyor…",response:"Yanıt",sections:{request:"İstek",routing:"Yönlendirme",tokens:"Tokens",cost:"Maliyet dökümü",performance:"Performans",error:"Hata",outcome:"Sonuç",multimodal:"Çok modlu"},fields:{requestId:"İstek ID",time:"Zaman",apiKey:"API key",userAgent:"User-Agent",billingMode:"Faturalama modu",onehopModel:"OneHop modeli",endpoint:"Endpoint",firstToken:"İlk token",total:"Toplam süre",throughput:"Throughput",stream:"Streaming",clientIp:"İstemci IP",finishReason:"Bitiş nedeni",mediaType:"Medya türü",imageCount:"Görseller",imageSize:"Boyut",errorCode:"Kod",errorMessage:"Mesaj",requestedModel:"İstenen model"},billingMode:{token:"token başına",per_request:"istek başına",image:"görsel başına"},timeline:{heading:"Yaşam döngüsü",received:"İstek alındı",routed:"Yönlendirildi",failed:"Başarısız",generated:"Üretildi",metered:"Ölçüldü",billed:"Faturalandı"},downloadMedia:"İndir"},Mbo={success:"başarılı",completed:"tamamlandı",failed:"başarısız",pending:"bekliyor",repairing:"onarılıyor",queued:"kuyrukta",running:"çalışıyor",cancelled:"iptal edildi",expired:"süresi doldu"},Ebo={chat:"Sohbet",image:"Görsel",video:"Video"},Ibo={stop:"Stop",length:"Uzunluk sınırı",tool_calls:"Araç çağrıları",content_filter:"İçerik filtresi",error:"Hata"}
835,Obo={true:"Akış",false:"Akışsız"},Lbo={title:"Maliyet dökümü"},Ubo={title:"Token dökümü",prompt:"Girdi",completion:"Çıktı",imageOutput:"Görüntü çıktı tokenları",cacheRead:"Cache okuma",cacheWrite:"Cache yazma",cacheWrite5m:"Cache yazma 5m",cacheWrite1h:"Cache yazma 1h",total:"Toplam"},Bbo={timestamp:"Zaman damgası",local:"Yerel saat",relative:"Göreli"},Fbo={inputCost:"Girdi maliyeti",outputCost:"Çıktı maliyeti",cacheReadCost:"Cache okuma maliyeti",cacheWriteCost:"Cache yazma maliyeti",inputPrice:"Girdi fiyatı",outputPrice:"Çıktı fiyatı",total:"Toplam",officialPrice:"Resmi fiyat",saved:"Tasarruf",factor:{textInput:"Metin girişi",textOutput:"Metin çıktısı",imageInput:"Görüntü girişi",imageOutput:"Görüntü çıktısı",perCallImage:"Görüntü başına",videoPerSecond:"Video",videoPerCall:"Video",cacheRead:"Önbellek okuma",cacheWrite:"Önbellek yazma",cacheWrite5m:"Önbellek yazma (5m)",cacheWrite1h:"Önbellek yazma (1h)"},unit:{per1mTokens:"/ 1M token",perImage:"/ görüntü",perSecond:"/ sn",perCall:"/ çağrı"},promoBasis:"Promosyon öncesi",promoSaved:"Promosyon tasarrufu",freeCovered:"Ücretsiz kota ({{tokens}} token)",freeCoveredNoCount:"Ücretsiz kota"},zbo={noPreview:"Önizleme yok",video:"Video"},qbo={free:"Ücretsiz"},Hbo={title:bbo,description:xbo,actions:$bo,cacheHit:wbo,cancelJob:kbo,col:Cbo,columns:Sbo,empty:Abo,filter:Tbo,meta:Rbo,pager:Pbo,range:_bo,source:jbo,tps:Nbo,drawer:Dbo,status:Mbo,type:Ebo,finishReason:Ibo,stream:Obo,costBreakdown:Lbo,tokensBreakdown:Ubo,time:Bbo,userCost:Fbo,export:{label:"CSV dışa aktar",exporting:"Dışa aktarılıyor…",done:"{{n}} satır dışa aktarıldı.",truncated:"İlk {{n}} satır dışa aktarıldı. Geri kalanı için tarih aralığını daraltın.",failed:"Dışa aktarma başarısız. Lütfen tekrar deneyin."},media:zbo,cost:qbo},Vbo="Modeller",Kbo="Kullanılabilir tüm modelleri, bağlam uzunluğunu, giriş/çıkış fiyatlarını ve yetenekleri görün; sık kullandıklarınızı favorilere ekleyin.",Gbo={all:"Tümü",favorites:"Favorilerim",benefit:"Avantaj",hot:"Popüler",free:"Free"},Wbo={capability:"Tür",allCapabilities:"Tüm türler",capability_text:"Metin",capability_image:"Görsel",capability_audio:"Ses",capability_video:"Video",provider:"Sağlayıcı",allProviders:"Tüm sağlayıcılar",protocol:"Protokol",allProtocols:"Tüm protokoller",sort:"Sırala",search:"Ara",searchPlaceholder:"Model / sağlayıcı",allContexts:"Her uzunluk",context:"Bağlam",mobileTitle:"Filtreler"},Ybo="Öne çıkan",Qbo="En yeni",Xbo="Haftanın popülerleri",Zbo="Ad (A-Z)",Jbo="Fiyat (düşükten yükseğe)",exo="Fiyat (yüksekten düşüğe)",txo="Bağlam uzunluğu",nxo="Gecikme",axo="İş hacmi",oxo="OpenAI Chat",sxo="OpenAI Responses",rxo="Anthropic",ixo="Vertex AI",lxo="OpenAI Images",cxo="OpenAI Video",dxo={label:"Modeller",model:"Model",provider:"Sağlayıcı",capabilities:"Yetenekler",context:"Bağlam",price:"Fiyat",discount:"İndirim",action:"İşlem",tryIt:"Dene",type:"Tür",maxOutput:"Maks. çıktı",copyId:"Model ID’sini kopyala",copied:"Kopyalandı",usage:"Kullanım",stability:"Kararlılık",protocols:"Protokoller",openDetail:"Open model detail"},uxo="Popüler",mxo="Avantaj",pxo={add:"Favorilere ekle",remove:"Favorilerden çıkar"},fxo={favorites:"Henüz favori yok",noMatch:"Eşleşen model yok"},gxo="Metin",hxo="Görsel",yxo="Dosya",vxo="Video",bxo="Ses",xxo="Embedding",$xo="Vision",wxo="Araç çağırma",kxo="JSON modu",Cxo="Görsel üretimi",Sxo="Görsel düzenleme",Axo="Metin",Txo="Görsel",Rxo="Video",Pxo="Ses",_xo="Embedding",jxo="Resmi",Nxo="Kiro",Dxo="başlangıç",Mxo="/ çağrı",Exo="/ sn",Ixo="/ 1M",Oxo="Hızlı",Lxo="Free",Uxo="Coming Soon",Bxo="Free",Fxo={ariaLabel:"Fiyat para birimi",usd:"USD",rmb:"yuan (¥)",settlement:"Fiyatlar sabit {{rate}} kuruyla yuan olarak gösterilir, yalnızca bilgi amaçlıdır; cüzdanınızdan her zaman gerçek kullanıma göre USD tahsil edilir."},zxo="Yükleme gerekli",qxo={title:Vbo,description:Kbo,tabs:Gbo,filters:Wbo,sort_featured:Ybo,sort_newest:Qbo,sort_top_weekly:Xbo,sort_name:Zbo,sort_price_asc:Jbo,sort_price_desc:exo,sort_context:txo,sort_latency:nxo,sort_throughput:axo,protocol_openai_chat:oxo,protocol_openai_responses:sxo,protocol_anthropic_messages:rxo,protocol_google_vertex_ai:ixo,protocol_openai_images:lxo,protocol_openai_sora:cxo,table:dxo,badge_hot:uxo,badge_benefit:mxo,favorite:pxo,empty:fxo,modality_text:gxo,modality_image:hxo,modality_file:yxo,modality_video:vxo,modality_audio:bxo,modality_embeddings:xxo,capability_vision:$xo,capability_tool_calling:wxo,capability_json_mode:kxo,capability_image_generation:Cxo,capability_image_edit:Sxo,type_text:Axo,type_image:Txo,type_video:Rxo,type_audio:Pxo,type_embedding:_xo,provider_official:jxo,provider_kiro:Nxo,price_from:Dxo,price_perCall:Mxo,price_perSec:Exo,price_per1m:Ixo,price_fast:Oxo,badge_free:Lxo,badge_unavailable:Uxo,price_free:Bxo,currency:Fxo,badge_requiresTopup:zxo},Hxo={main:"Ana gezinme",utility:"Yardımcı gezinme",console:"Konsol gezinmesi",openNavigation:"Gezinmeyi aç",collapse:"Kenar çubuğunu daralt",expand:"Kenar çubuğunu genişlet"},Vxo={platform:"Konsol",chat:"Sohbet",models:"Modeller",logs:"Kayıtlar",jobs:"İşler",apiKeys:"API keys",usage:"Kullanım",billing:"Faturalama",freeTokens:"Ücretsiz Token",referrals:"Davetler",settings:"Ayarlar",admin:"Yönetim",balance:"Bakiye",helpSupport:"Yardım ve destek",announcements:"Duyurular",announcementsTitle:"Duyurular",announcementsEmpty:"Henüz duyuru yok. Yakında tekrar kontrol edin.",announcementsTicketUnread:"yeni yanıtı olan {{count}}
835 talep",support:"Destek",tasks:"Görevler",tagNew:"YENİ"},Kxo={staff:"Ekip"},Gxo={dashboard:"Panel",users:"Kullanıcılar",billing:"Platform faturalama",usage:"Platform kullanımı",rateLimits:"Hız sınırları",access:"Erişim",staff:"Yöneticiler",growth:"Büyüme",models:"Modeller",announcements:"Duyurular",upstream:"Upstream",auditLogs:"Denetim günlükleri",webhooks:"Webhooks",support:"Support",campaigns:"Campaigns",domainRules:"Email domains"},Wxo={title:"Notifications",markAllRead:"Mark all read",loading:"Loading…",emptyTitle:"You're all caught up",emptyBody:"New notifications will show up here."},Yxo={aria:Hxo,public:{models:"Modeller",pricing:"Fiyatlandırma",docs:"Dokümanlar",blog:"Blog",changelog:"Sürüm Notları"},console:Vxo,adminGroups:Kxo,admin:Gxo,notifications:Wxo},Qxo={back:"Geri",done:"Tamam",next:"İleri",stepOf:"{{current}} / {{total}}"},Xxo={balance:{body:"Kullandıkça yükleme yapın. Kullanılmayan bakiye her zaman iade edilebilir.",title:"Bakiyeniz"},keys:{body:"Buradan bir key oluşturun ve istediğiniz aracı OneHop’a yönlendirin.",title:"İlk API key’inizi oluşturun"},models:{body:"Çağırabileceğiniz tüm modelleri ve her birinin fiyatını tek sayfada görün.",cta:"Modelleri aç",title:"Modellere bakın"}},Zxo={body:"Tüm modeller için tek URL. 30 saniyede üç şeyi gösterelim.",skip:"Atla",start:"Başla",title:"OneHop’a hoş geldiniz"},Jxo={nav:Qxo,steps:Xxo,welcome:Zxo},e$o="Failed to load",t$o="Nothing here yet.",n$o="Daha fazla ayrıntı",a$o={failedLoad:e$o,emptyDescription:t$o,moreDetails:n$o},o$o="Tümü",s$o="Başarılı",r$o="Beklemede",i$o="Onarılıyor",l$o="Başarısız",c$o="İade edildi",d$o="Aktif",u$o="Devre dışı",m$o="Tükendi",p$o="Rezerve edildi",f$o="Kullanıldı",g$o="Askıya alındı",h$o="Silindi",y$o="Normal",v$o="İzlemede",b$o="Engellendi",x$o="Verildi",$$o="Geri alındı",w$o="Süresi doldu",k$o="Reddedildi",C$o="Taslak",S$o="Yayında",A$o="Kullanımdan kalktı",T$o="Arşivlendi",R$o="Gizli",P$o="Oluşturuldu",_$o="Checkout açıldı",j$o="Ödendi",N$o="İptal edildi",D$o="OpenAI Chat",M$o="OpenAI Responses",E$o="Anthropic Messages",I$o="Google Vertex AI",O$o="OpenAI Images",L$o="Kullanım ücreti",U$o="Kayıt bonusu",B$o="Promosyon bonusu",F$o="Referans bonusu",z$o="Telafi bonusu",q$o="Yükleme bonusu",H$o="Manuel düzeltme",V$o="Credit satın alma",K$o="Ödeme",G$o="Kayıt bonusu",W$o="Kupon",Y$o="Admin kredisi",Q$o="API kullanımı",X$o="Kayıt bonusu",Z$o="Manuel kredi",J$o="Sync",ewo="Streaming",two="Token faturalama",nwo="İstek faturalama",awo="Görsel faturalama",owo="Düşük reasoning",swo="Orta reasoning",rwo="Yüksek reasoning",iwo="Uygulanamaz",lwo="Bilinmiyor",cwo="Donduruldu",dwo="Serbest bırakıldı",uwo="İptal edildi",mwo="Kısmen geri alındı",pwo="Atlandı",fwo={all:o$o,success:s$o,pending:r$o,repairing:i$o,failed:l$o,refunded:c$o,active:d$o,disabled:u$o,exhausted:m$o,reserved:p$o,redeemed:f$o,suspended:g$o,deleted:h$o,normal:y$o,watchlisted:v$o,blocked:b$o,granted:x$o,reversed:$$o,expired:w$o,denied:k$o,draft:C$o,published:S$o,deprecated:A$o,archived:T$o,public:"Herkese açık",hidden:R$o,created:P$o,checkout_opened:_$o,paid:j$o,canceled:N$o,openai_chat:D$o,openai_responses:M$o,anthropic_messages:E$o,google_vertex_ai:I$o,openai_images:O$o,usage_charge:L$o,bonus_signup_grant:U$o,bonus_promo_grant:B$o,bonus_referral_grant:F$o,bonus_compensation_grant:z$o,bonus_topup_grant:q$o,manual_adjustment:H$o,credit_purchase:V$o,payment:K$o,signup:G$o,coupon:W$o,admin:Y$o,api:Q$o,signup_bonus:X$o,manual:Z$o,sync:J$o,stream:ewo,token:two,request:nwo,image:awo,low:owo,medium:swo,high:rwo,not_applicable:iwo,unknown:lwo,frozen:cwo,released:dwo,cancelled:uwo,partially_reversed:mwo,skipped:pwo},gwo="Sayfa başına {{count}}",hwo="Toplam {{count}}",ywo={perPage:gwo,total:hwo},vwo="Davet et ve kazan",bwo="Sana özel bağlantını paylaş. Davet ettiğin kullanıcı bakiye yükledikçe, her iki tarafın kazancı da net şekilde kaydedilir.",xwo="Davet verileri yüklenemedi",$wo="Davet bağlantın",wwo="Paylaş",kwo="Davet kopyalandı. Paylaşmak için WeChat’e yapıştırın.",Cwo="Kopyala",Swo="Kopyalandı",Awo="WeChat",Two="X",Rwo="Telegram",Pwo="Reddit",_wo="LinkedIn",jwo="WhatsApp",Nwo="E-posta",Dwo="Facebook",Mwo={default:{title:"Tüm AI modellerini tek bir O
835neHop API ile çağırın",body:"Davet bağlantımla kaydolun — {{firstWindowDays}} gün içinde ilk yüklemenizi yapın, ikimiz de {{percent}}% geri kazanalım."},x:{title:"Tüm AI modelleri için tek API 🤖",body:"Bağlantımla {{firstWindowDays}} gün içinde yükleme yapın, ikimiz de {{percent}}% geri kazanalım. 🚀"},telegram:{title:"OneHop ile tüm AI modelleriyle geliştirin",body:"Davet bağlantımı kullanın — {{firstWindowDays}} gün içinde yapılan ilk yükleme ikimize de {{percent}}% referans kredisi kazandırır."},whatsapp:{title:"Tüm AI modelleriyle geliştirin — OneHop",body:"Davet bağlantımla katılın. {{firstWindowDays}} gün içinde yükleme yapın, ikimiz de {{percent}}% geri kazanalım."},reddit:{title:"OneHop — tüm AI modelleri için tek API. Davetimle ilk yüklemenizde ikimiz de {{percent}}% geri kazanırız",body:"{{firstWindowDays}} gün içinde yükleme yapın, ikimiz de {{percent}}% referans kredisi kazanalım."},email:{title:"OneHop daveti — tüm AI modelleri tek API üzerinden",body:`Merhaba,
836
837Tüm büyük AI modellerini tek bir API üzerinden çağırmak için OneHop kullanıyorum. Davet bağlantımla kaydolun; ilk yüklemenizden sonra ikimiz de referans kredisi kazanalım.
838
839Ödül kademeleri: {{tiers}}.
840
841Teşekkürler!`},wechat:{title:"OneHop — tüm AI modelleri tek API üzerinden",body:"Davet bağlantımla kaydolun. {{firstWindowDays}} gün içinde yükleme yapın, ikimiz de {{percent}}% referans kredisi kazanalım."}},Ewo="Kazanç, ödemenin hemen ardından görünür; ancak iade penceresini karşılamak için önce dondurulur ve süre dolunca OneHop davet ödülü credit olarak serbest bırakılır.",Iwo="{{days}} gün sonra serbest bırakılır.",Owo={referrer:"Davet eden",referee:"Davet edilen"},Lwo={referrer:": davet ettiğin kişi bakiye yüklediğinde davet credit’i kazanırsın — {{tiers}}.",referee:": bağlantıyla kaydol ve bakiye yükle, sen de kazan — {{tiers}}."},Uwo={dayRange:"{{fromDay}}-{{untilDay}}. günler",dayOpenEnded:"{{fromDay}}. günden itibaren"},Bwo="Toplam kazanç",Fwo="Serbest bırakılan davet kazancı",zwo="Dondurulan davet kazancı",qwo="Davet edilen kişi sayısı",Hwo="Geçerli davetler",Vwo="Serbest bırakılan davet ödülü",Kwo="Dondurulan davet ödülü",Gwo="İptal / geri alınan",Wwo="Davet ettiğin kişiler",Ywo="Kazanç ayrıntıları",Qwo={user:"Kullanıcı",joined:"Kayıt tarihi",topups:"Yükleme sayısı",earned:"Senin kazancın",frozen:"Dondurulan",date:"Tarih",event:"Etkinlik",topupAmount:"Karşı tarafın yüklemesi",rate:"Oran",releaseAt:"Serbest bırakma tarihi",cashback:"Geri ödeme",status:"Durum"},Xwo={title:"Henüz davet yok",description:"Kazanmaya başlamak için bağlantını paylaş."},Zwo={inviteeSignedUp:"Davet edilen kişi başarıyla kaydoldu",youSignedUp:"Davet üzerinden başarıyla kaydoldun",inviteePaid:"Davet edilen kişi başarıyla harcama yaptı",youPaid:"Davet edilen olarak başarıyla harcama yaptın"},Jwo={frozen:"Dondurulan",released:"Serbest bırakıldı",cancelled:"İptal edildi",partially_reversed:"Kısmen geri alındı",reversed:"Geri alındı",failed:"Başarısız",skipped:"Atlandı"},e0o={title:vwo,description:bwo,error:xwo,yourLink:$wo,shareVia:wwo,wechatCopied:kwo,copy:Cwo,copied:Swo,wechat:Awo,x:Two,telegram:Rwo,reddit:Pwo,linkedin:_wo,whatsapp:jwo,email:Nwo,facebook:Dwo,share:Mwo,offer:Ewo,releaseDelay:Iwo,role:Owo,roleOffer:Lwo,policy:Uwo,totalEarned:Bwo,availableEarned:Fwo,frozenEarned:zwo,invited:qwo,active:Hwo,availableReceived:Vwo,frozenReceived:Kwo,cancelledReversed:Gwo,peopleYouInvited:Wwo,history:Ywo,col:Qwo,empty:Xwo,event:Zwo,status:Jwo},t0o="Ayarlar",n0o="Hesap tercihlerini ve konsol varsayılanlarını yönet.",a0o="{{email}} olarak giriş yapıldı",o0o="Görünen ad",s0o="Dil",r0o="Saat dilimi",i0o="Profil yüklenemedi",l0o="Kaydedilemedi",c0o="Değişiklikler atılsın mı?",d0o="Kaydedilmemiş değişiklikleriniz var. Şimdi çıkarsanız bunlar atılır.",u0o="At",m0o="Düzenlemeye devam et",p0o={title:t0o,description:n0o,signedInAs:a0o,displayName:o0o,locale:s0o,timezone:r0o,failedLoad:i0o,failedSave:l0o,discardTitle:c0o,discardMessage:d0o,discardConfirm:u0o,keepEditing:m0o},f0o="Görev Duvarı",g0o="OneHop'u kitlenizle paylaşın ve deneme kredisi kazanın. Her başvuruyu elle inceliyoruz.",h0o="Paylaşımınızın bağlantısı",y0o="https://…",v0o="Gönder",b0o="Gönderildi — kısa süre içinde inceleyeceğiz.",x0o="Kabul edilen bağlantılar: {{hosts}}",$0o="Daha önce reddedildi: {{reason}}. Düzeltip tekrar gönderin.",w0o={pending:"İncelemede",approved:"Yüklendi",rejected:"Reddedildi",active:"Etkin"}
841,k0o={title:"Şu anda görev yok",description:"Yakında tekrar bakın — bu kampanyaları düzenli olarak açıyoruz."},C0o={x_quote:{title:"X'te bizi alıntılayın",description:"@OneHopAI'nin sabitlenmiş gönderisini alıntılayın ve kendi yorumunuzu ekleyin.",rules:["X hesabınız en az 6 aylık olmalı ve 10 veya daha fazla takipçisi bulunmalı.","Orijinal gönderiyi değil, kendi alıntı gönderinizin bağlantısını gönderin.","Kredi, onaydan sonra 2 saat içinde yüklenir."]},youtube_tutorial:{title:"YouTube'da bir eğitim videosu yayınlayın",description:"OneHop'u kendi ajanınıza nasıl bağladığınızı gösteren 6 dakika veya daha uzun bir video.",rules:["Yayınladıktan sonra video bağlantısını gönderin.","YouTube kanalınızın 50 veya daha fazla abonesi olmalı.","Hesap başına bir kez.","Kredi, onaydan sonra 2 saat içinde yüklenir."]},short_video:{title:"Kısa video paylaşın",description:"TikTok veya YouTube'da OneHop kurulumunuzdan bahseden 40 saniye ve üzeri bir kısa video.",rules:["Yayınladıktan sonra video bağlantısını gönderin.","Kredi, onaydan sonra 2 saat içinde yüklenir."]},github_readme:{title:"GitHub README'nize OneHop ekleyin",description:"Kendi deponuzun README dosyasına bir OneHop teşekkürü ekleyin. Sonraki her yüklemede %15 ekstra kazanın.",rules:["README yayına girdikten sonra depo bağlantısını gönderin.","Bu tek seferlik değil, kalıcıdır: sonraki her yüklemede standart bonus ile %15'inizden yüksek olan uygulanır.","Kopyalanabilir metin aşağıdadır."]}},S0o={load:"Görev duvarı yüklenemedi",generic:"Gönderilemedi",urlRequired:"Önce paylaşımınızın bağlantısını yapıştırın.",urlTooLong:"Bu bağlantı çok uzun.",urlMalformed:"Bu geçerli bir bağlantıya benzemiyor.",hostNotAllowed:"Bu görev yalnızca yukarıda listelenen platformlardan gelen bağlantıları kabul eder.",notAPost:"Profil veya ana sayfa değil, ilgili gönderinin ya da videonun bağlantısını verin.",alreadySubmitted:"Bu görevi zaten gönderdiniz.",notAvailable:"Bu görev şu anda kullanılamıyor.",busy:"Bugünkü inceleme kapasitemiz doldu. Yarın tekrar deneyin.",emailUnverified:"Önce e-posta adresinizi doğrulayın.",accountTooNew:"Hesabınız bunun için henüz yeterince eski değil.",riskFlagged:"Bu hesap şu anda katılamaz. Bunun bir hata olduğunu düşünüyorsanız destek ekibine yazın.",accountInactive:"Bu hesap aktif değil.",deviceAlreadyClaimed:"Bu cihazdaki başka bir hesap zaten katıldı."},A0o="Bu projeye sponsor olduğu için [OneHop]({{url}}) teşekkürler! OneHop, tek bir OpenAI uyumlu API anahtarıyla GPT, Claude, Gemini, DeepSeek, Kimi ve Qwen dahil yüzlerce önde gelen modele erişim sağlar. Birden fazla sağlayıcı hesabı yönetmenize ya da model değiştirmek için kod düzenlemenize gerek yok; yalnızca kullandığınız kadar ödersiniz. → {{domain}}",T0o="Bu metni kopyala",R0o={title:f0o,description:g0o,urlLabel:h0o,urlPlaceholder:y0o,submit:v0o,submitted:b0o,allowedHosts:x0o,rejectedHint:$0o,status:w0o,empty:k0o,item:C0o,error:S0o,sponsorBlurb:A0o,copyBlurb:T0o},P0o="Canlı sohbet",_0o="Destek talepleri",j0o="Bir destek talebi açın, ekibimiz en kısa sürede yanıt versin.",N0o="Yeni talep",D0o={subject:"Konu",category:"Tür",status:"Durum",updated:"Güncellendi",user:"User"},M0o={billing:"Faturalandırma",technical:"Teknik",account:"Hesap",other:"Diğer"},E0o={open:"Açık",pending:"Beklemede",resolved:"Çözüldü",closed:"Kapalı"},I0o={allStatuses:"Tüm durumlar",allCategories:"All categories",search:"Search email or subject"},O0o={subject:"Konu",subjectPlaceholder:"Sorununu kısaca açıkla",category:"Tür",message:"Mesaj",messagePlaceholder:"Neler olduğunu anlat…",attachments:"Ekler",addAttachment:"Dosya ekle",submit:"Talebi gönder",cancel:"İptal"},L0o={you:"Sen",support:"Destek",system:"Sistem",replyPlaceholder:"Yanıt yaz…",send:"Gönder",closedNotice:"Bu talep kapalı. Hâlâ yardıma ihtiyacın varsa yeni bir talep aç.",sendHint:"Göndermek için ⌘/Ctrl + Enter tuşlarına bas",back:"Taleplere dön",systemStatus:{open:"Talep yeniden açıldı",pending:"Talep yanıtını bekliyor olarak 
841işaretlendi",resolved:"Talep çözüldü olarak işaretlendi",closed:"Talep kapatıldı"}},U0o={title:"Support tickets",resolve:"Resolve",close:"Close",reopen:"Reopen",unread:"Unread"},B0o="Daha fazla yükle",F0o={created:"Talep gönderildi",replied:"Yanıt gönderildi",statusUpdated:"Status updated",error:"Bir şeyler ters gitti. Lütfen tekrar dene"},z0o="Destek talebi bulunamadı veya kaldırıldı.",q0o={title:"Henüz talep yok",body:"Bir sorun mu var? Destek talebi açın, yardımcı olalım.",cta:"İlk talebi aç"},H0o={liveChat:P0o,title:_0o,subtitle:j0o,newTicket:N0o,columns:D0o,category:M0o,status:E0o,filters:I0o,form:O0o,thread:L0o,admin:U0o,loadMore:B0o,toast:F0o,notFound:z0o,empty:q0o},V0o="Kullanım",K0o="Bakiye, harcama hızı ve giderlerinizin nereye gittiği.",G0o="Aktivite",W0o="Bu aralıkta aktivite yok",Y0o="Kullanım dökümü",Q0o="API key’e göre",X0o="Modele göre",Z0o="token türüne göre",J0o="Veri yok",eko="Bu aralıkta henüz kullanım yok.",tko="Mevcut hızla bakiye yaklaşık {{days}} gün yeter (yaklaşık {{rate}}/gün).",nko="çıktı",ako="önbellek",oko={tokens:"Tokens",requests:"İstekler",cost:"Maliyet"},sko="Diğer",rko="istek",iko="tok",lko="Yenileniyor…",cko="Veri yok",dko="Veri biriktirmek için bir istek gönderin.",uko="En çok kullanılan API keys",mko="Yükle",pko={title:"Kullanım yüklenemedi"},fko={firstToken:"ilk token",latency:"Ortalama gecikme",requests:"İstekler",spend:"Tüketim",spendSub:"bu dönem faturalanan",successRate:"%{{rate}} başarılı",tokens:"Tokens",textDuration:"metin",mediaDuration:"görsel/video",cacheHit:"%{{rate}} önbellek",projected:"≈ {{amount}}/ay",vsPrevious:"önceki döneme göre"},gko={activeDays:"Aktif günler",longestStreak:"En uzun seri",daysValue:"{{n}} gün",totalSpend:"Bu dönemde toplam",peakDay:"En yoğun gün"},hko={all:"Tüm zamanlar",custom:"Özel",last1h:"Son 1 saat",last30d:"Son 30 gün",last7d:"Son 7 gün",thisMonth:"Bu ay",today:"Bugün",yesterday:"Dün",byMonth:"Aya göre"},yko={failed:"Başarısız",success:"Başarılı"},vko={cacheRead:"Cache okuma",cacheWrite:"Cache yazma",cacheWrite1h:"Cache yazma 1h",cacheWrite5m:"Cache yazma 5m",completion:"Çıktı",prompt:"Girdi"},bko={body:"Terminalden bir istek gönderin veya playground’u açın — kullanım birkaç saniye içinde burada görünür.",openPlayground:"playground’u aç",title:"key hazır"},xko={body:"İlk API key’inizi oluşturun, tüm istekleri tek URL üzerinden yönlendirin; kullanım ardından burada görünür.",createKey:"API key oluştur",title:"OneHop’a hoş geldiniz",tryPlayground:"playground’u deneyin"},$ko="Yenile",wko="Geçerli filtrede {{count}} başarılı istek",kko="Toplam tokens",Cko="Girdi {{input}} / çıktı {{output}}",Sko="Faturalanan credit",Ako="{{cost}} gerçek upstream maliyeti",Tko="Ortalama gecikme",Rko="İlk token {{duration}}",Pko="30 günlük aktivite",_ko="Başarılı istekler, token hacmi ve faturalanan credit.",jko="Kullanım trendi yükleniyor",Nko="Kullanım trendi yok",Dko="Başarılı isteklerden sonra kullanım trendi görünür.",Mko="Popüler modeller",Eko="Son 30 günde modele göre faturalanan credit.",Iko="Henüz model kullanımı yok",Oko="Başarılı isteklerden sonra model dağılımı görünür.",Lko="Model",Uko="Tüm modeller",Bko="Durum",Fko="Protokol",zko="Satır",qko="Sıfırla",Hko="Kullanım kayıtları",Vko="API key",Kko="Endpoint",Gko="Tür",Wko="Tokens",Yko="Maliyet",Qko="Süre",Xko="Zaman",Zko="User-Agent",Jko="Ayrıntılar",eCo="İstek ayrıntısı",tCo="Kullanım kaydı ayrıntıları ve faturalama metadata.",nCo="İstek ID",aCo="İşlem",oCo="Girdi tokens",sCo="Çıktı tokens",rCo="Cache okuma tokens",iCo="Cache yazma tokens",lCo="Girdi maliyeti",cCo="Çıktı maliyeti",dCo="Cache okuma maliyeti",uCo="Cache yazma maliyeti",mCo="Hata kodu",pCo="Hata mesajı",fCo="Bulunamadı.",gCo="credit",hCo="Toplam {{count}}",yCo="Kullanım kayıtları yükleniyor",vCo="Kullanım kaydı yok",bCo="Farklı bir filtre seti deneyin.",xCo="İstekler API keys üzerinden aktığında kayıtlar burada görünür.",$Co="Sayfa {{page}} · eşleşen {{total}} kayıttan {{shown}} gösteriliyor",wCo="Önceki",kCo="Sonraki",CCo="Credit",SCo="Tokens",ACo="İstekler",TCo={time:"Zaman",apiKey:"API Key",model:"Model",reasoningEffort:"Akıl yürütme düzeyi",endpoint:"Endpoint",type:"Tür",billingMode:"Faturalama modu",inputTokens:"Girdi Tokens",outputTokens:"Çıktı Tokens",cacheReadTokens:"Cache Okuma Tokens",cacheWriteTokens:"Cache Yazma Tokens",totalTokens:"Toplam Tokens",billedCredit:"Faturalanan Credit",firstTokenMs:"İlk Token Ms",durationMs:"Süre Ms",status:"Durum",userAgent:"User-Agent"},RCo={mon:"Pzt",wed:"Çar",fri:"Cum"},PCo="Az",_Co="Çok",jCo={title:V0o,description:K0o,activity:G0o,activityEmpty:W0o,breakdown:Y0o,byApiKey:Q0o,byModel:X0o,byTokenType:Z0o,chartEmpty:J0o,chartEmptyHint:eko,burnRate:tko,in:"girdi",out:nko,cache:ako,metric:oko,other:sko,req:rko,tok:iko,refreshing:lko,topEmpty:cko,topEmptyHint:dko,topKeys:uko,topUp:mko,error:pko,kpi:fko,stat:gko,range:hko,requests:yko,tokenType:vko,noRequests:bko,welcome:xko,refresh:$ko,successfulFilter:wko,totalTokens:kko,inOut:Cko,billedCredit:Sko,upstreamA
841ctualCost:Ako,avgLatency:Tko,firstToken:Rko,activityTitle:Pko,activityDescription:_ko,loadingTrend:jko,noUsageTrend:Nko,trendDescription:Dko,topModels:Mko,topModelsDescription:Eko,noModelUsage:Iko,noModelUsageDescription:Oko,model:Lko,allModels:Uko,status:Bko,protocol:Fko,rows:zko,reset:qko,tableLabel:Hko,apiKey:Vko,endpoint:Kko,type:Gko,tokens:Wko,cost:Yko,duration:Qko,time:Xko,userAgent:Zko,details:Jko,requestDetail:eCo,detailDescription:tCo,requestId:nCo,operation:aCo,inputTokens:oCo,outputTokens:sCo,cacheReadTokens:rCo,cacheWriteTokens:iCo,inputCost:lCo,outputCost:cCo,cacheReadCost:dCo,cacheWriteCost:uCo,errorCode:mCo,errorMessage:pCo,notFound:fCo,creditSuffix:gCo,total:hCo,loadingRecords:yCo,noRecords:vCo,differentFilters:bCo,recordsEmpty:xCo,pageSummary:$Co,previous:wCo,next:kCo,chartCredit:CCo,chartTokens:SCo,chartRequests:ACo,csv:TCo,weekday:RCo,activityLess:PCo,activityMore:_Co},NCo="注册准入",DCo="受控发布期注册闸。名单内邮箱/域名、已注册用户和在职管理员可以创建账号。",MCo="注册准入名单",ECo="准入名单为空",ICo="邮箱 / 域名",OCo="备注",LCo="状态",UCo="注册状态",BCo="有效期",FCo="邀请",zCo="更新于",qCo="操作",HCo="添加",VCo="批量添加",KCo="编辑",GCo="保存",WCo="邀请",YCo="恢复",QCo="移除",XCo="添加注册准入",ZCo="编辑 {{email}}",JCo="批量添加注册准入",e1o="可添加精确邮箱,也可用 @company.com 放行整个域名。已注册用户与在职管理员始终放行。",t1o="每行粘贴一个邮箱或 @domain。非法和重复行会跳过,不会影响其他行。",n1o="邮箱或域名",a1o="[email protected] 或 @company.com",o1o="用 @company.com 放行整个域名。",s1o="备注(可选)",r1o="例如 创始团队",i1o="有效期(可选)",l1o="留空表示长期有效。到期后将不再允许新注册。",c1o="邮箱 / 域名",d1o=`[email protected]
842[email protected]
843@partner.com`,u1o="搜索",m1o="搜索邮箱或域名",p1o="状态",f1o="准入检查",g1o="[email protected]",h1o="检查",y1o="允许",v1o="拒绝",b1o={existing_user:"已注册用户始终允许",active_admin:"在职管理员始终允许",email_allowlist:"命中精确邮箱",domain_allowlist:"命中域名规则",not_allowed:"未命中任何有效规则"},x1o="已注册",$1o="未注册",w1o="管理员",k1o="域名规则",C1o="长期",S1o="已加入注册准入。",A1o="注册准入已更新。",T1o="已添加 {{count}} 条。",R1o="邀请邮件已发送。",P1o="已恢复。",_1o="已从注册准入移除。",j1o="将 {{email}} 移出注册准入?除非命中其他规则,否则该邮箱将无法创建新账号。",N1o={title:"邮箱域名单",description:"叠加在内置基线之上的可热配邮箱域名单。黑名单域注册即拒;主流域跳过风控观察名单。",add:"添加域名",addTitle:"添加域名规则",addDescription:"黑名单注册即拒(403)。主流标记把该域视为可信,新用户不进观察名单。",kindLabel:"名单",kindBlacklist:"黑名单 — 拒绝注册",kindMainstream:"主流 — 跳过观察名单",domainLabel:"域名",domainPlaceholder:"example.com",noteLabel:"备注",notePlaceholder:"可选 — 说明原因",search:"搜索",searchPlaceholder:"按域名筛选",kindFilter:"名单",allKinds:"全部名单",statusFilter:"状态",statusActive:"生效",statusRevoked:"已移除",statusAll:"全部",label:"邮箱域名单",empty:"暂无域名规则",colDomain:"域名",colKind:"名单",colNote:"备注",colAddedBy:"添加人",colCreated:"创建时间",status:"状态",action:"操作",remove:"移除",restore:"恢复",confirmRemove:"确认移除 {{domain}} 的规则?",added:"已添加域名规则",removed:"已移除域名规则",restored:"已恢复域名规则",badgeBlacklist:"黑名单",badgeMainstream:"主流"},D1o={title:NCo,description:DCo,label:MCo,empty:ECo,email:ICo,note:OCo,status:LCo,registration:UCo,expiresAt:BCo,invites:FCo,updatedAt:zCo,action:qCo,add:HCo,bulkAdd:VCo,edit:KCo,save:GCo,invite:WCo,restore:YCo,revoke:QCo,newTitle:XCo,editTitle:ZCo,bulkTitle:JCo,formDescription:e1o,bulkDescription:t1o,emailLabel:n1o,emailPlaceholder:a1o,emailHint:o1o,noteLabel:s1o,notePlaceholder:r1o,expiresAtLabel:i1o,expiresAtHint:l1o,bulkEntriesLabel:c1o,bulkEntriesPlaceholder:d1o,search:u1o,searchPlaceholder:m1o,statusFilter:p1o,checkLabel:f1o,checkPlaceholder:g1o,check:h1o,checkAllowed:y1o,checkDenied:v1o,checkReasons:b1o,registered:x1o,notRegistered:$1o,adminAllowed:w1o,domainRule:k1o,never:C1o,added:S1o,updated:A1o,bulkAdded:T1o,invited:R1o,restored:P1o,revoked:_1o,c
843onfirmRevoke:j1o,domainRules:N1o},M1o="钱包账单",E1o="查看所有用户的支付、钱包与退款。",I1o={payments:"支付",wallets:"钱包",refunds:"退款"},O1o="用户邮箱",L1o="按邮箱搜索…",U1o="创建时间",B1o="创建时间",F1o="金额 (USD)",z1o="最小",q1o="最大",H1o="退款",V1o="暂无退款",K1o="退款",G1o="类型",W1o="全额退款",Y1o="部分退款",Q1o="原始支付",X1o="钱包",Z1o="钱包",J1o="用户",eSo="总计",tSo="已购买",nSo="奖励",aSo="暂无钱包",oSo="支付",sSo="支付状态",rSo="暂无支付",iSo="支付",lSo="状态",cSo="金额",dSo="支付时间",uSo="退款",mSo="不可退款(状态必须为已支付)",pSo="在 Stripe Dashboard 中查看",fSo="最近 7 天失败和死信 Webhook 数。0=绿色,1-9=黄色,10+=红色。",gSo="异常",hSo="退款 {{id}}",ySo="这会通过 Stripe 向 {{user}} 退款。下方的手续费会从退回金额中扣除,取消勾选可免除。原始付款附带的促销 Credits 会按比例作废。",vSo="退款金额 (USD)",bSo="最多 ${{value}}",xSo="原因",$So="正在加载退款预览…",wSo="退款预览加载失败,预览成功前无法提交退款。",kSo="未找到可退款的交易——该笔支付可能已全额退款。",CSo="实付金额",SSo="已退金额",ASo="本次退款",TSo="回收 Credit",RSo="含按比例回收的优惠券折扣 Credit {{amount}}",PSo="含按比例回收的额外发放 Credit {{amount}}",_So="撤销奖励",jSo="本次退款将撤销 {{amount}} 促销奖励额度。",NSo="经 Stripe 退回",DSo="收取手续费({{fee}},覆盖 Stripe 通道成本)",MSo="手续费({{fee}})",ESo="金额超过最大可退 {{value}}",ISo="请输入有效的正数金额",OSo="用户已消费部分已购 Credit,最多可退 {{value}}",LSo="该笔支付已全额退款",USo="扣完手续费后实退金额过小,退款额至少 {{value}}。",BSo="取消",FSo="发起退款",zSo="提交中...",qSo="退款已提交",HSo="Stripe 会在 1-3 个工作日内退回款项。审计日志已写入。",VSo="退款失败",KSo={title:M1o,description:E1o,tabs:I1o,emailFilter:O1o,emailPlaceholder:L1o,created:U1o,createdRange:B1o,amountRange:F1o,amountMin:z1o,amountMax:q1o,refunds:H1o,noRefunds:V1o,refundId:K1o,refundType:G1o,typeRefund:W1o,typePartialRefund:Y1o,originalPayment:Q1o,wallets:X1o,wallet:Z1o,user:J1o,total:eSo,purchased:tSo,bonus:nSo,noWallets:aSo,payments:oSo,paymentStatus:sSo,noPayments:rSo,payment:iSo,status:lSo,amount:cSo,paid:dSo,refund:uSo,notRefundable:mSo,viewInStripe:pSo,webhookHealthHint:fSo,unhealthyWebhooks:gSo,refundConfirmTitle:hSo,refundConfirmBody:ySo,refundAmountLabel:vSo,refundMaxHint:bSo,refundReasonLabel:xSo,refundPreviewLoading:$So,refundPreviewFailed:wSo,refundNoRefundableTx:kSo,refundPaidRow:CSo,refundAlreadyRefundedRow:SSo,refundThisRefundRow:ASo,refundCreditReclaimRow:TSo,refundCreditCouponNote:RSo,refundCreditExtraNote:PSo,refundBonusReverseRow:_So,refundBonusForfeitWarning:jSo,refundStripeReturnRow:NSo,refundFeeToggle:DSo,refundPlatformFeeRow:MSo,refundExceedsMax:ESo,refundAmountInvalid:ISo,refundInsufficientCredit:OSo,refundAlreadyFull:LSo,refundBelowMin:USo,cancel:BSo,confirmRefund:FSo,submitting:zSo,refundSubmittedTitle:qSo,refundSubmittedBody:HSo,refundFailedTitle:VSo},GSo="活动运营",WSo="受众分群、限定模型授权、模型折扣与定向赠金。",YSo={mobileLabel:"活动模块",segments:"受众",access:"模型授权",discounts:"模型折扣",grants:"定向赠金",recurring:"周期活动"},QSo="状态",XSo="操作",ZSo="全体用户",JSo="始终",eAo="永不过期",tAo="生效时段",nAo="留空即长期生效。时间取所选日期的当日。",aAo="生效起",oAo="生效止",sAo="暂停",rAo="恢复",iAo="添加",lAo="移除",cAo="删除",dAo="清除",uAo="关闭",mAo={allKinds:"全部类型",segmentKindStatic:"静态",segmentKindDynamic:"动态",grantKindGrant:"发放",grantKindRevoke:"撤销",allStatuses:"全部状态",statusActive:"生效中",statusPaused:"已暂停",statusArchived:"已归档",statusEnded:"已结束",statusPending:"待处理",statusProcessing:"处理中",statusCompleted:"已完成",statusFailed:"失败"},pAo={title:"受众",create:"新建受众",empty:"暂无受众。建一个用于定å
843‘授权、折扣和赠金。",name:"名称",namePlaceholder:"例如:中国高频用户",description:"说明",kind:"类型",kind_static:"静态",kind_dynamic:"动态",kindHint:"静态 = 手工挑选的用户名单;动态 = 命中规则的用户,物化时刷新。",members:"成员",materialized:"上次刷新",basics:"基本信息",sheetDescription:"受众把用户分组,用于定向模型授权、折扣与赠金。",saved:"受众已保存",created:"受众已创建",rule:"匹配规则",ruleHint:"所有条件需同时满足(AND)。空规则不匹配任何人。",countryIn:"国家属于",countryInHint:"逗号分隔的 ISO-2 代码,例如 CN, US, JP。",signupAfter:"注册晚于",signupBefore:"注册早于",minSpend:"累计消费≥(美元)",minSpendHint:"仅累计消费达到该额度的用户。",previewing:"估算中……",matchCount:"预计命中:{{value}} 人",membersTitle:"成员",membersHint:"搜索并添加用户。规则命中的成员只读。",addMembers:"添加用户",searchUsers:"按邮箱或 ID 搜索",noUsers:"无匹配用户。",noMembers:"暂无成员。",membersAdded:"已添加 {{count}} 名成员",membersAdded_plural:"已添加 {{count}} 名成员",source_manual:"手动",source_rule:"规则",materializeTitle:"物化",materializeHint:"把规则快照成成员名单。可随时重跑刷新。",materialize:"立即物化",materializing:"物化中……",materializeConfirm:"按当前规则刷新成员?将替换规则命中的快照。",materializeDone:"已物化 {{
843count}} 名成员",lastMaterialized:"上次物化 {{value}}",neverMaterialized:"尚未物化",deleteSegment:"删除受众",deleteConfirm:"删除该受众?引用它的授权、折扣、赠金将失去此定向。"},fAo={title:"模型授权",create:"授予访问",empty:"暂无授权。",model:"模型",segment:"受众",target:"目标",validFrom:"生效起",validTo:"生效止",sheetDescription:"把某个限定模型授予某受众,可选设定生效时段。",created:"已授予访问",statusUpdated:"状态已更新",deleteConfirm:"移除该授权?",noSegmentsTitle:"请先建受众",noSegmentsDescription:"授权按受众下发。请先在「受众」页建受众,再回来授予模型访问。",publicHint:"该模型为公开模型 —— 所有人本就可用。",publicModelTitle:"模型为公开",publicModelWarning:"{{model}} 当前为公开模型,在「模型」页改为限定前,此授权不生效。请到那里将其切为限定,即可锁定给该受众。",createAnyway:"仍然创建"},gAo={title:"模型折扣",create:"新建折扣",empty:"暂无折扣。",model:"模型",audience:"受众",audienceHint:"保持全体用户即对所有人打折。",discount:"折扣",window:"时段",live:"生效中",end:"结束",amount:"折扣",target:"目标",name:"内部名称",nameHint:"可选,仅供内部备注。",percentLabel:"在平台价基础上额外打折",percentHint:"1–99%。作用在我们的平台价(our_price)之上,非官方价。",percentError:"请输入 1 到 99 之间的值。",previewPlatform:"折后平台价",previewVsOfficial:"比官方省",pickStart:"选择起始日期",sheetDescription:"折扣作用在平台价之上;官方价仅作对照展示。",created:"折扣已创建",saved:"折扣已保存",statusUpdated:"状态已更新",deleteConfirm:"删除该折扣?",liveReadonly:"该折扣正在生效 —— 折扣值、时段、名称已锁定。需暂停或结束后才能改动。",terminalReadonly:"该折扣已结束,只读。"},hAo={title:"定向赠金",create:"新建赠金",empty:"暂无定向赠金。",time:"时间",kind:"类型",kind_grant:"发放",kind_revoke:"撤销",model:"模型",modelHint:"赠金在所选模型内共享,任一模型消费都从同一余额扣除。",pickModels:"选择模型",nModels:"已选 {{count}} 个模型",pasteEmails:"粘贴邮箱批量添加",pasteEmailsPlaceholder:"[email protected], [email protected] —— 支持换行、逗号或分号分隔",importEmails:"解析并添加",importMatched:"匹配到 {{count}} 个用户。",importUnmatched:"{{count}} 个邮箱未找到对应用户:",importInvalid:"{{count}} 个格式无效已跳过:",importInactive:"{{count}} 个已匹配但非活跃,发放时将被跳过:",preset7d:"7 天",preset30d:"30 天",preset90d:"90 天",total:"合计",notifyYes:"是",notifyNo:"否",recipients:"收件人",amount:"金额",expiry:"过期",expiryHint:"可选。未用余额在该日期过期。",audience:"受众",bySegment:"按受众",byUsers:"指定用户",segment:"受众",users:"用户",searchUsers:"按邮箱或 ID 搜索",noUsers:"无匹配用户。",grantDetails:"发放详情",amountEach:"每人金额(美元)",amountHint:"每人 0.01–2000。",notifyEmail:"邮件通知收件人",note:"备注",summary:"{{count}} 人 × {{amount}} = 合计 {{total}}",send:"发放赠金",sending:"排队中……",queued:"赠金已入队 —— 正向收件人逐一下发",confirmTitle:"确认发放定向赠金?",confirmMessage:"向 {{count}} 人各发 {{amount}}(合计 {{total}})?",confirmSend:"发放赠金",sheetDescription:"向某受众或手工挑选的用户名单发放限定模型的赠金。",batchTitle:"赠金批次",succeeded:"成功",failed:"失败",revokedAmount:"已回收",completedAt:"完成于",revoke:"撤销",revokeConfirm:"从 {{model}} 的 {{count}} 名收件人回收未用余额?",revokeQueued:"撤销已入队"},yAo={title:"周期活动",create:"新建周期活动",editTitle:"编辑周期活动",empty:"暂无周期活动。建一个,按每天/每周给受众发放免费 token 或受限专款。",sheetDescription:"免费 token 或受限专款,每个周期为受众刷新(懒生成,首次调用时下发)。",basics:"基本信息",name:"名称",namePlaceholder:"ä¾
843‹å¦‚:每日免费 Kimi token",unit:"单位",unitHint:"Token = 每期免费 token 额度;USD = 受限专款(仅限单模型)。",unitLocked:"单位创建后固定 —— 换单位请新建一条活动。",unit_tokens:"Token",unit_usd:"美元",allUnits:"全部单位",targeting:"定向",models:"模型",modelsHint:"免费 token 可在所选的全部模型上使用。",model:"模型",usdSingleModelHint:"USD 活动仅限单模型 —— 多模型会让消费无法归属。",pickModels:"选择模型",nModels:"已选 {{count}} 个模型",nModels_plural:"已选 {{count}} 个模型",audience:"受众",audienceHint:"保持全体用户即对所有人发放。",schedule:"额度与排期",perPeriod:"每期额度",tokensHint:"正整数,例如每期 100000 token。",usdHint:"每期 0.01–2000 美元。",cadence:"周期",cadence_daily:"每天",cadence_weekly:"每周",anchorTz:"锚点时区",anchorTzHint:"周期边界以该时区的本地午夜为准。",startsAt:"开始",startsAtHint:"可选。留空即立即生效。",endsAt:"结束",endsAtHint:"可选。留空即无截止日期。",immediately:"立即",excludeRisky:"排除风险账户",thisPeriod:"本期(人数 · 已用/已发)",allStatuses:"全部状态",status_draft:"草稿",status_active:"生效中",status_paused:"已暂停",status_archived:"已归档",created:"周期活动已创建",saved:"周期活动已保存"},vAo={title:GSo,description:WSo,tabs:YSo,status:QSo,actions:XSo,allUsers:ZSo,always:JSo,noExpiry:eAo,window:tAo,windowHint:nAo,validFrom:aAo,validTo:oAo,pause:sAo,resume:rAo,actionAdd:iAo,actionRemove:lAo,actionDelete:cAo,actionClear:dAo,actionClose:uAo,filters:mAo,segments:pAo,access:fAo,discounts:gAo,grants:hAo,recurring:yAo},bAo="系统公告",xAo="在官网和控制台展示的横幅 / 弹框公告。",$Ao="公告",wAo="在 www 和控制台展示的横幅 / 弹框公告。",kAo="新建公告",CAo="暂无公告,点击「新建公告」创建第一条。",SAo="消息内容",AAo="支持内联链接:[文字](https://… 或 /路径),可放多个。",TAo="按钮文字",RAo="按钮链接",PAo="级别",_Ao="展示位置",jAo="上线时间",NAo="下线时间",DAo="可关闭",MAo="状态",EAo="归档",IAo="归档此公告?归档后用户将不再看到。",OAo="新建公告",LAo="编辑公告",UAo="标题",BAo="类型",FAo="内容",zAo="展示形式",qAo="横幅",HAo="弹框",VAo="草稿",KAo="已发布",GAo="信息",WAo="警告",YAo="严重",QAo="仅控制台",XAo="仅官网",ZAo="两者都",JAo="头图",eTo="上传图片,或贴 https 链接,可留空。支持 PNG / JPEG / WebP / GIF,不超过 5MB。",tTo="上传图片",nTo="上传中…",aTo="移除",oTo="只支持 PNG、JPEG、WebP、GIF 图片。",sTo="图片不能超过 5MB。",rTo="上传失败,请重试。",iTo="标题",lTo="正文",cTo="操作按钮",dTo="按钮文字",uTo="按钮链接",mTo="类型",pTo="添加按钮",fTo="删除",gTo="主按钮",hTo="次按钮",yTo="文字链",vTo="简体中文(母本)",bTo="运营只需填简体中文,点「一键翻译」自动翻成其余语言。",xTo="一键翻译其余语言",$To="翻译中…",wTo="其余语言(已翻译,可编辑)",kTo="已翻译 {{ok}} 种语言",CTo="{{failed}} 种语言翻译失败,请手填或重试",STo="中文母本已修改但未重新翻译,下方译文仍是旧文案——请重新点「一键翻译」,否则海外用户会看到过期内容。",ATo="更新后重新展示给已看过的用户",TTo="请先填写简体中文的正文。",RTo={title:bAo,description:xAo,annTitle:$Ao,annDescription:wAo,annNewButton:kAo,annEmpty:CAo,annMessage:SAo,annInlineLinkHint:AAo,annCtaText:TAo,annCtaUrl:RAo,annSeverity:PAo,annAudience:_Ao,annStartsAt:jAo,annEndsAt:NAo,annDismissible:DAo,annStatus:MAo,annArchive:EAo,annArchiveConfirm:IAo,annCreateTitle:OAo,annEditTitle:LAo,annColTitle:UAo,annColType:BAo,annColContent:FAo,annDisplayType:zAo,annTypeBanner:qAo,annTypeModal:HAo,annStatusDraft:VAo,annStatusActive:KAo,annSevInfo:GAo,annSevWarning:WAo,annSevCritical:YAo,annAudConsole:QAo,annAudPublic:XAo,annAudAll:ZAo,annHeroImage:JAo,annHeroImageHint:eTo,annHeroImageUpload:tTo,annHeroImageUploading:nTo,annHeroImageRemove:aTo,annHeroImageBadType:oTo,annHeroImageTooLarge:sTo,annHeroImageUploadFailed:rTo,annModalTitle:iTo,annBody:lTo,annActions:cTo,annActionLabel:dTo,annActionUrl:uTo,annActionVariant:mTo,annActionAdd:pTo,annActionRemove:fTo,annVariantPrimary:gTo,annVariantSecondary:hTo,annVariantLink:yTo,annSourceLocale:vTo,annSourceHint:bTo,annTranslate:xTo,annTranslating:$To,annOtherLocales:wTo,annTranslateDone:kTo,annTranslateParti
843al:CTo,annTranslateStale:STo,annBumpRevision:ATo,annTranslateNeedSource:TTo},PTo="仪表盘",_To="平台健康、用量与告警的实时概览。",jTo="刷新",NTo="刷新中",DTo="更新于 {{time}}",MTo="正在加载总览",ETo="加载总览失败",ITo="暂无数据",OTo="暂无流量",LTo="视频失败率",UTo="平均延迟",BTo="错误类型",FTo="无错误",zTo="模型异常榜",qTo="所有模型正常",HTo="组件",VTo="次",KTo="结账放弃率",GTo="退款",WTo="拒付",YTo="首充转化",QTo="{{failed}}/{{total}} 任务",XTo="{{delta}}pt vs 昨日",ZTo="样本不足({{n}})·暂不告警",JTo="有网关调用",eRo="近 7 天 cohort · 仅正常用户",tRo="退款率 {{rate}}%",nRo={kpis:"核心指标",alerts:"告警",health:"系统健康",payment:"支付健康",revenue:"营收与增长",trend:"趋势",alertSettings:"告警设置",leaderboard:"增长榜单"},aRo={title:"邀请排行",boardAria:"选择榜单",rangeAria:"选择时间范围",boards:{invites:"邀请人数",revenue:"充值额"},ranges:{today:"今天","3d":"近 3 天","7d":"近 7 天","30d":"近 30 天"},ofTotal:"共 {{total}} 人",countPair:"有效 {{valid}} / 共 {{total}}",empty:"该时间段内暂无邀请",failedLoad:"加载榜单失败",validHint:"有效 = 风控正常且绑定生效"},oRo={requests:"请求数",successRate:"支付成功率",activeUsers:"活跃用户",newSignups:"新注册",newSignupsHint:"仅统计正常用户(不含已标记)",billedCredit:"计费额度",errorRate:"错误率",avgLatency:"平均延迟",balance:"平台余额",successFailed:"成功 {{success}} · 失败 {{failed}}",vsPrevious:"环比 {{delta}}",vsYesterday:"环比昨日",noChange:"持平"},sRo={funnel:"进入 {{opened}} · 成功 {{paid}}"},rRo={today:"今日营收",trendTitle:"今日营收 vs 昨日",monthDetail:"{{count}} 笔成功充值 · 本月 {{mtd}}"},iRo={summary:"{{paid}} 已付 · {{failed}} 失败 · {{pending}} 待支付"},lRo={paidOfSignups:"{{paid}} 已首充 / {{signups}} 注册"},cRo={healthy:"正常",degraded:"性能下降",down:"中断",unknown:"未知"},dRo={critical:"严重",warning:"警告",info:"提示",ok:"正常"},uRo={operational:"运行正常",degraded:"性能下降",down:"服务中断",upstream:"上游渠道",gateway:"网关",billing:"计费",jobs:"任务队列",tierReason:{ok:"达标",watch:"关注:接近阈值",warning:"警告:已越警戒线",critical:"严重:已越严重线"}},mRo={title:"活跃告警",empty:"系统一切正常",activeCount:"{{count}} 条活跃告警",triggeredAt:"触发于 {{time}}",viewDetail:"查看详情",acknowledge:"确认",resolved:"已解决"},pRo={title:"告警设置",description:"为 6 类告警设定 warning / critical 双档阈值,指标越线时通知运营。严重等级由档位自动判定,无需单独配置。",enabled:"启用",warnThreshold:"Warning 阈值",critThreshold:"Critical 阈值",cooldown:"冷却(分钟)",cooldownHint:"同一告警两次通知之间的最短间隔,防止刷屏。",rateHint:"比率,取值 0–1(如 0.05 = 5%)。",countHint:"绝对数值,≥ 0。",directionHigher:"越高越坏:warning ≤ critical。",directionLower:"越低越坏:warning ≥ critical。",lastFired:"上次触发 {{time}}",neverFired:"从未触发",save:"保存全部",saving:"保存中",saved:"告警设置已保存",saveError:"保存失败",readonlyHint:"你没有写权限,只能查看。",noData:"暂无告警配置",errors:{directionHigher:"warning 阈值必须 ≤ critical 阈值",directionLower:"warning 阈值必须 ≥ critical 阈值",rateRange:"比率阈值必须在 0–1 之间",nonNegative:"阈值必须 ≥ 0",cooldownNonNegative:"冷却时间必须 ≥ 0",required:"阈值不能为空"},types:{payment_success_rate_low:"支付成功率过低",gateway_error_rate_high:"网关错误率过高",model_error_spike:"模型错误率突增",webhook_dead_letter:"Webhook 死信堆积",system_component_down:"系统组件中断",negative_balance_exposure:"负余额敞口"}},fRo={label:"时间范围",today:"今天",days7:"7 天",days30:"30 天"},gRo={title:PTo,description:_To,refresh:jTo,refreshing:NTo,lastUpdated:DTo,loading:MTo,failedLoad:ETo,empty:ITo,noTraffic:OTo,videoFailRate:LTo,avgLatency:UTo,errorTypes:BTo,noErrors:FTo,modelAnomalies:zTo,noAnomalies:qTo,components:HTo,req:VTo,abandonRate:KTo,refunds:GTo,chargebacks:WTo,firstChargeConversion:YTo,videoJobsDetail:QTo,vsYesterdayPt:XTo,lowSample:ZTo,activeUsersHint:JTo,conversionCohortHint:eRo,refundRate:tRo,sections:nRo,leaderboard:aRo,kpi:oRo,checkout:sRo,revenue:rRo,orders:iRo,conversion:lRo,componentStatus:cRo,severity:dRo,health:uRo,alerts:mRo,alertSettings:pRo,range:fRo},hRo="加载中...",yRo="需要管理员授权",vRo="你的账号无权访问此管理员页面。",bRo={loading:hRo,permissionRequired:yRo,permissionDescription:vRo},xRo="增长运营",$Ro="注册奖励、折扣码、邀请返利与 credit 发放。人工赠送在用户页处理。",wRo={mobileLabel:"增长模块",onboarding:"注册与新用户",discount:"折扣码",referral:"邀请返利",grants:"Credit 发放",topup:"充值返现",redeem:"兑换码",tasks:"任务墙"},kRo="优惠码批次",CRo="促销规则",SRo="数量",ARo="批次 code",TRo="创建中...",RRo="创建批次",PRo="已创建 {{count}} 个优惠码",_Ro="已创建 {{count}} 个优惠码",jRo="批次 {{code}}",NRo="已复制",DRo="全部复制",MRo="Credit 发放",ERo="来源",IRo="状态",ORo="暂无发放记录",LRo="优惠码兑换、注册奖励和人工赠送会显示在这里。",URo="时间",BRo="用户",FRo="金额",zRo="注册奖励",qRo="控制新用户注册后自动发放的 credit。关闭后,之后的新注册用户不会收到赠送。",HRo="启用注册送 credit",VRo="金额 (USD)",KRo="保存注册奖励",GRo="保存中...",WRo="当前金额 {{amount}}",YRo="邀请返利",QRo="配置邀请人和被邀请人的返利比例、冻结释放时间、封顶和账单页话术。",XRo="启用邀请返利",ZRo="返利档位",JRo="添加档位",ePo="返利对象",tPo="开始天数",nPo="结束天数",aPo="比例",oPo="标签",sPo="操作",rPo="邀请人",iPo="被邀请人",lPo="不设结束",cPo="删除档位",dPo="释放延迟(天)",uPo="单笔封顶(USD)",mPo="最低充值(USD,空=无)",pPo="返利过期天数(空=永不过期)",fPo="账单页倒计时 banner",gPo="Banner 标题",hPo="副标题",yPo="倒计时模式",vPo="统一截止时间",bPo="每个被邀请人的窗口",xPo="结束时间",$Po="保存邀请设置",wPo="v{{version}}",kPo="保存返利档位、释放延迟、封顶或过期天数会发布一个新版本。已建立的邀请关系永久沿用绑定时的版本,只有新注册才走新规则。暂停只影响新注册。",CPo="版本历史",SPo="版本",APo="状态",TPo="邀请关系",RPo="返利档位",PPo="发布于",_Po="退场于",jPo="当前",NPo="版本明细",DPo="邀请记录",MPo="返利记录",EPo="邀请人",IPo="被邀请人",OPo="绑定时间",LPo="角色",UPo="对手方",BPo="充值额",FPo="费率",zPo="金额",qPo="档位",HPo="释放时间",VPo="该版本下暂无邀请关系",KPo="该版本下暂无返利记录",GPo="加载更多",WPo="充值折扣码",YPo="折扣码降低用户结算时的实付金额,付款成功后到账充值全额。在此配置好折扣,再到下方生成码批次。",QPo="启用折扣码",XPo="折扣类型",ZPo="固定额抵扣(USD)",JPo="百分比折扣(%)",e_o="抵扣金额(USD)",t_o="折扣百分比(0-100)",n_o="保存折扣",a_o="默认低余额提醒",o_o="新用户默认在此阈值收到低余额邮件提醒。改这里只影响之后的新注册,不回溯已有钱包。",s_o="阈值 (USD)",r_o="保存阈值",i_o="当前 {{amount}}",l_o="按上方折扣规则生成折扣码。",c_o="当前生效:{{state}} · 抵 {{value}}",d_o="已启用",u_o="已停用",m_o="已发放的码",p_o="选一个批次查看每个码被谁兑换。",f_o="暂无批次",g_o="在上方生成一个批次,开始追踪兑换。",h_o="总数",y_o="已用",v_o="占用中",b_o="可用",x_o="{{code}}
843 的码",$_o="该批次暂无码",w_o="码",k_o="使用者",C_o="兑换时间",S_o="实付",A_o="折扣",T_o="创建码",R_o="共享码是一个码、多个用户各自最多兑换 N 次;唯一码批次是 N 个一次性码。",P_o="码类型",__o="单个共享码",j_o="唯一码批次",N_o="码内容(留空则随机生成)",D_o="例如 WELCOME100",M_o="总兑换次数(N)",E_o="每用户",I_o="过期时间(可选)",O_o="分组(可选)",L_o="创建共享码",U_o="共享码已创建",B_o="为此批次单独指定折扣(否则用上方规则)",F_o="共享码",z_o="一个码,多个用户。使用数按实付兑换计。",q_o="暂无共享码",H_o="已用 / 上限",V_o="每用户",K_o="过期",G_o="停用",W_o="停用此码?",Y_o="新的结算会立即被拦截。已进入结算的订单仍可完成。",Q_o="码已停用",X_o="CSV",Z_o="状态",J_o="邮箱",ejo={code:"码",discount:"折扣",redeemed:"已兑换",cap:"上限",perUser:"每用户",status:"状态",expiresAt:"过期时间",batch:"批次",createdAt:"创建时间",redeemedBy:"兑换者",redeemedAt:"兑换时间",paid:"实付",discountAmount:"折扣",email:"邮箱",credited:"到账",bonus:"加赠",paidAt:"付款时间"},tjo={title:"充值返现",description:"充得多送得多。每档可发通用赠额,或受限到某模型组的赠额。",enabled:"启用充值返现",saved:"充值返现已保存",tiers:"返现档位",tiersHint:"按充值额命中门槛最高的档。受限赠额仅适用于同步文本/图像调用,不含视频或异步图片任务。",noTiers:"暂无档位。添加一档开始返现。",min:"充值门槛 (USD)",rewardType:"奖励方式",bonus:"固定 (USD)",percent:"百分比 (%)",rewardBonus:"赠送金额 (USD)",rewardPercent:"充值额百分比 (%)",expiryDays:"有效期(天,留空=不过期)",noExpiry:"不过期",scope:"赠额作用域",scopeHint:"通用赠额任意模型可用;选模型组则赠额只能用于该组模型。",scopeGeneral:"通用(任意模型)",removeTier:"删除档位",addTier:"添加档位",antifraud:"防薅",minTopup:"起送充值额(USD,留空=不限)",maxBonusPerUser:"单用户返现上限(USD,留空=不限)",none:"不限",excludeRisky:"排除已标记/封禁用户",save:"保存充值返现",createScope:"新建受限模型组",createScopeDescription:"圈选受限赠额可消费的模型,然后在上方档位里引用该组。",scopeName:"组名",scopeNamePlaceholder:"高毛利模型",scopeModels:"模型",pickModels:"选择模型",nModels:"{{count}} 个模型",createScopeButton:"创建模型组",scopeCreated:"模型组已创建"},njo="生成兑换码",ajo="充值卡式兑换码。用户在账单页输入兑换码,面值直接到账(赠送余额,无需支付)。",ojo="批次名称(可选)",sjo="例如:Conf-2026 赠送",rjo="生成数量",ijo="单张面值(USD)",ljo="每账号在本批可兑数(留空 = 不限)",cjo="不限",djo="兑换截止时间(可选)",ujo="限定模型(可选)",mjo="通用余额(不限定)",pjo="已选 {{count}} 个模型",fjo="留空 = 通用余额;选中的模型共享同一笔专款额度。",gjo="兑换后额度有效期(天,留空 = 永久)",hjo="永久有效",yjo="{{n}} 天",vjo="限定模型",bjo="额度有效期",xjo="通用余额",$jo="生成兑换码",wjo="请立即保存。之后也可在批次列表用「明文导出」重新获取。",kjo="兑换码批次",Cjo="点击批次查看单张明细;「明文导出」可重新导出明文。",Sjo="暂无兑换码批次",Ajo="批次",Tjo="面值",Rjo="明文导出",Pjo="撤销这张已兑换的码?",_jo="从用户余额追回尚未消费的部分;已消费的部分无法收回。",jjo="撤销",Njo="已撤销 {{amount}}",Djo="已导出兑换码",Mjo="停用本批未兑换的码?",Ejo="所有尚未兑换的码将失效;已兑换的码不受影响。",Ijo="已停用 {{n}} 张码",Ojo="充值加赠 %",Ljo="加赠比例(%)",Ujo="赠金有效期(天,可选)",Bjo="留空 = 永不过期",Fjo={view:"对账",title:"码 ····{{code}} 的充值流水",email:"用户",credited:"到账",bonus:"加赠",summary:"{{count}} 笔 · {{users}} 人 · 实收 {{paid}} · 加赠 {{bonus}}",empty:"该码暂无充值流水"},zjo={configTitle:"任务墙配置",configDescription:"金额、开关与可提交平台。任务文案在翻译文件里,不在这里。改完下次加载即生效,不发版。",enabled:"启用任务墙",tasksTitle:"任务",taskKey:"任务 key",amount:"金额(USD)",hosts:"可提交平台",hostsHint:"不在此列表内的链接会在提交时直接被拒。",taskEnabled:"对用户可见",addTask:"新增任务",guardsTitle:"防薅门槛",dailyCap:"每日待审上限",dailyCapHint:"0 = 不限。
843Redis 挂了时 fail-open。",minAge:"账号最短注册天数",minAgeHint:"0 = 不设注册时长门槛。",saved:"任务墙已保存",queueTitle:"提交队列",queueCount:"共 {{count}} 条",empty:"暂无记录。",approve:"通过并发放",approved:"已通过,额度已发放",reject:"驳回",rejected:"已驳回",confirmReject:"确认驳回",reasonPlaceholder:"驳回理由是什么?",duplicate:"该链接另有 {{count}} 个账号提交过",status:{pending:"待审",approved:"已通过",rejected:"已驳回"}},qjo={title:xRo,description:$Ro,tabs:wRo,couponBatch:kRo,promotionRule:CRo,count:SRo,batchCode:ARo,creating:TRo,createBatch:RRo,codesCreated:PRo,codesCreated_plural:_Ro,batch:jRo,copied:NRo,copyAll:DRo,creditGrants:MRo,source:ERo,status:IRo,noGrants:ORo,noGrantsDescription:LRo,time:URo,user:BRo,amount:FRo,signupBonus:zRo,signupBonusDescription:qRo,signupBonusEnabled:HRo,signupBonusAmount:VRo,saveSignupBonus:KRo,saving:GRo,currentSignupBonus:WRo,referral:YRo,referralDescription:QRo,referralEnabled:XRo,referralRewardTiers:ZRo,addTier:JRo,tierRole:ePo,tierFromDay:tPo,tierUntilDay:nPo,tierPercent:aPo,tierLabel:oPo,tierAction:sPo,roleReferrer:rPo,roleReferee:iPo,noEndDay:lPo,removeTier:cPo,releaseDelayDays:dPo,referralCap:uPo,referralMinTopup:mPo,referralExpiryDays:pPo,bannerEnabled:fPo,bannerTitle:gPo,bannerSubtitle:hPo,bannerMode:yPo,bannerModeGlobal:vPo,bannerModeWindow:bPo,bannerEndsAt:xPo,saveReferral:$Po,referralVersion:wPo,referralPublishHint:kPo,referralVersionHistory:CPo,versionCol:SPo,versionStatus:APo,versionBindings:TPo,versionTiers:RPo,versionPublished:PPo,versionSuperseded:_Po,versionCurrent:jPo,versionDetail:NPo,versionBindingsSection:DPo,versionCashbackSection:MPo,colInviter:EPo,colInvitee:IPo,colBoundAt:OPo,colRole:LPo,colCounterparty:UPo,colTopup:BPo,colRate:FPo,colAmount:zPo,colTier:qPo,colReleasedAt:HPo,noBindings:VPo,noCashback:KPo,loadMore:GPo,discountRule:WPo,discountRuleDescription:YPo,discountEnabled:QPo,discountType:XPo,discountFixed:ZPo,discountPercent:JPo,discountValueFixed:e_o,discountValuePercent:t_o,saveDiscount:n_o,defaultLowBalanceThreshold:a_o,defaultLowBalanceThresholdDescription:o_o,defaultLowBalanceThresholdAmount:s_o,saveDefaultLowBalanceThreshold:r_o,currentDefaultLowBalanceThreshold:i_o,couponBatchDescription:l_o,discountEffective:c_o,stateEnabled:d_o,stateDisabled:u_o,couponTrace:m_o,couponTraceDescription:p_o,noBatches:f_o,noBatchesDescription:g_o,batchTotal:h_o,batchRedeemed:y_o,batchReserved:v_o,batchActive:b_o,codesInBatch:x_o,noCodes:$_o,code:w_o,redeemedBy:k_o,redeemedAt:C_o,paid:S_o,discount:A_o,createIssuance:T_o,createIssuanceDescription:R_o,formLabel:P_o,formShared:__o,formUniqueBatch:j_o,sharedCodeText:N_o,sharedCodeRandomHint:D_o,sharedMaxRedemptions:M_o,sharedPerUser:E_o,expiresAt:I_o,batchCodeOptional:O_o,createSharedCode:L_o,sharedCodeCreated:U_o,batchOwnDiscount:B_o,sharedCodesList:F_o,sharedCodesListDescription:z_o,noSharedCodes:q_o,colRedeemedTotal:H_o,colPerUser:V_o,colExpiry:K_o,disableCode:G_o,disableCodeConfirmTitle:W_o,disableCodeConfirmMessage:Y_o,codeDisabled:Q_o,exportCsv:X_o,statusFilter:Z_o,filterByEmail:J_o,csv:ejo,topup:tjo,redeemCreate:njo,redeemCreateDescription:ajo,redeemBatchName:ojo,redeemBatchNameHint:sjo,redeemCount:rjo,redeemFaceValue:ijo,redeemPerUserLimit:ljo,redeemUnlimited:cjo,redeemExpiresAt:djo,redeemModels:ujo,redeemModelsAll:mjo,redeemModelsCount:pjo,redeemModelsHint:fjo,redeemValidityDays:gjo,redeemValidityForever:hjo,redeemValidityDaysValue:yjo,redeemColModels:vjo,redeemColValidity:bjo,redeemGeneralBalance:xjo,redeemCreateBtn:$jo,redeemRevealHint:wjo,redeemBatches:kjo,redeemBatchesDescription:Cjo,redeemNoBatches:Sjo,redeemBatchCol:Ajo,redeemFace:Tjo,redeemReveal:Rjo,redeemReverseTitle:Pjo,redeemReverseMessage:_jo,redeemReverseBtn:jjo,redeemReversed:Njo,redeemRevealed:Djo,redeemDisableBatchTitle:Mjo,redeemDisableBatchMessage:Ejo,redeemBatchDisabled:Ijo,discountTypeBonusPercent:Ojo,discountValueBonusPercent:Ljo,bonusExpiryDays:Ujo,bonusExpiryDaysHint:Bjo,sharedPayments:Fjo,tasks:zjo},Hjo="模型目录",Vjo="模型目录:创建、编辑、发布。",Kjo={label:"展示徽章",hint:"热点 / 福利 标签,显示在用户侧的模型和价格页。",hot:"热点",benefit:"福利"},Gjo="新增模型",Wjo="编辑 {{model}}",Yjo="编辑模型",Qjo="新增模型",Xjo="关闭",Zjo="基本与内容一起保存;定价、状态改动立即生效。",Jjo="先创建模型草稿。定价与发布在草稿创建后再设。",e2o={basics:"基础",basicsHint:"身份、上游映射、协议。",content:"内容与展示",contentHint:"多语言摘要 / 描述与排序。",config:"配置",configHint:"身份、上游路由、类型与能力。",protocols:"协议",protocolsHint:"这个模型对外提供哪些 API 协议。"},t2o="提供商标识",n2o="选择已知提供商,或手填自定义标识。",a2o="模型标识",o2o="别名",s2o="逗号分隔的查找别名,用于导入与审阅。",r2o="上游来源(客户可见)",i2o="客户在模型/日志看到的来源标签。留空 = 厂商。同模型多来源多价时用它做区分。",l2o="平台",c2o="— 选择平台 —",d2o="上游模型 i
843d(可选;下拉预填或手填)",u2o="从上游选择...",m2o="上游不可用",p2o="协议",f2o="输入价格 / 1M (USD)",g2o="输出价格 / 1M (USD)",h2o="英文摘要",y2o="预览",v2o="(无摘要)",b2o="无协议",x2o="取消",$2o="保存",w2o="创建草稿",k2o={basic:"身份与路由",pricing:"定价",content:"内容与展示"},C2o={config:"① 配置",protocols:"② 协议",pricing:"③ 价格",display:"内容与展示",back:"上一步",next:"下一步",create:"创建模型"},S2o="上下文长度(token)",A2o="模型能接收的最大输入。不确定可留空。",T2o="最大输出 token",R2o="模型单次回复能生成的最大 token 数。",P2o={status:"状态",visibility:"可见性",hint:"生命周期改动立即生效(带确认),独立于保存。",confirmStatus:"将状态设为「{{status}}」?立即生效。",confirmVisibility:"将可见性设为「{{visibility}}」?立即生效。",statusChanged:"状态已设为 {{status}}。",visibilityChanged:"可见性已设为 {{visibility}}。",publishBlocked:"无法发布:缺核心因子价,请先在「定价」Tab 设置。",statusOption:{draft:"草稿",published:"已发布",deprecated:"已弃用",archived:"已归档"},visibilityOption:{public:"公开",hidden:"隐藏"},availability:"可用性",confirmAvailable:"重新标记为可用?立即生效。",confirmUnavailable:"标记为暂时不可用?仍保留在列表中(置灰)但网关调用会被拒绝。",availableChanged:"已标记为可用。",unavailableChanged:"已标记为暂时不可用。",availabilityOption:{available:"可用",unavailable:"暂时不可用"},audience:"开放对象",audienceOption:{everyone:"全部用户",paid_only:"仅限已充值"},confirmPaidOnly:"把该模型限定为仅已充值账户可用?模型仍照常上架露出,未充值用户调用会收到 403 并被引导去充值。",confirmEveryone:"把该模型对全部账户开放?立即生效。",paidOnlyChanged:"已限定为仅已充值账户可用。",everyoneChanged:"已对全部账户开放。"},_2o="输入模态",j2o="声明模型可接收的输入,包括图像、音频、视频和文件。",N2o="输出模态",D2o="直接喂发布闸:含 text 需 text 输入/输出价,含 image/video/embeddings 需对应因子。",M2o="图片计费口径",E2o="视频计费口径",I2o="上游对该输出按什么维度计费。发布前必须声明 —— 发布闸会要求对应的价格因子。",O2o="— 选择计费口径 —",L2o="按 token(image_output_token)",U2o="按张(per_call_image)",B2o="按秒(video_per_second)",F2o="按次(video_per_call)",z2o="展示排序",q2o="必须是非负整数。",H2o="编辑语言",V2o="上游发布日期",K2o="摘要(当前语言)",G2o="描述(Markdown,当前语言)",W2o={provider:"提供商",status:"状态",visibility:"可见性",allProviders:"全部提供商",allStatuses:"全部状态",allVisibility:"全部可见性",search:"搜索模型标识",mobileTitle:"筛选"},Y2o={label:"模型",empty:"暂无模型",model:"模型",provider:"提供商",source:"上游来源",status:"状态",visibility:"可见性",action:"操作",edit:"编辑",setStatus:"设置 {{model}} 的状态",setVisibility:"设置 {{model}} 的可见性",confirmSet:'将 {{model}} 的 {{field}} 设置为 "{{value}}"?',sub2api:"Sub2API 映射",textPrice:"价格(输入/输出 $/M)",priceByTokens:"{{kind}} · 按 token",imageOutput:"图片输出",officialPrice:"官方",saved:"省 {{pct}}%"},Q2o={invalidPrice:"价格必须是 >=0 的数字,或留空。",highRisk:"改动会影响线上 gateway 解析(可能让用户 404)。确认继续?",stale:"模型已被他人修改,请关闭重新打开后再改。"},X2o={savesImmediately:"定价改动立即生效,不受底部保存控制。",createPriceFailed:"模型已创建,但部分定价未写入,请在「价格」页补。",factors:{title:"定价因子",hint:"每一行是一个原子计费单元(文本输入/输出、缓存、图片等)。生效中的行从其生效日期起决定计费;历史行记录过往价格。",liveBanner:"这里的改动立即生效并写入价格历史 —— 不受底部保存按钮控制。",draftHint:"请先保存模型草稿;模型创建后才能在此行内编辑定价因子。",addFactor:"新增因子",changePrice:"改价",expire:"失效",confirmExpire:"让这一行因子失效?它会立即停止生效并移入历史。",changeSaved:"因子价格已更新。",expired:"因子已失效。",factor:"因子",tier:"档位",tierNone:"(无档位)",unit:"单位",ourPrice:"我方价格 (USD)",officialPrice
843:"官方价 (USD)",officialAbbr:"官方",source:"来源(可选 URL 或备注,≤128 字符)",historyLabel:"历史({{count}})",emptyTitle:"暂无生效中的因子价格",empty:"点击「新增因子」来设置。",loadError:"无法加载定价因子",draftEditorHint:"现在就填价,或先留空、建好模型后再加。",draftEmpty:"还没添加价格。",remove:"删除",factorOption:{text_input:"文本输入 (LLM)",text_output:"文本输出 (LLM)",cache_read:"缓存读取",cache_write_5m:"缓存写入 (5m TTL)",cache_write_1h:"缓存写入 (1h TTL)",image_input_token:"图片输入 token",image_output_token:"图片输出 token",per_call_image:"图片(按次)",video_per_call:"视频(按次)",video_per_second:"视频(按秒)",web_search_call:"联网搜索调用"},unitOption:{per_1m_tokens:"每 1M tokens",per_image:"每张",per_call:"每次",per_second:"每秒"},conditions:"条件 JSON(可选)"},discount:{toggle:"按折扣率改价",hint:"把每个因子设为官方价的某个比例(0.5 = 5 折)。免费因子(我方价为 0)和无官方价的因子会跳过。",rate:"折扣率",preview:"预览",apply:"应用",allowMarkup:"允许加价(折扣率大于 1 即高于官方价)",noFactors:"没有可改价的生效因子。",confirmTitle:"对所有因子应用折扣?",confirmBody:"将 {{count}} 个因子改为官方价的 {{rate}} 倍。已版本化——不影响历史计费。",applied:"已按官方价 {{rate}} 倍改价 {{count}} 个因子。",stale:"预览后价格已变,请重新预览。",skipReason:{free_factor_our_zero:"免费因子(我方价为 0)——保持不变",no_official:"无官方价——无法计算",official_zero:"官方价为 0——已跳过"}}},Z2o="放弃未保存的更改?",J2o={title:Hjo,description:Vjo,badges:Kjo,addModel:Gjo,editModel:Wjo,editModelShort:Yjo,newModel:Qjo,close:Xjo,sheetDescription:Zjo,sheetDescriptionNew:Jjo,sections:e2o,providerSlug:t2o,providerSlugHint:n2o,modelSlug:a2o,aliases:o2o,aliasesHint:s2o,source:r2o,sourceHint:i2o,platform:l2o,platformUnset:c2o,sub2apiModelId:d2o,chooseSub2api:u2o,upstreamUnavailable:m2o,protocols:p2o,inputPrice:f2o,outputPrice:g2o,enSummary:h2o,preview:y2o,noSummary:v2o,noProtocol:b2o,cancel:x2o,save:$2o,createDraft:w2o,tabs:k2o,steps:C2o,contextWindow:S2o,contextWindowHint:A2o,maxOutputTokens:T2o,maxOutputTokensHint:R2o,lifecycle:P2o,inputModalities:_2o,inputModalitiesHint:j2o,outputModalities:N2o,outputModalitiesHint:D2o,billingStyleImage:M2o,billingStyleVideo:E2o,billingStyleHint:I2o,billingStyleUnset:O2o,billingStyleToken:L2o,billingStylePerImage:U2o,billingStylePerSecond:B2o,billingStylePerCall:F2o,displayOrder:z2o,displayOrderInvalid:q2o,contentLocale:H2o,upstreamReleaseAt:V2o,summary:K2o,descriptionField:G2o,filters:W2o,table:Y2o,errors:Q2o,pricing:X2o,discardChanges:Z2o},eNo="速率限制",tNo="按 scope 管理速率限制策略。",nNo="速率限制策略",aNo="暂无策略",oNo="Code",sNo="名称",rNo="Scope",iNo="状态",lNo="限制",cNo="无限制",dNo={auth:"Auth",console:"Console",api_gateway:"API gateway",ops:"Ops",global:"Global"},uNo={active:"启用",disabled:"停用",archived:"归档"},mNo={rpm_per_key:"RPM / key",rpm_per_user:"RPM / user",concurrent_streams_per_key:"并发 / key",concurrent_streams_per_user:"并发 / user"},pNo="新建策略",fNo="编辑",gNo="操作",hNo="新建速率限制策略",yNo="编辑 {{name}}",vNo="按 API key 和按用户生效的并发与 RPM 限额。到用户页给用户分配策略。",bNo="删除策略「{{name}}」?挂在其上的 key 与用户将回落默认策略。",xNo="策略已删除。",$No={identity:"标识",classification:"分类",description:"描述",codeImmutable:"Code 创建后不可更改。",limitsHint:"留空则该项使用平台默认值。",default:"默认",invalidLimit:"{{field}} 必须为正整数。",saved:"策略已保存。",cancel:"取消",save:"保存",create:"创建策略"},wNo={title:eNo,description:tNo,label:nNo,empty:aNo,code:oNo,name:sNo,scope:rNo,status:iNo,limits:lNo,noLimits:cNo,scopes:dNo,statuses:uNo,limitNames:mNo,add:pNo,edit:fNo,delete:"删除",action:gNo,newTitle:hNo,editTitle:yNo,formDescription:vNo,confirmDelete:bNo,deleted:xNo,form:$No},kNo="团队成员",CNo="谁能登录后台。仅 owner 可操作。",SNo="管理员",ANo="暂无管理员",TNo="邮箱",RNo="名称",PNo="角色",_No="状态",jNo="最后登录",NNo="操作",DNo="添加管理员",MNo="添加管理员",ENo="该邮箱将立即成为管理员并用它登录——管理员身份按邮箱匹配,暂时无需已注册账号。",INo="邮箱",ONo="[email protected]",LNo="名称",UNo="显示名称",BNo="角色",FNo="管理员已添加。",zNo="修改角色",qNo="角色已更新。",HNo="停用",VNo="启用",KNo="状态已更新。",GNo="移除",WNo="管理员已移除。",YNo="移除 {{email}} 的管理员身份?对方将立即失去后台访问权限。",QNo="ä½ ",XNo="从未",ZNo={owner:"Owner",admin:"Admin",
843support:"支持"},JNo={active:"启用",suspended:"停用"},eDo={title:kNo,description:CNo,label:SNo,empty:ANo,email:TNo,name:RNo,role:PNo,status:_No,lastLogin:jNo,action:NNo,add:DNo,newTitle:MNo,formDescription:ENo,emailLabel:INo,emailPlaceholder:ONo,nameLabel:LNo,namePlaceholder:UNo,roleLabel:BNo,added:FNo,changeRole:zNo,roleChanged:qNo,suspend:HNo,activate:VNo,statusChanged:KNo,remove:GNo,removed:WNo,confirmRemove:YNo,self:QNo,never:XNo,roles:ZNo,statuses:JNo},tDo="上游渠道",nDo="只读上游配置镜像,以及 OneHop 受控路由 key pools。",aDo="打开上游管理后台",oDo="上游标签页",sDo={overview:"概览",keyPools:"Key pools",groups:"分组",channels:"渠道",accounts:"账号"},rDo={todayRequests:"今日请求",total:"总计 {{value}}",upstreamCostToday:"今日上游消耗",providerAccounts:"供应商账号",health:"健康状态",stale:"已过期",checkPools:"检查 pools",online:"在线"},iDo={upstreamStatsFailed:"上游统计加载失败",retry:"重试",configAuditFailed:"配置审计失败",keyPoolsLoadFailed:"Key pools 加载失败",createKeyPoolFailed:"创建 key pool 失败",keyPoolTestFailed:"Key pool 测试失败",keyPoolRotateFailed:"Key pool 轮换失败",failedLoad:"{{title}} 加载失败"},lDo={title:"配置审计",description:"对比 OneHop key pools、已发布模型路由与上游路由。供应商分组、渠道、定价和账号在这里保持只读。",running:"运行中...",run:"运行审计",poolsChecked:"已检查 pools",modelAudit:"模型审计",checkedAt:"检查时间",needsReview:"需要复核",done:"完成",ok:"正常",upstreamCoverage:"上游可服务覆盖",coverageUnchecked:"账号读不到",coverageOnlyAccount:"仅 {{accounts}}",coverageNoAccount:"没有可调度账号认这个上游名"},cDo={title:"拓扑",keyPools:"Key pools",activeGroups:"活跃分组",activeChannels:"活跃渠道",accounts:"账号",editingBoundaryTitle:"编辑边界",editingBoundaryDescription:"上游管理后台提供分组、渠道、定价规则、供应商账号、监控和系统设置的深度编辑流程。OneHop 只镜像运营读取路径,并管理内部 key pools;会改变供应商路由的编辑仍在原管理后台中完成。"},dDo={title:"OneHop 内部 key pools",description:"Pools 决定 OneHop 在不同协议和模型模式下使用哪把上游内部 key。完整 secret 永不显示。",poolCode:"Pool 代码",poolName:"Pool 名称",defaultPool:"默认 pool",notDefault:"非默认",plaintextKey:"明文 key",create:"创建",label:"供应商路由 key pools",pool:"Pool",protocols:"协议",models:"模型",routingGroup:"路由分组",status:"状态",health:"健康状态",key:"Key",lastCheck:"最后检查",action:"操作",priority:"优先级 {{value}}",default:"默认",secret:"secret",hidden:"hidden",test:"测试",rotate:"轮换",empty:"暂无 key pools",emptyDescription:"先创建内部 pool,再通过供应商路由承载生产流量。",newPlaintextKey:"新的明文 key",confirmRotate:"确认轮换",editProtocols:"编辑协议",editProtocolsTitle:"编辑协议(替换)",confirmEditProtocols:"保存协议",cancelEditProtocols:"取消",forceEditProtocols:"强制保存(覆盖路由检查)"},uDo={editUpstreamConfig:"编辑上游配置",groupsTitle:"分组",groupsDescription:"来自上游配置的路由分组。OneHop 将其作为 key-pool 绑定和审计决策的事实来源。",groupsLabel:"路由分组",groupsEmpty:"暂无分组",groupsEmptyDescription:"上游配置未返回任何分组。",channelsTitle:"渠道",channelsDescription:"来自上游配置的供应商渠道配置,包括模型映射和定价规则覆盖。",channelsLabel:"供应商路由渠道",channelsEmpty:"暂无渠道",channelsEmptyDescription:"上游配置未返回任何渠道。",accountsTitle:"账号",accountsDescription:"供应商账号在 OneHop 中已脱敏。凭证编辑和 OAuth 刷新流程请使用上游管理后台。",accountsLabel:"供应商路由账号",accountsEmpty:"暂无账号",accountsEmptyDescription:"上游配置未返回任何供应商账号。"},mDo={group:"分组",platform:"平台",rate:"倍率",rpm:"RPM",accounts:"账号",limits:"限制",status:"状态",updated:"更新时间",channel:"渠道",billingSource:"计费来源",mappings:"映射",pricing:"定价",account:"账号",groups:"分组",baseUrl:"Base URL",capacity:"容量",lastUsed:"最后使用"},pDo={noDescription:"无描述",unlimited:"不限",schedulable:"可调度",notSchedulable:"不可调度",loading:"加载中...",noPricingRules:"无定价规则",modelsCount:"{{count}} 个模型",none:"无",channelMapped:"渠道映射",requestedModel:"请求模型",upstreamModel:"上游模型",priority:"优先级",unknown:"未知"},fDo={serving:{label:"服务状态",serving:"正常",rate_limited:"限流中",overloaded:"过载",expired:"已过期",paused:"暂停调度",error:"错误",disabled:"已停用"},quota:{label:"额度占用(今日)",noLimit:"无限额",spend:"{{spend}} / {{limit}}"},accounts:{breakdown:"正常 {{normal}} · 异常 {{error}} · 限流 {{ratelimit}} · 过载 {{overload}}"},freshness:{updated:"{{ago}}前更新",never:"从未"},pools:{lastError:"最近错误",resync:"重新同步"},audit:{poolFindings:"Pool 问题",clean:"正常",findingsCount:"{{count}} 项"},tokensToday:"今日 {{count}} tok"},gDo={title:tDo,description:nDo,openUpstreamAdmin:aDo,tabsLabel:oDo,tabs:sDo,metrics:rDo,errors:iDo,audit:lDo,topology:cDo,pools:dDo,readonly:uDo,table:mDo,common:pDo,ops:fDo},hDo="用量统计",yDo="跨用户查看请求计量、消耗、token、延迟和路由信号。",vDo="刷新",bDo={label:"自动刷新",off:"关闭"},xDo="导出中",$Do="导出 CSV",wDo="用量记录导出失败",kDo="请求",CDo="{{count}} 个成功",SDo="用户",ADo="匹配当前筛选条件",TDo="消耗 credit",RDo="{{cost}} 消耗",PDo="Tokens",_Do="平均 {{duration}}",jDo="用户 email",NDo="按 email 搜索",DDo="模型",MDo="按模型搜索",EDo="状态",IDo="协议",ODo="行数",LDo="重置",UDo="运营用量记录",BDo="暂无用量记录",FDo="用户",zDo="Endpoint",qDo="总计 {{count}}",HDo="输入 {{input}} / 输出 {{output}}",VDo="上游",KDo="计费",GDo="延迟",WDo="开始时间",YDo="第 {{page}} 页 · 显示 {{shown}} 条,共 {{total}} 条匹配记录",QDo="上一页",XDo="下一页",ZDo="本页 {{count}} 行",JDo="时间显示为",eMo="{{count}} 个 API keys",tMo="消耗快照",nMo="来自 OneHop 计费快照",aMo="用户消费",oMo="用户消耗总额",sMo="平均延迟",rMo="成功流式请求",iMo="平均耗时",lMo="已结算请求",cMo="范围",dMo={today:"今天",days7:"7 天",days30:"30 天",all:"全部时间"},uMo="指标",mMo={requests:"请求",tokens:"Tokens",cost:"消耗"},pMo="分布",fMo={model:"模型",requestedModel:"请求模型",upstreamModel:"上游模型",apiKey:"API key",user:"用户",endpoint:"Endpoint",channel:"渠道",group:"分组",stream
843:"请求方式(流式/非流式)"},gMo="用量趋势",hMo="按模型用量",yMo="按小时",vMo="按天",bMo="热门 endpoints",xMo="热门维度行",$Mo="请求日志",wMo="API key",kMo="类型",CMo="计费",SMo="渠道",AMo="分组",TMo="请求 ID",RMo="req_ / usg_ / upstream",PMo="全部类型",_Mo="全部计费",jMo={user:"用户",time:"时间",model:"模型",tokens:"Tokens",cost:"消耗",routing:"路由",latency:"延迟(首字)",duration:"耗时",status:"状态"},NMo="用量加载失败",DMo="正在加载用量记录",MMo="换一组筛选条件试试。",EMo="暂无趋势数据",IMo="暂无分布数据",OMo="暂无行",LMo="消耗明细",UMo={upstreamList:"上游标价",discount:"折扣",sub2apiActual:"记录消耗",groupChannelMultiplier:"分组/渠道倍率",accountMultiplier:"账号倍率",sub2apiFinalCharge:"最终消耗",billedFactors:"用户消耗"},BMo="请求详情",FMo="打开请求详情",zMo="未知用户",qMo="加载中...",HMo="记录消耗",VMo="分组倍率",KMo="账号倍率",GMo="身份",WMo="用户 ID",YMo="Key 后缀",QMo={hopIdentity:"跳次身份",logicalUsageId:"逻辑用量 ID",logicalRequestedModel:"逻辑请求模型",logicalModel:"逻辑模型",actualRequestedModel:"实际请求模型",actualModel:"实际模型",fallbackHop:"回退跳数",userVisibility:"用户可见性",visible:"可见",hidden:"隐藏",supersedesUsageRecord:"替代的用量记录",pricingAudit:"连续性计费审计",mode:"模式",policyVersion:"策略版本",sourceModel:"源模型",targetModel:"目标模型",requestedRawQuote:"请求模型原始报价",requestedQuote:"请求模型报价",actualPricingStatus:"实际模型报价状态",actualPricingAvailable:"可用",actualPricingUnavailable:"不可用",actualQuote:"实际模型报价",chargedQuote:"最终计费报价",variance:"报价差额",actualPricingError:"实际模型报价错误"},XMo="输入",ZMo="输出",JMo="缓存读取",eEo="缓存写入",tEo="原始元数据",nEo="请求",aEo="用量 ID",oEo="OneHop ID",sEo="Sub2API ID",rEo="Sub2API 日志",iEo="路由",lEo="映射",cEo="性能",dEo="首 token",uEo="总耗时",mEo="错误",pEo="代码",fEo="信息",gEo={time:"时间",user:"用户",apiKey:"API key",model:"模型",logicalUsageId:"逻辑用量 ID",logicalRequestedModel:"逻辑请求模型",logicalModel:"逻辑模型",actualRequestedModel:"实际请求模型",actualModel:"实际模型",fallbackHop:"回退跳数",userVisible:"用户可见",supersedesUsageRecord:"替代的用量记录",upstreamModel:"上游模型",protocol:"协议",endpoint:"Endpoint",type:"类型",status:"状态",inputTokens:"输入 tokens",outputTokens:"输出 tokens",cacheRead:"缓存读取",cacheWrite:"缓存写入",sub2apiActual:"记录消耗",sub2apiCharge:"消耗",continuityMode:"连续性模式",continuityPolicyVersion:"连续性策略版本",continuitySourceModel:"连续性源模型",continuityTargetModel:"连续性目标模型",continuityRequestedRawQuote:"连续性请求模型原始报价",continuityRequestedQuote:"连续性请求模型报价",continuityActualPricingStatus:"连续性实际模型报价状态",continuityActualQuote:"连续性实际模型报价",continuityChargedQuote:"连续性最终计费报价",continuityVariance:"连续性报价差额",continuityActualPricingError:"连续性实际模型报价错误",firstTokenMs:"首字毫秒",durationMs:"耗时毫秒",channel:"渠道",group:"分组",onehopRequestId:"OneHop 请求 ID",sub2apiRequestId:"Sub2API 请求 ID"},hEo={analytics:"用量分析",logs:"请求日志"},yEo={label:"图表视图",stacked:"随时间",ranking:"排名"},vEo={failedOnly:"仅失败",slowOnly:"首字 > {{sec}}s"},bEo="更多筛选",xEo="首字慢阈值 (ms)",$Eo="延迟=首字时间(TTFT)、耗时=总时长。慢筛按首字延迟,仅覆盖已采集首字的成功请求(更早或失败的请求显示 —)。",wEo="暂无模型用量",kEo="暂无请求 —— 有流量后用量会显示在这里。",CEo="正在查看",SEo={title:hDo,description:yDo,refresh:vDo,autoRefresh:bDo,exporting:xDo,exportCsv:$Do,exportError:wDo,requests:kDo,successful:CDo,users:SDo,matchedFilters:ADo,billedCredit:TDo,upstreamCost:RDo,tokens:PDo,avgDuration:_Do,userEmail:jDo,searchEmail:NDo,model:DDo,searchModel:MDo,status:EDo,protocol:IDo,rows:ODo,reset:LDo,label:UDo,empty:BDo,user:FDo,endpoint:zDo,totalTokens:qDo,inOut:HDo,upstream:VDo,billed:KDo,latency:GDo,started:WDo,pageSummary:YDo,previous:QDo,next:XDo,rowsOnPage:ZDo,timesShownIn:JDo,apiKeys:eMo,sub2apiCharge:tMo,sub2apiChargeSource:nMo,userSpend:aMo,userSpendSource:oMo,avgLatency:sMo,avgLatencySub:rMo,avgTotalDuration:iMo,settledRequests:lMo,range:cMo,ranges:dMo,metric:uMo,metrics:mMo,distribution:pMo,breakdown:fMo,usageTrend:gMo,stackedByModel:hMo,hourly:yMo,daily:vMo,topEndpoints:bMo,topDimensionRows:xMo,requestLogs:$Mo,apiKey:wMo,type:kMo,billing:CMo,channel:SMo,group:AMo,requestId:TMo,requestIdPlaceholder:RMo,allTypes:PMo,allBilling:_Mo,table:jMo,failedLoad:NMo,loadingRecords:DMo,tryDifferentFilters:MMo,noTrendData:EMo,noDistributionData:IMo,noRows:OMo,costBreakdown:LMo,adminCost:UMo,requestDetail:BMo,openRequestDetail:FMo,unknownUser:zMo,loading:qMo,sub2apiActual:HMo,groupMultiplier:VMo,accountMultiplier:KMo,identity:GMo,userId:WMo,keySuffix:YMo,continuity:QMo,input
843:XMo,output:ZMo,cacheRead:JMo,cacheWrite:eEo,rawMetadata:tEo,request:nEo,usageId:aEo,onehopId:oEo,sub2apiId:sEo,sub2apiLog:rEo,routing:iEo,mapping:lEo,performance:cEo,firstToken:dEo,total:uEo,error:mEo,code:pEo,message:fEo,csv:gEo,tabs:hEo,modelView:yEo,chip:vEo,moreFilters:bEo,slowThreshold:xEo,latencyHint:$Eo,noModelUsage:wEo,noTrendToday:kEo,viewing:CEo},AEo="搜索",TEo="按用户 ID、邮箱或名称搜索",REo="用户",PEo="返回用户列表",_Eo="你没有查看此板块的权限。",jEo="退款",NEo="退款中...",DEo="为 {{email}} 发起 {{amount}} 退款?退款为异步处理,余额稍后由 worker 回冲。",MEo="退款已发起。",EEo={overview:"概览",network:"网络 & 设备",recentCalls:"最近调用",apiKeys:"API Key",payments:"付款",refunds:"退款",subscription:"订阅",referrals:"邀请",rewards:"奖励",audit:"审计"},IEo={title:"免费 token 额度",paused:"该账号已暂停发放免费额度(风控审查)。",daily:"每日",weekly:"每周",tokensUnit:"tokens",remaining:"今日剩余 {{value}} tokens"},OEo={title:"免费模型额度(今日)",tokens:"tokens",remaining:"今日剩余 {{value}} tokens",unlimited:"免费额度:不限(闸未开启)",eligibilityLabel:"免费层资格",eligible:"享免费层",ineligible:"无免费资格(同设备已用)"},LEo={phase2:"订阅功能将在 Phase 2 上线。"},UEo={empty:"暂无付款"},BEo={empty:"暂无退款"},FEo={empty:"暂无积分桶",note:"积分桶展示当前余额库存。发放与退款历史见审计时间线,邀请返现见邀请板块。"},zEo={totalEarned:"累计获得",frozenEarned:"冻结中",refereeCount:"被邀请人",activeCount:"活跃",role:"角色",counterparty:"对手方",empty:"暂无邀请记录"},qEo={empty:"暂无审计记录"},HEo={amount:"金额",credit:"到账积分",status:"状态",provider:"渠道",createdAt:"创建于",type:"类型",originalTx:"原交易",remaining:"剩余",initial:"初始",expiresAt:"过期",event:"事件",action:"动作",severity:"级别"},VEo={ipLocationTitle:"IP & 位置",deviceBrowserTitle:"设备 & 浏览器",stripeTitle:"Stripe",signupIp:"注册 IP",signupCountry:"注册国家",lastLoginIp:"最后登录 IP",ipDifferent:"与注册 IP 不同",sameIpAccounts_one:"{{count}} 个同注册 IP 账号",sameIpAccounts_other:"{{count}} 个同注册 IP 账号",sameDeviceAccounts_one:"{{count}} 个同设备账号",sameDeviceAccounts_other:"{{count}} 个同设备账号",deviceFingerprint:"设备指纹",freeTierEligible:"免费层资格",firstDevice:"首号",notFirstDevice:"非首号 · 同设备已注册,不享免费福利",browser:"浏览器",os:"操作系统",deviceType:"设备类型",acceptLanguage:"Accept-Language",stripeCustomerId:"Stripe Customer ID",viewOnIpinfo:"在 ipinfo.io 查看详情"},KEo={empty:"暂无调用记录",viewAll:"查看全部日志 →",colStatus:"状态",colTime:"时间",colModel:"模型",colProtocol:"协议",colDuration:"耗时",colCost:"费用",colFreeDiscount:"免费抵扣"},GEo={empty:"暂无 API Key",colName:"名称",colKey:"Key",colStatus:"状态",colPolicy:"限流策略",colLastUsed:"最近使用",colCreated:"创建时间",colExpires:"过期",colSpend:"消费",spendTitle:"消费明细",spend30d:"近 30 天",spendAllTime:"累计",spendRequests:"请求数"},WEo="复制",YEo="已复制",QEo={search:AEo,searchPlaceholder:TEo,title:REo,backToList:PEo,noBlockPerm:_Eo,refund:jEo,refunding:NEo,refundConfirm:DEo,refundInitiated:MEo,nav:EEo,freeTokens:IEo,freeQuota:OEo,subscription:LEo,payments:UEo,refunds:BEo,rewards:FEo,referrals:zEo,audit:qEo,col:HEo,network:VEo,recentCalls:KEo,apiKeys:GEo,copy:WEo,copied:YEo},XEo="用户管理",ZEo="搜索用户、发放 credit、暂停账号。",JEo="Email",eIo="按 email 搜索",tIo="账户状态",nIo={active:"账户正常,可登录与调用",suspended:"停用,网关拒绝所有请求(401)"},aIo="风险",oIo={normal:"享受全部免费福利",watchlisted:"断每日免费 token + 不发注册金;仍可充值 / 调用网关",blocked:"网关全拒(401),完全封禁"},sIo="用户",rIo="未找到用户",iIo="国家",lIo="最后登录",cIo="操作",dIo="查看",uIo="已删除",mIo="设置 {{email}} 的状态",pIo='将 {{email}} 设置为 "{{status}}"?',fIo="发放 credit",gIo="给 {{email}} 添加奖励 credit。会记录到账本。",hIo="金额 (USD)",yIo="例如 5",vIo="原因(可选)",bIo="例如停机补偿",xIo="性质",$Io="赠送额度",wIo="白送的。不计入已充值。",kIo="线下收款",CIo="真收到的钱。计入已充值,解锁付费专属模型与限流档位。",SIo="凭证号",AIo="例如 银行流水 20260907-001",TIo="记录收款",RIo="记录中...",PIo="取消",_Io="发放中...",jIo="发放",NIo="向 {{email}} 发放 ${{amount}}? 这是大额操作。",DIo="无显示名称",MIo="加载中...",EIo="分数 {{score}}",IIo="Email 已验证",OIo="是",LIo="否",UIo="注册",BIo="注册方式",FIo="最近登录方式",zIo="注册奖励",qIo="新手引导",HIo="语言 / 时区",VIo="加价比例",KI
843o="速率限制策略",GIo="速率限制策略已更新。",WIo="加入时间",YIo="从未",QIo="余额",XIo="钱包与消费",ZIo="累计消费",JIo="累计充值",eOo="地区",tOo="语言",nOo="累计赠额",aOo="累计退款",oOo="请求数",sOo="Tokens",rOo="操作",iOo="身份与风控",lOo="角色",cOo="你的角色没有可执行操作。",dOo="来源渠道",uOo="来源分布",mOo="直接 / 未知",pOo="自定义来源…",fOo="设置",gOo="自动识别:{{source}}",hOo="UTM",yOo="邀请人",vOo="备注",bOo="给该用户加备注,便于识别身份",xOo="保存备注",$Oo="备注已保存",wOo="暂无备注",kOo="筛选",COo={title:XEo,description:ZEo,email:JEo,searchEmail:eIo,status:tIo,statusEffect:nIo,risk:aIo,riskEffect:oIo,label:sIo,empty:rIo,country:iIo,lastLogin:lIo,action:cIo,view:dIo,deleted:uIo,setStatusAria:mIo,setStatusConfirm:pIo,grantCredit:fIo,grantDescription:gIo,amountUsd:hIo,amountPlaceholder:yIo,reason:vIo,reasonPlaceholder:bIo,grantKind:xIo,grantKindBonus:$Io,grantKindBonusHint:wIo,grantKindOffline:kIo,grantKindOfflineHint:CIo,referenceNo:SIo,referenceNoPlaceholder:AIo,recordPayment:TIo,recording:RIo,cancel:PIo,granting:_Io,grant:jIo,largeGrantConfirm:NIo,noDisplayName:DIo,loading:MIo,score:EIo,emailVerified:IIo,yes:OIo,no:LIo,signup:UIo,signupMethod:BIo,lastLoginMethod:FIo,signupBonus:zIo,onboarding:qIo,localeTz:HIo,markupRatio:VIo,rateLimitPolicy:KIo,rateLimitPolicyChanged:GIo,joined:WIo,never:YIo,walletBalance:QIo,walletSection:XIo,consumed:ZIo,recharged:JIo,location:eOo,preferredLocale:tOo,bonusGranted:nOo,refunded:aOo,requests:oOo,tokens:sOo,actionsSection:rOo,identitySection:iOo,role:lOo,noPermittedActions:cOo,acquisitionSource:dOo,acquisitionTitle:uOo,sourceDirect:mOo,sourceCustomPlaceholder:pOo,sourceSet:fOo,sourceCaptured:gOo,utm:hOo,referrer:yOo,note:vOo,notePlaceholder:bOo,noteSave:xOo,noteSaved:$Oo,noteEmpty:wOo,filters:kOo},SOo="事件回调",AOo="Stripe Webhook 事件。支持状态筛选、重试和 payload 检查。",TOo="状态",ROo="事件类型",POo="接收时间",_Oo="事件类型",jOo="状态",NOo="模式",DOo="尝试次数",MOo="重试",EOo="已加入重试队列",IOo="事件 {{event}} 已重置为 pending;下一次任务调度会处理。",OOo="重试失败",LOo="暂无 Webhook 事件。",UOo="端点注册后,Stripe 事件会显示在这里。",BOo="正在加载 payload...",FOo="最后错误",zOo="Payload (JSON)",qOo={title:SOo,description:AOo,statusFilter:TOo,eventTypeFilter:ROo,receivedAt:POo,eventType:_Oo,status:jOo,mode:NOo,attempts:DOo,retry:MOo,retrySubmittedTitle:EOo,retrySubmittedBody:IOo,retryFailedTitle:OOo,empty:LOo,emptyHint:UOo,detailLoading:BOo,lastError:FOo,payload:zOo},HOo="API key",VOo="10 秒拿到第一个 key",KOo="复制失败",GOo={label:"允许的模型",allModels:"全部模型",allHint:"目录中的所有模型都被允许。",noModels:"暂无可用模型。",selected:"已选择 {{count}} 个",someHint:"允许 {{count}} 个模型。"},WOo={label:"标签",placeholder:"输入标签后按回车",remove:"移除"},YOo="创建和管理账号级 API key,可调用 OneHop 的全部网关能力。",QOo="刷新",XOo="默认 key",ZOo="Key 名称",JOo="创建中...",e3o="创建 key",t3o="创建 API key",n3o="编辑 API key",a3o="给 key 命名即可创建。额度和有效期只在需要时展开高级设置。",o3o="月度 credit 额度",s3o="有效期",r3o="不限",i3o="保存中...",l3o="保存",c3o="取消",d3o="完整 key",u3o="复制 API key",m3o="已复制",p3o="复制",f3o="可以现在复制保存,也可以之后随时在该 key 的连接信息里查看。",g3o="我已保存",h3o={title:"已禁用 / 已撤销",description:"已停用或撤销的 key。可重新启用已禁用的,已撤销的仅作记录保留。"},y3o={title:"暂无活跃 key",description:"在下方重新启用某个已禁用的 key,或新建一个。"},v3o={import:"导入到 CCS",client:"CC Switch 客户端",codex:"Codex / OpenAI",claude:"Claude Code",pasteHint:"已用占位符打开 CC Switch,请在那边粘贴你保存的 API key。",checking:"检查兼容性…",blocked:{title:"{{client}} 不能使用这把密钥",body:"「{{keyName}}」的模型范围不包含 {{client}} 可用的模型。导入后,CC Switch 测试和实际请求都会失败。",adjust:"调整模型范围",forceImport:"仍然导入(将无法使用)"},pin:{title:"将以 {{model}} 导入 {{client}}",body:"「{{keyName}}」不包含 {{client}} 的默认模型。以下是 {{client}} 走这个供应商时各档请求的映射:",adjust:"调整模型范围",confirm:"以 {{model}} 导入"}},b3o="API key 加载失败",x3o="重试",$3o="暂无 API key",w3o="创建第一个 key,即可通过 OneHop 开始发送请求。",k3o={search:"搜索",searchPlaceholder:"搜索名称或 key 后缀",status:"状态",allStatus:"全部状态",clear:"清除筛选",empty:"没有匹配这些筛选条件的 key",emptyDescription:"清除搜索或状态筛选即可查看全部 key。",mobileTitle:"筛选"},C3o={active:"活跃",inactive:"已禁用",revoked:"已撤销",expired:"已过期",quota_exhausted:"额度耗尽"},S3o={label:"API key",tags:"标签",name:"名称",key:"Key",status:"状态",usage:"用量",quota:"额度",expires:"有效期",lastUsed:"最后使用",created:"创建时间",action:"操作"},A3o={today:"今日 {{requests}} 次 · {{credit}}",days30:"30 天 {{requests}} 次 · {{credit}}"},T3o={use:"连接信息",edit:"编辑",enable:"启用",disable:"禁用",delete:"删除"},R3o="使用 API key",P3o="用这个 key 调用 OneHop 网关。完整 key 可随时在此查看。",_3o={baseUrl:"Base URL",keyHint:"API key",authorization:"Authorization 请求头",env:"环境变量",curl:"cURL",revealing:"解密中…",fullKeyUnavailable:"该 key 已无法显示。请使用你保存的值,或创建一个新的 key。",protocolEndpoints:"协议端点"},j3o="撤销",N3o="确认撤销 {{name}}
843? 此操作无法恢复。",D3o="高级设置",M3o={label:"模型范围",all:"全部模型",limited:"限定到特定模型",allHint:"æ­¤ key 可调用所有模型,包括之后新增的。",snapshotHint:"只含你勾选的模型;之后新增的模型不会自动并入。",snapshotHintEdit:"只含你勾选的模型;新增模型不会自动并入。切到「全部模型」会替换此白名单。",searchPlaceholder:"搜索模型…",selectAllResults:"全选当前结果({{count}})",selectedCount:"已选 {{count}} / {{max}}",clear:"清空",hiddenSelected:"有 {{hidden}} / {{total}} 个已选被当前筛选隐藏",selectVendor:"全选 {{vendor}},已选 {{on}}/{{total}}",emptyTitle:"没有匹配的模型",emptyDescription:"换个类型或搜索词试试。",loadFailed:"模型加载失败",loadFailedHint:"重试,或切回「全部模型」。",type:{all:"全部",text:"文本",image:"图片",video:"视频",embedding:"向量"},pickAtLeastOne:"请至少勾选一个模型,或切回「全部模型」。",limitReached:"已达 {{max}} 个模型上限"},E3o={title:"API Key 已创建",subtitle:"{{name}} 已就绪 —— 现在接入它。",onceWarning:"明文仅本次可见,关闭后仍可再次查看,但建议现在就复制保存。",connect:"接入",done:"完成"},I3o="IP",O3o="已于 {{date}} 吊销",L3o={title:HOo,emptyTitle:VOo,copyFailed:KOo,allowedModels:GOo,tags:WOo,description:YOo,refresh:QOo,defaultName:XOo,keyName:ZOo,creating:JOo,createKey:e3o,createTitle:t3o,editTitle:n3o,formDescription:a3o,monthlyCreditLimit:o3o,expiresAt:s3o,unlimited:r3o,saving:i3o,save:l3o,cancel:c3o,fullKeyTitle:d3o,copyApiKey:u3o,copied:m3o,copy:p3o,fullKeyDescription:f3o,savedIt:g3o,parked:h3o,noActive:y3o,ccswitch:v3o,loadFailed:b3o,retry:x3o,empty:$3o,emptyDescription:w3o,filters:k3o,status:C3o,table:S3o,usage:A3o,actions:T3o,useTitle:R3o,useDescription:P3o,use:_3o,revoke:j3o,revokeConfirm:N3o,advancedSettings:D3o,scope:M3o,created:E3o,lastUsedIp:I3o,revokedAt:O3o},U3o="审计日志",B3o="按操作和时间查看高风险管理员操作。",F3o="操作",z3o="清除",q3o={ops_user_update_status:"用户状态已更新",ops_users_allowlist_add:"注册准入已添加",ops_users_allowlist_update:"注册准入已更新",ops_users_allowlist_invite:"注册准入已邀请",ops_users_allowlist_revoke:"注册准入已移除",ops_users_allowlist_restore:"注册准入已恢复",ops_model_create:"模型已创建",ops_model_update:"模型已更新",ops_model_update_status:"模型状态已更新",sub2api_pool_create:"路由密钥池已创建",sub2api_pool_test:"路由密钥池已测试",sub2api_pool_rotate_secret:"路由密钥已轮换"},H3o="审计日志",V3o="暂无审计记录",K3o="时间",G3o="严重性",W3o="目标",Y3o={ai_model:"模型",sub2api_key_pool:"路由 key pool",sys_user:"用户",wallet:"钱包"},Q3o="目标类型",X3o="请求 ID",Z3o={title:U3o,description:B3o,action:F3o,clear:z3o,actions:q3o,label:H3o,empty:V3o,time:K3o,severity:G3o,target:W3o,targetTypes:Y3o,targetType:Q3o,requestId:X3o},J3o="登录 OneHop",eLo="输入验证码",tLo="使用 Google 或邮箱继续",nLo="输入邮箱接收验证码",aLo="输入发送到 {{email}} 的 6 位验证码",oLo="使用 Google ç»§ç»­",sLo="使用邮箱继续",rLo="或",iLo="Email",lLo="发送验证码",cLo="发送中...",dLo="验证",uLo="验证中...",mLo="{{seconds}} 秒后可重发",pLo="重新发送验证码",fLo="继续即表示你同意我们的",gLo="服务条款",hLo="隐私政策",yLo={signIn:"登录",signOutFailed:"退出登录失败",sendCodeFailed:"验证码发送失败",notAllowed:"该邮箱暂未开放访问,请联系管理员申请。",invalidCode:"验证码无效",codeIncorrect:"验证码错误,请重试",googleFailed:"Google 登录失败",verifyHuman:"请完成人机验证后继续",verifyUnavailable:"人机验证暂时不可用,请改用上方的 Google 登录,或稍后重试。"},vLo={signInTitle:J3o,enterCodeTitle:eLo,methodIntro:tLo,emailStepIntro:nLo,codeIntro:aLo,continueGoogle:oLo,continueEmail:sLo,or:rLo,emailLabel:iLo,sendCode:lLo,sending:cLo,verify:dLo,verifying:uLo,resendIn:mLo,resendCode:pLo,termsPrefix:fLo,terms:gLo,privacy:hLo,errors:yLo},bLo="账单",xLo="充值 Credits、兑换优惠码并查看钱包流水。",$Lo={title:"专款额度",subtitle:"仅可用于特定模型的赠送额度,独立于你的余额、互不混算。",onlyModels:"仅限 {{models}}",onlyModelsGeneric:"受限模型",validUntil:"有效期至 {{date}}",noExpiry:"永不过期",useInChat:"去试用"},wLo={bonuses:"赠送",topups:"充值",usage:"消耗"},kLo={available:"已到账",availableHint:"已计入可用余额",frozen:"待到账(冻结)",frozenHint:"约 {{days}} 天后到账",frozenHintGeneric:"冻结期满后到账",title:"邀请奖励",viewDetails:"查看邀请明细"},CLo={noUsage:"最近 30 天暂无消耗",perDay:"日均 {{amount}}",daysLeft:"按当前速度约可用 {{days}} 天"},SLo={amountUsd:"金额(USD)",minAmountHint:"最低充值 {{amount}}。",apply:"应用",get:"到账",onehopCredits:"OneHop credits",pay:"支付",poweredByStripe:"由 Stripe 保障",poweredBy:"由 {{provider}} 保障",secureCheckout:"安全托管收银台",secureCheckoutShort:"安全收银台",taxExclusiveNotice:"税费将在收银台按您所在地区计算,并在此金额之外另行加收。",presets:"预设金额",promoCode:"优惠码",promoCodePlaceholder:"输入优惠码",serviceFee:"服务费",title:"充值",topupAmount:"充值金额",totalDue:"应付总额",payCta:"支付 {{amount}}",previewing:"校验中…",discount:"优惠码抵扣",couponBelowMin:"折后金额过低,请提高充值额或更换优惠码。",maintenanceTitle:"支付暂时不可用",maintenanceDescription:"支付服务暂时出了故障,如果需要支付,请通过 Telegram 联系我们。",contactTelegram:"通过 Telegram 联系我们",alipay:"支付宝",wechatPay:"微信支付",crypto:"用虚拟币支付(USDC / USDT)",payOnStripe:"支付在 Stripe 安全收银页完成。",payOnProvider:"支付在 {{provider}} 安全收银页完成。",payOnHostedCheckout:"支付在安全托管收银页完成。",amountPrecision:"{{provider}} 仅支持小数点后两位的美元金额。请调整金额或优惠码。",couponBonus:"加赠额度",couponBonusExpiry:"加赠额度将在ä
843»˜æ¬¾åŽ {{days}} 天过期。",couponInvalid:"该码无法使用,请换一个码。",couponErrors:{limitReached:"你使用该码的次数已达上限。",invalid:"该码无效或不可用。",expired:"该码已过期。",exhausted:"该码已被兑完。",unavailable:"该码正在被使用,请稍后再试。"},tierBonus:"充值返利",tierBonusExpiry:"加赠额度将在付款后 {{days}} 天过期。",tierBonusRestricted:"返利额度仅可用于:{{models}}。",nextTierPercent:"再充 {{amount}} 即可获得 {{percent}}% 返利额度。",nextTierBonus:"再充 {{amount}} 即可获得 {{bonus}} 返利额度。",tierCapReached:"你已领满本活动的返利上限。"},ALo="添加 Credits",TLo="创建中...",RLo="可用 Credit",PLo="充值",_Lo="由 Stripe 提供支付",jLo="金额(USD)",NLo="预设充值金额",DLo="兑换优惠码",MLo="优惠码",ELo="兑换中...",ILo="兑换",OLo="优惠码已兑换,余额正在刷新。",LLo="正在跳转到安全 checkout...",ULo="账单摘要加载失败",BLo="充值失败",FLo="账单活动标签页",zLo="交易",qLo="Credit 发放",HLo="交易类型",VLo="来源",KLo="暂无交易",GLo="充值、扣费和发放记录会显示在这里。",WLo="账本记录",YLo="时间",QLo="类型",XLo="金额",ZLo="余额",JLo="暂无发放记录",e4o="注册奖励、优惠码和人工赠送会显示在这里。",t4o="状态",n4o={successTitle:"已收到付款",polling:"正在为你的钱包入账...约 30 秒。",delayed:"入账较慢。请稍后刷新,或查看 Stripe 收据。",cancelledTitle:"付款已取消",cancelledBody:"未产生扣款。准备好后可重新尝试。",failedTitle:"支付失败",failedBody:"本次支付未能完成,Credit 未入账。可以重试,或换一种支付方式。"},a4o={text:"Credits 是预付服务余额,不是银行存款。已消费的 Credits 不可退款。所有价格以 USD 计价。详情请见",tosLink:"条款"},o4o="收据",s4o="打开中...",r4o="无法打开账单入口",i4o={title:"最近充值",subtitle:"最近 90 天。未消费余额随时可退。",loading:"正在加载充值记录...",date:"日期",amount:"金额",credits:"Credits",status:"状态",refund:"退款",alreadyRefunded:"已退款",windowExpired:"退款窗口已过期(24 小时)",confirmTitle:"确认退款",confirmBody:"退款将由 Stripe 在 1-3 个工作日内处理。用户自助发起的退款会扣除平台手续费({{fee}})。",amountLabel:"退款金额 (USD)",maxLabel:"最多 ${{value}}",requestedLabel:"申请退款金额",platformFeeLabel:"手续费({{fee}})",cardReturnLabel:"退回到你的银行卡",bonusForfeitureHint:"本次充值附带的促销 Credits 会按比例作废。",cancel:"取消",confirm:"发起退款",submitting:"提交中...",refundSubmittedTitle:"退款已提交",refundSubmittedBody:"Stripe 会在 1-3 个工作日内把款项退回你的银行卡。",refundFailedTitle:"退款失败",balance:"入账",confirmAmount:"退款 {{amount}}"},l4o={title:"余额提醒",description:"余额过低时通知你。",emailLabel:"邮件提醒",webhookLabel:"Webhook",autorechargeLabel:"自动充值",autorechargeUnsupported:"当前支付渠道不支持自动充值。",autorechargeAddCardHint:"绑定银行卡,余额过低时自动充值",autorechargeTopUp:"每次充值",autorechargeWhenBelow:"当余额跌破",autorechargeThreshold:"自动充值阈值",autorechargeAmount:"自动充值金额",autorechargeDisabledFailures:"自动充值因连续多次扣款失败已停用。请更换银行卡后重新开启。",autorechargeIncomplete:"请填写自动充值金额和高于 $0 的阈值。",test:"测试",testing:"测试中…",testQueued:"测试投递已入队 —— 去你的端点确认收到",testFailed:"测试投递入队失败",signingSecret:"签名密钥",secretOnSave:"保存后会生成签名密钥。",rotate:"轮换",secretRotated:"签名密钥已轮换",rotateFailed:"密钥轮换失败",secretCopied:"签名密钥已复制",saved:"提醒设置已保存",saveFailed:"提醒设置保存失败",loadFailed:"无法加载提醒设置",thresholdRequired:"请设置高于 $0 的阈值以启用提醒。",webhookUrlRequired:"请填写 https:// 开头的 webhook 地址。",thresholdOrderBad:"提醒阈值必须 ≥ 自动充值阈值。",card:"银行卡",changeCard:"更换",removeCard:"移除",cardRemoved:"银行卡已移除",cardRemoveFailed:"移除银行卡失败",cardSetupFailed:"绑卡失败",lowBalanceGroup:"低余额提醒",thresholdLabel:"提醒阈值"},c4o={title:"交易历史",idSearch:"交易 ID",amountRange:"金额范围 (USD)",min:"最小值",max:"最大值",clear:"清除",retry:"重试",empty:"此范围内暂无交易",date:"日期",typeMethod:"类型 / 方式",description:"说明",action:"操作",prevMonth:"上个月",nextMonth:"下个月",viewInvoices:"查看发票",emptyNew:"还没有交易",emptyNewDesc:"充值后,你的充值、赠送和退款记录会显示在这里。",topUpCta:"去充值",emptyFiltered:"没有匹配的交易",emptyFilteredDesc:"试试清除筛选或放宽时间范围。",clearFilters:"清除筛选"},d4o="余额偏低,可能影响调用。建议尽快充值或开启自动充值。",u4o="余额偏低,可能影响调用。请尽快充值以继续使用。",m4o={creditPurchase:"充值",topupBonus:"充值奖励",signupBonus:"注册奖励",referralClawback:"邀请 credit 回扣(退款)",couponBonus:"加赠码奖励",referralCashback:"邀请返利",referralInviteeCashback:"受邀充值奖励",redeemCode:"兑换码 {{code}}",redeemCodeReversal:"兑换码撤销",stripeRefund:"Stripe 退款",bonusReversal:"退款回收è
843µ é‡‘"},p4o={card:"银行卡",alipay:"支付宝",wechatPay:"微信支付"},f4o={title:"兑换码",description:"有兑换码?输入即可把面值充入你的余额。",placeholder:"例如:OHR-XXXXXXXX",redeem:"兑换",redeeming:"兑换中…",success:"已兑换 {{amount}} 到余额",successRestricted:"已到账 {{amount}},仅限 {{models}} 使用",successValidity:"有效期至 {{date}}。",errors:{invalid:"该兑换码无效或不可用。",expired:"该兑换码已过期。",alreadyRedeemed:"该兑换码已被兑换。",perUserLimit:"你已达到该批次的兑换上限。"}},g4o={title:bLo,description:xLo,earmarked:$Lo,breakdown:wLo,referralRewards:kLo,burnRate:CLo,topup:SLo,addCredits:ALo,creating:TLo,availableCredit:RLo,topUp:PLo,poweredByStripe:_Lo,amountUsd:jLo,presetAmounts:NLo,redeemCoupon:DLo,couponCode:MLo,redeeming:ELo,redeem:ILo,couponRedeemed:OLo,redirecting:LLo,summaryFailed:ULo,topupFailed:BLo,tabsLabel:FLo,transactions:zLo,creditGrants:qLo,transactionType:HLo,source:VLo,noTransactions:KLo,noTransactionsDescription:GLo,ledgerEntries:WLo,time:YLo,type:QLo,amount:XLo,balance:ZLo,noGrants:JLo,noGrantsDescription:e4o,status:t4o,topupBanner:n4o,compliance:a4o,receipts:o4o,openingPortal:s4o,portalFailed:r4o,recentTopups:i4o,alerts:l4o,history:c4o,lowBalanceWarning:d4o,lowBalanceWarningNoAutoTopup:u4o,ledgerDesc:m4o,paymentMethod:p4o,redeemCard:f4o},h4o="图表加载失败",y4o="暂无数据",v4o="暂时没有可绘制的数据。",b4o={errorTitle:h4o,emptyTitle:y4o,emptyDescription:v4o},x4o={copy:"复制",regenerate:"重新生成",shareComingSoon:"分享(即将上线)",download:"下载",copyLink:"复制链接",newChat:"新对话",deleteChat:"删除对话",openConversationList:"打开对话列表",openSettings:"对话设置",collapseSidebar:"收起侧栏",expandSidebar:"展开侧栏",cancel:"取消",apply:"应用",newChatTooltip:"新建对话",copied:"已复制"},$4o={placeholderReady:"开始新的对话...",placeholderNoModel:"先在上方选择一个模型",placeholderComingSoon:"该模型即将上线,请先选择其他模型",attachmentTooLarge:"文件超过 {{limit}},无法上传",attachmentUnsupported:"不支持的文件类型。请使用 PNG、JPEG、WebP、GIF、MP4、WebM 或 MOV。",unsupportedVision:"当前模型不支持图片或视频输入。拖入文件前请先切换模型。",send:"发送",abort:"中止",attachImage:"添加图片",attachMedia:"添加图片或视频",removeAttachment:"移除",shortcutSend:"发送",shortcutNewLine:"换行",shortcutAbort:"中止",frameFirst:"首帧",frameLast:"尾帧",frameReference:"参考图",imageMode:"图片生成",videoMode:"视频生成",reasoning:"思考",reasoningOff:"关闭",reasoningAlways:"始终开启",placeholderTopupRequired:"该模型仅向已充值账户开放 —— 充值后即可在这里使用"},w4o={modelUnavailable:"模型 {{model}} 暂不可用,已为你保留输入。",rateLimited:"并发请求太多,请稍后再试。",accountDisabled:"账户已被禁用,无法继续对话。",attachmentsUploading:"图片还在上传,请稍候再发送。",attachmentsFailed:"有图片上传失败,请删除后重试再发送。"},k4o={title:"在这里开始测试任意模型。",body:"直接与任意模型对话,用量从你的 PAYG 钱包扣费。",starters:{compareModels:"用同一个代码任务比较 GPT-5.5 和 Claude Opus",analyzeImage:"分析一张架构图并总结风险",draftPrompt:"为客服 agent 起草一段 system prompt",generateImage:"生成一张干净 SaaS 风格的产品主视觉图"}},C4o={untitled:"未命名对话",deleteConfirm:"删除「{{title}}」?",emptyTitle:"尚无对话",emptyBody:"使用上方的 + 新对话开始。",listLabel:"对话列表",groups:{today:"今天",yesterday:"昨天",earlier:"更早"},menu:{rename:"重命名",delete:"删除"},deleteTitle:"删除对话?"},S4o={paygWallet:"PAYG 钱包"},A4o={chooseModel:"选择模型",searchPlaceholder:"搜索模型...",emptyTitle:"没有找到模型",emptyBody:"换个搜索词或 Tab 试试。",protocols:"{{count}} 个协议",context:"{{value}} ctx",tabs:{all:"全部",text:"文本",image:"图片",video:"视频"},maxOut:"输出 {{value}}",unavailable:"即将上线",requiresTopup:"需充值解锁"},T4o={title:"对话设置",protocol:"协议",unlimited:"无限制",fields:{memory_limit:{label:"对话记忆"},temperature:{label:"Temperature"},top_p:{label:"Top P"},max_tokens:{label:"Max Tokens",placeholder:"128000"},service_tier:{label:"服务档位",options:{standard:"标准",priority:"优先",flex:"弹性"}},thinking_budget:{label:"Thinking Budget (tokens)",placeholder:"ä¾
843‹å¦‚ 2000"},tools:{label:"工具 (JSON)",placeholder:'[{ "type": "function", "function": { ... } }]'},stop_sequences:{label:"Stop Sequences",placeholder:"逗号分隔,例如 END, STOP",itemLabel:"Stop"},system_prompt:{label:"System Prompt",placeholder:"输入 system prompt..."},prompt_cache_mode:{label:"Prompt Cache",options:{implicit:"隐式",explicit:"显式"}},image_size:{label:"图片分辨率"},image_resolution:{label:"分辨率"},image_quality:{label:"图片质量",options:{Auto:"自动",auto:"自动",low:"低",medium:"中",high:"高"}},video_ratio:{label:"宽高比"},video_resolution:{label:"视频分辨率"},video_duration_seconds:{label:"时长"},image_count:{label:"生成数量"},image_aspect_ratio:{label:"宽高比"},reasoning_effort:{label:"推理强度",options:{none:"关闭",minimal:"极简",low:"低",medium:"中",high:"高",xhigh:"极高",max:"最大"}},reasoning_pro:{label:"Pro 模式"},reasoning_context:{label:"推理上下文",options:{auto:"自动",current_turn:"当前轮次",all_turns:"全部轮次"}},reasoning_enabled:{label:"思考"},reasoning_always:{label:"思考",value:"始终开启"}}},R4o={estimating:"估算中...",settling:"结算中...",input:"输入",output:"输出",milliseconds:"ms",realCost:"实费",latency:"延迟",logDetail:"日志详情"},P4o={copied:"图片链接已复制",expired:"图片链接已过期。复制链接重新打开,或重新生成。",attachment:"[图片附件]"},_4o={message:"本次对话从你的 PAYG 钱包计费",balance:"余额",billingLink:"查看计费",dismiss:"我知道了"},j4o={badge:"专款 {{amount}}",bannerTitle:"有专款额度可用",bannerBody:"你有 {{amount}} 专属额度可用于此模型,将优先抵扣。"},N4o={trigger:"复制为代码",copied:"已复制为 {{format}}",failed:"复制失败",failedDescription:"浏览器可能阻止了剪贴板权限。"},D4o={interrupted:"[已中断]",sending:"发送中"},M4o={title:"思考过程",duration:"思考了 {{seconds}}s"},E4o={title:"视频生成即将上线",body:"此模型已列出供探索,但尚未启用视频发送。",switchToText:"切换到文本模型"},I4o={imageGenerating:"正在生成图片",videoGenerating:"正在生成视频",stage:{queued:"排队中",routing:"路由中",generating:"生成中",storing:"存储中",settling:"结算中"}},O4o={INSUFFICIENT_CREDITS:"余额不足",RATE_LIMITED:"请求过于频繁",rate_limit_error:"请求过于频繁",MODEL_NO_VISION:"该模型不支持图片输入",CONTENT_REFUSED:"模型拒绝了此请求",EMPTY_RESPONSE:"模型返回了空内容",upstream_error:"上游服务返回错误",overloaded_error:"上游服务繁忙",upstream_invalid_json:"上游响应异常",stream_read_error:"响应读取中断",invalid_api_key:"上游鉴权失败",model_unavailable:"模型暂时不可用",no_image:"未能生成图片",no_body:"上游无响应",http_error:"请求失败",session_create_failed:"会话创建失败"},L4o={title:"充值后即可使用该模型",body:"它只向已充值账户开放。充值任意金额后立即解锁,余额照常按量计费。",cta:"去充值"},U4o={actions:x4o,composer:$4o,errors:w4o,empty:k4o,sidebar:C4o,header:S4o,modelSelector:A4o,settings:T4o,metrics:R4o,image:P4o,payg:_4o,earmark:j4o,copyAsCode:N4o,status:D4o,thinking:M4o,video:E4o,media:I4o,errorCodes:O4o,topupLock:L4o},B4o="加载中...",F4o="账号",z4o="语言",q4o="登录",H4o="退出登录",V4o="正在退出...",K4o="保存更改",G4o="保存中...",W4o="已保存。",Y4o="返回",Q4o="重试",X4o="充值服务费立减 5%。",Z4o="保存",J4o="取消",e5o="清除",t5o="重置",n5o="已复制",a5o="复制失败",o5o="关闭",s5o="总计",r5o={timestamp:"时间戳",local:"本地时间",relative:"相对时间"},i5o="复制",l5o={title:"请在浏览器中打开",description:"你正在 <b>App 内置浏览器</b>中打开本页,<b>Google 登录和人机验证在这里无法使用</b>。请用系统浏览器打开以继续。",hintWechat:"点击右上角 ··· 菜单,选择「在浏览器中打开」。",hintGeneric:"通过右上角菜单选择「在浏览器 / Safari 中打开」。",copyLink:"复制链接",continueAnyway:"仍要继续"},c5o="全部",d5o="已筛选",u5o="可选",m5o="移除",p5o={loading:B4o,account:F4o,language:z4o,signIn:q4o,signOut:H4o,signingOut:V4o,saveChanges:K4o,saving:G4o,saved:W4o,back:Y4o,retry:Q4o,topUpPromo:X4o,save:Z4o,
843cancel:J4o,clearAll:e5o,reset:t5o,copied:n5o,copyFailed:a5o,dismiss:o5o,total:s5o,time:r5o,copy:i5o,inAppBrowser:l5o,all:c5o,active:d5o,optional:u5o,remove:m5o},f5o="仪表盘",g5o="在一个控制台里查看 credit、用量和 gateway 关键健康状态。",h5o="创建 API key",y5o={creditBalance:"Credit 余额",requestsToday:"今日请求",activeApiKeys:"活跃 API keys"},v5o={title:"用量趋势",description:"最近 14 天的请求量和计费 credit。",viewUsage:"查看用量",loading:"正在加载用量趋势",empty:"暂无用量",emptyDescription:"开始发送请求后,这里会显示用量。"},b5o={title:"Credit 活跃度",description:"最近 90 天每天的计费 credit。",total:"90 天合计",loading:"正在加载活跃度",activeDays:"最近 {{days}} 天内有 {{count}} 个活跃日",less:"少",more:"多"},x5o={title:"用量体感",description:"把消耗强度、token 规模和主要模型压缩到一屏。",activeDays:"活跃天数",ofDays:"共 {{days}} 天",avgDailyCredit:"日均 credit",nonZeroDays:"按活跃日计算",peakDay:"峰值日",noPeak:"暂无用量",tokens:"Tokens",topModel:"主要模型",creditShare:"计费 credit 占比"},$5o={title:"快速健康状态",requests7d:"7 日请求",creditToday:"今日消耗 credit",credit7d:"7 日消耗 credit"},w5o={title:"最近请求",description:"你的 key 最近发起的 gateway 调用。",viewRecords:"查看记录",table:{label:"最近请求",model:"模型",status:"状态",tokens:"Tokens",credit:"Credit",time:"时间",apiKey:"API key"},empty:"暂无请求",emptyDescription:"创建 API key 并发送请求后,最近调用会显示在这里。"},k5o={title:"发送第一个请求",description:"兼容 OpenAI。创建 key,设置 {{env}},然后调用 gateway。"},C5o={credit:"Credit",requests:"请求"},S5o={title:f5o,description:g5o,createApiKey:h5o,cards:y5o,usageTrend:v5o,activity:b5o,usageMix:x5o,quickHealth:$5o,recent:w5o,firstRequest:k5o,tooltip:C5o},A5o="选择全部行",T5o="选择第 {{row}} 行",R5o="加载失败",P5o="暂无数据",_5o="没有可显示的记录。",j5o="更多详情",N5o="还有 {{count}} 项详情",D5o="打开详情",M5o={selectAllRows:A5o,selectRow:T5o,errorTitle:R5o,emptyTitle:P5o,emptyDescription:_5o,moreDetails:j5o,moreDetailsWithCount:N5o,openRow:D5o},E5o="最近 1 小时",I5o="今天",O5o="昨天",L5o="最近 7 天",U5o="最近 30 天",B5o="本月",F5o="按月份",z5o="自定义",q5o="全部时间",H5o="选择日期",V5o="取消",K5o="应用",G5o="开始日期必须早于结束日期。",W5o="时间范围预设",Y5o="上个月",Q5o="下个月",X5o={last1h:E5o,today:I5o,yesterday:O5o,last7d:L5o,last30d:U5o,thisMonth:B5o,byMonth:F5o,custom:z5o,all:q5o,selectDate:H5o,cancel:V5o,apply:K5o,reversedError:G5o,presetsAriaLabel:W5o,previousMonth:Y5o,nextMonth:Q5o},Z5o="账号不可用",J5o="账号正在初始化",eUo={title:"账号已暂停",description:"这个账号仍然可以登录,但控制台访问和 gateway 请求已经暂停。",detail:"如果你认为这是误操作,请使用当前账号邮箱联系 support。"},tUo={accountUnavailable:Z5o,accountInitializing:J5o,accountRestricted:eUo},nUo="免费额度",aUo="为指定模型每日发放的免费 token 额度,自动刷新,不从你的钱包扣费。",oUo="无法加载你的免费额度。",sUo="全部模型",rUo="活动于 {{date}} 结束",iUo={daily:"每日",weekly:"每周"},lUo={daily:"每日刷新",weekly:"每周刷新",localTime:"你的本地时间 {{time}}",countdown:"距下次刷新 {{duration}}",refreshingSoon:"即将刷新"},cUo={title:"暂无进行中的免费额度活动",description:"有免费额度活动进行时,你的每日额度会显示在这里。"},dUo={title:"你的账号已暂停发放免费额度",body:"该账号疑似批量注册的一部分,已暂时暂停免费发放。如有误会,请联系"},uUo="tokens",mUo="今日剩余 {{value}} tokens",pUo={label:"用完时邮件提醒",hint:"今日免费额度用完时,给你发一封邮件提醒。"},fUo={crg_freetoken_daily_cn5:"国产模型 · 每日免费 Token"},gUo={title:nUo,description:aUo,loadFailed:oUo,allModels:sUo,campaignEnds:rUo,cadence:iUo,refresh:lUo,empty:cUo,paused:dUo,tokensUnit:uUo,remainingToday:mUo,emailToggle:pUo,campaigns:fUo},hUo="日志",yUo="查看每条请求的成本、延迟、tokens、状态和路由信号。",vUo={copiedCurl:"已复制 curl",copiedId:"已复制请求 ID",copyCurl:"复制为 curl",copyFailed:"复制失败",copyId:"复制请求 ID",menu:"行操作",openTab:"在新标签页打开"},bUo={prompt:"Prompt",ratio:"命中率",read:"缓存读取",title:"缓存命中率"},xUo={confirm:"取消任务",failed:"取消任务失败",keep:"保留",message:"该任务仍在排队中。取消后将不再处理,也不会产生扣费。",success:"任务已取消",title:"取消任务?",pending:"取消中..."}
843,$Uo={cacheHit:"缓存命中",cost:"成本",ip:"IP",latency:"总耗时",model:"模型",source:"来源",status:"状态",stream:"流式",time:"时间",tokens:"Tokens",tps:"吞吐"},wUo={trigger:"列设置"},kUo={body:"通过 OneHop 发起一次请求,记录就会出现在这里。",title:"此区间内暂无日志"},CUo={all:"全部",apiKey:"API key",cost:"成本(USD)",desktopDateRangeAria:"选择桌面端日期范围",finishReason:"结束原因",latency:"耗时(s)",max:"最大",min:"最小",mobileDateRangeAria:"选择移动端日期范围",model:"模型",modelsSelected:"已选 {{count}} 个",more:"更多筛选",refresh:"刷新",request:"按请求 ID 搜索",requestIdLabel:"请求 ID",status:"状态",stream:"流式",time:"时间",type:"类型",mobileTitle:"筛选"},SUo={requests:"条记录(本页)",times:"时间显示为"},AUo={rowsPer:"每页"},TUo={all:"全部时间",custom:"自定义",last1h:"最近 1 小时",last30d:"最近 30 天",last7d:"最近 7 天",thisMonth:"本月",today:"今天",yesterday:"昨天"},RUo={title:"客户端",unknownShort:"未知",unknown:"未上报 user-agent"},PUo={output:"输出 tokens",rate:"速率",title:"吞吐",window:"生成窗口"},_Uo={title:"请求",openDetail:"打开请求详情",copy:"复制 ID",copied:"已复制",copyFailed:"复制失败",close:"关闭",loading:"加载中…",response:"响应",sections:{request:"请求",routing:"路由",tokens:"Tokens",cost:"成本拆分",performance:"性能",error:"错误",outcome:"结果",multimodal:"多模态"},fields:{requestId:"请求 ID",time:"时间",apiKey:"API key",userAgent:"User-Agent",billingMode:"计费模式",onehopModel:"OneHop 模型",endpoint:"Endpoint",firstToken:"首 token",total:"总耗时",throughput:"吞吐",stream:"流式",clientIp:"客户端 IP",finishReason:"结束原因",mediaType:"媒体类型",imageCount:"图片数",imageSize:"尺寸",errorCode:"代码",errorMessage:"信息",requestedModel:"请求模型"},billingMode:{token:"按 token",per_request:"按次",image:"按图片"},timeline:{heading:"生命周期",received:"收到请求",routed:"完成路由",failed:"失败",generated:"生成完成",metered:"完成计量",billed:"完成计费"},downloadMedia:"下载"},jUo={success:"成功",completed:"已完成",failed:"失败",pending:"等待中",repairing:"修复中",queued:"排队中",running:"运行中",cancelled:"已取消",expired:"已过期"},NUo={chat:"对话",image:"图片",video:"视频"},DUo={stop:"正常结束",length:"长度限制",tool_calls:"工具调用",content_filter:"内容过滤",error:"错误"},MUo={true:"流式",false:"非流式"},EUo={title:"成本拆分"},IUo={title:"Token 明细",prompt:"输入",completion:"输出",imageOutput:"图片输出 token",cacheRead:"缓存读取",cacheWrite:"缓存写入",cacheWrite5m:"缓存写入 5m",cacheWrite1h:"缓存写入 1h",total:"总计"},OUo={timestamp:"时间戳",local:"本地时间",relative:"相对时间"},LUo={promoBasis:"折前",promoSaved:"活动优惠",inputCost:"输入成本",outputCost:"输出成本",cacheReadCost:"缓存读取成本",cacheWriteCost:"缓存写入成本",inputPrice:"输入单价",outputPrice:"输出单价",total:"总计",officialPrice:"官方价",saved:"已优惠",factor:{textInput:"文本输入",textOutput:"文本输出",imageInput:"图片输入",imageOutput:"图片输出",perCallImage:"按张",videoPerSecond:"视频",videoPerCall:"视频",cacheRead:"缓存读取",cacheWrite:"缓存写入",cacheWrite5m:"缓存写入(5m)",cacheWrite1h:"缓存写入(1h)"},unit:{per1mTokens:"/ 1M tokens",perImage:"/ 张",perSecond:"/ 秒",perCall:"/ 次"},freeCovered:"免费额度抵扣({{tokens}} tokens)",freeCoveredNoCount:"免费额度抵扣"},UUo={noPreview:"暂无预览",video:"视频"},BUo={free:"免费"},FUo={title:hUo,description:yUo,actions:vUo,cacheHit:bUo,cancelJob:xUo,col:$Uo,columns:wUo,empty:kUo,filter:CUo,meta:SUo,pager:AUo,range:TUo,source:RUo,tps:PUo,drawer:_Uo,status:jUo,type:NUo,finishReason:DUo,stream:MUo,costBreakdown:EUo,tokensBreakdown:IUo,time:OUo,userCost:LUo,export:{label:"导出 CSV",exporting:"导出中…",done:"已导出 {{n}} 行。",truncated:"已导出前 {{n}} 行,缩小时间范围可导出其余。",failed:"导出失败,请重试。"},media:UUo,cost:BUo},zUo="模型",qUo="查看全部可用模型、上下文长度、输入/输出价格,并收藏常用模型。",HUo={all:"全部",favorites:"我的收藏",free:"免费",benefit:"福利",hot:"热点"},VUo={capability:"类型",allCapabilities:"全部类型",capability_text:"文本",capability_image:"图片",capability_audio:"音频",capability_video:"视频",provider:"提供商",allProviders:"全部提供商",protocol:"协议",allProtocols:"全部协议",sort:"排序",search:"搜索",searchPlaceholder:"模型 / 厂商",context:"上下文",allContexts:"不限",mobileTitle:"筛选"},KUo="推荐",GUo="最新",WUo="周热度",YUo="名称 (A-Z)",QUo="价格(从低到高)",XUo="价格(从高到低)",ZUo="上下文长度",JUo="延迟",eBo="吞吐",tBo="OpenAI Chat",nBo="OpenAI Responses",aBo="Anthropic",oBo="Vertex AI",sBo="OpenAI Images",rBo="OpenAI Video",iBo={label:"模型",model:"模型",provider:"提供商",capabilities:"能力",context:"上下文",price:"价格",discount:"折扣",action:"操作",tryIt:"试一试",type:"类型",maxOutput:"最大输出",copyId:"复制模型 ID",copied:"已复制",usage:"用量",stability:"稳定性",protocols:"协议",openDetail:"打开模型详情"},lBo="热点",cBo="福利",dBo="免费",uBo="即将上线",mBo={add:"收藏",remove:"取消收藏"},pBo={favorites:"还没有收藏的模型",noMatch:"没有匹配的模型"},fBo="文本",gBo="图片",hBo="文件",yBo="视频",vBo="音频",bBo="嵌入",xBo="视觉",$Bo="工具调用",wBo="JSON 模式",kBo="图片生成",CBo="图片编辑",SBo="文本",ABo="图片",TBo="视频",RBo="音频",PBo="嵌入",_Bo="官方",jBo="Kiro",NBo="最低",DBo="/ 次",MBo="/ 秒",EBo="/ 1M",IBo="极速",OBo="免费",LBo={ariaLabel:"价格货币",usd:"美元",rmb:"人民币 (¥)",settlement:"价格以人民币展示,按固定汇率 {{rate}} 折算,仅供参考;钱包始终以美元按实际用量结算。"},UBo="需充值",BBo={title:zUo,description:qUo,tabs:HUo,filters:VUo,sort_featured:KUo,sort_newest:GUo,sort_top_weekly:WUo,sort_name:YUo,sort_price_asc:QUo,sort_price_desc:XUo,sort_context:ZUo,sort_latency:JUo,sort_throughput:eBo,protocol_openai_chat:tBo,protocol_openai_responses:nBo,protocol_anthropic_messages:aBo,protocol_google_vertex_ai:oBo,protocol_openai_images:sBo,protocol_openai_sora:rBo,table:iBo,badge_hot:lBo,badge_benefit:cBo,badge_free:dBo,badge_unavailable:uBo,favorite:mBo,empty:pBo,modality_text:fBo,modality_image:gBo,modality_file:h
843Bo,modality_video:yBo,modality_audio:vBo,modality_embeddings:bBo,capability_vision:xBo,capability_tool_calling:$Bo,capability_json_mode:wBo,capability_image_generation:kBo,capability_image_edit:CBo,type_text:SBo,type_image:ABo,type_video:TBo,type_audio:RBo,type_embedding:PBo,provider_official:_Bo,provider_kiro:jBo,price_from:NBo,price_perCall:DBo,price_perSec:MBo,price_per1m:EBo,price_fast:IBo,price_free:OBo,currency:LBo,badge_requiresTopup:UBo},FBo={main:"主导航",utility:"工具导航",console:"控制台导航",openNavigation:"打开导航",collapse:"收起侧边栏",expand:"展开侧边栏"},zBo={platform:"控制台",chat:"对话",models:"模型",logs:"日志",jobs:"任务",apiKeys:"API 密钥",usage:"用量",billing:"账单",freeTokens:"免费额度",referrals:"邀请",support:"工单",settings:"设置",admin:"管理",balance:"余额",helpSupport:"帮助与支持",announcements:"公告",announcementsTitle:"公告",announcementsEmpty:"暂无公告,敬请期待。",announcementsTicketUnread:"{{count}} 条工单有新回复",tasks:"任务墙",tagNew:"新"},qBo={title:"通知",markAllRead:"全部已读",loading:"加载中…",emptyTitle:"暂无新通知",emptyBody:"有新通知会显示在这里。"},HBo={staff:"管理后台"},VBo={dashboard:"仪表盘",users:"用户管理",billing:"钱包账单",usage:"用量统计",rateLimits:"速率限制",access:"注册准入",staff:"团队成员",growth:"增长运营",models:"模型目录",announcements:"系统公告",upstream:"上游渠道",auditLogs:"审计日志",webhooks:"事件回调",support:"工单中心",campaigns:"活动运营",domainRules:"邮箱域名单"},KBo={aria:FBo,public:{models:"模型",pricing:"价格",docs:"文档",blog:"博客",changelog:"更新日志"},console:zBo,notifications:qBo,adminGroups:HBo,admin:VBo},GBo={title:"欢迎使用 OneHop",body:"一个 URL 调用所有模型。花 30 秒带你看三件事。",start:"开始",skip:"跳过"},WBo={models:{title:"看看模型",body:"一页看清你能调用的所有模型,以及各自的价格。",cta:"打开模型页"},keys:{title:"创建第一把 API key",body:"点这里生成一把 key,把任意工具指向 OneHop 即可。"},balance:{title:"你的余额",body:"随用随充。未消费余额随时可退。"}},YBo={next:"下一步",back:"上一步",done:"完成",stepOf:"{{current}} / {{total}}"},QBo={welcome:GBo,steps:WBo,nav:YBo},XBo="加载失败",ZBo="这里暂时没有内容。",JBo="更多详情",e6o={failedLoad:XBo,emptyDescription:ZBo,moreDetails:JBo},t6o="全部",n6o="成功",a6o="处理中",o6o="修复中",s6o="失败",r6o="已退款",i6o="活跃",l6o="已停用",c6o="已用尽",d6o="已预留",u6o="已兑换",m6o="已暂停",p6o="已删除",f6o="正常",g6o="观察中",h6o="已阻止",y6o="已发放",v6o="冻结中",b6o="已释放",x6o="已取消",$6o="部分回扣",w6o="已冲回",k6o="已跳过",C6o="已过期",S6o="已拒绝",A6o="草稿",T6o="已发布",R6o="已弃用",P6o="已归档",_6o="隐藏",j6o="已创建",N6o="已打开 checkout",D6o="已支付",M6o="已取消",E6o="OpenAI Chat",I6o="OpenAI Responses",O6o="Anthropic Messages",L6o="Google Vertex AI",U6o="OpenAI Images",B6o="用量扣费",F6o="注册奖励",z6o="促销奖励",q6o="邀请奖励",H6o="补偿奖励",V6o="充值奖励",K6o="人工调整",G6o="Credit 购买",W6o="支付",Y6o="注册奖励",Q6o="优惠码",X6o="管理员赠送",Z6o="API 用量",J6o="注册奖励",e8o="人工赠送",t8o="同步",n8o="Streaming",a8o="Token 计费",o8o="请求计费",s8o="图片计费",r8o="低 reasoning",i8o="中 reasoning",l8o="高 reasoning",c8o="不适用",d8o="未知",u8o={all:t6o,success:n6o,pending:a6o,repairing:o6o,failed:s6o,refunded:r6o,active:i6o,disabled:l6o,exhausted:c6o,reserved:d6o,redeemed:u6o,suspended:m6o,deleted:p6o,normal:f6o,watchlisted:g6o,blocked:h6o,granted:y6o,frozen:v6o,released:b6o,cancelled:x6o,partially_reversed:$6o,reversed:w6o,skipped:k6o,expired:C6o,denied:S6o,draft:A6o,published:T6o,deprecated:R6o,archived:P6o,public:"公开",hidden:_6o,created:j6o,checkout_opened:N6o,paid:D6o,canceled:M6o,openai_chat:E6o,openai_responses:I6o,anthropic_messages:O6o,google_vertex_ai:L6o,openai_images:U6o,usage_charge:B6o,bonus_signup_grant:F6o,bonus_promo_grant:z6o,bonus_referral_grant:q6o,bonus_compensation_grant:H6o,bonus_topup_grant:V6o,manual_adjustment:K6o,credit_purchase:G6o,payment:W6o,signup:Y6o,coupon:Q6o,admin:X6o,api:Z6o,signup_bonus:J6o,manual:e8o,sync:t8o,stream:n8o,token:a8o,request:o8o,image:s8o,low:r8o,medium:i8o,high:l8o,not_applicable:c8o,unknown:d8o}
843,m8o="共 {{count}} 条",p8o="{{count}} 条/页",f8o={total:m8o,perPage:p8o},g8o="邀请与返利",h8o="分享你的专属链接。被邀请用户充值后,双方的返利都会清楚记录。",y8o="无法加载邀请数据",v8o="你的邀请链接",b8o="分享",x8o="已复制邀请内容,打开微信粘贴给好友即可",$8o="复制",w8o="已复制",k8o="微信",C8o="X",S8o="Telegram",A8o="Reddit",T8o="LinkedIn",R8o="WhatsApp",P8o="邮件",_8o="Facebook",j8o={default:{title:"一个 OneHop API,调用所有 AI 模型",body:"用我的邀请链接注册 —— {{firstWindowDays}} 天内首充,双方各得 {{percent}}% 返利。"},x:{title:"一个 API,调用所有 AI 模型 🤖",body:"{{firstWindowDays}} 天内用我的链接首充,双方各得 {{percent}}% 返利 🚀"},telegram:{title:"用 OneHop 调用所有 AI 模型",body:"用我的邀请链接 —— {{firstWindowDays}} 天内首充,双方各得 {{percent}}% 返利积分。"},whatsapp:{title:"用 OneHop 调用所有 AI 模型",body:"用我的邀请链接注册,{{firstWindowDays}} 天内首充,双方各得 {{percent}}% 返利。"},reddit:{title:"OneHop —— 一个 API 调用所有 AI 模型;用我的邀请链接首充,双方各得 {{percent}}% 返利",body:"{{firstWindowDays}} 天内首充,双方各得 {{percent}}% 返利积分。"},email:{title:"邀请你用 OneHop —— 一个 API 调用所有 AI 模型",body:`你好,
844
845我在用 OneHop,一个 API 就能调用各大主流 AI 模型。用我的邀请链接注册,首充后双方都能拿到返利积分。
846
847返利档位:{{tiers}}。
848
849谢谢!`},wechat:{title:"OneHop —— 一个 API 调用所有 AI 模型",body:"用我的邀请链接注册,{{firstWindowDays}} 天内首充,双方各得 {{percent}}% 返利。"}},N8o="返利在付款后立即可见,但会先冻结以覆盖退款窗口,到期后释放为 OneHop 邀请奖励 credit。",D8o="{{days}} 天后释放。",M8o={referrer:"邀请人",referee:"被邀请人"},E8o={referrer:":被邀请人首充及后续充值,你都按档位获得 credit 返还 —— {{tiers}}。",referee:":用邀请链接注册后,你的充值同样按档位获得 credit 返还 —— {{tiers}}。"},I8o={dayRange:"{{fromDay}}-{{untilDay}} 天",dayOpenEnded:"{{fromDay}} 天起"},O8o="累计获得",L8o="已释放邀请返利",U8o="冻结中邀请返利",B8o="邀请人数",F8o="有效邀请",z8o="已释放被邀奖励",q8o="冻结中被邀奖励",H8o="取消 / 回扣",V8o="你邀请的人",K8o="返利明细",G8o={user:"用户",joined:"注册时间",topups:"充值笔数",earned:"你已获得",frozen:"冻结中",date:"时间",event:"事件",topupAmount:"对方充值",rate:"比例",releaseAt:"释放时间",cashback:"返利",status:"状态"},W8o={title:"还没有邀请",description:"分享你的链接即可开始获得返利。"},Y8o={inviteeSignedUp:"被邀请人成功注册",youSignedUp:"你通过邀请成功注册",inviteePaid:"被邀请人成功消费",youPaid:"你作为被邀请人成功消费"},Q8o={frozen:"冻结中",released:"已释放",cancelled:"已取消",partially_reversed:"部分回扣",reversed:"已回扣",failed:"失败",ski
849pped:"已跳过"},X8o={title:g8o,description:h8o,error:y8o,yourLink:v8o,shareVia:b8o,wechatCopied:x8o,copy:$8o,copied:w8o,wechat:k8o,x:C8o,telegram:S8o,reddit:A8o,linkedin:T8o,whatsapp:R8o,email:P8o,facebook:_8o,share:j8o,offer:N8o,releaseDelay:D8o,role:M8o,roleOffer:E8o,policy:I8o,totalEarned:O8o,availableEarned:L8o,frozenEarned:U8o,invited:B8o,active:F8o,availableReceived:z8o,frozenReceived:q8o,cancelledReversed:H8o,peopleYouInvited:V8o,history:K8o,col:G8o,empty:W8o,event:Y8o,status:Q8o},Z8o="设置",J8o="管理账号偏好和控制台默认选项。",eFo="当前登录:{{email}}",tFo="显示名称",nFo="语言",aFo="时区",oFo="资料加载失败",sFo="保存失败",rFo="放弃更改?",iFo="你有未保存的更改,现在离开将丢弃这些更改。",lFo="放弃",cFo="继续编辑",dFo={title:Z8o,description:J8o,signedInAs:eFo,displayName:tFo,locale:nFo,timezone:aFo,failedLoad:oFo,failedSave:sFo,discardTitle:rFo,discardMessage:iFo,discardConfirm:lFo,keepEditing:cFo},uFo="任务墙",mFo="把 OneHop 分享给你的读者,赚取试用金。每一条提交我们都人工审核。",pFo="你的内容链接",fFo="https://…",gFo="提交",hFo="已提交,我们会尽快审核。",yFo="可提交的平台:{{hosts}}",vFo="上次被驳回:{{reason}}。改好后可以重新提交。",bFo={pending:"审核中",approved:"已到账",rejected:"已驳回",active:"已生效"},xFo={title:"暂时没有任务",description:"过阵子再来看看——这类活动我们会不定期上新。"},$Fo={x_quote:{title:"在 X 引用转发我们",description:"引用转发 @OneHopAI 的置顶推文,并写上你自己的使用感受。",rules:["X 账号需注册满 6 个自然月且至少有 10 名关注者。","提交你自己那条引用推文的链接,不是原推的链接。","审核通过后 2 小时内到账。"]},youtube_tutorial:{title:"发一条 YouTube 教程",description:"6 分钟以上的视频,讲清楚你怎么把 OneHop 接进自己的 agent。",rules:["发布后提交视频链接。","YouTube 账号粉丝需 ≥ 50。","每个账号仅限参加一次。","审核通过后 2 小时内到账。"]},short_video:{title:"发一条短视频",description:"在 TikTok 或 YouTube 发 40 秒以上的短视频,提到你的 OneHop 配置。",rules:["发布后提交视频链接。","审核通过后 2 小时内到账。"]},github_readme:{title:"在你的 GitHub README 里加上 OneHop",description:"在你自己的仓库 README 里加一句 OneHop 的赞助信息,此后每笔充值额外加送 15%。",rules:["README 上线后提交仓库链接。","这是永久的,不是一次性:此后每笔充值会取「全站标准赠送」与「你的 15%」里更高的那个。","可直接复制的文案见下方。"]}},wFo={load:"任务墙加载失败",generic:"提交失败",urlRequired:"请先粘贴你的内容链接。",urlTooLong:"这个链接太长了。",urlMalformed:"这不像是一个有效的链接。",hostNotAllowed:"该任务只接受上面列出的平台的链接。",notAPost:"请填具体那条内容的链接,不是主页或频道页。",alreadySubmitted:"这个任务你已经提交过了。",notAvailable:"该任务当前不可用。",busy:"今天的审核量已满,请明天再试。",emailUnverified:"请先验证你的邮箱。",accountTooNew:"你的账号注册时间还不够。",riskFlagged:"该账号暂时无法参加。如认为有误请联系客服。",accountInactive:"该账号未处于正常状态。",deviceAlreadyClaimed:"该设备上已有另一个账号参加过。"},kFo="感谢 [OneHop]({{url}}) 对本项目的赞助!OneHop 可为用户提供一枚兼容 OpenAI 协议的 API 密钥,即可调用上百款主流大模型,包括 GPT、Claude、Gemini、DeepSeek、Kimi 以及通义千问(Qwen)。你无需管理多家服务商账号,也不用反复修改代码,就能自由切换模型;并且采用按量付费模式。→ {{domain}}",CFo="复制这段文案",SFo={title:uFo,description:mFo,urlLabel:pFo,urlPlaceholder:fFo,submit:gFo,submitted:hFo,allowedHosts:yFo,rejectedHint:vFo,status:bFo,empty:xFo,item:$Fo,error:wFo,sponsorBlurb:kFo,copyBlurb:CFo},AFo="在线客服",TFo="支持工单",RFo="提交工单,我们会尽快回复你。",PFo="新建工单",_Fo="工单不存在或已被删除。",jFo={title:"还没有工单",body:"遇到问题了?提个工单,我们来帮你。",cta:"提交第一个工单"},NFo={subject:"主题",category:"类型",status:"状态",updated:"更新时间",user:"用户"},DFo={billing:"计费",technical:"技术",account:"账号",other:"其他"},MFo={open:"待处理",pending:"待回复",resolved:"已解决",closed:"已关闭"},EFo={allStatuses:"全部状态",allCategories:"全部类型",search:"搜索邮箱或主题"},IFo={subject:"主题",subjectPlaceholder:"简要描述你的问题",category:"类型",message:"内容",messagePlaceholder:"说说发生了什么…",attachments:"附件",addAttachment:"添加文件",submit:"提交工单",cancel:"取消"},OFo={you:"你",support:"客服",system:"系统",replyPlaceholder:"写回复…",send:"发送",closedNotice:"工单已关闭。如仍需帮助,请新建工单。",sendHint:"按 ⌘/Ctrl + Enter 发送",back:"返回工单列表",systemStatus:{open:"重新打开了工单",pending:"将工单标记为等待用户",resolved:"将工单标记为已解决",closed:"关闭了工单"}},LFo={title:"工单中心",resolve:"标记已解决",close:"关闭",reopen:"重新打开",unread:"未读"},UFo="加载更多",BFo={created:"工单已提交",replied:"回复已发送",statusUpdated:"状态已更新",error:"出错了,请重试"},FFo={liveChat:AFo,title:TFo,subtitle:RFo,newTicket:PFo,notFound:_Fo,empty:jFo,columns:NFo,category:DFo,status:MFo,filters:EFo,form:IFo,thread:OFo,admin:LFo,loadMore:UFo,toast:BFo}
849,zFo="用量",qFo="余额、消耗速度,以及你的开销都花在了哪里。",HFo="活动",VFo="此区间内暂无活动",KFo="用量明细",GFo="按 API key",WFo="按模型",YFo="按 token 类型",QFo="暂无数据",XFo="此区间内暂无用量。",ZFo="按当前速度,余额预计还能用 {{days}} 天(约 {{rate}}/天)。",JFo="输出",ezo="缓存",tzo={tokens:"Token",requests:"请求数",cost:"费用"},nzo="其他",azo="次",ozo="tok",szo="刷新中…",rzo="暂无数据",izo="发起一次请求即可开始积累数据。",lzo="热门 API key",czo="充值",dzo={title:"无法加载用量"},uzo={firstToken:"首 token",latency:"平均延迟",requests:"请求",spend:"消费",spendSub:"本期计费",successRate:"{{rate}}% 成功",tokens:"Tokens",textDuration:"文本",mediaDuration:"图片/视频",cacheHit:"缓存命中 {{rate}}%",projected:"约 {{amount}}/月",vsPrevious:"对比上一周期"},mzo={all:"全部时间",custom:"自定义",last1h:"最近 1 小时",last30d:"最近 30 天",last7d:"最近 7 天",thisMonth:"本月",today:"今天",yesterday:"昨天",byMonth:"按月份"},pzo={failed:"失败",success:"成功"},fzo={cacheRead:"缓存读取",cacheWrite:"缓存写入",cacheWrite1h:"缓存写入 1h",cacheWrite5m:"缓存写入 5m",completion:"输出",prompt:"输入"},gzo={body:"从终端发起请求,或打开 playground —— 几秒内用量就会出现在这里。",openPlayground:"打开 playground",title:"你的 key 已就绪"},hzo={body:"创建第一个 API key,用一个 URL 路由所有请求,用量随后就会显示在这里。",createKey:"创建 API key",title:"欢迎使用 OneHop",tryPlayground:"试试 playground"},yzo="刷新",vzo="当前筛选中 {{count}} 个成功请求",bzo="总 tokens",xzo="输入 {{input}} / 输出 {{output}}",$zo="计费 credit",wzo="{{cost}} 上游实际成本",kzo="平均延迟",Czo="首 token {{duration}}",Szo="30 日活动",Azo="成功请求、token 量和计费 credit。",Tzo="正在加载用量趋势",Rzo="暂无用量趋势",Pzo="成功请求出现后会显示用量趋势。",_zo="热门模型",jzo="最近 30 天按模型统计的计费 credit。",Nzo="暂无模型用量",Dzo="成功请求出现后会显示模型拆分。",Mzo="模型",Ezo="全部模型",Izo="状态",Ozo="协议",Lzo="行数",Uzo="重置",Bzo="用量记录",Fzo="API key",zzo="Endpoint",qzo="类型",Hzo="Tokens",Vzo="成本",Kzo="耗时",Gzo="时间",Wzo="User-Agent",Yzo="详情",Qzo="请求详情",Xzo="用量记录详情与计费元数据。",Zzo="请求 ID",Jzo="操作",e7o="输入 tokens",t7o="输出 tokens",n7o="缓存读取 tokens",a7o="缓存写入 tokens",o7o="输入成本",s7o="输出成本",r7o="缓存读取成本",i7o="缓存写入成本",l7o="错误码",c7o="错误信息",d7o="未找到。",u7o="credit",m7o="总计 {{count}}",p7o="正在加载用量记录",f7o="暂无用量记录",g7o="换一组筛选条件试试。",h7o="请求流经你的 API keys 后,记录会显示在这里。",y7o="第 {{page}} 页 · 显示 {{shown}} 条,共 {{total}} 条匹配记录",v7o="上一页",b7o="下一页",x7o={activeDays:"活跃天数",longestStreak:"最长连续",daysValue:"{{n}} 天",totalSpend:"本期消费",peakDay:"最活跃日"},$7o="Credit",w7o="Tokens",k7o="请求",C7o={time:"时间",apiKey:"API Key",model:"模型",reasoningEffort:"推理强度",endpoint:"Endpoint",type:"类型",billingMode:"计费模式",inputTokens:"输入 Tokens",outputTokens:"输出 Tokens",cacheReadTokens:"缓存读取 Tokens",cacheWriteTokens:"缓存写入 Tokens",totalTokens:"总 Tokens",billedCredit:"计费 Credit",firstTokenMs:"首 Token 毫秒",durationMs:"耗时毫秒",status:"状态",userAgent:"User-Agent"},S7o={mon:"周一",wed:"周三",fri:"周五"},A7o="少",T7o="多",R7o={title:zFo,description:qFo,activity:HFo,activityEmpty:VFo,breakdown:KFo,byApiKey:GFo,byModel:WFo,byTokenType:YFo,chartEmpty:QFo,chartEmptyHint:XFo,burnRate:ZFo,in:"输入",out:JFo,cache:ezo,metric:tzo,other:nzo,req:azo,tok:ozo,refreshing:szo,topEmpty:rzo,topEmptyHint:izo,topKeys:lzo,topUp:czo,error:dzo,kpi:uzo,range:mzo,requests:pzo,tokenType:fzo,noRequests:gzo,welcome:hzo,refresh:yzo,successfulFilter:vzo,totalTokens:bzo,inOut:xzo,billedCredit:$zo,upstreamA
849ctualCost:wzo,avgLatency:kzo,firstToken:Czo,activityTitle:Szo,activityDescription:Azo,loadingTrend:Tzo,noUsageTrend:Rzo,trendDescription:Pzo,topModels:_zo,topModelsDescription:jzo,noModelUsage:Nzo,noModelUsageDescription:Dzo,model:Mzo,allModels:Ezo,status:Izo,protocol:Ozo,rows:Lzo,reset:Uzo,tableLabel:Bzo,apiKey:Fzo,endpoint:zzo,type:qzo,tokens:Hzo,cost:Vzo,duration:Kzo,time:Gzo,userAgent:Wzo,details:Yzo,requestDetail:Qzo,detailDescription:Xzo,requestId:Zzo,operation:Jzo,inputTokens:e7o,outputTokens:t7o,cacheReadTokens:n7o,cacheWriteTokens:a7o,inputCost:o7o,outputCost:s7o,cacheReadCost:r7o,cacheWriteCost:i7o,errorCode:l7o,errorMessage:c7o,notFound:d7o,creditSuffix:u7o,total:m7o,loadingRecords:p7o,noRecords:f7o,differentFilters:g7o,recordsEmpty:h7o,pageSummary:y7o,previous:v7o,next:b7o,stat:x7o,chartCredit:$7o,chartTokens:w7o,chartRequests:k7o,csv:C7o,weekday:S7o,activityLess:A7o,activityMore:T7o},P7o="註冊准入",_7o="受控發布期註冊閘。名單內信箱/域名、已註冊使用者和在職管理員可以建立帳號。",j7o="註冊准入名單",N7o="准入名單為空",D7o="ä¿¡ç®± / 域名",M7o="備註",E7o="狀態",I7o="註冊狀態",O7o="有效期",L7o="邀請",U7o="更新於",B7o="操作",F7o="新增",z7o="批量新增",q7o="編輯",H7o="儲存",V7o="邀請",K7o="復原",G7o="移除",W7o="新增註冊准入",Y7o="編輯 {{email}}",Q7o="批量新增註冊准入",X7o="可新增精確信箱,也可用 @company.com 放行整個域名。已註冊使用者與在職管理員始終放行。",Z7o="每行貼上一個信箱或 @domain。非法和重複行會跳過,不會影響其他行。",J7o="信箱或域名",eqo="[email protected] 或 @company.com",tqo="用 @company.com 放行整個域名。",nqo="備註(可選)",aqo="例如 創始團隊",oqo="有效期(可選)",sqo="留空表示長期有效。到期後將不再允許新註冊。",rqo="ä¿¡ç®± / 域名",iqo=`[email protected]
850[email protected]
851@partner.com`,lqo="搜尋",cqo="搜尋信箱或域名",dqo="狀態",uqo="准入檢查",mqo="[email protected]",pqo="檢查",fqo="允許",gqo="拒絕",hqo={existing_user:"已註冊使用者始終允許",active_admin:"在職管理員始終允許",email_allowlist:"命中精確信箱",domain_allowlist:"命中域名規則",not_allowed:"未命中任何有效規則"},yqo="已註冊",vqo="未註冊",bqo="管理員",xqo="域名規則",$qo="長期",wqo="已加入註冊准入。",kqo="註冊准入已更新。",Cqo="已新增 {{count}} 條。",Sqo="邀請郵件已發送。",Aqo="已復原。",Tqo="已從註冊准入移除。",Rqo="將 {{email}} 移出註冊准入?除非命中其他規則,否則該信箱將無法建立新帳號。",Pqo={title:"郵箱域名單",description:"疊加在內建基線之上的可熱配郵箱域名單。黑名單域註冊即拒;主流域跳過風控觀察名單。",add:"新增域名",addTitle:"新增域名規則",addDescription:"黑名單註冊即拒(403)。主流標記把該域視為可信,新使用者不進觀察名單。",kindLabel:"名單",kindBlacklist:"黑名單 — 拒絕註冊",kindMainstream:"主流 — 跳過觀察名單",domainLabel:"域名",domainPlaceholder:"example.com",noteLabel:"備註",notePlaceholder:"選填 — 說明原因",search:"搜尋",searchPlaceholder:"依域名篩選",kindFilter:"名單",allKinds:"全部名單",statusFilter:"狀態",statusActive:"生效",statusRevoked:"已移除",statusAll:"全部",label:"郵箱域名單",empty:"暫無域名規則",colDomain:"域名",colKind:"名單",colNote:"備註",colAddedBy:"新增者",colCreated:"建立時間",status:"狀態",action:"操作",remove:"移除",restore:"復原",confirmRemove:"確認移除 {{domain}} 的規則?",added:"已新增域名規則",removed:"已移除域名規則",restored:"已復原域名規則",badgeBlacklist:"黑名單",badgeMainstream:"主流"},_qo={title:P7o,description:_7o,label:j7o,empty:N7o,email:D7o,note:M7o,status:E7o,registration:I7o,expiresAt:O7o,invites:L7o,updatedAt:U7o,action:B7o,add:F7o,bulkAdd:z7o,edit:q7o,save:H7o,invite:V7o,restore:K7o,revoke:G7o,newTitle:W7o,editTitle:Y7o,bulkTitle:Q7o,formDescription:X7o,bulkDescription:Z7o,emailLabel:J7o,emailPlaceholder:eqo,emailHint:tqo,noteLabel:nqo,notePlaceholder:aqo,expiresAtLabel:oqo,expiresAtHint:sqo,bulkEntriesLabel:rqo,bulkEntriesPlaceholder:iqo,search:lqo,searchPlaceholder:cqo,statusFilter:dqo,checkLabel:uqo,checkPlaceholder:mqo,check:pqo,checkAllowed:fqo,checkDenied:gqo,checkReasons:hqo,registered:yqo,notRegistered:vqo,adminAllowed:bqo,domainRule:xqo,never:$qo,added:wqo,updated:kqo,bulkAdded:Cqo,invited:Sqo,restored:Aqo,revoked:Tqo,confirmRevoke:Rqo,domainRules:Pqo},jqo="錢包帳單",Nqo="查看所有使用者的支付、錢包與退款。",Dqo={payments:"支付",wallets:"錢包",refunds:"退款"},Mqo="使用者信箱",Eqo="以信箱搜尋…",Iqo="建立時間",Oqo="建立時間",Lqo="金額 (USD)",Uqo="最小",Bqo="最大",Fqo="退款",zqo="暫無退款",qqo="退款",Hqo="類型",Vqo="全額退款",Kqo="部分退款",Gqo="原始支付",Wqo="錢包",Yqo="錢包",Qqo="使用者",Xqo="總計",Zqo="已購買",Jqo="獎勵",eHo="暫無錢包",tHo="支付",nHo="支付狀態",aHo="暫無支付",oHo="支付",sHo="狀態",rHo="金額",iHo="支付時間",lHo="退款",cHo="不可退款(狀態必須為已支付)",dHo="在 Stripe Dashboard 中查看",uHo="最近 7 天失敗和死信 Webhook 數。0=綠色,1-9=黃色,10+=紅色。",mHo="異常",pHo="退款 {{id}}",fHo="這會透過 Stripe 向 {{user}} 退款。下方的手續費會從退回金額中扣除,取消勾選可免除。原始付款附帶的促銷 Credits 會按比例作廢。",gHo="退款金額 (USD)",hHo="最多 ${{value}}",yHo="原因",vHo="正在載入退款預覽…",bHo="退款預覽載入失敗,預覽成功前無法提交退款。",xHo="找不到可退款的交易——該筆支付可能已全額退款。",$Ho="實付金額",wHo="已退金額",kHo="本次退款",CHo="回收 Credit",SHo="含按比例回收的優惠券折扣 Credit {{amount}}",AHo="含按比例回收的額外發放 Credit {{amount}}",THo="撤銷獎勵",RHo="本次退款將撤銷 {{amount}} 促銷獎勵額度。",PHo="經 Stripe 退回",_Ho="收取手續費({{fee}},覆蓋 Stripe 通道成本)",jHo="手續費({{fee}})",NHo="金額超過最大可退 {{value}}",DHo="請輸入有效的正數金額",MHo="用戶已消費部分已購 Credit,最多可退 {{value}}",EHo="該筆支付已全額退款",IHo="扣完手續費後實退金額過小,退款額至少 {{value}}。",OHo="取消",LHo="發起退款",UHo="提交中...",BHo="退款已提交",FHo="Stripe 會在 1-3 個工作天內退回款項ã€
851‚審計日誌已寫入。",zHo="退款失敗",qHo={title:jqo,description:Nqo,tabs:Dqo,emailFilter:Mqo,emailPlaceholder:Eqo,created:Iqo,createdRange:Oqo,amountRange:Lqo,amountMin:Uqo,amountMax:Bqo,refunds:Fqo,noRefunds:zqo,refundId:qqo,refundType:Hqo,typeRefund:Vqo,typePartialRefund:Kqo,originalPayment:Gqo,wallets:Wqo,wallet:Yqo,user:Qqo,total:Xqo,purchased:Zqo,bonus:Jqo,noWallets:eHo,payments:tHo,paymentStatus:nHo,noPayments:aHo,payment:oHo,status:sHo,amount:rHo,paid:iHo,refund:lHo,notRefundable:cHo,viewInStripe:dHo,webhookHealthHint:uHo,unhealthyWebhooks:mHo,refundConfirmTitle:pHo,refundConfirmBody:fHo,refundAmountLabel:gHo,refundMaxHint:hHo,refundReasonLabel:yHo,refundPreviewLoading:vHo,refundPreviewFailed:bHo,refundNoRefundableTx:xHo,refundPaidRow:$Ho,refundAlreadyRefundedRow:wHo,refundThisRefundRow:kHo,refundCreditReclaimRow:CHo,refundCreditCouponNote:SHo,refundCreditExtraNote:AHo,refundBonusReverseRow:THo,refundBonusForfeitWarning:RHo,refundStripeReturnRow:PHo,refundFeeToggle:_Ho,refundPlatformFeeRow:jHo,refundExceedsMax:NHo,refundAmountInvalid:DHo,refundInsufficientCredit:MHo,refundAlreadyFull:EHo,refundBelowMin:IHo,cancel:OHo,confirmRefund:LHo,submitting:UHo,refundSubmittedTitle:BHo,refundSubmittedBody:FHo,refundFailedTitle:zHo},HHo="活動營運",VHo="受眾分群、限定模型授權、模型折扣與定向贈金。",KHo={mobileLabel:"活動模組",segments:"受眾",access:"模型授權",discounts:"模型折扣",grants:"定向贈金",recurring:"週期活動"},GHo="狀態",WHo="操作",YHo="全體使用者",QHo="始終",XHo="永不過期",ZHo="生效時段",JHo="留空即長期生效。時間取所選日期的當日。",eVo="生效起",tVo="生效止",nVo="暫停",aVo="恢復",oVo="新增",sVo="移除",rVo="刪除",iVo="清除",lVo="關閉",cVo={allKinds:"全部類型",segmentKindStatic:"靜態",segmentKindDynamic:"動態",grantKindGrant:"發放",grantKindRevoke:"撤銷",allStatuses:"全部狀態",statusActive:"生效中",statusPaused:"已暫停",statusArchived:"已封存",statusEnded:"已結束",statusPending:"待處理",statusProcessing:"處理中",statusCompleted:"已完成",statusFailed:"失敗"},dVo={title:"受眾",create:"新建受眾",empty:"暫無受眾。建立一個用於定向授權、折扣和贈金。",name:"名稱",namePlaceholder:"例如:中國高頻使用者",description:"說明",kind:"類型",kind_static:"靜態",kind_dynamic:"動態",kindHint:"靜態 = 手工挑選的使用者名單;動態 = 命中規則的使用者,物化時重新整理。",members:"成員",materialized:"上次重新整理",basics:"基本資訊",sheetDescription:"受眾會將使用者分組,用於定向模型授權、折扣與贈金。",saved:"受眾已儲存",created:"受眾已建立",rule:"匹配規則",ruleHint:"所有條件需同時滿足 (AND)。空規則不匹配任何人。",countryIn:"國家屬於",countryInHint:"以逗號分隔的 ISO-2 代碼,例如 CN, US, JP。",signupAfter:"註冊晚於",signupBefore:"註冊早於",minSpend:"累計消費 >= (美元)",minSpendHint:"僅包含累計消費達到該金額的使用者。",previewing:"估算中……",matchCount:"預計命中:{{value}} 人",membersTitle:"成員",membersHint:"搜尋並新增使用者。規則命中的成員為唯讀。",addMembers:"新增使用者",searchUsers:"依 email 或 ID 搜尋",noUsers:"沒有符合的使用者。",noMembers:"暫無成員。",membersAdded:"已新增 {{count}} 名成員",membersAdded_plural:"已新增 {{count}} 名成員",source_manual:"手動",source_rule:"規則",materializeTitle:"物化",materializeHint:"將規則快照成成員名單。可隨時重新執行來更新。",materialize:"立即物化",materializing:"物化中……",materializeConfirm:"要按目前規則重新整理成員嗎?這會替換規則命中的快照。",materializeDone:"已物化 {{
851count}} 名成員",lastMaterialized:"上次物化 {{value}}",neverMaterialized:"尚未物化",deleteSegment:"刪除受眾",deleteConfirm:"要刪除該受眾嗎?引用它的授權、折扣與贈金將失去此定向。"},uVo={title:"模型授權",create:"授予存取",empty:"暫無授權。",model:"模型",segment:"受眾",target:"目標",validFrom:"生效起",validTo:"生效止",sheetDescription:"將某個限定模型授予某受眾,可選擇設定生效時段。",created:"已授予存取",statusUpdated:"狀態已更新",deleteConfirm:"要移除此授權嗎?",noSegmentsTitle:"請先建立受眾",noSegmentsDescription:"授權會按受眾下發。請先在「受眾」頁建立受眾,再回來授予模型存取。",publicHint:"此模型為公開模型 —— 所有人本來就可用。",publicModelTitle:"模型為公開",publicModelWarning:"{{model}} 目前為公開模型,在「模型」頁改為限定前,此授權不會生效。請到那裡將其切為限定,即可鎖定給該受眾。",createAnyway:"仍然建立"},mVo={title:"模型折扣",create:"新建折扣",empty:"暫無折扣。",model:"模型",audience:"受眾",audienceHint:"保持全體使用者即對所有人打折。",discount:"折扣",window:"時段",live:"生效中",end:"結束",amount:"折扣",target:"目標",name:"內部名稱",nameHint:"可選,僅供內部備註。",percentLabel:"在平台價基礎上額外打折",percentHint:"1-99%。作用在我們的平台價 (our_price) 之上,非官方價。",percentError:"請輸入 1 到 99 之間的值。",previewPlatform:"折後平台價",previewVsOfficial:"比官方省",pickStart:"選擇起始日期",sheetDescription:"折扣作用在平台價之上;官方價僅作對照展示。",created:"折扣已建立",saved:"折扣已儲存",statusUpdated:"狀態已更新",deleteConfirm:"要刪除此折扣嗎?",liveReadonly:"此折扣正在生效 —— 折扣值、時段、名稱已鎖定。需暫停或結束後才能修改。",terminalReadonly:"此折扣已結束,為唯讀。"},pVo={title:"定向贈金",create:"新建贈金",empty:"暫無定向贈金。",time:"時間",kind:"類型",kind_grant:"發放",kind_revoke:"撤銷",model:"模型",modelHint:"贈金在所選模型內共享,任一模型消費都從同一餘額扣除。",pickModels:"選擇模型",nModels:"已選 {{count}} 個模型",pasteEmails:"貼上信箱批次新增",pasteEmailsPlaceholder:"[email protected], [email protected] —— 支援換行、逗號或分號分隔",importEmails:"解析並新增",importMatched:"匹配到 {{count}} 個使用者。",importUnmatched:"{{count}} 個信箱找不到對應使用者:",importInvalid:"{{count}} 個格式無效已略過:",importInactive:"{{count}} 個已匹配但非活躍,發放時將被略過:",preset7d:"7 天",preset30d:"30 天",preset90d:"90 天",total:"合計",notifyYes:"是",notifyNo:"否",recipients:"收件人",amount:"金額",expiry:"過期",expiryHint:"可選。未用餘額會在該日期過期。",audience:"受眾",bySegment:"按受眾",byUsers:"指定使用者",segment:"受眾",users:"使用者",searchUsers:"依 email 或 ID 搜尋",noUsers:"沒有符合的使用者。",grantDetails:"發放詳情",amountEach:"每人金額 (美元)",amountHint:"每人 0.01-2000。",notifyEmail:"以 email 通知收件人",note:"備註",summary:"{{count}} 人 x {{amount}} = 合計 {{total}}",send:"發放贈金",sending:"排隊中……",queued:"贈金已入隊 —— 正向收件人逐一下發",confirmTitle:"確認發放定向贈金?",confirmMessage:"向 {{count}} 人各發 {{amount}} (合計 {{total}})?",confirmSend:"發放贈金",sheetDescription:"向某受眾或手工挑選的使用者名單發放限定模型的贈金。",batchTitle:"贈金批次",succeeded:"成功",failed:"失敗",revokedAmount:"已回收",completedAt:"完成於",revoke:"撤銷",revokeConfirm:"要從 {{model}} 的 {{count}} 名收件人回收未用餘額嗎?",revokeQueued:"撤銷已入隊"},fVo={title:"週期活動",create:"新建週期活動",editTitle:"編輯週期活動",empty:"暫無週期活動。建立一個,按每天/每週給受眾發放免費 token 或受限專款。",sheetDescription:"免費 token 或受限專款,每個週期為受眾重新整理(懶生成,首次呼叫時下發)。",basics:"基本資訊",name:"名稱",namePlaceholder:"ä¾
851‹å¦‚:每日免費 Kimi token",unit:"單位",unitHint:"Token = 每期免費 token 額度;USD = 受限專款(僅限單模型)。",unitLocked:"單位建立後固定 —— 換單位請新建一條活動。",unit_tokens:"Token",unit_usd:"美元",allUnits:"全部單位",targeting:"定向",models:"模型",modelsHint:"免費 token 可在所選的全部模型上使用。",model:"模型",usdSingleModelHint:"USD 活動僅限單模型 —— 多模型會讓消費無法歸屬。",pickModels:"選擇模型",nModels:"已選 {{count}} 個模型",nModels_plural:"已選 {{count}} 個模型",audience:"受眾",audienceHint:"保持全體使用者即對所有人發放。",schedule:"額度與排程",perPeriod:"每期額度",tokensHint:"正整數,例如每期 100000 token。",usdHint:"每期 0.01-2000 美元。",cadence:"週期",cadence_daily:"每天",cadence_weekly:"每週",anchorTz:"錨點時區",anchorTzHint:"週期邊界以該時區的本地午夜為準。",startsAt:"開始",startsAtHint:"可選。留空即立即生效。",endsAt:"結束",endsAtHint:"可選。留空即無截止日期。",immediately:"立即",excludeRisky:"排除風險帳戶",thisPeriod:"本期(人數 · 已用/已發)",allStatuses:"全部狀態",status_draft:"草稿",status_active:"生效中",status_paused:"已暫停",status_archived:"已封存",created:"週期活動已建立",saved:"週期活動已儲存"},gVo={title:HHo,description:VHo,tabs:KHo,status:GHo,actions:WHo,allUsers:YHo,always:QHo,noExpiry:XHo,window:ZHo,windowHint:JHo,validFrom:eVo,validTo:tVo,pause:nVo,resume:aVo,actionAdd:oVo,actionRemove:sVo,actionDelete:rVo,actionClear:iVo,actionClose:lVo,filters:cVo,segments:dVo,access:uVo,discounts:mVo,grants:pVo,recurring:fVo},hVo="系統公告",yVo="在官網和控制台展示的橫幅 / 彈窗公告。",vVo="公告",bVo="在 www 和控制台展示的橫幅 / 彈窗公告。",xVo="新建公告",$Vo="暫無公告,點擊「新建公告」建立第一條。",wVo="訊息內容",kVo="支援內嵌連結:[文字](https://… 或 /路徑),可放多個。",CVo="按鈕文字",SVo="按鈕連結",AVo="級別",TVo="展示位置",RVo="上線時間",PVo="下線時間",_Vo="可關閉",jVo="狀態",NVo="歸檔",DVo="歸檔此公告?歸檔後使用者將不再看到。",MVo="新建公告",EVo="編輯公告",IVo="標題",OVo="類型",LVo="內容",UVo="展示形式",BVo="橫幅",FVo="彈窗",zVo="草稿",qVo="已發布",HVo="資訊",VVo="警告",KVo="嚴重",GVo="僅控制台",WVo="僅官網",YVo="兩者都",QVo="頭圖",XVo="上傳圖片,或貼上 https 連結,可留空。支援 PNG / JPEG / WebP / GIF,不超過 5MB。",ZVo="上傳圖片",JVo="上傳中…",e9o="移除",t9o="只支援 PNG、JPEG、WebP、GIF 圖片。",n9o="圖片不能超過 5MB。",a9o="上傳失敗,請重試。",o9o="標題",s9o="正文",r9o="操作按鈕",i9o="按鈕文字",l9o="按鈕連結",c9o="類型",d9o="新增按鈕",u9o="刪除",m9o="主按鈕",p9o="次按鈕",f9o="文字連結",g9o="簡體中文(母本)",h9o="營運只需填簡體中文,點「一鍵翻譯」自動翻成其餘語言。",y9o="一鍵翻譯其餘語言",v9o="翻譯中…",b9o="其餘語言(已翻譯,可編輯)",x9o="已翻譯 {{ok}} 種語言",$9o="{{failed}} 種語言翻譯失敗,請手填或重試",w9o="中文母本已修改但未重新翻譯,下方譯文仍是舊文案,請重新點「一鍵翻譯」,否則海外使用者會看到過期內容。",k9o="更新後重新展示給已看過的使用者",C9o="請先填寫簡體中文的正文。",S9o={title:hVo,description:yVo,annTitle:vVo,annDescription:bVo,annNewButton:xVo,annEmpty:$Vo,annMessage:wVo,annInlineLinkHint:kVo,annCtaText:CVo,annCtaUrl:SVo,annSeverity:AVo,annAudience:TVo,annStartsAt:RVo,annEndsAt:PVo,annDismissible:_Vo,annStatus:jVo,annArchive:NVo,annArchiveConfirm:DVo,annCreateTitle:MVo,annEditTitle:EVo,annColTitle:IVo,annColType:OVo,annColContent:LVo,annDisplayType:UVo,annTypeBanner:BVo,annTypeModal:FVo,annStatusDraft:zVo,annStatusActive:qVo,annSevInfo:HVo,annSevWarning:VVo,annSevCritical:KVo,annAudConsole:GVo,annAudPublic:WVo,annAudAll:YVo,annHeroImage:QVo,annHeroImageHint:XVo,annHeroImageUpload:ZVo,annHeroImageUploading:JVo,annHeroImageRemove:e9o,annHeroImageBadType:t9o,annHeroImageTooLarge:n9o,annHeroImageUploadFailed:a9o,annModalTitle:o9o,annBody:s9o,annActions:r9o,annActionLabel:i9o,annActionUrl:l9o,annActionVariant:c9o,annActionAdd:d9o,annActionRemove:u9o,annVariantPrimary:m9o,annVariantSecondary:p9o,annVariantLink:f9o,annSourceLocale:g9o,annSourceHint:h9o,annTranslate:y9o,annTranslating:v9o,annOtherLocales:b9o,annTranslateDone:x9o,annTranslateParti
851al:$9o,annTranslateStale:w9o,annBumpRevision:k9o,annTranslateNeedSource:C9o},A9o="儀表板",T9o="平台健康、用量與告警的即時概覽。",R9o="重新整理",P9o="重新整理中",_9o="更新於 {{time}}",j9o="正在載入總覽",N9o="載入總覽失敗",D9o="暫無資料",M9o="暫無流量",E9o="影片失敗率",I9o="平均延遲",O9o="錯誤類型",L9o="無錯誤",U9o="模型異常榜",B9o="所有模型正常",F9o="元件",z9o="次",q9o="結帳放棄率",H9o="退款",V9o="拒付",K9o="首儲轉化",G9o={kpis:"核心指標",alerts:"告警",health:"系統健康",payment:"支付健康",revenue:"營收與成長",trend:"趨勢",alertSettings:"告警設定",leaderboard:"成長榜單"},W9o={title:"邀請排行",boardAria:"選擇榜單",rangeAria:"選擇時間範圍",boards:{invites:"邀請人數",revenue:"儲值額"},ranges:{today:"今天","3d":"近 3 天","7d":"近 7 天","30d":"近 30 天"},ofTotal:"共 {{total}} 人",countPair:"有效 {{valid}} / 共 {{total}}",empty:"該時間段內暫無邀請",failedLoad:"載入榜單失敗",validHint:"有效 = 風控正常且綁定生效"},Y9o={requests:"請求數",successRate:"支付成功率",activeUsers:"活躍使用者",newSignups:"新註冊",newSignupsHint:"僅統計正常使用者(不含已標記)",billedCredit:"計費額度",errorRate:"錯誤率",avgLatency:"平均延遲",balance:"平台餘額",vsPrevious:"環比 {{delta}}",vsYesterday:"環比昨日",noChange:"持平",successFailed:"成功 {{success}} · 失敗 {{failed}}"},Q9o={today:"今日營收",trendTitle:"今日營收 vs 昨日",monthDetail:"{{count}} 筆成功儲值 · 本月 {{mtd}}"},X9o={summary:"{{paid}} 已付 · {{failed}} 失敗 · {{pending}} 待支付"},Z9o={paidOfSignups:"{{paid}} 已首充 / {{signups}} 註冊"},J9o={healthy:"正常",degraded:"效能下降",down:"中斷",unknown:"未知"},eKo={critical:"嚴重",warning:"警告",info:"提示",ok:"正常"},tKo={operational:"運行正常",degraded:"效能下降",down:"服務中斷",upstream:"上游渠道",gateway:"Gateway",billing:"計費",jobs:"任務佇列",tierReason:{ok:"達標",watch:"關注:接近閾值",warning:"警告:已越警戒線",critical:"嚴重:已越嚴重線"}},nKo={title:"活躍告警",empty:"系統一切正常",activeCount:"{{count}} 條活躍告警",triggeredAt:"觸發於 {{time}}",viewDetail:"查看詳情",acknowledge:"確認",resolved:"已解決"},aKo={title:"告警設定",description:"為 6 類告警設定 warning / critical 雙檔閾值,指標越線時通知營運。嚴重等級由檔位自動判定,無需單獨配置。",enabled:"啟用",warnThreshold:"Warning 閾值",critThreshold:"Critical 閾值",cooldown:"冷卻(分鐘)",cooldownHint:"同一告警兩次通知之間的最短間隔,防止刷屏。",rateHint:"比率,取值 0–1(如 0.05 = 5%)。",countHint:"絕對數值,≥ 0。",directionHigher:"越高越壞:warning ≤ critical。",directionLower:"越低越壞:warning ≥ critical。",lastFired:"上次觸發 {{time}}",neverFired:"從未觸發",save:"儲存全部",saving:"儲存中",saved:"告警設定已儲存",saveError:"儲存失敗",readonlyHint:"你沒有寫入權限,只能查看。",noData:"暫無告警配置",errors:{directionHigher:"warning 閾值必須 ≤ critical 閾值",directionLower:"warning 閾值必須 ≥ critical 閾值",rateRange:"比率閾值必須在 0–1 之間",nonNegative:"閾值必須 ≥ 0",cooldownNonNegative:"冷卻時間必須 ≥ 0",required:"閾值不能為空"},types:{payment_success_rate_low:"支付成功率過低",gateway_error_rate_high:"Gateway 錯誤率過高",model_error_spike:"模型錯誤率突增",webhook_dead_letter:"Webhook 死信堆積",system_component_down:"系統元件中斷",negative_balance_exposure:"負餘額敞口"}},oKo={label:"時間範圍",today:"今天",days7:"7 天",days30:"30 天"},sKo="{{failed}}/{{total}} 任務",rKo="{{delta}}pt vs 昨日",iKo="樣本不足({{n}})· 暫不告警",lKo="有 Gateway 呼叫",cKo="近 7 天 cohort · 僅正常用戶",dKo="退款率 {{rate}}%",uKo={funnel:"進入 {{opened}} · 成功 {{paid}}"},mKo={title:A9o,description:T9o,refresh:R9o,refreshing:P9o,lastUpdated:_9o,loading:j9o,failedLoad:N9o,empty:D9o,noTraffic:M9o,videoFailRate:E9o,avgLatency:I9o,errorTypes:O9o,noErrors:L9o,modelAnomalies:U9o,noAnomalies:B9o,components:F9o,req:z9o,abandonRate:q9o,refunds:H9o,chargebacks:V9o,firstChargeConversion:K9o,sections:G9o,leaderboard:W9o,kpi:Y9o,revenue:Q9o,orders:X9o,conversion:Z9o,componentStatus:J9o,severity:eKo,health:tKo,alerts:nKo,alertSettings:aKo,range:oKo,videoJobsDetail:sKo,vsYesterdayPt:rKo,lowSample:iKo,activeUsersHint:lKo,conversionCohortHint:cKo,refundRate:dKo,checkout:uKo},pKo="載入中...",fKo="需要管理員授權",gKo="你的帳號無權存取此管理員頁面。",hKo={loading:pKo,permissionRequired:fKo,permissionDescription:gKo},yKo="成長營運",vKo="註冊獎勵、折扣碼、邀請返利與 credit 發放。人工贈送在使用者頁處理。",bKo={mobileLabel:"成長模組",onboarding:"註冊與新使用者",discount:"折扣碼",referral:"邀請返利",grants:"Credit 發放",topup:"儲值返現",redeem:"兌換碼",tasks:"任務牆"}
851,xKo="優惠碼批次",$Ko="促銷規則",wKo="數量",kKo="批次 code",CKo="建立中...",SKo="建立批次",AKo="已建立 {{count}} 個優惠碼",TKo="已建立 {{count}} 個優惠碼",RKo="批次 {{code}}",PKo="已複製",_Ko="全部複製",jKo="Credit 發放",NKo="來源",DKo="狀態",MKo="暫無發放記錄",EKo="優惠碼兌換、註冊獎勵和人工贈送會顯示在這裡。",IKo="時間",OKo="使用者",LKo="金額",UKo="註冊獎勵",BKo="控制新使用者註冊後自動發放的 credit。關閉後,之後的新註冊使用者不會收到贈送。",FKo="啟用註冊送 credit",zKo="金額 (USD)",qKo="儲存註冊獎勵",HKo="儲存中...",VKo="目前金額 {{amount}}",KKo="邀請返利",GKo="設定邀請人和被邀請人的返利比例、凍結釋放時間、封頂和帳單頁話術。",WKo="啟用邀請返利",YKo="返利檔位",QKo="新增檔位",XKo="返利對象",ZKo="開始天數",JKo="結束天數",eGo="比例",tGo="標籤",nGo="操作",aGo="邀請人",oGo="被邀請人",sGo="不設結束",rGo="刪除檔位",iGo="釋放延遲(天)",lGo="單筆封頂(USD)",cGo="最低儲值(USD,空=無)",dGo="返利過期天數(空=永不過期)",uGo="帳單頁倒數 banner",mGo="Banner 標題",pGo="副標題",fGo="倒數模式",gGo="統一截止時間",hGo="每個被邀請人的視窗",yGo="結束時間",vGo="儲存邀請設定",bGo="v{{version}}",xGo="儲存返利檔位、釋放延遲、封頂或過期天數會發布一個新版本。已建立的邀請關係永久沿用綁定時的版本,只有新註冊才走新規則。暫停只影響新註冊。",$Go="版本歷史",wGo="版本",kGo="狀態",CGo="邀請關係",SGo="返利檔位",AGo="發布於",TGo="退場於",RGo="目前",PGo="版本明細",_Go="邀請記錄",jGo="返利記錄",NGo="邀請人",DGo="被邀請人",MGo="綁定時間",EGo="角色",IGo="對手方",OGo="儲值額",LGo="費率",UGo="金額",BGo="檔位",FGo="釋放時間",zGo="該版本下暫無邀請關係",qGo="該版本下暫無返利記錄",HGo="載入更多",VGo="儲值折扣碼",KGo="折扣碼降低使用者結算時的實付金額,付款成功後到帳儲值全額。在此設定好折扣,再到下方產生碼批次。",GGo="啟用折扣碼",WGo="折扣類型",YGo="固定額抵扣(USD)",QGo="百分比折扣(%)",XGo="抵扣金額(USD)",ZGo="折扣百分比(0-100)",JGo="儲存折扣",eWo="預設低餘額提醒",tWo="新使用者預設在此門檻收到低餘額郵件提醒。改這裡只影響之後的新註冊,不回溯已有錢包。",nWo="門檻 (USD)",aWo="儲存門檻",oWo="目前 {{amount}}",sWo="按上方折扣規則產生折扣碼。",rWo="目前生效:{{state}} · 抵 {{value}}",iWo="已啟用",lWo="已停用",cWo="已發放的碼",dWo="選一個批次查看每個碼被誰兌換。",uWo="暫無批次",mWo="在上方產生一個批次,開始追蹤兌換。",pWo="總數",fWo="已用",gWo="佔用中",hWo="可用",yWo="{{code}} 的碼",vWo="該批次暫無碼",bWo="碼",xWo="使用者",$Wo="兌換時間",wWo="實付",kWo="折扣",CWo="建立折扣碼",SWo="共用碼是一個碼可供多位使用者各兌換最多 N 次;唯一碼批次則是 N 個一次性碼。",AWo="碼類型",TWo="單一共用碼",RWo="唯一碼批次",PWo="碼內容(留空則隨機產生)",_Wo="例如 WELCOME100",jWo="總兌換次數 (N)",NWo="每位使用者",DWo="到期時間(選填)",MWo="分組(選填)",EWo="建立共用碼",IWo="共用碼已建立",OWo="為此批次指定折扣(否則套用上方規則)",LWo="共用碼",UWo="一個碼,多位使用者。已用次數統計實付兌換。",BWo="暫無共用碼",FWo="已用 / 上限",zWo="每位使用者",qWo="到期",HWo="停用",VWo="停用此碼?",KWo="新的結算會立即被擋下。已進入結算的訂單仍可完成。",GWo="碼已停用",WWo="匯出 CSV",YWo="狀態",QWo="電子郵件",XWo={code:"碼",discount:"折扣",redeemed:"已兌換",cap:"上限",perUser:"每位使用者",status:"狀態",expiresAt:"到期時間",batch:"批次",createdAt:"建立時間",redeemedBy:"兌換者",redeemedAt:"兌換時間",paid:"實付",discountAmount:"折扣",email:"郵箱",credited:"到賬",bonus:"加贈",paidAt:"付款時間"},ZWo={title:"儲值返現",description:"儲得多送得多。每檔可發通用贈額ï¼
851Œæˆ–受限到某模型組的贈額。",enabled:"啟用儲值返現",saved:"儲值返現已儲存",tiers:"返現檔位",tiersHint:"按儲值額命中門檻最高的檔。受限贈額僅適用於同步文字/圖像呼叫,不含影片或非同步圖片任務。",noTiers:"暫無檔位。新增一檔開始返現。",min:"儲值門檻 (USD)",rewardType:"獎勵方式",bonus:"固定 (USD)",percent:"百分比 (%)",rewardBonus:"贈送金額 (USD)",rewardPercent:"儲值額百分比 (%)",expiryDays:"有效期(天,留空=不過期)",noExpiry:"不過期",scope:"贈額作用域",scopeHint:"通用贈額任意模型可用;選模型組則贈額只能用於該組模型。",scopeGeneral:"通用(任意模型)",removeTier:"刪除檔位",addTier:"新增檔位",antifraud:"防薅",minTopup:"起送儲值額(USD,留空=不限)",maxBonusPerUser:"單使用者返現上限(USD,留空=不限)",none:"不限",excludeRisky:"排除已標記/封禁使用者",save:"儲存儲值返現",createScope:"新建受限模型組",createScopeDescription:"圈選受限贈額可消費的模型,然後在上方檔位裡引用該組。",scopeName:"組名",scopeNamePlaceholder:"高毛利模型",scopeModels:"模型",pickModels:"選擇模型",nModels:"{{count}} 個模型",createScopeButton:"建立模型組",scopeCreated:"模型組已建立"},JWo="產生兌換碼",eYo="儲值卡式兌換碼。使用者在帳單頁輸入兌換碼,面額直接入帳(贈送餘額,無需付款)。",tYo="批次名稱(選填)",nYo="例如:Conf-2026 贈送",aYo="產生數量",oYo="單張面額(USD)",sYo="每帳號在本批可兌換數(留空 = 不限)",rYo="不限",iYo="兌換截止時間(選填)",lYo="限定模型(可選)",cYo="通用餘額(不限定)",dYo="已選 {{count}} 個模型",uYo="留空 = 通用餘額;選中的模型共享同一筆專款額度。",mYo="兌換後額度有效期(天,留空 = 永久)",pYo="永久有效",fYo="{{n}} 天",gYo="限定模型",hYo="額度有效期",yYo="通用餘額",vYo="產生兌換碼",bYo="請立即儲存。之後也可在批次清單用「明文匯出」重新取得。",xYo="兌換碼批次",$Yo="點選批次查看單張明細;「明文匯出」可重新匯出明文。",wYo="尚無兌換碼批次",kYo="批次",CYo="面額",SYo="明文匯出",AYo="撤銷這張已兌換的碼?",TYo="從使用者餘額追回尚未消費的部分;已消費的部分無法收回。",RYo="撤銷",PYo="已撤銷 {{amount}}",_Yo="已匯出兌換碼",jYo="停用本批未兌換的碼?",NYo="所有尚未兌換的碼將失效;已兌換的碼不受影響。",DYo="已停用 {{n}} 張碼",MYo="儲值加贈 %",EYo="加贈比例(%)",IYo="贈金有效期(天,可選)",OYo="留空 = 永不過期",LYo={view:"對賬",title:"碼 ····{{code}} 的儲值流水",email:"用戶",credited:"到賬",bonus:"加贈",summary:"{{count}} 筆 · {{users}} 人 · 實收 {{paid}} · 加贈 {{bonus}}",empty:"該碼暫無儲值流水"},UYo={configTitle:"任務牆設定",configDescription:"金額、開關與可提交平台。任務文案在翻譯檔案裡,不在這裡。改完下次載入即生效,不需發版。",enabled:"啟用任務牆",tasksTitle:"任務",taskKey:"任務 key",amount:"金額(USD)",hosts:"可提交平台",hostsHint:"不在此清單內的連結會在提交時直接被拒。",taskEnabled:"對使用者可見",addTask:"新增任務",guardsTitle:"防濫用門檻",dailyCap:"每日待審上限",dailyCapHint:"0 = 不限。Redis 故障時 fail-open。",minAge:"帳號最短註冊天數",minAgeHint:"0 = 不設註冊時長門檻。",saved:"任務牆已儲存",queueTitle:"提交佇列",queueCount:"共 {{count}} 筆",empty:"目前沒有紀錄。",approve:"通過並發放",approved:"已通過,額度已發放",reject:"退回",rejected:"已退回",confirmReject:"確認退回",reasonPlaceholder:"退回的理由是什麼?",duplicate:"此連結另有 {{count}} 個帳號提交過",status:{pending:"待審",approved:"已通過",rejected:"已退回"}},BYo={title:yKo,description:vKo,tabs:bKo,couponBatch:xKo,promotionRule:$Ko,count:wKo,batchCode:kKo,creating:CKo,createBatch:SKo,codesCreated:AKo,codesCreated_plural:TKo,batch:RKo,copied:PKo,copyAll:_Ko,creditGrants:jKo,source:NKo,status:DKo,noGrants:MKo,noGrantsDescription:EKo,time:IKo,user:OKo,amount:LKo,signupBonus:UKo,signupBonusDescription:BKo,signupBonusEnabled:FKo,signupBonusAmount:zKo,saveSignupBonus:qKo,saving:HKo,currentSignupBonus:VKo,referral:KKo,referralDescription:GKo,referralEnabled:WKo,referralRewardTiers:YKo,addTier:QKo,tierRole:XKo,tierFromDay:ZKo,tierUntilDay:JKo,tierPercent:eGo,tierLabel:tGo,tierAction:nGo,roleReferrer:aGo,roleReferee:oGo,noEndDay:sGo,removeTier:rGo,releaseDelayDays:iGo,referralCap:lGo,referralMinTopup:cGo,referralExpiryDays:dGo,bannerEnabled:uGo,bannerTitle:mGo,bannerSubtitle:pGo,bannerMode:fGo,bannerModeGlobal:gGo,bannerModeWindow:hGo,bannerEndsAt:yGo,saveReferral:vGo,referralVersion:bGo,referralPublishHint:xGo,referralVersionHistory:$Go,versionCol:wGo,versionStatus:kGo,versionBindings:CGo,versionTiers:SGo,versionPublished:AGo,versionSuperseded:TGo,versionCurrent:RGo,versionDetail:PGo,versionBindingsSection:_Go,versionCashbackSection:jGo,colInviter:NGo,colInvitee:DGo,colBoundAt:MGo,colRole:EGo,colCounterparty:IGo,colTopup:OGo,colRate:LGo,colAmount:UGo,colTier:BGo,colReleasedAt:FGo,noBindings:zGo,noCashback:qGo,loadMore:HGo,discountRule:VGo,discountRuleDescription:KGo,discountEnabled:GGo,discountType:WGo,discountFixed:YGo,discountPercent:QGo,discountValueFixed:XGo,discountValuePercent:ZGo,saveDiscount:JGo,defaultLowBalanceThreshold:eWo,defaultLowBalanceThresholdDescription:tWo,defaultLowBalanceThresholdAmount:nWo,saveDefaultLowBalanceThreshold:aWo,currentDefaultLowBalanceThreshold:oWo,couponBatchDescription:sWo,discountEffective:rWo,stateEnabled:iWo,stateDisabled:lWo,couponTrace:cWo,couponTraceDescription:dWo,noBatches:uWo,noBatchesDescription:mWo,batchTotal:pWo,batchRedeemed:fWo,batchReserved:gWo,batchActive:hWo,co
851desInBatch:yWo,noCodes:vWo,code:bWo,redeemedBy:xWo,redeemedAt:$Wo,paid:wWo,discount:kWo,createIssuance:CWo,createIssuanceDescription:SWo,formLabel:AWo,formShared:TWo,formUniqueBatch:RWo,sharedCodeText:PWo,sharedCodeRandomHint:_Wo,sharedMaxRedemptions:jWo,sharedPerUser:NWo,expiresAt:DWo,batchCodeOptional:MWo,createSharedCode:EWo,sharedCodeCreated:IWo,batchOwnDiscount:OWo,sharedCodesList:LWo,sharedCodesListDescription:UWo,noSharedCodes:BWo,colRedeemedTotal:FWo,colPerUser:zWo,colExpiry:qWo,disableCode:HWo,disableCodeConfirmTitle:VWo,disableCodeConfirmMessage:KWo,codeDisabled:GWo,exportCsv:WWo,statusFilter:YWo,filterByEmail:QWo,csv:XWo,topup:ZWo,redeemCreate:JWo,redeemCreateDescription:eYo,redeemBatchName:tYo,redeemBatchNameHint:nYo,redeemCount:aYo,redeemFaceValue:oYo,redeemPerUserLimit:sYo,redeemUnlimited:rYo,redeemExpiresAt:iYo,redeemModels:lYo,redeemModelsAll:cYo,redeemModelsCount:dYo,redeemModelsHint:uYo,redeemValidityDays:mYo,redeemValidityForever:pYo,redeemValidityDaysValue:fYo,redeemColModels:gYo,redeemColValidity:hYo,redeemGeneralBalance:yYo,redeemCreateBtn:vYo,redeemRevealHint:bYo,redeemBatches:xYo,redeemBatchesDescription:$Yo,redeemNoBatches:wYo,redeemBatchCol:kYo,redeemFace:CYo,redeemReveal:SYo,redeemReverseTitle:AYo,redeemReverseMessage:TYo,redeemReverseBtn:RYo,redeemReversed:PYo,redeemRevealed:_Yo,redeemDisableBatchTitle:jYo,redeemDisableBatchMessage:NYo,redeemBatchDisabled:DYo,discountTypeBonusPercent:MYo,discountValueBonusPercent:EYo,bonusExpiryDays:IYo,bonusExpiryDaysHint:OYo,sharedPayments:LYo,tasks:UYo},FYo="模型目錄",zYo="模型目錄:建立、編輯、發布。",qYo={label:"展示徽章",hint:"熱門 / 福利標籤會顯示在使用者側的模型與價格頁。",hot:"熱門",benefit:"福利"},HYo="新增模型",VYo="編輯 {{model}}",KYo="編輯模型",GYo="新增模型",WYo="關閉",YYo="基本資料與內容一起儲存;定價和狀態變更會立即生效。",QYo="先建立模型草稿。定價與發布在草稿建立後再設定。",XYo={basics:"基礎",basicsHint:"身份、上游映射、協定。",config:"設定",configHint:"身份、上游路由、類型與能力。",protocols:"協定",protocolsHint:"此模型對外提供哪些 API 協定。",content:"內容與展示",contentHint:"多語摘要 / 描述與排序。"},ZYo="提供商標識",JYo="選擇已知提供商,或手填自訂標識。",eQo="模型標識",tQo="別名",nQo="逗號分隔的查找別名,用於匯入與審閱。",aQo="上游來源(客戶可見)",oQo="客戶在模型 / 日誌中看到的來源標籤。留空 = 廠商。同模型多來源多價時用它做區分。",sQo="平台",rQo="— 選擇平台 —",iQo="上游模型 id(可選;從上游選擇或手動輸入)",lQo="從上游選擇...",cQo="上游不可用",dQo="協定",uQo="輸入價格 / 1M (USD)",mQo="輸出價格 / 1M (USD)",pQo="英文摘要",fQo="預覽",gQo="(無摘要)",hQo="無協定",yQo="取消",vQo="儲存",bQo="建立草稿",xQo={basic:"身份與路由",pricing:"定價",content:"內容與展示"},$Qo={config:"① 設定",protocols:"② 協定",pricing:"③ 價格",display:"內容與展示",back:"上一步",next:"下一步",create:"建立模型"},wQo="上下文長度(token)",kQo="模型可接收的最大輸入。不確定可留空。",CQo="最大輸出 token",SQo="模型單次回覆可產生的最大 token 數。",AQo={status:"狀態",visibility:"可見性",hint:"生命週期變更會立即生效(需確認),獨立於儲存。",confirmStatus:"將狀態設為「{{status}}」?立即生效。",confirmVisibility:"將可見性設為「{{visibility}}」?立即生效。",statusChanged:"狀態已設為 {{status}}。",visibilityChanged:"可見性已設為 {{visibility}}。",publishBlocked:"無法發布:缺少核心定價因子,請先在「定價」Tab 設定。",statusOption:{draft:"草稿",published:"已發布",deprecated:"已棄用",archived:"已歸檔"},visibilityOption:{public:"公開",hidden:"隱藏"},availability:"可用性",confirmAvailable:"重新標記為可用?立即生效。",confirmUnavailable:"標記為暫時不可用?仍保留在列表中ï¼
851ˆç½®ç°ï¼‰ä½†é–˜é“呼叫將被拒絕。",availableChanged:"已標記為可用。",unavailableChanged:"已標記為暫時不可用。",availabilityOption:{available:"可用",unavailable:"暫時不可用"},audience:"開放對象",audienceOption:{everyone:"全部使用者",paid_only:"僅限已充值"},confirmPaidOnly:"把該模型限定為僅已充值帳戶可用?模型仍照常上架露出,未充值使用者呼叫會收到 403 並被引導去充值。",confirmEveryone:"把該模型對全部帳戶開放?立即生效。",paidOnlyChanged:"已限定為僅已充值帳戶可用。",everyoneChanged:"已對全部帳戶開放。"},TQo="輸入模態",RQo="宣告模型可接收的輸入,包含圖像、音訊、影片和檔案。",PQo="輸出模態",_Qo="直接餵給發布閘:含 text 需 text 輸入/輸出價,含 image/video/embeddings 需對應因子。",jQo="圖片計費口徑",NQo="影片計費口徑",DQo="上游對該輸出按什麼維度計費。發布前必須宣告,發布閘會要求對應的價格因子。",MQo="— 選擇計費口徑 —",EQo="按 token(image_output_token)",IQo="按張(per_call_image)",OQo="按秒(video_per_second)",LQo="按次(video_per_call)",UQo="展示排序",BQo="必須是非負整數。",FQo="編輯語言",zQo="上游發布日期",qQo="摘要(目前語言)",HQo="描述(Markdown,目前語言)",VQo={provider:"提供商",status:"狀態",visibility:"可見性",allStatuses:"全部模型狀態",allVisibility:"全部可見性",allProviders:"全部提供商",search:"搜尋模型標識",mobileTitle:"篩選"},KQo={label:"模型",empty:"暫無模型",model:"模型",provider:"提供商",source:"上游來源",status:"狀態",visibility:"可見性",action:"操作",edit:"編輯",setStatus:"設定 {{model}} 的狀態",setVisibility:"設定 {{model}} 的可見性",confirmSet:"將 {{model}} 的 {{field}} 設為「{{value}}」?",sub2api:"Sub2API 映射",textPrice:"價格(輸入 / 輸出 $/M)",priceByTokens:"{{kind}} · 按 token",imageOutput:"圖片輸出",officialPrice:"官方",saved:"省 {{pct}}%"},GQo={invalidPrice:"價格必須是 >=0 的數字,或留空。",highRisk:"此變更會影響線上 gateway 解析,可能讓使用者遇到 404。確認繼續?",stale:"模型已被其他人修改,請關閉並重新開啟後再編輯。"},WQo={savesImmediately:"定價變更會立即生效,不受底部儲存控制。",createPriceFailed:"模型已建立,但部分定價未寫入,請在「價格」頁補上。",factors:{title:"定價因子",hint:"每一行是一個原子計費單元(文字輸入/輸出、快取、圖片等)。生效中的行從其生效日期起決定計費;歷史行記錄過往價格。",liveBanner:"這裡的變更會立即生效並寫入價格歷史,不受底部儲存按鈕控制。",draftHint:"請先儲存模型草稿;模型建立後才能在此行內編輯定價因子。",addFactor:"新增因子",changePrice:"改價",expire:"失效",confirmExpire:"讓這一行因子失效?它會立即停止生效並移入歷史。",changeSaved:"因子價格已更新。",expired:"因子已失效。",factor:"因子",tier:"檔位",tierNone:"(無檔位)",unit:"單位",ourPrice:"我方價格 (USD)",officialPrice:"官方價 (USD)",officialAbbr:"官方",source:"來源(可選 URL 或備註,≤128 字元)",historyLabel:"歷史({{count}})",emptyTitle:"暫無生效中的因子價格",empty:"點擊「新增因子」來設定。",loadError:"無法載入定價因子",draftEditorHint:"現在就填價,或先留空、建好模型後再加。",draftEmpty:"尚未新增價格。",remove:"移除",factorOption:{text_input:"文字輸入 (LLM)",text_output:"文字輸出 (LLM)",cache_read:"快取讀取",cache_write_5m:"快取寫入 (5m TTL)",cache_write_1h:"快取寫入 (1h TTL)",image_input_token:"圖片輸入 token",image_output_token:"圖片輸出 token",per_call_image:"圖片(按次)",video_per_call:"影片(按次)",video_per_second:"影片(按秒)",web_search_call:"網路搜尋呼叫"},unitOption:{per_1m_tokens:"每 1M tokens",per_image:"每張",per_call:"每次",per_second:"每秒"},conditions:"條件 JSON(可選)"},discount:{toggle:"按折扣率改價",hint:"把每個因子設為官方價的某個比例(0.5 = 5 折)。免費因子(我方價為 0)和無官方價的因子會跳過。",rate:"折扣率",preview:"預覽",apply:"套用",allowMarkup:"允許加價(折扣率大於 1 即高於官方價)",noFactors:"沒有å
851¯æ”¹åƒ¹çš„生效因子。",confirmTitle:"對所有因子套用折扣?",confirmBody:"將 {{count}} 個因子改為官方價的 {{rate}} 倍。已版本化,不影響歷史計費。",applied:"已按官方價 {{rate}} 倍改價 {{count}} 個因子。",stale:"預覽後價格已變,請重新預覽。",skipReason:{free_factor_our_zero:"免費因子(我方價為 0),保持不變",no_official:"無官方價,無法計算",official_zero:"官方價為 0,已跳過"}}},YQo="放棄未儲存的變更?",QQo={title:FYo,description:zYo,badges:qYo,addModel:HYo,editModel:VYo,editModelShort:KYo,newModel:GYo,close:WYo,sheetDescription:YYo,sheetDescriptionNew:QYo,sections:XYo,providerSlug:ZYo,providerSlugHint:JYo,modelSlug:eQo,aliases:tQo,aliasesHint:nQo,source:aQo,sourceHint:oQo,platform:sQo,platformUnset:rQo,sub2apiModelId:iQo,chooseSub2api:lQo,upstreamUnavailable:cQo,protocols:dQo,inputPrice:uQo,outputPrice:mQo,enSummary:pQo,preview:fQo,noSummary:gQo,noProtocol:hQo,cancel:yQo,save:vQo,createDraft:bQo,tabs:xQo,steps:$Qo,contextWindow:wQo,contextWindowHint:kQo,maxOutputTokens:CQo,maxOutputTokensHint:SQo,lifecycle:AQo,inputModalities:TQo,inputModalitiesHint:RQo,outputModalities:PQo,outputModalitiesHint:_Qo,billingStyleImage:jQo,billingStyleVideo:NQo,billingStyleHint:DQo,billingStyleUnset:MQo,billingStyleToken:EQo,billingStylePerImage:IQo,billingStylePerSecond:OQo,billingStylePerCall:LQo,displayOrder:UQo,displayOrderInvalid:BQo,contentLocale:FQo,upstreamReleaseAt:zQo,summary:qQo,descriptionField:HQo,filters:VQo,table:KQo,errors:GQo,pricing:WQo,discardChanges:YQo},XQo="速率限制",ZQo="按 scope 管理速率限制策略。",JQo="速率限制策略",eXo="暫無策略",tXo="Code",nXo="名稱",aXo="Scope",oXo="狀態",sXo="限制",rXo="無限制",iXo={auth:"Auth",console:"Console",api_gateway:"API gateway",ops:"Ops",global:"Global"},lXo={active:"啟用",disabled:"停用",archived:"歸檔"},cXo={rpm_per_key:"RPM / key",rpm_per_user:"RPM / user",concurrent_streams_per_key:"並發 / key",concurrent_streams_per_user:"並發 / user"},dXo="新建策略",uXo="編輯",mXo="操作",pXo="新建速率限制策略",fXo="編輯 {{name}}",gXo="按 API key 和按使用者生效的並發與 RPM 限額。到使用者頁為使用者分配策略。",hXo="刪除策略「{{name}}」?掛在其上的 key 與使用者將回落預設策略。",yXo="策略已刪除。",vXo={identity:"標識",classification:"分類",description:"描述",codeImmutable:"Code 建立後不可更改。",limitsHint:"留空則該項使用平台預設值。",default:"預設",invalidLimit:"{{field}} 必須為正整數。",saved:"策略已儲存。",cancel:"取消",save:"儲存",create:"建立策略"},bXo={title:XQo,description:ZQo,label:JQo,empty:eXo,code:tXo,name:nXo,scope:aXo,status:oXo,limits:sXo,noLimits:rXo,scopes:iXo,statuses:lXo,limitNames:cXo,add:dXo,edit:uXo,delete:"刪除",action:mXo,newTitle:pXo,editTitle:fXo,formDescription:gXo,confirmDelete:hXo,deleted:yXo,form:vXo},xXo="團隊成員",$Xo="誰能登入後台。僅 owner 可操作。",wXo="管理員",kXo="暫無管理員",CXo="ä¿¡ç®±",SXo="名稱",AXo="角色",TXo="狀態",RXo="最後登入",PXo="操作",_Xo="新增管理員",jXo="新增管理員",NXo="該信箱將立即成為管理員並用它登入,管理員身分按信箱匹配,暫時無需已註冊帳號。",DXo="ä¿¡ç®±",MXo="[email protected]",EXo="名稱",IXo="顯示名稱",OXo="角色",LXo="管理員已新增。",UXo="修改角色",BXo="角色已更新。",FXo="å
851œç”¨",zXo="啟用",qXo="狀態已更新。",HXo="移除",VXo="管理員已移除。",KXo="移除 {{email}} 的管理員身分?對方將立即失去後台存取權限。",GXo="ä½ ",WXo="從未",YXo={owner:"Owner",admin:"Admin",support:"支援"},QXo={active:"啟用",suspended:"停用"},XXo={title:xXo,description:$Xo,label:wXo,empty:kXo,email:CXo,name:SXo,role:AXo,status:TXo,lastLogin:RXo,action:PXo,add:_Xo,newTitle:jXo,formDescription:NXo,emailLabel:DXo,emailPlaceholder:MXo,nameLabel:EXo,namePlaceholder:IXo,roleLabel:OXo,added:LXo,changeRole:UXo,roleChanged:BXo,suspend:FXo,activate:zXo,statusChanged:qXo,remove:HXo,removed:VXo,confirmRemove:KXo,self:GXo,never:WXo,roles:YXo,statuses:QXo},ZXo="上游渠道",JXo="只讀上游設定鏡像,以及 OneHop 受控路由 key pools。",eZo="開啟上游管理後台",tZo="上游分頁",nZo={overview:"概覽",keyPools:"Key pools",groups:"分組",channels:"渠道",accounts:"帳號"},aZo={todayRequests:"今日請求",total:"總計 {{value}}",upstreamCostToday:"今日上游消耗",providerAccounts:"供應商帳號",health:"健康狀態",stale:"已過期",checkPools:"檢查 pools",online:"在線"},oZo={upstreamStatsFailed:"上游統計載入失敗",retry:"重試",configAuditFailed:"設定審計失敗",keyPoolsLoadFailed:"Key pools 載入失敗",createKeyPoolFailed:"建立 key pool 失敗",keyPoolTestFailed:"Key pool 測試失敗",keyPoolRotateFailed:"Key pool 輪換失敗",failedLoad:"{{title}} 載入失敗"},sZo={title:"設定審計",description:"比對 OneHop key pools、已發布模型路由與上游路由。供應商分組、渠道、定價和帳號在這裡保持只讀。",running:"執行中...",run:"執行審計",poolsChecked:"已檢查 pools",modelAudit:"模型審計",checkedAt:"檢查時間",needsReview:"需要複核",done:"完成",ok:"正常",upstreamCoverage:"上游可服務覆蓋",coverageUnchecked:"帳號讀不到",coverageOnlyAccount:"僅 {{accounts}}",coverageNoAccount:"沒有可調度帳號認這個上游名"},rZo={title:"拓撲",keyPools:"Key pools",activeGroups:"活躍分組",activeChannels:"活躍渠道",accounts:"帳號",editingBoundaryTitle:"編輯邊界",editingBoundaryDescription:"上游管理後台提供分組、渠道、定價規則、供應商帳號、監控和系統設定的深度編輯流程。OneHop 只鏡像營運讀取路徑,並管理內部 key pools;會改變供應商路由的編輯仍在原管理後台完成。"},iZo={title:"OneHop 內部 key pools",description:"Pools 決定 OneHop 在不同協議和模型模式下使用哪把上游內部 key。完整 secret 永不顯示。",poolCode:"Pool 代碼",poolName:"Pool 名稱",defaultPool:"預設 pool",notDefault:"非預設",plaintextKey:"明文 key",create:"建立",label:"供應商路由 key pools",pool:"Pool",protocols:"協議",models:"模型",routingGroup:"路由分組",status:"狀態",health:"健康狀態",key:"Key",lastCheck:"最後檢查",action:"操作",priority:"優先級 {{value}}",default:"預設",secret:"secret",hidden:"hidden",test:"測試",rotate:"輪換",empty:"暫無 key pools",emptyDescription:"先建立內部 pool,再透過供應商路由承載正式流量。",newPlaintextKey:"新的明文 key",confirmRotate:"確認輪換",editProtocols:"編輯協議",editProtocolsTitle:"編輯協議(替換)",confirmEditProtocols:"儲存協議",cancelEditProtocols:"取消",forceEditProtocols:"強制儲存(覆蓋路由檢查)"},lZo={editUpstreamConfig:"編輯上游設定",groupsTitle:"分組",groupsDescription:"來自上游設定的路由分組。OneHop 將其作為 key-pool 綁定和審計決策的事實來源。",groupsLabel:"路由分組",groupsEmpty:"暫無分組",groupsEmptyDescription:"上游設定未返回任何分組。",channelsTitle:"渠道",channelsDescription:"來自上游設定的供應商渠道設定,包括模型映射和定價規則覆蓋。",channelsLabel:"供應商路由渠道",channelsEmpty:"暫無渠道",channelsEmptyDescription:"上游設定未返回任何渠道。",accountsTitle:"帳號",accountsDescription:"供應商帳號在 OneHop 中已脫敏。憑證編輯和 OAuth 刷新流程請使用上游管理後台。",accountsLabel:"供應商路由帳號",accountsEmpty:"暫無帳號",accountsEmptyDescription:"上游設定未返回任何供應商帳號。"},cZo={group:"分組",platform:"平台",rate:"倍率",rpm:"RPM",accounts:"帳號",limits:"限制",status:"狀態",updated:"更新時間",channel:"渠道",billingSource:"計費來源",mappings:"映射",pricing:"定價",account:"帳號",groups:"分組",baseUrl:"Base URL",capacity:"容量",lastUsed:"最後使用"},dZo={noDescription:"無描述",unlimited:"不限",schedulable:"可調度",notSchedulable:"不可調度",loading:"載入中...",noPricingRules:"無定價規則",modelsCount:"{{count}} 個模型",none:"無",channelMapped:"渠道映射",requestedModel:"請求模型",upstreamModel:"上游模型",priority:"優先級",unknown:"未知"},uZo={serving:{label:"服務狀態",serving:"正常",rate_limited:"限流中",overloaded:"過載",expired:"已過期",paused:"暫停調度",error:"錯誤",disabled:"已停用"},quota:{label:"額度佔用(今日)",noLimit:"無限額",spend:"{{spend}} / {{limit}}"},accounts:{breakdown:"正常 {{normal}} · 異常 {{error}} · 限流 {{ratelimit}} · 過載 {{overload}}"},freshness:{updated:"{{ago}}前更新",never:"從未"},pools:{lastError:"最近錯誤",resync:"重新同步"},audit:{poolFindings:"Pool 問題",clean:"正常",findingsCount:"{{count}} 項"},tokensToday:"今日 {{count}} tok"},mZo={title:ZXo,description:JXo,openUpstreamAdmin:eZo,tabsLabel:tZo,tabs:nZo,metrics:aZo,errors:oZo,audit:sZo,topology:rZo,pools:iZo,readonly:lZo,table:cZo,common:dZo,ops:uZo},pZo="平台用量",fZo="跨使用者查看請求計量、消耗、token、延遲與路由訊號。",gZo="重新整理",hZo={label:"自動重新整理",off:"關閉"},yZo="匯出中",vZo="匯出 CSV",bZo="用量記錄匯出失敗",xZo="請求",$Zo="{{count}} 個成功",wZo="使用者",kZo="符合目前篩選條件",CZo="消耗 credit",SZo="{{cost}} 消耗",AZo="Tokens",TZo="平均 {{duration}}",RZo="使用者 email",PZo="按 email 搜尋",_Zo="模型",jZo="按模型搜尋",NZo="狀態",DZo="協定",MZo="行數",EZo="重設",IZo="營運用量記錄",OZo="暫無用量記錄",LZo="使用者",UZo="Endpoint",BZo="總計 {{count}}",FZo="輸入 {{input}} / 輸出 {{output}}",zZo="上游",qZo="計費",HZo="延遲",VZo="開始時間",KZo="第 {{page}} 頁 · 顯示 {{shown}} 筆,共 {{total}} 筆符合記錄",GZo="上一頁",WZo="下一頁",YZo="本頁 {{count}} 行",QZo="時間顯示為",XZo="{{count}} API keys",ZZo="消耗快照",JZo="來自 OneHop 計費快照",eJo="使用者消耗",tJo="使用者消耗ç¸
851½é¡",nJo="平均延遲",aJo="已結算請求",oJo="範圍",sJo={today:"今天",days7:"7 天",days30:"30 天",all:"全部時間"},rJo="指標",iJo={cost:"消耗",tokens:"Tokens",requests:"請求"},lJo="分布",cJo={model:"模型",requestedModel:"請求模型",upstreamModel:"上游模型",apiKey:"API key",user:"使用者",endpoint:"Endpoint",channel:"渠道",group:"分組",stream:"傳輸方式(串流/同步)"},dJo="用量趨勢",uJo="按模型用量",mJo="按小時",pJo="按天",fJo="熱門 endpoints",gJo="熱門維度行",hJo="請求日誌",yJo="API key",vJo="類型",bJo="計費",xJo="渠道",$Jo="分組",wJo="請求 ID",kJo="req_ / usg_ / upstream",CJo="全部類型",SJo="全部計費",AJo={user:"使用者",time:"時間",model:"模型",tokens:"Tokens",cost:"消耗",routing:"路由",latency:"延遲(首字)",status:"狀態",duration:"耗時"},TJo="用量載入失敗",RJo="正在載入用量記錄",PJo="換一組篩選條件試試。",_Jo="暫無趨勢資料",jJo="暫無分布資料",NJo="暫無行",DJo="消耗明細",MJo={upstreamList:"上游標價",discount:"折扣",sub2apiActual:"記錄消耗",groupChannelMultiplier:"分組/渠道倍率",accountMultiplier:"帳號倍率",sub2apiFinalCharge:"最終消耗",billedFactors:"使用者消耗"},EJo="請求詳情",IJo="開啟請求詳情",OJo="未知使用者",LJo="載入中...",UJo="記錄消耗",BJo="分組倍率",FJo="帳號倍率",zJo="身份",qJo="使用者 ID",HJo="Key 後綴",VJo={hopIdentity:"跳次身份",logicalUsageId:"邏輯用量 ID",logicalRequestedModel:"邏輯請求模型",logicalModel:"邏輯模型",actualRequestedModel:"實際請求模型",actualModel:"實際模型",fallbackHop:"回退跳數",userVisibility:"使用者可見性",visible:"可見",hidden:"隱藏",supersedesUsageRecord:"取代的用量記錄",pricingAudit:"連續性計費稽核",mode:"模式",policyVersion:"策略版本",sourceModel:"來源模型",targetModel:"目標模型",requestedRawQuote:"請求模型原始報價",requestedQuote:"請求模型報價",actualPricingStatus:"實際模型報價狀態",actualPricingAvailable:"可用",actualPricingUnavailable:"不可用",actualQuote:"實際模型報價",chargedQuote:"最終計費報價",variance:"報價差額",actualPricingError:"實際模型報價錯誤"},KJo="輸入",GJo="輸出",WJo="快取讀取",YJo="快取寫入",QJo="原始元資料",XJo="請求",ZJo="用量 ID",JJo="OneHop ID",ees="Sub2API ID",tes="Sub2API 日誌",nes="路由",aes="映射",oes="效能",ses="首 token",res="總耗時",ies="錯誤",les="代碼",ces="訊息",des={time:"時間",user:"使用者",apiKey:"API key",model:"模型",logicalUsageId:"邏輯用量 ID",logicalRequestedModel:"邏輯請求模型",logicalModel:"邏輯模型",actualRequestedModel:"實際請求模型",actualModel:"實際模型",fallbackHop:"回退跳數",userVisible:"使用者可見",supersedesUsageRecord:"取代的用量記錄",upstreamModel:"上游模型",protocol:"協定",endpoint:"Endpoint",type:"類型",status:"狀態",inputTokens:"輸入 tokens",outputTokens:"輸出 tokens",cacheRead:"快取讀取",cacheWrite:"快取寫入",sub2apiActual:"記錄消耗",sub2apiCharge:"消耗",continuityMode:"連續性模式",continuityPolicyVersion:"連續性策略版本",continuitySourceModel:"連續性來源模型",continuityTargetModel:"連續性目標模型",continuityRequestedRawQuote:"連續性請求模型原始報價",continuityRequestedQuote:"連續性請求模型報價",continuityActualPricingStatus:"連續性實際模型報價狀態",continuityActualQuote:"連續性實際模型報價",continuityChargedQuote:"連續性最終計費報價",continuityVariance:"連續性報價差額",continuityActualPricingError:"連續性實際模型報價錯誤",durationMs:"耗時毫秒",channel:"渠道",group:"分組",onehopRequestId:"OneHop 請求 ID",sub2apiRequestId:"Sub2API 請求 ID",firstTokenMs:"首字毫秒"},ues={analytics:"用量分析",logs:"請求日誌"},mes={label:"圖表視圖",stacked:"隨時間",ranking:"排名"},pes={failedOnly:"僅失敗",slowOnly:"首字 > {{sec}}s"},fes="更多篩選",ges="首字慢閾值 (ms)",hes="暫無模型用量",yes="暫無請求 —— 有流量後用量會顯示在這裡。",ves="正在查看",bes="成功串流請求",xes="平均耗時",$es="延遲=首字時間(TTFT)、耗時=總時長。慢篩按首字延遲,僅涵蓋已採集首字的成功請求(更早或失敗的請求顯示 —)。",wes={title:pZo,description:fZo,refresh:gZo,autoRefresh:hZo,exporting:yZo,exportCsv:vZo,exportError:bZo,requests:xZo,successful:$Zo,users:wZo,matchedFilters:kZo,billedCredit:CZo,upstreamCost:SZo,tokens:AZo,avgDuration:TZo,userEmail:RZo,searchEmail:PZo,model:_Zo,searchModel:jZo,status:NZo,protocol:DZo,rows:MZo,reset:EZo,label:IZo,empty:OZo,user:LZo,endpoint:UZo,totalTokens:BZo,inOut:FZo,upstream:zZo,billed:qZo,latency:HZo,started:VZo,pageSummary:KZo,previous:GZo,next:WZo,rowsOnPage:YZo,timesShownIn:QZo,apiKeys:XZo,sub2apiCharge:ZZo,sub2apiChargeSource:JZo,userSpend:eJo,userSpendSource:tJo,avgLatency:nJo,settledRequests:aJo,range:oJo,ranges:sJo,metric:rJo,metrics:iJo,distribution:lJo,breakdown:cJo,usageTrend:dJo,stackedByModel:uJo,hourly:mJo,daily:pJo,topEndpoints:fJo,topDimensionRows:gJo,requestLogs:hJo,apiKey:yJo,type:vJo,billing:bJo,channel:xJo,group:$Jo,requestId:wJo,requestIdPlaceholder:kJo,allTypes:CJo,allBilling:SJo,table:AJo,failedLoad:TJo,loadingRecords:RJo,tryDifferentFilters:PJo,noTrendData:_Jo,noDistributionData:jJo,noRows:NJo,costBreakdown:DJo,adminCost:MJo,requestDetail:EJo,openRequestDetail:IJo,unknownUser:OJo,loading:LJo,sub2apiActual:UJo,groupMultiplier:BJo,accountMultiplier:FJo,identity:zJo,userId:qJo,keySuffix:HJo,continuity:VJo,input:KJo,output:GJo,cacheRead:WJo,cacheWrite:YJo,rawMetadata:QJo,request:XJo,usageId:ZJo,onehopId:JJo,sub2apiId:ees,sub2apiLog:tes,routing:nes,mapping:aes,performance:oes,firstToken:ses,total:res,error:ies,code:les,message:ces,csv:des,tabs:ues,modelView:mes,chip:pes,moreFilters:fes,slowThreshold:ges,noModelUsage:hes,noTrendToday:yes,viewing:ves,avgLatencySub:bes,avgTotalDuration:xes,latencyHint:$es},kes="搜尋",Ces="按使用者 ID、信箱或名稱搜尋",Ses="使用者",Aes="返回使用者列表",Tes="你沒有查看此區塊的權限。",Res="退款",Pes="退款中...",_es="為 {{email}} 發起 {{amount}} 退款?退款為非同步處理,餘額稍後由 worker 回沖。",jes="退款已發起。",Nes={overview:"概覽",network:"網路與裝置",recentCalls:"最近呼叫",apiKeys:"API 金鑰",payments:"付款",refunds:"退款",subscription:"訂閱",referrals:"邀請",rewards:"獎勵",audit:"審計"},Des={title:"免費 token 額度",paused:"該帳號已暫停發放免費額度(風控審查)。",daily:"每日",weekly:"每週",tokensUnit:"tokens",remaining:"今日剩餘 {{value}} tokens"},Mes={title:"免費模型額度(今日)",tokens:"tokens",remaining:"今日剩餘 {{value}} tokens",unlimited:"免費額度:不限(閘未開啟)",eligibilityLabel:"免費層資格",eligible:"享免費層",ineligible:"無免費資格(同裝置已用)"},Ees={phase2:"訂閱功能將在 Phase 2 上線。"},Ies={empty:"暫無付款"},Oes={empty:"暫無退款"},Les={empty:"暫無積分桶",note:"積分桶展示目前餘額庫存。發放與退款歷史見審計時間線,邀請返現見
851邀請區塊。"},Ues={totalEarned:"累計獲得",frozenEarned:"凍結中",refereeCount:"被邀請人",activeCount:"活躍",role:"角色",counterparty:"對手方",empty:"暫無邀請記錄"},Bes={empty:"暫無審計記錄"},Fes={amount:"金額",credit:"到帳積分",status:"狀態",provider:"渠道",createdAt:"建立於",type:"類型",originalTx:"原交易",remaining:"剩餘",initial:"初始",expiresAt:"過期",event:"事件",action:"動作",severity:"級別"},zes={ipLocationTitle:"IP 與位置",deviceBrowserTitle:"裝置與瀏覽器",stripeTitle:"Stripe",signupIp:"註冊 IP",signupCountry:"註冊國家",lastLoginIp:"最後登入 IP",ipDifferent:"與註冊 IP 不同",sameIpAccounts_one:"同一註冊 IP 有 {{count}} 個帳戶",sameIpAccounts_other:"同一註冊 IP 有 {{count}} 個帳戶",sameDeviceAccounts_one:"同一裝置有 {{count}} 個帳戶",sameDeviceAccounts_other:"同一裝置有 {{count}} 個帳戶",deviceFingerprint:"裝置指紋",freeTierEligible:"免費方案資格",firstDevice:"此裝置首個帳戶",notFirstDevice:"非此裝置首個帳戶 — 無免費福利",browser:"瀏覽器",os:"OS",deviceType:"裝置類型",acceptLanguage:"Accept-Language",stripeCustomerId:"Stripe Customer ID",viewOnIpinfo:"在 ipinfo.io 查看"},qes={empty:"尚無呼叫紀錄",viewAll:"查看所有日誌 →",colStatus:"狀態",colTime:"時間",colModel:"模型",colProtocol:"協定",colDuration:"耗時",colCost:"費用",colFreeDiscount:"免費額度"},Hes={empty:"暫無 API Key",colName:"名稱",colKey:"Key",colStatus:"狀態",colPolicy:"限流策略",colLastUsed:"最後使用",colCreated:"建立時間",colExpires:"有效期",colSpend:"消費",spendTitle:"消費明細",spend30d:"近 30 天",spendAllTime:"累計",spendRequests:"請求數"},Ves="複製",Kes="已複製",Ges={search:kes,searchPlaceholder:Ces,title:Ses,backToList:Aes,noBlockPerm:Tes,refund:Res,refunding:Pes,refundConfirm:_es,refundInitiated:jes,nav:Nes,freeTokens:Des,freeQuota:Mes,subscription:Ees,payments:Ies,refunds:Oes,rewards:Les,referrals:Ues,audit:Bes,col:Fes,network:zes,recentCalls:qes,apiKeys:Hes,copy:Ves,copied:Kes},Wes="使用者管理",Yes="搜尋使用者、發放 credit、停用帳號。",Qes="Email",Xes="按 email 搜尋",Zes="帳號狀態",Jes={active:"帳戶啟用中;可登入並呼叫 gateway",suspended:"已停用;gateway 拒絕所有請求(401)"},ets="風險",tts={normal:"可享有所有免費權益",watchlisted:"無免費 token 與註冊贈金;仍可儲值並呼叫 gateway",blocked:"Gateway 拒絕所有請求(401);完全封鎖"},nts="使用者",ats="找不到使用者",ots="國家",sts="最後登入",rts="操作",its="查看",lts="已刪除",cts="設定 {{email}} 的狀態",dts="將 {{email}} 設為「{{status}}」?",uts="發放 credit",mts="為 {{email}} 新增贈送 credit,並記錄在 ledger 中。",pts="金額 (USD)",fts="例如 5",gts="原因(可選)",hts="例如停機補償",yts="Type",vts="Bonus credit",bts="A gift. Does not count as a top-up.",xts="Offline payment",$ts="Money we actually received. Counts as a top-up: unlocks paid-only models and rate-limit tiers.",wts="Reference no.",kts="e.g. bank slip 20260907-001",Cts="Record payment",Sts="Recording...",Ats="取消",Tts="發放中...",Rts="發放",Pts="要向 {{email}} 發放 ${{amount}} 嗎?這是一筆較大金額。",_ts="無顯示名稱",jts="載入中...",Nts="分數 {{score}}",Dts="Email 已驗證",Mts="是",Ets="否",Its="註冊",Ots="註冊方式",Lts="最近登入方式",Uts="註冊贈金",Bts="新手引導",Fts="語言 / 時區",zts="加價比例",qts="速率限制策略",Hts="速率限制策略已更新。",Vts="加入時間",Kts="從未",Gts="餘額",Wts="錢包與消耗",Yts="累計消耗",Qts="累計儲值",Xts="地區",Zts="語言",Jts="累計贈額",ens="累計退款",tns="請求數",nns="Tokens",ans="操作",ons="身份與風險",sns="角色",rns="目前角色沒有可執行的操作。",ins="來源渠道",lns="來源分布",cns="直接 / 未知",dns="自訂來源…",uns="設定",mns="自動識別:{{source}}",pns="UTM",fns="邀請人",gns="備註",hns="新增備註以識別此使用者",yns="儲存備註",vns="備註已儲存",bns="無備註",xns="篩選",$ns={title:Wes,description:Yes,email:Qes,searchEmail:Xes,status:Zes,statusEffect:Jes,risk:ets,riskEffect:tts,label:nts,empty:ats,country:ots,lastLogin:sts,action:rts,view:its,deleted:lts,setStatusAria:cts,setStatusConfirm:dts,grantCredit:uts,grantDescription:mts,amountUsd:pts,amountPlaceholder:fts,reason:gts,reasonPlaceholder:hts,grantKind:yts,grantKindBonus:vts,grantKindBonusHint:bts,grantKindOffline:xts,grantKindOfflineHint:$ts,referenceNo:wts,referenceNoPlaceholder:kts,recordPayment:Cts,recording:Sts,cancel:Ats,granting:Tts,grant:Rts,largeGrantConfirm:Pts,noDisplayName:_ts,loading:jts,score:Nts,emailVerified:Dts,yes:Mts,no:Ets,signup:Its,signupMethod:Ots,lastLoginMethod:Lts,signupBonus:Uts,onboarding:Bts,localeTz:Fts,markupRatio:zts,rateLimitPolicy:qts,rateLimitPolicyChanged:Hts,joined:Vts,never:Kts,walletBalance:Gts,walletSection:Wts,consumed:Yts,recharged:Qts,location:Xts,preferredLocale:Zts,bonusGranted:Jts,refunded:ens,requests:tns,tokens:nns,actionsSection:ans,identitySection:ons,role:sns,noPermittedActions:rns,acquisitionSource:ins,acquisitionTitle:lns,sourceDirect:cns,sourceCustomPlaceholder:dns,sourceSet:uns,sourceCaptured:mns,utm:pns,referrer:fns,note:gns,notePlaceholder:hns,noteSave:yns,noteSaved:vns,noteEmpty:bns,filters:xns},wns="事件回調",kns="Stripe Webhook 事件。支援狀態篩選、重試和 payload 檢查。",Cns="狀態",Sns="事件類型",Ans="接收時間",Tns="事件類型",Rns="狀態",Pns="模式",_ns="嘗試次數",jns="重試",Nns="已加入重試佇列",Dns="事件 {{event}} 已重置為 pending;下一次任務調度會處理。",Mns="重試失敗",Ens="暫無 Webhook 事件。",Ins="端點註冊後,Stripe 事件會顯示在這裡。",Ons="正在載入 payload...",Lns="最後錯誤",Uns="Payload (JSON)",Bns={title:wns,description:kns,statusFilter:Cns,eventTypeFilter:Sns,receivedAt:Ans,eventType:Tns,status:Rns,mode:Pns,attempts:_ns,retry:jns,retrySubmittedTitle:Nns,retrySubmittedBody:Dns,retryFailedTitle:Mns,empty:Ens,emptyHint:
851Ins,detailLoading:Ons,lastError:Lns,payload:Uns},Fns="API key",zns="10 秒拿到第一個 key",qns="複製失敗",Hns={label:"允許的模型",allModels:"全部模型",allHint:"目錄中的所有模型都被允許。",noModels:"暫無可用模型。",selected:"已選擇 {{count}} 個",someHint:"允許 {{count}} 個模型。"},Vns={label:"標籤",placeholder:"輸入標籤後按 Enter",remove:"移除"},Kns="為正式、預備與團隊流程建立有邊界的 key。",Gns="重新整理",Wns="預設 key",Yns="Key 名稱",Qns="建立中...",Xns="建立 key",Zns="完整 key,僅顯示一次",Jns="複製 API key",eas="已複製",tas="複製",nas="請現在複製並保存。關閉此面板後,完整 key 將無法再次查看。",aas="我已保存",oas="API key 載入失敗",sas="重試",ras="暫無 API key",ias="建立第一個 key,即可透過 OneHop 開始傳送請求。",las={label:"API key",tags:"標籤",name:"名稱",key:"Key",status:"狀態",created:"建立時間",action:"操作",usage:"用量",quota:"額度",expires:"有效期",lastUsed:"最後使用"},cas="撤銷",das="確認撤銷 {{name}}?此操作無法復原。",uas="給 key 命名即可建立。額度和有效期只在需要時展開進階設定。",mas="月度 credit 額度",pas="有效期",fas="不限",gas="儲存中...",has="儲存",yas="取消",vas={title:"已停用 / 已撤銷",description:"已停用或撤銷的 key。可重新啟用已停用的,已撤銷的僅保留記錄。"},bas={title:"沒有活躍 key",description:"可重新啟用下方已停用的 key,或建立新的 key。"},xas={import:"匯入到 CCS",client:"CC-Switch 客戶端",codex:"Codex / OpenAI",claude:"Claude Code",pasteHint:"已用佔位符開啟 CC Switch,請在那邊貼上你保存的 API key。",checking:"正在檢查相容性…",blocked:{title:"{{client}} 無法使用此金鑰",body:"「{{keyName}}」只允許 {{client}} 無法使用的模型。匯入後會發生錯誤。",adjust:"調整模型範圍",forceImport:"仍然匯入(將無法使用)"},pin:{title:"將以 {{model}} 匯入 {{client}}",body:"「{{keyName}}」不包含 {{client}} 的預設模型。以下是 {{client}} 的請求經此供應商路由的方式:",adjust:"調整模型範圍",confirm:"以 {{model}} 匯入"}},$as={search:"搜尋",searchPlaceholder:"搜尋名稱或 key 後綴",status:"狀態",allStatus:"全部狀態",clear:"清除篩選",empty:"沒有符合這些篩選條件的 key",emptyDescription:"清除搜尋或狀態篩選即可查看全部 key。",mobileTitle:"篩選"},was={active:"活躍",inactive:"已停用",revoked:"已撤銷",expired:"已過期",quota_exhausted:"額度耗盡"},kas={today:"今日 {{requests}} 次 · {{credit}}",days30:"30 天 {{requests}} 次 · {{credit}}"},Cas={use:"連線資訊",edit:"編輯",enable:"啟用",disable:"停用",delete:"刪除"},Sas="使用 API key",Aas="用你已儲存的 key 呼叫 OneHop gateway。完整 key 只會在建立時顯示一次。",Tas={baseUrl:"Base URL",keyHint:"API key",authorization:"Authorization 請求標頭",env:"環境變數",curl:"cURL",revealing:"解密中…",fullKeyUnavailable:"完整 key 只會在建立時顯示一次。請使用你已儲存的值;如果遺失,請建立新的 key。",protocolEndpoints:"協定端點"},Ras="進階設定",Pas="建立 API key",_as="編輯 API key",jas={label:"模型範圍",all:"全部模型",limited:"限定到特定模型",allHint:"此 key 可調用所有模型,包括之後新增的模型。",snapshotHint:"只包含你勾選的模型;之後新增的模型不會自動加入。",snapshotHintEdit:"只包含你勾選的模型;新增模型不會自動加入。切到「全部模型」會替換此白名單。",searchPlaceholder:"搜尋模型…",selectAllResults:"全選目前結果({{count}})",selectedCount:"已選 {{count}} / {{max}}",clear:"清空",hiddenSelected:"有 {{hidden}} / {{total}} 個已選項被目前篩選隱藏",selectVendor:"全選 {{vendor}},已選 {{on}}/{{total}}",emptyTitle:"沒有匹配的模型",emptyDescription:"換個類型或搜尋詞試試。",loadFailed:"模型載入失敗",loadFailedHint:"請重試,或切回「全部模型」。",type:{all:"全部",text:"文字",image:"圖片",video:"影片",embedding:"嵌入"},pickAtLeastOne:"請至少選擇一個模型,或切回「全部模型」。",limitReached:"已達 {{max}} 個模型上限"}
851,Nas={title:"API key 已建立",subtitle:"{{name}} 已就緒,現在連接。",onceWarning:"只顯示一次。之後可重新顯示,但建議現在先複製保存。",connect:"連接",done:"完成"},Das="IP",Mas="已於 {{date}} 撤銷",Eas={title:Fns,emptyTitle:zns,copyFailed:qns,allowedModels:Hns,tags:Vns,description:Kns,refresh:Gns,defaultName:Wns,keyName:Yns,creating:Qns,createKey:Xns,fullKeyTitle:Zns,copyApiKey:Jns,copied:eas,copy:tas,fullKeyDescription:nas,savedIt:aas,loadFailed:oas,retry:sas,empty:ras,emptyDescription:ias,table:las,revoke:cas,revokeConfirm:das,formDescription:uas,monthlyCreditLimit:mas,expiresAt:pas,unlimited:fas,saving:gas,save:has,cancel:yas,parked:vas,noActive:bas,ccswitch:xas,filters:$as,status:was,usage:kas,actions:Cas,useTitle:Sas,useDescription:Aas,use:Tas,advancedSettings:Ras,createTitle:Pas,editTitle:_as,scope:jas,created:Nas,lastUsedIp:Das,revokedAt:Mas},Ias="審計日誌",Oas="按操作和時間查看高風險管理員操作。",Las="操作",Uas="清除",Bas={ops_user_update_status:"使用者狀態已更新",ops_users_allowlist_add:"註冊准入已新增",ops_users_allowlist_update:"註冊准入已更新",ops_users_allowlist_invite:"註冊准入已邀請",ops_users_allowlist_revoke:"註冊准入已移除",ops_users_allowlist_restore:"註冊准入已恢復",ops_model_create:"模型已建立",ops_model_update:"模型已更新",ops_model_update_status:"模型狀態已更新",sub2api_pool_create:"路由密鑰池已建立",sub2api_pool_test:"路由密鑰池已測試",sub2api_pool_rotate_secret:"路由密鑰已輪換"},Fas="審計日誌",zas="暫無審計記錄",qas="時間",Has="嚴重性",Vas="目標",Kas={ai_model:"模型",sub2api_key_pool:"路由 key pool",sys_user:"使用者",wallet:"錢包"},Gas="目標類型",Was="請求 ID",Yas={title:Ias,description:Oas,action:Las,clear:Uas,actions:Bas,label:Fas,empty:zas,time:qas,severity:Has,target:Vas,targetTypes:Kas,targetType:Gas,requestId:Was},Qas="登入 OneHop",Xas="輸入驗證碼",Zas="使用 Google 或 Email 繼續",Jas="輸入 Email 以接收驗證碼",eos="輸入傳送到 {{email}} 的 6 位驗證碼",tos="使用 Google 繼續",nos="使用 Email 繼續",aos="或",oos="Email",sos="傳送驗證碼",ros="傳送中...",ios="驗證",los="驗證中...",cos="{{seconds}} 秒後可重發",dos="重新傳送驗證碼",uos="繼續即表示你同意我們的",mos="服務條款",pos="隱私權政策",fos={signIn:"登入",signOutFailed:"登出失敗",sendCodeFailed:"驗證碼傳送失敗",notAllowed:"此信箱尚未開放存取,請聯絡管理員申請。",invalidCode:"驗證碼無效",codeIncorrect:"驗證碼錯誤,請重試",googleFailed:"Google 登入失敗",verifyHuman:"請完成人機驗證後繼續",verifyUnavailable:"人機驗證暫時無法使用,請改用上方的 Google 登入,或稍後再試。"},gos={signInTitle:Qas,enterCodeTitle:Xas,methodIntro:Zas,emailStepIntro:Jas,codeIntro:eos,continueGoogle:tos,continueEmail:nos,or:aos,emailLabel:oos,sendCode:sos,sending:ros,verify:ios,verifying:los,resendIn:cos,resendCode:dos,termsPrefix:uos,terms:mos,privacy:pos,errors:fos},hos="帳單",yos="儲值 Credits、兌換優惠碼並查看錢包流水。",vos={bonuses:"贈送",topups:"儲值",usage:"消耗"},bos={available:"已入帳",availableHint:"已計入可用餘額",frozen:"待入帳(凍結)",frozenHint:"約 {{days}} 天後入帳",frozenHintGeneric:"凍結期滿後入帳",title:"邀請獎勵",viewDetails:"查看邀請明細"},xos={noUsage:"最近 30 天暫無消耗",perDay:"日均 {{amount}}",daysLeft:"按目前速度約可用 {{days}} 天"},$os={amountUsd:"金額 (USD)",minAmountHint:"最低儲值 {{amount}}。",apply:"套用",get:"到帳",onehopCredits:"OneHop credits",pay:"支付",poweredByStripe:"由 Stripe 保障",poweredBy:"由 {{provider}} 保障",secureCheckout:"安全託管收銀台",secureCheckoutShort:"安全收銀台",taxExclusiveNotice:"稅費將於收銀台依您所在地區計算,並於此金額之外另行加收。",presets:"預設金額",promoCode:"優惠碼",promoCodePlaceholder:"輸入優惠碼",serviceFee:"服務費",title:"儲值",topupAmount:"儲值金額",totalDue:"應付總額",payCta:"支付 {{amount}}",previewing:"驗證中…",discount:"優惠碼折抵",couponBelowMin:"折抵後金額過低,請提高充值額或更換優惠碼。",maintenanceTitle:"支付暫時不可用",maintenanceDescription:"支付服務暫時出了故障,
851如果需要支付,請透過 Telegram 聯絡我們。",contactTelegram:"透過 Telegram 聯絡我們",alipay:"支付寶",wechatPay:"微信支付",crypto:"用虛擬幣支付(USDC / USDT)",payOnStripe:"付款在 Stripe 安全收銀頁完成。",payOnProvider:"付款在 {{provider}} 安全收銀頁完成。",payOnHostedCheckout:"付款在安全託管收銀頁完成。",amountPrecision:"{{provider}} 僅支援小數點後兩位的美元金額。請調整金額或優惠碼。",couponBonus:"加贈額度",couponBonusExpiry:"加贈額度將在付款後 {{days}} 天過期。",couponInvalid:"該碼無法使用,請換一個碼。",couponErrors:{limitReached:"你使用該碼的次數已達上限。",invalid:"該碼無效或不可用。",expired:"該碼已過期。",exhausted:"該碼已被兌完。",unavailable:"該碼正在被使用,請稍後再試。"},tierBonus:"充值返利",tierBonusExpiry:"加贈額度將在付款後 {{days}} 天過期。",tierBonusRestricted:"返利額度僅可用於:{{models}}。",nextTierPercent:"再儲值 {{amount}} 即可獲得 {{percent}}% 返利額度。",nextTierBonus:"再儲值 {{amount}} 即可獲得 {{bonus}} 返利額度。",tierCapReached:"你已領滿本活動的返利上限。"},wos="新增 Credits",kos="建立中...",Cos="可用 Credit",Sos="儲值",Aos="由 Stripe 提供付款",Tos="金額 (USD)",Ros="預設儲值金額",Pos="兌換優惠碼",_os="優惠碼",jos="兌換中...",Nos="兌換",Dos="優惠碼已兌換,餘額正在重新整理。",Mos="正在前往安全 checkout...",Eos="帳單摘要載入失敗",Ios="儲值失敗",Oos="帳單活動分頁",Los="交易",Uos="Credit 發放",Bos="交易類型",Fos="來源",zos="暫無交易",qos="儲值、扣費和發放記錄會顯示在這裡。",Hos="帳本記錄",Vos="時間",Kos="類型",Gos="金額",Wos="餘額",Yos="暫無發放記錄",Qos="註冊獎勵、優惠碼和人工贈送會顯示在這裡。",Xos="狀態",Zos={successTitle:"已收到付款",polling:"正在為你的錢包入帳...約 30 秒。",delayed:"入帳速度較慢。請稍後重新整理,或到 Stripe 收據查看。",cancelledTitle:"付款已取消",cancelledBody:"未產生扣款。準備好時再試一次即可。",failedTitle:"付款失敗",failedBody:"本次付款未能完成,Credit 未入帳。可以重試,或改用其他付款方式。"},Jos={text:"Credit 是預付服務額度,不是銀行存款。已消費的 Credit 不退款。所有價格以 USD 計價。詳見",tosLink:"服務條款"},ess="收據",tss="開啟中...",nss="無法開啟帳單入口",ass={title:"最近儲值",subtitle:"近 90 天紀錄,24 小時內可退款。",loading:"正在載入儲值紀錄...",date:"日期",amount:"金額",credits:"Credit",status:"狀態",refund:"退款",alreadyRefunded:"已退款",windowExpired:"退款視窗已過期(24 小時)",confirmTitle:"確認退款",confirmBody:"退款將由 Stripe 在 1-3 個工作日內處理。用戶自助發起的退款會扣除平台手續費({{fee}})。",amountLabel:"退款金額 (USD)",maxLabel:"上限 ${{value}}",requestedLabel:"申請退款金額",platformFeeLabel:"手續費({{fee}})",cardReturnLabel:"退回到你的信用卡",bonusForfeitureHint:"此筆儲值附帶的贈送 Credit 將按比例同步作廢。",cancel:"取消",confirm:"送出退款",submitting:"送出中...",refundSubmittedTitle:"退款已送出",refundSubmittedBody:"Stripe 將於 1-3 個工作天內把款項退回你的信用卡。",refundFailedTitle:"退款失敗",balance:"入帳",confirmAmount:"退款 {{amount}}"},oss={title:"餘額提醒",description:"餘額過低時通知你。",emailLabel:"郵件提醒",webhookLabel:"Webhook",autorechargeLabel:"自動儲值",autorechargeUnsupported:"目前支付渠道不支援自動儲值。",autorechargeAddCardHint:"綁定銀行卡,餘額過低時自動儲值",autorechargeTopUp:"每次儲值",autorechargeWhenBelow:"當餘額跌破",autorechargeThreshold:"自動儲值閾值",autorechargeAmount:"自動儲值金額",autorechargeDisabledFailures:"自動儲值因連續多次扣款失敗已停用。請更換銀行卡後重新開啟。",autorechargeIncomplete:"請填寫自動儲值金額和高於 $0 的閾值。",test:"測試",testing:"測試中…",testQueued:"測試投遞已排入佇列 —— 去你的端點確認收到",testFailed:"測試投遞排入佇列失敗",signingSecret:"簽名密鑰",secretOnSave:"儲存後會產生簽名密鑰。",rotate:"輪換",secretRotated:"簽名密鑰已輪換",rotateFailed:"密鑰輪換失敗",secretCopied:"簽名密鑰已複製",saved:"提醒設定已儲存",saveFailed:"提醒設定儲存失敗",loadFailed:"無法載入提醒設定",thresholdRequired:"請設定高於 $0 的閾值以啟用提醒。",webhookUrlRequired:"請填寫 https:// 開頭的 webhook 網址。",thresholdOrderBad:"提醒閾值必須 ≥ 自動儲值閾值。",card:"銀行卡",changeCard:"更換",removeCard:"移除",cardRemoved:"銀行卡已移除",cardRemoveFailed:"移除銀行卡失敗",cardSetupFailed:"綁卡失敗",lowBalanceGroup:"低餘額提醒",thresholdLabel:"提醒門檻"},sss={title:"交易歷史",idSearch:"交易 ID",amountRange:"金額範圍 (USD)",min:"最小值",max:"最大值",clear:"清除",retry:"重試",empty:"此範圍內暫無交易",date:"日期",typeMethod:"類型 / 方式",description:"說明",action:"操作",prevMonth:"上個月",nextMonth:"下個月",viewInvoices:"查看發票",emptyNew:"還沒有交易",emptyNewDesc:"充值後,你的充值、贈送和退款記錄會顯示在這裡。",topUpCta:"去充值",emptyFiltered:"沒有匹配的交易",emptyFilteredDesc:"試試清除篩選或放寬時間範圍。",clearFilters:"清除篩選"},rss="餘額偏低,可能影響調用。建議盡快充值或開啟自動充值。",iss="餘額偏低,可能影響調用。請盡快儲值以繼續使用。",lss={creditPurchase:"充值",topupBonus:"充值獎勵",signupBonus:"註冊獎勵",referralClawback:"邀請返現回扣(退款)",couponBonus:"加贈碼獎勵",referralCashback:"邀請返利",referralInviteeCashback:"受邀儲值獎勵",redeemCode:"兌換碼 {{code}}",redeemCodeReversal:"兌換碼撤銷",stripeRefund:"Stripe 退款",bonusReversal:"退款回收è´
851ˆé‡‘"},css={title:"專款額度",subtitle:"僅可用於特定模型的贈送額度,獨立於你的餘額、互不混算。",onlyModels:"僅限 {{models}}",onlyModelsGeneric:"受限模型",validUntil:"有效期至 {{date}}",noExpiry:"永不過期",useInChat:"去試用"},dss={card:"銀行卡",alipay:"支付寶",wechatPay:"微信支付"},uss={title:"兌換碼",description:"有兌換碼?輸入即可把面額充入你的餘額。",placeholder:"例如:OHR-XXXXXXXX",redeem:"兌換",redeeming:"兌換中…",success:"已兌換 {{amount}} 到餘額",successRestricted:"已到帳 {{amount}},僅限 {{models}} 使用",successValidity:"有效期至 {{date}}。",errors:{invalid:"該兌換碼無效或不可用。",expired:"該兌換碼已過期。",alreadyRedeemed:"該兌換碼已被兌換。",perUserLimit:"你已達到該批次的兌換上限。"}},mss={title:hos,description:yos,breakdown:vos,referralRewards:bos,burnRate:xos,topup:$os,addCredits:wos,creating:kos,availableCredit:Cos,topUp:Sos,poweredByStripe:Aos,amountUsd:Tos,presetAmounts:Ros,redeemCoupon:Pos,couponCode:_os,redeeming:jos,redeem:Nos,couponRedeemed:Dos,redirecting:Mos,summaryFailed:Eos,topupFailed:Ios,tabsLabel:Oos,transactions:Los,creditGrants:Uos,transactionType:Bos,source:Fos,noTransactions:zos,noTransactionsDescription:qos,ledgerEntries:Hos,time:Vos,type:Kos,amount:Gos,balance:Wos,noGrants:Yos,noGrantsDescription:Qos,status:Xos,topupBanner:Zos,compliance:Jos,receipts:ess,openingPortal:tss,portalFailed:nss,recentTopups:ass,alerts:oss,history:sss,lowBalanceWarning:rss,lowBalanceWarningNoAutoTopup:iss,ledgerDesc:lss,earmarked:css,paymentMethod:dss,redeemCard:uss},pss="圖表載入失敗",fss="暫無資料",gss="目前沒有可繪製的資料。",hss={errorTitle:pss,emptyTitle:fss,emptyDescription:gss},yss={copy:"複製",regenerate:"重新產生",shareComingSoon:"分享(即將推出)",download:"下載",copyLink:"複製連結",newChat:"新對話",deleteChat:"刪除對話",openConversationList:"開啟對話列表",openSettings:"對話設定",collapseSidebar:"收合側邊欄",expandSidebar:"展開側邊欄",cancel:"取消",apply:"套用",newChatTooltip:"新增對話",copied:"已複製"},vss={placeholderReady:"開始新的對話...",placeholderNoModel:"請先選擇上方的模型",attachmentTooLarge:"檔案超過 {{limit}},無法上傳",attachmentUnsupported:"不支援此檔案類型。請使用 PNG、JPEG、WebP、GIF、MP4、WebM 或 MOV。",unsupportedVision:"此模型不支援圖片或影片輸入。拖放檔案前請先切換模型。",send:"傳送",abort:"中止",attachImage:"新增圖片",attachMedia:"新增圖片或影片",removeAttachment:"移除",shortcutSend:"傳送",shortcutNewLine:"換行",shortcutAbort:"中止",frameFirst:"首幀",frameLast:"尾幀",frameReference:"參考圖",imageMode:"圖片生成",videoMode:"影片生成",placeholderComingSoon:"此模型即將推出——請選擇上方其他模型",reasoning:"思考",reasoningOff:"關閉",reasoningAlways:"永遠開啟",placeholderTopupRequired:"該模型僅向已充值帳戶開放 —— 充值後即可在這裡使用"},bss={modelUnavailable:"模型 {{model}} 目前無法使用。你的提示詞仍已保存。",rateLimited:"並行請求過多。請稍後再試。",accountDisabled:"此帳戶已停用,無法繼續對話。",attachmentsUploading:"圖片還在上傳,請稍候再傳送。",attachmentsFailed:"有圖片上傳失敗,請移除後重試再傳送。"},xss={title:"在這裡開始測試任何模型。",body:"直接與任何模型對話。用量會從你的 PAYG 錢包扣款。",starters:{compareModels:"用同一個程式碼任務比較 GPT-5.5 和 Claude Opus",analyzeImage:"分析一張架構圖並總結風險",draftPrompt:"為客服 agent 起草一段 system prompt",generateImage:"產生一張乾淨 SaaS 風格的產品主視覺圖片"}},$ss={untitled:"未命名對話",deleteConfirm:"刪除「{{title}}」?",emptyTitle:"尚無對話",emptyBody:"使用上方的 + 新對話開始。",listLabel:"對話列表",groups:{today:"今天",yesterday:"昨天",earlier:"更早"},menu:{rename:"重新命名",delete:"刪除"},deleteTitle:"刪除對話?"},wss={paygWallet:"PAYG 錢包"},kss={chooseModel:"選擇模型",searchPlaceholder:"搜尋模型...",emptyTitle:"找不到模型",emptyBody:"請嘗試其他搜尋詞或分頁。",protocols:"{{count}} 個協議",context:"{{value}} ctx",tabs:{all:"全部",text:"文字",image:"圖片",video:"影片"},maxOut:"輸出 {{value}}",unavailable:"暫時無法使用",requiresTopup:"需充值解鎖"},Css={title:"對話設定",protocol:"協議",unlimited:"不限",fields:{memory_limit:{label:"對話記憶"},temperature:{label:"Temperature"},top_p:{label:"Top P"},max_tokens:{label:"Max Tokens",placeholder:"128000"},service_tier:{label:"服務層級",options:{standard:"標準",priority:"優先",flex:"彈性"}},thinking_budget:{label:"Thinking Budget (tokens)",placeholder:"e.g. 2000"},stop_sequences:{label:"Stop Sequences",placeholder:"以逗號分隔,例如 END, STOP",itemLabel:"Stop"},system_prompt:{label:"System Prompt",placeholder:"輸入 system prompt..."},prompt_cache_mode:{label:"Prompt Cache",options:{implicit:"隱式",explicit:"顯式"}},image_size:{label:"圖片解析度"},image_resolution:{label:"解析度"},image_quality:{label:"圖片品質",options:{Auto:"自動",auto:"自動",low:"低",medium:"中",high:"高"}},video_ratio:{label:"寬高比"},video_resolution:{label:"影片解析度"},video_duration_seconds:{label:"時長"},tools:{label:"Tools (JSON)",placeholder:'[{ "type": "function", "function": { ... } }]'},image_count:{label:"圖片數量"},image_aspect_ratio:{label:"長寬比"},reasoning_effort:{label:"推理強度",options:{none:"關閉",minimal:"最低",low:"低",medium:"中",high:"高",xhigh:"極高",max:"最高"}},reasoning_pro:{label:"Pro 模式"},reasoning_context:{label:"推理上下文",options:{auto:"自動",current_turn:"目前輪次",all_turns:"所有輪次"}},reasoning_enabled:{label:"思考"}
851,reasoning_always:{label:"思考",value:"永遠開啟"}}},Sss={estimating:"估算中...",settling:"結算中...",input:"輸入",output:"輸出",milliseconds:"ms",realCost:"實際成本",latency:"延遲",logDetail:"日誌詳情"},Ass={copied:"圖片連結已複製",expired:"圖片連結已過期。請複製連結重新開啟,或重新產生。",attachment:"[圖片附件]"},Tss={message:"此對話將從你的 PAYG 錢包計費",balance:"餘額",billingLink:"帳單",dismiss:"關閉"},Rss={badge:"專款 {{amount}}",bannerTitle:"有專款額度可用",bannerBody:"你有 {{amount}} 專屬額度可用於此模型,將優先抵扣。"},Pss={trigger:"複製為程式碼",copied:"已複製為 {{format}}",failed:"複製失敗",failedDescription:"瀏覽器可能封鎖了剪貼簿權限。"},_ss={interrupted:"[已中斷]",sending:"傳送中"},jss={title:"思考過程",duration:"思考了 {{seconds}}s"},Nss={title:"影片生成即將推出",body:"此模型已列出供探索,但尚未啟用影片傳送。",switchToText:"切換到文字模型"},Dss={imageGenerating:"正在生成圖片",videoGenerating:"正在生成影片",stage:{queued:"排隊中",routing:"路由中",generating:"生成中",storing:"儲存中",settling:"結算中"}},Mss={INSUFFICIENT_CREDITS:"餘額不足",RATE_LIMITED:"請求過於頻繁",rate_limit_error:"請求過於頻繁",MODEL_NO_VISION:"此模型不支援圖片輸入",CONTENT_REFUSED:"模型拒絕了此請求",EMPTY_RESPONSE:"模型回傳了空內容",upstream_error:"上游服務回傳錯誤",overloaded_error:"上游服務忙碌",upstream_invalid_json:"上游回應異常",stream_read_error:"回應讀取中斷",invalid_api_key:"上游驗證失敗",model_unavailable:"模型暫時無法使用",no_image:"未能生成圖片",no_body:"上游無回應",http_error:"請求失敗",session_create_failed:"會話建立失敗"},Ess={title:"充值後即可使用該模型",body:"它只向已充值帳戶開放。充值任意金額後立即解鎖,餘額照常按量計費。",cta:"去充值"},Iss={actions:yss,composer:vss,errors:bss,empty:xss,sidebar:$ss,header:wss,modelSelector:kss,settings:Css,metrics:Sss,image:Ass,payg:Tss,earmark:Rss,copyAsCode:Pss,status:_ss,thinking:jss,video:Nss,media:Dss,errorCodes:Mss,topupLock:Ess},Oss="載入中...",Lss="帳號",Uss="語言",Bss="登入",Fss="登出",zss="正在登出...",qss="儲存變更",Hss="儲存中...",Vss="已儲存。",Kss="返回",Gss="重試",Wss="儲值服務費立減 5%。",Yss="儲存",Qss="取消",Xss="清除",Zss="重置",Jss="已複製",ers="複製失敗",trs="關閉",nrs="總計",ars={timestamp:"時間戳",local:"本地時間",relative:"相對時間"},ors="複製",srs={title:"請在瀏覽器中開啟",description:"你正在 <b>App 內建瀏覽器</b>中開啟本頁,<b>Google 登入和人機驗證在這裡無法使用</b>。請用系統瀏覽器開啟以繼續。",hintWechat:"點擊右上角 ··· 選單,選擇「在瀏覽器中開啟」。",hintGeneric:"透過右上角選單選擇「在瀏覽器 / Safari 中開啟」。",copyLink:"複製連結",continueAnyway:"仍要繼續"},rrs="全部",irs="已篩選",lrs="可選",crs="移除",drs={loading:Oss,account:Lss,language:Uss,signIn:Bss,signOut:Fss,signingOut:zss,saveChanges:qss,saving:Hss,saved:Vss,back:Kss,retry:Gss,topUpPromo:Wss,save:Yss,cancel:Qss,clearAll:Xss,reset:Zss,copied:Jss,copyFailed:ers,dismiss:trs,total:nrs,time:ars,copy:ors,inAppBrowser:srs,all:rrs,active:irs,optional:lrs,remove:crs},urs="儀表板",mrs="在同一個控制台查看 credit、用量與 gateway 關鍵健康狀態。",prs="建立 API key",frs={creditBalance:"Credit 餘額",requestsToday:"今日請求",activeApiKeys:"活躍 API keys"},grs={title:"用量趨勢",description:"最近 14 天的請求量與計費 credit。",viewUsage:"查看用量",loading:"正在載入用量趨勢",empty:"暫無用量",emptyDescription:"開始傳送請求後,這裡會顯示用量。"},hrs={title:"Credit 活躍度",description:"最近 90 天每天的計費 credit。",total:"90 天合計",loading:"正在載入活躍度",activeDays:"最近 {{days}} 天內有 {{count}} 個活躍日",less:"少",more:"多"},yrs={title:"用量體感",description:"把消耗強度、token 規模和主要模型壓縮到一屏。",activeDays:"活躍天數",ofDays:"共 {{days}} 天",avgDailyCredit:"日均 credit",nonZeroDays:"按活躍日計算",peakDay:"峰值日",noPeak:"暫無用量",tokens:"Tokens",topModel:"主要模型",creditShare:"計費 credit 佔比"},vrs={title:"快速健康狀態",requests7d:"7 日請求",creditToday:"今日消耗 credit",credit7d:"7 日消耗 credit"},brs={title:"最近請求",description:"你的 key 最近發起的 gateway 呼å
851«ã€‚",viewRecords:"查看記錄",table:{label:"最近請求",model:"模型",status:"狀態",tokens:"Tokens",credit:"Credit",time:"時間",apiKey:"API key"},empty:"暫無請求",emptyDescription:"建立 API key 並傳送請求後,最近呼叫會顯示在這裡。"},xrs={title:"傳送第一個請求",description:"相容 OpenAI。建立 key,設定 {{env}},然後呼叫 gateway。"},$rs={credit:"Credit",requests:"請求"},wrs={title:urs,description:mrs,createApiKey:prs,cards:frs,usageTrend:grs,activity:hrs,usageMix:yrs,quickHealth:vrs,recent:brs,firstRequest:xrs,tooltip:$rs},krs="選取全部列",Crs="選取第 {{row}} 列",Srs="載入失敗",Ars="暫無資料",Trs="沒有可顯示的記錄。",Rrs="更多詳情",Prs="還有 {{count}} 項詳情",_rs="開啟詳情",jrs={selectAllRows:krs,selectRow:Crs,errorTitle:Srs,emptyTitle:Ars,emptyDescription:Trs,moreDetails:Rrs,moreDetailsWithCount:Prs,openRow:_rs},Nrs="最近 1 小時",Drs="今天",Mrs="昨天",Ers="最近 7 天",Irs="最近 30 天",Ors="本月",Lrs="按月份",Urs="自訂",Brs="全部時間",Frs="選擇日期",zrs="取消",qrs="套用",Hrs="開始日期必須早於結束日期。",Vrs="時間範圍預設",Krs="上個月",Grs="下個月",Wrs={last1h:Nrs,today:Drs,yesterday:Mrs,last7d:Ers,last30d:Irs,thisMonth:Ors,byMonth:Lrs,custom:Urs,all:Brs,selectDate:Frs,cancel:zrs,apply:qrs,reversedError:Hrs,presetsAriaLabel:Vrs,previousMonth:Krs,nextMonth:Grs},Yrs="帳號不可用",Qrs="帳號正在初始化",Xrs={title:"帳號已暫停",description:"此帳號仍可登入,但控制台存取與 gateway 請求已暫停。",detail:"如果你認為這是誤操作,請使用此帳號的 Email 聯絡 support。"},Zrs={accountUnavailable:Yrs,accountInitializing:Qrs,accountRestricted:Xrs},Jrs="免費額度",eis="為指定模型每日發放的免費 token 額度,會自動刷新,不會從你的錢包扣費。",tis="無法載入你的免費額度。",nis="全部模型",ais="活動於 {{date}} 結束",ois={daily:"每日",weekly:"每週"},sis={daily:"每日刷新",weekly:"每週刷新",localTime:"你的本地時間 {{time}}",countdown:"距下次刷新 {{duration}}",refreshingSoon:"即將刷新"},ris={title:"目前沒有進行中的免費額度活動",description:"有免費額度活動進行時,你的每日額度會顯示在這裡。"},iis={title:"你的帳號已暫停發放免費額度",body:"此帳號疑似屬於批量註冊的一部分,因此暫時暫停免費發放。如有誤會,請聯絡"},lis="tokens",cis="今日剩餘 {{value}} tokens",dis={label:"用完時郵件提醒",hint:"今日免費額度用完時,寄一封郵件通知你。"},uis={crg_freetoken_daily_cn5:"國產模型 · 每日免費 Token"},mis={title:Jrs,description:eis,loadFailed:tis,allModels:nis,campaignEnds:ais,cadence:ois,refresh:sis,empty:ris,paused:iis,tokensUnit:lis,remainingToday:cis,emailToggle:dis,campaigns:uis},pis="日誌",fis="查看每筆請求的成本、延遲、tokens、狀態和路由信號。",gis={copiedCurl:"已複製 curl",copiedId:"已複製請求 ID",copyCurl:"複製為 curl",copyFailed:"複製失敗",copyId:"複製請求 ID",menu:"行操作",openTab:"在新分頁打開"},his={prompt:"Prompt",ratio:"命中率",read:"快取讀取",title:"快取命中率"},yis={confirm:"取消任務",failed:"取消任務失敗",keep:"保留",message:"此任務仍在排隊中。取消後將不再處理,也不會產生扣費。",success:"任務已取消",title:"取消任務?",pending:"取消中..."},vis={cacheHit:"快取命中",cost:"成本",ip:"IP",latency:"延遲",model:"模型",source:"來源",status:"狀態",stream:"串流",time:"時間",tokens:"Tokens",tps:"吞吐"},bis={trigger:"欄位設定"},xis={body:"透過 OneHop 發起一次請求,記錄就會出現在這裡。",title:"此區間內暫無日誌"},$is={all:"全部",apiKey:"API key",cost:"成本 (USD)",desktopDateRangeAria:"選擇桌面端日期範圍",finishReason:"結束原因",latency:"延遲 (s)",max:"最大",min:"最小",mobileDateRangeAria:"選擇行動端日期範圍",model:"模型",modelsSelected:"已選 {{count}} 個",more:"更多篩選",refresh:"重新整理",request:"按請求 ID 搜尋",requestIdLabel:"請求 ID",status:"狀態",
851stream:"串流",time:"時間",type:"類型",mobileTitle:"篩選"},wis={requests:"本頁記錄",times:"時間顯示為"},kis={rowsPer:"每頁"},Cis={all:"全部時間",custom:"自訂",last1h:"最近 1 小時",last30d:"最近 30 天",last7d:"最近 7 天",thisMonth:"本月",today:"今天",yesterday:"昨天"},Sis={title:"客戶端",unknown:"未回報 user-agent",unknownShort:"未知"},Ais={output:"輸出 tokens",rate:"速率",title:"吞吐",window:"生成窗口"},Tis={title:"請求",openDetail:"開啟請求詳情",copy:"複製 ID",copied:"已複製",copyFailed:"複製失敗",close:"關閉",loading:"載入中…",response:"回應",sections:{request:"請求",routing:"路由",tokens:"Tokens",cost:"成本拆分",performance:"效能",error:"錯誤",outcome:"結果",multimodal:"多模態"},fields:{requestId:"請求 ID",time:"時間",apiKey:"API key",userAgent:"User-Agent",billingMode:"計費模式",onehopModel:"OneHop 模型",endpoint:"Endpoint",firstToken:"首 token",total:"總耗時",throughput:"吞吐",stream:"串流",clientIp:"客戶端 IP",finishReason:"結束原因",mediaType:"媒體類型",imageCount:"圖片數",imageSize:"尺寸",errorCode:"代碼",errorMessage:"訊息",requestedModel:"請求模型"},billingMode:{token:"按 token",per_request:"按次",image:"按圖片"},timeline:{heading:"生命週期",received:"收到請求",routed:"完成路由",failed:"失敗",generated:"生成完成",metered:"完成計量",billed:"完成計費"},downloadMedia:"下載"},Ris={success:"成功",completed:"已完成",failed:"失敗",pending:"等待中",repairing:"修復中",queued:"排隊中",running:"執行中",cancelled:"已取消",expired:"已過期"},Pis={chat:"對話",image:"圖片",video:"影片"},_is={stop:"正常結束",length:"長度限制",tool_calls:"工具呼叫",content_filter:"內容過濾",error:"錯誤"},jis={true:"串流",false:"非串流"},Nis={title:"成本拆分"},Dis={title:"Token 明細",prompt:"輸入",completion:"輸出",imageOutput:"圖片輸出 token",cacheRead:"快取讀取",cacheWrite:"快取寫入",cacheWrite5m:"快取寫入 5m",cacheWrite1h:"快取寫入 1h",total:"總計"},Mis={timestamp:"時間戳",local:"本地時間",relative:"相對時間"},Eis={inputCost:"輸入成本",outputCost:"輸出成本",cacheReadCost:"快取讀取成本",cacheWriteCost:"快取寫入成本",inputPrice:"輸入單價",outputPrice:"輸出單價",total:"總計",officialPrice:"官方價",saved:"已優惠",factor:{textInput:"文字輸入",textOutput:"文字輸出",imageInput:"圖片輸入",imageOutput:"圖片輸出",perCallImage:"按張",videoPerSecond:"影片",videoPerCall:"影片",cacheRead:"快取讀取",cacheWrite:"快取寫入",cacheWrite5m:"快取寫入(5m)",cacheWrite1h:"快取寫入(1h)"},unit:{per1mTokens:"/ 1M tokens",perImage:"/ 張",perSecond:"/ 秒",perCall:"/ 次"},promoBasis:"折前",promoSaved:"活動優惠",freeCovered:"免費額度抵扣({{tokens}} tokens)",freeCoveredNoCount:"免費額度抵扣"},Iis={noPreview:"暫無預覽",video:"影片"},Ois={free:"免費"},Lis={title:pis,description:fis,actions:gis,cacheHit:his,cancelJob:yis,col:vis,columns:bis,empty:xis,filter:$is,meta:wis,pager:kis,range:Cis,source:Sis,tps:Ais,drawer:Tis,status:Ris,type:Pis,finishReason:_is,stream:jis,costBreakdown:Nis,tokensBreakdown:Dis,time:Mis,userCost:Eis,export:{label:"匯出 CSV",exporting:"匯出中…",done:"已匯出 {{n}} 列。",truncated:"已匯出前 {{n}} 列,縮小時間範圍可匯出其餘。",failed:"匯出失敗,請重試。"},media:Iis,cost:Ois},Uis="模型",Bis="查看全部可用模型、上下文長度、輸入/輸出價格,並收藏常用模型。",Fis={all:"全部",favorites:"我的收藏",benefit:"福利",hot:"熱門",free:"免費"},zis={capability:"類型",allCapabilities:"全部類型",capability_text:"文字",capability_image:"圖片",capability_audio:"音訊",capability_video:"影片",provider:"提供商",allProviders:"全部提供商",protocol:"協議",allProtocols:"全部協議",sort:"排序",search:"搜尋",searchPlaceholder:"模型 / 廠商",context:"上下文",allContexts:"不限",mobileTitle:"篩選"},qis="推薦",His="最新",Vis="週熱度",Kis="名稱 (A-Z)",Gis="價格(由低到高)",Wis="價格(由高到低)",Yis="上下文長度",Qis="延遲",Xis="吞吐",Zis="OpenAI Chat",Jis="OpenAI Responses",els="Anthropic",tls="Vertex AI",
851nls="OpenAI Images",als="OpenAI Video",ols={label:"模型",model:"模型",provider:"提供商",capabilities:"能力",context:"上下文",price:"價格",discount:"折扣",action:"操作",tryIt:"試一試",type:"類型",maxOutput:"最大輸出",copyId:"複製模型 ID",copied:"已複製",usage:"用量",stability:"穩定性",protocols:"協定",openDetail:"開啟模型詳情"},sls="熱門",rls="福利",ils={add:"收藏",remove:"取消收藏"},lls={favorites:"還沒有收藏的模型",noMatch:"沒有匹配的模型"},cls="文字",dls="圖片",uls="檔案",mls="影片",pls="音訊",fls="嵌入",gls="視覺",hls="工具調用",yls="JSON 模式",vls="圖片生成",bls="圖片編輯",xls="文字",$ls="圖片",wls="影片",kls="音訊",Cls="嵌入",Sls="官方",Als="Kiro",Tls="最低",Rls="/ 次",Pls="/ 秒",_ls="/ 1M",jls="極速",Nls="免費",Dls="即將推出",Mls="免費",Els={ariaLabel:"價格貨幣",usd:"美元",rmb:"人民幣 (Â¥)",settlement:"價格以人民幣顯示,按固定匯率 {{rate}} 折算,僅供參考;錢包始終以美元按實際用量結算。"},Ils="需充值",Ols={title:Uis,description:Bis,tabs:Fis,filters:zis,sort_featured:qis,sort_newest:His,sort_top_weekly:Vis,sort_name:Kis,sort_price_asc:Gis,sort_price_desc:Wis,sort_context:Yis,sort_latency:Qis,sort_throughput:Xis,protocol_openai_chat:Zis,protocol_openai_responses:Jis,protocol_anthropic_messages:els,protocol_google_vertex_ai:tls,protocol_openai_images:nls,protocol_openai_sora:als,table:ols,badge_hot:sls,badge_benefit:rls,favorite:ils,empty:lls,modality_text:cls,modality_image:dls,modality_file:uls,modality_video:mls,modality_audio:pls,modality_embeddings:fls,capability_vision:gls,capability_tool_calling:hls,capability_json_mode:yls,capability_image_generation:vls,capability_image_edit:bls,type_text:xls,type_image:$ls,type_video:wls,type_audio:kls,type_embedding:Cls,provider_official:Sls,provider_kiro:Als,price_from:Tls,price_perCall:Rls,price_perSec:Pls,price_per1m:_ls,price_fast:jls,badge_free:Nls,badge_unavailable:Dls,price_free:Mls,currency:Els,badge_requiresTopup:Ils},Lls={main:"主導航",utility:"工具導航",console:"控制台導航",openNavigation:"打開導航",collapse:"收起側邊欄",expand:"展開側邊欄"},Uls={platform:"控制台",chat:"對話",models:"模型",logs:"日誌",jobs:"任務",apiKeys:"API 密鑰",usage:"用量",billing:"帳單",freeTokens:"免費額度",referrals:"邀請",settings:"設定",admin:"管理",balance:"餘額",helpSupport:"幫助與支援",announcements:"公告",announcementsTitle:"公告",announcementsEmpty:"暫無公告,敬請期待。",announcementsTicketUnread:"{{count}} 張工單有新回覆",support:"工單",tasks:"任務牆",tagNew:"新"},Bls={staff:"管理後台"},Fls={dashboard:"總覽",users:"用戶",billing:"平台帳單",usage:"平台用量",rateLimits:"速率限制",access:"訪問控制",staff:"管理員",growth:"增長",models:"模型",announcements:"公告",upstream:"上游",auditLogs:"審計日誌",webhooks:"事件回調",support:"工單中心",campaigns:"活動營運",domainRules:"郵箱域名單"},zls={title:"通知",markAllRead:"全部已讀",loading:"載入中…",emptyTitle:"暫無新通知",emptyBody:"有新通知會顯示在這裡。"},qls={aria:Lls,public:{models:"模型",pricing:"價格",docs:"文件",blog:"網誌",changelog:"更新日誌"},console:Uls,adminGroups:Bls,admin:Fls,notifications:zls},Hls={back:"上一步",done:"完成",next:"下一步",stepOf:"{{current}} / {{total}}"},Vls={balance:{body:"隨用隨儲。未使用餘額可隨時退款。",title:"你的餘額"},keys:{body:"點這裡產生一把 key,把任何工具指向 OneHop 即可。",title:"建立第一把 API key"},models:{body:"一頁看清你能調用的所有模型,以及各自價格。",cta:"打開模型頁",title:"看看模型"}},Kls={body:"一個 URL 調用所有模型。花 30 秒帶你看三件事。",skip:"跳過",start:"開始",title:"歡迎使用 OneHop"},Gls={nav:Hls,steps:Vls,welcome:Kls},Wls="載入失敗",Yls="這裡暫時沒有內容。",Qls="更多詳情",Xls={failedLoad:Wls,emptyDescription:Yls,moreDetails:Qls},Zls="全部",Jls="成功",ecs="處理中",tcs="修復中",ncs="失敗",acs="已退款",ocs="活躍",scs="已停用",rcs="已用罄",ics="佔用中",lcs="已兌換",ccs="已暫停",dcs="已刪除",ucs="正常",mcs="觀察中",pcs="已阻止",fcs="已發放",gcs="凍結中",hcs="已釋放",ycs="已取消",vcs="部分回扣",bcs="已沖回",xcs="已跳過",$cs="已過期",wcs="已拒絕",kcs="草稿",Ccs="已發布",Scs="已棄用",Acs="已封存",Tcs="隱藏",Rcs="已建ç«
851‹",Pcs="已開啟 checkout",_cs="已支付",jcs="已取消",Ncs="OpenAI Chat",Dcs="OpenAI Responses",Mcs="Anthropic Messages",Ecs="Google Vertex AI",Ics="OpenAI Images",Ocs="用量扣費",Lcs="註冊獎勵",Ucs="促銷獎勵",Bcs="推薦獎勵",Fcs="補償獎勵",zcs="儲值獎勵",qcs="人工調整",Hcs="Credit 購買",Vcs="支付",Kcs="註冊獎勵",Gcs="優惠碼",Wcs="管理員贈送",Ycs="API 用量",Qcs="註冊獎勵",Xcs="人工贈送",Zcs="同步",Jcs="Streaming",eds="Token 計費",tds="請求計費",nds="圖片計費",ads="低 reasoning",ods="中 reasoning",sds="高 reasoning",rds="不適用",ids="未知",lds={all:Zls,success:Jls,pending:ecs,repairing:tcs,failed:ncs,refunded:acs,active:ocs,disabled:scs,exhausted:rcs,reserved:ics,redeemed:lcs,suspended:ccs,deleted:dcs,normal:ucs,watchlisted:mcs,blocked:pcs,granted:fcs,frozen:gcs,released:hcs,cancelled:ycs,partially_reversed:vcs,reversed:bcs,skipped:xcs,expired:$cs,denied:wcs,draft:kcs,published:Ccs,deprecated:Scs,archived:Acs,public:"公開",hidden:Tcs,created:Rcs,checkout_opened:Pcs,paid:_cs,canceled:jcs,openai_chat:Ncs,openai_responses:Dcs,anthropic_messages:Mcs,google_vertex_ai:Ecs,openai_images:Ics,usage_charge:Ocs,bonus_signup_grant:Lcs,bonus_promo_grant:Ucs,bonus_referral_grant:Bcs,bonus_compensation_grant:Fcs,bonus_topup_grant:zcs,manual_adjustment:qcs,credit_purchase:Hcs,payment:Vcs,signup:Kcs,coupon:Gcs,admin:Wcs,api:Ycs,signup_bonus:Qcs,manual:Xcs,sync:Zcs,stream:Jcs,token:eds,request:tds,image:nds,low:ads,medium:ods,high:sds,not_applicable:rds,unknown:ids},cds="{{count}} 條/頁",dds="共 {{count}} 條",uds={perPage:cds,total:dds},mds="邀請與返利",pds="分享你的專屬連結。被邀請使用者儲值後,雙方的返利都會清楚記錄。",fds="無法載入邀請資料",gds="你的邀請連結",hds="分享",yds="已複製邀請內容,打開微信貼給好友即可",vds="複製",bds="已複製",xds="微信",$ds="X",wds="Telegram",kds="Reddit",Cds="LinkedIn",Sds="WhatsApp",Ads="郵件",Tds="Facebook",Rds={default:{title:"用一個 OneHop API,調用所有 AI 模型",body:"用我的邀請連結註冊 —— 在 {{firstWindowDays}} 天內首次儲值,我們雙方各得 {{percent}}% 返利。"},x:{title:"一個 API,調用所有 AI 模型 🤖",body:"用我的連結在 {{firstWindowDays}} 天內首次儲值,我們各得 {{percent}}% 返利 🚀"},telegram:{title:"用 OneHop 接入所有 AI 模型",body:"使用我的邀請連結 —— 在 {{firstWindowDays}} 天內首次儲值,我們雙方各得 {{percent}}% 返利積分。"},whatsapp:{title:"用 OneHop 接入所有 AI 模型",body:"用我的邀請連結加入,在 {{firstWindowDays}} 天內首次儲值,我們雙方各得 {{percent}}% 返利。"},reddit:{title:"OneHop —— 一個 API 調用所有 AI 模型;用我的邀請連結首次儲值,我們雙方各得 {{percent}}% 返利",body:"在 {{firstWindowDays}} 天內首次儲值,我們雙方各得 {{percent}}% 返利積分。"},email:{title:"邀請你使用 OneHop —— 透過一個 API 調用所有 AI 模型",body:`你好,
852
853我正在使用 OneHop,透過單一 API 就能調用各大主流 AI 模型。使用我的邀請連結註冊,完成首次儲值後,我們雙方都能獲得返利積分。
854
855返利級距:{{tiers}}。
856
857謝謝!`},wechat:{title:"OneHop —— 一個 API 調用所有 AI 模型",body:"用我的邀請連結註冊,在 {{firstWindowDays}} 天內首次儲值,我們雙方各得 {{percent}}% 返利。"}},Pds="返利在付款後立即可見,但會先凍結以覆蓋退款期,到期後釋出為 OneHop 邀請獎勵 credit。",_ds="{{days}} 天後釋出。",jds={referrer:"邀請人",referee:"被邀請人"},Nds={referrer:":被邀請人首次及後續儲值,你都依級距獲得 credit 回饋 —— {{tiers}}。",referee:":用邀請連結註冊後,你的儲值同樣依級距獲得 credit 回饋 —— {{tiers}}。"},Dds={dayRange:"{{fromDay}}-{{untilDay}} 天",dayOpenEnded:"{{fromDay}} 天起"},Mds="累計獲得",Eds="已釋出邀請返利",Ids="凍結中邀請返利",Ods="邀請人數",Lds="有效邀請",Uds="已釋出被邀獎勵",Bds="凍結中被邀獎勵",Fds="取消 / 回扣",zds="你邀請的人",qds="返利明細",Hds={user:"使用者",joined:"註冊時間",topups:"儲值筆數",earned:"你已獲得",frozen:"凍結中",date:"時間",event:"事件",topupAmount:"對方儲值",rate:"比例",releaseAt:"釋出時間",cashback:"返利",status:"狀態"},Vds={title:"還沒有邀請",description:"分享你的連結即可開始獲得返利。"},Kds={inviteeSignedUp:"被邀請人成功註冊",youSignedUp:"你透過邀請成功註冊",inviteePaid:"被邀請人成功消費",youPaid:"ä
857½ ä½œç‚ºè¢«é‚€è«‹äººæˆåŠŸæ¶ˆè²»"},Gds={frozen:"凍結中",released:"已釋出",cancelled:"已取消",partially_reversed:"部分回扣",reversed:"已回扣",failed:"失敗",skipped:"已跳過"},Wds={title:mds,description:pds,error:fds,yourLink:gds,shareVia:hds,wechatCopied:yds,copy:vds,copied:bds,wechat:xds,x:$ds,telegram:wds,reddit:kds,linkedin:Cds,whatsapp:Sds,email:Ads,facebook:Tds,share:Rds,offer:Pds,releaseDelay:_ds,role:jds,roleOffer:Nds,policy:Dds,totalEarned:Mds,availableEarned:Eds,frozenEarned:Ids,invited:Ods,active:Lds,availableReceived:Uds,frozenReceived:Bds,cancelledReversed:Fds,peopleYouInvited:zds,history:qds,col:Hds,empty:Vds,event:Kds,status:Gds},Yds="設定",Qds="管理帳號偏好與控制台預設選項。",Xds="目前登入:{{email}}",Zds="顯示名稱",Jds="語言",eus="時區",tus="資料載入失敗",nus="儲存失敗",aus="放棄變更?",ous="你有尚未儲存的變更,現在離開將會捨棄這些變更。",sus="放棄",rus="繼續編輯",ius={title:Yds,description:Qds,signedInAs:Xds,displayName:Zds,locale:Jds,timezone:eus,failedLoad:tus,failedSave:nus,discardTitle:aus,discardMessage:ous,discardConfirm:sus,keepEditing:rus},lus="任務牆",cus="把 OneHop 分享給你的讀者,賺取試用金。每一則提交我們都人工審核。",dus="你的內容連結",uus="https://…",mus="提交",pus="已提交,我們會盡快審核。",fus="可提交的平台:{{hosts}}",gus="上次被退回:{{reason}}。修正後可以重新提交。",hus={pending:"審核中",approved:"已入帳",rejected:"已退回",active:"已生效"},yus={title:"目前沒有任務",description:"過陣子再來看看——這類活動我們會不定期推出。"},vus={x_quote:{title:"在 X 引用轉發我們",description:"引用轉發 @OneHopAI 的置頂貼文,並寫上你自己的使用心得。",rules:["X 帳號需註冊滿 6 個月且至少有 10 位追蹤者。","提交你自己那則引用貼文的連結,不是原貼文的連結。","審核通過後 2 小時內入帳。"]},youtube_tutorial:{title:"發一支 YouTube 教學",description:"6 分鐘以上的影片,說明你如何把 OneHop 接進自己的 agent。",rules:["發布後提交影片連結。","YouTube 頻道訂閱數需 ≥ 50。","每個帳號僅限參加一次。","審核通過後 2 小時內入帳。"]},short_video:{title:"發一支短影音",description:"在 TikTok 或 YouTube 發 40 秒以上的短影音,提到你的 OneHop 設定。",rules:["發布後提交影片連結。","審核通過後 2 小時內入帳。"]},github_readme:{title:"在你的 GitHub README 加上 OneHop",description:"在你自己的儲存庫 README 加一句 OneHop 的贊助訊息,此後每筆儲值額外加送 15%。",rules:["README 上線後提交儲存庫連結。","這是永久的,不是一次性:此後每筆儲值會取「全站標準贈送」與「你的 15%」中較高者。","可直接複製的文案見下方。"]}},bus={load:"任務牆載入失敗",generic:"提交失敗",urlRequired:"請先貼上你的內容連結。",urlTooLong:"這個連結太長了。",urlMalformed:"這看起來不是有效的連結。",hostNotAllowed:"此任務只接受上方列出的平台連結。",notAPost:"請填具體那則內容的連結,不是個人頁或頻道頁。",alreadySubmitted:"這個任務你已經提交過了。",notAvailable:"此任務目前無法使用。",busy:"今天的審核量已滿,請明天再試。",emailUnverified:"請先驗證你的電子郵件。",accountTooNew:"你的帳號註冊時間還不夠久。",riskFlagged:"此帳號目前無法參加。如認為有誤請聯絡客服。",accountInactive:"此帳號未處於正常狀態。",deviceAlreadyClaimed:"此裝置上已有另一個帳號參加過。"},xus="感謝 [OneHop]({{url}}) 對本專案的贊助!OneHop 可為使用者提供一枚相容 OpenAI 協議的 API 金鑰,即可呼叫上百款主流大模型,包括 GPT、Claude、Gemini、DeepSeek、Kimi 以及通義千問(Qwen)。你無需管理多家服務商帳號,也不用反覆修改程式碼,就能自由切換模型;並且採用按量付費模式。→ {{domain}}",$us="複製這段文案",wus={title:lus,description:cus,urlLabel:dus,urlPlaceholder:uus,submit:mus,submitted:pus,allowedHosts:fus,rejectedHint:gus,status:hus,empty:yus,item:vus,error:bus,sponsorBlurb:xus,copyBlurb:$us},kus="線上客服",Cus="支援工單",Sus="提交工單,我們會盡快回覆你。",Aus="新建工單",Tus={subject:"主旨",category:"類型",status:"狀態",updated:"更新時間",user:"使用者"},Rus={billing:"計費",technical:"技術",account:"帳號",other:"其他"},Pus={open:"待處理",pending:"待回覆",resolved:"已解決",closed:"已關閉"},_us={allStatuses:"全部狀態",allCategories:"全部類型",search:"搜尋 email 或主旨"},jus={subject:"主旨",subjectPlaceholder:"簡要描述你的問題",category:"類型",message:"內容",messagePlaceholder:"èª
857ªèªªç™¼ç”Ÿäº†ä»€éº¼â€¦",attachments:"附件",addAttachment:"新增檔案",submit:"提交工單",cancel:"取消"},Nus={you:"ä½ ",support:"客服",system:"系統",replyPlaceholder:"寫回覆…",send:"傳送",closedNotice:"工單已關閉。如仍需協助,請新建工單。",sendHint:"按 ⌘/Ctrl + Enter 傳送",back:"返回工單列表",systemStatus:{open:"重新開啟了工單",pending:"已將工單標記為等待使用者",resolved:"已將工單標記為已解決",closed:"已關閉工單"}},Dus={title:"工單中心",resolve:"標記已解決",close:"關閉",reopen:"重新開啟",unread:"未讀"},Mus="載入更多",Eus={created:"工單已提交",replied:"回覆已傳送",statusUpdated:"狀態已更新",error:"發生錯誤,請重試"},Ius="工單不存在或已被刪除。",Ous={title:"還沒有工單",body:"遇到問題了?提交工單,我們來幫你。",cta:"提交第一個工單"},Lus={liveChat:kus,title:Cus,subtitle:Sus,newTicket:Aus,columns:Tus,category:Rus,status:Pus,filters:_us,form:jus,thread:Nus,admin:Dus,loadMore:Mus,toast:Eus,notFound:Ius,empty:Ous},Uus="用量",Bus="餘額、消耗速度,以及你的開銷都花在哪裡。",Fus="活動",zus="此區間內暫無活動",qus="用量明細",Hus="按 API key",Vus="按模型",Kus="按 token 類型",Gus="暫無資料",Wus="此區間內暫無用量。",Yus="按目前速度,餘額預計還能用 {{days}} 天(約 {{rate}}/天)。",Qus="輸出",Xus="快取",Zus={tokens:"Tokens",requests:"請求數",cost:"費用"},Jus="其他",ems="次",tms="tok",nms="重新整理中…",ams="暫無資料",oms="發起一次請求即可開始累積資料。",sms="熱門 API key",rms="儲值",ims={title:"無法載入用量"},lms={firstToken:"首 token",latency:"平均延遲",requests:"請求",spend:"消費",spendSub:"本期計費",successRate:"{{rate}}% 成功",tokens:"Tokens",textDuration:"文字",mediaDuration:"圖片/影片",cacheHit:"快取命中 {{rate}}%",projected:"約 {{amount}}/月",vsPrevious:"對比上一週期"},cms={activeDays:"活躍天數",longestStreak:"最長連續",daysValue:"{{n}} 天",totalSpend:"本期消費",peakDay:"最活躍日"},dms={all:"全部時間",custom:"自訂",last1h:"最近 1 小時",last30d:"最近 30 天",last7d:"最近 7 天",thisMonth:"本月",today:"今天",yesterday:"昨天",byMonth:"按月份"},ums={failed:"失敗",success:"成功"},mms={cacheRead:"快取讀取",cacheWrite:"快取寫入",cacheWrite1h:"快取寫入 1h",cacheWrite5m:"快取寫入 5m",completion:"輸出",prompt:"輸入"},pms={body:"從終端發起請求,或打開 playground —— 幾秒內用量就會出現在這裡。",openPlayground:"打開 playground",title:"你的 key 已就緒"},fms={body:"建立第一個 API key,用一個 URL 路由所有請求,用量隨後就會顯示在這裡。",createKey:"建立 API key",title:"歡迎使用 OneHop",tryPlayground:"試試 playground"},gms="重新整理",hms="目前篩選中 {{count}} 個成功請求",yms="總 tokens",vms="輸入 {{input}} / 輸出 {{output}}",bms="計費 credit",xms="{{cost}} 上游實際成本",$ms="平均延遲",wms="首 token {{duration}}",kms="30 日活動",Cms="成功請求、token 量與計費 credit。",Sms="正在載入用量趨勢",Ams="暫無用量趨勢",Tms="成功請求出現後會顯示用量趨勢。",Rms="熱門模型",Pms="最近 30 天按模型統計的計費 credit。",_ms="暫無模型用量",jms="成功請求出現後會顯示模型拆分。",Nms="模型",Dms="全部模型",Mms="狀態",Ems="協定",Ims="行數",Oms="重設",Lms="用量記錄",Ums="API key",Bms="Endpoint",Fms="類型",zms="Tokens",qms="成本",Hms="耗時",Vms="時間",Kms="User-Agent",Gms="詳情",Wms="請求詳情",Yms="用量記錄詳情與計費 metadata。",Qms="請求 ID",Xms="操作",Zms="輸入 tokens",Jms="輸出 tokens",eps="快取讀取 tokens",tps="快取寫入 tokens",nps="輸入成本",aps="輸出成本",ops="快取讀取成本",sps="快取寫入成本",rps="錯誤碼",ips="錯誤訊息",lps="未找到。",cps="credit",dps="總計 {{count}}",ups="正在載入用量記錄",mps="暫無用量記錄",pps="換一組篩選條件試試。",fps="請求流經你的 API keys 後,記錄會顯示在這裡。",gps="第 {{page}} 頁 · 顯示 {{shown}} 筆,共 {{total}} 筆匹配記錄",hps="上一頁",yps="下一頁",vps="Credit",bps="Tokens",xps="請求",$ps={time:"時間",apiKey:"API Key",model:"模型",reasoningEffort:"推理強度",endpoint:"Endpoint",type:"類型",billingMode:"計費模式",inputTokens:"輸入 Tokens",outputTokens:"輸出 Tokens",cacheReadTokens:"快取讀取 Tokens",cacheWriteTokens:"快取寫入 Tokens",totalTokens:"總 Tokens",billedCredit:"計費 Credit",firstTokenMs:"首 Token 毫秒",durationMs:"耗時毫秒",status:"狀態",userAgent:"User-Agent"},wps={mon:"週一",wed:"週三",fri:"週五"},kps="少",Cps="多",Sps={title:Uus,description:Bus,activity:Fus,activityEmpty:zus,breakdown:qus,byApiKey:Hus,byModel:Vus,byTokenType:Kus,chartEmpty:Gus,chartEmptyHint:Wus,burnRate:Yus,in:"輸入",out:Qus,cache:Xus,metric:Zus,other:Jus,req:ems,tok:tms,refreshing:nms,topEmpty:ams,topEmptyHint:oms,topKeys:sms,topUp:rms,error:ims,kpi:lms,stat:cms,range:dms,requests:ums,tokenType:mms,noRequests:pms,welcome:fms,refresh:gms,successfulFilter:hms,totalTokens:yms,inOut:vms,billedCredit:bms,upstreamA
857ctualCost:xms,avgLatency:$ms,firstToken:wms,activityTitle:kms,activityDescription:Cms,loadingTrend:Sms,noUsageTrend:Ams,trendDescription:Tms,topModels:Rms,topModelsDescription:Pms,noModelUsage:_ms,noModelUsageDescription:jms,model:Nms,allModels:Dms,status:Mms,protocol:Ems,rows:Ims,reset:Oms,tableLabel:Lms,apiKey:Ums,endpoint:Bms,type:Fms,tokens:zms,cost:qms,duration:Hms,time:Vms,userAgent:Kms,details:Gms,requestDetail:Wms,detailDescription:Yms,requestId:Qms,operation:Xms,inputTokens:Zms,outputTokens:Jms,cacheReadTokens:eps,cacheWriteTokens:tps,inputCost:nps,outputCost:aps,cacheReadCost:ops,cacheWriteCost:sps,errorCode:rps,errorMessage:ips,notFound:lps,creditSuffix:cps,total:dps,loadingRecords:ups,noRecords:mps,differentFilters:pps,recordsEmpty:fps,pageSummary:gps,previous:hps,next:yps,chartCredit:vps,chartTokens:bps,chartRequests:xps,csv:$ps,weekday:wps,activityLess:kps,activityMore:Cps},F3={ar:{translation:{adminAccess:i0e,adminBilling:xke,adminCampaigns:Kke,adminContent:n1e,adminDashboard:q1e,adminGate:G1e,adminGrowth:yRe,adminModels:TPe,adminRateLimits:QPe,adminStaff:R_e,adminUpstream:q_e,adminUsage:J2e,adminUserDetail:CNe,adminUsers:ZDe,adminWebhooks:yMe,apiKeys:mEe,auditLogs:AEe,auth:KEe,billing:qIe,charts:GIe,chat:pOe,common:FOe,dashboard:JOe,dataTable:l3e,dateRange:S3e,errors:P3e,freeTokens:q3e,logs:gLe,models:f4e,nav:x4e,onboarding:C4e,opsTable:R4e,optionLabels:U5e,pagination:z5e,referrals:SUe,settings:LUe,tasks:JUe,support:gBe,usage:n8e}},de:{translation:{adminAccess:oFe,adminBilling:yze,adminCampaigns:qze,adminContent:J7e,adminDashboard:Bqe,adminGate:Hqe,adminGrowth:fKe,adminModels:CGe,adminRateLimits:GGe,adminStaff:SWe,adminUpstream:BWe,adminUsage:QQe,adminUserDetail:$Xe,adminUsers:YZe,adminWebhooks:fJe,apiKeys:det,auditLogs:Cet,auth:Vet,billing:ztt,charts:Ktt,chat:mnt,common:Bnt,dashboard:Znt,dataTable:iat,dateRange:Cat,errors:Rat,freeTokens:zat,logs:fot,models:pst,nav:bst,onboarding:kst,opsTable:Tst,optionLabels:Lrt,pagination:Frt,referrals:Cit,settings:Oit,tasks:Zit,support:flt,usage:tdt}},en:{translation:{adminAccess:aut,adminBilling:hmt,adminCampaigns:zmt,adminContent:Zpt,adminDashboard:Uft,adminGate:qft,adminGrowth:pvt,adminModels:kbt,adminRateLimits:Kbt,adminStaff:Cxt,adminUpstream:Uxt,adminUsage:Ywt,adminUserDetail:x0t,adminUsers:Wkt,adminWebhooks:pCt,apiKeys:l1t,auditLogs:w1t,auth:z1t,billing:USt,charts:qSt,chat:cAt,common:OAt,dashboard:YAt,dataTable:oTt,dateRange:$Tt,errors:STt,freeTokens:UTt,logs:uRt,models:dPt,nav:hPt,onboarding:xPt,opsTable:CPt,optionLabels:E_t,pagination:L_t,referrals:$jt,settings:Mjt,tasks:Yjt,support:u2t,usage:ZNt}},es:{translation:{adminAccess:eMt,adminBilling:pEt,adminCampaigns:UEt,adminContent:YIt,adminDashboard:IOt,adminGate:BOt,adminGrowth:d5t,adminModels:xUt,adminRateLimits:qUt,adminStaff:$Bt,adminUpstream:IBt,adminUsage:K8t,adminUserDetail:yFt,adminUsers:Vzt,adminWebhooks:d7t,apiKeys:sqt,auditLogs:bqt,auth:Uqt,billing:IHt,charts:BHt,chat:rVt,common:MVt,dashboard:KVt,dataTable:t9t,dateRange:v9t,errors:w9t,freeTokens:I9t,logs:lKt,models:iGt,nav:pGt,onboarding:yGt,opsTable:$Gt,optionLabels:NWt,pagination:EWt,referrals:vYt,settings:jYt,tasks:KYt,support:lQt,usage:YXt}},fr:{translation:{adminAccess:XZt,adminBilling:den,adminCampaigns:Ien,adminContent:Ktn,adminDashboard:Dnn,adminGate:Onn,adminGrowth:irn,adminModels:yin,adminRateLimits:Bin,adminStaff:vln,adminUpstream:Dln,adminUsage:qdn,adminUserDetail:fun,adminUsers:zmn,adminWebhooks:ipn,apiKeys:nfn,auditLogs:hfn,auth:Ifn,billing:Dgn,charts:Ogn,chat:ahn,common:jhn,dashboard:qhn,dataTable:Zhn,dateRange:gyn,errors:byn,freeTokens:Dyn,logs:svn,models:obn,nav:dbn,onboarding:fbn,opsTable:vbn,optionLabels:Pxn,pagination:Nxn,referrals:g$n,settings:R$n,tasks:q$n,support:swn,usage:K0n}},ja:{translation:{adminAccess:Wkn,adminBilling:i1n,adminCampaigns:D1n,adminContent:qSn,adminDashboard:_An,adminGate:MAn,adminGrowth:o_n,adminModels:fjn,adminRateLimits:Ojn,adminStaff:g2n,adminUpstream:_2n,adminUsage:BDn,adminUserDetail:uMn,adminUsers:UEn,adminWebhooks:oIn,apiKeys:JIn,auditLogs:pOn,auth:DOn,billing:_3n,charts:M3n,chat:eLn,common:RLn,dashboard:BLn,dataTable:YLn,dateRange:m4n,errors:h4n,freeTokens:_4n,logs:n5n,models:tUn,nav:iUn,onboarding:uUn,opsTable:gUn,optionLabels:ABn,pagination:PBn,referrals:m6n,settings:S6n,tasks:B6n,support:n8n,usage:qFn}},ko:{translation:{adminAccess:Vzn,adminBilling:oqn,adminCampaigns:_qn,adminContent:BHn,adminDashboard:TVn,adminGate:jVn,adminGrowth:tWn,adminModels:uYn,adminRateLimits:MYn,adminStaff:mQn,adminUpstream:TQn,adminUsage:OZn,adminUserDetail
857:lJn,adminUsers:Iea,adminWebhooks:tta,apiKeys:Qta,auditLogs:dna,auth:_na,billing:Taa,charts:jaa,chat:Xaa,common:Soa,dashboard:Ooa,dataTable:Koa,dateRange:csa,errors:psa,freeTokens:Tsa,logs:Jsa,models:Zra,nav:oia,onboarding:lia,opsTable:mia,optionLabels:kla,pagination:Ala,referrals:cca,settings:wca,tasks:Oca,support:Jca,usage:Bua}},"pt-BR":{translation:{adminAccess:zma,adminBilling:tfa,adminCampaigns:Tfa,adminContent:Oga,adminDashboard:Cha,adminGate:Rha,adminGrowth:Zba,adminModels:l$a,adminRateLimits:j$a,adminStaff:cwa,adminUpstream:Cwa,adminUsage:Mka,adminUserDetail:sCa,adminUsers:D1a,adminWebhooks:Z1a,apiKeys:GSa,auditLogs:iAa,auth:TAa,billing:CTa,charts:RTa,chat:WTa,common:wRa,dashboard:MRa,dataTable:qRa,dateRange:rPa,errors:dPa,freeTokens:CPa,logs:QPa,models:Y_a,nav:tja,onboarding:sja,opsTable:cja,optionLabels:x2a,pagination:k2a,referrals:rNa,settings:bNa,tasks:MNa,support:QNa,usage:OMa}},ru:{translation:{adminAccess:UEa,adminBilling:ZIa,adminCampaigns:COa,adminContent:M3a,adminDashboard:$La,adminGate:SLa,adminGrowth:YUa,adminModels:s6a,adminRateLimits:R6a,adminStaff:r8a,adminUpstream:$8a,adminUsage:jza,adminUserDetail:n7a,adminUsers:_qa,adminWebhooks:Yqa,apiKeys:HHa,auditLogs:oVa,auth:CVa,billing:$9a,charts:S9a,chat:V9a,common:bKa,dashboard:jKa,dataTable:BKa,dateRange:aGa,errors:iGa,freeTokens:$Ga,logs:GGa,models:KWa,nav:ZWa,onboarding:nYa,opsTable:rYa,optionLabels:yQa,pagination:xQa,referrals:aXa,settings:hXa,tasks:jXa,support:GXa,usage:MJa}},tr:{translation:{adminAccess:Ieo,adminBilling:Yto,adminCampaigns:$no,adminContent:jao,adminDashboard:voo,adminGate:woo,adminGrowth:Kio,adminModels:nco,adminRateLimits:Sco,adminStaff:ado,adminUpstream:vdo,adminUsage:Rmo,adminUserDetail:Jmo,adminUsers:Tfo,adminWebhooks:Kfo,apiKeys:Fgo,auditLogs:tho,auth:$ho,billing:vyo,charts:wyo,chat:zyo,common:hvo,dashboard:Rvo,dataTable:Ovo,dateRange:ebo,errors:obo,freeTokens:vbo,logs:Hbo,models:qxo,nav:Yxo,onboarding:Jxo,opsTable:a$o,optionLabels:fwo,pagination:ywo,referrals:e0o,settings:p0o,tasks:R0o,support:H0o,usage:jCo}},"zh-Hans":{translation:{adminAccess:D1o,adminBilling:KSo,adminCampaigns:vAo,adminContent:RTo,adminDashboard:gRo,adminGate:bRo,adminGrowth:qjo,adminModels:J2o,adminRateLimits:wNo,adminStaff:eDo,adminUpstream:gDo,adminUsage:SEo,adminUserDetail:QEo,adminUsers:COo,adminWebhooks:qOo,apiKeys:L3o,auditLogs:Z3o,auth:vLo,billing:g4o,charts:b4o,chat:U4o,common:p5o,dashboard:S5o,dataTable:M5o,dateRange:X5o,errors:tUo,freeTokens:gUo,logs:FUo,models:BBo,nav:KBo,onboarding:QBo,opsTable:e6o,optionLabels:u8o,pagination:f8o,referrals:X8o,settings:dFo,tasks:SFo,support:FFo,usage:R7o}},"zh-Hant":{translation:{adminAccess:_qo,adminBilling:qHo,adminCampaigns:gVo,adminContent:S9o,adminDashboard:mKo,adminGate:hKo,adminGrowth:BYo,adminModels:QQo,adminRateLimits:bXo,adminStaff:XXo,adminUpstream:mZo,adminUsage:wes,adminUserDetail:Ges,adminUsers:$ns,adminWebhooks:Bns,apiKeys:Eas,auditLogs:Yas,auth:gos,billing:mss,charts:hss,chat:Iss,common:drs,dashboard:wrs,dataTable:jrs,dateRange:Wrs,errors:Zrs,freeTokens:mis,logs:Lis,models:Ols,nav:qls,onboarding:Gls,opsTable:Xls,optionLabels:lds,pagination:uds,referrals:Wds,settings:ius,tasks:wus,support:Lus,usage:Sps}}};function fj(){if(qn.isInitialized)return qn;const e=Ew();return c9(e),qn.use(Cye).init({resources:F3,lng:e,fallbackLng:Xi,supportedLngs:Object.keys(F3).filter(Yd),interpolation:{escapeValue:!1},returnEmptyString:!1}),qn}async function kR(e){qn.isInitialized||fj(),await qn.changeLanguage(e),c9(e)}fj();function Aps(){const e=Re();h.useEffect(()=>{const t=()=>{document.visibilityState==="visible"&&e.invalidateQueries({queryKey:Ht.me})};return document.addEventListener("visibilitychange",t),()=>document.removeEventListener("visibilitychange",t)},[e])}const H9=h.createContext(null),Tps=H9.Provider;function YBs(){const e=h.useContext(H9);return e||{sidebarAsDrawer:!1,toggleSidebar:()=>{},openDrawer:()=>{}}}function Te(){const{i18n:e}=W(),t=e.language;return h.useMemo(()=>({locale:t,number:n=>or(n,t),currency:(n,a="USD",s=2)=>lr(n,t,a,s),dateTime:n=>HV(n,t),relativeTime:n=>uhe(n,t),monthShort:n=>new Intl.DateTimeFormat(t,{month:"short"}).format(n),monthDay:n=>new Intl.DateTimeFormat(t,{month:"short",day:"numeric"}).format(n)}),[t])}function Rps(e){const t=Number(e);if(!Number.isFinite(t))return"danger";const n=Math.round(t*100)/100;return n<1?"danger":n<5?"warning":"normal"}const CR="[email protected]";function Pps({wallet:e,user:t,currentLocale:n,availableLocales:a=i_(Z$),onChangeLocale:s,signingOut:r,signOutError:i,onSignOut:c,onNavigate:d}){const{t:m}=W(),[f,p]=h.useState("main"),y=e?Rps(e.availableCredit):"normal";function v($){$||p("main")}return o.jsx(qie,{initial:t.initial,displayName:t.displayName,email:t.email,avatarUrl:t.avatarUrl,menuSide:"top",className:"z-10",indicator:o.jsx(_ps,{tier:y}),onOpenChange:v,"aria-label":m("common.account"),children:f==="main"?o.jsx(jps,{wallet:e,tier:y,currentLocale:n,signingOut:r,signOutError:i,onSignOut:c,onOpenLanguage:()=>p("language"),onNavigate:d}):o.jsx(Dps,{currentLocale:n,availableLocales:a,onChangeLocale:s,onBack:()=>p("main")})})}function _ps({tier:e}
857){return e==="normal"?null:o.jsx("span",{"aria-hidden":!0,className:X("pointer-events-none absolute -end-0.5 -top-0.5 size-2.5 rounded-full ring-2 ring-[color:var(--sidebar)]",e==="danger"?"bg-[color:var(--destructive)]":"bg-amber-500")})}const gj="text-[color:var(--muted-foreground)]";function jps({wallet:e,tier:t,currentLocale:n,signingOut:a,signOutError:s,onSignOut:r,onOpenLanguage:i,onNavigate:c}){const{t:d}=W(),m=ls(),f=Te(),y=m.state?.backgroundLocation??{pathname:m.pathname,search:m.search,hash:m.hash,state:null,key:m.key},v=e?f.currency(Number(e.availableCredit)):null,$=t==="danger"?"font-semibold text-[color:var(--destructive)]":t==="warning"?"text-[color:var(--warning-foreground)]":"text-[color:var(--foreground)]";return o.jsxs(o.Fragment,{children:[e?o.jsx(tc,{asChild:!0,className:"tabular-nums",children:o.jsxs(Ta,{to:Be.billing,children:[o.jsx(N9,{className:"size-4 text-[color:var(--muted-foreground)]","aria-hidden":!0}),o.jsx("span",{className:"flex-1",children:d("nav.console.balance")}),o.jsx("span",{"data-clarity-mask":"true",className:X("min-w-0 max-w-[7rem] truncate text-right",$),children:v}),o.jsx(gR,{className:"size-4 text-[color:var(--muted-foreground)]","aria-hidden":!0})]})}):null,e?o.jsx(wg,{}):null,o.jsx(tc,{asChild:!0,children:o.jsxs(Ta,{to:Be.settings,state:{backgroundLocation:y},onClick:c,children:[o.jsx(Hbe,{className:"size-4 text-[color:var(--muted-foreground)]","aria-hidden":!0}),o.jsx("span",{className:"flex-1",children:d("nav.console.settings")})]})}),o.jsxs(tc,{onClick:x=>{x.stopPropagation(),i()},children:[o.jsx(Gve,{className:"size-4 text-[color:var(--muted-foreground)]","aria-hidden":!0}),o.jsx("span",{className:"flex-1",children:d("common.language")}),o.jsx("span",{className:"min-w-0 max-w-[6.5rem] truncate text-right text-xs text-[color:var(--muted-foreground)]",children:Uh[n]}),o.jsx(gR,{className:"size-4 text-[color:var(--muted-foreground)]","aria-hidden":!0})]}),o.jsx(wg,{}),moe.map(x=>o.jsx(Nps,{href:x.href,label:d(`nav.public.${x.href.slice(1)}`)},x.href)),o.jsx(wg,{}),o.jsx(tc,{asChild:!0,className:gj,children:o.jsxs("a",{href:`mailto:${CR}`,children:[o.jsx(lj,{className:"size-4","aria-hidden":!0}),o.jsx("span",{className:"flex-1",children:d("nav.console.helpSupport")}),o.jsx(f9,{className:"size-3.5","aria-hidden":!0})]})}),o.jsx(wg,{}),o.jsxs(tc,{disabled:a,onClick:r,children:[o.jsx(lbe,{className:"size-4 text-[color:var(--muted-foreground)]","aria-hidden":!0}),o.jsx("span",{children:d(a?"common.signingOut":"common.signOut")})]}),s?o.jsx("p",{className:"px-2 pb-1 text-xs text-[color:var(--destructive)]",children:s}):null]})}function Nps({href:e,label:t}){return o.jsx(tc,{asChild:!0,className:gj,children:o.jsxs("a",{href:e,children:[o.jsx("span",{className:"size-1.5 rounded-full bg-current opacity-40","aria-hidden":!0}),o.jsx("span",{className:"flex-1 truncate",children:t}),o.jsx(f9,{className:"size-3.5","aria-hidden":!0})]})})}function Dps({currentLocale:e,availableLocales:t,onChangeLocale:n,onBack:a}){const{t:s}=W();return o.jsxs(o.Fragment,{children:[o.jsxs(tc,{className:gj,onClick:r=>{r.stopPropagation(),a()},children:[o.jsx(v9,{className:"size-4","aria-hidden":!0}),o.jsx("span",{children:s("common.back")})]}),o.jsx(wg,{}),o.jsx("div",{className:"max-h-[min(18rem,calc(100dvh-9rem))] overflow-y-auto pr-1",children:t.map(r=>{const i=r===e;return o.jsxs(jz,{checked:i,onClick:()=>n(r),children:[o.jsx("span",{className:"flex-1 truncate",children:Uh[r]}),o.jsx("span",{className:"text-xs text-[color:var(--muted-foreground)]",children:r})]},r)})})]})}function Mps(e=20){return Ue({queryKey:Ht.notifications,queryFn:()=>Ye.request(`/console/notifications?limit=${e}`),retry:1})}function Eps(e={}){return Ue({queryKey:Ht.notificationsUnreadCount,queryFn:()=>Ye.request("/console/notifications/unread-count").then(t=>t.count),retry:1,refetchInterval:e.refetchInterval,refetchOnWindowFocus:!0})}function Ips(){const e=Re();return ke({mutationFn:t=>Ye.request("/console/notifications/read",{method:"POST",body:t&&t.length>0?{publicIds:t}:{},idempotent:!0}),onSuccess:()=>{e.invalidateQueries({queryKey:["console","notifications"]})}})}const Ops=6e4;function Lps(e){const t=e?.deeplink;return typeof t=="string"&&t.startsWith("/platform/")?t:null}function Ups(){const{t:e}=W(),t=Te(),n=No(),[a,s]=h.useState(!1),r=Mps(),i=Eps({refetchInterval:Ops}).data??0,c=O9().data?.unreadCount??0,d=Ips(),m=r.data?.items??[],f=i+c,p=e("nav.console.announcements");function y(v){v.readAt||d.mutate([v.publicId]);const $=Lps(v.data);s(!1),$&&n(mj($))}return o.jsxs(Bp,{open:a,onOpenChange:s,children:[o.jsx(Fp,{asChild:!0,children:o.jsxs(Aa,{variant:"ghost","aria-label":p,title:p,className:"relative shrink-0 rounded-md hover:bg-[color:var(--accent)] hover:text-[color:var(--foreground)]",children:[o.jsx(rj,{className:"size-4"}),f>0?o.jsx("span",{className:"absolute right-1 top-1 size-1.5 rounded-full bg-[color:var(--destructive)] ring-2 ring-[color:var(--sidebar)]"}):null]})}),o.jsxs(yu,{side:"top",align:"start",sideOffset:8,className:"w-80 p-0",children:[o.jsxs("div",{className:"flex items-center justify-between gap-2 border-b border-[color:var(--border)] px-3 py-2.5",children:[o.jsx("p",{className:"text-sm font-medium text-[color:var(--foreground)]",children:e("nav.notifications.title")}),i>0?o.jsxs("button",{type:"button",onClick:()=>d.mutate(void 0),disabled:d.isPending,className:"inline-flex items-center gap-1 rounded-md px-1.5 py-0.5 text-xs text-[color:var(--muted-foreground)] transition-colors hover:bg-[color:var(--accent)] hover:text-[color:var(--foreground)] disabled:opacity-50",children:[o.jsx(uve,{className:"size-3.5"}),e("nav.notifications.markAllRead")]}):null]}),o.jsx("div",{className:"max-h-80 overflow-y-auto",children:r.isPending?o.jsx("p",{className:"px-3 py-6 text-center text-xs text-[color:var(--muted-foreground)]",children:e("nav.notifications.loading")}):m.length===0?o.jsxs("div",{className:"grid gap-1 px-3 py-8 text-center",children:[o.jsx("p",{className:"text-sm text-[color:var(--foreground)]",children:e("nav.notifications.emptyTitle")}),o.jsx("p",{className:"text-xs text-[color:var(--muted-foreground)]",children:e("nav.notifications.emptyBody")})]}):o.jsx("ul",{className:"grid",children:m.map(v=>{const $=!v.readAt;return o.jsx("li",{children:o.jsxs("button",{type:"button",onClick:()=>y(v),className:"flex w-full items-start gap-2.5 px-3 py-2.5 text-left transition-colors hover:bg-[color:var(--accent)]",children:[o.jsx("span",{"aria-hidden":!0,
857className:$?"mt-1.5 size-1.5 shrink-0 rounded-full bg-[color:var(--destructive)]":"mt-1.5 size-1.5 shrink-0 rounded-full bg-transparent"}),o.jsxs("span",{className:"grid min-w-0 flex-1 gap-0.5",children:[o.jsx("span",{className:$?"truncate text-13 font-medium text-[color:var(--foreground)]":"truncate text-13 text-[color:var(--foreground)]",children:v.title}),v.body?o.jsx("span",{className:"line-clamp-2 text-xs text-[color:var(--muted-foreground)]",children:v.body}):null,o.jsx("span",{className:"text-2xs tabular-nums text-[color:var(--muted-foreground)]",children:t.relativeTime(v.createdAt)})]})]})},v.publicId)})})}),c>0?o.jsxs("button",{type:"button",onClick:()=>{s(!1),n(Be.support)},className:"flex w-full items-center justify-between gap-2 border-t border-[color:var(--border)] px-3 py-2.5 text-left text-xs text-[color:var(--foreground)] transition-colors hover:bg-[color:var(--accent)]",children:[o.jsx("span",{children:e("nav.console.announcementsTicketUnread",{count:c})}),o.jsx("span",{className:"inline-flex h-5 min-w-5 shrink-0 items-center justify-center rounded-full bg-[color:var(--destructive)] px-1.5 text-2xs font-semibold leading-none text-[color:var(--destructive-foreground)] tabular-nums",children:c>99?"99+":c})]}):null]})]})}const Bps=[{labelKey:"nav.console.usage",href:Be.usage,icon:cve},{labelKey:"nav.console.models",href:Be.models,icon:Jve},{labelKey:"nav.console.logs",href:Be.logs,icon:Ube},{labelKey:"nav.console.apiKeys",href:Be.apiKeys,icon:Uw},{labelKey:"nav.console.billing",href:Be.billing,icon:Lw},{labelKey:"nav.console.referrals",href:Be.referrals,icon:uy},{labelKey:"nav.console.tasks",href:Be.tasks,icon:dxe},{labelKey:"nav.public.docs",href:l_,icon:rve,external:!0},{labelKey:"nav.console.support",href:Be.support,icon:ij}],Fps=Date.parse("2026-10-11T00:00:00Z"),zps=264,qps=60,Hps=820,Vps=768;function Kps({title:e,description:t,detail:n}){return o.jsx("main",{className:"min-h-0 flex-1 overflow-y-auto bg-[color:var(--console-workspace)] p-4 md:p-8",children:o.jsx("section",{className:"mx-auto grid min-h-[calc(100dvh-4rem)] w-full max-w-2xl place-items-center",children:o.jsxs(nj,{className:"w-full rounded-2xl border-[color:var(--console-hairline)] p-6 shadow-[var(--shadow-card)] md:p-8",children:[o.jsx("div",{className:"mb-5 flex size-11 items-center justify-center rounded-full border border-[color:var(--warning-border)] bg-[color:var(--warning-surface)] text-[color:var(--warning)]",children:o.jsx(_9,{className:"size-5","aria-hidden":!0})}),o.jsx("p",{className:"mb-2 text-xs font-semibold uppercase tracking-[0.08em] text-[color:var(--muted-foreground)]",children:"OneHop"}),o.jsx("h1",{className:"text-2xl font-semibold tracking-[-0.01em] text-[color:var(--foreground)]",children:e}),o.jsx("p",{className:"mt-3 max-w-prose text-sm leading-6 text-[color:var(--muted-foreground)]",children:t}),o.jsx(Hm,{className:"mt-6 text-sm text-[color:var(--muted-foreground)]",children:n}),o.jsx("div",{className:"mt-6 flex flex-col gap-3 sm:flex-row",children:o.jsxs("a",{href:`mailto:${CR}`,className:X(ur({size:"md"}),"inline-flex items-center gap-2"),children:[o.jsx(lj,{className:"size-4","aria-hidden":!0}),CR]})})]})})})}function z3({wallet:e,user:t,currentLocale:n,availableLocales:a,onChangeLocale:s,adminItems:r,signingOut:i,signOutError:c,onSignOut:d,collapsed:m,showCollapseButton:f,onCollapse:p,onNavigate:y}){const{t:v}=W(),$=m?v("nav.aria.expand","Expand sidebar"):v("nav.aria.collapse","Collapse sidebar"),x=O9().data?.unreadCount??0,w=h.useMemo(()=>Bps.map(S=>S.href===Be.support?{...S,badge:x}:S.href===Be.tasks&&Date.now()<Fps?{...S,tag:v("nav.console.tagNew")}:S),[x,v]);return o.jsxs("div",{role:"banner","data-sidebar-collapsed":m?"true":"false",className:"flex h-full min-h-0 flex-col bg-[color:var(--sidebar)] text-[color:var(--sidebar-foreground)]",children:[o.jsx("div",{"data-testid":"console-shell-sidebar-header",className:X("flex h-14 shrink-0 items-center",m?"justify-center px-0":"gap-2 px-4"),children:m?o.jsxs("span",{className:"group/logo relative flex size-9 items-center justify-center",children:[o.jsx("a",{href:"/","aria-label":"OneHop",className:"inline-flex size-9 items-center justify-center rounded-md transition-opacity group-hover/logo:opacity-0 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[color:var(--ring)]",children:o.jsx(Lz,{size:30})}),f?o.jsx(Aa,{variant:"ghost",onClick:p,"aria-label":$,className:"absolute inset-0 rounded-md bg-[color:var(--sidebar)] opacity-0 transition-opacity hover:bg-[color:var(--accent)] hover:text-[color:var(--foreground)] group-hover/logo:opacity-100 focus-visible:opacity-100",children:o.jsx(_3,{className:"size-4 rotate-180"})}):null]}):o.jsxs(o.Fragment,{children:[o.jsx("a",{href:"/","aria-label":"OneHop",className:"flex min-w-0 flex-1 items-center rounded-md focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[color:var(--ring)]",children:o.jsx(Cce,{className:"h-9 w-auto"})}),f?o.jsx(Aa,{variant:"ghost",onClick:p,"aria-label":$,className:"shrink-0 rounded-md hover:bg-[color:var(--accent)] hover:text-[color:var(--foreground)]",children:o.jsx(_3,{className:"size-4"})}):null]})}),o.jsxs(Oce,{role:"navigation","aria-label":v("nav.aria.console"),className:"min-h-0 flex-1 pb-6",children:[o.jsx("div",{className:X("pt-1",m?"px-0":"px-2"),children:m?o.jsx(Oc,{delayDuration:250,skipDelayDuration:80,children:o.jsx(H3,{collapsed:!0,onNavigate:y})}):o.jsx(H3,{collapsed:!1,onNavigate:y})}
857),o.jsx("div",{"aria-hidden":!0,className:X("my-2 border-t border-[color:var(--console-hairline)]",m?"mx-3":"mx-2")}),o.jsx(MO,{children:o.jsx(q3,{items:w,collapsed:m,onNavigate:y})}),r.length>0?o.jsx(MO,{children:o.jsxs("nav",{"aria-label":v("nav.adminGroups.staff"),className:"mt-4 border-t border-[color:var(--console-hairline)] pt-4",children:[m?null:o.jsx("p",{"aria-hidden":!0,className:"px-2 pb-1 text-xs font-semibold uppercase tracking-[0.08em] text-[color:var(--muted-foreground)]",children:v("nav.adminGroups.staff")}),o.jsx(q3,{items:r,collapsed:m,onNavigate:y})]})}):null]}),o.jsxs("div",{"data-testid":"console-shell-sidebar-footer",className:X("flex shrink-0 items-center gap-2 border-t border-[color:var(--console-hairline)] px-3 py-3",m?"justify-center":"justify-between"),children:[o.jsx(Pps,{wallet:e,user:t,currentLocale:n,availableLocales:a,onChangeLocale:s,signingOut:i,signOutError:c,onSignOut:d}),m?null:o.jsxs("div",{className:"flex items-center gap-1",children:[o.jsx("a",{href:Mg.x,target:"_blank",rel:"noopener noreferrer","aria-label":"X",className:"flex h-8 w-8 items-center justify-center rounded-md text-[color:var(--muted-foreground)] transition-colors hover:bg-[color:var(--accent)] hover:text-[color:var(--foreground)]",children:o.jsx(Xb,{brand:"x",size:15})}),o.jsx("a",{href:Mg.telegram,target:"_blank",rel:"noopener noreferrer","aria-label":"Telegram",className:"flex h-8 w-8 items-center justify-center rounded-md text-[color:var(--muted-foreground)] transition-colors hover:bg-[color:var(--accent)] hover:text-[color:var(--foreground)]",children:o.jsx(Xb,{brand:"telegram",size:15})}),o.jsx("a",{href:Mg.discord,target:"_blank",rel:"noopener noreferrer","aria-label":"Discord",className:"flex h-8 w-8 items-center justify-center rounded-md text-[color:var(--muted-foreground)] transition-colors hover:bg-[color:var(--accent)] hover:text-[color:var(--foreground)]",children:o.jsx(Xb,{brand:"discord",size:15})}),o.jsx(Ups,{})]})]})]})}function q3({items:e,collapsed:t,onNavigate:n}){const{t:a}=W(),s=o.jsx(Lce,{className:X(t&&"px-0"),children:e.map(r=>{const i=a(r.labelKey);return o.jsx(Uce,{children:o.jsx(Gps,{to:r.href,icon:r.icon,label:i,collapsed:t,badge:r.badge,tag:r.tag,external:r.external,onNavigate:n})},r.href)})});return t?o.jsx(Oc,{delayDuration:250,skipDelayDuration:80,children:s}):s}function Gps({to:e,icon:t,label:n,collapsed:a,badge:s,tag:r,external:i,onNavigate:c}){const d=(s??0)>0,m={href:e,target:"_blank",rel:"noreferrer"};if(a){const p=v=>X("group/sidebar-menu-button grid h-9 w-full grid-cols-[2.75rem] items-center justify-center overflow-hidden rounded-md text-sm transition-colors motion-reduce:transition-none focus-visible:border-ring focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50",v?"bg-foreground
857/[0.14] font-medium text-foreground":"text-foreground hover:bg-foreground/6"),y=o.jsxs(o.Fragment,{children:[o.jsx(EO,{className:"w-full",children:o.jsxs("span",{className:"relative inline-flex",children:[o.jsx(t,{className:"size-4"}),d?o.jsx("span",{className:"absolute -right-1 -top-1 size-1.5 rounded-full bg-[color:var(--destructive)] ring-2 ring-[color:var(--sidebar)]"}):null]})}),o.jsx("span",{className:"sr-only",children:n})]});return o.jsxs(Ls,{children:[o.jsx(Us,{asChild:!0,children:i?o.jsx("a",{...m,"aria-label":n,className:p(!1),children:y}):o.jsx(Yg,{to:e,onClick:c,"aria-label":d?`${n} (${s})`:n,className:({isActive:v})=>p(v),children:y})}),o.jsx(cs,{side:"right",sideOffset:10,children:n})]})}const f=p=>o.jsx(Fce,{asChild:!0,active:p,children:o.jsxs("span",{className:"inline-flex w-full items-center",children:[o.jsx(EO,{children:o.jsx(t,{className:"size-4"})}),o.jsx("span",{className:"truncate",children:n}),d||r?o.jsxs("span",{className:"ml-auto flex shrink-0 items-center gap-1.5 pr-1",children:[r?o.jsx("span",{className:"inline-flex items-center rounded px-1 py-0.5 text-2xs font-semibold leading-none tracking-wide text-emerald-700 ring-1 ring-inset ring-emerald-500/30 bg-emerald-50 dark:bg-emerald-950/40 dark:text-emerald-400 dark:ring-emerald-500/20",children:r}):null,d?o.jsx("span",{className:"inline-flex h-5 min-w-5 items-center justify-center rounded-full bg-[color:var(--destructive)] px-1.5 text-2xs font-semibold leading-none text-[color:var(--destructive-foreground)]",children:s>99?"99+":s}):null]}):null]})});return i?o.jsx("a",{...m,children:f(!1)}):o.jsx(Yg,{to:e,onClick:c,children:({isActive:p})=>f(p)})}function H3({collapsed:e,onNavigate:t}){const{t:n}=W(),{pathname:a}=ls(),s=n("nav.console.chat"),r=a===Be.chat,i="bg-[linear-gradient(180deg,var(--nav-chat-from),var(--nav-chat-to))]",c=r?"ring-1 ring-inset ring-white/25":"";return e?o.jsxs(Ls,{children:[o.jsx(Us,{asChild:!0,children:o.jsxs(Yg,{to:Be.chat,onClick:t,"aria-label":s,className:X("group/chat-nav relative mx-auto grid size-9 place-items-center overflow-hidden rounded-md text-white shadow-[0_2px_8px_var(--nav-chat-glow),inset_0_1px_0_rgba(255,255,255,0.12)] transition-transform duration-[var(--duration-fast)] hover:-translate-y-px focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/70 motion-reduce:transition-none",i,c),children:[o.jsx("span",{className:"oh-nav-sheen","aria-hidden":!0}),o.jsx(bR,{className:"relative size-4"})]})}),o.jsx(cs,{side:"right",sideOffset:10,children:s})]}):o.jsxs(Yg,{to:Be.chat,onClick:t,className:X("group/chat-nav relative flex h-10 w-full items-center gap-2.5 overflow-hidden rounded-lg px-3 text-sm font-medium text-white shadow-[0_2px_8px_var(--nav-chat-glow),inset_0_1px_0_rgba(255,255,255,0.12)] transition-[transform,box-shadow] duration-[var(--duration-fast)] hover:-translate-y-px hover:shadow-[0_5px_14px_var(--nav-chat-glow),inset_0_1px_0_rgba(255,255,255,0.18)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/70 motion-reduce:transition-none",i,c),children:[o.jsx("span",{className:"oh-nav-sheen","aria-hidden":!0}),o.jsx(bR,{className:"relative size-4 shrink-0"}),o.jsx("span",{className:"relative truncate",children:s}),o.jsx(p9,{className:"relative ml-auto size-3.5 opacity-70 transition-transform duration-[var(--duration-fast)] group-hover/chat-nav:translate-x-0.5 motion-reduce:transition-none"})]})}const Wps=h.memo(function({navigationToggle:t}){return o.jsx(zce,{navigationToggle:t,children:o.jsx(yF,{})})});function Yps(){const{t:e}=W(),[t,n]=h.useState(Ew),[a,s]=h.useState(!1),[r,i]=h.useState(null),[c,d]=h.useState(()=>typeof window>"u"?1280:window.innerWidth),[m,f]=h.useState(!1),[p,y]=h.useState(null),v=No(),$=Re(),x=qa();Aps();const{visibleBanners:w,dismissBanner:S,activeModal:k,dismissModal:T}=jxe(t);h.useEffect(()=>(document.body.classList.add("onehop-console-shell"),()=>document.body.classList.remove("onehop-console-shell")),[]),h.useEffect(()=>{const we=()=>void rF(()=>import("./mermaid-GHXKKRXX-CGcEX0fW.js").then(ye=>ye.C),__vite__mapDeps([0,1])),me=window.requestIdleCallback;if(typeof me=="function")me(we);else{const ye=window.setTimeout(we,1200);return()=>window.clearTimeout(ye)}},[]),h.useEffect(()=>{x.data&&Hxe(t)},[x.data?.user.email,t]),h.useEffect(()=>{if(typeof window>"u")return;const we=()=>d(window.innerWidth);return window.addEventListener("resize",we),()=>window.removeEventListener("resize",we)},[]);const R=c<Vps,_=c<Hps,P=R,j=!P&&(p==="collapsed"||p===null&&_),N=e("nav.aria.openNavigation",{defaultValue:"Open navigation"}),I=e("nav.aria.console",{defaultValue:"Console navigation"}),z=h.useCallback(()=>{R?f(we=>!we):y(j?"expanded":"collapsed")},[j,R]),E=h.useCallback(()=>f(!0),[]),L=h.useCallback(()=>f(!1),[]),O=h.useMemo(()=>P?o.jsx("button",{type:"button",onClick:E,"aria-label":N,className:"inline-flex size-9 items-center justify-center rounded-md text-[color:var(--muted-foreground)] transition-colors hover:bg-[color:var(--accent)] hover:text-[color:var(--foreground)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[color:var(--ring)]",children:o.jsx($be,{className:"size-4"})}):null,[P,E,N]);h.useEffect(()=>{!P&&m&&f(!1)},[m,P]);const V=h.useMemo(()=>({sidebarAsDrawer:P,toggleSidebar:z,openDrawer:E}),[P,z,E]),ne=x.data?.user.email?.slice(0,1).toUpperCase()??"O",q=x.data?.user.email??e("common.account"),M=x.error instanceof rn?x.error:null,F=I9(x.data?.admin),H=M?.status===ko.forbidden,ee=ls(),B=ee.pathname===Be.admin||ee.pathname.startsWith(`${Be.admin}/`),G=B?Nye(t):t,Q=B?i9:void 0,de=ee.pathname===Be.chat;h.useEffect(()=>{kR(G)},[G]);function Y(we){n(we),l9(we),kR(we)}async function pe(){const we=zx(`${window.location.pathname}${window.location.search}`);s(!0),i(null);try{const me=await Tg.signOut();if(me.error)throw new Error(me.error.message||e("auth.errors.signOutFailed"));$.removeQueries({queryKey:Ht.me}),v(`${Be.login}?redirect=${encodeURIComponent(we)}`,{replace:!0})}catch(me){i(me instanceof Error?me.message:e("auth.errors.signOutFailed"))}finally{s(!1)}}if(M?.status===ko.unauthorized){const we=zx(`${window.location.pathname}${window.location.search}`);return o.jsx(Gd,{to:`${Be.login}?redirect=${encodeURIComponent(we)}`,replace:!0})}if(x.isPending)return o.jsx("div",{className:"grid min-h-screen place-items-center bg-[color:var(--console-shell)] text-sm text-[color:var(--muted-foreground)]",children:o.jsx("div",{role:"status",children:e("common.loading")})});const se={wallet:x.data?.wallet,user:{displayName:x.data?.user.displayName??null,email:q,avatarUrl:x.data?.user.avatarUrl??null,initial:ne},currentLocale:G,availableLocales:Q,onChangeLocale:Y,adminItems:F,signingOut:a,signOutError:r,onSignOut:()=>void pe(),collapsed:j,showCollapseButton:!0,onCollapse:z};return H?o.jsx("div",{className:"flex h-dvh flex-col overflow-hidden bg-[
857color:var(--console-shell)] text-[color:var(--foreground)]",children:o.jsx(Kps,{title:e("errors.accountRestricted.title"),description:e("errors.accountRestricted.description"),detail:e("errors.accountRestricted.detail")})}):o.jsxs(Tps,{value:V,children:[o.jsxs("div",{className:"flex h-dvh flex-col overflow-hidden bg-[color:var(--console-shell)] text-[color:var(--foreground)]",children:[w.length>0&&o.jsx(Mhe,{banners:w,onDismiss:S}),k&&o.jsx(fhe,{open:!0,onOpenChange:we=>{we||T(k.publicId,k.revision)},onNavigate:we=>we===mp||we.startsWith(`${mp}/`)?(v(mj(we)),!0):!1,imageUrl:k.imageUrl,severity:k.severity,copy:k.copy}),o.jsxs("div",{className:"flex min-h-0 min-w-0 flex-1",children:[o.jsx("div",{"data-testid":"console-shell-sidebar","data-collapsed":j?"true":"false","aria-hidden":P,inert:P?!0:void 0,className:X("h-full shrink-0 overflow-hidden transition-[width] duration-200 ease-[cubic-bezier(0.2,0.8,0.2,1)] motion-reduce:transition-none",P&&"pointer-events-none opacity-0"),style:{width:P?0:j?qps:zps,willChange:"width"},children:o.jsx(z3,{...se})}),o.jsx("main",{"data-testid":"console-shell-content",className:X("relative flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden bg-[color:var(--console-workspace)]",!P&&"rounded-tl-2xl",!P&&"mt-2","shadow-[var(--shadow-card)]",P&&"shadow-none",de&&"p-0"),children:M&&(M.status===ko.forbidden||M.status===ko.conflict)?o.jsx(Qt,{title:M.status===ko.forbidden?e("errors.accountUnavailable"):e("errors.accountInitializing"),description:M.message}):o.jsx(Wps,{navigationToggle:O})})]}),P?o.jsx(Vn,{open:m,onOpenChange:f,children:o.jsxs(Nn,{side:"left",showClose:!1,className:"!w-[min(280px,calc(100vw-2rem))] !max-w-[min(280px,calc(100vw-2rem))] flex-col overflow-hidden !p-0",onOpenAutoFocus:we=>we.preventDefault(),children:[o.jsx(Rn,{className:"sr-only",children:I}),o.jsx(z3,{...se,collapsed:!1,showCollapseButton:!0,onCollapse:L,onNavigate:L})]})}):null]}),null]})}const V3="https://challenges.cloudflare.com/turnstile/v0/api.js?render=explicit";let mb=null;function Qps(){return window.turnstile?Promise.resolve():mb||(mb=new Promise((e,t)=>{const n=document.querySelector(`script[src="${V3}"]`);if(n){n.addEventListener("load",()=>e(),{once:!0}),n.addEventListener("error",()=>t(new Error("Turnstile failed to load")),{once:!0});return}const a=document.createElement("script");a.src=V3,a.async=!0,a.defer=!0,a.addEventListener("load",()=>e(),{once:!0}),a.addEventListener("error",()=>t(new Error("Turnstile failed to load")),{once:!0}),document.head.appendChild(a)}),mb)}function Xps({action:e,resetKey:t=0,siteKey:n,onTokenChange:a,onUnavailable:s}){const r=h.useRef(null),i=h.useRef(null),[c,d]=h.useState(!0);return h.useEffect(()=>{let m=!1;return d(!0),a(""),Qps().then(()=>{m||!r.current||!window.turnstile||(i.current&&window.turnstile.remove&&(window.turnstile.remove(i.current),i.current=null),r.current.innerHTML="",i.current=window.turnstile.render(r.current,{sitekey:n,action:e,theme:"light",size:"flexible",callback:f=>a(f),"expired-callback":()=>a(""),"error-callback":()=>{a(""),s?.("Human verification is temporarily unavailable")}}),d(!1))}).catch(f=>{m||(d(!1),a(""),s?.(f instanceof Error?f.message:"Turnstile failed to load"))}),()=>{m=!0,i.current&&window.turnstile?.remove&&(window.turnstile.remove(i.current),i.current=null)}},[e,a,s,t,n]),o.jsxs("div",{className:"min-h-[65px]",children:[o.jsx("div",{ref:r}),c?o.jsx("div",{className:"h-[65px] rounded-md border border-[color:var(--border)] bg-[color:var(--muted)]","aria-hidden":"true"}):null]})}const Zps=720*60*60;function Jps(){return window.location.hostname.endsWith("onehop.ai")?".onehop.ai":void 0}function efs(){if(typeof document>"u"||document.cookie.split("; ").some(a=>a.startsWith("oh_attr=")))return;const e=lhe({params:new URLSearchParams(window.location.search),referer:document.referrer||null,path:window.location.pathname});if(!che(e))return;const t=[`oh_attr=${encodeURIComponent(JSON.stringify(e))}`,"path=/",`max-age=${Zps}`,"samesite=lax"],n=Jps();n&&t.push(`domain=${n}`),window.location.protocol==="https:"&&t.push("secure"),document.cookie=t.join("; ")}const K3=2592e5,V9="thumbmark",K9="https://api.thumbmarkjs.com",hj={exclude:[],include:[],stabilize:["private","iframe"],logging:!0,timeout:5e3,cache_api_call:!0,cache_lifetime_in_ms:0,performance:!1,experimental:!1,property_name_factory:e=>`${V9}_${e}`},tfs={private:[{exclude:["canvas"],browsers:["firefox","safari>=17","brave"]},{exclude:["audio"],browsers:["samsungbrowser","safari"]},{exclude:["fonts"],browsers:["firefox"]},{exclude:["audio.sampleHash","hardware.deviceMemory","header.acceptLanguage.q","system.hardwareConcurrency","plugins"],browsers:["brave"]},{exclude:["tls.extensions"],browsers:["firefox","chrome","safari"]},{exclude:["header.acceptLanguage"],browsers:["edge","chrome"]}
857],iframe:[{exclude:["system.applePayVersion","system.cookieEnabled"],browsers:["safari"]},{exclude:["permissions"]}],vpn:[{exclude:["ip"]}],always:[{exclude:["speech"],browsers:["brave","firefox"]}]},G3=typeof window<"u"?window.OfflineAudioContext||window.webkitOfflineAudioContext:null;function nfs(e){let t=0;for(let n=0;n<e.length;++n)t+=Math.abs(e[n]);return t}function W3(e,t,n){if(e.length===1)return e[0];if(e.length===3){const r=e[0].data,i=e[1].data,c=e[2].data,d=new Uint8ClampedArray(r.length);for(let m=0;m<r.length;m++){const f=r[m],p=i[m],y=c[m];d[m]=f===p||f===y?f:p===y?p:f}return new ImageData(d,t,n)}let a=[];for(let r=0;r<e[0].data.length;r++){let i=[];for(let c=0;c<e.length;c++)i.push(e[c].data[r]);a.push(afs(i))}const s=new Uint8ClampedArray(a);return new ImageData(s,t,n)}function afs(e){if(e.length===0)return 0;const t={};for(const a of e)t[a]=(t[a]||0)+1;let n=e[0];for(const a in t)t[a]>t[n]&&(n=parseInt(a,10));return n}function pb(e){return e^=e>>>16,e=Math.imul(e,2246822507),e^=e>>>13,e=Math.imul(e,3266489909),(e^=e>>>16)>>>0}const Na=new Uint32Array([597399067,2869860233,951274213,2716044179]);function $s(e,t){return e<<t|e>>>32-t}function Fo(e,t=0){if(t=t?0|t:0,typeof e=="string"&&(e=(function(s){if(typeof TextEncoder<"u")return new TextEncoder().encode(s).buffer;const r=[];for(let i=0;i<s.length;i++){let c=s.charCodeAt(i);c<128?r.push(c):c<2048?r.push(192|c>>6,128|63&c):c<55296||c>=57344?r.push(224|c>>12,128|c>>6&63,128|63&c):(i++,c=65536+((1023&c)<<10|1023&s.charCodeAt(i)),r.push(240|c>>18,128|c>>12&63,128|c>>6&63,128|63&c))}return new Uint8Array(r).buffer})(e)),!(e instanceof ArrayBuffer))throw new TypeError("Expected key to be ArrayBuffer or string");const n=new Uint32Array([t,t,t,t]);(function(s,r){const i=s.byteLength/16|0,c=new Uint32Array(s,0,4*i);for(let d=0;d<i;d++){const m=c.subarray(4*d,4*(d+1));m[0]=Math.imul(m[0],Na[0]),m[0]=$s(m[0],15),m[0]=Math.imul(m[0],Na[1]),r[0]=r[0]^m[0],r[0]=$s(r[0],19),r[0]=r[0]+r[1],r[0]=Math.imul(r[0],5)+1444728091,m[1]=Math.imul(m[1],Na[1]),m[1]=$s(m[1],16),m[1]=Math.imul(m[1],Na[2]),r[1]=r[1]^m[1],r[1]=$s(r[1],17),r[1]=r[1]+r[2],r[1]=Math.imul(r[1],5)+197830471,m[2]=Math.imul(m[2],Na[2]),m[2]=$s(m[2],17),m[2]=Math.imul(m[2],Na[3]),r[2]=r[2]^m[2],r[2]=$s(r[2],15),r[2]=r[2]+r[3],r[2]=Math.imul(r[2],5)+2530024501,m[3]=Math.imul(m[3],Na[3]),m[3]=$s(m[3],18),m[3]=Math.imul(m[3],Na[0]),r[3]=r[3]^m[3],r[3]=$s(r[3],13),r[3]=r[3]+r[0],r[3]=Math.imul(r[3],5)+850148119}})(e,n),(function(s,r){const i=s.byteLength/16|0,c=s.byteLength%16,d=new Uint32Array(4),m=new Uint8Array(s,16*i,c);switch(c){case 15:d[3]=d[3]^m[14]<<16;case 14:d[3]=d[3]^m[13]<<8;case 13:d[3]=d[3]^m[12],d[3]=Math.imul(d[3],Na[3]),d[3]=$s(d[3],18),d[3]=Math.imul(d[3],Na[0]),r[3]=r[3]^d[3];case 12:d[2]=d[2]^m[11]<<24;case 11:d[2]=d[2]^m[10]<<16;case 10:d[2]=d[2]^m[9]<<8;case 9:d[2]=d[2]^m[8],d[2]=Math.imul(d[2],Na[2]),d[2]=$s(d[2],17),d[2]=Math.imul(d[2],Na[3]),r[2]=r[2]^d[2];case 8:d[1]=d[1]^m[7]<<24;case 7:d[1]=d[1]^m[6]<<16;case 6:d[1]=d[1]^m[5]<<8;case 5:d[1]=d[1]^m[4],d[1]=Math.imul(d[1],Na[1]),d[1]=$s(d[1],16),d[1]=Math.imul(d[1],Na[2]),r[1]=r[1]^d[1];case 4:d[0]=d[0]^m[3]<<24;case 3:d[0]=d[0]^m[2]<<16;case 2:d[0]=d[0]^m[1]<<8;case 1:d[0]=d[0]^m[0],d[0]=Math.imul(d[0],Na[0]),d[0]=$s(d[0],15),d[0]=Math.imul(d[0],Na[1]),r[0]=r[0]^d[0]}})(e,n),(function(s,r){r[0]=r[0]^s.byteLength,r[1]=r[1]^s.byteLength,r[2]=r[2]^s.byteLength,r[3]=r[3]^s.byteLength,r[0]=r[0]+r[1]|0,r[0]=r[0]+r[2]|0,r[0]=r[0]+r[3]|0,r[1]=r[1]+r[0]|0,r[2]=r[2]+r[0]|0,r[3]=r[3]+r[0]|0,r[0]=pb(r[0]),r[1]=pb(r[1]),r[2]=pb(r[2]),r[3]=pb(r[3]),r[0]=r[0]+r[1]|0,r[0]=r[0]+r[2]|0,r[0]=r[0]+r[3]|0,r[1]=r[1]+r[0]|0,r[2]=r[2]+r[0]|0,r[3]=r[3]+r[0]|0})(e,n);const a=new Uint8Array(n.buffer);return Array.from(a).map((s=>s.toString(16).padStart(2,"0"))).join("")}const Y3=280;async function G9(e){for(var t;!document.body;)await ofs(50);const n=document.createElement("iframe");n.setAttribute("frameBorder","0");const a=n.style;a.setProperty("position","fixed"),a.setProperty("display","block","important"),a.setProperty("visibility","visible"),a.setProperty("border","0"),a.setProperty("opacity","0"),n.src="about:blank",document.body.appendChild(n);const s=n.contentDocument||((t=n.contentWindow)===null||t===void 0?void 0:t.document);if(!s)throw new Error("Iframe document is not accessible");e({iframe:s}),setTimeout((()=>{document.body.removeChild(n)}),0)}function ofs(e,t){return new Promise((n=>setTimeout(n,e,t)))}const sfs=["Arial","Arial Black","Arial Narrow","Arial Rounded MT","Arimo","Archivo","Barlow","Bebas Neue","Bitter","Bookman","Calibri","Cabin","Candara","Century","Century Gothic","Comic Sans MS","Constantia","Courier","Courier New","Crimson Text","DM Mono","DM Sans","DM Serif Display","DM Serif Text","Dosis","Droid Sans","Exo","Fira Code","Fira Sans","Franklin Gothic Medium","Garamond","Geneva","Georgia","Gill Sans","Helvetica","Impact","Inconsolata","Indie Flower","Inter","Josefin Sans","Karla","Lato","Lexend","Lucida Bright","Lucida Console","Lucida Sans Unicode","Manrope","Merriweather","Merriweather Sans","Montserrat","Myriad","Noto Sans","Nunito","Nunito Sans","Open Sans","Optima","Orbitron","Oswald","Pacifico","Palatino","Perpetua","PT Sans","PT Serif","Poppins","Prompt","Public Sans","Quicksand","Rajdhani","Recursive","Roboto","Roboto Condensed","Rockwell","Rubik","Segoe Print","Segoe Script","Segoe UI","Sora","Source Sans Pro","Space Mono","Tahoma","Taviraj","Times","Times New Roman","Titillium Web","Trebuchet MS","Ubuntu","Varela Round","Verdana","Work Sans"],rfs=["monospace","sans-serif","serif"];function Q3(e,t){return e.font=`72px ${t}`,e.measureText("WwMmLli0Oo").width}function ifs(){var e;const t=document.createElement("canvas"),n=(e=t.getContext("webgl"))!==null&&e!==void 0?e:t.getContext("experimental-webgl");
vendor: 4,227 bytes, line 857
857if(n&&"getParameter"in n)try{const a=(n.getParameter(n.VENDOR)||"").toString(),s=(n.getParameter(n.RENDERER)||"").toString();let r={vendor:a,renderer:s,version:(n.getParameter(n.VERSION)||"").toString(),shadingLanguageVersion:(n.getParameter(n.SHADING_LANGUAGE_VERSION)||"").toString()};if(!s.length||!a.length){const i=n.getExtension("WEBGL_debug_renderer_info");if(i){const c=(n.getParameter(i.UNMASKED_VENDOR_WEBGL)||"").toString(),d=(n.getParameter(i.UNMASKED_RENDERER_WEBGL)||"").toString();c&&(r.vendorUnmasked=c),d&&(r.rendererUnmasked=d)}}return r}catch{}return"undefined"}function lfs(){const e=new Float32Array(1),t=new Uint8Array(e.buffer);return e[0]=1/0,e[0]=e[0]-e[0],t[3]}const fb=(e,t,n,a)=>{const s=(n-t)/a;let r=0;for(let i=0;i<a;i++)r+=e(t+(i+.5)*s);return r*s};function cfs(e,t){const n={};return t.forEach((a=>{const s=(function(r){if(r.length===0)return null;const i={};r.forEach((m=>{const f=String(m);i[f]=(i[f]||0)+1}));let c=r[0],d=1;return Object.keys(i).forEach((m=>{i[m]>d&&(c=m,d=i[m])})),c})(e.map((r=>a in r?r[a]:void 0)).filter((r=>r!==void 0)));s&&(n[a]=s)})),n}const dfs=["accelerometer","accessibility","accessibility-events","ambient-light-sensor","background-fetch","background-sync","bluetooth","camera","clipboard-read","clipboard-write","device-info","display-capture","gyroscope","geolocation","local-fonts","magnetometer","microphone","midi","nfc","notifications","payment-handler","persistent-storage","push","speaker","storage-access","top-level-storage-access","window-management","query"],dS=new Map;function Fw(){if(typeof navigator>"u")return{name:"unknown",version:"unknown"};const e=!!navigator.brave,t=(e?"B|":"N|")+navigator.userAgent,n=dS.get(t);if(n)return n;const a=[{name:"Brave",detect:()=>e}];let s;for(const r of a)if(r.detect()){const i=X3(navigator.userAgent);return s={name:r.name,version:i.version},dS.set(t,s),s}return s=X3(navigator.userAgent),dS.set(t,s),s}function X3(e){var t,n,a,s,r,i;const c=[/(?<name>SamsungBrowser)\/(?<version>\d+(?:\.\d+)+)/,/(?<name>EdgA|EdgiOS|Edg)\/(?<version>\d+(?:\.\d+)+)/,/(?<name>OPR|OPX)\/(?<version>\d+(?:\.\d+)+)/,/Opera[\s\/](?<version>\d+(?:\.\d+)+)/,/Opera Mini\/(?<version>\d+(?:\.\d+)+)/,/Opera Mobi\/(?<version>\d+(?:\.\d+)+)/,/(?<name>Vivaldi)\/(?<version>\d+(?:\.\d+)+)/,/(?<name>CriOS)\/(?<version>\d+(?:\.\d+)+)/,/(?<name>FxiOS)\/(?<version>\d+(?:\.\d+)+)/,/(?<name>Chrome|Chromium)\/(?<version>\d+(?:\.\d+)+)/,/(?<name>Firefox|Waterfox|Iceweasel|IceCat)\/(?<version>\d+(?:\.\d+)+)/,/Version\/(?<version1>[\d.]+).*Safari\/[\d.]+|(?<name>Safari)\/(?<version2>[\d.]+)/,/(?<name>MSIE|Trident|IEMobile).+?(?<version>\d+(?:\.\d+)+)/,/(?<name>[A-Za-z]+)\/(?<version>\d+(?:\.\d+)+)/],d={edg:"Edge",edga:"Edge",edgios:"Edge",opr:"Opera",opx:"Opera",crios:"Chrome",fxios:"Firefox",samsung:"SamsungBrowser",vivaldi:"Vivaldi"};for(const m of c){const f=e.match(m);if(f){let p=(t=f.groups)===null||t===void 0?void 0:t.name,y=((n=f.groups)===null||n===void 0?void 0:n.version)||((a=f.groups)===null||a===void 0?void 0:a.version1)||((s=f.groups)===null||s===void 0?void 0:s.version2);if(p||!(!((r=f.groups)===null||r===void 0)&&r.version1)&&!(!((i=f.groups)===null||i===void 0)&&i.version2)||(p="Safari"),!p&&m.source.includes("Opera Mini")&&(p="Opera Mini"),!p&&m.source.includes("Opera Mobi")&&(p="Opera Mobi"),!p&&m.source.includes("Opera")&&(p="Opera"),!p&&f[1]&&(p=f[1]),!y&&f[2]&&(y=f[2]),p)return{name:d[p.toLowerCase()]||p,version:y||"unknown"}}}return{name:"unknown",version:"unknown"}}function Z3(){if(typeof navigator>"u"||!navigator.userAgent)return!1;const e=navigator.userAgent;return/Mobi|Android|iPhone|iPod|IEMobile|Opera Mini|Opera Mobi|webOS|BlackBerry|Windows Phone/i.test(e)&&!/iPad/i.test(e)}function ufs(){let e=[];const t={"prefers-contrast":["high","more","low","less","forced","no-preference"],"any-hover":["hover","none"],"any-pointer":["none","coarse","fine"],pointer:["none","coarse","fine"],hover:["hover","none"],update:["fast","slow"],"inverted-colors":["inverted","none"],"prefers-reduced-motion":["reduce","no-preference"],"prefers-reduced-transparency":["reduce","no-preference"],scripting:["none","initial-only","enabled"],"forced-colors":["active","none"]};return Object.keys(t).forEach((n=>
857{t[n].forEach((a=>{matchMedia(`(${n}: ${a})`).matches&&e.push(`${n}: ${a}`)}))})),e}function mfs(){if(window.location.protocol==="https:"&&typeof window.ApplePaySession=="function")try{const e=window.ApplePaySession.supportsVersion;for(let t=15;t>0;t--)if(e(t))return t}catch{return 0}return 0}const pfs=Fw().name!=="SamsungBrowser"?1:3,ffs=Fw().name!=="Brave",J3=137,gfs=(()=>{const e=new Float32Array(548),t=2*Math.PI/J3;for(let n=0;n<J3;n++){const a=n*t;e[4*n]=0,e[4*n+1]=0,e[4*n+2]=100*Math.cos(a),e[4*n+3]=50*Math.sin(a)}return e})();let Rg=null;function eL(){try{if(typeof document>"u")return null;const e=document.createElement("canvas");e.width=200,e.height=100;const t=e.getContext("webgl");if(!t)return null;e.addEventListener("webglcontextlost",(i=>{i.preventDefault(),Rg=null}),{once:!0});const n=t.createShader(t.VERTEX_SHADER),a=t.createShader(t.FRAGMENT_SHADER);if(!n||!a||(t.shaderSource(n,`
858    attribute vec2 position;
859    void main() {
860        gl_Position = vec4(position, 0.0, 1.0);
861    }
862`),t.compileShader(n),!t.getShaderParameter(n,t.COMPILE_STATUS))||(t.shaderSource(a,`
863    precision mediump float;
864    void main() {
865        gl_FragColor = vec4(0.812, 0.195, 0.553, 0.921); // Set line color
866    }
867`),t.compileShader(a),!t.getShaderParameter(a,t.COMPILE_STATUS)))return null;const s=t.createProgram();if(!s||(t.attachShader(s,n),t.attachShader(s,a),t.linkProgram(s),!t.getProgramParameter(s,t.LINK_STATUS)))return null;const r=t.createBuffer();return r?(t.bindBuffer(t.ARRAY_BUFFER,r),t.bufferData(t.ARRAY_BUFFER,gfs,t.STATIC_DRAW),t.bindBuffer(t.ARRAY_BUFFER,null),{canvas:e,gl:t,program:s,buffer:r}):null}catch{return null}}function ar(e){const t=new Set;return(function n(a){if(a&&a.toJSON&&typeof a.toJSON=="function"&&(a=a.toJSON()),a===void 0)return;if(typeof a=="number")return isFinite(a)?""+a:"null";if(typeof a!="object")return JSON.stringify(a);let s,r;if(Array.isArray(a)){for(r="[",s=0;s<a.length;s++)s&&(r+=","),r+=n(a[s])||"null";return r+"]"}if(a===null)return"null";if(t.has(a))throw new TypeError("Converting circular structure to JSON");t.add(a);const i=Object.keys(a).sort();for(r="",s=0;s<i.length;s++){const c=i[s],d=n(a[c]);d&&(r&&(r+=","),r+=JSON.stringify(c)+":"+d)}return t.delete(a),"{"+r+"}"})(e)||""}const W9=["𝔄","𝔅","ℭ","𝔇","𝔈","𝔉","𝔸","𝔹","ℂ","𝔻","𝔼","𝔽"],Y9=["β","ψ","λ","ε","ζ","α","ξ","μ","ρ","φ","κ","τ","η","σ","ι","ω","γ","ν","χ","δ","θ","π","υ","ο"];function Lg(e,t){return`<math><mrow>${t}</mrow></math>`}function hfs(){let e="<mo>∏</mo>";return W9.forEach(((t,n)=>{const a=2*n,s=Y9.slice(a,a+2);s.length===2&&(e+=`<mmultiscripts><mi>${t}</mi><none/><mi>${s[1]}</mi><mprescripts></mprescripts><mi>${s[0]}</mi><none/></mmultiscripts>`)})),Lg(0,`<munderover><mmultiscripts>${e}</mmultiscripts></munderover>`)}function yfs(){const e=[];return W9.forEach(((t,n)=>{const a=2*n,s=Y9.slice(a,a+2);s.length===2&&e.push(Lg(0,`<mmultiscripts><mi>${t}</mi><none/><mi>${s[1]}</mi><mprescripts></mprescripts><mi>${s[0]}</mi><none/></mmultiscripts>`))})),e}const vfs={audio:async function(){return G3?(async function(){return new Promise(((e,t)=>{try{const n=new G3(1,5e3,44100),a=n.createBufferSource(),s=n.createOscillator();s.frequency.value=1e3;const r=n.createDynamicsCompressor();let i;r.threshold.value=-50,r.knee.value=40,r.ratio.value=12,r.attack.value=0,r.release.value=.2,s.connect(r),r.connect(n.destination),s.start(),n.oncomplete=c=>{i=c.renderedBuffer.getChannelData(0),e({sampleHash:nfs(i),maxChannels:n.destination.maxChannelCount,channelCountMode:a.channelCountMode})},n.startRendering()}catch(n){t(n)}}))})():null},canvas:async function(){return new Promise((e=>{const t=Array.from({length:3},(()=>(function(){const n=document.createElement("canvas"),a=n.getContext("2d");if(!a)return null;n.width=Y3,n.height=20;const s=a.createLinearGradient(0,0,n.width,n.height);s.addColorStop(0,"red"),s.addColorStop(.16666666666666666,"orange"),s.addColorStop(.3333333333333333,"yellow"),s.addColorStop(.5,"green"),s.addColorStop(.6666666666666666,"blue"),s.addColorStop(.8333333333333334,"indigo"),s.addColorStop(1,"violet"),a.fillStyle=s,a.fillRect(0,0,n.width,n.height);const r="Random Text WMwmil10Oo";
867return a.font="23.123px Arial",a.fillStyle="black",a.fillText(r,-5,15),a.fillStyle="rgba(0, 0, 255, 0.5)",a.fillText(r,-3.3,17.7),a.beginPath(),a.moveTo(0,0),a.lineTo(2*n.width/7,n.height),a.strokeStyle="white",a.lineWidth=2,a.stroke(),a.getImageData(0,0,n.width,n.height)})())).filter((n=>n!==null));t.length!==0?e({commonPixelsHash:Fo(W3(t,Y3,20).data.toString()).toString()}):e(null)}))},fonts:async function(e){return new Promise((t=>{try{G9((async({iframe:n})=>{const a=n.createElement("canvas").getContext("2d");if(!a)return void t(null);const s=rfs.map((i=>Q3(a,i)));let r={};sfs.forEach((i=>{const c=Q3(a,i);s.includes(c)||(r[i]=c)})),t(r)}))}catch{t(null)}}))},hardware:function(){return new Promise(((e,t)=>{const n=navigator.deviceMemory!==void 0?navigator.deviceMemory:0,a=window.performance&&window.performance.memory?window.performance.memory:0;e({videocard:ifs(),architecture:lfs(),deviceMemory:n.toString()||"undefined",jsHeapSizeLimit:a.jsHeapSizeLimit||0})}))},locales:function(){return new Promise((e=>{e({languages:navigator.language,timezone:Intl.DateTimeFormat().resolvedOptions().timeZone})}))},math:function(){return new Promise((e=>{e({acos:Math.acos(.5),asin:fb(Math.asin,-1,1,97),cos:fb(Math.cos,0,Math.PI,97),largeCos:Math.cos(1e20),largeSin:Math.sin(1e20),largeTan:Math.tan(1e20),sin:fb(Math.sin,-Math.PI,Math.PI,97),tan:fb(Math.tan,0,2*Math.PI,97)})}))},permissions:async function(e){const t=e?.permissions_to_check||dfs;return cfs(await Promise.all(Array.from({length:3},(()=>(async function(n){const a={};for(const s of n)try{const r=await navigator.permissions.query({name:s});a[s]=r.state.toString()}catch{}return a})(t)))),t)},plugins:async function(){const e=[];if(navigator.plugins)for(let t=0;t<navigator.plugins.length;t++){const n=navigator.plugins[t];e.push([n.name,n.filename,n.description].join("|"))}return new Promise((t=>{t({plugins:e})}))},screen:function(){return new Promise((e=>{if(typeof matchMedia>"u"||typeof screen>"u")return void e(null);const t={is_touchscreen:navigator.maxTouchPoints>0,maxTouchPoints:navigator.maxTouchPoints,colorDepth:screen.colorDepth,mediaMatches:ufs()};Z3()&&navigator.maxTouchPoints>0&&(t.resolution=(function(){const n=window.screen.width,a=window.screen.height,s=Math.max(n,a).toString(),r=Math.min(n,a).toString();return`${s}x${r}`})()),e(t)}))},system:function(){return new Promise((e=>{const t=Fw();e({platform:window.navigator.platform,productSub:navigator.productSub,product:navigator.product,useragent:navigator.userAgent,hardwareConcurrency:navigator.hardwareConcurrency,browser:{name:t.name,version:t.version},mobile:Z3(),applePayVersion:mfs(),cookieEnabled:window.navigator.cookieEnabled})}))},webgl:async function(){const e=ffs?(Rg||(Rg=eL()),Rg):eL();if(!e)return{webgl:"unsupported"};try{const t=Array.from({length:pfs},(()=>(function(n){const{canvas:a,gl:s,program:r,buffer:i}=n;try{s.useProgram(r),s.bindBuffer(s.ARRAY_BUFFER,i);const c=s.getAttribLocation(r,"position");s.enableVertexAttribArray(c),s.vertexAttribPointer(c,2,s.FLOAT,!1,0,0),s.viewport(0,0,a.width,a.height),s.clearColor(0,0,0,1),s.clear(s.COLOR_BUFFER_BIT),s.drawArrays(s.LINES,0,274);const d=new Uint8ClampedArray(a.width*a.height*4);return s.readPixels(0,0,a.width,a.height,s.RGBA,s.UNSIGNED_BYTE,d),new ImageData(d,a.width,a.height)}catch{return Rg=null,new ImageData(1,1)}finally{s.bindBuffer(s.ARRAY_BUFFER,null),s.useProgram(null),s.viewport(0,0,s.drawingBufferWidth,s.drawingBufferHeight),s.clearColor(0,0,0,0)}})(e)));return{commonPixelsHash:Fo(W3(t,e.canvas.width,e.canvas.height).data.toString()).toString()}}catch{return{webgl:"unsupported"}}},webrtc:async function(e){return new Promise((t=>{let n;try{const a=window.RTCPeerConnection||window.webkitRTCPeerConnection||window.mozRTCPeerConnection;if(!a)return void t({supported:!1,error:"WebRTC not supported"});n=new a({iceCandidatePoolSize:1,iceServers:[]});const s=n;s.createDataChannel(""),(async()=>{try{const r={offerToReceiveAudio:!0,offerToReceiveVideo:!0},i=await s.createOffer(r);await s.setLocalDescription(i);const c=i.sdp||"",d=[...new Set((c.match(/extmap:\d+ [^\n\r]+/g)||[]).map((x=>x.replace(/extmap:\d+ /,""))))].sort(),m=x=>{const w=c.match(new RegExp(`m=${x} [^\\s]+ [^\\s]+ ([^\\n\\r]+)`));return w?w[1].split(" "):[]},f=(x,w)=>w.map((S=>{const k=new RegExp(`(rtpmap|fmtp|rtcp-fb):${S} (.+)`,"g"),T=[...c.matchAll(k)];if(!T.length)return null;const R={};return T.forEach((_=>{const[P,j,N]=_,I=N.split("/");j==="rtpmap"?(R.mimeType=`${x}
867/${I[0]}`,R.clockRate=+I[1],x==="audio"&&(R.channels=+I[2]||1)):j==="rtcp-fb"?(R.feedbackSupport=R.feedbackSupport||[],R.feedbackSupport.push(N)):j==="fmtp"&&(R.sdpFmtpLine=N)})),R})).filter(Boolean),p=f("audio",m("audio")),y=f("video",m("video")),v={audio:{count:p.length,hash:Fo(ar(p))},video:{count:y.length,hash:Fo(ar(y))},extensionsHash:Fo(ar(d))};s.close();const $={supported:!0,...v,candidateType:"host"};t({details:$,hash:Fo(ar($))})}catch(r){s.close(),t({supported:!0,error:`WebRTC offer failed: ${r.message}`})}})()}catch(a){n?.close(),t({supported:!1,error:`WebRTC error: ${a.message}`})}}))},speech:async function(){return new Promise((e=>{try{if(typeof window>"u"||!window.speechSynthesis||typeof window.speechSynthesis.getVoices!="function")return void e({supported:!1,error:"Speech Synthesis API not supported"});let t=!1,n=null;const a=i=>{if(!t){t=!0,n&&clearTimeout(n);try{const c=i.map((m=>{const f=p=>p.replace(/\\/g,"\\\\").replace(/,/g,"\\,");return[f(m.voiceURI||""),f(m.name||""),f(m.lang||""),m.localService?"1":"0",m.default?"1":"0"].join(",")}));c.sort();const d={voiceCount:i.length,voicesHash:Fo(ar(c))};e({details:d,hash:Fo(ar(d))})}catch(c){e({supported:!0,error:`Voice processing failed: ${c.message}`})}}},s=window.speechSynthesis.getVoices();if(s.length>0)return void a(s);n=setTimeout((()=>{const i=window.speechSynthesis.getVoices();a(i)}),800);const r=()=>{window.speechSynthesis.removeEventListener("voiceschanged",r);const i=window.speechSynthesis.getVoices();a(i)};window.speechSynthesis.addEventListener("voiceschanged",r)}catch(t){e({supported:!1,error:`Speech Synthesis error: ${t.message}`})}}))}},bfs={intl:async function(){if(typeof Intl>"u")return null;try{const e=new Date(Date.UTC(2024,0,15,12,30,45)),t={dateFullFormat:new Intl.DateTimeFormat("en-US",{dateStyle:"full",timeZone:"UTC"}).format(e),dateMediumFormat:new Intl.DateTimeFormat("en-US",{dateStyle:"medium",timeZone:"UTC"}).format(e),timeFormat:new Intl.DateTimeFormat("en-US",{timeStyle:"long",timeZone:"UTC"}).format(e),numberFormat:new Intl.NumberFormat("en-US").format(123456.789),currencyFormat:new Intl.NumberFormat("en-US",{style:"currency",currency:"USD"}).format(123456.789),percentFormat:new Intl.NumberFormat("en-US",{style:"percent"}).format(.456),nonLatinDate:new Intl.DateTimeFormat("ar-EG",{timeZone:"UTC"}).format(e),nonLatinNumber:new Intl.NumberFormat("zh-Hans-CN-u-nu-hanidec").format(123456.789)},n=Intl;return typeof n.ListFormat=="function"&&(t.listFormat=new n.ListFormat("en",{type:"conjunction"}).format(["a","b","c"])),typeof n.DisplayNames=="function"&&(t.displayNames=new n.DisplayNames("en",{type:"region"}).of("US")||""),{details:t,hash:Fo(ar(t))}}catch{return null}},mathml:async function(){return new Promise((e=>{try{G9((async({iframe:t})=>{try{if(!(function(i){try{const c=i.createElement("math");c.innerHTML="<mrow><mi>x</mi></mrow>",c.style.position="absolute",c.style.visibility="hidden",i.body.appendChild(c);const d=c.getBoundingClientRect();return i.body.removeChild(c),d.width>0&&d.height>0}catch{return!1}})(t))return void e({supported:!1,error:"MathML not supported"});const n=[Lg("integral","<msubsup><mo>∫</mo><mi>a</mi><mi>b</mi></msubsup><mfrac><mrow><mi>f</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mrow><mi>g</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mfrac><mi>dx</mi>"),Lg("fraction","<mfrac><mrow><mi>π</mi><mo>×</mo><msup><mi>r</mi><mn>2</mn></msup></mrow><mrow><mn>2</mn><mi>σ</mi></mrow></mfrac>"),Lg("matrix","<mo>[</mo><mtable><mtr><mtd><mi>α</mi></mtd><mtd><mi>β</mi></mtd></mtr><mtr><mtd><mi>γ</mi></mtd><mtd><mi>δ</mi></mtd></mtr></mtable><mo>]</mo>"),hfs(),...yfs()],a=[];let s="";n.forEach(((i,c)=>{const d=(function(m,f){try{const p=f.createElement("math");p.innerHTML=m.replace(/<\/?math>/g,""),p.style.whiteSpace="nowrap",p.style.position="absolute",p.style.visibility="hidden",p.style.top="-9999px",f.body.appendChild(p);const y=p.getBoundingClientRect(),v=(f.defaultView||window).getComputedStyle(p),$={dimensions:{width:y.width,height:y.height},fontInfo:{fontFamily:v.fontFamily,fontSize:v.fontSize,fontWeight:v.fontWeight,fontStyle:v.fontStyle,lineHeight:v.lineHeight,fontVariant:v.fontVariant||"normal",fontStretch:v.fontStretch||"normal",fontSizeAdjust:v.fontSizeAdjust||"none",textRendering:v.textRendering||"auto",fontFeatureSettings:v.fontFeatureSettings||"normal",fontVariantNumeric:v.fontVariantNumeric||"normal",fontKerning:v.fontKerning||"auto"}};return f.body.removeChild(p),$}catch(p){return{error:p.message}}})(i,t);a.push({width:d.dimensions.width,height:d.dimensions.height}),c===0&&d.fontInfo&&(s=Fo(ar(d.fontInfo)))}));const r={fontStyleHash:s,dimensions:a};e({details:r,hash:Fo(ar(r))})}catch(n){e({supported:!1,error:`MathML error: ${n.message}`})}}))}catch(t){e({supported:!1,error:`MathML error: ${t.message}`})}}))},mediadevices:async function(){if(typeof navigator>"u"||!navigator.mediaDevices||typeof navigator.mediaDevices.enumerateDevices!="function")return null;try{const e=await navigator.mediaDevices.enumerateDevices(),t={};for(const n of e)t[n.kind]=(t[n.kind]||0)+1;return{audioinput:t.audioinput||0,audiooutput:t.audiooutput||0,videoinput:t.videoinput||0}}catch{return null}}},xfs={},$fs={timeout:"true"};function Q9(e,t){var n,a;let s=Fw();if(s.name==="unknown"&&t){const m=(n=t.system)===null||n===void 0?void 0:n.browser;
867m?.name&&(s={name:String(m.name),version:String(m.version||"unknown")})}const r=s.name.toLowerCase(),i=parseInt(s.version.split(".")[0]||"0",10),c=Array.isArray(e?.exclude)?[...e.exclude]:[],d=[...new Set([...e?.stabilize||[],"always"])];for(const m of d){const f=tfs[m];if(f)for(const p of f)"browsers"in p&&!(!((a=p.browsers)===null||a===void 0)&&a.some((y=>{const v=y.match(/(.+?)(>=)(\d+)/);return v?r===v[1]&&i>=+v[3]:r===y})))||c.push(...p.exclude)}return c}function X9(e,t){const n=Q9(t,e),a=Array.isArray(t?.include)?t.include:[];return(function s(r,i=""){const c={};for(const[d,m]of Object.entries(r)){const f=i?`${i}.${d}`:d;if(typeof m!="object"||Array.isArray(m)||m===null){const p=n.some((v=>f.startsWith(v))),y=a.some((v=>f.startsWith(v)));p&&!y||(c[d]=m)}else{const p=s(m,f);Object.keys(p).length>0&&(c[d]=p)}}return c})(e)}const Z9="visitor_id";function J9(e){return e.storage_property_name?e.storage_property_name:e.property_name_factory(Z9)}const tL=`${V9}_${Z9}`;function eK(e,t){try{localStorage.setItem(J9(t),e)}catch{}}const tK="cache";function SR(e){try{const t=localStorage.getItem(e.property_name_factory(tK));return JSON.parse(t)||{}}catch{}return{}}function wfs(e){return e.cache_lifetime_in_ms>K3?Date.now()+K3:Date.now()+e.cache_lifetime_in_ms}
867class qx extends Error{constructor(t){super(`HTTP error! status: ${t}`),this.status=t}}let tg=null,AR=null;async function kfs(e,t,n,a){const s=await fetch(e,{method:"POST",headers:{"x-api-key":n.api_key,Authorization:"custom-authorized","Content-Type":"application/json"},body:JSON.stringify(t)});if(!s.ok)throw new qx(s.status);const r=await s.json();return r.visitorId&&r.visitorId!==a&&eK(r.visitorId,n),AR=r,(function(i,c){!i.cache_api_call||!i.cache_lifetime_in_ms||(function(d,m){const f={...SR(d),...m};try{localStorage.setItem(d.property_name_factory(tK),JSON.stringify(f))}catch{}})(i,{apiResponseExpiry:wfs(i),apiResponse:c})})(n,r),r}const Cfs=(e,t)=>{if(e.cache_api_call){if(AR)return Promise.resolve(AR);const d=(function(m){const f=SR(m);if(f&&f.apiResponse&&f.apiResponseExpiry&&Date.now()<=f.apiResponseExpiry)return f.apiResponse})(e);if(d)return Promise.resolve(d);if(tg)return tg}const n=`${e.api_endpoint||K9}/thumbmark`,a=(function(d){try{const m=J9(d);let f=localStorage.getItem(m);return f||m===tL||(f=localStorage.getItem(tL),f&&eK(f,d)),f}catch{return null}})(e),s={components:t,options:e,clientHash:Fo(ar(t)),version:"1.9.1"};if(a&&(s.visitorId=a),e.metadata){const d=typeof e.metadata=="function"?e.metadata():e.metadata;d&&((typeof d=="string"?d.length:JSON.stringify(d).length)>1e3?console.error("ThumbmarkJS: Metadata exceeds 1000 characters. Skipping metadata."):s.metadata=d)}const r=e.timeout||5e3,i=(async function(d,m,f,p){for(let y=0;y<3;y++){y>0&&await new Promise((v=>setTimeout(v,200*y)));try{return await kfs(d,m,f,p)}catch(v){if(v instanceof qx||y===2)throw v}}throw new Error("Unreachable")})(n,s,e,a).finally((()=>{tg=null})),c=new Promise((d=>{setTimeout((()=>{const m=SR(e);d(m?.apiResponse||{info:{timed_out:!0},...a&&{visitorId:a}})}),r)}));return tg=Promise.race([i,c]),tg};async function Sfs(e,t={}){var n,a;if(typeof document>"u"||typeof window>"u")return{thumbmark:"",components:{},info:{},version:"1.9.1",error:[{type:"fatal",message:"Browser environment required"}]};try{const s={...hj,...e},r=[],i=s.logging&&!sessionStorage.getItem("_tmjs_l")&&Math.random()<1e-4,c={...vfs,...xfs,...t},{elapsed:d,resolvedComponents:m,errors:f,pipelineTimings:p}=await nL(c,s);r.push(...f);let y={},v={},$={};if(i||s.experimental){const{elapsed:q,resolvedComponents:M,errors:F,pipelineTimings:H}=await nL(bfs,s);y=M,v=q,$=H,r.push(...F)}const x=s.api_key?Cfs(s,m):null;let w=null;if(x)try{w=await x}catch(q){if(q instanceof qx&&q.status===403)return{error:[{type:"api_unauthorized",message:"Invalid API key or quota exceeded"}],components:{},info:{},version:"1.9.1",thumbmark:""};r.push({type:q instanceof qx?"api_error":"network_error",message:q instanceof Error?q.message:String(q)})}!((n=w?.info)===null||n===void 0)&&n.timed_out&&r.push({type:"api_timeout",message:"API request timed out"});const S=performance.now(),k=X9(w?.components||{},s),T=performance.now()-S,R={...m,...k},_=w?.info||{uniqueness:{score:"api only"}};let P,j=0,N=0;if(w?.thumbmark)P=w.thumbmark;else{const q=performance.now(),M=ar(R);j=performance.now()-q;const F=performance.now();P=Fo(M),N=performance.now()-F}const I="1.9.1";i&&(async function(q,M,F,H={},ee=[]){var B;const G=`${K9}/log`,Q={thumbmark:q,components:M,experimental:H,version:"1.9.1",options:F,path:(B=window?.location)===null||B===void 0?void 0:B.pathname,...ee.length>0&&{errors:ee}};sessionStorage.setItem("_tmjs_l","1");try{await fetch(G,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(Q)})}catch{}})(P,R,s,y,r).catch((()=>{}));const z=(a=$["_pipeline.filter"])!==null&&a!==void 0?a:0,E={"_pipeline.dispatch":p["_pipeline.dispatch"],"_pipeline.resolve":p["_pipeline.resolve"],"_pipeline.filter":p["_pipeline.filter"]+z+T,"_pipeline.stringify":j,"_pipeline.hash":N,"_pipeline.assembly":0},L={...d,...v,...p,...E},O=s.performance?{elapsed:L}:{},V=performance.now(),ne={...w?.visitorId&&{visitorId:w.visitorId},thumbmark:P,components:R,info:_,version:I,...O,...r.length>0&&{error:r},...Object.keys(y).length>0&&s.experimental&&{experimental:y},...w?.requestId&&{requestId:w.requestId},...w?.metadata&&{metadata:w.metadata}};return L["_pipeline.assembly"]=performance.now()-V,ne}catch(s){return{thumbmark:"",components:{},info:{},version:"1.9.1",error:[{type:"fatal",message:s instanceof Error?s.message:String(s)}]}}}async function nL(e,t){const n={...hj,...t},a=Q9(n).filter((T=>!T.includes("."))),s=Object.entries(e).filter((([T])=>{var R;return!(!((R=n?.exclude)===null||R===void 0)&&R.includes(T))})).filter((([T])=>!a.includes(T))).filter((([T])=>{var R,_,P,j;return!((R=n?.include)===null||R===void 0)&&R.some((N=>N.includes(".")))?(_=n?.include)===null||_===void 0?void 0:_.some((N=>N.startsWith(T))):((P=n?.include)===null||P===void 0?void 0:P.length)===0||((j=n?.include)===null||j===void 0?void 0:j.includes(T))})),r=s.map((([T])=>T)),i={},c=performance.now(),d=s.map((([T,R])=>{const _=performance.now(),P=R(t);return i[`_dispatch.${T}`]=performance.now()-_,P})),m=performance.now()-c,f=performance.now(),p=await(function(T,R,_){return Promise.all(T.map((P=>{const j=performance.now();let N;const I=P.then((E=>(N!==void 0&&clearTimeout(N),{value:E,elapsed:performance.now()-j}
867))).catch((E=>(N!==void 0&&clearTimeout(N),{value:_,elapsed:performance.now()-j,error:E instanceof Error?E.message:String(E)}))),z=new Promise((E=>{N=setTimeout((()=>{E({value:_,elapsed:performance.now()-j,error:"timeout"})}),R)}));return Promise.race([I,z])})))})(d,n?.timeout||5e3,$fs),y=performance.now()-f,v={},$={},x=[];p.forEach(((T,R)=>{var _;const P=r[R];v[P]=(_=T.elapsed)!==null&&_!==void 0?_:0,T.error==="timeout"?x.push({type:"component_timeout",message:`Component '${P}' timed out`,component:P}):T.error&&x.push({type:"component_error",message:T.error,component:P}),T.value!=null&&($[P]=T.value)}));const w=performance.now(),S=X9($,n),k={"_pipeline.dispatch":m,"_pipeline.resolve":y,"_pipeline.filter":performance.now()-w,...i};return{elapsed:v,resolvedComponents:S,errors:x,pipelineTimings:k}}class Afs{constructor(t){this.options={...hj,...t},this.customComponents={}}async get(t){return Sfs({...this.options,...t},this.customComponents)}getVersion(){return"1.9.1"}includeComponent(t,n){this.customComponents[t]=n}}const Tfs=365*24*60*60;function Rfs(){return window.location.hostname.endsWith("onehop.ai")?".onehop.ai":void 0}function Pfs(e){const t=[`oh_dev=${e}`,"path=/",`max-age=${Tfs}`,"samesite=lax"],n=Rfs();n&&t.push(`domain=${n}`),window.location.protocol==="https:"&&t.push("secure"),document.cookie=t.join("; ")}function _fs(){const e=document.cookie.match(/(?:^|; )oh_dev=([^;]*)/);return e?e[1]:null}async function jfs(){if(!(typeof document>"u"))try{const{thumbmark:e}=await new Afs({logging:!1}).get();if(!e||_fs()===e)return;Pfs(e)}catch{}}const Nfs=60,Dfs=i_(Z$).map(e=>({label:Uh[e],value:e}));function Mfs(){return o.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24","aria-hidden":"true",children:[o.jsx("path",{d:"M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92a5.06 5.06 0 0 1-2.2 3.32v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.1z",fill:"#4285F4"}),o.jsx("path",{d:"M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z",fill:"#34A853"}),o.jsx("path",{d:"M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z",fill:"#FBBC05"}),o.jsx("path",{d:"M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z",fill:"#EA4335"})]})}function Efs(e){if(!e||typeof e!="object")return!1;const t=e;return t.code==="TURNSTILE_REQUIRED"||t.code==="TURNSTILE_FAILED"?!0:typeof t.message=="string"&&t.message.toLowerCase().includes("human verification")}function aL(e){if(!e||typeof e!="object")return!1;const t=e;return t.code==="SIGNUP_NOT_ALLOWED"?!0:typeof t.message=="string"&&t.message.toLowerCase().includes("not approved for access")}function Ifs(){const{t:e}=W(),t="0x4AAAAAADUanQOKPqvJgta7",[n]=s_(),a=zx(n.get("redirect")),s=Nxe(a),r=qa(),i=r.error instanceof rn?r.error:null,[c,d]=h.useState("entry"),[m,f]=h.useState(Ew),[p,y]=h.useState(""),[v,$]=h.useState(""),[x,w]=h.useState(null),[S,k]=h.useState(!1),[T,R]=h.useState(!1),[_,P]=h.useState(""),[j,N]=h.useState(0),[I,z]=h.useState(!1),[E,L]=h.useState(0),O=h.useRef(null);h.useEffect(()=>{efs(),jfs()},[]);const V=!!t,ne=!V||!!_,q=h.useCallback(Y=>{P(Y),Y&&z(!1)},[]),M=h.useCallback(()=>{P(""),z(!0)},[]);h.useEffect(()=>{if(c!=="entry"||r.data||i&&i.status!==ko.unauthorized||O.current===a||!swe)return;const Y=Tg;O.current=a,Y.oneTap({callbackURL:s}).catch(()=>{})},[i,s,r.data,a,c]),h.useEffect(()=>{if(E<=0)return;const Y=setInterval(()=>L(pe=>pe<=1?0:pe-1),1e3);return()=>clearInterval(Y)},[E]);function F(){V&&(P(""),z(!1),N(Y=>Y+1))}const H=_?{"X-Turnstile-Token":_}:void 0;if(r.data)return o.jsx(Gd,{to:mj(a),replace:!0});if(r.isPending)return o.jsx("main",{className:"grid min-h-screen place-items-center bg-[color:var(--muted)] text-sm text-[color:var(--muted-foreground)]",children:o.jsx("div",{role:"status",children:e("common.loading")})});if(i&&i.status!==ko.unauthorized)return o.jsx("main",{className:"flex min-h-screen items-center justify-center bg-[color:var(--muted)] p-4 sm:p-6",children:o.jsx("div",{className:"w-full max-w-md",children:o.jsx(Qt,{title:e("auth.errors.signIn"),description:i.message})})});async function ee(){const Y=p.trim().toLowerCase();w(null),R(!0);try{const{error:pe}=await Tg.emailOtp.sendVerificationOtp({email:Y,type:"sign-in"},{headers:H});if(pe){if(Efs(pe)){w(e("auth.errors.verifyHuman")),F();return}if(aL(pe)){w(e("auth.errors.notAllowed"));return}throw new Error(pe.message||e("auth.errors.sendCodeFailed"))}y(Y),d("code"),L(Nfs),F()}catch(pe){w(pe instanceof Error?pe.message:e("auth.errors.sendCodeFailed")),F()}finally{R(!1)}}async function B(Y){k(!1),R(!0);try{const{error:pe}=await Tg.signIn.emailOtp({email:p,otp:Y});if(pe){if(aL(pe)){w(e("auth.errors.notAllowed")),$("");return}throw new Error(pe.message||e("auth.errors.invalidCode"))}window.location.assign(a)}catch{k(!0),w(e("auth.errors.codeIncorrect")),$("")}finally{R(!1)}}async function G(){w(null),R(!0);try{await Tg.signIn.social({provider:"google",callbackURL:s})}catch(Y){w(Y instanceof Error?Y.message:e("auth.errors.googleFailed")),R(!1)}}function Q(Y){if(!Yd(Y))return;const pe=Y;f(pe),l9(pe),kR(pe),window.location.href=`${uoe(pe,window.location.pathname)}${window.location.search}`}function de(){d("entry"),$(""),k(!1),w(null),F()}return o.jsx("main",{className:"grid min-h-screen place-items-center bg-[color:var(--muted)] p-4 sm:p-6",children:o.jsxs("div",{className:"w-full max-w-md 
867space-y-5",children:[o.jsxs(nj,{className:"space-y-6 rounded-3xl border-[color:var(--border)] bg-[color:var(--background)] p-7 shadow-[0_4px_20px_rgba(0,0,0,0.08)] sm:p-8",children:[o.jsxs("header",{className:"space-y-2 text-center",children:[o.jsx(Lz,{className:"mx-auto size-10"}),o.jsx("h1",{className:"text-xl font-semibold tracking-tight",children:e(c==="code"?"auth.enterCodeTitle":"auth.signInTitle")}),o.jsx("p",{className:"text-sm text-[color:var(--muted-foreground)]",children:c==="code"?e("auth.codeIntro",{email:p}):e("auth.methodIntro")})]}),x?o.jsx(Qt,{title:e("auth.errors.signIn"),description:x}):null,c==="entry"?o.jsxs("div",{className:"space-y-5",children:[o.jsxs(K,{variant:"outline",size:"lg",className:"w-full rounded-full",disabled:T,onClick:()=>void G(),children:[o.jsx(Mfs,{}),e("auth.continueGoogle")]}),o.jsxs("div",{className:"flex items-center gap-3 text-xs font-medium uppercase tracking-[0.12em] text-[color:var(--muted-foreground)]",children:[o.jsx("span",{className:"h-px flex-1 bg-[color:var(--border)]"}),e("auth.or"),o.jsx("span",{className:"h-px flex-1 bg-[color:var(--border)]"})]}),o.jsxs("form",{className:"space-y-4",onSubmit:Y=>{Y.preventDefault(),ee()},children:[o.jsx(ge,{type:"email",autoComplete:"email","aria-label":e("auth.emailLabel"),value:p,onChange:Y=>y(Y.target.value),placeholder:"[email protected]",className:"h-12 rounded-2xl px-4 text-base"}),V?o.jsxs(o.Fragment,{children:[o.jsx(Xps,{action:"otp_send",resetKey:j,siteKey:t,onTokenChange:q,onUnavailable:M}),I?o.jsx("p",{className:"text-13 text-[color:var(--muted-foreground)]",children:e("auth.errors.verifyUnavailable")}):null]}):null,o.jsx(K,{size:"lg",className:"w-full rounded-full disabled:bg-transparent disabled:border disabled:border-[color:var(--border)] disabled:text-[color:var(--foreground)]",disabled:T||!p.trim()||!ne,children:e(T?"auth.sending":"auth.continueEmail")})]})]}):o.jsxs("div",{className:"space-y-4",children:[o.jsx(Ice,{value:v,onChange:$,onComplete:Y=>void B(Y),error:S,disabled:T,autoFocus:!0}),o.jsx(K,{size:"lg",className:"w-full rounded-full disabled:bg-transparent disabled:border disabled:border-[color:var(--border)] disabled:text-[color:var(--foreground)]",disabled:T||v.length!==6,onClick:()=>void B(v),children:e(T?"auth.verifying":"auth.verify")}),o.jsxs("div",{className:"flex items-center justify-between text-sm",children:[o.jsxs(K,{variant:"link",size:"sm",className:"px-0 text-[color:var(--muted-foreground)] no-u
867nderline hover:text-[color:var(--foreground)] hover:no-underline",onClick:de,children:["← ",e("common.back")]}),o.jsx(K,{variant:"link",size:"sm",className:"px-0 no-underline hover:no-underline disabled:text-[color:var(--muted-foreground)]",disabled:E>0||T,onClick:de,children:E>0?e("auth.resendIn",{seconds:E}):e("auth.resendCode")})]})]}),o.jsxs("p",{className:"text-center text-xs text-[color:var(--muted-foreground)]",children:[e("auth.termsPrefix")," ",o.jsx("a",{href:"/terms",className:"text-[color:var(--primary)]",children:e("auth.terms")})," · ",o.jsx("a",{href:"/privacy",className:"text-[color:var(--primary)]",children:e("auth.privacy")})]})]}),o.jsx("div",{className:"fixed bottom-5 left-5",children:o.jsx(Bie,{"aria-label":e("common.language"),value:m,onSelect:Q,options:Dfs,showLabel:!0})})]})})}/**
868   * table-core
869   *
870   * Copyright (c) TanStack
871   *
872   * This source code is licensed under the MIT license found in the
873   * LICENSE.md file in the root directory of this source tree.
874   *
875   * @license MIT
876   */function gc(e,t){return typeof e=="function"?e(t):e}function ss(e,t){return n=>{t.setState(a=>({...a,[e]:gc(n,a[e])}))}}function zw(e){return e instanceof Function}function Ofs(e){return Array.isArray(e)&&e.every(t=>typeof t=="number")}function Lfs(e,t){const n=[],a=s=>{s.forEach(r=>{n.push(r);const i=t(r);i!=null&&i.length&&a(i)})};return a(e),n}function at(e,t,n){let a=[],s;return r=>{let i;n.key&&n.debug&&(i=Date.now());const c=e(r);if(!(c.length!==a.length||c.some((f,p)=>a[p]!==f)))return s;a=c;let m;if(n.key&&n.debug&&(m=Date.now()),s=t(...c),n==null||n.onChange==null||n.onChange(s),n.key&&n.debug&&n!=null&&n.debug()){const f=Math.round((Date.now()-i)*100)/100,p=Math.round((Date.now()-m)*100)/100,y=p/16,v=($,x)=>{for($=String($);$.length<x;)$=" "+$;return $};console.info(`%c⏱ ${v(p,5)} /${v(f,5)} ms`,`
877            font-size: .6rem;
878            font-weight: bold;
879            color: hsl(${Math.max(0,Math.min(120-120*y,120))}deg 100% 31%);`,n?.key)}return s}}function ot(e,t,n,a){return{debug:()=>{var s;return(s=e?.debugAll)!=null?s:e[t]},key:!1,onChange:a}}function Ufs(e,t,n,a){const s=()=>{var i;return(i=r.getValue())!=null?i:e.options.renderFallbackValue},r={id:`${t.id}_${n.id}`,row:t,column:n,getValue:()=>t.getValue(a),renderValue:s,getContext:at(()=>[e,n,t,r],(i,c,d,m)=>({table:i,column:c,row:d,cell:m,getValue:m.getValue,renderValue:m.renderValue}),ot(e.options,"debugCells"))};return e._features.forEach(i=>{i.createCell==null||i.createCell(r,n,t,e)},{}),r}function Bfs(e,t,n,a){var s,r;const c={...e._getDefaultColumnDef(),...t},d=c.accessorKey;let m=(s=(r=c.id)!=null?r:d?typeof String.prototype.replaceAll=="function"?d.replaceAll(".","_"):d.replace(/\./g,"_"):void 0)!=null?s:typeof c.header=="string"?c.header:void 0,f;if(c.accessorFn?f=c.accessorFn:d&&(d.includes(".")?f=y=>{let v=y;for(const x of d.split(".")){var $;v=($=v)==null?void 0:$[x]}return v}:f=y=>y[c.accessorKey]),!m)throw new Error;let p={id:`${String(m)}`,accessorFn:f,parent:a,depth:n,columnDef:c,columns:[],getFlatColumns:at(()=>[!0],()=>{var y;return[p,...(y=p.columns)==null?void 0:y.flatMap(v=>v.getFlatColumns())]},ot(e.options,"debugColumns")),getLeafColumns:at(()=>[e._getOrderColumnsFn()],y=>{var v;if((v=p.columns)!=null&&v.length){let $=p.columns.flatMap(x=>x.getLeafColumns());return y($)}return[p]},ot(e.options,"debugColumns"))};for(const y of e._features)y.createColumn==null||y.createColumn(p,e);return p}const Da="debugHeaders";function oL(e,t,n){var a;let r={id:(a=n.id)!=null?a:t.id,column:t,index:n.index,isPlaceholder:!!n.isPlaceholder,placeholderId:n.placeholderId,depth:n.depth,subHeaders:[],colSpan:0,rowSpan:0,headerGroup:null,getLeafHeaders:()=>{const i=[],c=d=>{d.subHeaders&&d.subHeaders.length&&d.subHeaders.map(c),i.push(d)};return c(r),i},getContext:()=>({table:e,header:r,column:t})};return e._features.forEach(i=>{i.createHeader==null||i.createHeader(r,e)}),r}const Ffs={createTable:e=>{e.getHeaderGroups=at(()=>[e.getAllColumns(),e.getVisibleLeafColumns(),e.getState().columnPinning.left,e.getState().columnPinning.right],(t,n,a,s)=>{var r,i;const c=(r=a?.map(p=>n.find(y=>
vendor: 46,580 bytes, line 879
879y.id===p)).filter(Boolean))!=null?r:[],d=(i=s?.map(p=>n.find(y=>y.id===p)).filter(Boolean))!=null?i:[],m=n.filter(p=>!(a!=null&&a.includes(p.id))&&!(s!=null&&s.includes(p.id)));return gb(t,[...c,...m,...d],e)},ot(e.options,Da)),e.getCenterHeaderGroups=at(()=>[e.getAllColumns(),e.getVisibleLeafColumns(),e.getState().columnPinning.left,e.getState().columnPinning.right],(t,n,a,s)=>(n=n.filter(r=>!(a!=null&&a.includes(r.id))&&!(s!=null&&s.includes(r.id))),gb(t,n,e,"center")),ot(e.options,Da)),e.getLeftHeaderGroups=at(()=>[e.getAllColumns(),e.getVisibleLeafColumns(),e.getState().columnPinning.left],(t,n,a)=>{var s;const r=(s=a?.map(i=>n.find(c=>c.id===i)).filter(Boolean))!=null?s:[];return gb(t,r,e,"left")},ot(e.options,Da)),e.getRightHeaderGroups=at(()=>[e.getAllColumns(),e.getVisibleLeafColumns(),e.getState().columnPinning.right],(t,n,a)=>{var s;const r=(s=a?.map(i=>n.find(c=>c.id===i)).filter(Boolean))!=null?s:[];return gb(t,r,e,"right")},ot(e.options,Da)),e.getFooterGroups=at(()=>[e.getHeaderGroups()],t=>[...t].reverse(),ot(e.options,Da)),e.getLeftFooterGroups=at(()=>[e.getLeftHeaderGroups()],t=>[...t].reverse(),ot(e.options,Da)),e.getCenterFooterGroups=at(()=>[e.getCenterHeaderGroups()],t=>[...t].reverse(),ot(e.options,Da)),e.getRightFooterGroups=at(()=>[e.getRightHeaderGroups()],t=>[...t].reverse(),ot(e.options,Da)),e.getFlatHeaders=at(()=>[e.getHeaderGroups()],t=>t.map(n=>n.headers).flat(),ot(e.options,Da)),e.getLeftFlatHeaders=at(()=>[e.getLeftHeaderGroups()],t=>t.map(n=>n.headers).flat(),ot(e.options,Da)),e.getCenterFlatHeaders=at(()=>[e.getCenterHeaderGroups()],t=>t.map(n=>n.headers).flat(),ot(e.options,Da)),e.getRightFlatHeaders=at(()=>[e.getRightHeaderGroups()],t=>t.map(n=>n.headers).flat(),ot(e.options,Da)),e.getCenterLeafHeaders=at(()=>[e.getCenterFlatHeaders()],t=>t.filter(n=>{var a;return!((a=n.subHeaders)!=null&&a.length)}),ot(e.options,Da)),e.getLeftLeafHeaders=at(()=>[e.getLeftFlatHeaders()],t=>t.filter(n=>{var a;return!((a=n.subHeaders)!=null&&a.length)}),ot(e.options,Da)),e.getRightLeafHeaders=at(()=>[e.getRightFlatHeaders()],t=>t.filter(n=>{var a;return!((a=n.subHeaders)!=null&&a.length)}),ot(e.options,Da)),e.getLeafHeaders=at(()=>[e.getLeftHeaderGroups(),e.getCenterHeaderGroups(),e.getRightHeaderGroups()],(t,n,a)=>{var s,r,i,c,d,m;return[...(s=(r=t[0])==null?void 0:r.headers)!=null?s:[],...(i=(c=n[0])==null?void 0:c.headers)!=null?i:[],...(d=(m=a[0])==null?void 0:m.headers)!=null?d:[]].map(f=>f.getLeafHeaders()).flat()},ot(e.options,Da))}};function gb(e,t,n,a){var s,r;let i=0;const c=function(y,v){v===void 0&&(v=1),i=Math.max(i,v),y.filter($=>$.getIsVisible()).forEach($=>{var x;(x=$.columns)!=null&&x.length&&c($.columns,v+1)},0)};c(e);let d=[];const m=(y,v)=>{const $={depth:v,id:[a,`${v}`].filter(Boolean).join("_"),headers:[]},x=[];y.forEach(w=>{const S=[...x].reverse()[0],k=w.column.depth===$.depth;let T,R=!1;if(k&&w.column.parent?T=w.column.parent:(T=w.column,R=!0),S&&S?.column===T)S.subHeaders.push(w);else{const _=oL(n,T,{id:[a,v,T.id,w?.id].filter(Boolean).join("_"),isPlaceholder:R,placeholderId:R?`${x.filter(P=>P.column===T).length}`:void 0,depth:v,index:x.length});_.subHeaders.push(w),x.push(_)}$.headers.push(w),w.headerGroup=$}),d.push($),v>0&&m(x,v-1)},f=t.map((y,v)=>oL(n,y,{depth:i,index:v}));m(f,i-1),d.reverse();const p=y=>y.filter($=>$.column.getIsVisible()).map($=>{let x=0,w=0,S=[0];$.subHeaders&&$.subHeaders.length?(S=[],p($.subHeaders).forEach(T=>{let{colSpan:R,rowSpan:_}=T;x+=R,S.push(_)})):x=1;const k=Math.min(...S);return w=w+k,$.colSpan=x,$.rowSpan=w,{colSpan:x,rowSpan:w}});return p((s=(r=d[0])==null?void 0:r.headers)!=null?s:[]),d}const zfs=(e,t,n,a,s,r,i)=>{let c={id:t,index:a,original:n,depth:s,parentId:i,_valuesCache:{},_uniqueValuesCache:{},getValue:d=>{if(c._valuesCache.hasOwnProperty(d))return c._valuesCache[d];const m=e.getColumn(d);if(m!=null&&m.accessorFn)return c._valuesCache[d]=m.accessorFn(c.original,a),c._valuesCache[d]},getUniqueValues:d=>{if(c._uniqueValuesCache.hasOwnProperty(d))return c._uniqueValuesCache[d];const m=e.getColumn(d);if(m!=null&&m.accessorFn)return m.columnDef.getUniqueValues?(c._uniqueValuesCache[d]=m.columnDef.getUniqueValues(c.original,a),c._uniqueValuesCache[d]):(c._uniqueValuesCache[d]=[c.getValue(d)],c._uniqueValuesCache[d])},renderValue:d=>{var m;return(m=c.getValue(d))!=null?m:e.options.renderFallbackValue},subRows:[],getLeafRows:()=>Lfs(c.subRows,d=>d.subRows),getParentRow:()=>c.parentId?e.getRow(c.parentId,!0):void 0,getParentRows:()=>{let d=[],m=c;for(;;){const f=m.getParentRow();if(!f)break;d.push(f),m=f}return d.reverse()},getAllCells:at(()=>[e.getAllLeafColumns()],d=>d.map(m=>Ufs(e,c,m,m.id)),ot(e.options,"debugRows")),_getAllCellsByColumnId:at(()=>[c.getAllCells()],d=>d.reduce((m,f)=>(m[f.column.id]=f,m),{}),ot(e.options,"debugRows"))};for(let d=0;d<e._features.length;d++){const m=e._features[d];m==null||m.createRow==null||m.createRow(c,e)}return c},qfs={createColumn:(e,t)=>{e._getFacetedRowModel=t.options.getFacetedRowModel&&t.options.getFacetedRowModel(t,e.id),e.getFacetedRowModel=()=>e._getFacetedRowModel?e._getFacetedRowModel():t.getPreFilteredRowModel(),e._getFacetedUniqueValues=t.options.getFacetedUniqueValues&&t.options.getFacetedUniqueValues(t,e.id),e.getFacetedUniqueValues=()=>e._getFacetedUniqueValues?e._getFacetedUniqueValues():new Map,e._getFacetedMinMaxValues=t.options.getFacetedMinMaxValues&&t.options.getFacetedMinMaxValues(t,e.id),e.getFacetedMinMaxValues=()=>{if(e._getFacetedMinMaxValues)return e._getFacetedMinMaxValues()}}},nK=(e,t,n)=>{var a,s;const r=n==null||(a=n.toString())==null?void 0:a.toLowerCase();return!!(!((s=e.getValue(t))==null||(s=s.toString())==null||(s=s.toLowerCase())==null)&&s.includes(r))};nK.autoRemove=e=>dr(e);const aK=(e,t,n)=>{var a;return!!(!((a=e.getValue(t))==null||(a=a.toString())==null)&&a.includes(n))};aK.autoRemove=e=>dr(e);const oK=(e,t,n)=>{var a;return((a=e.getValue(t))==null||(a=a.toString())==null?void 0:a.toLowerCase())===n?.toLowerCase()};oK.autoRemove=e=>dr(e);const sK=(e,t,n)=>{var a;return(a=e.getValue(t))==null?void 0:a.includes(n)};sK.autoRemove=e=>dr(e);const rK=(e,t,n)=>!n.some(a=>{var s;return!((s=e.getValue(t))!=null&&s.includes(a))});rK.autoRemove=e=>dr(e)||!(e!=null&&e.length);const iK=(e,t,n)=>n.some(a=>{var s;return(s=e.getValue(t))==null?void 0:s.includes(a)});iK.autoRemove=e=>dr(e)||!(e!=null&&e.length);const lK=(e,t,n)=>e.getValue(t)===n;lK.autoRemove=e=>dr(e);const cK=(e,t,n)=>e.getValue(t)==n;cK.autoRemove=e=>dr(e);const yj=(e,t,n)=>{let[a,s]=n;const r=e.getValue(t);return r>=a&&r<=s};yj.resolveFilterValue=e=>{let[t,n]=e,a=typeof t!="number"?parseFloat(t):t,s=typeof n!="number"?parseFloat(n):n,r=t===null||Number.isNaN(a)?-1/0:a,i=n===null||Number.isNaN(s)?1/0:s;if(r>i){const c=r;r=i,i=c}return[r,i]};yj.autoRemove=e=>dr(e)||dr(e[0])&&dr(e[1]);const Li={includesString:nK,includesStringSensitive:aK,equalsString:oK,arrIncludes:sK,arrIncludesAll:rK,arrIncludesSome:iK,equals:lK,weakEquals:cK,inNumberRange:yj};function dr(e){return e==null||e===""}const Hfs={getDefaultColumnDef:()=>({filterFn:"auto"}),getInitialState:e=>({columnFilters:[],...e}),getDefaultOptions:e=>({onColumnFiltersChange:ss("columnFilters",e),filterFromLeafRows:!1,maxLeafRowFilterDepth:100}),createColumn:(e,t)=>{e.getAutoFilterFn=()=>{const n=t.getCoreRowModel().flatRows[0],a=n?.getValue(e.id);return typeof a=="string"?Li.includesString:typeof a=="number"?Li.inNumberRange:typeof a=="boolean"||a!==null&&typeof a=="object"?Li.equals:Array.isArray(a)?Li.arrIncludes:Li.weakEquals},e.getFilterFn=()=>{var n,a;return zw(e.columnDef.filterFn)?e.columnDef.filterFn:e.columnDef.filterFn==="auto"?e.getAutoFilterFn():(n=(a=t.options.filterFns)==null?void 0:a[e.columnDef.filterFn])!=null?n:Li[e.columnDef.filterFn]},e.getCanFilter=()=>{var n,a,s;return((n=e.columnDef.enableColumnFilter)!=null?n:!0)&&((a=t.options.enableColumnFilters)!=null?a:!0)&&((s=t.options.enableFilters)!=null?s:!0)&&!!e.accessorFn},e.getIsFiltered=()=>e.getFilterIndex()>-1,e.getFilterValue=()=>{var n;return(n=t.getState().columnFilters)==null||(n=n.find(a=>a.id===e.id))==null?void 0:n.value},e.getFilterIndex=()=>{var n,a;return(n=(a=t.getState().columnFilters)==null?void 0:a.findIndex(s=>s.id===e.id))!=null?n:-1},e.setFilterValue=n=>{t.setColumnFilters(a=>{const s=e.getFilterFn(),r=a?.find(f=>f.id===e.id),i=gc(n,r?r.value:void 0);if(sL(s,i,e)){var c;return(c=a?.filter(f=>f.id!==e.id))!=null?c:[]}const d={id:e.id,value:i};if(r){var m;return(m=a?.map(f=>f.id===e.id?d:f))!=null?m:[]}return a!=null&&a.length?[...a,d]:[d]})}},createRow:(e,t)=>{e.columnFilters={},e.columnFiltersMeta={}},createTable:e=>{e.setColumnFilters=t=>{const n=e.getAllLeafColumns(),a=s=>{var r;return(r=gc(t,s))==null?void 0:r.filter(i=>{const c=n.find(d=>d.id===i.id);if(c){const d=c.getFilterFn();if(sL(d,i.value,c))return!1}return!0})};e.options.onColumnFiltersChange==null||e.options.onColumnFiltersChange(a)},e.resetColumnFilters=t=>{var n,a;e.setColumnFilters(t?[]:(n=(a=e.initialState)==null?void 0:a.columnFilters)!=null?n:[])},e.getPreFilteredRowModel=()=>e.getCoreRowModel(),e.getFilteredRowModel=()=>(!e._getFilteredRowModel&&e.options.getFilteredRowModel&&(e._getFilteredRowModel=e.options.getFilteredRowModel(e)),e.options.manualFiltering||!e._getFilteredRowModel?e.getPreFilteredRowModel():e._getFilteredRowModel())}};function sL(e,t,n){return(e&&e.autoRemove?e.autoRemove(t,n):!1)||typeof t>"u"||typeof t=="string"&&!t}const Vfs=(e,t,n)=>n.reduce((a,s)=>{const r=s.getValue(e);return a+(typeof r=="number"?r:0)},0),Kfs=(e,t,n)=>{let a;return n.forEach(s=>{const r=s.getValue(e);r!=null&&(a>r||a===void 0&&r>=r)&&(a=r)}),a},Gfs=(e,t,n)=>{let a;return n.forEach(s=>{const r=s.getValue(e);r!=null&&(a<r||a===void 0&&r>=r)&&(a=r)}),a},Wfs=(e,t,n)=>{let a,s;return n.forEach(r=>{const i=r.getValue(e);i!=null&&(a===void 0?i>=i&&(a=s=i):(a>i&&(a=i),s<i&&(s=i)))}),[a,s]},Yfs=(e,t)=>{let n=0,a=0;if(t.forEach(s=>{let r=s.getValue(e);r!=null&&(r=+r)>=r&&(++n,a+=r)}),n)return a/n},Qfs=(e,t)=>{if(!t.length)return;const n=t.map(r=>r.getValue(e));if(!Ofs(n))return;if(n.length===1)return n[0];const a=Math.floor(n.length/2),s=n.sort((r,i)=>r-i);return n.length%2!==0?s[a]:(s[a-1]+s[a])/2},Xfs=(e,t)=>Array.from(new Set(t.map(n=>n.getValue(e))).values()),Zfs=(e,t)=>new Set(t.map(n=>n.getValue(e))).size,Jfs=(e,t)=>t.length,uS={sum:Vfs,min:Kfs,max:Gfs,extent:Wfs,mean:Yfs,median:Qfs,unique:Xfs,uniqueCount:Zfs,count:Jfs},egs={getDefaultColumnDef:()=>({aggregatedCell:e=>{var t,n;return(t=(n=e.getValue())==null||n.toString==null?void 0:n.toString())!=null?t:null},aggregationFn:"auto"}),getInitialState:e=>({grouping:[],...e}),getDefaultOptions:e=>({onGroupingChange:ss("grouping",e),groupedColumnMode:"reorder"}),createColumn:(e,t)=>{e.toggleGrouping=()=>{t.setGrouping(n=>n!=null&&n.includes(e.id)?n.filter(a=>a!==e.id):[...n??[],e.id])},e.getCanGroup=()=>{var n,a;return((n=e.columnDef.enableGrouping)!=null?n:!0)&&((a=t.options.enableGrouping)!=null?a:!0)&&(!!e.accessorFn||!!e.columnDef.getGroupingValue)},e.getIsGrouped=()=>{var n;return(n=t.getState().grouping)==null?void 0:n.includes(e.id)},e.getGroupedIndex=()=>{var n;return(n=t.getState().grouping)==null?void 0:n.indexOf(e.id)},e.getToggleGroupingHandler=()=>{const n=e.getCanGroup();return()=>{n&&e.toggleGrouping()}},e.getAutoAggregationFn=()=>{const n=t.getCoreRowModel().flatRows[0],a=n?.getValue(e.id);if(typeof a=="number")return uS.sum;if(Object.prototype.toString.call(a)==="[object Date]")return uS.extent},e.getAggregationFn=()=>{var n,a;if(!e)throw new Error;return zw(e.columnDef.aggregationFn)?e.columnDef.aggregationFn:e.columnDef.aggregationFn==="auto"?e.getAutoAggregationFn():(n=(a=t.options.aggregationFns)==null?void 0:a[e.columnDef.aggregationFn])!=null?n:uS[e.columnDef.aggregationFn]}},createTable:e=>{e.setGrouping=t=>e.options.onGroupingChange==null?void 0:e.options.onGroupingChange(t),e.resetGrouping=t=>{var n,a;e.setGrouping(t?[]:(n=(a=e.initialState)==null?void 0:a.grouping)!=null?n:[])},e.getPreGroupedRowModel=()=>e.getFilteredRowModel(),e.getGroupedRowModel=()=>(!e._getGroupedRowModel&&e.options.getGroupedRowModel&&(e._getGroupedRowModel=e.options.getGroupedRowModel(e)),e.options.manualGrouping||!e._getGroupedRowModel?e.getPreGroupedRowModel():e._getGroupedRowModel())},createRow:(e,t)=>{e.getIsGrouped=()=>!!e.groupingColumnId,e.getGroupingValue=n=>{if(e._groupingValuesCache.hasOwnProperty(n))return e._groupingValuesCache[n];const a=t.getColumn(n);return a!=null&&a.columnDef.getGroupingValue?(e._groupingValuesCache[n]=a.columnDef.getGroupingValue(e.original),e._groupingValuesCache[n]):e.getValue(n)},e._groupingValuesCache={}},createCell:(e,t,n,a)=>{e.getIsGrouped=()=>t.getIsGrouped()&&t.id===n.groupingColumnId,e.getIsPlaceholder=()=>!e.getIsGrouped()&&t.getIsGrouped(),e.getIsAggregated=()=>{var s;return!e.getIsGrouped()&&!e.getIsPlaceholder()&&!!((s=n.subRows)!=null&&s.length)}}};function tgs(e,t,n){if(!(t!=null&&t.length)||!n)return e;const a=e.filter(r=>!t.includes(r.id));return n==="remove"?a:[...t.map(r=>e.find(i=>i.id===r)).filter(Boolean),...a]}const ngs={getInitialState:e=>({columnOrder:[],...e}),getDefaultOptions:e=>({onColumnOrderChange:ss("columnOrder",e)}),createColumn:(e,t)=>{e.getIndex=at(n=>[Ug(t,n)],n=>n.findIndex(a=>a.id===e.id),ot(t.options,"debugColumns")),e.getIsFirstColumn=n=>{var a;return((a=Ug(t,n)[0])==null?void 0:a.id)===e.id},e.getIsLastColumn=n=>{var a;const s=Ug(t,n);return((a=s[s.length-1])==null?void 0:a.id)===e.id}},createTable:e=>{e.setColumnOrder=t=>e.options.onColumnOrderChange==null?void 0:e.options.onColumnOrderChange(t),e.resetColumnOrder=t=>{var n;e.setColumnOrder(t?[]:(n=e.initialState.columnOrder)!=null?n:[])},e._getOrderColumnsFn=at(()=>[e.getState().columnOrder,e.getState().grouping,e.options.groupedColumnMode],(t,n,a)=>s=>{let r=[];if(!(t!=null&&t.length))r=s;else{const i=[...t],c=[...s];for(;c.length&&i.length;){const d=i.shift(),m=c.findIndex(f=>f.id===d);m>-1&&r.push(c.splice(m,1)[0])}r=[...r,...c]}return tgs(r,n,a)},ot(e.options,"debugTable"))}},mS=()=>({left:[],right:[]}),ags={getInitialState:e=>({columnPinning:mS(),...e}),getDefaultOptions:e=>({onColumnPinningChange:ss("columnPinning",e)}),createColumn:(e,t)=>{e.pin=n=>{const a=e.getLeafColumns().map(s=>s.id).filter(Boolean);t.setColumnPinning(s=>{var r,i;if(n==="right"){var c,d;return{left:((c=s?.left)!=null?c:[]).filter(p=>!(a!=null&&a.includes(p))),right:[...((d=s?.right)!=null?d:[]).filter(p=>!(a!=null&&a.includes(p))),...a]}}if(n==="left"){var m,f;return{left:[...((m=s?.left)!=null?m:[]).filter(p=>!(a!=null&&a.includes(p))),...a],right:((f=s?.right)!=null?f:[]).filter(p=>!(a!=null&&a.includes(p)))}}return{left:((r=s?.left)!=null?r:[]).filter(p=>!(a!=null&&a.includes(p))),right:((i=s?.right)!=null?i:[]).filter(p=>!(a!=null&&a.includes(p)))}})},e.getCanPin=()=>e.getLeafColumns().some(a=>{var s,r,i;return((s=a.columnDef.enablePinning)!=null?s:!0)&&((r=(i=t.options.enableColumnPinning)!=null?i:t.options.enablePinning)!=null?r:!0)}),e.getIsPinned=()=>{const n=e.getLeafColumns().map(c=>c.id),{left:a,right:s}=t.getState().columnPinning,r=n.some(c=>a?.includes(c)),i=n.some(c=>s?.includes(c));return r?"left":i?"right":!1},e.getPinnedIndex=()=>{var n,a;const s=e.getIsPinned();return s?(n=(a=t.getState().columnPinning)==null||(a=a[s])==null?void 0:a.indexOf(e.id))!=null?n:-1:0}},createRow:(e,t)=>{e.getCenterVisibleCells=at(()=>[e._getAllVisibleCells(),t.getState().columnPinning.left,t.getState().columnPinning.right],(n,a,s)=>{const r=[...a??[],...s??[]];return n.filter(i=>!r.includes(i.column.id))},ot(t.options,"debugRows")),e.getLeftVisibleCells=at(()=>[e._getAllVisibleCells(),t.getState().columnPinning.left],(n,a)=>(a??[]).map(r=>n.find(i=>i.column.id===r)).filter(Boolean).map(r=>({...r,position:"left"})),ot(t.options,"debugRows")),e.getRightVisibleCells=at(()=>[e._getAllVisibleCells(),t.getState().columnPinning.right],(n,a)=>(a??[]).map(r=>n.find(i=>i.column.id===r)).filter(Boolean).map(r=>({...r,position:"right"})),ot(t.options,"debugRows"))},createTable:e=>{e.setColumnPinning=t=>e.options.onColumnPinningChange==null?void 0:e.options.onColumnPinningChange(t),e.resetColumnPinning=t=>{var n,a;return e.setColumnPinning(t?mS():(n=(a=e.initialState)==null?void 0:a.columnPinning)!=null?n:mS())},e.getIsSomeColumnsPinned=t=>{var n;const a=e.getState().columnPinning;if(!t){var s,r;return!!((s=a.left)!=null&&s.length||(r=a.right)!=null&&r.length)}return!!((n=a[t])!=null&&n.length)},e.getLeftLeafColumns=at(()=>[e.getAllLeafColumns(),e.getState().columnPinning.left],(t,n)=>(n??[]).map(a=>t.find(s=>s.id===a)).filter(Boolean),ot(e.options,"debugColumns")),e.getRightLeafColumns=at(()=>[e.getAllLeafColumns(),e.getState().columnPinning.right],(t,n)=>(n??[]).map(a=>t.find(s=>s.id===a)).filter(Boolean),ot(e.options,"debugColumns")),e.getCenterLeafColumns=at(()=>[e.getAllLeafColumns(),e.getState().columnPinning.left,e.getState().columnPinning.right],(t,n,a)=>{const s=[...n??[],...a??[]];return t.filter(r=>!s.includes(r.id))},ot(e.options,"debugColumns"))}};function ogs(e){return e||(typeof document<"u"?document:null)}const hb={size:150,minSize:20,maxSize:Number.MAX_SAFE_INTEGER},pS=()=>({startOffset:null,startSize:null,deltaOffset:null,deltaPercentage:null,isResizingColumn:!1,columnSizingStart:[]}),sgs={getDefaultColumnDef:()=>hb,getInitialState:e=>({columnSizing:{},columnSizingInfo:pS(),...e}),getDefaultOptions:e=>({columnResizeMode:"onEnd",columnResizeDirection:"ltr",onColumnSizingChange:ss("columnSizing",e),onColumnSizingInfoChange:ss("columnSizingInfo",e)}),createColumn:(e,t)=>{e.getSize=()=>{var n,a,s;const r=t.getState().columnSizing[e.id];return Math.min(Math.max((n=e.columnDef.minSize)!=null?n:hb.minSize,(a=r??e.columnDef.size)!=null?a:hb.size),(s=e.columnDef.maxSize)!=null?s:hb.maxSize)},e.getStart=at(n=>[n,Ug(t,n),t.getState().columnSizing],(n,a)=>a.slice(0,e.getIndex(n)).reduce((s,r)=>s+r.getSize(),0),ot(t.options,"debugColumns")),e.getAfter=at(n=>[n,Ug(t,n),t.getState().columnSizing],(n,a)=>a.slice(e.getIndex(n)+1).reduce((s,r)=>s+r.getSize(),0),ot(t.options,"debugColumns")),e.resetSize=()=>{t.setColumnSizing(n=>{let{[e.id]:a,...s}=n;return s})},e.getCanResize=()=>{var n,a;return((n=e.columnDef.enableResizing)!=null?n:!0)&&((a=t.options.enableColumnResizing)!=null?a:!0)},e.getIsResizing=()=>t.getState().columnSizingInfo.isResizingColumn===e.id},createHeader:(e,t)=>{e.getSize=()=>{let n=0;const a=s=>{if(s.subHeaders.length)s.subHeaders.forEach(a);else{var r;n+=(r=s.column.getSize())!=null?r:0}};return a(e),n},e.getStart=()=>{if(e.index>0){const n=e.headerGroup.headers[e.index-1];return n.getStart()+n.getSize()}return 0},e.getResizeHandler=n=>{const a=t.getColumn(e.column.id),s=a?.getCanResize();return r=>{if(!a||!s||(r.persist==null||r.persist(),fS(r)&&r.touches&&r.touches.length>1))return;const i=e.getSize(),c=e?e.getLeafHeaders().map(S=>[S.column.id,S.column.getSize()]):[[a.id,a.getSize()]],d=fS(r)?Math.round(r.touches[0].clientX):r.clientX,m={},f=(S,k)=>{typeof k=="number"&&(t.setColumnSizingInfo(T=>{var R,_;const P=t.options.columnResizeDirection==="rtl"?-1:1,j=(k-((R=T?.startOffset)!=null?R:0))*P,N=Math.max(j/((_=T?.startSize)!=null?_:0),-.999999);return T.columnSizingStart.forEach(I=>{let[z,E]=I;m[z]=Math.round(Math.max(E+E*N,0)*100)/100}),{...T,deltaOffset:j,deltaPercentage:N}}),(t.options.columnResizeMode==="onChange"||S==="end")&&t.setColumnSizing(T=>({...T,...m})))},p=S=>f("move",S),y=S=>{f("end",S),t.setColumnSizingInfo(k=>({...k,isResizingColumn:!1,startOffset:null,startSize:null,deltaOffset:null,deltaPercentage:null,columnSizingStart:[]}))},v=ogs(n),$={moveHandler:S=>p(S.clientX),upHandler:S=>{v?.removeEventListener("mousemove",$.moveHandler),v?.removeEventListener("mouseup",$.upHandler),y(S.clientX)}},x={moveHandler:S=>(S.cancelable&&(S.preventDefault(),S.stopPropagation()),p(S.touches[0].clientX),!1),upHandler:S=>{var k;v?.removeEventListener("touchmove",x.moveHandler),v?.removeEventListener("touchend",x.upHandler),S.cancelable&&(S.preventDefault(),S.stopPropagation()),y((k=S.touches[0])==null?void 0:k.clientX)}},w=rgs()?{passive:!1}:!1;fS(r)?(v?.addEventListener("touchmove",x.moveHandler,w),v?.addEventListener("touchend",x.upHandler,w)):(v?.addEventListener("mousemove",$.moveHandler,w),v?.addEventListener("mouseup",$.upHandler,w)),t.setColumnSizingInfo(S=>({...S,startOffset:d,startSize:i,deltaOffset:0,deltaPercentage:0,columnSizingStart:c,isResizingColumn:a.id}))}}},createTable:e=>{e.setColumnSizing=t=>e.options.onColumnSizingChange==null?void 0:e.options.onColumnSizingChange(t),e.setColumnSizingInfo=t=>e.options.onColumnSizingInfoChange==null?void 0:e.options.onColumnSizingInfoChange(t),e.resetColumnSizing=t=>{var n;e.setColumnSizing(t?{}:(n=e.initialState.columnSizing)!=null?n:{})},e.resetHeaderSizeInfo=t=>{var n;e.setColumnSizingInfo(t?pS():(n=e.initialState.columnSizingInfo)!=null?n:pS())},e.getTotalSize=()=>{var t,n;return(t=(n=e.getHeaderGroups()[0])==null?void 0:n.headers.reduce((a,s)=>a+s.getSize(),0))!=null?t:0},e.getLeftTotalSize=()=>{var t,n;return(t=(n=e.getLeftHeaderGroups()[0])==null?void 0:n.headers.reduce((a,s)=>a+s.getSize(),0))!=null?t:0},e.getCenterTotalSize=()=>{var t,n;return(t=(n=e.getCenterHeaderGroups()[0])==null?void 0:n.headers.reduce((a,s)=>a+s.getSize(),0))!=null?t:0},e.getRightTotalSize=()=>{var t,n;return(t=(n=e.getRightHeaderGroups()[0])==null?void 0:n.headers.reduce((a,s)=>a+s.getSize(),0))!=null?t:0}}};let yb=null;function rgs(){if(typeof yb=="boolean")return yb;let e=!1;try{const t={get passive(){return e=!0,!1}},n=()=>{};window.addEventListener("test",n,t),window.removeEventListener("test",n)}catch{e=!1}return yb=e,yb}function fS(e){return e.type==="touchstart"}const igs={getInitialState:e=>({columnVisibility:{},...e}),getDefaultOptions:e=>({onColumnVisibilityChange:ss("columnVisibility",e)}),createColumn:(e,t)=>{e.toggleVisibility=n=>{e.getCanHide()&&t.setColumnVisibility(a=>({...a,[e.id]:n??!e.getIsVisible()}))},e.getIsVisible=()=>{var n,a;const s=e.columns;return(n=s.length?s.some(r=>r.getIsVisible()):(a=t.getState().columnVisibility)==null?void 0:a[e.id])!=null?n:!0},e.getCanHide=()=>{var n,a;return((n=e.columnDef.enableHiding)!=null?n:!0)&&((a=t.options.enableHiding)!=null?a:!0)},e.getToggleVisibilityHandler=()=>n=>{e.toggleVisibility==null||e.toggleVisibility(n.target.checked)}},createRow:(e,t)=>{e._getAllVisibleCells=at(()=>[e.getAllCells(),t.getState().columnVisibility],n=>n.filter(a=>a.column.getIsVisible()),ot(t.options,"debugRows")),e.getVisibleCells=at(()=>[e.getLeftVisibleCells(),e.getCenterVisibleCells(),e.getRightVisibleCells()],(n,a,s)=>[...n,...a,...s],ot(t.options,"debugRows"))},createTable:e=>{const t=(n,a)=>at(()=>[a(),a().filter(s=>s.getIsVisible()).map(s=>s.id).join("_")],s=>s.filter(r=>r.getIsVisible==null?void 0:r.getIsVisible()),ot(e.options,"debugColumns"));e.getVisibleFlatColumns=t("getVisibleFlatColumns",()=>e.getAllFlatColumns()),e.getVisibleLeafColumns=t("getVisibleLeafColumns",()=>e.getAllLeafColumns()),e.getLeftVisibleLeafColumns=t("getLeftVisibleLeafColumns",()=>e.getLeftLeafColumns()),e.getRightVisibleLeafColumns=t("getRightVisibleLeafColumns",()=>e.getRightLeafColumns()),e.getCenterVisibleLeafColumns=t("getCenterVisibleLeafColumns",()=>e.getCenterLeafColumns()),e.setColumnVisibility=n=>e.options.onColumnVisibilityChange==null?void 0:e.options.onColumnVisibilityChange(n),e.resetColumnVisibility=n=>{var a;e.setColumnVisibility(n?{}:(a=e.initialState.columnVisibility)!=null?a:{})},e.toggleAllColumnsVisible=n=>{var a;n=(a=n)!=null?a:!e.getIsAllColumnsVisible(),e.setColumnVisibility(e.getAllLeafColumns().reduce((s,r)=>({...s,[r.id]:n||!(r.getCanHide!=null&&r.getCanHide())}),{}))},e.getIsAllColumnsVisible=()=>!e.getAllLeafColumns().some(n=>!(n.getIsVisible!=null&&n.getIsVisible())),e.getIsSomeColumnsVisible=()=>e.getAllLeafColumns().some(n=>n.getIsVisible==null?void 0:n.getIsVisible()),e.getToggleAllColumnsVisibilityHandler=()=>n=>{var a;e.toggleAllColumnsVisible((a=n.target)==null?void 0:a.checked)}}};function Ug(e,t){return t?t==="center"?e.getCenterVisibleLeafColumns():t==="left"?e.getLeftVisibleLeafColumns():e.getRightVisibleLeafColumns():e.getVisibleLeafColumns()}const lgs={createTable:e=>{e._getGlobalFacetedRowModel=e.options.getFacetedRowModel&&e.options.getFacetedRowModel(e,"__global__"),e.getGlobalFacetedRowModel=()=>e.options.manualFiltering||!e._getGlobalFacetedRowModel?e.getPreFilteredRowModel():e._getGlobalFacetedRowModel(),e._getGlobalFacetedUniqueValues=e.options.getFacetedUniqueValues&&e.options.getFacetedUniqueValues(e,"__global__"),e.getGlobalFacetedUniqueValues=()=>e._getGlobalFacetedUniqueValues?e._getGlobalFacetedUniqueValues():new Map,e._getGlobalFacetedMinMaxValues=e.options.getFacetedMinMaxValues&&e.options.getFacetedMinMaxValues(e,"__global__"),e.getGlobalFacetedMinMaxValues=()=>{if(e._getGlobalFacetedMinMaxValues)return e._getGlobalFacetedMinMaxValues()}}},cgs={getInitialState:e=>({globalFilter:void 0,...e}),getDefaultOptions:e=>({onGlobalFilterChange:ss("globalFilter",e),globalFilterFn:"auto",getColumnCanGlobalFilter:t=>{var n;const a=(n=e.getCoreRowModel().flatRows[0])==null||(n=n._getAllCellsByColumnId()[t.id])==null?void 0:n.getValue();return typeof a=="string"||typeof a=="number"}}),createColumn:(e,t)=>{e.getCanGlobalFilter=()=>{var n,a,s,r;return((n=e.columnDef.enableGlobalFilter)!=null?n:!0)&&((a=t.options.enableGlobalFilter)!=null?a:!0)&&((s=t.options.enableFilters)!=null?s:!0)&&((r=t.options.getColumnCanGlobalFilter==null?void 0:t.options.getColumnCanGlobalFilter(e))!=null?r:!0)&&!!e.accessorFn}},createTable:e=>{e.getGlobalAutoFilterFn=()=>Li.includesString,e.getGlobalFilterFn=()=>{var t,n;const{globalFilterFn:a}=e.options;return zw(a)?a:a==="auto"?e.getGlobalAutoFilterFn():(t=(n=e.options.filterFns)==null?void 0:n[a])!=null?t:Li[a]},e.setGlobalFilter=t=>{e.options.onGlobalFilterChange==null||e.options.onGlobalFilterChange(t)},e.resetGlobalFilter=t=>{e.setGlobalFilter(t?void 0:e.initialState.globalFilter)}}},dgs={getInitialState:e=>({expanded:{},...e}),getDefaultOptions:e=>({onExpandedChange:ss("expanded",e),paginateExpandedRows:!0}),createTable:e=>{let t=!1,n=!1;e._autoResetExpanded=()=>{var a,s;if(!t){e._queue(()=>{t=!0});return}if((a=(s=e.options.autoResetAll)!=null?s:e.options.autoResetExpanded)!=null?a:!e.options.manualExpanding){if(n)return;n=!0,e._queue(()=>{e.resetExpanded(),n=!1})}},e.setExpanded=a=>e.options.onExpandedChange==null?void 0:e.options.onExpandedChange(a),e.toggleAllRowsExpanded=a=>{a??!e.getIsAllRowsExpanded()?e.setExpanded(!0):e.setExpanded({})},e.resetExpanded=a=>{var s,r;e.setExpanded(a?{}:(s=(r=e.initialState)==null?void 0:r.expanded)!=null?s:{})},e.getCanSomeRowsExpand=()=>e.getPrePaginationRowModel().flatRows.some(a=>a.getCanExpand()),e.getToggleAllRowsExpandedHandler=()=>a=>{a.persist==null||a.persist(),e.toggleAllRowsExpanded()},e.getIsSomeRowsExpanded=()=>{const a=e.getState().expanded;return a===!0||Object.values(a).some(Boolean)},e.getIsAllRowsExpanded=()=>{const a=e.getState().expanded;return typeof a=="boolean"?a===!0:!(!Object.keys(a).length||e.getRowModel().flatRows.some(s=>!s.getIsExpanded()))},e.getExpandedDepth=()=>{let a=0;return(e.getState().expanded===!0?Object.keys(e.getRowModel().rowsById):Object.keys(e.getState().expanded)).forEach(r=>{const i=r.split(".");a=Math.max(a,i.length)}),a},e.getPreExpandedRowModel=()=>e.getSortedRowModel(),e.getExpandedRowModel=()=>(!e._getExpandedRowModel&&e.options.getExpandedRowModel&&(e._getExpandedRowModel=e.options.getExpandedRowModel(e)),e.options.manualExpanding||!e._getExpandedRowModel?e.getPreExpandedRowModel():e._getExpandedRowModel())},createRow:(e,t)=>{e.toggleExpanded=n=>{t.setExpanded(a=>{var s;const r=a===!0?!0:!!(a!=null&&a[e.id]);let i={};if(a===!0?Object.keys(t.getRowModel().rowsById).forEach(c=>{i[c]=!0}):i=a,n=(s=n)!=null?s:!r,!r&&n)return{...i,[e.id]:!0};if(r&&!n){const{[e.id]:c,...d}=i;return d}return a})},e.getIsExpanded=()=>{var n;const a=t.getState().expanded;return!!((n=t.options.getIsRowExpanded==null?void 0:t.options.getIsRowExpanded(e))!=null?n:a===!0||a?.[e.id])},e.getCanExpand=()=>{var n,a,s;return(n=t.options.getRowCanExpand==null?void 0:t.options.getRowCanExpand(e))!=null?n:((a=t.options.enableExpanding)!=null?a:!0)&&!!((s=e.subRows)!=null&&s.length)},e.getIsAllParentsExpanded=()=>{let n=!0,a=e;for(;n&&a.parentId;)a=t.getRow(a.parentId,!0),n=a.getIsExpanded();return n},e.getToggleExpandedHandler=()=>{const n=e.getCanExpand();return()=>{n&&e.toggleExpanded()}}}},TR=0,RR=10,gS=()=>({pageIndex:TR,pageSize:RR}),ugs={getInitialState:e=>({...e,pagination:{...gS(),...e?.pagination}}),getDefaultOptions:e=>({onPaginationChange:ss("pagination",e)}),createTable:e=>{let t=!1,n=!1;e._autoResetPageIndex=()=>{var a,s;if(!t){e._queue(()=>{t=!0});return}if((a=(s=e.options.autoResetAll)!=null?s:e.options.autoResetPageIndex)!=null?a:!e.options.manualPagination){if(n)return;n=!0,e._queue(()=>{e.resetPageIndex(),n=!1})}},e.setPagination=a=>{const s=r=>gc(a,r);return e.options.onPaginationChange==null?void 0:e.options.onPaginationChange(s)},e.resetPagination=a=>{var s;e.setPagination(a?gS():(s=e.initialState.pagination)!=null?s:gS())},e.setPageIndex=a=>{e.setPagination(s=>{let r=gc(a,s.pageIndex);const i=typeof e.options.pageCount>"u"||e.options.pageCount===-1?Number.MAX_SAFE_INTEGER:e.options.pageCount-1;return r=Math.max(0,Math.min(r,i)),{...s,pageIndex:r}})},e.resetPageIndex=a=>{var s,r;e.setPageIndex(a?TR:(s=(r=e.initialState)==null||(r=r.pagination)==null?void 0:r.pageIndex)!=null?s:TR)},e.resetPageSize=a=>{var s,r;e.setPageSize(a?RR:(s=(r=e.initialState)==null||(r=r.pagination)==null?void 0:r.pageSize)!=null?s:RR)},e.setPageSize=a=>{e.setPagination(s=>{const r=Math.max(1,gc(a,s.pageSize)),i=s.pageSize*s.pageIndex,c=Math.floor(i/r);return{...s,pageIndex:c,pageSize:r}})},e.setPageCount=a=>e.setPagination(s=>{var r;let i=gc(a,(r=e.options.pageCount)!=null?r:-1);return typeof i=="number"&&(i=Math.max(-1,i)),{...s,pageCount:i}}),e.getPageOptions=at(()=>[e.getPageCount()],a=>{let s=[];return a&&a>0&&(s=[...new Array(a)].fill(null).map((r,i)=>i)),s},ot(e.options,"debugTable")),e.getCanPreviousPage=()=>e.getState().pagination.pageIndex>0,e.getCanNextPage=()=>{const{pageIndex:a}=e.getState().pagination,s=e.getPageCount();return s===-1?!0:s===0?!1:a<s-1},e.previousPage=()=>e.setPageIndex(a=>a-1),e.nextPage=()=>e.setPageIndex(a=>a+1),e.firstPage=()=>e.setPageIndex(0),e.lastPage=()=>e.setPageIndex(e.getPageCount()-1),e.getPrePaginationRowModel=()=>e.getExpandedRowModel(),e.getPaginationRowModel=()=>(!e._getPaginationRowModel&&e.options.getPaginationRowModel&&(e._getPaginationRowModel=e.options.getPaginationRowModel(e)),e.options.manualPagination||!e._getPaginationRowModel?e.getPrePaginationRowModel():e._getPaginationRowModel()),e.getPageCount=()=>{var a;return(a=e.options.pageCount)!=null?a:Math.ceil(e.getRowCount()/e.getState().pagination.pageSize)},e.getRowCount=()=>{var a;return(a=e.options.rowCount)!=null?a:e.getPrePaginationRowModel().rows.length}}},hS=()=>({top:[],bottom:[]}),mgs={getInitialState:e=>({rowPinning:hS(),...e}),getDefaultOptions:e=>({onRowPinningChange:ss("rowPinning",e)}),createRow:(e,t)=>{e.pin=(n,a,s)=>{const r=a?e.getLeafRows().map(d=>{let{id:m}=d;return m}):[],i=s?e.getParentRows().map(d=>{let{id:m}=d;return m}):[],c=new Set([...i,e.id,...r]);t.setRowPinning(d=>{var m,f;if(n==="bottom"){var p,y;return{top:((p=d?.top)!=null?p:[]).filter(x=>!(c!=null&&c.has(x))),bottom:[...((y=d?.bottom)!=null?y:[]).filter(x=>!(c!=null&&c.has(x))),...Array.from(c)]}}if(n==="top"){var v,$;return{top:[...((v=d?.top)!=null?v:[]).filter(x=>!(c!=null&&c.has(x))),...Array.from(c)],bottom:(($=d?.bottom)!=null?$:[]).filter(x=>!(c!=null&&c.has(x)))}}return{top:((m=d?.top)!=null?m:[]).filter(x=>!(c!=null&&c.has(x))),bottom:((f=d?.bottom)!=null?f:[]).filter(x=>!(c!=null&&c.has(x)))}})},e.getCanPin=()=>{var n;const{enableRowPinning:a,enablePinning:s}=t.options;return typeof a=="function"?a(e):(n=a??s)!=null?n:!0},e.getIsPinned=()=>{const n=[e.id],{top:a,bottom:s}=t.getState().rowPinning,r=n.some(c=>a?.includes(c)),i=n.some(c=>s?.includes(c));return r?"top":i?"bottom":!1},e.getPinnedIndex=()=>{var n,a;const s=e.getIsPinned();if(!s)return-1;const r=(n=s==="top"?t.getTopRows():t.getBottomRows())==null?void 0:n.map(i=>{let{id:c}=i;return c});return(a=r?.indexOf(e.id))!=null?a:-1}},createTable:e=>{e.setRowPinning=t=>e.options.onRowPinningChange==null?void 0:e.options.onRowPinningChange(t),e.resetRowPinning=t=>{var n,a;return e.setRowPinning(t?hS():(n=(a=e.initialState)==null?void 0:a.rowPinning)!=null?n:hS())},e.getIsSomeRowsPinned=t=>{var n;const a=e.getState().rowPinning;if(!t){var s,r;return!!((s=a.top)!=null&&s.length||(r=a.bottom)!=null&&r.length)}return!!((n=a[t])!=null&&n.length)},e._getPinnedRows=(t,n,a)=>{var s;return((s=e.options.keepPinnedRows)==null||s?(n??[]).map(i=>{const c=e.getRow(i,!0);return c.getIsAllParentsExpanded()?c:null}):(n??[]).map(i=>t.find(c=>c.id===i))).filter(Boolean).map(i=>({...i,position:a}))},e.getTopRows=at(()=>[e.getRowModel().rows,e.getState().rowPinning.top],(t,n)=>e._getPinnedRows(t,n,"top"),ot(e.options,"debugRows")),e.getBottomRows=at(()=>[e.getRowModel().rows,e.getState().rowPinning.bottom],(t,n)=>e._getPinnedRows(t,n,"bottom"),ot(e.options,"debugRows")),e.getCenterRows=at(()=>[e.getRowModel().rows,e.getState().rowPinning.top,e.getState().rowPinning.bottom],(t,n,a)=>{const s=new Set([...n??[],...a??[]]);return t.filter(r=>!s.has(r.id))},ot(e.options,"debugRows"))}},pgs={getInitialState:e=>({rowSelection:{},...e}),getDefaultOptions:e=>({onRowSelectionChange:ss("rowSelection",e),enableRowSelection:!0,enableMultiRowSelection:!0,enableSubRowSelection:!0}),createTable:e=>{e.setRowSelection=t=>e.options.onRowSelectionChange==null?void 0:e.options.onRowSelectionChange(t),e.resetRowSelection=t=>{var n;return e.setRowSelection(t?{}:(n=e.initialState.rowSelection)!=null?n:{})},e.toggleAllRowsSelected=t=>{e.setRowSelection(n=>{t=typeof t<"u"?t:!e.getIsAllRowsSelected();const a={...n},s=e.getPreGroupedRowModel().flatRows;return t?s.forEach(r=>{r.getCanSelect()&&(a[r.id]=!0)}):s.forEach(r=>{delete a[r.id]}),a})},e.toggleAllPageRowsSelected=t=>e.setRowSelection(n=>{const a=typeof t<"u"?t:!e.getIsAllPageRowsSelected(),s={...n};return e.getRowModel().rows.forEach(r=>{PR(s,r.id,a,!0,e)}),s}),e.getPreSelectedRowModel=()=>e.getCoreRowModel(),e.getSelectedRowModel=at(()=>[e.getState().rowSelection,e.getCoreRowModel()],(t,n)=>Object.keys(t).length?yS(e,n):{rows:[],flatRows:[],rowsById:{}},ot(e.options,"debugTable")),e.getFilteredSelectedRowModel=at(()=>[e.getState().rowSelection,e.getFilteredRowModel()],(t,n)=>Object.keys(t).length?yS(e,n):{rows:[],flatRows:[],rowsById:{}},ot(e.options,"debugTable")),e.getGroupedSelectedRowModel=at(()=>[e.getState().rowSelection,e.getSortedRowModel()],(t,n)=>Object.keys(t).length?yS(e,n):{rows:[],flatRows:[],rowsById:{}},ot(e.options,"debugTable")),e.getIsAllRowsSelected=()=>{const t=e.getFilteredRowModel().flatRows,{rowSelection:n}=e.getState();let a=!!(t.length&&Object.keys(n).length);return a&&t.some(s=>s.getCanSelect()&&!n[s.id])&&(a=!1),a},e.getIsAllPageRowsSelected=()=>{const t=e.getPaginationRowModel().flatRows.filter(s=>s.getCanSelect()),{rowSelection:n}=e.getState();let a=!!t.length;return a&&t.some(s=>!n[s.id])&&(a=!1),a},e.getIsSomeRowsSelected=()=>{var t;const n=Object.keys((t=e.getState().rowSelection)!=null?t:{}).length;return n>0&&n<e.getFilteredRowModel().flatRows.length},e.getIsSomePageRowsSelected=()=>{const t=e.getPaginationRowModel().flatRows;return e.getIsAllPageRowsSelected()?!1:t.filter(n=>n.getCanSelect()).some(n=>n.getIsSelected()||n.getIsSomeSelected())},e.getToggleAllRowsSelectedHandler=()=>t=>{e.toggleAllRowsSelected(t.target.checked)},e.getToggleAllPageRowsSelectedHandler=()=>t=>{e.toggleAllPageRowsSelected(t.target.checked)}},createRow:(e,t)=>{e.toggleSelected=(n,a)=>{const s=e.getIsSelected();t.setRowSelection(r=>{var i;if(n=typeof n<"u"?n:!s,e.getCanSelect()&&s===n)return r;const c={...r};return PR(c,e.id,n,(i=a?.selectChildren)!=null?i:!0,t),c})},e.getIsSelected=()=>{const{rowSelection:n}=t.getState();return vj(e,n)},e.getIsSomeSelected=()=>{const{rowSelection:n}=t.getState();return _R(e,n)==="some"},e.getIsAllSubRowsSelected=()=>{const{rowSelection:n}=t.getState();return _R(e,n)==="all"},e.getCanSelect=()=>{var n;return typeof t.options.enableRowSelection=="function"?t.options.enableRowSelection(e):(n=t.options.enableRowSelection)!=null?n:!0},e.getCanSelectSubRows=()=>{var n;return typeof t.options.enableSubRowSelection=="function"?t.options.enableSubRowSelection(e):(n=t.options.enableSubRowSelection)!=null?n:!0},e.getCanMultiSelect=()=>{var n;return typeof t.options.enableMultiRowSelection=="function"?t.options.enableMultiRowSelection(e):(n=t.options.enableMultiRowSelection)!=null?n:!0},e.getToggleSelectedHandler=()=>{const n=e.getCanSelect();return a=>{var s;n&&e.toggleSelected((s=a.target)==null?void 0:s.checked)}}}},PR=(e,t,n,a,s)=>{var r;const i=s.getRow(t,!0);n?(i.getCanMultiSelect()||Object.keys(e).forEach(c=>delete e[c]),i.getCanSelect()&&(e[t]=!0)):delete e[t],a&&(r=i.subRows)!=null&&r.length&&i.getCanSelectSubRows()&&i.subRows.forEach(c=>PR(e,c.id,n,a,s))};function yS(e,t){const n=e.getState().rowSelection,a=[],s={},r=function(i,c){return i.map(d=>{var m;const f=vj(d,n);if(f&&(a.push(d),s[d.id]=d),(m=d.subRows)!=null&&m.length&&(d={...d,subRows:r(d.subRows)}),f)return d}).filter(Boolean)};return{rows:r(t.rows),flatRows:a,rowsById:s}}function vj(e,t){var n;return(n=t[e.id])!=null?n:!1}function _R(e,t,n){var a;if(!((a=e.subRows)!=null&&a.length))return!1;let s=!0,r=!1;return e.subRows.forEach(i=>{if(!(r&&!s)&&(i.getCanSelect()&&(vj(i,t)?r=!0:s=!1),i.subRows&&i.subRows.length)){const c=_R(i,t);c==="all"?r=!0:(c==="some"&&(r=!0),s=!1)}}),s?"all":r?"some":!1}const jR=/([0-9]+)/gm,fgs=(e,t,n)=>dK(Ac(e.getValue(n)).toLowerCase(),Ac(t.getValue(n)).toLowerCase()),ggs=(e,t,n)=>dK(Ac(e.getValue(n)),Ac(t.getValue(n))),hgs=(e,t,n)=>bj(Ac(e.getValue(n)).toLowerCase(),Ac(t.getValue(n)).toLowerCase()),ygs=(e,t,n)=>bj(Ac(e.getValue(n)),Ac(t.getValue(n))),vgs=(e,t,n)=>{const a=e.getValue(n),s=t.getValue(n);return a>s?1:a<s?-1:0},bgs=(e,t,n)=>bj(e.getValue(n),t.getValue(n));function bj(e,t){return e===t?0:e>t?1:-1}function Ac(e){return typeof e=="number"?isNaN(e)||e===1/0||e===-1/0?"":String(e):typeof e=="string"?e:""}function dK(e,t){const n=e.split(jR).filter(Boolean),a=t.split(jR).filter(Boolean);for(;n.length&&a.length;){const s=n.shift(),r=a.shift(),i=parseInt(s,10),c=parseInt(r,10),d=[i,c].sort();if(isNaN(d[0])){if(s>r)return 1;if(r>s)return-1;continue}if(isNaN(d[1]))return isNaN(i)?-1:1;if(i>c)return 1;if(c>i)return-1}return n.length-a.length}const ng={alphanumeric:fgs,alphanumericCaseSensitive:ggs,text:hgs,textCaseSensitive:ygs,datetime:vgs,basic:bgs},xgs={getInitialState:e=>({sorting:[],...e}),getDefaultColumnDef:()=>({sortingFn:"auto",sortUndefined:1}),getDefaultOptions:e=>({onSortingChange:ss("sorting",e),isMultiSortEvent:t=>t.shiftKey}),createColumn:(e,t)=>{e.getAutoSortingFn=()=>{const n=t.getFilteredRowModel().flatRows.slice(10);let a=!1;for(const s of n){const r=s?.getValue(e.id);if(Object.prototype.toString.call(r)==="[object Date]")return ng.datetime;if(typeof r=="string"&&(a=!0,r.split(jR).length>1))return ng.alphanumeric}return a?ng.text:ng.basic},e.getAutoSortDir=()=>{const n=t.getFilteredRowModel().flatRows[0];return typeof n?.getValue(e.id)=="string"?"asc":"desc"},e.getSortingFn=()=>{var n,a;if(!e)throw new Error;return zw(e.columnDef.sortingFn)?e.columnDef.sortingFn:e.columnDef.sortingFn==="auto"?e.getAutoSortingFn():(n=(a=t.options.sortingFns)==null?void 0:a[e.columnDef.sortingFn])!=null?n:ng[e.columnDef.sortingFn]},e.toggleSorting=(n,a)=>{const s=e.getNextSortingOrder(),r=typeof n<"u"&&n!==null;t.setSorting(i=>{const c=i?.find(v=>v.id===e.id),d=i?.findIndex(v=>v.id===e.id);let m=[],f,p=r?n:s==="desc";if(i!=null&&i.length&&e.getCanMultiSort()&&a?c?f="toggle":f="add":i!=null&&i.length&&d!==i.length-1?f="replace":c?f="toggle":f="replace",f==="toggle"&&(r||s||(f="remove")),f==="add"){var y;m=[...i,{id:e.id,desc:p}],m.splice(0,m.length-((y=t.options.maxMultiSortColCount)!=null?y:Number.MAX_SAFE_INTEGER))}else f==="toggle"?m=i.map(v=>v.id===e.id?{...v,desc:p}:v):f==="remove"?m=i.filter(v=>v.id!==e.id):m=[{id:e.id,desc:p}];return m})},e.getFirstSortDir=()=>{var n,a;return((n=(a=e.columnDef.sortDescFirst)!=null?a:t.options.sortDescFirst)!=null?n:e.getAutoSortDir()==="desc")?"desc":"asc"},e.getNextSortingOrder=n=>{var a,s;const r=e.getFirstSortDir(),i=e.getIsSorted();return i?i!==r&&((a=t.options.enableSortingRemoval)==null||a)&&(!(n&&(s=t.options.enableMultiRemove)!=null)||s)?!1:i==="desc"?"asc":"desc":r},e.getCanSort=()=>{var n,a;return((n=e.columnDef.enableSorting)!=null?n:!0)&&((a=t.options.enableSorting)!=null?a:!0)&&!!e.accessorFn},e.getCanMultiSort=()=>{var n,a;return(n=(a=e.columnDef.enableMultiSort)!=null?a:t.options.enableMultiSort)!=null?n:!!e.accessorFn},e.getIsSorted=()=>{var n;const a=(n=t.getState().sorting)==null?void 0:n.find(s=>s.id===e.id);return a?a.desc?"desc":"asc":!1},e.getSortIndex=()=>{var n,a;return(n=(a=t.getState().sorting)==null?void 0:a.findIndex(s=>s.id===e.id))!=null?n:-1},e.clearSorting=()=>{t.setSorting(n=>n!=null&&n.length?n.filter(a=>a.id!==e.id):[])},e.getToggleSortingHandler=()=>{const n=e.getCanSort();return a=>{n&&(a.persist==null||a.persist(),e.toggleSorting==null||e.toggleSorting(void 0,e.getCanMultiSort()?t.options.isMultiSortEvent==null?void 0:t.options.isMultiSortEvent(a):!1))}}},createTable:e=>{e.setSorting=t=>e.options.onSortingChange==null?void 0:e.options.onSortingChange(t),e.resetSorting=t=>{var n,a;e.setSorting(t?[]:(n=(a=e.initialState)==null?void 0:a.sorting)!=null?n:[])},e.getPreSortedRowModel=()=>e.getGroupedRowModel(),e.getSortedRowModel=()=>(!e._getSortedRowModel&&e.options.getSortedRowModel&&(e._getSortedRowModel=e.options.getSortedRowModel(e)),e.options.manualSorting||!e._getSortedRowModel?e.getPreSortedRowModel():e._getSortedRowModel())}},$gs=[Ffs,igs,ngs,ags,qfs,Hfs,lgs,cgs,xgs,egs,dgs,ugs,mgs,pgs,sgs];function wgs(e){var t,n;const a=[...$gs,...(t=e._features)!=null?t:[]];let s={_features:a};const r=s._features.reduce((y,v)=>Object.assign(y,v.getDefaultOptions==null?void 0:v.getDefaultOptions(s)),{}),i=y=>s.options.mergeOptions?s.options.mergeOptions(r,y):{...r,...y};let d={...{},...(n=e.initialState)!=null?n:{}};s._features.forEach(y=>{var v;d=(v=y.getInitialState==null?void 0:y.getInitialState(d))!=null?v:d});const m=[];let f=!1;const p={_features:a,options:{...r,...e},initialState:d,_queue:y=>{m.push(y),f||(f=!0,Promise.resolve().then(()=>{for(;m.length;)m.shift()();f=!1}).catch(v=>setTimeout(()=>{throw v})))},reset:()=>{s.setState(s.initialState)},setOptions:y=>{const v=gc(y,s.options);s.options=i(v)},getState:()=>s.options.state,setState:y=>{s.options.onStateChange==null||s.options.onStateChange(y)},_getRowId:(y,v,$)=>{var x;return(x=s.options.getRowId==null?void 0:s.options.getRowId(y,v,$))!=null?x:`${$?[$.id,v].join("."):v}`},getCoreRowModel:()=>(s._getCoreRowModel||(s._getCoreRowModel=s.options.getCoreRowModel(s)),s._getCoreRowModel()),getRowModel:()=>s.getPaginationRowModel(),getRow:(y,v)=>{let $=(v?s.getPrePaginationRowModel():s.getRowModel()).rowsById[y];if(!$&&($=s.getCoreRowModel().rowsById[y],!$))throw new Error;return $},_getDefaultColumnDef:at(()=>[s.options.defaultColumn],y=>{var v;return y=(v=y)!=null?v:{},{header:$=>{const x=$.header.column.columnDef;return x.accessorKey?x.accessorKey:x.accessorFn?x.id:null},cell:$=>{var x,w;return(x=(w=$.renderValue())==null||w.toString==null?void 0:w.toString())!=null?x:null},...s._features.reduce(($,x)=>Object.assign($,x.getDefaultColumnDef==null?void 0:x.getDefaultColumnDef()),{}),...y}},ot(e,"debugColumns")),_getColumnDefs:()=>s.options.columns,getAllColumns:at(()=>[s._getColumnDefs()],y=>{const v=function($,x,w){return w===void 0&&(w=0),$.map(S=>{const k=Bfs(s,S,w,x),T=S;return k.columns=T.columns?v(T.columns,k,w+1):[],k})};return v(y)},ot(e,"debugColumns")),getAllFlatColumns:at(()=>[s.getAllColumns()],y=>y.flatMap(v=>v.getFlatColumns()),ot(e,"debugColumns")),_getAllFlatColumnsById:at(()=>[s.getAllFlatColumns()],y=>y.reduce((v,$)=>(v[$.id]=$,v),{}),ot(e,"debugColumns")),getAllLeafColumns:at(()=>[s.getAllColumns(),s._getOrderColumnsFn()],(y,v)=>{let $=y.flatMap(x=>x.getLeafColumns());return v($)},ot(e,"debugColumns")),getColumn:y=>s._getAllFlatColumnsById()[y]};Object.assign(s,p);for(let y=0;y<s._features.length;y++){const v=s._features[y];v==null||v.createTable==null||v.createTable(s)}return s}function kgs(){return e=>at(()=>[e.options.data],t=>{const n={rows:[],flatRows:[],rowsById:{}},a=function(s,r,i){r===void 0&&(r=0);const c=[];for(let m=0;m<s.length;m++){const f=zfs(e,e._getRowId(s[m],m,i),s[m],m,r,void 0,i?.id);if(n.flatRows.push(f),n.rowsById[f.id]=f,c.push(f),e.options.getSubRows){var d;f.originalSubRows=e.options.getSubRows(s[m],m),(d=f.originalSubRows)!=null&&d.length&&(f.subRows=a(f.originalSubRows,r+1,f))}}return c};return n.rows=a(t),n},ot(e.options,"debugTable","getRowModel",()=>e._autoResetPageIndex()))}function Cgs(e){const t=[],n=a=>{var s;t.push(a),(s=a.subRows)!=null&&s.length&&a.getIsExpanded()&&a.subRows.forEach(n)};return e.rows.forEach(n),{rows:t,flatRows:e.flatRows,rowsById:e.rowsById}}function Sgs(e){return t=>at(()=>[t.getState().pagination,t.getPrePaginationRowModel(),t.options.paginateExpandedRows?void 0:t.getState().expanded],(n,a)=>{if(!a.rows.length)return a;const{pageSize:s,pageIndex:r}=n;let{rows:i,flatRows:c,rowsById:d}=a;const m=s*r,f=m+s;i=i.slice(m,f);let p;t.options.paginateExpandedRows?p={rows:i,flatRows:c,rowsById:d}:p=Cgs({rows:i,flatRows:c,rowsById:d}),p.flatRows=[];const y=v=>{p.flatRows.push(v),v.subRows.length&&v.subRows.forEach(y)};return p.rows.forEach(y),p},ot(t.options,"debugTable"))}function Ags(){return e=>at(()=>[e.getState().sorting,e.getPreSortedRowModel()],(t,n)=>{if(!n.rows.length||!(t!=null&&t.length))return n;const a=e.getState().sorting,s=[],r=a.filter(d=>{var m;return(m=e.getColumn(d.id))==null?void 0:m.getCanSort()}),i={};r.forEach(d=>{const m=e.getColumn(d.id);m&&(i[d.id]={sortUndefined:m.columnDef.sortUndefined,invertSorting:m.columnDef.invertSorting,sortingFn:m.getSortingFn()})});const c=d=>{const m=d.map(f=>({...f}));return m.sort((f,p)=>{for(let v=0;v<r.length;v+=1){var y;const $=r[v],x=i[$.id],w=x.sortUndefined,S=(y=$?.desc)!=null?y:!1;let k=0;if(w){const T=f.getValue($.id),R=p.getValue($.id),_=T===void 0,P=R===void 0;if(_||P){if(w==="first")return _?-1:1;
879if(w==="last")return _?1:-1;k=_&&P?0:_?w:-w}}if(k===0&&(k=x.sortingFn(f,p,$.id)),k!==0)return S&&(k*=-1),x.invertSorting&&(k*=-1),k}return f.index-p.index}),m.forEach(f=>{var p;s.push(f),(p=f.subRows)!=null&&p.length&&(f.subRows=c(f.subRows))}),m};return{rows:c(n.rows),flatRows:s,rowsById:n.rowsById}},ot(e.options,"debugTable","getSortedRowModel",()=>e._autoResetPageIndex()))}/**
880   * react-table
881   *
882   * Copyright (c) TanStack
883   *
884   * This source code is licensed under the MIT license found in the
885   * LICENSE.md file in the root directory of this source tree.
886   *
887   * @license MIT
888   */function Ad(e,t){return e?Tgs(e)?h.createElement(e,t):e:null}function Tgs(e){return Rgs(e)||typeof e=="function"||Pgs(e)}function Rgs(e){return typeof e=="function"&&(()=>{const t=Object.getPrototypeOf(e);return t.prototype&&t.prototype.isReactComponent})()}function Pgs(e){return typeof e=="object"&&typeof e.$$typeof=="symbol"&&["react.memo","react.forward_ref"].includes(e.$$typeof.description)}function _gs(e){const t={state:{},onStateChange:()=>{},renderFallbackValue:null,...e},[n]=h.useState(()=>({current:wgs(t)})),[a,s]=h.useState(()=>n.current.initialState);return n.current.setOptions(r=>({...r,...e,state:{...a,...e.state},onStateChange:i=>{s(i),e.onStateChange==null||e.onStateChange(i)}})),n.current}const jgs='a,button,input,select,textarea,summary,[role="button"],[role="link"],[role="menuitem"],[tabindex]:not([tabindex="-1"])';function eu(e){const{target:t,currentTarget:n}=e;if(!(t instanceof HTMLElement)||!(n instanceof HTMLElement))return!1;const a=t.closest(jgs);return!!a&&a!==n&&n.contains(a)}function Ngs(e,t){eu(e)||(e.key==="Enter"||e.key===" ")&&(e.preventDefault(),t())}function Dn({children:e,className:t,selected:n,onClick:a,activation:s="interactive"}){const r=!!(a&&s==="interactive");return o.jsx("article",{"data-selected":n,onClick:a?i=>{eu(i)||a()}:void 0,onKeyDown:r?i=>Ngs(i,a):void 0,role:r?"button":void 0,tabIndex:r?0:void 0,className:X("min-w-0 max-w-full overflow-hidden border-b border-[color:var(--border)] bg-[color:var(--card)] px-3 py-2 text-sm last:border-b-0",a&&"cursor-pointer transition-colors hover:bg-[color:var(--muted)]/50",r&&"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-[color:var(--ring)]",n&&"bg-[color:var(--primary)]/[0.04]",t),children:e})}function kr({title:e,meta:t,trailing:n,className:a,titleClassName:s,truncateTitle:r=!0}){return o.jsxs("div",{className:X("flex min-w-0 items-start justify-between gap-2",a),children:[o.jsxs("div",{className:"min-w-0",children:[o.jsx("div",{className:X("min-w-0 text-sm font-semibold",r?"truncate":"break-words",s),children:e}),t?o.jsx("div",{className:"mt-0.5 min-w-0 text-11 text-[color:var(--muted-foreground)]",children:t}):null]}),n?o.jsx("div",{className:"flex shrink-0 items-center gap-1",children:n}):null]})}function Ha({children:e,className:t}){return o.jsx("dl",{className:X("mt-1.5 grid grid-cols-2 gap-x-3 gap-y-1",t),children:e})}function Qe({label:e,children:t,align:n="left",className:a,truncate:s=!0}){return o.jsxs("div",{className:X("grid min-w-0 gap-0.5",n==="right"&&"text-right",a),children:[o.jsx("dt",{className:"text-11 font-semibold uppercase leading-4 text-[color:var(--muted-foreground)]",children:e}),o.jsx("dd",{className:X("min-w-0 text-xs",s?"truncate":"break-words",n==="right"&&"tabular-nums"),children:t})]})}function Cr({children:e,className:t}){return o.jsx("div",{className:X("flex min-w-0 max-w-full flex-wrap items-center justify-end gap-1.5",t),onClick:n=>n.stopPropagation(),onKeyDown:n=>n.stopPropagation(),children:e})}const Dgs={comfortable:"py-3",compact:"py-1.5"},vS=3;function NR({columns:e,data:t,loading:n=!1,error:a=null,emptyState:s,pagination:r,sorting:i,rowSelection:c,rowActions:d,onRowClick:m,isRowHighlighted:f,caption:p,density:y="comfortable",stickyFirstColumn:v=!0,stickyActionsColumn:$=!0,stickyHeader:x=!1,containerClassName:w,mobileCard:S,mobileRowAction:k,className:T}){const{t:R}=W(),_=h.useMemo(()=>{const E=[];return c&&E.push({id:"__select",header:({table:L})=>c.mode==="multi"?o.jsx(Zn,{"aria-label":R("dataTable.selectAllRows"),checked:L.getIsAllPageRowsSelected(),onChange:O=>L.toggleAllPageRowsSelected(O.target.checked)}):null,cell:({row:L})=>o.jsx(Zn,{"aria-label":R("dataTable.selectRow",{row:L.index+1}),checked:L.getIsSelected(),onChange:O=>{const V=O.target.checked;L.toggleSelected(V)}}),size:36,enableSorting:!1}),E.push(...e),d&&E.push({id:"__actions",header:"",cell:({row:L})=>d(L.original),size:80,enableSorting:!1}),E},[e,d,c]),P=_gs({data:t,columns:_,getCoreRowModel:kgs(),getSortedRowModel:Ags(),enableSorting:!!i,manualSorting:i?.mode==="server",...r?.mode!=="server"&&{getPaginationRowModel:Sgs()}
888,manualPagination:r?.mode==="server",pageCount:r?.pageCount,state:{...r?.pageIndex!==void 0&&{pagination:{pageIndex:r.pageIndex,pageSize:r.pageSize}},...i?.state!==void 0&&{sorting:i.state},...c?.state!==void 0&&{rowSelection:c.state}},...r&&{onPaginationChange:E=>{const L=typeof E=="function"?E({pageIndex:r.pageIndex??0,pageSize:r.pageSize}):E;r.onPageChange?.(L.pageIndex)}},...i?.onChange&&{onSortingChange:E=>{const L=typeof E=="function"?E(i.state??[]):E;i.onChange(L)}},onRowSelectionChange:c?E=>{const L=typeof E=="function"?E(c.state??{}):E,O=[];P.getRowModel().rows.forEach(V=>{L[V.id]&&O.push(V.original)}),c.onChange(O)}:void 0,...c?.getRowId&&{getRowId:c.getRowId},enableMultiRowSelection:c?.mode==="multi",initialState:{pagination:{pageSize:r?.pageSize??20,pageIndex:r?.pageIndex??0},...i?.defaultSorting&&{sorting:i.defaultSorting}}});if(a){const E=a instanceof Error?o.jsx(Qt,{title:R("dataTable.errorTitle"),description:a.message}):a;return o.jsx("div",{"data-testid":"data-table","data-state":"error",className:T,children:E})}if(n)return o.jsxs("div",{"data-testid":"data-table","data-state":"loading",className:T,children:[o.jsx("div",{className:"hidden md:block",children:o.jsx(Bgs,{columns:_.length,rows:r?.pageSize??5})}),o.jsx(Egs,{rows:Math.min(r?.pageSize??5,8)})]});const j=P.getRowModel().rows;if(j.length===0)return o.jsx("div",{"data-testid":"data-table","data-state":"empty",className:T,children:s??o.jsx(Ot,{title:R("dataTable.emptyTitle"),description:R("dataTable.emptyDescription")})});const I=_.length-1,z=c?1:0;return o.jsxs("div",{"data-testid":"data-table","data-state":"data",className:X("flex flex-col",T),children:[o.jsx("div",{className:"hidden min-h-0 flex-1 md:flex md:flex-col",children:o.jsxs(Ua,{stickyHeader:x,containerClassName:w,children:[p?o.jsx("caption",{className:"sr-only",children:p}):null,o.jsx(Po,{children:P.getHeaderGroups().map(E=>o.jsx(qt,{children:E.headers.map((L,O)=>{const V=v&&O===z?"left":$&&d&&O===I?"right":void 0;return o.jsx(Ie,{sticky:V,"aria-sort":L.column.getCanSort()?Ogs(L.column.getIsSorted()):void 0,style:L.column.columnDef.size!=null?{width:L.getSize()}:void 0,children:L.isPlaceholder?null:L.column.getCanSort()?o.jsx(Ugs,{header:L}):Ad(L.column.columnDef.header,L.getContext())},L.id)})},E.id))}),o.jsx(Ba,{children:j.map(E=>o.jsx(qt,{className:X("group/row",m&&"cursor-pointer",f?.(E.original)&&"bg-[color:var(--primary)]/[0.04]"),"data-selected":E.getIsSelected(),onClick:m?L=>{eu(L)||m(E.original)}:void 0,children:E.getVisibleCells().map((L,O)=>{const V=v&&O===z?"left":$&&d&&O===I?"right":void 0;return o.jsx(Me,{sticky:V,className:X("whitespace-nowrap",Dgs[y]),children:Ad(L.column.columnDef.cell,L.getContext())},L.id)})},E.id))})]})}),o.jsx(Igs,{rows:j,headers:P.getFlatHeaders(),rowActions:d,onRowClick:m,isRowHighlighted:f,mobileCard:S,mobileRowAction:k}),r?o.jsx(Fgs,{total:r.mode==="server"?r.total??0:t.length,pageIndex:r.mode==="server"?r.pageIndex??0:P.getState().pagination.pageIndex,pageSize:r.mode==="server"?r.pageSize:P.getState().pagination.pageSize,pageSizeOptions:r.pageSizeOptions,onPageChange:E=>{r.mode==="server"?r.onPageChange?.(E):P.setPageIndex(E)},onPageSizeChange:E=>{r.mode==="server"?r.onPageSizeChange?.(E):P.setPageSize(E)}}):null]})}function Mgs(e){return e==="__select"||e==="__actions"}function Egs({rows:e}){return o.jsx("div",{className:"grid min-w-0 max-w-full grid-cols-[minmax(0,1fr)] md:hidden",children:Array.from({length:e}).map((t,n)=>o.jsxs(Dn,{children:[o.jsxs("div",{className:"flex items-start justify-between gap-3",children:[o.jsxs("div",{className:"min-w-0 flex-1",children:[o.jsx(Rt,{className:"h-4 w-36 max-w-[70%]"}),o.jsx(Rt,{className:"mt-1.5 h-3 w-24 max-w-[55%]"})]}),o.jsx(Rt,{className:"size-8 shrink-0 rounded-md"})]}),o.jsxs("div",{className:"mt-2 grid grid-cols-2 gap-x-3 gap-y-2",children:[o.jsx(Rt,{className:"h-3 w-20 max-w-full"}),o.jsx(Rt,{className:"ml-auto h-3 w-16 max-w-full"}),o.jsx(Rt,{className:"h-3 w-24 max-w-full"}),o.jsx(Rt,{className:"ml-auto h-3 w-14 max-w-full"})]})]},n))})}function Igs({rows:e,headers:t,rowActions:n,onRowClick:a,isRowHighlighted:s,mobileCard:r,mobileRowAction:i}){const{t:c}=W(),d=h.useMemo(()=>{const m=new Map;return t.forEach(f=>m.set(f.column.id,f)),m},[t]);return o.jsx("div",{"data-testid":"data-table-mobile",className:"grid min-w-0 max-w-full grid-cols-[minmax(0,1fr)] md:hidden",children:e.map(m=>{const f=r?.(m.original);if(f)return o.jsx("div",{children:f},m.id);const p=m.getVisibleCells().find(R=>R.column.id==="__select"),y=m.getVisibleCells().find(R=>R.column.id==="__actions"),v=i?.(m.original),$=!v&&a?o.jsx(K,{type:"button",variant:"ghost",size:"icon","aria-label":c("dataTable.openRow",{defaultValue:"Open row"}),className:"size-8",onClick:()=>a(m.original),children:o.jsx(wu,{className:"size-4"})}):null,x=v??$,w=m.getVisibleCells().filter(R=>!Mgs(R.column.id)),S=w.slice(0,vS),k=w.slice(vS),T=(R,_)=>{const P=d.get(R.column.id),j=P?Ad(P.column.columnDef.header,P.getContext()):R.column.id;return o.jsx(Qe,{label:j,className:_===0?"col-span-2":void 0,children:o.jsx("span",{className:X("block min-w-0 truncate [&>*]:max-w-full [&>
888*]:min-w-0",_===0&&"font-medium"),children:Ad(R.column.columnDef.cell,R.getContext())})},R.id)};return o.jsxs(Dn,{selected:m.getIsSelected()||s?.(m.original),onClick:a?()=>a(m.original):void 0,activation:"pointer",children:[p?o.jsx("div",{className:"mb-1.5 flex min-h-8 items-center",children:Ad(p.column.columnDef.cell,p.getContext())}):null,o.jsx(Ha,{children:S.map(T)}),k.length>0||x||n&&y?o.jsxs("div",{className:"mt-1.5 flex min-w-0 items-center justify-between gap-2",children:[k.length>0?o.jsxs("details",{className:"group/details min-w-0 flex-1",onClick:R=>R.stopPropagation(),onKeyDown:R=>R.stopPropagation(),children:[o.jsxs("summary",{className:"inline-flex min-h-8 cursor-pointer list-none items-center gap-1 rounded-md px-1 text-11 font-medium text-[color:var(--muted-foreground)] marker:hidden focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[color:var(--ring)] [&::-webkit-details-marker]:hidden",children:[o.jsx("span",{className:"sr-only",children:c("dataTable.moreDetailsWithCount",{count:k.length,defaultValue:"{{count}} more details"})}),"+",k.length,o.jsx(zc,{className:"size-3.5 transition-transform group-open/details:rotate-180","aria-hidden":"true"})]}),o.jsx("dl",{className:"mt-1 grid grid-cols-2 gap-x-3 gap-y-1 border-t border-[color:var(--border)] pt-1.5",children:k.map((R,_)=>T(R,_+vS))})]}):o.jsx("span",{}),x||n&&y?o.jsxs(Cr,{className:"shrink-0 [&>div]:flex-wrap",children:[x,n&&y?Ad(y.column.columnDef.cell,y.getContext()):null]}):null]}):null]},m.id)})})}function Ogs(e){return e==="asc"?"ascending":e==="desc"?"descending":"none"}function Lgs({dir:e}){return e==="asc"?o.jsx(g9,{className:"size-3.5 text-[color:var(--foreground)]"}):e==="desc"?o.jsx(m9,{className:"size-3.5 text-[color:var(--foreground)]"}):o.jsx(yve,{className:"size-3.5 opacity-40"})}function Ugs({header:e}){return o.jsxs("button",{type:"button",onClick:e.column.getToggleSortingHandler(),className:"-mx-1 inline-flex items-center gap-1 rounded px-1 py-0.5 transition-colors hover:bg-[color:var(--gray-a3)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[color:var(--ring)]",children:[Ad(e.column.columnDef.header,e.getContext()),o.jsx(Lgs,{dir:e.column.getIsSorted()})]})}function Bgs({columns:e,rows:t}){return o.jsx(Ua,{children:o.jsx(Ba,{children:Array.from({length:t},(n,a)=>o.jsx(qt,{children:Array.from({length:e},(s,r)=>o.jsx(Me,{children:o.jsx(Rt,{className:"h-4 w-full"})},r))},a))})})}function Fgs({total:e,pageIndex:t,pageSize:n,pageSizeOptions:a,onPageChange:s,onPageSizeChange:r}){const{t:i}=W();return o.jsx("div",{"data-testid":"pagination-bar",className:"border-t border-[color:var(--border)] px-3 py-3 sm:px-5",children:o.jsx(A_,{total:e,page:t+1,pageSize:n,pageSizeOptions:a,onPageChange:c=>s(c-1),onPageSizeChange:r,labels:{total:c=>i("pagination.total",{count:c,defaultValue:"Total {{count}}"}),perPage:c=>i("pagination.perPage",{count:c,defaultValue:"{{count}} / page"})}})})}function Gp({label:e,active:t,children:n,open:a,onOpenChange:s,className:r,panelClassName:i,compact:c=!1,iconOnly:d=!1}){const m=a!==void 0,f=h.useId(),p=m?a:void 0;return o.jsxs("details",{className:X("group/mobile-filters md:hidden",r),open:a,children:[o.jsxs("summary",{role:"button","aria-controls":f,"aria-expanded":p,"aria-label":typeof e=="string"?e:void 0,onClick:m?y=>{y.preventDefault(),s?.(!a)}:void 0,className:X("flex cursor-pointer list-none items-center justify-between gap-2 rounded-md border border-[color:var(--border)] bg-[color:var(--card)] font-medium marker:hidden focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[color:var(--ring)] [&::-webkit-details-marker]:hidden",c?"min-h-9 px-2.5 text-xs":"min-h-10 px-3 text-sm",d&&"relative grid size-10 place-items-center p-0"),children:[o.jsxs("span",{className:X("inline-flex min-w-0 items-center gap-2",d&&"sr-only"),children:[o.jsx(vR,{className:"size-4 shrink-0 text-[color:var(--muted-foreground)]"}),o.jsx("span",{className:"min-w-0 truncate",children:e}),t?o.jsx("span",{className:"size-1.5 shrink-0 rounded-full bg-[color:var(--primary)]"}):null]}),d?o.jsxs(o.Fragment,{children:[o.jsx(vR,{className:"size-4 text-[color:var(--muted-foreground)]","aria-hidden":"true"}),t?o.jsx("span",{className:"absolute right-1.5 top-1.5 size-1.5 rounded-full bg-[color:var(--primary)]"}):null]}):o.jsx(zc,{className:"size-3.5 shrink-0 transition-transform group-open/mobile-filters:rotate-180","aria-hidden":"true"})]}),o.jsx("div",{id:f,className:X("mt-2 grid min-w-0 gap-2.5 rounded-md border border-[color:var(--border)] bg-[color:var(--card)] p-2.5",i),children:n})]})}function gr(e,t){return{selectDate:e("dateRange.selectDate",{defaultValue:"Select date"}),previousMonth:e("dateRange.previousMonth",{defaultValue:"Previous month"}),nextMonth:e("dateRange.nextMonth",{defaultValue:"Next month"}),clear:t}}function zgs(e){return{cancel:e("dateRange.cancel",{defaultValue:"Cancel"}),apply:e("dateRange.apply",{defaultValue:"Apply"}),reversedError:e("dateRange.reversedError",{defaultValue:"Start date must be before end date."}),presetsAriaLabel:e("dateRange.presetsAriaLabel",{defaultValue:"Range presets"}),previousMonth:e("dateRange.previousMonth",{defaultValue:"Previous month"}),nextMonth:e("dateRange.nextMonth",{defaultValue:"Next month"})}}function fh(e,t){return{...t,...zgs(e)}}function nn({show:e,onReset:t,labelKey:n="common.clearAll",className:a}){const{t:s}=W();return e?o.jsx(K,{variant:"ghost",size:"sm",onClick:t,className:a,children:s(n,{defaultValue:n==="common.reset"?"Reset":"Clear"})}):null}function py(e){const{t}=W();
888return o.jsx(S_,{copyLabel:t("common.copy"),copiedLabel:t("common.copied"),onCopyError:()=>ie.error(t("common.copyFailed")),...e})}function xj(e){const{t}=W();return o.jsx(Tz,{copyLabel:t("common.copy"),copiedLabel:t("common.copied"),onCopyError:()=>ie.error(t("common.copyFailed")),...e})}function qgs(e,t){const n=new URLSearchParams(e);for(const[a,s]of Object.entries(t))s===void 0||s===""?n.delete(a):n.set(a,s);return n}function Hgs(e,t){const n=new URLSearchParams(e);for(const a of t)n.delete(a);return n}function qw(e,t){const n=e.get("preset"),a=e.get("from")??void 0,s=e.get("to")??void 0;return!n&&!a&&!s?u3(t):n?u3({preset:n,from:a,to:s}):{preset:"custom",from:a,to:s}}function Hw(e){return e.preset==="custom"||e.preset==="byMonth"?{preset:e.preset,from:e.from,to:e.to}:e.preset?{preset:e.preset,from:void 0,to:void 0}:{preset:e.from||e.to?"custom":void 0,from:e.from,to:e.to}}function Pe(e,t,n=""){return e.get(t)??n}function ln(e,t,n){const a=e.get(t);if(a==null)return n;const s=Number(a);return Number.isInteger(s)&&s>=1?s:n}function Mt(){const[e,t]=s_(),n=h.useRef(e);n.current=e;const a=h.useCallback((r,i)=>{const c=qgs(n.current,r);n.current=c,t(c,{replace:i?.replace??!0})},[t]),s=h.useCallback(r=>{const i=Hgs(n.current,r);n.current=i,t(i,{replace:!0})},[t]);return{params:e,patch:a,remove:s}}function Zt(e,t,n=["page"]){return t.some(a=>!n.includes(a)&&e.has(a))}const Vw=(()=>{try{return Intl.DateTimeFormat().resolvedOptions().timeZone||"UTC"}catch{return"UTC"}})();function uK(){return Vw}function fy(e=new Date){const t=-e.getTimezoneOffset(),n=t>=0?"+":"−",a=Math.floor(Math.abs(t)/60),s=Math.abs(t)%60;return`UTC${n}${a}${s?`:${String(s).padStart(2,"0")}`:""}`}function mK(e=new Date){return`${fy(e)} · ${uK()}`}const Vgs=new Intl.DateTimeFormat("en-GB",{hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1,timeZone:Vw});function pK(e){const t=e instanceof Date?e:new Date(e);return Number.isNaN(t.getTime())?"—":Vgs.format(t)}const Kgs=new Intl.DateTimeFormat("sv-SE",{year:"numeric",month:"2-digit",day:"2-digit",timeZone:Vw});function fK(e){const t=e instanceof Date?e:new Date(e);return Number.isNaN(t.getTime())?"—":Kgs.format(t)}const Ggs=new Intl.DateTimeFormat("sv-SE",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1,timeZone:Vw});function Tc(e){const t=e instanceof Date?e:new Date(e);return Number.isNaN(t.getTime())?"—":Ggs.format(t)}const Wgs=new Intl.DateTimeFormat("sv-SE",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1,timeZone:"UTC"});function gK(e){const t=e instanceof Date?e:new Date(e);return Number.isNaN(t.getTime())?"—":Wgs.format(t)}function hK(e,t=new Date){const n=e instanceof Date?e:new Date(e);if(Number.isNaN(n.getTime()))return"—";const a=t.getTime()-n.getTime();if(a<0)return"just now";const s=Math.floor(a/6e4);if(s<1)return"just now";if(s<60)return`${s} min ago`;const r=Math.floor(s/60);return r<24?`${r}h ${s%60}m ago`:`${Math.floor(r/24)}d ago`}function rx({label:e,value:t,muted:n=!1}){return o.jsxs("div",{className:"flex items-baseline justify-between gap-6 py-1 text-xs",children:[o.jsx("span",{className:"text-[color:var(--muted-foreground)]",children:e}),o.jsx("span",{className:"tabular-nums "+(n?"text-[color:var(--muted-foreground)]":"text-[color:var(--foreground)]"),children:t})]})}function ix({iso:e,empty:t="—",popoverExtraRows:n}){const{t:a}=W(),s=e?new Date(e):null;return!e||!s||Number.isNaN(s.getTime())?o.jsx("span",{className:"text-sm tabular-nums text-[color:var(--muted-foreground)]",children:t}):o.jsxs(Ns,{openDelay:150,closeDelay:80,children:[o.jsx(Ds,{asChild:!0,children:o.jsxs("span",{className:"inline-flex w-fit cursor-help flex-col tabular-nums leading-tight text-[color:var(--muted-foreground)]",children:[o.jsx("span",{children:fK(e)}),o.jsx("span",{children:pK(e)})]})}),o.jsxs(ns,{children:[o.jsx("div",{className:"mb-1 text-xs font-semibold",children:a("common.time.timestamp",{defaultValue:"Timestamp"})}),o.jsx(rx,{label:a("common.time.local",{defaultValue:"Local"}),value:`${Tc(e)} ${fy(s)}`}),o.jsx(rx,{label:"UTC",value:gK(e)}),o.jsx(rx,{label:a("common.time.relative",{defaultValue:"Relative"}),value:hK(e),muted:!0}
888),n]})]})}const Ygs={openai:"OpenAI",anthropic:"Anthropic",google:"Google",gemini:"Google",minimax:"MiniMax",stepfun:"StepFun",alibaba:"Alibaba",meta:"Meta",mistral:"Mistral",xai:"xAI",deepseek:"DeepSeek",qwen:"Qwen"};function Hx(e){return e?Ygs[e.toLowerCase()]??e:""}function yK(e){if(!e)return{authorSlug:"",modelName:""};const t=e.indexOf("/");return t<0?{authorSlug:"",modelName:e}:{authorSlug:e.slice(0,t),modelName:e.slice(t+1)}}function QBs(e){const{authorSlug:t,modelName:n}=yK(e),a=Hx(t);return a?`${a}: ${n}`:n}function vK(e){return e.displayName||e.modelSlug||e.fullSlug?.split("/").pop()||e.fullSlug||""}function bK(e,t){return(e.tokenPricingBands??[]).filter(a=>!(a.serviceTier==="standard"&&!a.promptTokens?.gt&&!a.promptTokens?.gte)).map(a=>{const s=a.serviceTier==="standard"?"Standard":a.serviceTier==="priority"?"Priority":"Flex",r=a.promptTokens?.gt!=null?` >${bS(a.promptTokens.gt)}`:a.promptTokens?.gte!=null?` ≥${bS(a.promptTokens.gte)}`:a.promptTokens?.lte!=null?` ≤${bS(a.promptTokens.lte)}`:"";return`${s}${r} ${Fn(a.inputPricePer1m,t)} / ${Fn(a.outputPricePer1m,t)}`})}function bS(e){return e%1e3===0?`${e/1e3}K`:String(e)}function DR(e){return(e??"").toLowerCase().includes("kiro")?"kiro":"official"}function Qgs(e,t,n){const a=`/${e}/${t}`;return n&&n.toLowerCase()!=="en"?`/${n}${a}`:a}const Xgs={sm:16,md:20,lg:24};function Zgs({model:e,logoSize:t="md",showContext:n=!0,showCapabilities:a=!0,meta:s,trailing:r,className:i}){const c=a?(e.capabilities??[]).filter(p=>Dce.includes(p)).slice(0,3):[],d=!!(e.source&&e.source!==e.provider&&e.source!==e.authorSlug),m=n&&e.contextWindow?Xl(e.contextWindow):null,f=s!=null||m!=null;return o.jsxs("div",{className:X("flex min-w-0 items-center gap-3",i),children:[o.jsx(Xo,{authorSlug:e.authorSlug,size:Xgs[t],className:"shrink-0 text-foreground/80"}),o.jsxs("div",{className:"min-w-0 flex-1",children:[o.jsxs("div",{className:"flex min-w-0 items-center gap-1.5",children:[o.jsxs("span",{className:"max-w-[38%] shrink truncate text-xs text-[color:var(--muted-foreground)] sm:max-w-none sm:shrink-0",children:[Hx(e.authorSlug),":"]}),o.jsx("span",{className:"truncate text-sm font-medium",children:vK(e)}),d?o.jsx(Xt,{variant:"outline",className:"shrink-0",children:e.source}):null,c.length?o.jsx("span",{className:"ml-0.5 inline-flex shrink-0 items-center gap-1 text-[color:var(--muted-foreground)]",children:c.map(p=>o.jsx(Nce,{capability:p,size:13},p))}):null]}),f?o.jsxs("div",{className:"mt-0.5 flex min-w-0 flex-wrap items-center gap-x-1.5 gap-y-0.5 font-[family-name:var(--font-mono)] text-11 tabular-nums text-[color:var(--muted-foreground)]",children:[s?o.jsx("span",{className:"min-w-0 max-w-full truncate",children:s}):null,m?o.jsx("span",{className:"truncate",children:m}):null]}):null]}),r??null]})}const Im=100,Jgs=["all","text","image","video","embedding"];function ehs(e,t){return t==="all"?!0:Eg(e.outputModalities??[])===t}function ths(e,t){const n=t.search.trim().toLowerCase();return e.filter(a=>ehs(a,t.type)?n?a.fullSlug.toLowerCase().includes(n)||(a.displayName??"").toLowerCase().includes(n)||(a.summary??"").toLowerCase().includes(n):!0:!1)}function nhs(e){const t=new Map;for(const n of e){const a=n.authorSlug||n.provider||"",s=t.get(a);s?s.push(n):t.set(a,[n])}return[...t.entries()].map(([n,a])=>({vendor:n,models:a})).sort((n,a)=>n.vendor.localeCompare(a.vendor))}function rL(e,t){if(e.length===0)return"none";let n=0;for(const a of e)t.has(a)&&(n+=1);return n===0?"none":n===e.length?"all":"some"}function ahs(e,t,n=Im){const a=new Set(e);if(t.length>0&&t.every(c=>a.has(c))){for(const c of t)a.delete(c);return{next:[...a],added:0,reachedLimit:!1}}let r=0,i=!1;for(const c of t)if(!a.has(c)){if(a.size>=n){i=!0;break}a.add(c),r+=1}return{next:[...a],added:r,reachedLimit:i}}function ohs(e,t,n=Im){const a=new Set(e);return a.has(t)?(a.delete(t),{next:[...a],reachedLimit:!1}):a.size>=n?{next:e,reachedLimit:!0}:(a.add(t),{next:[...a],reachedLimit:!1})}function shs(e,t){const n=new Set(t);return e.filter(a=>!n.has(a)).length}function rhs({value:e,onChange:t,models:n,isLoading:a,isError:s,onRetry:r}){const{t:i}=W(),[c,d]=h.useState(""),[m,f]=h.useState("all"),p=h.useDeferredValue(c),y=h.useMemo(()=>new Set(e),[e]),v=h.useMemo(()=>ths(n,{type:m,search:p}),[n,m,p]),$=h.useMemo(()=>v.map(_=>_.fullSlug),[v]),x=h.useMemo(()=>nhs(v),[v]),w=e.length>
888=Im,S=shs(e,$);function k(_){_&&ie.info(i("apiKeys.scope.limitReached",{max:Im,defaultValue:"Reached the {{max}}-model limit"}))}function T(_){const P=ahs(e,_);k(P.reachedLimit),t(P.next)}function R(_){const P=ohs(e,_);k(P.reachedLimit),t(P.next)}return a?o.jsx("div",{className:"space-y-1.5 rounded-md border border-[color:var(--border)] p-2",children:Array.from({length:4}).map((_,P)=>o.jsx(Rt,{className:"h-11 rounded"},P))}):s?o.jsx(Qt,{title:i("apiKeys.scope.loadFailed",{defaultValue:"Could not load models"}),description:i("apiKeys.scope.loadFailedHint",{defaultValue:"Retry, or switch back to All models."}),action:r?o.jsx(K,{onClick:r,children:i("apiKeys.retry",{defaultValue:"Retry"})}):void 0}):o.jsxs("div",{className:"min-w-0 rounded-md border border-[color:var(--border)]",children:[o.jsxs("div",{className:"space-y-2 border-b border-[color:var(--border)] p-2",children:[o.jsxs("div",{className:"relative",children:[o.jsx(hp,{className:"pointer-events-none absolute left-2.5 top-1/2 size-4 -translate-y-1/2 text-[color:var(--muted-foreground)]"}),o.jsx(ge,{value:c,onChange:_=>d(_.target.value),placeholder:i("apiKeys.scope.searchPlaceholder",{defaultValue:"Search models…"}),className:"pl-8"})]}),o.jsx(Cc,{value:m,onValueChange:_=>f(_),children:o.jsx(tl,{className:"w-full gap-x-1 sm:gap-x-3",children:Jgs.map(_=>o.jsx(ia,{value:_,className:"min-w-0 px-1 text-xs sm:px-0 sm:text-sm",children:i(`apiKeys.scope.type.${_}`,{defaultValue:_})},_))})})]}),o.jsxs("div",{className:"sticky top-0 z-10 grid grid-cols-[minmax(0,1fr)] gap-2 border-b border-[color:var(--border)] bg-[color:var(--card)] px-3 py-2 text-sm min-[380px]:grid-cols-[minmax(0,1fr)_auto] min-[380px]:items-center",children:[o.jsxs("label",{className:"flex min-w-0 cursor-pointer items-center gap-2 font-medium",children:[(()=>{const _=rL($,y);return o.jsx(Zn,{checked:_==="all",indeterminate:_==="some",disabled:$.length===0,onChange:()=>T($),"aria-label":i("apiKeys.scope.selectAllResults",{count:$.length,defaultValue:"Select all results ({{count}})"})})})(),o.jsx("span",{className:"min-w-0 truncate",children:i("apiKeys.scope.selectAllResults",{count:$.length,defaultValue:"Select all results ({{count}})"})})]}),o.jsxs("div",{className:"flex min-w-0 items-center justify-between gap-2 min-[380px]:justify-end",children:[o.jsx("span",{className:X("tabular-nums",w&&"text-[color:var(--warning-foreground)]"),children:i("apiKeys.scope.selectedCount",{count:e.length,max:Im,defaultValue:"{{count}} / {{max}} selected"})}),e.length>0?o.jsx(K,{type:"button",variant:"link",size:"sm",onClick:()=>t([]),className:"h-auto px-0",children:i("apiKeys.scope.clear",{defaultValue:"Clear"})}):null]})]}),S>0?o.jsx("div",{className:"break-words border-b border-[color:var(--border)] bg-[color:var(--muted)]/30 px-3 py-1.5 text-xs text-[color:var(--muted-foreground)] [overflow-wrap:anywhere]",children:i("apiKeys.scope.hiddenSelected",{hidden:S,total:e.length,defaultValue:"{{hidden}} of {{total}} selected are hidden by the current filter"})}):null,o.jsxs("div",{className:"max-h-[min(48vh,380px)] overflow-y-auto overscroll-contain",children:[o.jsx("div",{"aria-live":"polite",className:"sr-only",children:i("apiKeys.scope.selectedCount",{count:e.length,max:Im,defaultValue:"{{count}} / {{max}} selected"})}),v.length===0?o.jsx(Ot,{icon:o.jsx(Fbe,{className:"size-5"}),title:i("apiKeys.scope.emptyTitle",{defaultValue:"No models match"}),description:i("apiKeys.scope.emptyDescription",{defaultValue:"Try a different type or search."})}):x.map(_=>{const P=_.models.map(I=>I.fullSlug),j=rL(P,y),N=P.filter(I=>y.has(I)).length;return o.jsxs("div",{children:[o.jsxs("label",{className:"sticky top-0 z-[1] flex min-w-0 cursor-pointer items-center gap-2 border-y border-[color:var(--border)] bg-[color:var(--muted)] px-3 py-1.5",children:[o.jsx(Zn,{checked:j==="all",indeterminate:j==="some",onChange:()=>T(P),"aria-label":i("apiKeys.scope.selectVendor",{vendor:Hx(_.vendor),on:N,total:P.length,defaultValue:"Select all {{vendor}}, {{on}} of {{total}} selected"})}),o.jsx(Xo,{authorSlug:_.vendor,size:16,className:"shrink-0 text-foreground
888/80"}),o.jsx("span",{className:"min-w-0 truncate text-xs font-semibold text-[color:var(--muted-foreground)]",children:Hx(_.vendor)}),o.jsxs("span",{className:"ml-auto text-11 tabular-nums text-[color:var(--muted-foreground)]",children:[N,"/",P.length]})]}),o.jsx("ul",{children:_.models.map(I=>{const z=y.has(I.fullSlug),E=!z&&w;return o.jsx("li",{children:o.jsxs("label",{className:X("flex min-w-0 cursor-pointer items-center gap-2 border-b border-[color:var(--border)]/60 px-3 py-2 hover:bg-[color:var(--accent)] sm:gap-3",z&&"bg-[color:var(--accent)]/60",E&&"cursor-not-allowed opacity-50"),children:[o.jsx(Zn,{checked:z,disabled:E,onChange:()=>R(I.fullSlug),"aria-label":I.displayName||I.fullSlug}),o.jsx(Zgs,{model:I,className:"flex-1"})]})},I.fullSlug)})})]},_.vendor)})]})]})}function Js(e){return e.publicId??e.public_id??""}function $j(e){return e.prefix??e.keyPrefix??e.key_prefix??""}function wj(e){return e.suffix??e.keySuffix??e.key_suffix??""}function iL(e){return e.createdAt??e.created_at??""}function lL(e){return e.lastUsedAt??e.last_used_at??""}function lx(e){return e.expiresAt??e.expires_at??""}function ihs(e){return e.lastUsedIp??null}function lhs(e){return e.revokedAt??null}function Bg(e){return e.monthlyCreditLimit??e.monthly_credit_limit??null}function Vm(e){return e.tags??[]}function cx(e){return e.allowedModels??e.allowed_models??[]}function kj(e={}){return Ue({queryKey:[...Ht.apiKeys,e],queryFn:()=>Ye.request(`/console/api-keys${$r(e)}`),retry:1})}function chs(){const e=Re();return ke({mutationFn:t=>Ye.request("/console/api-keys",{method:"POST",body:t,idempotent:!0}),onSuccess:()=>e.invalidateQueries({queryKey:Ht.apiKeys})})}function dhs(){const e=Re();return ke({mutationFn:({publicId:t,body:n})=>Ye.request(`/console/api-keys/${t}`,{method:"PATCH",body:n,idempotent:!0}),onSuccess:()=>e.invalidateQueries({queryKey:Ht.apiKeys})})}function xK(e){return Ye.request(`/console/api-keys/${e}/reveal`)}function uhs(e){return Ue({queryKey:[...Ht.apiKeys,"reveal",e],queryFn:()=>xK(e),enabled:!!e,retry:!1,staleTime:1/0,gcTime:0})}function mhs(){const e=Re();return ke({mutationFn:t=>Ye.request(`/console/api-keys/${t}/revoke`,{method:"POST",idempotent:!0}),onSuccess:()=>e.invalidateQueries({queryKey:Ht.apiKeys})})}function $K(e={}){const t=e.locale??"en",n=Ue({queryKey:["public","models",t],queryFn:()=>Ye.request(`/public/models?locale=${t}&limit=100`),staleTime:300*1e3,retry:1}),a=h.useMemo(()=>{const s=n.data?.items??[];return e.protocol?s.filter(r=>r.supportedProtocolList.includes(e.protocol)):s},[n.data?.items,e.protocol]);return{...n,items:a}}function phs(e,t={}){const n=$K({protocol:t.protocol??null,locale:t.locale}),a=h.useMemo(()=>{const s=new Set,r=[];t.includeAll&&r.push({label:t.allLabel??"All",value:""});for(const i of n.items){const c=i[e];if(c==null||c==="")continue;const d=String(c);s.has(d)||(s.add(d),r.push({label:ghs(e,d),value:d}))}return r},[n.items,e,t.includeAll,t.allLabel]);return{...n,options:a}}const fhs={openai:"OpenAI",anthropic:"Anthropic",google:"Google",minimax:"MiniMax"};function ghs(e,t){return fhs[t.toLowerCase()]??hhs(t)}function hhs(e){return e.charAt(0).toUpperCase()+e.slice(1)}function yhs(){const t=qa().data?.wallet?.hasToppedUp??!0;return n=>n?.requiresPaidAccount===!0&&!t}const wK=[{label:"All statuses",value:""},{label:"Success",value:"success"},{label:"Pending",value:"pending"},{label:"Repairing",value:"repairing"},{label:"Failed",value:"failed"},{label:"Refunded",value:"refunded"}],Cj=[{label:"All protocols",value:""},...X$.map(e=>({label:Wd[e].label,value:e}))],Sj=Cj.filter(e=>e.value),kK=[{label:"OpenAI",value:"openai"},{label:"Anthropic",value:"anthropic"},{label:"Google",value:"google"},{label:"MiniMax",value:"minimax"}],CK=[{label:"Draft",value:"draft"},{label:"Published",value:"published"},{label:"Deprecated",value:"deprecated"},{label:"Archived",value:"archived"}],SK=[{label:"Public",value:"public"},{label:"Hidden",value:"hidden"}],vhs=[{label:"All content statuses",value:""},{label:"Draft",value:"draft"},{label:"Published",value:"published"},{label:"Archived",value:"archived"},{label:"Scheduled",value:"scheduled"}],AK=[{label:"All payment statuses",value:"all"},{label:"Created",value:"created"},{label:"Checkout opened",value:"checkout_opened"},{label:"Pending",value:"pending"},{label:"Paid",value:"paid"},{label:"Expired",value:"expired"},{label:"Canceled",value:"canceled"},{label:"Failed",value:"failed"}],TK=[{label:"All transaction types",value:""},{label:"Usage charge",value:"usage_charge"},{label:"Signup bonus",value:"bonus_signup_grant"},{label:"Promo bonus",value:"bonus_promo_grant"},{label:"Referral bonus",value:"bonus_referral_grant"},{label:"Compensation bonus",value:"bonus_compensation_grant"},{label:"Top-up bonus",value:"bonus_topup_grant"},{label:"Manual adjustment",value:"manual_adjustment"},{label:"Credit purchase",value:"credit_purchase"}],RK=[{label:"All sources",value:""},{label:"Payment",value:"payment"},{label:"Signup bonus",value:"signup"},{label:"Coupon",value:"coupon"},{label:"Admin grant",value:"admin"},{label:"API usage",value:"api"}],MR=[{label:"全部",value:""},{label:"Active",value:"active"},{label:"Suspended",value:"suspended"},{label:"Deleted",value:"deleted"}],bhs=[{label:"Active",value:"active"},{label:"Suspended",value:"suspended"}],ER=[{label:"全部",value:""},{label:"Normal",value:"normal"},{label:"Watchlisted",value:"watchlisted"},{label:"Blocked",value:"blocked"}],xhs=[{label:"Normal",value:"normal"},{label:"Watchlisted",value:"watchlisted"},{label:"Blocked",value:"blocked"}],PK=[{label:"Active",value:"active"},{label:"Expired",value:"expired"},{label:"Revoked",value:"revoked"}
888,{label:"All entries",value:"all"}],_K=[{label:"All actions",value:""},{label:"User status updated",value:"ops.user.update_status"},{label:"Signup access added",value:"ops.users.allowlist_add"},{label:"Signup access updated",value:"ops.users.allowlist_update"},{label:"Signup access invited",value:"ops.users.allowlist_invite"},{label:"Signup access removed",value:"ops.users.allowlist_revoke"},{label:"Signup access restored",value:"ops.users.allowlist_restore"},{label:"Model created",value:"ops.model.create"},{label:"Model updated",value:"ops.model.update"},{label:"Model status updated",value:"ops.model.update_status"},{label:"Routing pool created",value:"sub2api.pool.create"},{label:"Routing pool tested",value:"sub2api.pool.test"},{label:"Routing secret rotated",value:"sub2api.pool.rotate_secret"}],cL=[{label:"UTC",value:"UTC"},{label:"Asia/Shanghai",value:"Asia/Shanghai"},{label:"Asia/Hong Kong",value:"Asia/Hong_Kong"},{label:"Asia/Singapore",value:"Asia/Singapore"},{label:"Asia/Tokyo",value:"Asia/Tokyo"},{label:"Europe/London",value:"Europe/London"},{label:"Europe/Berlin",value:"Europe/Berlin"},{label:"America/Los Angeles",value:"America/Los_Angeles"},{label:"America/New York",value:"America/New_York"}],$hs=[{label:"1 code",value:"1"},{label:"10 codes",value:"10"},{label:"50 codes",value:"50"},{label:"100 codes",value:"100"}],whs=[{label:"All statuses",value:""},{label:"Active",value:"active"},{label:"Disabled",value:"disabled"}],khs=[{label:"All statuses",value:""},{label:"Active",value:"active"},{label:"Reserved",value:"reserved"},{label:"Redeemed",value:"redeemed"},{label:"Disabled",value:"disabled"}],Chs=[{label:"All content types",value:""},{label:"Blog post",value:"blog"},{label:"Changelog",value:"changelog"},{label:"Docs",value:"docs"},{label:"Page",value:"page"}],jK=[{label:"All sources",value:""},{label:"Signup bonus",value:"signup_bonus"},{label:"Coupon",value:"coupon"},{label:"Manual grant",value:"manual"}],NK=[{label:"All grant statuses",value:""},{label:"Granted",value:"granted"},{label:"Pending",value:"pending"},{label:"Reversed",value:"reversed"},{label:"Expired",value:"expired"},{label:"Denied",value:"denied"}],Shs=[{label:"Sync",value:"sync"},{label:"Stream",value:"stream"}],Ahs=[{label:"Token billing",value:"token"},{label:"Request billing",value:"request"},{label:"Image billing",value:"image"}],Ths=[{label:"Low reasoning",value:"low"},{label:"Medium reasoning",value:"medium"},{label:"High reasoning",value:"high"}],Rhs=new Map([...wK,...Cj,...kK,...CK,...SK,...vhs,...AK,...TK,...RK,...MR,...ER,...PK,...Chs,...jK,...NK,...Shs,...Ahs,...Ths,{label:"Payment",value:"payment"},{label:"Signup bonus",value:"signup"},{label:"Admin grant",value:"admin"},{label:"API usage",value:"api"},{label:"Usage charge",value:"usage_charge"},{label:"Signup bonus",value:"bonus_signup_grant"},{label:"Promo bonus",value:"bonus_promo_grant"},{label:"Referral bonus",value:"bonus_referral_grant"},{label:"Compensation bonus",value:"bonus_compensation_grant"},{label:"Top-up bonus",value:"bonus_topup_grant"},{label:"Manual adjustment",value:"manual_adjustment"},{label:"Credit purchase",value:"credit_purchase"},{label:"Email",value:"email"},{label:"Email OTP",value:"email_otp"},{label:"Magic link",value:"magic_link"},{label:"OAuth",value:"oauth"},{label:"User",value:"user"},{label:"Support",value:"support"},{label:"Admin",value:"admin"},{label:"Owner",value:"owner"},{label:"New",value:"new"},{label:"Started",value:"started"},{label:"Completed",value:"completed"},{label:"Skipped",value:"skipped"},{label:"MVP default",value:"mvp_default"},{label:"Tier 1",value:"tier_1"},{label:"Tier 2",value:"tier_2"},{label:"Tier 3",value:"tier_3"},{label:"Tier 4",value:"tier_4"},{label:"Not applicable",value:"not_applicable"},{label:"Any platform",value:"any"}].map(e=>[e.value,e.label]));function ct(e){return!e||typeof e!="string"?"—":Rhs.get(e)??e.replaceAll("_"," ")}const Phs={success:"success",active:"success",paid:"success",normal:"success",online:"success",healthy:"success",granted:"success",manual_grant:"success",pending:"warning",repairing:"warning",checkout_opened:"warning",stale:"warning",rotating:"warning",suspended:"warning",w
888atchlisted:"warning",warning:"warning",degraded:"warning",inactive:"warning",disabled:"warning",published:"primary",public:"primary",coupon:"primary",failed:"destructive",blocked:"destructive",canceled:"destructive",expired:"destructive",exhausted:"destructive",denied:"destructive",down:"destructive",quota_exhausted:"destructive",revoked:"destructive"};function Oe({value:e,label:t}){const{t:n}=W(),a=Phs[e]??"muted";return o.jsx(jo,{tone:a,children:t??n(`optionLabels.${e}`,{defaultValue:ct(e)})})}const _hs="gpt-5.5",jhs={claude:"anthropic_messages",codex:"openai_responses"};function Nhs(e){const t=e?.trim();return t?`OneHop-${t}`:"OneHop"}const Dhs=`({
889  request: {
890    url: "{{baseUrl}}/user/balance",
891    method: "GET",
892    headers: { "Authorization": "Bearer {{apiKey}}" }
893  },
894  extractor: function(response) {
895    return {
896      isValid: response.is_active,
897      remaining: response.balance,
898      unit: response.currency || "USD"
899    };
900  }
901})`;function Mhs(e){const t=[["resource","provider"],["app",e.app],["name",e.providerName],["homepage",e.homepageUrl],["endpoint",e.endpointUrl],["apiKey",e.apiKey],["configFormat","json"],["usageEnabled","true"],["usageScript",btoa(Dhs)],["usageAutoInterval","30"]];return e.model&&t.splice(2,0,["model",e.model]),e.haikuModel&&t.push(["haikuModel",e.haikuModel]),e.sonnetModel&&t.push(["sonnetModel",e.sonnetModel]),e.opusModel&&t.push(["opusModel",e.opusModel]),`ccswitch://v1/import?${new URLSearchParams(t).toString()}`}async function Ehs(e,t,n){const a=new AbortController,s=setTimeout(()=>a.abort(),3e3);try{const r=await fetch(`${e.replace(/\/+$/,"")}/v1/models?protocol=${encodeURIComponent(n)}&include=protocols`,{method:"GET",credentials:"omit",headers:{Authorization:`Bearer ${t}`},signal:a.signal});if(r.status===401)return{status:"unauthorized"};if(!r.ok)return{status:"error"};let i;try{i=await r.json()}catch{return{status:"error"}}return typeof i!="object"||i===null||!("data"in i)||!Array.isArray(i.data)?{status:"error"}:{status:"ok",models:i.data.flatMap(m=>{if(typeof m.id!="string"||!m.id)return[];const f=typeof m.supported_protocols=="object"&&m.supported_protocols!==null&&!Array.isArray(m.supported_protocols)?Object.keys(m.supported_protocols):[];return[{id:m.id,supportedProtocols:f}]})}}catch{return{status:"error"}}finally{clearTimeout(s)}}const Ihs=new Set(["openai_chat","openai_responses"]),Ohs=new Set(["anthropic_messages"]);function dL(e){const t=e.supportedProtocols.some(a=>Ihs.has(a)),n=e.supportedProtocols.some(a=>Ohs.has(a));return t&&n}function uL(e,t){if(t==="claude"){const n=e.startsWith("anthropic/")&&!e.includes("-kiro"),a=e.includes("-kiro");if(n)return e.includes("haiku")?100:e.includes("sonnet")?200:e.includes("fable")?290:e.includes("opus")?300:150;if(a)return e.includes("haiku")?410:e.includes("sonnet")?420:e.includes("fable")?430:e.includes("opus")?440:450}else if(e.startsWith("openai/gpt"))return e.includes("mini")?100:e.includes("5.4")&&!e.includes("mini")?200:e.includes("5.5")?300:150;return e.startsWith("minimax/")?e.includes("m3")?610:e.includes("highspeed")?630:e.includes("m2.7")?650:640:900}function mL(e,t,n){if(t.length===0)return{action:"direct"};if(n.status!=="ok")return{action:"direct"};const{models:a}=n;if(a.length===0)return{action:"block"};const s=[...a].sort((c,d)=>uL(c.id,e)-uL(d.id,e)),r=s[0],i=s[s.length-1];if(e==="claude"){const c=s.length>2?Math.floor((s.length-1)/2):0,d=s.length>1?s[c]:r;return{action:"pin",model:r.id,haikuModel:r.id,sonnetModel:d.id,opusModel:i.id,needsConfirm:dL(r)}}return{action:"pin",model:i.id,haikuModel:r.id,sonnetModel:i.id,opusModel:i.id,needsConfirm:dL(i)}}function Aj(){return`https://${ioe}/v1`}function DK(){return Aj().replace(/\/v1$/,"")}const xS=["search","status","page"],pL=[{value:"",labelKey:"apiKeys.filters.allStatus"},{value:"active",labelKey:"apiKeys.status.active"},{value:"inactive",labelKey:"apiKeys.status.inactive"},{value:"expired",labelKey:"apiKeys.status.expired"},{value:"quota_exhausted",labelKey:"apiKeys.status.quota_exhausted"},{value:"revoked",labelKey:"apiKeys.status.revoked"}];function $S(e){return{name:e,tags:[],scopeMode:"all",allowedModels:[],monthlyCreditLimit:"",expiresAt:"",status:"active"}}
901function Lhs(e){const t=lx(e),n=cx(e);return{name:e.name,tags:Vm(e),scopeMode:n.length?"limited":"all",allowedModels:n,monthlyCreditLimit:Bg(e)??"",expiresAt:t?t.slice(0,10):"",status:e.storedStatus==="inactive"?"inactive":"active"}}function Uhs(e){const t=e.trim(),n=Number(t);return Number.isFinite(n)&&n>0?t:null}function fL(e){return{name:e.name.trim(),tags:e.tags,allowedModels:e.scopeMode==="all"?[]:e.allowedModels,monthlyCreditLimit:Uhs(e.monthlyCreditLimit),expiresAt:e.expiresAt||null,status:e.status}}function Bhs(e,t){return!t||!Number.isFinite(t)||t<=0?0:Math.max(0,Math.min(100,e/t*100))}function Fhs(e){return e>=95?"error":e>=80?"warning":"normal"}const zhs={normal:"bg-[color:var(--primary)]",warning:"bg-[color:var(--warning)]",error:"bg-[color:var(--destructive)]"},qhs="https://onehop.ai",dx="<YOUR_ONEHOP_API_KEY>",MK=["codex","claude"];function Hhs(e,t){return`${e.replace(/\/+$/,"")}/${t.replace(/^\/+/,"")}`}function EK(e,t,n=kF){return`curl ${Hhs(e,"chat/completions")} \\
902  -H "Authorization: Bearer ${t}" \\
903  -H "Content-Type: application/json" \\
904  -d '{"model":"${n}","messages":[{"role":"user","content":"Hello"}]}'`}function Vhs(e){return e[0]??kF}function wS({label:e}){return o.jsxs("span",{className:"inline-flex items-baseline gap-1",children:[e,o.jsx("span",{className:"text-2xs font-normal text-[color:var(--muted-foreground)]",children:fy()})]})}function Khs(e){const t=new Set;for(const n of e)for(const a of Vm(n))t.add(a);return[...t].sort()}const Ghs=new Set(["inactive","revoked"]),gL=e=>Ghs.has(e);function IK(e){const t=e.status!=="revoked";return{canImport:e.status==="active",canUse:t,canEdit:t,canToggle:t,canDelete:t}}function Whs({apiKey:e,onImport:t,onUse:n,onEdit:a,onToggle:s,onDelete:r,importing:i,toggling:c,deleting:d}){const{t:m,i18n:f}=W(),p=IK(e),y=Vm(e),v=e.usage??{requests30d:0,billed30d:"0"},$=Bg(e);return o.jsxs(Dn,{children:[o.jsx(kr,{title:e.name,titleClassName:"break-words [overflow-wrap:anywhere]",truncateTitle:!1,meta:o.jsxs("div",{className:"flex min-w-0 flex-wrap items-center gap-x-2 gap-y-1",children:[o.jsxs("code",{className:"min-w-0 break-all font-mono text-[color:var(--foreground)]",children:[$j(e).slice(0,12),"…",wj(e).slice(-4)]}),y.slice(0,2).map(x=>o.jsx(Xt,{variant:"outline",className:"h-auto max-w-full break-all px-1.5 py-0.5 text-11 leading-snug",children:x},x))]}),trailing:o.jsxs(o.Fragment,{children:[o.jsx(Oe,{value:e.status,label:m(`apiKeys.status.${e.status}`,{defaultValue:e.status})}),o.jsxs(zp,{children:[o.jsx(qp,{asChild:!0,children:o.jsx(K,{type:"button",variant:"ghost",size:"icon",className:"size-9","aria-label":m("apiKeys.table.action"),"data-testid":"api-key-actions-trigger",children:o.jsx(w9,{className:"size-4"})})}),o.jsxs(xu,{align:"end",className:"max-w-[calc(100vw-1rem)]",children:[p.canUse?o.jsxs(La,{onSelect:n,className:"min-h-10",children:[o.jsx(k9,{className:"size-3.5"}),m("apiKeys.actions.use")]}):null,p.canImport?MK.map(x=>o.jsxs(La,{disabled:i,onSelect:()=>t(x),className:"min-h-10",children:[o.jsx(Uw,{className:"size-3.5"}),m(`apiKeys.ccswitch.${x}`)]},x)):null,p.canEdit?o.jsxs(La,{onSelect:a,className:"min-h-10",children:[o.jsx(A9,{className:"size-3.5"}),m("apiKeys.actions.edit")]}):null,p.canToggle?o.jsxs(La,{disabled:c,onSelect:s,className:"min-h-10",children:[e.storedStatus==="inactive"?o.jsx(x9,{className:"size-3.5"}):o.jsx(b9,{className:"size-3.5"}),e.storedStatus==="inactive"?m("apiKeys.actions.enable"):m("apiKeys.actions.disable")]}):null,p.canDelete?o.jsxs(La,{disabled:d,className:"min-h-10 text-[color:var(--destructive)] focus:text-[color:var(--destructive)]",onSelect:r,children:[o.jsx(Sc,{className:"size-3.5"}),m("apiKeys.actions.delete")]}):null]})]})]})}),o.jsxs(Ha,{className:"grid-cols-[minmax(0,1fr)_auto]",children:[o.jsx(Qe,{label:m("apiKeys.table.usage"),children:o.jsx("span",{className:"tabular-nums",children:m("apiKeys.usage.days30",{requests:or(v.requests30d),credit:lr(Number(v.billed30d??0),f.language,"USD",6)})})}),o.jsx(Qe,{label:m("apiKeys.table.quota"),align:"right",children:o.jsx("span",{className:"tabular-nums",children:$==null?"∞":lr(Number($),f.language,"USD",6)})})]})]})}function Yhs(){const{t:e,i18n:t}=W(),[n,a]=h.useState(null),[s,r]=h.useState(!1),[i,c]=h.useState("configure"),[d,m]=h.useState(!1),[f,p]=h.useState(null),[y,v]=h.useState(null),[$,x]=h.useState(null),[w,S]=h.useState(null),[k,T]=h.useState(null),[R,_]=h.useState(null),[P,j]=h.useState(null),[N,I]=h.useState(()=>$S(e("apiKeys.defaultName"))),{params:z,patch:E,remove:L}=Mt(),O=h.useMemo(()=>({search:Pe(z,"search"),status:Pe(z,"status"),page:ln(z,"page",1)}),[z]),V=h.useDeferredValue(O.search),ne=h.useMemo(()=>({search:V,status:O.status,limit:"50"}),[V,O.status]),q=kj(ne),M=q.data?.items??[],F=h.useMemo(()=>Khs(M),[M]),H=h.useMemo(()=>M.filter(fe=>!gL(fe.status)),[M]),ee=h.useMemo(()=>M.filter(fe=>gL(fe.status)),[M]),B=$K({locale:t.language}),G=h.useMemo(()=>[{id:"name",header:e("apiKeys.table.name"),accessorFn:fe=>fe.name,cell:({row:fe})=>o.jsx("div",{className:"min-w-44 font-medium",children:fe.original.n
904ame})},{id:"key",header:e("apiKeys.table.key"),enableSorting:!1,cell:({row:fe})=>o.jsxs("code",{className:"whitespace-nowrap text-sm",children:[$j(fe.original).slice(0,12),"…",wj(fe.original).slice(-4)]})},{id:"tags",header:e("apiKeys.table.tags",{defaultValue:"Tags"}),accessorFn:fe=>Vm(fe)[0]??"",cell:({row:fe})=>{const Ne=Vm(fe.original);return Ne.length?o.jsx("div",{className:"flex min-w-32 flex-wrap gap-1",children:Ne.map(rt=>o.jsx(Xt,{variant:"outline",children:rt},rt))}):o.jsx("span",{className:"text-sm text-[color:var(--muted-foreground)]",children:"-"})}},{id:"status",header:e("apiKeys.table.status"),accessorFn:fe=>fe.status,cell:({row:fe})=>{const Ne=lhs(fe.original),rt=fe.original.status==="revoked"&&Ne?e("apiKeys.revokedAt",{date:Tc(Ne),defaultValue:"Revoked {{date}}"}):void 0;return o.jsx("span",{title:rt,children:o.jsx(Oe,{value:fe.original.status,label:e(`apiKeys.status.${fe.original.status}`,{defaultValue:fe.original.status})})})}},{id:"usage",header:e("apiKeys.table.usage"),accessorFn:fe=>Number(fe.usage?.billed30d??0),cell:({row:fe})=>{const Ne=fe.original.usage??{requestsToday:0,billedToday:"0",requests30d:0,billed30d:"0"},rt=Number(Ne.billed30d??0);return o.jsxs("div",{className:"min-w-44 text-xs tabular-nums",children:[o.jsx("div",{children:e("apiKeys.usage.days30",{requests:or(Ne.requests30d),credit:lr(rt,t.language,"USD",6)})}),o.jsx("div",{className:"text-[color:var(--muted-foreground)]",children:e("apiKeys.usage.today",{requests:or(Ne.requestsToday),credit:lr(Number(Ne.billedToday??0),t.language,"USD",6)})})]})}},{id:"quota",header:e("apiKeys.table.quota"),accessorFn:fe=>{const Ne=Bg(fe);return Ne==null?void 0:Number(Ne)},sortUndefined:"last",cell:({row:fe})=>{const Ne=fe.original,rt=Ne.usage??{billed30d:"0"},na=Number(rt.billed30d??0),cn=Bg(Ne),vn=cn==null?null:Number(cn),ds=Bhs(na,vn),Vc=Fhs(ds);return vn?o.jsxs("div",{className:"min-w-40 space-y-1",children:[o.jsxs("div",{className:"flex justify-between gap-2 text-xs tabular-nums",children:[o.jsx("span",{className:Vc==="error"?"text-[color:var(--destructive)]":Vc==="warning"?"text-[color:var(--warning-foreground)]":void 0,children:lr(na,t.language,"USD",6)}),o.jsx("span",{className:"text-[color:var(--muted-foreground)]",children:lr(vn,t.language,"USD",6)})]}),o.jsx(iy,{value:ds,className:"h-1.5",indicatorClassName:zhs[Vc]})]}):o.jsx("span",{className:"text-sm tabular-nums text-[color:var(--muted-foreground)]",title:e("apiKeys.unlimited"),children:"∞"})}},{id:"expires",header:()=>o.jsx(wS,{label:e("apiKeys.table.expires")}),accessorFn:fe=>lx(fe)||void 0,sortUndefined:"last",cell:({row:fe})=>o.jsx(ix,{iso:lx(fe.original)||null,empty:"∞"})},{id:"lastUsed",header:()=>o.jsx(wS,{label:e("apiKeys.table.lastUsed")}),accessorFn:fe=>lL(fe)||void 0,sortUndefined:"last",cell:({row:fe})=>{const Ne=ihs(fe.original);return o.jsx(ix,{iso:lL(fe.original)||null,popoverExtraRows:Ne?o.jsx(rx,{label:e("apiKeys.lastUsedIp",{defaultValue:"IP"}),value:Ne,muted:!0}):void 0})}},{id:"created",header:()=>o.jsx(wS,{label:e("apiKeys.table.created")}),accessorFn:fe=>iL(fe)||void 0,sortUndefined:"last",cell:({row:fe})=>o.jsx(ix,{iso:iL(fe.original)||null})}],[e,t.language]),Q=chs(),de=dhs(),Y=mhs(),pe=Q.isPending||de.isPending,se=Zt(z,xS),we=M.length===0&&!q.isLoading&&!se,me=M.length===0&&!q.isLoading&&se,ye=Aj(),_e=!B.isLoading&&B.items.length===0,ae=N.scopeMode==="limited"&&(B.isError||N.allowedModels.length===0);function Je(){p(null),I($S(e("apiKeys.defaultName"))),m(!1),a(null),c("configure"),r(!0)}function Ae(fe){p(fe);const Ne=Lhs(fe);I(Ne),m(!!(Ne.monthlyCreditLimit||Ne.expiresAt)),a(null),c("configure"),r(!0)}function tt(){r(!1),p(null),m(!1),c("configure"),a(null),I($S(""))}async function Tt(fe){if(fe.preventDefault(),!N.name.trim())return;if(f){await de.mutateAsync({publicId:Js(f),body:fL(N)});const rt=R;_(null),tt(),rt&&Js(rt.key)===Js(f)&&ta(rt.app,f);return}const Ne=await Q.mutateAsync(fL(N));a(Ne.apiKey.fullKey??null),c("created")}async function an(fe,Ne,rt){const na=cx(Ne),cn=rt===dx;let vn={action:"direct"};if(!cn){const ds=na.length===0?{status:"skipped"}:await Ehs(DK(),rt,jhs[fe]);vn=mL(fe,na,ds)}if(vn.action==="block"){S({app:fe,key:Ne});return}if(vn.action==="pin"&&vn.needsConfirm){T({app:fe,key:Ne,plan:vn,fullKey:rt});return}window.location.href=ag(fe,ye,rt,Ne.name,vn)}async function ta(fe,Ne){const rt=Js(Ne);x(rt);try{let na;try{na=(await xK(rt)).fullKey}catch{na=dx,window.location.href=ag(fe,ye,na,Ne.name),ie.info(e("apiKeys.ccswitch.pasteHint",{defaultValue:"Opened CC Switch with a placeholder — paste your saved API key there."}));return}await an(fe,Ne,na)}finally{x(null)}}async function lo(fe){const Ne=Js(fe),rt=fe.storedStatus==="inactive"?"active":"inactive";await de.mutateAsync({publicId:Ne,body:{name:fe.name,tags:Vm(fe),allowedModels:cx(fe),monthlyCreditLimit:Bg(fe),expiresAt:lx(fe)||null,status:rt}})}function qs(fe){Js(fe);const Ne=IK(fe);return o.jsxs("div",{className:"flex justify-end gap-1",children:[Ne.canImport?o.jsx(Tj,{onImport:rt=>{ta(rt,fe)},loading:$===Js(fe)}):null,Ne.canUse?o.jsx(K,{size:"sm",variant:"ghost",onClick:()=>v(fe),title:e("apiKeys.actions.use"),"aria-label":e("apiKeys.actions.use"),children:o.jsx(k9,{className:"size-4"})}):null,Ne.canEdit?o.jsx(K,{size:"sm",variant:"ghost",onClick:()=>Ae(fe),title:e("apiKeys.actions.edit"),"aria-label":e("apiKeys.actions.edit"),children:o.jsx(A9,{className:"size-4"})}):null,Ne.canToggle?o.jsx(K,{size:"sm",variant:"ghost",onClick:()=>lo(fe),disabled:de.isPending,title:fe.storedStatus==="inactive"?e("apiKeys.actions.enable"):e("apiKeys.actions.disable"),"aria-label":fe.storedStatus==="inactive"?e("apiKeys.actions.enable"):e("apiKeys.actions.disable"),children:fe.storedStatus==="inactive"?o.jsx(x9,{className:"size-4"}):o.jsx(b9,{className:"size-4"})}):null,Ne.canDelete?o.jsx(K,{size:"sm",variant:"ghost",disabled:Y.isPending,"aria-label":e("apiKeys.actions.delete"),title:e("apiKeys.actions.delete"),onClick:()=>j(fe),children:o.jsx(Sc,{className:"size-4"})}):null]})}function yt(fe){const Ne=Js(fe);return o.jsx(Whs,{apiKey:fe,importing:$===Ne,toggling:de.isPending,deleting:Y.isPending,onImport:rt=>{ta(rt,fe)},onUse:()=>v(fe),onEdit:()=>Ae(fe),onToggle:()=>{lo(fe)},onDelete:()=>j(fe)})}return o.jsxs(Vt,{title:e("apiKeys.title"),description:e("apiKeys.description"),action:o.jsxs("div",{className:"flex w-full justify-end gap-1.5 sm:w-auto 
904sm:flex-wrap sm:gap-2",children:[o.jsxs(K,{onClick:()=>q.refetch(),variant:"outline",size:"icon",className:"sm:h-10 sm:w-auto sm:px-4","aria-label":e("apiKeys.refresh"),children:[o.jsx(Vp,{className:"size-4"}),o.jsx("span",{className:"hidden sm:inline",children:e("apiKeys.refresh")})]}),o.jsxs(K,{onClick:Je,"data-tour":"create-key",size:"icon",className:"sm:h-10 sm:w-auto sm:px-4","aria-label":e("apiKeys.createKey"),children:[o.jsx(Uw,{className:"size-4"}),o.jsx("span",{className:"hidden sm:inline",children:e("apiKeys.createKey")})]})]}),children:[q.error?o.jsx(Qt,{title:e("apiKeys.loadFailed"),description:q.error.message,action:o.jsx(K,{onClick:()=>q.refetch(),children:e("apiKeys.retry")})}):null,we?o.jsx(Ot,{title:e("apiKeys.emptyTitle",{defaultValue:"Get your first key in 10 seconds"}),description:e("apiKeys.emptyDescription"),action:o.jsx(K,{onClick:Je,children:e("apiKeys.createKey")})}):o.jsxs(Ee,{className:"overflow-hidden",children:[o.jsxs("div",{className:"grid grid-cols-[minmax(0,1fr)_auto] items-start gap-2 border-b border-[color:var(--border)] p-2.5 md:flex md:flex-row md:items-end md:justify-between md:gap-3 md:p-3",children:[o.jsxs("div",{className:"grid min-w-0 grid-cols-[minmax(0,1fr)] gap-2 md:grid-cols-[minmax(220px,320px)_180px] md:gap-3",children:[o.jsxs("label",{className:"min-w-0 md:grid md:gap-1.5 md:text-sm md:font-medium",children:[o.jsx("span",{className:"sr-only md:not-sr-only",children:e("apiKeys.filters.search")}),o.jsx(ge,{startIcon:o.jsx(hp,{className:"size-4"}),value:O.search,onChange:fe=>E({search:fe.target.value,page:void 0}),placeholder:e("apiKeys.filters.searchPlaceholder"),className:"h-10"})]}),o.jsx("div",{className:"hidden md:block",children:o.jsx(ca,{label:e("apiKeys.filters.status"),value:O.status,onChange:fe=>E({status:fe.target.value,page:void 0}),children:pL.map(fe=>o.jsx("option",{value:fe.value,children:e(fe.labelKey)},fe.value||"all"))})})]}),o.jsx(nn,{show:se,onReset:()=>L(xS),className:"hidden self-end md:inline-flex"}),o.jsxs(Gp,{iconOnly:!0,label:e("apiKeys.filters.mobileTitle",{defaultValue:"Filters"}),active:!!O.status,className:"contents",panelClassName:"col-span-2 mt-1",children:[o.jsx(ca,{label:e("apiKeys.filters.status"),value:O.status,onChange:fe=>E({status:fe.target.value,page:void 0}),children:pL.map(fe=>o.jsx("option",{value:fe.value,children:e(fe.labelKey)},fe.value||"all"))}),o.jsx(nn,{show:se,onReset:()=>L(xS),className:"justify-self-end"})]})]}),me?o.jsx(Ot,{title:e("apiKeys.filters.empty",{defaultValue:"No keys match these filters"}),description:e("apiKeys.filters.emptyDescription",{defaultValue:"Clear the search or status filter to see all keys."})}):H.length>0?o.jsx(NR,{caption:e("apiKeys.table.label"),columns:G,data:H,sorting:{defaultSorting:[{id:"created",desc:!0}]},pagination:{pageSize:20,pageSizeOptions:[10,20,50,100],pageIndex:O.page-1,onPageChange:fe=>E({page:fe+1===1?void 0:String(fe+1)},{replace:!1})},containerClassName:"pb-3 max-h-[60vh]",stickyHeader:!0,stickyFirstColumn:!0,stickyActionsColumn:!0,rowActions:qs,mobileCard:yt}):o.jsx(Ot,{title:e("apiKeys.noActive.title",{defaultValue:"No active keys"}),description:e("apiKeys.noActive.description",{defaultValue:"Re-enable a disabled key below, or create a new one."})})]}),ee.length>0?o.jsxs("section",{className:"space-y-2",children:[o.jsxs("div",{children:[o.jsx("h2",{className:"text-sm font-semibold",children:e("apiKeys.parked.title",{defaultValue:"Disabled & revoked"})}),o.jsx("p",{className:"text-xs text-[color:var(--muted-foreground)]",children:e("apiKeys.parked.description",{defaultValue:"Turned-off or revoked keys. Re-enable a disabled one, or keep it here for the record."})})]}),o.jsx(Ee,{className:"overflow-hidden",children:o.jsx(NR,{caption:e("apiKeys.parked.title",{defaultValue:"Disabled & revoked"}),columns:G,data:ee,sorting:{defaultSorting:[{id:"created",desc:!0}]},pagination:{pageSize:20,pageSizeOptions:[10,20,50,100]},containerClassName:"pb-3 max-h-[60vh]",stickyHeader:!0,stickyFirstColumn:!0,stickyActionsColumn:!0,rowActions:qs,mobileCard:yt})})]}):null,o.jsx(Vn,{open:s,onOpenChange:fe=>{fe||tt()},children:o.jsx(Nn,{side:"auto",className:"gap-0 overflow-hidden !p-0",children:i==="created"&&n?o.jsx(Xhs,{name:N.name,fullKey:n,baseUrl:ye,testModel:Vhs(N.scopeMode==="limited"?N.allowedModels:[]),onImport:fe=>{const Ne=N.scopeMode==="limited"?N.allowedModels:[],rt=Ne.map(cn=>{const vn=cn.includes("/")?cn.split("/")[0]??"":"";return{id:cn,supportedProtocols:vn==="anthropic"?["anthropic_messages"]:vn==="openai"?["openai_chat","openai_responses"]:["openai_chat","openai_responses","anthropic_messages"]}}),na=mL(fe,Ne,{status:"ok",models:rt});window.location.href=ag(fe,ye,n,N.name,na)},onDone:tt}):o.jsxs("form",{onSubmit:Tt,className:"flex h-full flex-col",children:[o.jsxs(Pa,{className:"shrink-0 border-b border-[color:var(--border)] px-4 py-4 sm:px-5",children:[o.jsx(Rn,{className:"break-words [overflow-wrap:anywhere]",children:e(f?"apiKeys.editTitle":"apiKeys.createTitle")}),o.jsx(ua,{className:"break-words [overflow-wrap:anywhere]",children:e("apiKeys.formDescription")})]}),o.jsxs("div",{className:"flex-1 space-y-5 overflow-y-auto px-4 py-4 sm:px-5",children:[o.jsxs("label",{className:"grid gap-1.5 text-sm font-medium",children:[e("apiKeys.keyName"),o.jsx(ge,{autoFocus:!0,value:N.name,onChange:fe=>I(Ne=>({...Ne,name:fe.target.value}))})]}),o.jsxs("div",{className:"grid gap-2 text-sm font-medium",children:[e("apiKeys.scope.label",{defaultValue:"Model access"}),o.jsx(el,{ariaLabel:e("apiKeys.scope.label",{defaultValue:"Model access"}),value:N.scopeMode,onValueChange:fe=>I(Ne=>({...Ne,scopeMode:fe})),className:"w-full max-w-full [&>button]:min-w-0 [&>button]:flex-1 [&>button]:break-words [&>button]:px-2 [&>button]:text-xs sm:[&>button]:text-sm",options:[{value:"all",label:e("apiKeys.scope.all",{defaultValue:"All models"})},{value:"limited",label:e("apiKeys.scope.limited",{defaultValue:"Restrict to specific models"}),disabled:_e}]}),N.scopeMode==="all"?o.jsx("span",{className:"text-xs font-normal text-[color:var(--muted-foreground)]",children:e("apiKeys.scope.allHint",{defaultValue:"This key can call every model, including ones added later."})}):o.jsxs(o.Fragment,{children:[o.jsx(rhs,{value:N.allowedModels,onChange:fe=>I(Ne=>({...Ne,allowedModels:fe})),models:B.items,isLoading:B.isLoading,isError:B.isError,onRetry:()=>B.refetch()}),o.jsx("span",{className:X("text-xs font-normal",N.allowedModels.length===0?"text-[color:var(--warning-foreground)]":"text-[color:var(--muted-foreground)]"),children:N.allowedModels.length===0?e("apiKeys.scope.pickAtLeastOne",{defaultValue:"Pick at least one model, or switch to All models."}):f?e("apiKeys.scope.snapshotHintEdit",{defaultValue:"Only the models you pick — new models are not added automatically. Switching to All models replaces this whitelist."}):e("apiKeys.scope.snapshotHint",{defaultValue:"Only the models you pick — new models added later are not included automatically."})})]})]}),o.jsxs("div",{className:"grid gap-1.5 text-sm font-medium",children:[e("apiKeys.tags.label",{defaultValue:"Tags"}),o.jsx(K_,{value:N.tags,suggestions:F,onChange:fe=>I(Ne=>({...Ne,tags:fe})),placeholder:e("apiKeys.tags.placeholder",{defaultValue:"Add a tag and press Enter"}),removeLabel:e("apiKeys.tags.remove",{defaultValue:"Remove"})})]}),o.jsx(IV,{type:"single",collapsible:!0,value:d?"advanced":"",onValueChange:fe=>m(fe==="advanced"),children:o.jsxs(J_,{value:"advanced",className:"rounded-md border px-3",children:[o.jsx(ej,{children:e("apiKeys.advancedSettings",{defaultValue:"Advanced settings"})}),o.jsxs(tj,{className:"grid gap-4",children:[o.jsxs("label",{className:"grid gap-1.5 text-sm font-medium",children:[e("apiKeys.monthlyCreditLimit"),o.jsx(ge,{type:"number",inputMode:"decimal",min:"0",step:"any",startIcon:"$",onWheel:fe=>fe.currentTarget.blur(),value:N.monthlyCreditLimit,onChange:fe=>I(Ne=>({...Ne,monthlyCreditLimit:fe.target.value})),placeholder:e("apiKeys.unlimited")})]}),o.jsxs("label",{className:"grid gap-1.5 text-sm font-medium",children:[e("apiKeys.expiresAt"),o.jsx(fr,{value:N.expiresAt,onChange:fe=>I(Ne=>({...Ne,expiresAt:fe})),placeholder:e("apiKeys.unlimited"),minDate:new Date,locale:t.language,clearLabel:e("common.clearAll"),labels:gr(e,e("common.clearAll"))})]})]})]})}),f?o.jsxs("label",{className:"grid gap-1.5 text-sm font-medium",children:[e("apiKeys.table.status"),o.jsxs(ft,{value:N.status,onValueChange:fe=>I(Ne=>({...Ne,status:fe})),children:[o.jsx("option",{value:"active",children:e("apiKeys.status.active")}),o.jsx("option",{value:"inactive",children:e("apiKeys.status.inactive")})]})]}):null]}),o.jsxs("div",{className:"grid shrink-0 gap-2 border-t border-[color:var(--border)] bg-[color:var(--card)] px-4 py-4 sm:flex sm:justify-end sm:px-5",children:[o.jsx(K,{type:"button",variant:"outline",onClick:tt,className:"min-w-0",children:e("apiKeys.cancel")}),o.jsx(K,{type:"submit",disabled:pe||!N.name.trim()||ae,className:"min-w-0",children:e(pe?"apiKeys.saving":"apiKeys.save")})]})]})})}),o.jsx(Up,{open:y!==null,onOpenChange:fe=>{fe||v(null)},children:o.jsx(fu,{className:"max-w-2xl",children:y?o.jsx(Qhs,{apiKey:y,baseUrl:ye,onImportWithKey:async(fe,Ne,rt)=>{v(null),await an(fe,Ne,rt)}}):null})}),w?o.jsx(Zhs,{app:w.app,keyName:w.key.name,allowedModels:cx(w.key),onAdjust:()=>{const fe=w.key,Ne=w.app;S(null),_({app:Ne,key:fe}),Ae(fe)},onForceImport:()=>{const{app:fe,key:Ne}=w;
904S(null),window.location.href=ag(fe,ye,dx,Ne.name),ie.info(e("apiKeys.ccswitch.pasteHint",{defaultValue:"Opened CC Switch with a placeholder — paste your saved API key there."}))},onClose:()=>S(null)}):null,k?o.jsx(Jhs,{app:k.app,plan:k.plan,keyName:k.key.name,onConfirm:()=>{const{app:fe,key:Ne,plan:rt,fullKey:na}=k;T(null),window.location.href=ag(fe,ye,na,Ne.name,rt)},onAdjust:()=>{const{app:fe,key:Ne}=k;T(null),_({app:fe,key:Ne}),Ae(Ne)},onClose:()=>T(null)}):null,o.jsx(Cw,{open:P!==null,onOpenChange:fe=>{fe||j(null)},children:o.jsxs(ay,{className:"max-w-md",children:[o.jsxs(Sw,{children:[o.jsx(oy,{className:"break-words [overflow-wrap:anywhere]",children:e("apiKeys.revoke",{defaultValue:"Revoke"})}),o.jsx(sy,{className:"break-words [overflow-wrap:anywhere]",children:P?e("apiKeys.revokeConfirm",{name:P.name}):""})]}),o.jsxs(Aw,{className:"grid gap-2 sm:flex sm:justify-end",children:[o.jsx(ry,{disabled:Y.isPending,className:"mt-0 min-w-0",children:e("apiKeys.cancel")}),o.jsx(z_,{disabled:Y.isPending||!P,className:X("min-w-0",ur({variant:"destructive"})),onClick:fe=>{fe.preventDefault(),P&&(Y.mutate(Js(P)),j(null))},children:e("apiKeys.actions.delete")})]})]})})]})}function ag(e,t,n,a,s){const r=s?.action==="pin",i=e==="codex"?_hs:void 0;return Mhs({app:e,endpointUrl:e==="claude"?t.replace(/\/v1\/?$/,""):t,homepageUrl:qhs,providerName:Nhs(a),apiKey:n,model:r?s.model:i,haikuModel:r?s.haikuModel:void 0,sonnetModel:r?s.sonnetModel:void 0,opusModel:r?s.opusModel:void 0})}function Tj({onImport:e,disabled:t,loading:n,compact:a=!1}){const{t:s}=W();return o.jsxs(zp,{children:[o.jsx(qp,{asChild:!0,children:o.jsx(K,{size:"sm",disabled:t||n,"aria-busy":n,className:X("max-w-full min-w-0",a?"h-8 px-2.5 text-xs":void 0),children:n?o.jsxs("span",{className:"flex min-w-0 items-center gap-1.5",children:[o.jsx("span",{className:"size-3.5 animate-spin rounded-full border-2 border-current border-t-transparent"}),o.jsx("span",{className:"min-w-0 truncate",children:s("apiKeys.ccswitch.checking",{defaultValue:"Checking…"})})]}):o.jsxs(o.Fragment,{children:[o.jsx("span",{className:"min-w-0 truncate",children:s("apiKeys.ccswitch.import")}),o.jsx(zc,{className:"size-3.5"})]})})}),o.jsx(xu,{align:"end",className:"w-[var(--radix-dropdown-menu-trigger-width)] max-w-[calc(100vw-1rem)]",children:MK.map(r=>o.jsx(La,{onSelect:()=>e(r),className:"min-h-10",children:s(`apiKeys.ccswitch.${r}`)},r))})]})}function Qhs({apiKey:e,baseUrl:t,onImportWithKey:n}){const{t:a}=W(),s=uhs(Js(e)),r=`${$j(e)}...${wj(e)}`,i=s.data?.fullKey??null,c=i??dx;return o.jsxs(o.Fragment,{children:[o.jsx(Xh,{children:o.jsxs("div",{className:"flex min-w-0 flex-col gap-3 pr-8 sm:flex-row sm:items-start sm:justify-between",children:[o.jsxs("div",{className:"grid min-w-0 gap-1.5",children:[o.jsx(gu,{className:"break-words [overflow-wrap:anywhere]",children:a("apiKeys.useTitle")}),o.jsx(hu,{className:"break-words [overflow-wrap:anywhere]",children:a("apiKeys.useDescription")})]}),o.jsx(Tj,{onImport:d=>{n(d,e,c)}})]})}),o.jsxs("div",{className:"grid gap-4",children:[o.jsxs("div",{className:"min-w-0 rounded-md border border-[color:var(--border)] bg-[color:var(--muted)]/35 p-3 text-sm",children:[o.jsxs("div",{className:"break-words font-medium [overflow-wrap:anywhere]",children:[e.name," · ",r]}),s.isLoading?o.jsx("p",{className:"mt-1 text-[color:var(--muted-foreground)]",children:a("apiKeys.use.revealing",{defaultValue:"Decrypting key…"})}):i?null:o.jsx("p",{className:"mt-1 break-words text-[color:var(--muted-foreground)] [overflow-wrap:anywhere]",children:a("apiKeys.use.fullKeyUnavailable",{defaultValue:"This key can no longer be shown. Use the value you saved, or create a new key."})})]}),i?o.jsx(xd,{label:a("apiKeys.copyApiKey"),value:i}):o.jsx(xd,{label:a("apiKeys.use.keyHint",{defaultValue:"API key"}),value:r}),o.jsx(xd,{label:a("apiKeys.use.baseUrl"),value:t}),o.jsx(xd,{label:a("apiKeys.use.authorization"),value:`Authorization: Bearer ${c}`}),o.jsx(xd,{label:a("apiKeys.use.env"),value:`export ONEHOP_API_KEY="${c}"`}),o.jsx(xd,{label:a("apiKeys.use.curl"),value:EK(t,c),multiline:!0})]})]})}function xd({label:e,value:t,multiline:n=!1}){return n?o.jsxs("div",{className:"grid min-w-0 gap-1.5","data-clarity-mask":"true",children:[o.jsxs("div",{className:"flex min-w-0 items-center justify-between gap-3",children:[o.jsx("span",{className:"min-w-0 break-words text-sm font-medium [overflow-wrap:anywhere]",children:e}),o.jsx(py,{value:t})]}),o.jsx("code",{className:"block max-w-full overflow-x-auto whitespace-pre rounded-md bg-[color:var(--muted)] p-3 text-xs",children:t})]}):o.jsxs("div",{className:"grid min-w-0 gap-1.5","data-clarity-mask":"true",children:[o.jsx("span",{className:"min-w-0 break-words text-sm font-medium [overflow-wrap:anywhere]",children:e}),o.jsx(xj,{value:t,mono:!0})]})}function Xhs({name:e,fullKey:t,baseUrl:n,testModel:a,onImport:s,onDone:r}){const{t:i}=W();return o.jsxs("div",{className:"flex h-full flex-col",children:[o.jsxs(Pa,{className:"shrink-0 border-b border-[color:var(--border)] px-4 py-4 sm:px-5",children:[o.jsxs(Rn,{className:"flex min-w-0 items-center gap-2 break-words [overflow-wrap:anywhere]",children:[o.jsx("span",{className:"grid size-6 place-items-center rounded-full bg-[color:var(--success)]/15 text-[color:var(--success)]",children:o.jsx(cy,{className:"size-4"})}),i("apiKeys.created.title",{defaultValue:"API key created"})]}),o.jsx(ua,{className:"break-words [overflow-wrap:anywhere]",children:i("apiKeys.created.subtitle",{name:e,defaultValue:"{{name}} is ready — connect it now."})})]}),o.jsxs("div",{className:"flex-1 space-y-5 overflow-y-auto px-4 py-4 sm:px-5",children:[o.jsxs("div",{className:"grid min-w-0 gap-1.5","data-clarity-mask":"true",children:[o.jsx("span",{className:"text-sm font-medium",children:i("apiKeys.copyApiKey")}),o.jsx(xj,{value:t,mono:!0,autoFocus:!0}),o.jsx("span",{className:"break-words text-xs text-[color:var(--warning-foreground)] [overflow-wrap:anywhere]",children:i("apiKeys.created.onceWarning",{defaultValue:"Shown once. You can re-reveal it later, but copy it now to be safe."})})]}),o.jsxs("div",{className:"grid gap-1.5",children:[o.jsx("span",{className:"text-xs font-semibold uppercase tracking-wide text-[color:var(--muted-foreground)]",children:i("apiKeys.created.connect",{defaultValue:"Connect"})}),o.jsx("div",{children:o.jsx(Tj,{onImport:s})})]}),o.jsx(xd,{label:i("apiKeys.use.curl"),value:EK(n,t,a),multiline:!0}),o.jsxs("div",{className:"grid gap-1.5",children:[o.jsx("span",{className:"text-xs font-semibold uppercase tracking-wide text-[color:var(--muted-foreground)]",children:i("apiKeys.use.protocolEndpoints",{defaultValue:"Protocol endpoints"})}),o.jsx("ul",{className:"grid gap-1 text-13",children:Object.entries(X$.reduce((c,d)=>{const m=Wd[d].baseUrlSegment;return(c[m]??(c[m]=[])).push(Wd[d].label),c},{})).map(([c,d])=>o.jsxs("li",{className:"grid gap-1 sm:flex sm:flex-wrap sm:items-baseline sm:justify-between sm:gap-2",children:[o.jsx("span",{className:"text-[color:var(--muted-foreground)]",children:d.join(" · ")}
904),o.jsx("code",{className:"break-all font-[family-name:var(--font-mono)] text-xs",children:`${DK()}/${c}`})]},c))})]})]}),o.jsx("div",{className:"grid shrink-0 border-t border-[color:var(--border)] bg-[color:var(--card)] px-4 py-4 sm:flex sm:justify-end sm:px-5",children:o.jsx(K,{type:"button",onClick:r,className:"min-w-0",children:i("apiKeys.created.done",{defaultValue:"Done"})})})]})}function Zhs({app:e,keyName:t,allowedModels:n,onAdjust:a,onForceImport:s,onClose:r}){const{t:i}=W(),c=i(`apiKeys.ccswitch.${e}`);return o.jsx(Up,{open:!0,onOpenChange:d=>{d||r()},children:o.jsxs(fu,{className:"max-w-md",children:[o.jsxs(Xh,{children:[o.jsx(gu,{className:"break-words [overflow-wrap:anywhere]",children:i("apiKeys.ccswitch.blocked.title",{client:c,defaultValue:`${c} cannot use this key`})}),o.jsx(hu,{className:"break-words [overflow-wrap:anywhere]",children:i("apiKeys.ccswitch.blocked.body",{keyName:t,client:c,defaultValue:`"${t}" only allows models that ${c} cannot use. Importing will result in errors.`})})]}),n.length>0?o.jsx("div",{className:"flex min-w-0 flex-wrap gap-1.5",children:n.map(d=>o.jsx(Xt,{variant:"secondary",className:"max-w-full break-all font-[family-name:var(--font-mono)] text-xs leading-snug",children:d},d))}):null,o.jsxs("div",{className:"grid gap-2 pt-1 sm:flex sm:items-center sm:justify-between",children:[o.jsx(K,{variant:"ghost",size:"sm",onClick:s,className:"justify-center text-[color:var(--muted-foreground)]",children:i("apiKeys.ccswitch.blocked.forceImport",{defaultValue:"Import anyway (will not work)"})}),o.jsxs("div",{className:"grid gap-2 sm:flex",children:[o.jsx(K,{variant:"outline",size:"sm",onClick:r,children:i("apiKeys.cancel")}),o.jsx(K,{size:"sm",onClick:a,children:i("apiKeys.ccswitch.blocked.adjust",{defaultValue:"Adjust model scope"})})]})]})]})})}function hL(e){return e.includes("/")?e.split("/").slice(1).join("/"):e}function Jhs({app:e,plan:t,keyName:n,onConfirm:a,onAdjust:s,onClose:r}){const{t:i}=W(),c=i(`apiKeys.ccswitch.${e}`),d=hL(t.model),m=e==="claude"&&(t.haikuModel!==t.sonnetModel||t.sonnetModel!==t.opusModel);return o.jsx(Up,{open:!0,onOpenChange:f=>{f||r()},children:o.jsxs(fu,{className:"max-w-md",children:[o.jsxs(Xh,{children:[o.jsx(gu,{className:"break-words [overflow-wrap:anywhere]",children:i("apiKeys.ccswitch.pin.title",{model:d,client:c,defaultValue:`Import as ${d}`})}),o.jsx(hu,{className:"break-words [overflow-wrap:anywhere]",children:i("apiKeys.ccswitch.pin.body",{keyName:n,client:c,model:d,defaultValue:`"${n}" doesn't include ${c}'s default model. Claude Code will use the models below when routing through this provider.`})})]}),m?o.jsx(Ee,{className:"overflow-hidden text-sm divide-y divide-[color:var(--border)]",children:[{label:"Haiku",id:t.haikuModel},{label:"Sonnet",id:t.sonnetModel},{label:"Opus",id:t.opusModel}].map(({label:f,id:p})=>o.jsxs("div",{className:"grid grid-cols-[auto_minmax(0,1fr)] items-center gap-3 px-3 py-2",children:[o.jsx("span",{className:"text-[color:var(--muted-foreground)]",children:f}),o.jsx("code",{className:"min-w-0 break-all text-right font-[family-name:var(--font-mono)] text-xs",children:hL(p)})]},f))}):null,o.jsxs("div",{className:"grid gap-2 pt-1 sm:flex sm:justify-end",children:[o.jsx(K,{variant:"outline",size:"sm",onClick:s,children:i("apiKeys.ccswitch.pin.adjust",{defaultValue:"Adjust model scope"})}),o.jsx(K,{size:"sm",onClick:a,children:i("apiKeys.ccswitch.pin.confirm",{model:d,defaultValue:`Import with ${d}`})})]})]})})}function eys(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone||void 0}catch{return}}async function tys(e){const t=new URLSearchParams;for(const[f,p]of Object.entries(e))p&&t.set(f,p);const n=eys();n&&t.set("tz",n);const a=`${sj()}/console/usage-records/export?${t.toString()}`,s=await fetch(a,{credentials:"include",headers:{Accept:"text/csv"}});if(!s.ok)throw new Error(`Export failed (${s.status})`);const r=s.headers.get("X-Export-Truncated")==="1",i=Number(s.headers.get("X-Export-Count")??0),c=await s.blob(),d=URL.createObjectURL(c),m=document.createElement("a");return m.href=d,m.download=`onehop-logs-${new Date().toISOString().slice(0,10)}.csv`,m.click(),URL.revokeObjectURL(d),{truncated:r,count:i}}function nys(e={}){const t=UK(e);return Ue({queryKey:Ht.usageRecords(t),queryFn:()=>Ye.request(`/console/usage-records${$r(t)}`),retry:1})}function ays(){return Ue({queryKey:Ht.usageRecordModels,queryFn:()=>Ye.request("/console/usage-records/models"),retry:1})}function OK(e={},t={}){const n=UK(e);return Ue({queryKey:Ht.usageRecordsSummary(n),queryFn:()=>Ye.request(`/console/usage-records/summary${$r(n)}`),retry:1,enabled:t.enabled??!0})}function LK(e,t="/console/usage-records"){return Ue({queryKey:["usage-records","detail",t,e],queryFn:()=>Ye.request(`${t}/${e}`),enabled:!!e,retry:1,refetchInterval:n=>{const a=n.state.data?.status;return a==="queued"||a==="running"?2e3:!1}})}function Kw(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone||void 0}catch{return}}function UK(e){const t=Kw();return t?{...e,tz:t}:e}function BK(e=30){const t=Kw();return Ue({queryKey:Ht.usageTrends(e),queryFn:()=>Ye.request(`/console/usage-records/trends?days=${e}${t?`&tz=${encodeURIComponent(t)}`:""}`),retry:1})}function kS(e){const t={groupBy:e.groupBy}
904;e.metric&&(t.metric=e.metric),e.granularity&&(t.granularity=e.granularity),e.startDate&&(t.startDate=e.startDate),e.endDate&&(t.endDate=e.endDate);const n=Kw();return n&&(t.tz=n),Ue({queryKey:["console","usage-records","stacked",t],queryFn:()=>Ye.request(`/console/usage-records/stacked${$r(t)}`),retry:1,staleTime:6e4})}function oys(e={}){const t={};e.startDate&&(t.startDate=e.startDate),e.endDate&&(t.endDate=e.endDate),e.granularity&&(t.granularity=e.granularity),e.days&&(t.days=e.days);const n=Kw();return n&&(t.tz=n),Ue({queryKey:["console","usage","dashboard",t],queryFn:()=>Ye.request(`/console/usage/dashboard${$r(t)}`),retry:1,staleTime:3e4})}function Ze({label:e,icon:t,value:n,options:a,onChange:s}){const{t:r}=W();return o.jsx(ca,{fieldClassName:Qo,label:t?o.jsxs("span",{className:"inline-flex items-center gap-1.5",children:[t,e]}):e,"aria-label":e,value:n,onChange:i=>s(i.target.value),children:a.map(i=>{const c=i.icon?i.label:r(`optionLabels.${i.value||"all"}`,{defaultValue:i.label});return o.jsx("option",{value:i.value,children:i.icon?o.jsxs("span",{className:"flex items-center gap-2",children:[i.icon,c]}):c},i.value||"all")})})}function sys(e){const t=e.indexOf("/");return t>0?e.slice(0,t):e}const yL=["last1h","today","yesterday","last7d","last30d","thisMonth","custom","all"],rys=["","chat","image","video"],iys=["","success","failed","pending","repairing","queued","running","cancelled","expired"],lys=["","stop","length","tool_calls","content_filter","error"],cys=["","true","false"];function dys(e){const{t}=W(),n=t("logs.filter.all",{defaultValue:"All"}),a=!!(e.apiKey||e.models.length>0||e.status||e.secondary.type||e.secondary.finishReason||e.secondary.stream||e.secondary.costMin||e.secondary.costMax||e.secondary.latencyMin||e.secondary.latencyMax),s=[{value:"",label:n},...e.apiKeyOptions],r=iys.map(m=>({value:m,label:m?t(`logs.status.${m}`,{defaultValue:m}):n})),i=rys.map(m=>({value:m,label:m?t(`logs.type.${m}`,{defaultValue:{chat:"Chat",image:"Image",video:"Video"}[m]??m}):n})),c=lys.map(m=>({value:m,label:m?t(`logs.finishReason.${m}`,{defaultValue:m}):n})),d=cys.map(m=>({value:m,label:m?t(`logs.stream.${m}`,{defaultValue:m==="true"?"Streaming":"Non-streaming"}):n}));return o.jsxs("div",{className:"grid gap-3 rounded-md border border-[color:var(--border)] bg-[color:var(--background)] p-2 md:p-3",children:[o.jsxs("div",{className:"grid gap-2 md:hidden",children:[o.jsxs("div",{className:"grid grid-cols-1 gap-2 min-[360px]:grid-cols-[minmax(0,0.95fr)_minmax(0,1.05fr)]",children:[o.jsxs("label",{className:X(Qo,"min-w-0 gap-1 text-xs"),children:[o.jsx("span",{className:"sr-only",children:t("logs.filter.time",{defaultValue:"Time"})}),o.jsx(uh,{value:e.dateRange,onChange:e.onDateRangeChange,presets:yL,defaultPreset:"last1h",locale:e.locale,triggerAriaLabel:t("logs.filter.mobileDateRangeAria",{defaultValue:"Select mobile date range"}),labels:fh(t,{last1h:t("logs.range.last1h",{defaultValue:"Last 1 hour"}),today:t("logs.range.today",{defaultValue:"Today"}),yesterday:t("logs.range.yesterday",{defaultValue:"Yesterday"}),last7d:t("logs.range.last7d",{defaultValue:"Last 7 days"}),last30d:t("logs.range.last30d",{defaultValue:"Last 30 days"}),thisMonth:t("logs.range.thisMonth",{defaultValue:"This month"}),custom:t("logs.range.custom",{defaultValue:"Custom"}),all:t("logs.range.all",{defaultValue:"All time"})})})]}),o.jsxs("label",{className:X(Qo,"min-w-0 gap-1 text-xs"),children:[o.jsx("span",{className:"sr-only",children:t("logs.filter.requestIdLabel",{defaultValue:"Request ID"})}),o.jsx(ge,{type:"text",value:e.requestId,onChange:m=>e.onRequestIdChange(m.target.value),placeholder:t("logs.filter.requestIdLabel",{defaultValue:"Request ID"}),startIcon:o.jsx(hp,{className:"size-3.5"}),className:"font-mono text-xs"})]})]}),o.jsxs(Gp,{label:t("logs.filter.mobileTitle",{defaultValue:"Filters"}),active:a,open:e.expanded,onOpenChange:e.onExpandedChange,children:[o.jsx(Ze,{label:t("logs.filter.apiKey",{defaultValue:"API key"}),value:e.apiKey,options:s,onChange:e.onApiKeyChange}),o.jsx(vL,{value:e.models,options:e.modelOptions,onChange:e.onModelsChange}),o.jsx(Ze,{label:t("logs.filter.status",{defaultValue:"Status"}),value:e.status,options:r,onChange:e.onStatusChange}),o.jsx(Ze,{label:t("logs.filter.type",{defaultValue:"Type"}),value:e.secondary.type,options:i,onChange:m=>e.onSecondaryChange({type:m})}),o.jsx(Ze,{label:t("logs.filter.finishReason",{defaultValue:"Finish reason"}),value:e.secondary.finishReason,options:c,onChange:m=>e.onSecondaryChange({finishReason:m})}),o.jsx(Ze,{label:t("logs.filter.stream",{defaultValue:"Stream"}),value:e.secondary.stream,options:d,onChange:m=>
904e.onSecondaryChange({stream:m})}),o.jsx(vb,{label:t("logs.filter.cost",{defaultValue:"Cost (USD)"}),min:e.secondary.costMin,max:e.secondary.costMax,step:"0.0001",onMin:m=>e.onSecondaryChange({costMin:m}),onMax:m=>e.onSecondaryChange({costMax:m})}),o.jsx(vb,{label:t("logs.filter.latency",{defaultValue:"Latency (s)"}),min:e.secondary.latencyMin,max:e.secondary.latencyMax,step:"0.1",onMin:m=>e.onSecondaryChange({latencyMin:m}),onMax:m=>e.onSecondaryChange({latencyMax:m})}),o.jsxs("div",{className:"grid min-w-0 grid-cols-1 gap-2 min-[360px]:flex min-[360px]:flex-wrap min-[360px]:justify-end [&>*]:min-w-0",children:[e.reset,e.columnSettings,e.exportAction]})]})]}),o.jsxs("div",{className:"hidden gap-3 md:grid md:grid-cols-2 xl:flex xl:flex-wrap xl:items-end",children:[o.jsxs("label",{className:Qo,children:[o.jsx("span",{children:t("logs.filter.time",{defaultValue:"Time"})}),o.jsx(uh,{value:e.dateRange,onChange:e.onDateRangeChange,presets:yL,defaultPreset:"last1h",locale:e.locale,triggerAriaLabel:t("logs.filter.desktopDateRangeAria",{defaultValue:"Select desktop date range"}),labels:fh(t,{last1h:t("logs.range.last1h",{defaultValue:"Last 1 hour"}),today:t("logs.range.today",{defaultValue:"Today"}),yesterday:t("logs.range.yesterday",{defaultValue:"Yesterday"}),last7d:t("logs.range.last7d",{defaultValue:"Last 7 days"}),last30d:t("logs.range.last30d",{defaultValue:"Last 30 days"}),thisMonth:t("logs.range.thisMonth",{defaultValue:"This month"}),custom:t("logs.range.custom",{defaultValue:"Custom"}),all:t("logs.range.all",{defaultValue:"All time"})})})]}),o.jsx("div",{className:"min-w-0 xl:min-w-[170px] xl:flex-1",children:o.jsx(Ze,{label:t("logs.filter.apiKey",{defaultValue:"API key"}),value:e.apiKey,options:s,onChange:e.onApiKeyChange})}),o.jsx("div",{className:"min-w-0 xl:min-w-[170px] xl:flex-1",children:o.jsx(vL,{value:e.models,options:e.modelOptions,onChange:e.onModelsChange})}),o.jsx("div",{className:"min-w-0 xl:w-[120px]",children:o.jsx(Ze,{label:t("logs.filter.status",{defaultValue:"Status"}),value:e.status,options:r,onChange:e.onStatusChange})}),o.jsx("div",{className:"min-w-0 xl:w-[120px]",children:o.jsx(Ze,{label:t("logs.filter.type",{defaultValue:"Type"}),value:e.secondary.type,options:i,onChange:m=>e.onSecondaryChange({type:m})})}),o.jsx("div",{className:"min-w-0 xl:w-[148px]",children:o.jsx(Ze,{label:t("logs.filter.finishReason",{defaultValue:"Finish reason"}),value:e.secondary.finishReason,options:c,onChange:m=>e.onSecondaryChange({finishReason:m})})}),o.jsx("div",{className:"min-w-0 xl:w-[120px]",children:o.jsx(Ze,{label:t("logs.filter.stream",{defaultValue:"Stream"}),value:e.secondary.stream,options:d,onChange:m=>e.onSecondaryChange({stream:m})})}),o.jsxs("label",{className:X(Qo,"min-w-0 xl:min-w-[200px] xl:flex-1"),children:[o.jsx("span",{children:t("logs.filter.requestIdLabel",{defaultValue:"Request ID"})}),o.jsx(ge,{type:"text",value:e.requestId,onChange:m=>e.onRequestIdChange(m.target.value),placeholder:t("logs.filter.request",{defaultValue:"Search by request ID"}),startIcon:o.jsx(hp,{className:"size-3.5"}),className:"font-mono text-xs"})]}),o.jsxs("div",{className:"flex min-w-0 flex-wrap items-end gap-2 md:col-span-2 xl:col-span-1 xl:flex-nowrap",children:[e.reset,o.jsxs(K,{type:"button",variant:"outline",size:"sm",className:"h-10 gap-1.5 px-3","aria-expanded":e.expanded,onClick:()=>e.onExpandedChange(!e.expanded),children:[t("logs.filter.more",{defaultValue:"More filters"}),o.jsx(zc,{className:X("size-3.5 transition-transform",e.expanded&&"rotate-180")})]}),e.columnSettings,e.exportAction]})]}),e.expanded?o.jsxs("div",{className:"hidden gap-3 border-t border-[color:var(--border)] pt-3 md:grid md:grid-cols-2",children:[o.jsx(vb,{label:t("logs.filter.cost",{defaultValue:"Cost (USD)"}),min:e.secondary.costMin,max:e.secondary.costMax,step:"0.0001",onMin:m=>e.onSecondaryChange({costMin:m}),onMax:m=>e.onSecondaryChange({costMax:m})}),o.jsx(vb,{label:t("logs.filter.latency",{defaultValue:"Latency (s)"}),min:e.secondary.latencyMin,max:e.secondary.latencyMax,step:"0.1",onMin:m=>e.onSecondaryChange({latencyMin:m}),onMax:m=>e.onSecondaryChange({latencyMax:m})})]}):null]})}function vL({value:e,options:t,onChange:n}){const{t:a}=W(),s=a("logs.filter.model",{defaultValue:"Model"}),r=a("logs.filter.all",{defaultValue:"All"});return o.jsxs("div",{className:Qo,children:[o.jsx("span",{children:s}
904),o.jsx(ly,{"aria-label":s,value:e,onChange:n,allLabel:r,placeholder:r,className:"h-10",options:t.map(i=>({value:i,label:o.jsxs("span",{className:"flex min-w-0 items-center gap-1.5",children:[o.jsx(Xo,{authorSlug:sys(i),size:16,className:"shrink-0 text-[color:var(--muted-foreground)]"}),o.jsx("span",{className:"truncate",children:i})]})})),triggerLabel:i=>i.length===0?r:i.length===1?i[0]:a("logs.filter.modelsSelected",{count:i.length,defaultValue:"{{count}} selected"})})]})}function vb({label:e,min:t,max:n,step:a,onMin:s,onMax:r}){const{t:i}=W();return o.jsxs("div",{className:Qo,children:[o.jsx("span",{children:e}),o.jsxs("div",{className:"flex items-center gap-1.5",children:[o.jsx(ge,{type:"number",inputMode:"decimal",step:a,min:"0",value:t,onChange:c=>s(c.target.value),placeholder:i("logs.filter.min",{defaultValue:"Min"}),className:"min-w-0 px-2 text-xs tabular-nums"}),o.jsx("span",{className:"text-[color:var(--muted-foreground)]",children:"–"}),o.jsx(ge,{type:"number",inputMode:"decimal",step:a,min:"0",value:n,onChange:c=>r(c.target.value),placeholder:i("logs.filter.max",{defaultValue:"Max"}),className:"min-w-0 px-2 text-xs tabular-nums"})]})]})}function FK(){const e=Re();return ke({mutationFn:t=>Ye.request(`/console/jobs/${t}`,{method:"DELETE",idempotent:!0}),onSuccess:()=>{e.invalidateQueries({queryKey:["console","usage-records"]})}})}function uys({title:e,message:t,content:n,confirmText:a="Confirm",cancelText:s="Cancel",variant:r="default",resolve:i}){const[c,d]=h.useState(!0);h.useEffect(()=>{c||i(!1)},[c]);function m(){i(!0),d(!1)}return o.jsx(Cw,{open:c,onOpenChange:d,children:o.jsxs(ay,{className:"max-h-[calc(100dvh-1rem)] pb-[calc(1rem+env(safe-area-inset-bottom))]",children:[o.jsxs(Sw,{children:[e?o.jsx(oy,{children:e}):null,o.jsx(sy,{className:"break-words leading-relaxed",children:t})]}),n,o.jsxs(Aw,{className:"gap-2 sm:gap-2",children:[o.jsx(ry,{className:"mt-0 w-full sm:w-auto",children:s}),o.jsx(z_,{onClick:m,className:X("w-full sm:w-auto",r==="destructive"&&ur({variant:"destructive"})),children:a})]})]})})}let xm=null,Vx=null;function mys(){return xm||(xm=document.createElement("div"),xm.id="confirm-dialog-host",document.body.appendChild(xm)),Vx||(Vx=H8.createRoot(xm)),xm}function zt(e){const t=typeof e=="string"?{message:e}:e;return new Promise(n=>{mys();function a(s){n(s),setTimeout(()=>{Vx?.render(null)},200)}Vx.render(o.jsx(uys,{...t,resolve:a}))})}function pys(e){return e.onehopRequestId??e.publicId}function fys(e,t){const n=e.replace(/\/v1\/?$/,"").replace(/\/+$/,""),a=(t.endpointPath||"/v1/chat/completions").replace(/^\/+/,"");return`curl ${n}/${a} \\
905  -H "Authorization: Bearer $ONEHOP_API_KEY" \\
906  -H "Content-Type: application/json" \\
907  -d '{"model":"${t.requestedModel}","messages":[{"role":"user","content":"Hello"}]}'`}function bL(e,t,n){try{navigator.clipboard.writeText(e).then(()=>ie.success(t)).catch(()=>ie.error(n))}catch{ie.error(n)}}function zK({record:e}){const{t}=W(),n=FK(),a=pys(e);async function s(){if(!(!e.jobPublicId||!await zt({title:t("logs.cancelJob.title",{defaultValue:"Cancel job?"}),message:t("logs.cancelJob.message",{defaultValue:"This job is still queued. Cancelling stops it from being processed; no charge will be applied."}),confirmText:t("logs.cancelJob.confirm",{defaultValue:"Cancel job"}),cancelText:t("logs.cancelJob.keep",{defaultValue:"Keep"}),variant:"destructive"})))try{await n.mutateAsync(e.jobPublicId),ie.success(t("logs.cancelJob.success",{defaultValue:"Job cancelled"}))}catch(i){ie.error(i instanceof Error?i.message:t("logs.cancelJob.failed",{defaultValue:"Failed to cancel job"}))}}return o.jsxs(zp,{children:[o.jsx(qp,{asChild:!0,children:o.jsx(Aa,{type:"button","aria-label":t("logs.actions.menu",{defaultValue:"Row actions"}),onClick:r=>r.stopPropagation(),children:o.jsx(w9,{className:"size-4","aria-hidden":!0})})}),o.jsxs(xu,{align:"end",onClick:r=>r.stopPropagation(),children:[o.jsxs(La,{onSelect:()=>bL(a,t("logs.actions.copiedId",{defaultValue:"Request ID copied"}),t("logs.actions.copyFailed",{defaultValue:"Copy failed"})),children:[o.jsx(Ow,{className:"size-3.5","aria-hidden":!0}),t("logs.actions.copyId",{defaultValue:"Copy request ID"})]}),o.jsxs(La,{onSelect:()=>bL(fys(Aj(),e),t("logs.actions.copiedCurl",{defaultValue:"curl copied"}),t("logs.actions.copyFailed",{defaultValue:"Copy failed"})),children:[o.jsx(txe,{className:"size-3.5","aria-hidden":!0}),t("logs.actions.copyCurl",{defaultValue:"Copy as curl"})]}),o.jsxs(La,{onSelect:()=>window.open(`/platform/logs?reqId=${encodeURIComponent(a)}`,"_blank","noopener"),children:[o.jsx(dy,{className:"size-3.5","aria-hidden":!0}),t("logs.actions.openTab",{defaultValue:"Open in new tab"})]}),e.cancellable&&e.jobPublicId?o.jsxs(o.Fragment,{children:[o.jsx(eH,{}
907),o.jsxs(La,{className:"text-[color:var(--destructive)] focus:text-[color:var(--destructive)]",disabled:n.isPending,onSelect:r=>{r.preventDefault(),s()},children:[o.jsx(h9,{className:"size-3.5","aria-hidden":!0}),t("logs.cancelJob.confirm",{defaultValue:"Cancel job"})]})]}):null]})]})}const gys={text_input:"textInput",text_output:"textOutput",image_input_token:"imageInput",image_output_token:"imageOutput",per_call_image:"perCallImage",video_per_second:"videoPerSecond",video_per_call:"videoPerCall",cache_read:"cacheRead",cache_write:"cacheWrite",cache_write_5m:"cacheWrite5m",cache_write_1h:"cacheWrite1h"};function qK(e){return gys[e]??null}const hys={per_1m_tokens:"per1mTokens",per_image:"perImage",per_second:"perSecond",per_call:"perCall"};function HK(e){return hys[e]??null}function yys(e){const t=e?.trim().toLowerCase();return t==="priority"||t==="fast"?"fast":t==="flex"?"flex":null}const VK=1e-9;function KK(e,t){if(!e.length||!e.every(r=>r.officialLineCostUsd!=null&&r.officialLineCostUsd!==""))return null;const n=e.reduce((r,i)=>r+Number(i.officialLineCostUsd),0),a=Number(t);if(!Number.isFinite(n)||!Number.isFinite(a)||n<=0)return null;const s=n-a;return s<=VK?null:{officialTotal:n,saved:s,pct:s/n}}function vys(e){if(!e||e.length===0)return null;const t=e[0],n=e[e.length-1],a=Number(t.basisUsd),s=Number(n.resultUsd);if(!Number.isFinite(a)||!Number.isFinite(s)||a<=0)return null;const r=e.reduce((i,c)=>i+Math.abs(Number(c.deltaUsd)||0),0);return r<=VK?null:{rawBilled:a,saved:r,finalBilled:s,pct:r/a}}function GK(e,t){const n=yys(t);return n?e(`logs.serviceTier.${n}`,{defaultValue:n==="fast"?"Fast":"Flex"}):null}function Gw({serviceTier:e,className:t}){const{t:n}=W(),a=GK(n,e);return a?o.jsx("span",{className:X("inline-flex h-5 shrink-0 items-center rounded-sm border border-[color:var(--border)] bg-[color:var(--muted)]/50 px-1.5 text-2xs font-medium leading-none text-[color:var(--foreground)]",t),children:a}):null}const Ss=(e,t=4)=>{if(e==null||e==="")return"—";const n=typeof e=="number"?e:Number(e);return Number.isFinite(n)?`$${n.toFixed(t)}`:"—"};function Pg(e){if(e==null||e==="")return!1;const t=typeof e=="number"?e:Number(e);return Number.isFinite(t)&&t>0}function IR({record:e}){const{t}=W(),n=e.pricingFactors;if(n?.length){const a=KK(n,e.billedCredit),s=vys(e.pricingAdjustments);return o.jsxs("div",{className:"text-xs tabular-nums",children:[n.map((r,i)=>o.jsx(bys,{line:r,t},`${r.factor}-${i}`)),a?o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"my-1.5 border-t border-[color:var(--border)]/40"}),o.jsx(Xs,{label:t("logs.userCost.officialPrice",{defaultValue:"Official price"}),value:Ss(a.officialTotal,6),dim:!0}),o.jsx(Xs,{label:t("logs.userCost.saved",{defaultValue:"You save"}),value:`${Ss(a.saved,6)} (${Math.round(a.pct*100)}%)`})]}
907):null,s?o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"my-1.5 border-t border-[color:var(--border)]/40"}),o.jsx(Xs,{label:t("logs.userCost.promoBasis",{defaultValue:"Before promo"}),value:Ss(s.rawBilled,6),dim:!0}),o.jsx(Xs,{label:t("logs.userCost.promoSaved",{defaultValue:"Promo savings"}),value:`-${Ss(s.saved,6)} (${Math.round(s.pct*100)}%)`})]}):null,o.jsx(xL,{record:e,t}),o.jsx(Xs,{label:t("logs.userCost.total"),value:Ss(e.billedCredit,6),final:!0})]})}return o.jsxs("div",{className:"text-xs tabular-nums",children:[Pg(e.inputCostUsd)?o.jsx(Xs,{label:t("logs.userCost.inputCost"),value:Ss(e.inputCostUsd,6)}):null,Pg(e.outputCostUsd)?o.jsx(Xs,{label:t("logs.userCost.outputCost"),value:Ss(e.outputCostUsd,6)}):null,Pg(e.cacheReadCostUsd)?o.jsx(Xs,{label:t("logs.userCost.cacheReadCost"),value:Ss(e.cacheReadCostUsd,6)}):null,Pg(e.cacheWriteCostUsd)?o.jsx(Xs,{label:t("logs.userCost.cacheWriteCost"),value:Ss(e.cacheWriteCostUsd,6)}):null,o.jsx(xL,{record:e,t}),o.jsx(Xs,{label:t("logs.userCost.total"),value:Ss(e.billedCredit,6),final:!0})]})}function xL({record:e,t}){if(!Pg(e.freeDiscountUsd))return null;const n=Number(e.freeTokensConsumed??0),a=n>0?t("logs.userCost.freeCovered",{tokens:n,defaultValue:"Free allowance ({{tokens}} tokens)"}):t("logs.userCost.freeCoveredNoCount",{defaultValue:"Free allowance"});return o.jsx(Xs,{label:a,value:`-${Ss(e.freeDiscountUsd,6)}`})}function bys({line:e,t}){const n=qK(e.factor),a=n?t(`logs.userCost.factor.${n}`,{defaultValue:e.factor}):e.factor,s=HK(e.unit),r=s?t(`logs.userCost.unit.${s}`,{defaultValue:e.unit}):e.unit;return o.jsxs("div",{className:"grid grid-cols-[minmax(0,1fr)_auto] items-baseline gap-2 py-1",children:[o.jsxs("span",{className:"min-w-0 break-words text-[color:var(--foreground)]",children:[a,o.jsx(Gw,{serviceTier:e.tierKey,className:"ml-1.5"}),o.jsxs("span",{className:"ml-1.5 text-[color:var(--muted-foreground)]",children:["$",e.unitPriceUsd," ",r]})]}),o.jsx("span",{className:"whitespace-nowrap text-[color:var(--foreground)]",children:Ss(e.lineCostUsd,6)})]})}function Xs({label:e,value:t,dim:n=!1,final:a=!1}){return o.jsxs("div",{className:"grid grid-cols-[minmax(0,1fr)_auto] items-baseline gap-2 py-1 "+(a?"mt-1 border-t border-[color:var(--border)] pt-2 font-medium":""),children:[o.jsx("span",{className:(n?"text-[color:var(--muted-foreground)]":"text-[color:var(--foreground)]")+" min-w-0 break-words",children:e}),o.jsx("span",{className:(n?"text-[color:var(--muted-foreground)]":"text-[color:var(--foreground)]")+" whitespace-nowrap",children:t})]})}function Ia({label:e,value:t,muted:n=!1,divider:a=!1,bold:s=!1}){return o.jsxs("div",{className:"flex items-baseline justify-between gap-6 py-1 text-xs "+(a?"mt-1 border-t border-[color:var(--border)] pt-2":""),children:[o.jsx("span",{className:"text-[color:var(--muted-foreground)]",children:e}),o.jsx("span",{className:"tabular-nums "+(n?"text-[color:var(--muted-foreground)]":"text-[color:var(--foreground)]")+(s?" font-medium":""),children:t})]})}function Rc({children:e}){return o.jsx("div",{className:"mb-1 text-11 font-medium uppercase tracking-wide text-[color:var(--muted-foreground)]",children:e})}function Wr(e){if(e==null||e==="")return"$0.000000";const t=typeof e=="number"?e:Number(e);if(!Number.isFinite(t))return"—";if(t===0)return"$0.000000";const n=Math.abs(t),a=t<0?"-$":"$";return n<.01?`${a}${n.toFixed(6)}`:n<1?`${a}${n.toFixed(4)}`:`${a}${n.toFixed(2)}`}function WK({record:e}){const{t}=W(),n=Number(e.billedCredit??0);return Number(e.freeDiscountUsd??0)>0&&n===0?o.jsxs(Ns,{openDelay:150,closeDelay:80,children:[o.jsx(Ds,{asChild:!0,children:o.jsx(Xt,{variant:"secondary",className:"cursor-help",children:t("logs.cost.free",{defaultValue:"Free"})})}),o.jsxs(ns,{className:"min-w-[300px]",children:[o.jsx(Rc,{children:t("logs.costBreakdown.title")}),o.jsx(IR,{record:e})]})]}):n===0?o.jsx("span",{className:"tabular-nums text-[color:var(--muted-foreground)]",children:Wr(0)}):o.jsxs(Ns,{openDelay:150,closeDelay:80,children:[o.jsx(Ds,{asChild:!0,children:o.jsx("span",{className:"cursor-help tabular-nums",children:Wr(e.billedCredit)})}),o.jsxs(ns,{className:"min-w-[300px]",children:[o.jsx(Rc,{children:t("logs.costBreakdown.title")}),o.jsx(IR,{record:e})]})]})}function YK({thumbSrc:e,fullSrc:t,fallback:n,className:a,loading:s}){const r=e&&e!==t?[e,t]:[t],[i,c]=h.useState(0);return i>=r.length?o.jsx(o.Fragment,{children:n}):o.jsx("img",{src:r[i],alt:"",onError:()=>c(d=>d+1),className:a,loading:s})}function Kx(e){try{const t=new URL(e),n=t.protocol==="http:"&&(t.hostname==="localhost"||t.hostname==="127.0.0.1");return!(t.protocol!=="https:"&&!n||/\.svg(\?|$)/i.test(t.pathname))}catch{return!1}}function QK(e){return e.operation==="video_generation"||e.operation==="generate_videos"?!0:e.mediaType==="video"||(e.mediaType?.startsWith("video/")??
907!1)}function xys(e){const t=e.imageCount??1,n=e.imageSize??"",a=t>1?`${t} images`:"1 image";return n?`${a} · ${n}`:a}function $ys({record:e,detailPath:t}){const{t:n}=W(),a=QK(e);return o.jsxs(Ns,{openDelay:150,closeDelay:100,children:[o.jsx(Ds,{asChild:!0,children:o.jsxs("span",{className:"inline-flex items-center gap-1.5 text-[color:var(--muted-foreground)]",children:[a?o.jsx(Fve,{className:"size-3.5"}):o.jsx(S9,{className:"size-3.5"}),o.jsx("span",{className:"text-xs",children:a?n("logs.media.video",{defaultValue:"Video"}):xys(e)})]})}),o.jsx(ns,{align:"start",className:"w-auto max-w-[380px] p-2",children:o.jsx(wys,{publicId:e.publicId,detailPath:t})})]})}function wys({publicId:e,detailPath:t}){const{t:n}=W(),a=LK(e,t);if(a.isLoading)return o.jsx("div",{className:"grid h-24 w-40 place-items-center text-xs text-[color:var(--muted-foreground)]",children:n("logs.drawer.loading")});const s=a.data,r=XK(s?.outputImageUrls,s?.outputImageThumbUrls),i=s?.outputVideoUrl&&Kx(s.outputVideoUrl)?s.outputVideoUrl:null;return i?o.jsx(kys,{src:i}):r.length>0?o.jsx("div",{className:X("grid max-h-[360px] gap-2 overflow-y-auto",r.length===1?"grid-cols-1":"grid-cols-2"),children:r.map(({src:c,thumb:d},m)=>o.jsx(YK,{thumbSrc:d,fullSrc:c,fallback:o.jsx(OR,{}),className:"max-h-[260px] w-full rounded border border-[color:var(--border)] object-contain",loading:"lazy"},`${c}-${m}`))}):o.jsx(OR,{})}function XK(e,t){return(e??[]).map((n,a)=>{const s=t?.[a];return{src:n,thumb:s&&Kx(s)?s:null}}).filter(n=>Kx(n.src))}function kys({src:e}){const[t,n]=h.useState(!1);return t?o.jsx(OR,{}):o.jsx("video",{src:e,controls:!0,onError:()=>n(!0),className:"max-h-[320px] max-w-[360px] rounded border border-[color:var(--border)]",preload:"metadata"})}function OR(){const{t:e}=W();return o.jsx("div",{className:"grid h-24 w-40 place-items-center px-3 text-center text-xs text-[color:var(--muted-foreground)]",children:e("logs.media.noPreview",{defaultValue:"No preview available"})})}function Cys(e){try{return new URL(e).pathname.includes("/console/playground/media/")}catch{return!1}}function XBs(e,t,n){if(!Cys(e))return e;const a=new URL(e);return a.searchParams.set(t,n),a.toString()}function Sys(e){const t=document.createElement("a");t.href=e,document.body.appendChild(t),t.click(),document.body.removeChild(t)}function Rj(e){const t=XK(e.outputImageUrls,e.outputImageThumbUrls),n=e.outputVideoUrl&&Kx(e.outputVideoUrl)?e.outputVideoUrl:null;return{imgs:t,video:n,hasMedia:t.length>0||!!n}}function ZK({record:e}){const{imgs:t,video:n}=Rj(e),a=e.outputImageDownloadUrls??null,s=e.outputVideoDownloadUrl??null;return o.jsxs("div",{className:"space-y-4",children:[n?o.jsxs("div",{className:"group relative min-w-0",children:[o.jsx("video",{src:n,controls:!0,className:"max-h-[52vh] w-full rounded-lg border border-[color:var(--border)] object-contain"}),s?o.jsx($L,{url:s}):null]}):null,t.length>0?o.jsx("div",{className:"grid grid-cols-1 gap-3 min-[360px]:grid-cols-2 md:grid-cols-3",children:t.map(({src:r,thumb:i},c)=>o.jsxs("div",{className:"group relative min-w-0",children:[o.jsx("a",{href:r,target:"_blank",rel:"noreferrer noopener",className:"block",children:o.jsx(YK,{thumbSrc:i,fullSrc:r,fallback:o.jsx("div",{className:"aspect-square w-full rounded-lg border border-dashed border-[color:var(--border)]"}),className:"max-h-[52vh] w-full rounded-lg border border-[color:var(--border)] object-contain"})}),a?.[c]?o.jsx($L,{url:a[c]}):null]},`${r}-${c}`))}):null]})}function $L({url:e}){const{t}=W();return o.jsx(Aa,{"aria-label":t("logs.drawer.downloadMedia",{defaultValue:"Download"}),size:"sm",variant:"soft",className:"absolute right-2 top-2 bg-[color:var(--background)]/90 opacity-0 transition-opacity group-hover:opacity-100",onClick:n=>{n.preventDefault(),Sys(e)},children:o.jsx($u,{className:"h-3.5 w-3.5"})})}function wL(e,t){return e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}K`:or(e,t)}function Ays(e){return(e.cacheWrite1hTokens??0)>0?"1h":(e.cacheWrite5mTokens??0)>0?"5m":null}function JK(e){return!!(e.billingMode==="image"||(e.imageCount??0)>0||e.mediaType&&e.mediaType.startsWith("image/"))}function Pj({record:e,detailPath:t}){const{t:n}=W(),a=Te();if(JK(e)||QK(e))return o.jsx($ys,{record:e,detailPath:t});const s=e.inputTokens!=null,r=e.outputTokens!=null;if(!s&&!r)return o.jsx("span",{className:"text-[color:var(--muted-foreground)]",children:"—"});const i=e.cacheReadTokens??0,c=(e.cacheWriteTokens??0)+(e.cacheWrite5mTokens??0)+(e.cacheWrite1hTokens??0),d=Ays(e);return o.jsxs(Ns,{openDelay:150,closeDelay:80,children:[o.jsx(Ds,{asChild:!0,children:o.jsxs("span",{className:"inline-flex max-w-full cursor-help flex-wrap items-center gap-x-2 gap-y-1 whitespace-normal tabular-nums md:flex-nowrap md:whitespace-nowrap",children:[o.jsx(bb,{icon:o.jsx(m9,{className:"size-3.5 text-emerald-500"}),value:s?a.number(e.inputTokens):"—",muted:!s}),o.jsx(bb,{icon:o.jsx(g9,{className:"size-3.5 text-violet-500"}),value:r?a.number(e.outputTokens):"—",muted:!r}),i>0?o.jsx("span",{className:"ml-1 inline-flex items-center",children:o.jsx(bb,{icon:o.jsx(Qve,{className:"size-3.5 text-sky-500"}),value:wL(i,a.locale),className:"text-sky-600 dark:text-sky-400"})}):null,c>0?o.jsxs("span",{className:"inline-flex items-center gap-1",children:[o.jsx(bb,{icon:o.jsx(T9,{className:"size-3.5 text-amber-500"}
907),value:wL(c,a.locale),className:"text-amber-600 dark:text-amber-500"}),d?o.jsx("span",{className:"inline-flex items-center rounded px-1 py-px text-2xs font-medium leading-tight bg-amber-100 text-amber-700 dark:bg-amber-500/20 dark:text-amber-300",children:d}):null]}):null]})}),o.jsxs(ns,{children:[o.jsx(Rc,{children:n("logs.tokensBreakdown.title")}),o.jsx(Ia,{label:n("logs.tokensBreakdown.prompt"),value:s?a.number(e.inputTokens):"—",muted:!s}),o.jsx(Ia,{label:n("logs.tokensBreakdown.completion"),value:r?a.number(e.outputTokens):"—",muted:!r}),o.jsx(Ia,{label:n("logs.tokensBreakdown.cacheRead"),value:a.number(e.cacheReadTokens??0),muted:(e.cacheReadTokens??0)===0}),o.jsx(Ia,{label:n("logs.tokensBreakdown.cacheWrite",{defaultValue:"Cache write"}),value:a.number(e.cacheWriteTokens??0),muted:(e.cacheWriteTokens??0)===0}),o.jsx(Ia,{label:n("logs.tokensBreakdown.cacheWrite5m"),value:a.number(e.cacheWrite5mTokens??0),muted:(e.cacheWrite5mTokens??0)===0}),o.jsx(Ia,{label:n("logs.tokensBreakdown.cacheWrite1h"),value:a.number(e.cacheWrite1hTokens??0),muted:(e.cacheWrite1hTokens??0)===0}),o.jsx(Ia,{label:n("logs.tokensBreakdown.total"),value:a.number(e.totalTokens),divider:!0,bold:!0})]})]})}function bb({icon:e,value:t,muted:n=!1,className:a}){return o.jsxs("span",{className:"inline-flex items-center gap-1",children:[e,o.jsx("span",{className:(n?"text-[color:var(--muted-foreground)] ":"")+(a??"text-[color:var(--foreground)]"),children:t})]})}function LR(e){return e.clientIp??null}function kL(e){return e.finishReason??null}const _j="—";function Tys(e){const t=e.outputTokens;if(!t||t<=0)return null;const{durationMs:n,firstTokenMs:a}=e;if(n==null||!Number.isFinite(n))return null;const s=a!=null?Math.max(n-a,1):n;return s<=0?null:t/s*1e3}function Rys({record:e}){const{t}=W(),n=Tys(e);return n==null?o.jsx("span",{className:"tabular-nums text-[color:var(--muted-foreground)]",children:_j}):o.jsxs(Ns,{openDelay:150,closeDelay:80,children:[o.jsx(Ds,{asChild:!0,children:o.jsxs("span",{className:"cursor-help border-b border-dotted border-[color:var(--muted-foreground)] tabular-nums text-[color:var(--foreground)]",children:[n.toFixed(2)," ",o.jsx("span",{className:"text-11 text-[color:var(--muted-foreground)]",children:"tps"})]})}),o.jsxs(ns,{children:[o.jsx(Rc,{children:t("logs.tps.title",{defaultValue:"Throughput"})}),o.jsx(Ia,{label:t("logs.tps.output",{defaultValue:"Output tokens"}),value:String(e.outputTokens??0)}),o.jsx(Ia,{label:t("logs.tps.window",{defaultValue:"Generation window"}),value:e.firstTokenMs!=null&&e.durationMs!=null?`${Math.max(e.durationMs-e.firstTokenMs,1)} ms`:`${e.durationMs??0} ms`}),o.jsx(Ia,{label:t("logs.tps.rate",{defaultValue:"Rate"}),value:`${n.toFixed(2)} tps`,muted:!0})]})]})}function Pys({record:e}){const{t}=W(),n=Vge(e.userAgent),a=e.userAgent;return o.jsxs(Ns,{openDelay:150,closeDelay:80,children:[o.jsx(Ds,{asChild:!0,children:o.jsx("span",{className:"inline-flex cursor-help items-center rounded border border-[color:var(--border)] bg-[color:var(--muted)]/40 px-1.5 py-0.5 text-11 text-[color:var(--foreground)]",children:n??t("logs.source.unknownShort",{defaultValue:"Unknown"})})}),o.jsxs(ns,{className:"max-w-[320px]",children:[o.jsx(Rc,{children:t("logs.source.title",{defaultValue:"Client"})}),o.jsx("p",{className:"break-all font-mono text-11 text-[color:var(--muted-foreground)]",children:a||t("logs.source.unknown",{defaultValue:"No user-agent reported"})})]})]})}function _ys({record:e}){const t=LR(e);return t?o.jsx("span",{className:"font-mono text-11 tabular-nums text-[color:var(--foreground)]",children:t}):o.jsx("span",{className:"text-[color:var(--muted-foreground)]",children:_j})}function jys(e){const t=e.cacheReadTokens??0,a=(e.inputTokens??0)+t;return a<=0?null:t/a*100}function Nys({record:e}){const{t}=W(),n=jys(e);return n==null?o.jsx("span",{className:"tabular-nums text-[color:var(--muted-foreground)]",children:_j}):o.jsxs(Ns,{openDelay:150,closeDelay:80,children:[o.jsx(Ds,{asChild:!0,children:o.jsxs("span",{className:"cursor-help border-b border-dotted border-[color:var(--muted-foreground)] tabular-nums text-[color:var(--foreground)]",children:[n.toFixed(1),"%"]})}),o.jsxs(ns,{children:[o.jsx(Rc,{children:t("logs.cacheHit.title",{defaultValue:"Cache hit ratio"})}),o.jsx(Ia,{label:t("logs.cacheHit.read",{defaultValue:"Cache read"}),value:String(e.cacheReadTokens??0)}),o.jsx(Ia,{label:t("logs.cacheHit.prompt",{defaultValue:"Prompt"}),value:String(e.inputTokens??0)}),o.jsx(Ia,{label:t("logs.cacheHit.ratio",{defaultValue:"Hit ratio"}),value:`${n.toFixed(1)}%`,muted:!0}
907)]})]})}function Dys({publicId:e,onClose:t}){const n=LK(e),a=n.data;return o.jsx(Vn,{open:!!e,onOpenChange:s=>{s||t()},children:o.jsxs(Nn,{side:"auto",showClose:!1,className:"w-full !p-0 md:w-[min(920px,92vw)] md:!max-w-none",children:[o.jsx(Rn,{className:"sr-only",children:"Log detail"}),n.isLoading||!a?o.jsx(Mys,{onClose:t}):o.jsx(Eys,{record:a,onClose:t})]})})}function Mys({onClose:e}){const{t}=W();return o.jsxs("div",{className:"flex w-full flex-col",children:[o.jsx(eG,{onClose:e}),o.jsx("div",{className:"flex-1 p-6 text-sm text-[color:var(--muted-foreground)]",children:t("logs.drawer.loading")})]})}function Eys({record:e,onClose:t}){const n=e.onehopRequestId??e.publicId;return o.jsxs("div",{className:"flex h-full w-full flex-col",children:[o.jsx(eG,{onClose:t,requestId:n,record:e}),o.jsxs("div",{className:"grid min-h-0 min-w-0 flex-1 overflow-y-auto md:grid-cols-[minmax(0,1fr)_360px] md:overflow-hidden",children:[o.jsx(Bys,{record:e}),o.jsx(Fys,{record:e})]})]})}function eG({onClose:e,requestId:t,record:n}){const{t:a}=W();return o.jsxs("header",{className:"grid shrink-0 grid-cols-[auto_minmax(0,1fr)_auto_auto] items-center gap-2 border-b border-[color:var(--border)] px-3 py-3 min-[360px]:px-4 sm:px-5",children:[o.jsx(Aa,{variant:"ghost",size:"sm",onClick:e,"aria-label":a("common.back"),className:"size-10 rounded border border-[color:var(--border)] hover:text-[color:var(--foreground)]",children:o.jsx(Iw,{className:"size-4"})}),o.jsxs("div",{className:"min-w-0",children:[o.jsx("div",{className:"truncate text-sm font-semibold",children:a("logs.drawer.title")}),t?o.jsx("code",{className:"mt-1 block max-w-full truncate rounded border border-[color:var(--border)] bg-[color:var(--muted)] px-2 py-0.5 font-mono text-11 text-[color:var(--muted-foreground)] min-[390px]:inline-block",children:t.length>28?`${t.slice(0,14)}…${t.slice(-8)}`:t}):null]}),n?.cancellable?o.jsx(Iys,{record:n}):null,t?o.jsx(py,{value:t,variant:"ghost",iconClassName:"size-4",className:"col-start-3 row-start-1 size-10 rounded border border-[color:var(--border)]"}):null,o.jsx(h7,{className:"col-start-4 row-start-1 grid size-10 place-items-center rounded border border-[color:var(--border)] text-[color:var(--muted-foreground)] hover:text-[color:var(--foreground)]","aria-label":a("logs.drawer.close"),children:o.jsx(my,{className:"size-4"})})]})}function Iys({record:e}){const{t}=W(),n=FK();if(!e.jobPublicId)return null;async function a(){if(await zt({title:t("logs.cancelJob.title",{defaultValue:"Cancel job?"}),message:t("logs.cancelJob.message",{defaultValue:"This job is still queued. Cancelling stops it from being processed; no charge will be applied."}),confirmText:t("logs.cancelJob.confirm",{defaultValue:"Cancel job"}),cancelText:t("logs.cancelJob.keep",{defaultValue:"Keep"}),variant:"destructive"}))try{await n.mutateAsync(e.jobPublicId),ie.success(t("logs.cancelJob.success",{defaultValue:"Job cancelled"}))}catch(r){ie.error(r instanceof Error?r.message:t("logs.cancelJob.failed",{defaultValue:"Failed to cancel job"}))}}return o.jsxs(K,{variant:"destructive",size:"sm",onClick:a,disabled:n.isPending,className:"col-span-full h-8 justify-self-start gap-1.5 rounded px-2 text-11 font-normal min-[390px]:col-span-1 min-[390px]:justify-self-auto",children:[o.jsx(h9,{className:"size-3"}),n.isPending?t("logs.cancelJob.pending",{defaultValue:"Cancelling…"}):t("logs.cancelJob.confirm",{defaultValue:"Cancel job"})]})}function Oys(e,t,n){const a=!!(e.errorCode||e.errorMessage),s=[];if(s.push({id:"received",icon:o.jsx(Uw,{className:"size-3.5"}),label:t("logs.drawer.timeline.received",{defaultValue:"Request received"}),status:"ok",facts:e.apiKey?o.jsxs("span",{className:"font-mono text-11",children:[e.apiKey.name," · ",e.apiKey.prefix,"…",e.apiKey.suffix]}):void 0}),s.push({id:"routed",icon:o.jsx(Obe,{className:"size-3.5"}),label:t("logs.drawer.timeline.routed",{defaultValue:"Routed"}),status:"ok",facts:o.jsxs("span",{className:"flex min-w-0 flex-col gap-0.5 font-mono text-11 sm:block",children:[e.modelSlug,e.endpointPath?o.jsxs("span",{className:"break-words text-[color:var(--muted-foreground)] sm:ml-1",children:["· ",e.endpointPath]}):null]})}),a)return s.push({id:"error",icon:o.jsx(dj,{className:"size-3.5"}),label:t("logs.drawer.timeline.failed",{defaultValue:"Failed"}),status:"error",facts:o.jsxs("span",{className:"text-[11.5px]",children:[e.errorCode?o.jsx("code",{className:"font-mono",children:e.errorCode}):null,e.errorMessage?o.jsx("span",{className:"ml-1 text-[color:var(--muted-foreground)]",children:e.errorMessage}):null]})}),s;const r=[];e.firstTokenMs!=null&&r.push(`TTFT ${or(e.firstTokenMs,n)}ms`),e.durationMs!=null&&r.push(`${or(e.durationMs,n)}ms total`),e.stream&&r.push("SSE"),s.push({id:"generated",icon:o.jsx(bR,{className:"size-3.5"}),label:t("logs.drawer.timeline.generated",{defaultValue:"Generated"}),status:"ok",facts:r.length?o.jsx("span",{className:"font-mono text-11 tabular-nums",children:r.join(" · ")}):void 0});const i=[];e.inputTokens&&i.push(`${or(e.inputTokens,n)} in`),e.outputTokens&&i.push(`${or(e.outputTokens,n)}
907 out`),e.cacheReadTokens&&i.push(`${or(e.cacheReadTokens,n)} cache`),s.push({id:"metered",icon:o.jsx(C9,{className:"size-3.5"}),label:t("logs.drawer.timeline.metered",{defaultValue:"Metered"}),status:i.length?"ok":"muted",facts:i.length?o.jsx("span",{className:"font-mono text-11 tabular-nums",children:i.join(" · ")}):void 0});const c=Number(e.freeDiscountUsd??0)>0&&Number(e.billedCredit??0)===0;return s.push({id:"billed",icon:o.jsx($ve,{className:"size-3.5"}),label:t("logs.drawer.timeline.billed",{defaultValue:"Billed"}),status:"ok",facts:o.jsx("span",{className:"font-mono text-[11.5px] tabular-nums font-semibold",children:c?t("logs.cost.free",{defaultValue:"Free"}):e.billedCredit})}),s}const Lys={ok:"border-[color:var(--primary)] bg-[color:var(--accent)] text-[color:var(--primary)]",error:"border-[color:var(--destructive-border)] bg-[color:var(--destructive-surface)] text-[color:var(--destructive)]",muted:"border-[color:var(--border)] bg-[color:var(--card)] text-[color:var(--muted-foreground)]"};function Uys({record:e}){const{t}=W(),n=Te(),a=Oys(e,t,n.locale);return o.jsx("ol",{className:"relative space-y-0",children:a.map((s,r)=>{const i=r===a.length-1;return o.jsxs("li",{className:"relative flex min-w-0 gap-3 pb-5 last:pb-0",children:[i?null:o.jsx("span",{"aria-hidden":!0,className:"absolute left-[15px] top-8 h-[calc(100%-1rem)] w-px bg-[color:var(--border)]"}),o.jsx("span",{className:X("relative z-10 grid size-8 shrink-0 place-items-center rounded-full border",Lys[s.status]),children:s.icon}),o.jsxs("div",{className:"min-w-0 flex-1 pt-1",children:[o.jsxs("div",{className:"flex min-w-0 items-center gap-2 text-sm font-medium text-[color:var(--foreground)]",children:[s.label,s.status==="ok"?o.jsx(cy,{className:"size-3 text-[color:var(--success)]","aria-hidden":!0}):null]}),s.facts?o.jsx("div",{className:"mt-0.5 min-w-0 break-words text-[color:var(--muted-foreground)]",children:s.facts}):null]})]},s.id)})})}function Bys({record:e}){const{t}=W(),{hasMedia:n}=Rj(e);return o.jsxs("div",{className:"min-w-0 border-b border-[color:var(--border)] p-4 md:overflow-y-auto md:border-b-0 md:border-r md:p-6",children:[o.jsxs("div",{className:n?"mb-6":"",children:[o.jsx("div",{className:"mb-4 text-11 font-semibold uppercase tracking-[0.08em] text-[color:var(--muted-foreground)]",children:t("logs.drawer.timeline.heading",{defaultValue:"Lifecycle"})}),o.jsx(Uys,{record:e})]}),n?o.jsxs("div",{children:[o.jsx("div",{className:"mb-4 text-11 font-semibold uppercase tracking-[0.08em] text-[color:var(--muted-foreground)]",children:t("logs.drawer.response")}),o.jsx(ZK,{record:e})]}):null]})}function Fys({record:e}){const{t}=W(),n=Te(),a=e.createdAt?new Date(e.createdAt):null,s=e.apiKey;return o.jsxs("div",{className:"min-w-0 bg-[color:var(--muted)]/30 md:overflow-y-auto",children:[o.jsxs(Vl,{title:t("logs.drawer.sections.request"),children:[o.jsx(mn,{label:t("logs.drawer.fields.requestId"),value:o.jsx("code",{className:"font-mono text-[11.5px] break-all",children:e.publicId})}),a?o.jsx(mn,{label:t("logs.drawer.fields.time"),value:o.jsxs("span",{children:[Tc(a)," ",o.jsx("span",{className:"text-[color:var(--muted-foreground)]",children:fy(a)}),o.jsxs("span",{className:"ml-2 text-11 text-[color:var(--muted-foreground)]",children:["(",hK(a),", UTC ",gK(a),")"]})]})}):null,s?o.jsx(mn,{label:t("logs.drawer.fields.apiKey"),value:o.jsxs("span",{children:[s.name," ",o.jsxs("span",{className:"text-[color:var(--muted-foreground)] font-mono text-11",children:[s.prefix,"…",s.suffix]})]})}):null,e.userAgent?o.jsx(mn,{label:t("logs.drawer.fields.userAgent"),value:o.jsx("span",{className:"font-mono text-11 break-all",children:e.userAgent})}):null,e.billingMode?o.jsx(mn,{label:t("logs.drawer.fields.billingMode"),value:zys(t,e.billingMode)}):null]}),o.jsxs(Vl,{title:t("logs.drawer.sections.routing"),children:[o.jsx(mn,{label:t("logs.drawer.fields.onehopModel"),value:e.modelSlug}),e.requestedModel&&e.requestedModel!==e.modelSlug?o.jsx(mn,{label:t("logs.drawer.fields.requestedModel",{defaultValue:"Requested (raw)"}),value:o.jsx("code",{className:"font-mono text-11",children:e.requestedModel})}):null,e.endpointPath?o.jsx(mn,{label:t("logs.drawer.fields.endpoint"),value:o.jsx("code",{className:"font-mono text-11",children:e.endpointPath})}):null,LR(e)?o.jsx(mn,{label:t("logs.drawer.fields.clientIp",{defaultValue:"Client IP"}),value:o.jsx("code",{className:"font-mono text-11",children:LR(e)})}):null]}),o.jsxs(Vl,{title:t("logs.drawer.sections.tokens"),children:[o.jsx(mn,{label:t("logs.tokensBreakdown.prompt"),value:n.number(e.inputTokens??0)}),o.jsx(mn,{label:JK(e)?t("logs.tokensBreakdown.imageOutput",{defaultValue:"Image output tokens"}):t("logs.tokensBreakdown.completion"),value:n.number(e.outputTokens??0)}),o.jsx(mn,{label:t("logs.tokensBreakdown.cacheRead"),value:n.number(e.cacheReadTokens??0),muted:(e.cacheReadTokens??0)===0}),o.jsx(mn,{label:t("logs.tokensBreakdown.cacheWrite",{defaultValue:"Cache write"}),value:n.number(e.cacheWriteTokens??0),muted:(e.cacheWriteTokens??0)===0}),o.jsx(mn,{label:t("logs.tokensBreakdown.cacheWrite5m"),value:n.number(e.cacheWrite5mTokens??0),muted:(e.cacheWrite5mTokens??0)===0}),o.jsx(mn,{label:t("logs.tokensBreakdown.cacheWrite1h"),value:n.number(e.cacheWrite1hTokens??0),muted:(e.cacheWrite1hTokens??0)===0})]}),o.jsx(Vl,{title:t("logs.drawer.sections.cost"),bare:!0,children:o.jsx(IR,{record:e})}),o.jsxs(Vl,{title:t("logs.drawer.sections.performance"),children:[e.firstTokenMs!=null?o.jsx(mn,{label:t("logs.drawer.fields.firstToken"),value:`${n.number(e.firstTokenMs)} ms`}):null,e.durationMs!=null?o.jsx(mn,{label:t("logs.drawer.fields.total"),value:`${n.number(e.durationMs)} ms`}):null,e.firstTokenMs!=null&&e.durationMs!=null&&e.outputTokens?o.jsx(mn,{label:t("logs.drawer.fields.throughput"),value:`${(e.outputTokens/Math.max(e.durationMs-e.firstTokenMs,1)*1e3).toFixed(1)} tps`}):null,e.stream?o.jsx(mn,{label:t("logs.drawer.fields.stream"),value:"SSE"}):null]}),kL(e)?o.jsx(Vl,{title:t("logs.drawer.sections.outcome",{defaultValue:"Outcome"}),children:o.jsx(mn,{label:t("logs.drawer.fields.finishReason",{defaultValue:"Finish reason"}),value:o.jsx("span",{className:"inline-flex items-center rounded border border-[color:var(--border)] bg-[color:var(--muted)]/50 px-1.5 py-0.5 font-mono text-11",children:kL(e)})})}
907):null,e.imageCount||e.imageSize||e.mediaType?o.jsxs(Vl,{title:t("logs.drawer.sections.multimodal",{defaultValue:"Multimodalities"}),children:[e.mediaType?o.jsx(mn,{label:t("logs.drawer.fields.mediaType",{defaultValue:"Media type"}),value:e.mediaType}):null,e.imageCount!=null?o.jsx(mn,{label:t("logs.drawer.fields.imageCount",{defaultValue:"Images"}),value:n.number(e.imageCount)}):null,e.imageSize?o.jsx(mn,{label:t("logs.drawer.fields.imageSize",{defaultValue:"Size"}),value:e.imageSize}):null]}):null,e.errorCode||e.errorMessage?o.jsxs(Vl,{title:t("logs.drawer.sections.error"),children:[e.errorCode?o.jsx(mn,{label:t("logs.drawer.fields.errorCode"),value:o.jsx("code",{className:"font-mono text-[11.5px]",children:e.errorCode})}):null,e.errorMessage?o.jsx(mn,{label:t("logs.drawer.fields.errorMessage"),value:o.jsx("span",{className:"text-[11.5px]",children:e.errorMessage})}):null]}):null]})}function zys(e,t){const n=`logs.drawer.billingMode.${t}`,a=e(n);return a===n?t:a}function Vl({title:e,children:t,bare:n=!1}){return o.jsxs("section",{className:"border-b border-[color:var(--border)] px-4 py-4 last:border-b-0 sm:px-5",children:[o.jsx("h5",{className:"mb-2 text-11 font-semibold uppercase text-[color:var(--muted-foreground)]",children:e}),n?t:o.jsx("dl",{className:"grid grid-cols-1 gap-y-1.5 text-[12.5px] min-[360px]:grid-cols-[104px_minmax(0,1fr)] min-[360px]:gap-x-3 sm:grid-cols-[110px_minmax(0,1fr)]",children:t})]})}function mn({label:e,value:t,muted:n=!1}){return o.jsxs(o.Fragment,{children:[o.jsx("dt",{className:"text-[color:var(--muted-foreground)]",children:e}),o.jsx("dd",{className:`min-w-0 break-words tabular-nums [&_code]:break-all ${n?"text-[color:var(--muted-foreground)]":"text-[color:var(--foreground)]"}`,children:t})]})}function tG({record:e}){const t=Iz(e.modelSlug);return o.jsxs("span",{className:"inline-flex max-w-[280px] items-center gap-1.5 whitespace-nowrap",children:[t?o.jsx(Xo,{authorSlug:t,size:14,className:"shrink-0 text-[color:var(--muted-foreground)]"}):null,o.jsx("span",{className:"truncate text-[color:var(--foreground)] underline decoration-dotted decoration-[color:var(--muted-foreground)] underline-offset-[3px]",children:e.modelSlug}),o.jsx(Gw,{serviceTier:e.serviceTier})]})}const qys=new Set(["pending","repairing","queued","running"]);function Ww({record:e}){const{t}=W(),n=e.status;return n==="success"||n==="completed"?o.jsx("span",{className:"text-xs text-[color:var(--muted-foreground)]",children:t(`logs.status.${n}`,{defaultValue:n})}):n==="failed"?o.jsxs("span",{className:"inline-flex items-center gap-1.5 text-xs text-[color:var(--foreground)]",children:[o.jsx("span",{className:"inline-block size-1.5 rounded-full bg-[color:var(--destructive)]"}),o.jsx("span",{children:e.errorCode??t("logs.status.failed",{defaultValue:"failed"})})]}):qys.has(n)?o.jsxs("span",{className:"inline-flex items-center gap-1.5 text-xs",children:[o.jsx("span",{className:"inline-block size-1.5 rounded-full bg-[color:var(--warning)]"}),o.jsx("span",{className:"text-[color:var(--warning)]",children:t(`logs.status.${n}`,{defaultValue:n})})]}):o.jsx("span",{className:"text-xs text-[color:var(--muted-foreground)]",children:t(`logs.status.${n}`,{defaultValue:n})})}function jj({iso:e}){return o.jsx(ix,{iso:e})}const nG=["costMin","costMax","latencyMin","latencyMax"],CL=["preset","from","to","apiKey","model","status","type","finishReason","stream","reqId","more","page","size",...nG],Hys=["page","size","more"],Vys={preset:"last30d"},SL="onehop.logs.columns.v1",Kys=[10,20,50,100],AL=[{key:"time",defaultVisible:!0,locked:!0,labelKey:"logs.col.time",labelDefault:"Time"},{key:"model",defaultVisible:!0,labelKey:"logs.col.model",labelDefault:"Model"},{key:"tokens",defaultVisible:!0,labelKey:"logs.col.tokens",labelDefault:"Tokens"},{key:"cost",defaultVisible:!0,labelKey:"logs.col.cost",labelDefault:"Cost"},{key:"latency",defaultVisible:!0,labelKey:"logs.col.latency",labelDefault:"Latency"},{key:"tps",defaultVisible:!1,labelKey:"logs.col.tps",labelDefault:"Throughput"},{key:"ip",defaultVisible:!1,labelKey:"logs.col.ip",labelDefault:"IP"},{key:"source",defaultVisible:!0,labelKey:"logs.col.source",labelDefault:"Source"}
907,{key:"cacheHit",defaultVisible:!1,labelKey:"logs.col.cacheHit",labelDefault:"Cache hit"},{key:"stream",defaultVisible:!1,labelKey:"logs.col.stream",labelDefault:"Stream"},{key:"status",defaultVisible:!0,labelKey:"logs.col.status",labelDefault:"Status"}];function Gys(e){if(e.preset==="all")return{};const t=s=>{if(!s)return;const r=new Date(s);if(!Number.isNaN(r.getTime()))return`${r.getFullYear()}-${String(r.getMonth()+1).padStart(2,"0")}-${String(r.getDate()).padStart(2,"0")}`},n=t(e.from),a=t(e.to);return{...n&&{startDate:n},...a&&{endDate:a}}}function Wys(e,t){const n=Number(e.billedCredit??0),a=t.costMin===""?null:Number(t.costMin),s=t.costMax===""?null:Number(t.costMax);if(a!=null&&Number.isFinite(a)&&n<a||s!=null&&Number.isFinite(s)&&n>s)return!1;const r=e.durationMs!=null?e.durationMs/1e3:null,i=t.latencyMin===""?null:Number(t.latencyMin),c=t.latencyMax===""?null:Number(t.latencyMax);return!(i!=null&&Number.isFinite(i)&&(r==null||r<i)||c!=null&&Number.isFinite(c)&&(r==null||r>c))}function Gx(e){return e==null||!Number.isFinite(e)?"—":e<1e3?`${Math.round(e)}ms`:`${(e/1e3).toFixed(e<1e4?2:1)}s`}function Yys({children:e}){return o.jsx("span",{className:"text-11 font-semibold uppercase leading-4 text-[color:var(--muted-foreground)]",children:e})}function CS({label:e,children:t}){return o.jsxs("span",{className:"inline-flex min-w-0 items-baseline gap-1",children:[o.jsx(Yys,{children:e}),o.jsx("span",{className:"min-w-0 tabular-nums [&>*]:max-w-full [&>*]:min-w-0",children:t})]})}function Qys({record:e,selected:t,onOpen:n}){const{t:a}=W(),s=e.onehopRequestId??e.publicId;return o.jsxs(Dn,{selected:t,onClick:n,activation:"pointer",children:[o.jsxs("div",{className:"grid min-w-0 grid-cols-[minmax(0,1fr)_auto] items-start gap-2",children:[o.jsxs("div",{className:"min-w-0",children:[o.jsx("div",{className:"min-w-0",children:o.jsx(tG,{record:e})}),o.jsxs("div",{className:"mt-1 flex min-w-0 flex-wrap items-center gap-x-2 gap-y-0.5 text-11 text-[color:var(--muted-foreground)]",children:[o.jsx("span",{className:"tabular-nums",children:pK(e.createdAt)}),o.jsx("span",{className:"hidden tabular-nums min-[360px]:inline",children:fK(e.createdAt)}),o.jsx("span",{className:"max-w-[11rem] truncate font-mono",children:s})]})]}),o.jsxs(Cr,{className:"max-w-[7.75rem] shrink-0 gap-1 min-[360px]:max-w-none",children:[o.jsx(Ww,{record:e}),o.jsx(K,{type:"button",variant:"ghost",size:"icon",onClick:n,"aria-label":a("logs.drawer.openDetail",{defaultValue:"Open request detail"}),className:"size-8 min-[360px]:size-10",children:o.jsx(wu,{className:"size-4"})}),o.jsx(zK,{record:e})]})]}),o.jsxs("div",{className:"mt-1.5 flex min-w-0 flex-wrap items-center gap-x-3 gap-y-1 text-xs",children:[o.jsx(CS,{label:a("logs.col.tokens",{defaultValue:"Tokens"}),children:o.jsx(Pj,{record:e})}),o.jsx(CS,{label:a("logs.col.cost",{defaultValue:"Cost"}),children:o.jsx(WK,{record:e})}),o.jsxs(CS,{label:a("logs.col.latency",{defaultValue:"Latency"}),children:[o.jsx("span",{children:Gx(e.durationMs)}),e.firstTokenMs!=null?o.jsxs("span",{className:"ml-1 text-11 text-[color:var(--muted-foreground)]",children:[Gx(e.firstTokenMs)," TTFT"]}):null]})]})]})}function Xys(){const{t:e,i18n:t}=W(),n=Te(),{params:a,patch:s,remove:r}=Mt(),i=h.useMemo(()=>{const O={type:Pe(a,"type"),costMin:Pe(a,"costMin"),costMax:Pe(a,"costMax"),latencyMin:Pe(a,"latencyMin"),latencyMax:Pe(a,"latencyMax"),finishReason:Pe(a,"finishReason"),stream:Pe(a,"stream")},V=nG.some(ne=>a.has(ne));return{range:qw(a,Vys),apiKey:Pe(a,"apiKey"),model:Pe(a,"model").split(",").filter(Boolean),status:Pe(a,"status"),requestId:Pe(a,"reqId"),secondary:O,moreOpen:a.has("more")||V,page:ln(a,"page",1),size:ln(a,"size",20)}},[a]),[c,d]=h.useState(null),[m,f]=h.useState(!1),p=h.useMemo(()=>AL.map(O=>({key:O.key,label:e(O.labelKey,{defaultValue:O.labelDefault}),defaultVisible:O.defaultVisible,locked:O.locked})),[e]),[y,v]=h.useState(()=>Phe(SL)??AL.filter(O=>O.locked||O.defaultVisible).map(O=>O.key)),$=h.useMemo(()=>dR(p,y),[p,y]),x=h.useMemo(()=>Gys(i.range),[i.range]),w=h.useMemo(()=>({apiKey:i.apiKey,category:i.secondary.type,model:i.model.join(","),status:i.status,stream:i.secondary.stream,...x,limit:String(i.size),page:String(i.page),summary:"0"}),[i.page,i.size,x,i.apiKey,i.secondary.type,i.model,i.status,i.secondary.stream]),S=nys(w),k=kj(),T=ays(),R=S.data?.items??[];async function _(){f(!0);try{const O=await tys({apiKey:i.apiKey||void 0,category:i.secondary.type||void 0,model:i.model.join(",")||void 0,status:i.status||void 0,stream:i.secondary.stream||void 0,...x});O.truncated?ie.warning(e("logs.export.truncated",{defaultValue:"Exported the first {{n}} rows. Narrow the time range to export the rest.",n:n.number(O.count)})):ie.success(e("logs.export.done",{defaultValue:"Exported {{n}} rows.",n:n.number(O.count)}))}catch{ie.error(e("logs.export.failed",{defaultValue:"Export failed. Please try again."}))}finally{f(!1)}}const P=h.useDeferredValue(i.requestId),j=h.useDeferredValue(i.secondary),N=h.useMemo(()=>{let O=R;if(P){const F=P.toLowerCase();O=O.filter(H=>H.publicId.toLowerCase().includes(F)||H.onehopRequestId?.toLowerCase().includes(F))}const{costMin:V,costMax:ne,latencyMin:q,latencyMax:M}=j;return(V||ne||q||M)&&(O=O.filter(F=>Wys(F,j))),O},[R,P,j]),I=h.useMemo(()=>(k.data?.items??[]).map(O=>({value:Js(O),label:O.name})),[k.data?.items]),z=h.useMemo(()=>
907(T.data?.items??[]).filter(Boolean),[T.data?.items]),E=h.useMemo(()=>[{id:"time",header:()=>o.jsxs("span",{className:"inline-flex items-baseline gap-1",children:[e("logs.col.time",{defaultValue:"Time"}),o.jsx("span",{className:"text-2xs font-normal text-[color:var(--muted-foreground)]",children:fy()})]}),cell:({row:O})=>o.jsx(jj,{iso:O.original.createdAt}),size:130},{id:"model",header:e("logs.col.model",{defaultValue:"Model"}),cell:({row:O})=>o.jsx(tG,{record:O.original})},{id:"tokens",header:e("logs.col.tokens",{defaultValue:"Tokens"}),cell:({row:O})=>o.jsx(Pj,{record:O.original})},{id:"cost",header:e("logs.col.cost",{defaultValue:"Cost"}),cell:({row:O})=>o.jsx(WK,{record:O.original})},{id:"latency",header:e("logs.col.latency",{defaultValue:"Latency"}),cell:({row:O})=>{const V=O.original.firstTokenMs;return o.jsxs("div",{className:"flex items-baseline gap-1.5 whitespace-nowrap tabular-nums",children:[o.jsx("span",{className:"text-[color:var(--foreground)]",children:Gx(O.original.durationMs)}),V!=null?o.jsxs("span",{className:"text-11 text-[color:var(--muted-foreground)]",children:[Gx(V)," ",o.jsx("span",{className:"opacity-70",children:"TTFT"})]}):null]})}},{id:"tps",header:e("logs.col.tps",{defaultValue:"Throughput"}),cell:({row:O})=>o.jsx(Rys,{record:O.original})},{id:"ip",header:e("logs.col.ip",{defaultValue:"IP"}),cell:({row:O})=>o.jsx(_ys,{record:O.original})},{id:"source",header:e("logs.col.source",{defaultValue:"Source"}),cell:({row:O})=>o.jsx(Pys,{record:O.original})},{id:"cacheHit",header:e("logs.col.cacheHit",{defaultValue:"Cache hit"}),cell:({row:O})=>o.jsx(Nys,{record:O.original})},{id:"stream",header:e("logs.col.stream",{defaultValue:"Stream"}),cell:({row:O})=>O.original.stream?o.jsx("span",{className:"font-mono text-11 text-[color:var(--foreground)]",children:"SSE"}):o.jsx("span",{className:"text-[color:var(--muted-foreground)]",children:"—"})},{id:"status",header:e("logs.col.status",{defaultValue:"Status"}),cell:({row:O})=>o.jsx(Ww,{record:O.original})}],[e]),L=h.useMemo(()=>E.filter(O=>$.has(O.id)),[E,$]);return o.jsxs(Vt,{title:e("logs.title",{defaultValue:"Logs"}),description:e("logs.description",{defaultValue:"Inspect request-level cost, latency, tokens, status, and routing signals."}),action:o.jsxs(K,{type:"button",variant:"outline",size:"sm",className:"h-9 gap-1.5 px-3",onClick:()=>S.refetch(),disabled:S.isFetching,children:[o.jsx(Vp,{className:X("size-3.5",S.isFetching&&"animate-spin")}),e("logs.filter.refresh",{defaultValue:"Refresh"})]}),children:[o.jsx(dys,{dateRange:i.range,onDateRangeChange:O=>s({...Hw(O),page:void 0}),apiKey:i.apiKey,onApiKeyChange:O=>s({apiKey:O,page:void 0}),apiKeyOptions:I,models:i.model,onModelsChange:O=>s({model:O.length?O.join(","):void 0,page:void 0}),status:i.status,onStatusChange:O=>s({status:O,page:void 0}),requestId:i.requestId,onRequestIdChange:O=>s({reqId:O,page:void 0}),secondary:i.secondary,onSecondaryChange:O=>s({...O,page:void 0}),modelOptions:z,expanded:i.moreOpen,onExpandedChange:O=>s({more:O?"1":void 0}),locale:t.language,reset:Zt(a,CL,Hys)?o.jsx(nn,{show:!0,onReset:()=>r(CL),labelKey:"common.reset"}):null,columnSettings:o.jsx(jhe,{columns:p,value:y,onChange:v,persistKey:SL,triggerLabel:e("logs.columns.trigger",{defaultValue:"Column settings"}),resetLabel:e("common.reset",{defaultValue:"Reset"}),saveLabel:e("common.save",{defaultValue:"Save"}),className:"h-10"}),exportAction:o.jsxs(K,{type:"button",variant:"outline",size:"sm",className:"h-10 gap-1.5 px-3",onClick:_,disabled:m||(S.data?.total??0)===0,children:[o.jsx($u,{className:"size-3.5"}),m?e("logs.export.exporting",{defaultValue:"Exporting…"}):e("logs.export.label",{defaultValue:"Export CSV"})]})}),o.jsx(Ee,{className:"flex flex-1 flex-col overflow-hidden md:min-h-[420px] md:max-h-[calc(100vh-280px)]",children:o.jsx(NR,{caption:e("logs.title",{defaultValue:"Logs"}),columns:L,data:N,loading:S.isLoading,density:"comfortable",className:"min-h-0 flex-1",containerClassName:"min-h-0 flex-1 pb-3",stickyHeader:!0,stickyFirstColumn:!0,stickyActionsColumn:!0,rowActions:O=>o.jsx(zK,{record:O}),onRowClick:O=>d(O.publicId),isRowHighlighted:O=>O.publicId===c,mobileCard:O=>o.jsx(Qys,{record:O,selected:O.publicId===c,onOpen:()=>d(O.publicId)}),emptyState:o.jsx(Ot,{title:e("logs.empty.title",{defaultValue:"No logs in this range"}),description:e("logs.empty.body",{defaultValue:"Make a request through OneHop and it shows up here."})}),pagination:{mode:"server",pageSize:i.size,total:S.data?.total??0,pageIndex:i.page-1,pageSizeOptions:Kys,onPageChange:O=>s({page:O===0?void 0:String(O+1)},{replace:!1}),onPageSizeChange:O=>s({size:O===20?void 0:String(O),page:void 0})}})}),o.jsx(Dys,{publicId:c,onClose:()=>d(null)})]})}function Zys(e={}){return Ue({queryKey:Ht.consoleModels(e),queryFn:()=>Ye.request(`/console/models${$r(e)}`),placeholderData:t=>t,staleTime:180*1e3,retry:1})}function Jys(e){const t=Re(),n=Ht.consoleModels(e);return ke({mutationFn:({publicId:a,favorited:s})=>s?Ye.request("/console/favorite-models",{method:"POST",body:{publicId:a},idempotent:!0}):Ye.request(`/console/favorite-models/${a}`,{method:"DELETE",idempotent:!0}),onMutate:async({publicId:a,favorited:s})=>{await t.cancelQueries({queryKey:n});const r=t.getQueryData(n);return r&&t.setQueryData(n,{...r,items:r.items.map(i=>i.publicId===a?{...i,isFavorited:s}:i),kpis:{...r.kpis,favorites:Math.max(0,r.kpis.favorites+(s?1:-1))}}),{prev:r}},onError:(a,s,r)=>{r?.prev&&t.setQueryData(n,r.prev)},onSettled:()=>
907t.invalidateQueries({queryKey:["console","models"]})})}const TL=20,evs=[10,20,50,100],tvs=2;function RL({columns:e}){return o.jsx(Po,{children:o.jsx(qt,{children:e.map((t,n)=>o.jsx(Ie,{sticky:t.sticky??(n===0?"left":void 0),className:t.align==="right"?"text-right":t.align==="center"?"text-center":void 0,children:t.header},n))})})}function nvs({rows:e,columns:t,onRowClick:n,mobileCard:a,mobileRowAction:s,mobileVisibleFieldCount:r}){const{t:i}=W();return o.jsx("div",{className:"grid min-w-0 max-w-full grid-cols-[minmax(0,1fr)] overflow-hidden md:hidden",children:e.map(c=>{const d=a?.(c);if(d)return o.jsx("div",{children:d},c.publicId);const m=t.filter(k=>k.sticky==="right"),f=t.filter(k=>k.sticky!=="right"),p=s?.(c),y=!p&&n?o.jsx(K,{type:"button",variant:"ghost",size:"icon","aria-label":i("dataTable.openRow",{defaultValue:"Open row"}),className:"size-8",onClick:()=>n(c),children:o.jsx(wu,{className:"size-4"})}):null,v=p??y,$=f.slice(0,r),x=f.slice(r),w=k=>k.mobileValue==="break-all"?"break-all":k.mobileValue==="wrap"?"line-clamp-2 break-words":"truncate [&>*]:truncate",S=(k,T)=>o.jsx(Qe,{label:k.header,align:k.align==="right"?"right":"left",className:T===0?"min-[360px]:col-span-2":void 0,truncate:k.mobileValue==null||k.mobileValue==="truncate",children:o.jsx("span",{className:X("block min-w-0 [&>*]:max-w-full [&>*]:min-w-0",w(k),T===0&&"font-medium"),children:k.cell(c)})},T);return o.jsxs(Dn,{onClick:n?()=>n(c):void 0,activation:"pointer",children:[o.jsx(Ha,{className:"grid-cols-1 min-[360px]:grid-cols-2",children:$.map(S)}),x.length>0||v||m.length>0?o.jsxs("div",{className:"mt-1.5 flex min-w-0 items-center justify-between gap-2",children:[x.length>0?o.jsxs("details",{className:"group/details min-w-0 flex-1",onClick:k=>k.stopPropagation(),onKeyDown:k=>k.stopPropagation(),children:[o.jsxs("summary",{className:"inline-flex min-h-8 cursor-pointer list-none items-center gap-1 rounded-md px-1 text-11 font-medium text-[color:var(--muted-foreground)] marker:hidden focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[color:var(--ring)] [&::-webkit-details-marker]:hidden",children:[o.jsx("span",{className:"sr-only",children:i("dataTable.moreDetailsWithCount",{count:x.length,defaultValue:"{{count}} more details"})}),"+",x.length,o.jsx(zc,{className:"size-3.5 transition-transform group-open/details:rotate-180","aria-hidden":"true"})]}),o.jsx("dl",{className:"mt-1 grid grid-cols-1 gap-x-3 gap-y-2 border-t border-[color:var(--border)] pt-1.5 min-[360px]:grid-cols-2",children:x.map((k,T)=>S(k,T+r))})]}):o.jsx("span",{}),v||m.length>0?o.jsxs(Cr,{className:"shrink-0 flex-nowrap",children:[v,m.map((k,T)=>o.jsx("div",{children:k.cell(c)},T))]}):null]}):null]},c.publicId)})})}const SS=8,PL=["w-24","w-16","w-32","w-20","w-28","w-12"];function avs({rows:e}){return o.jsx("div",{className:"grid min-w-0 max-w-full grid-cols-[minmax(0,1fr)] md:hidden",children:Array.from({length:e}).map((t,n)=>o.jsxs(Dn,{children:[o.jsxs("div",{className:"flex items-start justify-between gap-3",children:[o.jsxs("div",{className:"min-w-0 flex-1",children:[o.jsx(Rt,{className:"h-4 w-36 max-w-[70%]"}),o.jsx(Rt,{className:"mt-1.5 h-3 w-24 max-w-[55%]"})]}),o.jsx(Rt,{className:"size-8 shrink-0 rounded-md"})]}),o.jsxs("div",{className:"mt-2 grid grid-cols-2 gap-x-3 gap-y-2",children:[o.jsx(Rt,{className:"h-3 w-20 max-w-full"}),o.jsx(Rt,{className:"ml-auto h-3 w-16 max-w-full"}),o.jsx(Rt,{className:"h-3 w-24 max-w-full"}),o.jsx(Rt,{className:"ml-auto h-3 w-14 max-w-full"})]})]},n))})}function Pt({label:e,rows:t,columns:n,isLoading:a,error:s,emptyTitle:r,pagination:i,onRowClick:c,stickyHeader:d,containerClassName:m,fill:f,mobileCard:p,mobileRowAction:y,mobileVisibleFieldCount:v=tvs}){const{t:$}=W(),x=i?.total!=null,[w,S]=h.useState(1),[k,T]=h.useState(i?.pageSize??TL);if(s)return o.jsx(Ot,{title:$("opsTable.failedLoad"),description:s.message});if(a)return o.jsxs(Ee,{className:f?"flex min-h-0 flex-1 flex-col":void 0,children:[o.jsx("div",{className:X("hidden",f?"md:flex md:min-
907h-0 md:flex-1 md:flex-col":"md:block"),children:o.jsxs(Ua,{"aria-label":e??r,"aria-busy":!0,stickyHeader:d,containerClassName:X(f&&"min-h-0 flex-1",m),children:[o.jsx(RL,{columns:n}),o.jsx(Ba,{children:Array.from({length:SS}).map((I,z)=>o.jsx(qt,{children:n.map((E,L)=>o.jsx(Me,{sticky:E.sticky??(L===0?"left":void 0),className:X("whitespace-nowrap",E.align==="right"&&"text-right",E.align==="center"&&"text-center"),children:o.jsx(Rt,{className:X("h-4",PL[(z+L)%PL.length],E.align==="right"&&"ml-auto",E.align==="center"&&"mx-auto")})},L))},z))})]})}),o.jsx(avs,{rows:Math.min(i?.pageSize??SS,SS)})]});if(!t||t.length===0)return o.jsx(Ot,{title:r,description:$("opsTable.emptyDescription")});const R=x?i.pageSize??TL:k,_=Math.max(1,Math.ceil(t.length/R)),P=!x&&i?.onPageChange!=null,j=x?i.page??1:Math.min(P?i.page??1:w,_),N=i&&!x?t.slice((j-1)*R,j*R):t;return o.jsxs(Ee,{className:f?"flex min-h-0 flex-1 flex-col":void 0,children:[o.jsx("div",{className:X("hidden",f?"md:flex md:min-h-0 md:flex-1 md:flex-col":"md:block"),children:o.jsxs(Ua,{"aria-label":e??r,stickyHeader:d,containerClassName:X(f&&"min-h-0 flex-1",m),children:[o.jsx(RL,{columns:n}),o.jsx(Ba,{children:N.map(I=>o.jsx(qt,{className:X("group/row",c&&"cursor-pointer hover:bg-[color:var(--muted)]"),onClick:c?z=>{eu(z)||c(I)}:void 0,children:n.map((z,E)=>o.jsx(Me,{sticky:z.sticky??(E===0?"left":void 0),className:X("whitespace-nowrap",z.align==="right"&&"text-right tabular-nums",z.align==="center"&&"text-center"),children:z.cell(I)},E))},I.publicId))})]})}
907),o.jsx(nvs,{rows:N,columns:n,onRowClick:c,mobileCard:p,mobileRowAction:y,mobileVisibleFieldCount:v}),i?o.jsx("div",{className:X("border-t border-[color:var(--border)] px-3 py-3 sm:px-4",f&&"shrink-0"),children:o.jsx(A_,{total:x?i.total:t.length,page:j,pageSize:R,pageSizeOptions:i.pageSizeOptions??evs,onPageChange:I=>i.onPageChange?i.onPageChange(I):S(I),onPageSizeChange:I=>{x?i.onPageSizeChange?.(I):(T(I),P?i.onPageChange(1):S(1))},labels:{total:I=>$("pagination.total",{count:I,defaultValue:"Total {{count}}"}),perPage:I=>$("pagination.perPage",{count:I,defaultValue:"{{count}} / page"})}})}):null]})}function gh(e,t,n){const[a,s]=h.useState(()=>{try{if(typeof window>"u"||!window.localStorage)return t;const i=window.localStorage.getItem(e);return i===null?t:n(i)??t}catch{return t}}),r=h.useCallback(i=>{s(i);try{if(typeof window>"u"||!window.localStorage)return;window.localStorage.setItem(e,String(i))}catch{}},[e]);return[a,r]}const xb=["tab","capability","provider","context","protocol","search","page","size"],ovs="onehop.models.sort",svs="onehop.models.currency",rvs=e=>e==="USD"||e==="CNY"?e:null,ivs=e=>e.toLowerCase().startsWith("zh"),lvs=new Set(zT),cvs=["text","image","audio","video"],_L=[{key:"lt64k",min:null,max:64e3},{key:"64k-256k",min:64e3,max:256e3},{key:"256k-512k",min:256e3,max:512e3},{key:"512k-1m",min:512e3,max:1e6},{key:"gte1m",min:1e6,max:null}],dvs=X$,uvs=[20,50,100],UR={text:mxe,image:S9,video:vxe,audio:eve,embedding:y9},aG={text:"text-blue-600",image:"text-amber-600",video:"text-rose-600",audio:"text-emerald-600",embedding:"text-violet-600"};function mvs({className:e,children:t}){return o.jsx("span",{className:X("inline-flex h-6 items-center gap-1 rounded-md px-2 text-xs font-medium",e),children:t})}function oG(e,t){const n=Hge(e);return n?t(n,{defaultValue:e==="perCall"?"/ call":e==="perSec"?"/ sec":"/ 1M"}):""}const pvs={newest:Ave,top_weekly:qve,price_asc:hR,price_desc:hR,context:nx},fvs={openai:"OpenAI",anthropic:"Anthropic",google:"Google",minimax:"MiniMax",deepseek:"DeepSeek",bytedance:"ByteDance"},jL="#9046FF";function ux(e){return fvs[e.toLowerCase()]??e.charAt(0).toUpperCase()+e.slice(1)}function sG({label:e,children:t}){return o.jsxs(Ls,{delayDuration:500,children:[o.jsx(Us,{asChild:!0,children:t}),o.jsx(cs,{children:e})]})}function Er({icon:e,children:t}){return o.jsxs("span",{className:"inline-flex items-center gap-1.5",children:[e?o.jsx(e,{size:13,className:"text-[color:var(--muted-foreground)]"}):null,t]})}function gvs({model:e,currency:t,locked:n,onOpen:a,onTry:s,onToggleFavorite:r,favoriteLabels:i}){const{t:c,i18n:d}=W(),m=Eg(e.outputModalities),f=UR[m],p=LV(e,m,t),y=m==="text"?bK(e,t):[],v=UV(e,m,t),$=DR(e.source)==="kiro"?"Kiro":ux(e.authorSlug);return o.jsxs(Dn,{onClick:a,activation:"pointer",children:[o.jsxs("div",{className:"grid min-w-0 grid-cols-[minmax(0,1fr)_auto] items-start gap-2",children:[o.jsxs("div",{className:"min-w-0",children:[o.jsxs("div",{className:"flex min-w-0 items-center gap-1.5",children:[o.jsx("span",{className:"flex size-[18px] shrink-0 items-center justify-center text-[color:var(--muted-foreground)]",children:DR(e.source)==="kiro"?o.jsx(QT,{size:18}):o.jsx(Xo,{authorSlug:e.authorSlug,size:18})}),o.jsx("span",{className:X("truncate font-semibold",(e.available===!1||n)&&"text-[color:var(--muted-foreground)]"),children:e.displayName||e.modelSlug}),n?o.jsx(Xt,{variant:"warning",className:"h-5 shrink-0 px-1.5 text-11",children:c("models.badge_requiresTopup",{defaultValue:"Top-up required"})}):null,e.badges.slice(0,1).map(x=>o.jsx(Xt,{variant:x==="hot"?"warning":"success",className:"h-5 px-1.5 text-11",children:c(`models.badge_${x}`,{defaultValue:x})},x))]}),o.jsx("div",{className:"mt-0.5 truncate font-[family-name:var(--font-mono)] text-11 text-[color:var(--muted-foreground)]",children:e.fullSlug})]}),o.jsxs(Cr,{className:"shrink-0 gap-1",children:[o.jsx(rG,{on:e.isFavorited,onToggle:r,addLabel:i.add,removeLabel:i.remove}),o.jsx(K,{type:"button",variant:"ghost",size:"icon","aria-label":c("models.table.openDetail",{defaultValue:"Open model detail"}),className:"size-8 min-[360px]:size-9",onClick:a,children:o.jsx(wu,{className:"size-4"})}),o.jsx(K,{type:"button",variant:"secondary",size:"icon",disabled:e.available===!1||n,"aria-label":c("models.table.tryIt",{defaultValue:"Try it"}),className:"size-8 min-[360px]:size-9",onClick:s,children:o.jsx(gbe,{className:"size-4"})})]})]}),o.jsxs(Ha,{className:"grid-cols-[minmax(0,1fr)_auto] gap-x-2",children:[o.jsxs(Qe,{label:c("models.table.price",{defaultValue:"Price"}),children:[o.jsxs("div",{className:"mt-0.5 font-[family-name:var
907(--font-mono)] text-sm font-semibold tabular-nums",children:[p.from?o.jsxs("span",{className:"font-normal text-[color:var(--muted-foreground)]",children:[c("models.price_from",{defaultValue:"from"})," "]}):null,p.our,p.unit!=="inout"?o.jsxs("span",{className:"font-normal text-[color:var(--muted-foreground)]",children:[" ",oG(p.unit,c)]}):null]}),y.length>0?o.jsx("div",{className:"mt-1 space-y-0.5 font-[family-name:var(--font-mono)] text-11 tabular-nums text-[color:var(--muted-foreground)]",children:y.map(x=>o.jsx("div",{children:x},x))}):null]}),v?o.jsxs(Qe,{label:c("models.table.discount",{defaultValue:"Discount"}),align:"right",children:[o.jsx(Xt,{variant:"success",className:"h-5 px-1.5 text-11",children:BV(v.pct,d.language)}),o.jsx("div",{className:"mt-0.5 font-[family-name:var(--font-mono)] text-11 tabular-nums text-[color:var(--muted-foreground)] line-through",children:v.official})]}):null]}),o.jsxs("div",{className:"mt-2 flex min-w-0 flex-wrap items-center gap-x-2 gap-y-1 text-11 text-[color:var(--muted-foreground)]",children:[o.jsxs("span",{className:"inline-flex items-center gap-1",children:[o.jsx(f,{size:12,className:aG[m]}),c(`models.type_${m}`,{defaultValue:m})]}),o.jsx("span",{children:$}),o.jsx("span",{className:"tabular-nums",children:Xl(e.contextWindow)}),e.supportedProtocolList.length>0?o.jsx(GV,{protocols:e.supportedProtocolList,max:2}):null]})]})}function hvs(){const{t:e,i18n:t}=W(),n=No(),a=yhs(),{params:s,patch:r,remove:i}=Mt(),c=Pe(s,"tab","all"),d=Pe(s,"capability"),m=Pe(s,"provider"),f=Pe(s,"context"),p=Pe(s,"protocol"),y=Pe(s,"search"),[v,$]=gh(ovs,poe,M=>lvs.has(M)?M:null),x=ivs(t.language),[w,S]=gh(svs,x?"CNY":"USD",rvs),k=x?w:"USD",T=ln(s,"page",1),R=ln(s,"size",20),_=h.useDeferredValue(y),P=h.useMemo(()=>{const M={sort:v,page:String(T),size:String(R),locale:t.language};c!=="all"&&(M.tab=c),d&&(M.capability=d),m&&(M.provider=m);const F=_L.find(H=>H.key===f);return F?.min!=null&&(M.ctxMin=String(F.min)),F?.max!=null&&(M.ctxMax=String(F.max)),p&&(M.protocol=p),_&&(M.search=_),M},[c,d,m,f,p,_,v,T,R,t.language]),j=Zys(P),N=Jys(P),I=j.data?.kpis??{total:0,favorites:0,hot:0,benefit:0},z=[{value:"",label:e("models.filters.allCapabilities",{defaultValue:"All types"})},...cvs.map(M=>{const F=UR[M];return{value:M,label:e(`models.filters.capability_${M}`,{defaultValue:M}),icon:o.jsx(F,{size:14,className:"text-[color:var(--muted-foreground)]"})}})],E=[{value:"",label:e("models.filters.allProviders",{defaultValue:"All providers"})},...(j.data?.options.providers??[]).map(M=>M==="Kiro"?{value:"Kiro",label:"Kiro",icon:o.jsx("span",{className:"flex items-center justify-center",style:{color:jL},children:o.jsx(QT,{size:16})})}:{value:M,label:ux(M),icon:o.jsx(Xo,{authorSlug:M,size:16})})],L=[{value:"",label:e("models.filters.allContexts",{defaultValue:"Any length"})},..._L.map(M=>({value:M.key,label:M.min==null?`< ${Xl(M.max)}`:M.max==null?`≥ ${Xl(M.min)}`:`${Xl(M.min)}–${Xl(M.max)}`}))],O=[{value:"",label:e("models.filters.allProtocols",{defaultValue:"All protocols"})},...dvs.map(M=>({value:M,label:e(`models.protocol_${M}`,{defaultValue:Wd[M].label}),icon:o.jsx(Xo,{authorSlug:Wd[M].iconAuthor,size:16})}))],V=M=>{window.open(`${window.location.origin}${Qgs(M.authorSlug,M.modelSlug,t.language)}`,"_blank","noopener")},ne=M=>x?o.jsx(el,{ariaLabel:e("models.currency.ariaLabel",{defaultValue:"价格货币"}),value:k,onValueChange:F=>S(F),options:[{value:"USD",label:e("models.currency.usd",{defaultValue:"美元"})},{value:"CNY",label:e("models.currency.rmb",{defaultValue:"人民币 (¥)"})}],className:M}):null,q=M=>o.jsx(gvs,{model:M,currency:k,locked:a(M),onOpen:()=>V(M),onTry:()=>n(`${Be.chat}?model=${encodeURIComponent(M.fullSlug)}&chatId=new`),onToggleFavorite:()=>N.mutate({publicId:M.publicId,favorited:!M.isFavorited}),favoriteLabels:{add:e("models.favorite.add",{defaultValue:"Add favorite"}),remove:e("models.favorite.remove",{defaultValue:"Remove favorite"})}});return o.jsxs(Vt,{fill:!0,title:e("models.title",{defaultValue:"Models"}),description:e("models.description",{defaultValue:"Browse every available model, its context window, input/output price, and capabilities."}),children:[o.jsx(Cc,{value:c,onValueChange:M=>r({tab:M==="all"?void 0:M,page:void 0}),className:"min-w-0 shrink-0 overflow-x-auto pb-0.5",children:o.jsxs(tl,{children:[o.jsxs(ia,{value:"all",children:[e("models.tabs.all",{defaultValue:"All"})," ",I.total]}),o.jsxs(ia,{value:"favorites",children:[e("models.tabs.favorites",{defaultValue:"My favorites"})," ",I.favorites]}
907),o.jsxs(ia,{value:"benefit",children:[e("models.tabs.benefit",{defaultValue:"Benefit"})," ",I.benefit]}),o.jsxs(ia,{value:"hot",children:[e("models.tabs.hot",{defaultValue:"Hot"})," ",I.hot]})]})}),o.jsxs("div",{className:"grid shrink-0 grid-cols-[minmax(0,1fr)_auto] gap-2 md:hidden",children:[o.jsxs("label",{className:"min-w-0",children:[o.jsx("span",{className:"sr-only",children:e("models.filters.search",{defaultValue:"Search"})}),o.jsx(ge,{value:y,onChange:M=>r({search:M.target.value,page:void 0}),placeholder:e("models.filters.searchPlaceholder",{defaultValue:"Model / maker"}),startIcon:o.jsx(hp,{size:14,className:"text-[color:var(--muted-foreground)]"}),className:"h-10"})]}),o.jsxs(Gp,{iconOnly:!0,label:e("models.filters.mobileTitle",{defaultValue:"Filters"}),active:Zt(s,["capability","provider","context","protocol"]),className:"contents",panelClassName:"col-span-2 mt-1",children:[o.jsx(Ze,{icon:o.jsx(eS,{size:13,className:"text-[color:var(--muted-foreground)]"}),label:e("models.filters.capability",{defaultValue:"Type"}),value:d,options:z,onChange:M=>r({capability:M,page:void 0})}),o.jsx(Ze,{icon:o.jsx(J1,{size:13,className:"text-[color:var(--muted-foreground)]"}),label:e("models.filters.provider",{defaultValue:"Provider"}),value:m,options:E,onChange:M=>r({provider:M,page:void 0})}),o.jsx(Ze,{icon:o.jsx(nx,{size:13,className:"text-[color:var(--muted-foreground)]"}),label:e("models.filters.context",{defaultValue:"Context"}),value:f,options:L,onChange:M=>r({context:M,page:void 0})}),o.jsx(Ze,{icon:o.jsx(Z1,{size:13,className:"text-[color:var(--muted-foreground)]"}),label:e("models.filters.protocol",{defaultValue:"Protocol"}),value:p,options:O,onChange:M=>r({protocol:M,page:void 0})}),o.jsx(nn,{show:Zt(s,xb),onReset:()=>i(xb),className:"justify-self-end"})]})]}),o.jsxs("div",{className:"hidden shrink-0 gap-3 md:grid md:grid-cols-2 xl:flex xl:flex-wrap xl:items-end",children:[o.jsx("div",{className:"min-w-0 xl:min-w-[130px] xl:flex-1",children:o.jsx(Ze,{icon:o.jsx(eS,{size:13,className:"text-[color:var(--muted-foreground)]"}),label:e("models.filters.capability",{defaultValue:"Type"}),value:d,options:z,onChange:M=>r({capability:M,page:void 0})})}),o.jsx("div",{className:"min-w-0 xl:min-w-[130px] xl:flex-1",children:o.jsx(Ze,{icon:o.jsx(J1,{size:13,className:"text-[color:var(--muted-foreground)]"}),label:e("models.filters.provider",{defaultValue:"Provider"}),value:m,options:E,onChange:M=>r({provider:M,page:void 0})})}),o.jsx("div",{className:"min-w-0 xl:min-w-[120px] xl:flex-1",children:o.jsx(Ze,{icon:o.jsx(nx,{size:13,className:"text-[color:var(--muted-foreground)]"}),label:e("models.filters.context",{defaultValue:"Context"}),value:f,options:L,onChange:M=>r({context:M,page:void 0})})}),o.jsx("div",{className:"min-w-0 xl:min-w-[130px] xl:flex-1",children:o.jsx(Ze,{icon:o.jsx(Z1,{size:13,className:"text-[color:var(--muted-foreground)]"}),label:e("models.filters.protocol",{defaultValue:"Protocol"}),value:p,options:O,onChange:M=>r({protocol:M,page:void 0})})}),o.jsxs("label",{className:"grid min-w-0 gap-1.5 text-xs font-medium sm:col-span-2 xl:min-w-[180px] xl:flex-[1.5]",children:[o.jsxs("span",{className:"inline-flex items-center gap-1.5",children:[o.jsx(hp,{size:13,className:"text-[color:var(--muted-foreground)]"}),e("models.filters.search",{defaultValue:"Search"})]}),o.jsx(ge,{value:y,onChange:M=>r({search:M.target.value,page:void 0}),placeholder:e("models.filters.searchPlaceholder",{defaultValue:"Model / maker"})})]}),o.jsx(nn,{show:Zt(s,xb),onReset:()=>i(xb),className:"self-end"})]}),o.jsxs("div",{className:"grid shrink-0 gap-2 md:hidden",children:[o.jsxs("label",{className:"grid gap-1.5 text-xs font-medium",children:[o.jsx("span",{className:"sr-only",children:e("models.filters.sort",{defaultValue:"Sort"})}),o.jsx(ft,{value:v,"aria-label":e("models.filters.sort",{defaultValue:"Sort"}),options:zT.map(M=>({value:M,label:e(`models.sort_${M}`,{defaultValue:M})})),onValueChange:M=>{$(M),r({page:void 0})},className:"h-9 text-xs"})]}),ne("text-xs")]}),o.jsxs("div",{className:"-mx-1 hidden shrink-0 items-center justify-between gap-3 px-1 md:flex",children:[o.jsx("div",{className:"min-w-0 overflow-x-auto",children:o.jsx(Cc,{value:v,onValueChange:M=>{$(M),r({page:void 0})},children:o.jsx(tl,{children:zT.map(M=>{const F=pvs[M]??Wye;return o.jsxs(ia,{value:M,className:"h-9 gap-1.5 px-2.5 text-xs sm:h-10 sm:px-3 sm:text-sm",children:[o.jsx(F,{size:13,className:"text-[color:var(--muted-foreground)]"}),e(`models.sort_${M}`,{defaultValue:M})]},M)})})})}),ne("shrink-0")]}),x&&k==="CNY"?o.jsx("p",{className:"-mt-1 shrink-0 text-2xs text-[color:var(--muted-foreground)]",children:e("models.currency.settlement",{rate:bF,defaultValue:"价格以人民币展示,按固定汇率 {{rate}} 折算,仅供参考;钱包始终以美元按实际用量结算。"})}):null,o.jsx(Pt,{fill:!0,stickyHeader:!0,label:e("models.table.label",{defaultValue:"Models"}),rows:j.data?.items,isLoading:j.isLoading,error:j.error,emptyTitle:c==="favorites"?e("models.empty.favorites",{defaultValue:"No favorites yet"}):e("models.empty.noMatch",{defaultValue:"No matching models"}),onRowClick:V,mobileCard:q,pagination:{total:j.data?.total??0,page:T,pageSize:R,pageSizeOptions:uvs,onPageChange:M=>r({page:M===1?void 0:String(M)}),onPageSizeChange:M=>r({size:M===20?void 0:String(M),page:void 0})},columns:[{header:o.jsx(Er,{children:e("models.table.model",{defaultValue:"Model"})}),cell:M=>o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(rG,{on:M.isFavorited,onToggle:()=>N.mutate({publicId:M.publicId,favorited:!M.isFavorited}),addLabel:e("models.favorite.add",{defaultValue:"Add favorite"}),removeLabel:e("models.favorite.remove",{defaultValue:"Remove favorite"})}),o.jsx(sG,{label:ux(M.authorSlug),children:o.jsx("span",{className:"flex size-[18px] shrink-0 items-center justify-center text-[color:var(--muted-foreground)]",children:o.jsx(Xo,{authorSlug:M.authorSlug,size:18})})}),o.jsxs("div",{className:"flex flex-col gap-0.5",children:[o.jsxs("div",{className:"flex items-center gap-1.5",children:[o.jsx("span",{className:`text-sm font-medium${M.available===!1||a(M)?" text-[color:var(--muted-foreground)]":""}`,children:M.displayName||M.modelSlug}),M.available===!1?o.jsx(Xt,{variant:"warning",children:e("models.badge_unavailable",{defaultValue:"Unavailable"})}):null,a(M)?o.jsx(Xt,{variant:"warning",children:e("models.badge_requiresTopup",{defaultValue:"Top-up required"})}):null,M.badges.map(F=>o.jsx(Xt,{variant:F==="hot"?"warning":"success",children:e(`models.badge_${F}`,{defaultValue:F})},F))]}),o.jsx(yvs,{slug:M.fullSlug,copyLabel:e("models.table.copyId",{defaultValue:"Copy model ID"}),copiedLabel:e("models.table.copied",{defaultValue:"Copied"})})]})]})},{header:o.jsx(Er,{icon:hR,children:e("models.table.price",{defaultValue:"Price"})}),align:"right",cell:M=>{const F=Eg(M.outputModalities),H=LV(M,F,k),ee=F!=="image"&&F!=="video"?zge(M,k):null,B=F==="text"?bK(M,k):[];return o.jsxs("span",{className:"flex flex-col items-end gap-0.5 font-[family-name:var
907(--font-mono)] text-sm font-semibold tabular-nums",children:[o.jsxs("span",{children:[H.from?o.jsxs("span",{className:"font-normal text-[color:var(--muted-foreground)]",children:[e("models.price_from",{defaultValue:"from"})," "]}):null,H.our,H.unit!=="inout"?o.jsxs("span",{className:"font-normal text-[color:var(--muted-foreground)]",children:[" ",oG(H.unit,e)]}):null]}),ee?o.jsxs("span",{className:"text-11 font-normal text-[color:var(--muted-foreground)]",children:[e("models.price_fast",{defaultValue:"Fast"})," ",ee]}):null,B.map(G=>o.jsx("span",{className:"max-w-[260px] whitespace-normal text-right text-11 font-normal leading-relaxed text-[color:var(--muted-foreground)]",children:G},G)),M.imageTiers&&M.imageTiers.length>0?o.jsx("span",{className:"text-11 font-normal text-[color:var(--muted-foreground)]",children:M.imageTiers.map(G=>`${G.resolution} ${Fn(G.perImageUsd,k)}`).join(" · ")}):null]})}},{header:o.jsx(Er,{icon:Tbe,children:e("models.table.discount",{defaultValue:"Discount"})}),align:"right",cell:M=>{const F=UV(M,Eg(M.outputModalities),k);return F?o.jsxs("span",{className:"flex flex-col items-end gap-1",children:[o.jsx(Xt,{variant:"success",children:BV(F.pct,t.language)}),o.jsx("span",{className:"font-[family-name:var(--font-mono)] text-11 tabular-nums text-[color:var(--muted-foreground)] line-through",children:F.official})]}):o.jsx("span",{className:"text-[color:var(--muted-foreground)]",children:"—"})}},{header:o.jsx(Er,{icon:eS,children:e("models.table.type",{defaultValue:"Type"})}),cell:M=>{const F=Eg(M.outputModalities),H=UR[F];return o.jsxs(mvs,{className:"bg-[color:var(--muted)] text-[color:var(--foreground)]",children:[o.jsx(H,{size:13,className:aG[F]}),e(`models.type_${F}`,{defaultValue:F})]})}},{header:o.jsx(Er,{icon:J1,children:e("models.table.provider",{defaultValue:"Provider"})}),cell:M=>{const F=DR(M.source)==="kiro";return o.jsxs("span",{className:"inline-flex items-center gap-1.5",children:[o.jsx("span",{className:"flex size-[18px] items-center justify-center",style:F?{color:jL}:void 0,children:F?o.jsx(QT,{size:18}):o.jsx(Xo,{authorSlug:M.authorSlug,size:18})}),o.jsx("span",{className:"text-sm font-medium",children:F?"Kiro":ux(M.authorSlug)})]})}},{header:o.jsx(Er,{icon:Z1,children:e("models.table.protocols",{defaultValue:"Protocols"})}),cell:M=>M.supportedProtocolList.length>0?o.jsx(GV,{protocols:M.supportedProtocolList,max:3}):o.jsx("span",{className:"text-[color:var(--muted-foreground)]",children:"—"})},{header:o.jsx(Er,{icon:nx,children:e("models.table.context",{defaultValue:"Context"})}),align:"right",cell:M=>o.jsx("span",{className:"tabular-nums",children:Xl(M.contextWindow)})},{header:o.jsx(Er,{icon:Qye,children:e("models.table.maxOutput",{defaultValue:"Max output"})}),align:"right",cell:M=>o.jsx("span",{className:"tabular-nums",children:Xl(M.maxOutputTokens)})},{header:o.jsx(Er,{icon:$9,children:e("models.table.usage",{defaultValue:"Usage"})}),align:"right",cell:M=>o.jsx("span",{className:"text-sm tabular-nums",children:Jge(M.usageTokens)})},{header:o.jsx(Er,{icon:u9,children:e("models.table.stability",{defaultValue:"Stability"})}),align:"right",cell:M=>o.jsx("div",{className:"ml-auto w-44 sm:w-60",children:o.jsx(yhe,{data:M.uptime24h??[],heightPx:16,showPct:!0})})},{header:e("models.table.action",{defaultValue:"Action"}),sticky:"right",cell:M=>o.jsx(K,{variant:"secondary",size:"sm",disabled:M.available===!1||a(M),className:"opacity-100 transition md:opacity-0 md:group-hover/row:opacity-100 md:focus-visible:opacity-100 md:group-hover/row:bg-[color:var(--primary)] md:group-hover/row:text-[color:var(--primary-foreground)] md:group-hover/row:border-transparent disabled:pointer-events-none disabled:opacity-40",onClick:F=>{F.stopPropagation(),n(`${Be.chat}?model=${encodeURIComponent(M.fullSlug)}&chatId=new`)},children:e("models.table.tryIt",{defaultValue:"Try it"})})}]})]})}function rG({on:e,onToggle:t,addLabel:n,removeLabel:a}){return o.jsx(sG,{label:e?a:n,children:o.jsx("button",{type:"button",onClick:s=>{s.stopPropagation(),t()},"aria-label":e?a:n,className:"flex size-7 items-center justify-center rounded-md hover:bg-[color:var(--muted)]",children:o.jsx(Jbe,{size:16,className:e?"fill-amber-400 text-amber-400":"text-[color:var(--muted-foreground)]"})})})}function yvs({slug:e,copyLabel:t,copiedLabel:n}){return o.jsxs("span",{className:"group/slug flex items-center gap-1",children:[o.jsx("span",{className:"font-[family-name:var
907(--font-mono)] text-11 text-[color:var(--muted-foreground)]",children:e}),o.jsx(py,{value:e,copyLabel:t,copiedLabel:n,iconClassName:"size-3",className:"size-5 rounded opacity-0 transition-opacity group-hover/slug:opacity-100"})]})}const vvs=300;function bvs({children:e}){const t=h.useRef(null),[n,a]=h.useState({w:0,h:0}),[,s]=h.useTransition(),r=h.useRef(null);return h.useLayoutEffect(()=>{const i=t.current;if(!i)return;const{width:c,height:d}=i.getBoundingClientRect();c>0&&d>0&&a({w:Math.round(c),h:Math.round(d)})},[]),h.useEffect(()=>{const i=t.current;if(!i)return;const c=new ResizeObserver(d=>{const{width:m,height:f}=d[0]?.contentRect??{};!m||!f||(r.current&&clearTimeout(r.current),r.current=setTimeout(()=>{s(()=>a({w:Math.round(m),h:Math.round(f)}))},vvs))});return c.observe(i),()=>{c.disconnect(),r.current&&clearTimeout(r.current)}},[]),o.jsx("div",{ref:t,style:{width:"100%",height:"100%"},children:n.w>0?h.cloneElement(e,{width:n.w,height:n.h}):null})}function Nj({title:e,description:t,actions:n,height:a=240,loading:s=!1,error:r=null,hasData:i=!0,emptyState:c,children:d,className:m}){const{t:f}=W(),p=r?"error":s?"loading":i?"data":"empty";return o.jsxs("section",{"data-testid":"chart-container","data-state":p,className:X("flex min-w-0 flex-col gap-2.5 rounded-lg border border-border bg-card p-3 sm:gap-3 sm:p-4",m),children:[(e||n)&&o.jsxs("header",{className:"flex min-w-0 flex-col gap-2 sm:flex-row sm:items-start sm:justify-between sm:gap-3",children:[o.jsxs("div",{className:"flex flex-col gap-0.5 min-w-0",children:[e?o.jsx("h3",{className:"truncate text-sm font-semibold text-foreground",children:e}):null,t?o.jsx("p",{className:"text-xs text-muted-foreground line-clamp-1",children:t}):null]}),n?o.jsx("div",{className:"flex min-w-0 flex-wrap items-center gap-2 sm:shrink-0 sm:justify-end",children:n}):null]}),o.jsx("div",{style:{height:a},className:"relative",children:p==="loading"?o.jsx(Rt,{className:"h-full w-full"}):p==="error"?r instanceof Error?o.jsx(Qt,{title:f("charts.errorTitle"),description:r.message}):r:p==="empty"?c??o.jsx(Ot,{title:f("charts.emptyTitle"),description:f("charts.emptyDescription"),className:"h-full"}):o.jsx(bvs,{children:d})})]})}const xvs=[1,2,3,4,5,6,7,8,9,10,11,12];function Yw(e){return`var(--chart-${(e-1)%xvs.length+1})`}const $vs={zIndex:"var(--z-tooltip)",pointerEvents:"none"},wvs={background:"var(--popover)",border:"1px solid var(--border)",borderRadius:8,boxShadow:"0 18px 60px rgba(13,17,23,0.14)",color:"var(--popover-foreground)",fontSize:12},kvs={color:"var(--muted-foreground)",fontWeight:500},Cvs={color:"var(--foreground)"},iG={allowEscapeViewBox:{x:!1,y:!0},contentStyle:wvs,itemStyle:Cvs,labelStyle:kvs,wrapperStyle:$vs},lG={fontSize:12,paddingTop:12};function Svs(e,t="(other)"){return[...e].sort((n,a)=>{const s=n.dataKey===t,r=a.dataKey===t;return s!==r?s?1:-1:Number(a.value)-Number(n.value)})}var Avs=["dangerouslySetInnerHTML","onCopy","onCopyCapture","onCut","onCutCapture","onPaste","onPasteCapture","onCompositionEnd","onCompositionEndCapture","onCompositionStart","onCompositionStartCapture","onCompositionUpdate","onCompositionUpdateCapture","onFocus","onFocusCapture","onBlur","onBlurCapture","onChange","onChangeCapture","onBeforeInput","onBeforeInputCapture","onInput","onInputCapture","onReset","onResetCapture","onSubmit","onSubmitCapture","onInvalid","onInvalidCapture","onLoad","onLoadCapture","onError","onErrorCapture","onKeyDown","onKeyDownCapture","onKeyPress","onKeyPressCapture","onKeyUp","onKeyUpCapture","onAbort","onAbortCapture","onCanPlay","onCanPlayCapture","onCanPlayThrough","onCanPlayThroughCapture","onDurationChange","onDurationChangeCapture","onEmptied","onEmptiedCapture","onEncrypted","onEncryptedCapture","onEnded","onEndedCapture","onLoadedData","onLoadedDataCapture","onLoadedMetadata","onLoadedMetadataCapture","onLoadStart","onLoadStartCapture","onPause","onPauseCapture","onPlay","onPlayCapture","onPlaying","onPlayingCapture","onProgress","onProgressCapture","onRateChange","onRateChangeCapture","onSeeked","onSeekedCapture","onSeeking","onSeekingCapture","onStalled","onStalledCapture","onSuspend","onSuspendCapture","onTimeUpdate","onTimeUpdate
907Capture","onVolumeChange","onVolumeChangeCapture","onWaiting","onWaitingCapture","onAuxClick","onAuxClickCapture","onClick","onClickCapture","onContextMenu","onContextMenuCapture","onDoubleClick","onDoubleClickCapture","onDrag","onDragCapture","onDragEnd","onDragEndCapture","onDragEnter","onDragEnterCapture","onDragExit","onDragExitCapture","onDragLeave","onDragLeaveCapture","onDragOver","onDragOverCapture","onDragStart","onDragStartCapture","onDrop","onDropCapture","onMouseDown","onMouseDownCapture","onMouseEnter","onMouseLeave","onMouseMove","onMouseMoveCapture","onMouseOut","onMouseOutCapture","onMouseOver","onMouseOverCapture","onMouseUp","onMouseUpCapture","onSelect","onSelectCapture","onTouchCancel","onTouchCancelCapture","onTouchEnd","onTouchEndCapture","onTouchMove","onTouchMoveCapture","onTouchStart","onTouchStartCapture","onPointerDown","onPointerDownCapture","onPointerMove","onPointerMoveCapture","onPointerUp","onPointerUpCapture","onPointerCancel","onPointerCancelCapture","onPointerEnter","onPointerEnterCapture","onPointerLeave","onPointerLeaveCapture","onPointerOver","onPointerOverCapture","onPointerOut","onPointerOutCapture","onGotPointerCapture","onGotPointerCaptureCapture","onLostPointerCapture","onLostPointerCaptureCapture","onScroll","onScrollCapture","onWheel","onWheelCapture","onAnimationStart","onAnimationStartCapture","onAnimationEnd","onAnimationEndCapture","onAnimationIteration","onAnimationIterationCapture","onTransitionEnd","onTransitionEndCapture"];function Dj(e){if(typeof e!="string")return!1;var t=Avs;return t.includes(e)}var Tvs=["aria-activedescendant","aria-atomic","aria-autocomplete","aria-busy","aria-checked","aria-colcount","aria-colindex","aria-colspan","aria-controls","aria-current","aria-describedby","aria-details","aria-disabled","aria-errormessage","aria-expanded","aria-flowto","aria-haspopup","aria-hidden","aria-invalid","aria-keyshortcuts","aria-label","aria-labelledby","aria-level","aria-live","aria-modal","aria-multiline","aria-multiselectable","aria-orientation","aria-owns","aria-placeholder","aria-posinset","aria-pressed","aria-readonly","aria-relevant","aria-required","aria-roledescription","aria-rowcount","aria-rowindex","aria-rowspan","aria-selected","aria-setsize","aria-sort","aria-valuemax","aria-valuemin","aria-valuenow","aria-valuetext","className","color","height","id","lang","max","media","method","min","name","style","target","width","role","tabIndex","accentHeight","accumulate","additive","alignmentBaseline","allowReorder","alphabetic","amplitude","arabicForm","ascent","attributeName","attributeType","autoReverse","azimuth","baseFrequency","baselineShift","baseProfile","bbox","begin","bias","by","calcMode","capHeight","clip","clipPath","clipPathUnits","clipRule","colorInterpolation","colorInterpolationFilters","colorProfile","colorRendering","contentScriptType","contentStyleType","cursor","cx","cy","d","decelerate","descent","diffuseConstant","direction","display","divisor","dominantBaseline","dur","dx","dy","edgeMode","elevation","enableBackground","end","exponent","externalResourcesRequired","fill","fillOpacity","fillRule","filter","filterRes","filterUnits","floodColor","floodOpacity","focusable","fontFamily","fontSize","fontSizeAdjust","fontStretch","fontStyle","fontVariant","fontWeight","format","from","fx","fy","g1","g2","glyphName","glyphOrientationHorizontal","glyphOrientationVertical","glyphRef","gradientTransform","gradientUnits","hanging","horizAdvX","horizOriginX","href","ideographic","imageRendering","in2","in","intercept","k1","k2","k3","k4","k","kernelMatrix","kernelUnitLength","kerning","keyPoints","keySplines","keyTimes","lengthAdjust","letterSpacing","lightingColor","limitingConeAngle","local","markerEnd","markerHeight","markerMid","markerStart","markerUnits","markerWidth","mask","maskContentUnits","maskUnits","mathematical","mode","numOctaves","offset","opacity","operator","order","orient","orientation","origin","overflow","overlinePosition","overlineThickness","paintOrder","panose1","pathLength","patternContentUnits","patternTransform","patternUnits","pointerEvents","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","r","radius","refX","refY","renderingIntent","repeatCount","repeatDur","requiredExtensions","requiredFeatures","restart","result","rotate","rx","ry","seed","shapeRendering","slope","spacing","specularConstant","specularExponent","speed","spreadMethod","startOffset","stdDeviation","stemh","stemv","stitchTiles","stopColor","stopOpacity","strikethroughPosition","strikethroughThickness","string","stroke","strokeDasharray","strokeDashoffset","strokeLinecap","strokeLinejoin","strokeMiterlimit","strokeOpacity","strokeWidth","surfaceScale","systemLanguage","tableValues","targetX","targetY","textAnchor","textDecoration","textLength","textRendering","to","transform","u1","u2","underlinePosition","underlineThickness","unicode","unicodeBidi","unicodeRange","unitsPerEm","vAlphabetic","values","vectorEffect","version","vertAdvY","vertOriginX","vertOriginY","vHanging","vIdeographic","viewTarget","visibility","vMathematical","widths","wordSpacing","writingMode","x1","x2","x","xChannelSelector","xHeight","xlinkActuate","xlinkArcrole","xlinkHref","xlinkRole","xlinkShow","xlinkTitle","xlinkType","xmlBase","xmlLang","xmlns","xmlnsXlink","xmlSpace","y1","y2","y","yChannelSelector","z","zoomAndPan","ref","key","angle"],Rvs=new Set(Tvs);function cG(e){return typeof e!="string"?!1:Rvs.has(e)}function dG(e){return typeof e=="string"&&e.startsWith("data-")}function Is(e){if(typeof e!="object"||e===null)return{};var t={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(cG(n)||dG(n))&&(t[n]=e[n]);return t}function gy(e){if(e==null)return null;if(h.isValidElement(e)&&typeof e.props=="object"&&e.props!==null){var t=e.props;return Is(t)}return typeof e=="object"&&!Array.isArray(e)?Is(e):null}function no(e){var t={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(cG(n)||dG(n)||Dj(n))&&(t[n]=e[n]);return t}function Pvs(e){return e==null?null:h.isValidElement(e)?no(e.props):typeof e=="object"&&!Array.isArray(e)?no(e):null}var _vs=["children","width","height","viewBox","className","style","title","desc"];function BR(){return BR=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)({}).hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},BR.apply(null,arguments)}function jvs(e,t){if(e==null)return{};var n,a,s=Nvs(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a<r.length;a++)n=r[a],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(s[n]=e[n])}return s}function Nvs(e,t){if(e==null)return{};var n={};for(var a in e)if({}.hasOwnProperty.call(e,a)){if(t.indexOf(a)!==-1)continue;n[a]=e[a]}return n}var Mj=h.forwardRef((e,t)=>
vendor: 5,464 bytes, line 907
907{var{children:n,width:a,height:s,viewBox:r,className:i,style:c,title:d,desc:m}=e,f=jvs(e,_vs),p=r||{width:a,height:s,x:0,y:0},y=Lt("recharts-surface",i);return h.createElement("svg",BR({},no(f),{className:y,width:a,height:s,style:c,viewBox:"".concat(p.x," ").concat(p.y," ").concat(p.width," ").concat(p.height),ref:t}),h.createElement("title",null,d),h.createElement("desc",null,m),n)}),Dvs=["children","className"];function FR(){return FR=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)({}).hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},FR.apply(null,arguments)}function Mvs(e,t){if(e==null)return{};var n,a,s=Evs(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a<r.length;a++)n=r[a],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(s[n]=e[n])}return s}function Evs(e,t){if(e==null)return{};var n={};for(var a in e)if({}.hasOwnProperty.call(e,a)){if(t.indexOf(a)!==-1)continue;n[a]=e[a]}return n}var Fa=h.forwardRef((e,t)=>{var{children:n,className:a}=e,s=Mvs(e,Dvs),r=Lt("recharts-layer",a);return h.createElement("g",FR({className:r},no(s),{ref:t}),n)}),uG=h.createContext(null),Ivs=()=>h.useContext(uG);function on(e){return function(){return e}}const ZBs=Math.abs,JBs=Math.atan2,mG=Math.cos,e6s=Math.max,t6s=Math.min,Wx=Math.sin,Sr=Math.sqrt,n6s=1e-12,yp=Math.PI,NL=yp/2,Qw=2*yp;function a6s(e){return e>1?0:e<-1?yp:Math.acos(e)}function o6s(e){return e>=1?NL:e<=-1?-NL:Math.asin(e)}const zR=Math.PI,qR=2*zR,$d=1e-6,Ovs=qR-$d;function pG(e){this._+=e[0];for(let t=1,n=e.length;t<n;++t)this._+=arguments[t]+e[t]}function Lvs(e){let t=Math.floor(e);if(!(t>=0))throw new Error(`invalid digits: ${e}`);if(t>15)return pG;const n=10**t;return function(a){this._+=a[0];for(let s=1,r=a.length;s<r;++s)this._+=Math.round(arguments[s]*n)/n+a[s]}}class Uvs{constructor(t){this._x0=this._y0=this._x1=this._y1=null,this._="",this._append=t==null?pG:Lvs(t)}moveTo(t,n){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+n}`}closePath(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._append`Z`)}lineTo(t,n){this._append`L${this._x1=+t},${this._y1=+n}`}quadraticCurveTo(t,n,a,s){this._append`Q${+t},${+n},${this._x1=+a},${this._y1=+s}`}bezierCurveTo(t,n,a,s,r,i){this._append`C${+t},${+n},${+a},${+s},${this._x1=+r},${this._y1=+i}`}arcTo(t,n,a,s,r){if(t=+t,n=+n,a=+a,s=+s,r=+r,r<0)throw new Error(`negative radius: ${r}`);let i=this._x1,c=this._y1,d=a-t,m=s-n,f=i-t,p=c-n,y=f*f+p*p;if(this._x1===null)this._append`M${this._x1=t},${this._y1=n}`;else if(y>$d)if(!(Math.abs(p*d-m*f)>$d)||!r)this._append`L${this._x1=t},${this._y1=n}`;else{let v=a-i,$=s-c,x=d*d+m*m,w=v*v+$*$,S=Math.sqrt(x),k=Math.sqrt(y),T=r*Math.tan((zR-Math.acos((x+y-w)/(2*S*k)))/2),R=T/k,_=T/S;Math.abs(R-1)>$d&&this._append`L${t+R*f},${n+R*p}`,this._append`A${r},${r},0,0,${+(p*v>f*$)},${this._x1=t+_*d},${this._y1=n+_*m}`}}arc(t,n,a,s,r,i){if(t=+t,n=+n,a=+a,i=!!i,a<0)throw new Error(`negative radius: ${a}`);let c=a*Math.cos(s),d=a*Math.sin(s),m=t+c,f=n+d,p=1^i,y=i?s-r:r-s;this._x1===null?this._append`M${m},${f}`:(Math.abs(this._x1-m)>$d||Math.abs(this._y1-f)>$d)&&this._append`L${m},${f}`,a&&(y<0&&(y=y%qR+qR),y>Ovs?this._append`A${a},${a},0,1,${p},${t-c},${n-d}A${a},${a},0,1,${p},${this._x1=m},${this._y1=f}`:y>$d&&this._append`A${a},${a},0,${+(y>=zR)},${p},${this._x1=t+a*Math.cos(r)},${this._y1=n+a*Math.sin(r)}`)}rect(t,n,a,s){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+n}h${a=+a}v${+s}h${-a}Z`}toString(){return this._}}function Ej(e){let t=3;return e.digits=function(n){if(!arguments.length)return t;if(n==null)t=null;else{const a=Math.floor(n);if(!(a>=0))throw new RangeError(`invalid digits: ${n}`);t=a}return e},()=>new Uvs(t)}function Ij(e){return typeof e=="object"&&"length"in e?e:Array.from(e)}function fG(e){this._context=e}fG.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._context.lineTo(e,t);break}}};function Xw(e){return new fG(e)}function gG(e){return e[0]}function hG(e){return e[1]}function yG(e,t){var n=on(!0),a=null,s=Xw,r=null,i=Ej(c);e=typeof e=="function"?e:e===void 0?gG:on(e),t=typeof t=="function"?t:t===void 0?hG:on(t);function c(d){var m,f=(d=Ij(d)).length,p,y=!1,v;for(a==null&&(r=s(v=i())),m=0;m<=f;++m)!(m<f&&n(p=d[m],m,d))===y&&((y=!y)?r.lineStart():r.lineEnd()),y&&r.point(+e(p,m,d),+t(p,m,d));if(v)return r=null,v+""||null}return c.x=function(d){return arguments.length?(e=typeof d=="function"?d:on(+d),c):e},c.y=function(d){return arguments.length?(t=typeof d=="function"?d:on(+d),c):t},c.defined=function(d){return arguments.length?(n=typeof d=="function"?d:on(!!d),c):n},c.curve=function(d){return arguments.length?(s=d,a!=null&&(r=s(a)),c):s},c.context=function(d){return arguments.length?(d==null?a=r=null:r=s(a=d),c):a},c}function $b(e,t,n){var a=null,s=on(!0),r=null,i=Xw,c=null,d=Ej(m);e=typeof e=="function"?e:e===void 0?gG:on(+e),t=typeof t=="function"?t:on(t===void 0?0:+t),n=typeof n=="function"?n:n===void 0?hG:on(+n);function m(p){var y,v,$,x=(p=Ij(p)).length,w,S=!1,k,T=new Array(x),R=new Array(x);for(r==null&&(c=i(k=d())),y=0;y<=x;
907++y){if(!(y<x&&s(w=p[y],y,p))===S)if(S=!S)v=y,c.areaStart(),c.lineStart();else{for(c.lineEnd(),c.lineStart(),$=y-1;$>=v;--$)c.point(T[$],R[$]);c.lineEnd(),c.areaEnd()}S&&(T[y]=+e(w,y,p),R[y]=+t(w,y,p),c.point(a?+a(w,y,p):T[y],n?+n(w,y,p):R[y]))}if(k)return c=null,k+""||null}function f(){return yG().defined(s).curve(i).context(r)}return m.x=function(p){return arguments.length?(e=typeof p=="function"?p:on(+p),a=null,m):e},m.x0=function(p){return arguments.length?(e=typeof p=="function"?p:on(+p),m):e},m.x1=function(p){return arguments.length?(a=p==null?null:typeof p=="function"?p:on(+p),m):a},m.y=function(p){return arguments.length?(t=typeof p=="function"?p:on(+p),n=null,m):t},m.y0=function(p){return arguments.length?(t=typeof p=="function"?p:on(+p),m):t},m.y1=function(p){return arguments.length?(n=p==null?null:typeof p=="function"?p:on(+p),m):n},m.lineX0=m.lineY0=function(){return f().x(e).y(t)},m.lineY1=function(){return f().x(e).y(n)},m.lineX1=function(){return f().x(a).y(t)},m.defined=function(p){return arguments.length?(s=typeof p=="function"?p:on(!!p),m):s},m.curve=function(p){return arguments.length?(i=p,r!=null&&(c=i(r)),m):i},m.context=function(p){return arguments.length?(p==null?r=c=null:c=i(r=p),m):r},m}class vG{constructor(t,n){this._context=t,this._x=n}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line}point(t,n){switch(t=+t,n=+n,this._point){case 0:{this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break}case 1:this._point=2;default:{this._x?this._context.bezierCurveTo(this._x0=(this._x0+t)/2,this._y0,this._x0,n,t,n):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+n)/2,t,this._y0,t,n);break}}this._x0=t,this._y0=n}}function Bvs(e){return new vG(e,!0)}function Fvs(e){return new vG(e,!1)}const Oj={draw(e,t){const n=Sr(t/yp);e.moveTo(n,0),e.arc(0,0,n,0,Qw)}},zvs={draw(e,t){const n=Sr(t/5)/2;e.moveTo(-3*n,-n),e.lineTo(-n,-n),e.lineTo(-n,-3*n),e.lineTo(n,-3*n),e.lineTo(n,-n),e.lineTo(3*n,-n),e.lineTo(3*n,n),e.lineTo(n,n),e.lineTo(n,3*n),e.lineTo(-n,3*n),e.lineTo(-n,n),e.lineTo(-3*n,n),e.closePath()}},bG=Sr(1/3),qvs=bG*2,Hvs={draw(e,t){const n=Sr(t/qvs),a=n*bG;e.moveTo(0,-n),e.lineTo(a,0),e.lineTo(0,n),e.lineTo(-a,0),e.closePath()}},Vvs={draw(e,t){const n=Sr(t),a=-n/2;e.rect(a,a,n,n)}},Kvs=.8908130915292852,xG=Wx(yp/10)/Wx(7*yp/10),Gvs=Wx(Qw/10)*xG,Wvs=-mG(Qw/10)*xG,Yvs={draw(e,t){const n=Sr(t*Kvs),a=Gvs*n,s=Wvs*n;e.moveTo(0,-n),e.lineTo(a,s);for(let r=1;r<5;++r){const i=Qw*r/5,c=mG(i),d=Wx(i);e.lineTo(d*n,-c*n),e.lineTo(c*a-d*s,d*a+c*s)}e.closePath()}},AS=Sr(3),Qvs={draw(e,t){const n=-Sr(t/(AS*3));e.moveTo(0,n*2),e.lineTo(-AS*n,-n),e.lineTo(AS*n,-n),e.closePath()}},ws=-.5,ks=Sr(3)/2,HR=1/Sr(12),Xvs=(HR/2+1)*3,Zvs={draw(e,t){const n=Sr(t/Xvs),a=n/2,s=n*HR,r=a,i=n*HR+n,c=-r,d=i;e.moveTo(a,s),e.lineTo(r,i),e.lineTo(c,d),e.lineTo(ws*a-ks*s,ks*a+ws*s),e.lineTo(ws*r-ks*i,ks*r+ws*i),e.lineTo(ws*c-ks*d,ks*c+ws*d),e.lineTo(ws*a+ks*s,ws*s-ks*a),e.lineTo(ws*r+ks*i,ws*i-ks*r),e.lineTo(ws*c+ks*d,ws*d-ks*c),e.closePath()}};function Jvs(e,t){let n=null,a=Ej(s);e=typeof e=="function"?e:on(e||Oj),t=typeof t=="function"?t:on(t===void 0?64:+t);function s(){let r;if(n||(n=r=a()),e.apply(this,arguments).draw(n,+t.apply(this,arguments)),r)return n=null,r+""||null}return s.type=function(r){return arguments.length?(e=typeof r=="function"?r:on(r),s):e},s.size=function(r){return arguments.length?(t=typeof r=="function"?r:on(+r),s):t},s.context=function(r){return arguments.length?(n=r??null,s):n},s}function Yx(){}function Qx(e,t,n){e._context.bezierCurveTo((2*e._x0+e._x1)/3,(2*e._y0+e._y1)/3,(e._x0+2*e._x1)/3,(e._y0+2*e._y1)/3,(e._x0+4*e._x1+t)/6,(e._y0+4*e._y1+n)/6)}function $G(e){this._context=e}$G.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:Qx(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:Qx(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function ebs(e){return new $G(e)}function wG(e){this._context=e}wG.prototype={areaStart:Yx,areaEnd:Yx,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x2,this._y2),this._context.closePath();break}case 2:{this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break}case 3:{this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4);break}}},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._x2=e,this._y2=t;break;case 1:this._point=2,this._x3=e,this._y3=t;break;case 2:this._point=3,this._x4=e,this._y4=t,this._context.moveTo((this._x0+4*this._x1+e)/6,(this._y0+4*this._y1+t)/6);break;default:Qx(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function tbs(e){return new wG(e)}function kG(e){this._context=e}kG.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var n=(this._x0+4*this._x1+e)/6,a=(this._y0+4*this._y1+t)/6;this._line?this._context.lineTo(n,a):this._context.moveTo(n,a);break;case 3:this._point=4;default:Qx(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function nbs(e){return new kG(e)}function CG(e){this._context=e}CG.prototype={areaStart:Yx,areaEnd:Yx,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(e,t){e=+e,t=+t,this._point?this._context.lineTo(e,t):(this._point=1,this._context.moveTo(e,t))}};function abs(e){return new CG(e)}function DL(e){return e<0?-1:1}function ML(e,t,n){var a=e._x1-e._x0,s=t-e._x1,r=(e._y1-e._y0)/(a||s<0&&-0),i=(n-e._y1)/(s||a<0&&-0),c=(r*s+i*a)/(a+s);return(DL(r)+DL(i))*Math.min(Math.abs(r),Math.abs(i),.5*Math.abs(c))||0}function EL(e,t){var n=e._x1-e._x0;return n?(3*(e._y1-e._y0)/n-t)/2:t}
907function TS(e,t,n){var a=e._x0,s=e._y0,r=e._x1,i=e._y1,c=(r-a)/3;e._context.bezierCurveTo(a+c,s+c*t,r-c,i-c*n,r,i)}function Xx(e){this._context=e}Xx.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:TS(this,this._t0,EL(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){var n=NaN;if(e=+e,t=+t,!(e===this._x1&&t===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,TS(this,EL(this,n=ML(this,e,t)),n);break;default:TS(this,this._t0,n=ML(this,e,t));break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t,this._t0=n}}};function SG(e){this._context=new AG(e)}(SG.prototype=Object.create(Xx.prototype)).point=function(e,t){Xx.prototype.point.call(this,t,e)};function AG(e){this._context=e}AG.prototype={moveTo:function(e,t){this._context.moveTo(t,e)},closePath:function(){this._context.closePath()},lineTo:function(e,t){this._context.lineTo(t,e)},bezierCurveTo:function(e,t,n,a,s,r){this._context.bezierCurveTo(t,e,a,n,r,s)}};function obs(e){return new Xx(e)}function sbs(e){return new SG(e)}function TG(e){this._context=e}TG.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var e=this._x,t=this._y,n=e.length;if(n)if(this._line?this._context.lineTo(e[0],t[0]):this._context.moveTo(e[0],t[0]),n===2)this._context.lineTo(e[1],t[1]);else for(var a=IL(e),s=IL(t),r=0,i=1;i<n;++r,++i)this._context.bezierCurveTo(a[0][r],s[0][r],a[1][r],s[1][r],e[i],t[i]);(this._line||this._line!==0&&n===1)&&this._context.closePath(),this._line=1-this._line,this._x=this._y=null},point:function(e,t){this._x.push(+e),this._y.push(+t)}};function IL(e){var t,n=e.length-1,a,s=new Array(n),r=new Array(n),i=new Array(n);for(s[0]=0,r[0]=2,i[0]=e[0]+2*e[1],t=1;t<n-1;++t)s[t]=1,r[t]=4,i[t]=4*e[t]+2*e[t+1];for(s[n-1]=2,r[n-1]=7,i[n-1]=8*e[n-1]+e[n],t=1;t<n;++t)a=s[t]/r[t-1],r[t]-=a,i[t]-=a*i[t-1];for(s[n-1]=i[n-1]/r[n-1],t=n-2;t>=0;--t)s[t]=(i[t]-s[t+1])/r[t];for(r[n-1]=(e[n]+s[n-1])/2,t=0;t<n-1;++t)r[t]=2*e[t+1]-s[t+1];return[s,r]}function rbs(e){return new TG(e)}function Zw(e,t){this._context=e,this._t=t}Zw.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=this._y=NaN,this._point=0},lineEnd:function(){0<this._t&&this._t<1&&this._point===2&&this._context.lineTo(this._x,this._y),(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line>=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:{if(this._t<=0)this._context.lineTo(this._x,t),this._context.lineTo(e,t);else{var n=this._x*(1-this._t)+e*this._t;this._context.lineTo(n,this._y),this._context.lineTo(n,t)}break}}this._x=e,this._y=t}};function ibs(e){return new Zw(e,.5)}function lbs(e){return new Zw(e,0)}function cbs(e){return new Zw(e,1)}function tu(e,t){if((i=e.length)>1)for(var n=1,a,s,r=e[t[0]],i,c=r.length;n<i;++n)for(s=r,r=e[t[n]],a=0;a<c;++a)r[a][1]+=r[a][0]=isNaN(s[a][1])?s[a][0]:s[a][1]}function VR(e){for(var t=e.length,n=new Array(t);--t>=0;)n[t]=t;return n}function dbs(e,t){return e[t]}function ubs(e){const t=[];return t.key=e,t}function mbs(){var e=on([]),t=VR,n=tu,a=dbs;function s(r){var i=Array.from(e.apply(this,arguments),ubs),c,d=i.length,m=-1,f;for(const p of r)for(c=0,++m;c<d;++c)(i[c][m]=[0,+a(p,i[c].key,m,r)]).data=p;for(c=0,f=Ij(t(i));c<d;++c)i[f[c]].index=c;return n(i,f),i}return s.keys=function(r){return arguments.length?(e=typeof r=="function"?r:on(Array.from(r)),s):e},s.value=function(r){return arguments.length?(a=typeof r=="function"?r:on(+r),s):a},s.order=function(r){return arguments.length?(t=r==null?VR:typeof r=="function"?r:on(Array.from(r)),s):t},s.offset=function(r){return arguments.length?(n=r??tu,s):n},s}function pbs(e,t){if((a=e.length)>0){for(var n,a,s=0,r=e[0].length,i;s<r;++s){for(i=n=0;n<a;++n)i+=e[n][s][1]||0;if(i)for(n=0;n<a;++n)e[n][s][1]/=i}tu(e,t)}}function fbs(e,t){if((s=e.length)>0){for(var n=0,a=e[t[0]],s,r=a.length;n<r;++n){for(var i=0,c=0;i<s;++i)c+=e[i][n][1]||0;a[n][1]+=a[n][0]=-c/2}tu(e,t)}}function gbs(e,t){if(!(!((i=e.length)>0)||!((r=(s=e[t[0]]).length)>0))){for(var n=0,a=1,s,r,i;a<r;++a){for(var c=0,d=0,m=0;c<i;++c){for(var f=e[t[c]],p=f[a][1]||0,y=f[a-1][1]||0,v=(p-y)/2,$=0;$<c;++$){var x=e[t[$]],w=x[a][1]||0,S=x[a-1][1]||0;v+=w-S}d+=p,m+=v*p}s[a-1][1]+=s[a-1][0]=n,d&&(n-=m/d)}s[a-1][1]+=s[a-1][0]=n,tu(e,t)}}var RS={},PS={},OL;
907function hbs(){return OL||(OL=1,(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});function t(n){return n==="__proto__"}e.isUnsafeProperty=t})(PS)),PS}var _S={},LL;function RG(){return LL||(LL=1,(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});function t(n){switch(typeof n){case"number":case"symbol":return!1;case"string":return n.includes(".")||n.includes("[")||n.includes("]")}}e.isDeepKey=t})(_S)),_S}var jS={},UL;function Lj(){return UL||(UL=1,(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});function t(n){return typeof n=="string"||typeof n=="symbol"?n:Object.is(n?.valueOf?.(),-0)?"-0":String(n)}e.toKey=t})(jS)),jS}var NS={},DS={},BL;function ybs(){return BL||(BL=1,(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});function t(n){if(n==null)return"";if(typeof n=="string")return n;if(Array.isArray(n))return n.map(t).join(",");const a=String(n);return a==="0"&&Object.is(Number(n),-0)?"-0":a}e.toString=t})(DS)),DS}var FL;function Uj(){return FL||(FL=1,(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=ybs(),n=Lj();function a(s){if(Array.isArray(s))return s.map(n.toKey);if(typeof s=="symbol")return[s];s=t.toString(s);const r=[],i=s.length;if(i===0)return r;let c=0,d="",m="",f=!1;for(s.charCodeAt(0)===46&&(r.push(""),c++);c<i;){const p=s[c];m?p==="\\"&&c+1<i?(c++,d+=s[c]):p===m?m="":d+=p:f?p==='"'||p==="'"?m=p:p==="]"?(f=!1,r.push(d),d=""):d+=p:p==="["?(f=!0,d&&(r.push(d),d="")):p==="."?d&&(r.push(d),d=""):d+=p,c++}return d&&r.push(d),r}e.toPath=a})(NS)),NS}var zL;function Bj(){return zL||(zL=1,(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=hbs(),n=RG(),a=Lj(),s=Uj();function r(c,d,m){if(c==null)return m;switch(typeof d){case"string":{if(t.isUnsafeProperty(d))return m;const f=c[d];return f===void 0?n.isDeepKey(d)?r(c,s.toPath(d),m):m:f}case"number":case"symbol":{typeof d=="number"&&(d=a.toKey(d));const f=c[d];return f===void 0?m:f}default:{if(Array.isArray(d))return i(c,d,m);if(Object.is(d?.valueOf(),-0)?d="-0":d=String(d),t.isUnsafeProperty(d))return m;const f=c[d];return f===void 0?m:f}}}function i(c,d,m){if(d.length===0)return m;let f=c;for(let p=0;p<d.length;p++){if(f==null||t.isUnsafeProperty(d[p]))return m;f=f[d[p]]}return f===void 0?m:f}e.get=r})(RS)),RS}var MS,qL;function vbs(){return qL||(qL=1,MS=Bj().get),MS}var bbs=vbs();const vp=il(bbs);var xbs=4;function hc(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:xbs,n=10**t,a=Math.round(e*n)/n;return Object.is(a,-0)?0:a}function An(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),a=1;a<t;a++)n[a-1]=arguments[a];return e.reduce((s,r,i)=>{var c=n[i-1];return typeof c=="string"?s+c+r:c!==void 0?s+hc(c)+r:s+r},"")}var Co=e=>e===0?0:e>0?1:-1,hr=e=>typeof e=="number"&&e!=+e,KR=e=>typeof e=="string"&&e.indexOf("%")===e.length-1,Fe=e=>(typeof e=="number"||e instanceof Number)&&!hr(e),si=e=>Fe(e)||typeof e=="string",$bs=0,hh=e=>{var t=++$bs;return"".concat(e||"").concat(t)},yr=function(t,n){var a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,s=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;if(!Fe(t)&&typeof t!="string")return a;var r;if(KR(t)){if(n==null)return a;var i=t.indexOf("%");r=n*parseFloat(t.slice(0,i))/100}else r=+t;return hr(r)&&(r=a),s&&n!=null&&r>n&&(r=n),r},PG=e=>{if(!Array.isArray(e))return!1;for(var t=e.length,n={},a=0;a<t;a++)if(!n[String(e[a])])n[String(e[a])]=!0;else return!0;return!1};function bn(e,t,n){return Fe(e)&&Fe(t)?hc(e+n*(t-e)):t}function _G(e,t,n){if(!(!e||!e.length))return e.find(a=>a&&(typeof t=="function"?t(a):vp(a,t))===n)}var $n=e=>e===null||typeof e>"u",hy=e=>$n(e)?e:"".concat(e.charAt(0).toUpperCase()).concat(e.slice(1));function So(e){return e!=null}function Wp(){}var wbs=["type","size","sizeType"];function GR(){return GR=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)({}).hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},GR.apply(null,arguments)}function HL(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,a)}return n}function VL(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};
907t%2?HL(Object(n),!0).forEach(function(a){kbs(e,a,n[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):HL(Object(n)).forEach(function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(n,a))})}return e}function kbs(e,t,n){return(t=Cbs(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Cbs(e){var t=Sbs(e,"string");return typeof t=="symbol"?t:t+""}function Sbs(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var a=n.call(e,t);if(typeof a!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function Abs(e,t){if(e==null)return{};var n,a,s=Tbs(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a<r.length;a++)n=r[a],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(s[n]=e[n])}return s}function Tbs(e,t){if(e==null)return{};var n={};for(var a in e)if({}.hasOwnProperty.call(e,a)){if(t.indexOf(a)!==-1)continue;n[a]=e[a]}return n}var jG={symbolCircle:Oj,symbolCross:zvs,symbolDiamond:Hvs,symbolSquare:Vvs,symbolStar:Yvs,symbolTriangle:Qvs,symbolWye:Zvs},Rbs=Math.PI/180,Pbs=e=>{var t="symbol".concat(hy(e));return jG[t]||Oj},_bs=(e,t,n)=>{if(t==="area")return e;switch(n){case"cross":return 5*e*e/9;case"diamond":return .5*e*e/Math.sqrt(3);case"square":return e*e;case"star":{var a=18*Rbs;return 1.25*e*e*(Math.tan(a)-Math.tan(a*2)*Math.tan(a)**2)}case"triangle":return Math.sqrt(3)*e*e/4;case"wye":return(21-10*Math.sqrt(3))*e*e/8;default:return Math.PI*e*e/4}},jbs=(e,t)=>{jG["symbol".concat(hy(e))]=t},Fj=e=>{var{type:t="circle",size:n=64,sizeType:a="area"}=e,s=Abs(e,wbs),r=VL(VL({},s),{},{type:t,size:n,sizeType:a}),i="circle";typeof t=="string"&&(i=t);var c=()=>{var y=Pbs(i),v=Jvs().type(y).size(_bs(n,a,i)),$=v();if($!==null)return $},{className:d,cx:m,cy:f}=r,p=no(r);return Fe(m)&&Fe(f)&&Fe(n)?h.createElement("path",GR({}
907,p,{className:Lt("recharts-symbols",d),transform:"translate(".concat(m,", ").concat(f,")"),d:c()})):null};Fj.registerSymbol=jbs;var NG=e=>"radius"in e&&"startAngle"in e&&"endAngle"in e,zj=(e,t)=>{if(!e||typeof e=="function"||typeof e=="boolean")return null;var n=e;if(h.isValidElement(e)&&(n=e.props),typeof n!="object"&&typeof n!="function")return null;var a={};return Object.keys(n).forEach(s=>{Dj(s)&&typeof n[s]=="function"&&(a[s]=(r=>n[s](n,r)))}),a},Nbs=(e,t,n)=>a=>(e(t,n,a),null),Jw=(e,t,n)=>{if(e===null||typeof e!="object"&&typeof e!="function")return null;var a=null;return Object.keys(e).forEach(s=>{var r=e[s];Dj(s)&&typeof r=="function"&&(a||(a={}),a[s]=Nbs(r,t,n))}),a};function KL(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,a)}return n}function Dbs(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?KL(Object(n),!0).forEach(function(a){Mbs(e,a,n[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):KL(Object(n)).forEach(function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(n,a))})}return e}function Mbs(e,t,n){return(t=Ebs(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Ebs(e){var t=Ibs(e,"string");return typeof t=="symbol"?t:t+""}function Ibs(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var a=n.call(e,t);if(typeof a!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function Va(e,t){var n=Dbs({},e),a=t,s=Object.keys(t),r=s.reduce((i,c)=>(i[c]===void 0&&a[c]!==void 0&&(i[c]=a[c]),i),n);return r}function Zx(){return Zx=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)({}).hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},Zx.apply(null,arguments)}function GL(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,a)}return n}function DG(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?GL(Object(n),!0).forEach(function(a){Obs(e,a,n[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):GL(Object(n)).forEach(function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(n,a))})}return e}function Obs(e,t,n){return(t=Lbs(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Lbs(e){var t=Ubs(e,"string");return typeof t=="symbol"?t:t+""}function Ubs(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var a=n.call(e,t);if(typeof a!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var As=32,Bbs={align:"center",iconSize:14,inactiveColor:"#ccc",layout:"horizontal",verticalAlign:"middle",labelStyle:{}};function Fbs(e){if(typeof e=="object"&&e!==null&&"strokeDasharray"in e)return String(e.strokeDasharray)}function zbs(e){var{data:t,iconType:n,inactiveColor:a}=e,s=As/2,r=As/6,i=As/3,c=t.inactive?a:t.color,d=n??t.type;if(d==="none")return null;if(d==="plainline")return h.createElement("line",{strokeWidth:4,fill:"none",stroke:c,strokeDasharray:Fbs(t.payload),x1:0,y1:s,x2:As,y2:s,className:"recharts-legend-icon"});if(d==="line")return h.createElement("path",{strokeWidth:4,fill:"none",stroke:c,d:"M0,".concat(s,"h").concat(i,`
908            A`).concat(r,",").concat(r,",0,1,1,").concat(2*i,",").concat(s,`
909            H`).concat(As,"M").concat(2*i,",").concat(s,`
910            A`).concat(r,",").concat(r,",0,1,1,").concat(i,",").concat(s),className:"recharts-legend-icon"});if(d==="rect")return h.createElement("path",{stroke:"none",fill:c,d:"M0,".concat(As/8,"h").concat(As,"v").concat(As*3/4,"h").concat(-As,"z"),className:"recharts-legend-icon"});if(h.isValidElement(t.legendIcon)){var m=DG({},t);return delete m.legendIcon,h.cloneElement(t.legendIcon,m)}return h.createElement(Fj,{fill:c,cx:s,cy:s,size:As,sizeType:"diameter",type:d})}function qbs(e){var{payload:t,iconSize:n,layout:a,formatter:s,inactiveColor:r,iconType:i,labelStyle:c}=e,d={x:0,y:0,width:As,height:As},m={display:a==="horizontal"?"inline-block":"block",marginRight:10},f={display:"inline-block",verticalAlign:"middle",marginRight:4};return t.map((p,y)=>{var v=p.formatter||s,$=Lt({"recharts-legend-item":!0,["legend-item-".concat(y)]:!0,inactive:p.inactive});if(p.type==="none")return null;var x=typeof c=="object"?DG({},c):{};x.color=p.inactive?r:x.color||p.color;var w=v?v(p.value,p,y):p.value;return h.createElement("li",Zx({className:$,style:m,key:"legend-item-".concat(y)},Jw(e,p,y)),h.createElement(Mj,{width:n,height:n,viewBox:d,style:f,"aria-label":"".concat(p.value," legend icon")},h.createElement(zbs,{data:p,iconType:i,inactiveColor:r})),h.createElement("span",{className:"recharts-legend-item-text",style:x},w))})}var Hbs=e=>{var t=Va(e,Bbs),{payload:n,layout:a,align:s}=t;if(!n||!n.length)return null;var r={padding:0,margin:0,textAlign:a==="horizontal"?s:"left"};return h.createElement("ul",{className:"recharts-default-legend",style:r}
910,h.createElement(qbs,Zx({},t,{payload:n})))},ES={},IS={},WL;function Vbs(){return WL||(WL=1,(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});function t(n,a){const s=new Map;for(let r=0;r<n.length;r++){const i=n[r],c=a(i,r,n);s.has(c)||s.set(c,i)}return Array.from(s.values())}e.uniqBy=t})(IS)),IS}var OS={},YL;function Kbs(){return YL||(YL=1,(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});function t(n,a){return function(...s){return n.apply(this,s.slice(0,a))}}e.ary=t})(OS)),OS}var LS={},QL;function MG(){return QL||(QL=1,(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});function t(n){return n}e.identity=t})(LS)),LS}var US={},BS={},FS={},XL;function Gbs(){return XL||(XL=1,(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});function t(n){return Number.isSafeInteger(n)&&n>=0}e.isLength=t})(FS)),FS}var ZL;function EG(){return ZL||(ZL=1,(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=Gbs();function n(a){return a!=null&&typeof a!="function"&&t.isLength(a.length)}e.isArrayLike=n})(BS)),BS}var zS={},JL;function Wbs(){return JL||(JL=1,(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});function t(n){return typeof n=="object"&&n!==null}e.isObjectLike=t})(zS)),zS}var e4;function Ybs(){return e4||(e4=1,(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=EG(),n=Wbs();function a(s){return n.isObjectLike(s)&&t.isArrayLike(s)}e.isArrayLikeObject=a})(US)),US}var qS={},HS={},t4;function Qbs(){return t4||(t4=1,(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=Bj();function n(a){return function(s){return t.get(s,a)}}e.property=n})(HS)),HS}var VS={},KS={},GS={},WS={},n4;function IG(){return n4||(n4=1,(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});function t(n){return n!==null&&(typeof n=="object"||typeof n=="function")}e.isObject=t})(WS)),WS}var YS={},a4;function OG(){return a4||(a4=1,(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});function t(n){return n==null||typeof n!="object"&&typeof n!="function"}e.isPrimitive=t})(YS)),YS}var QS={},o4;function LG(){return o4||(o4=1,(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});function t(n,a){return n===a||Number.isNaN(n)&&Number.isNaN(a)}e.isEqualsSameValueZero=t})(QS)),QS}var s4;function Xbs(){return s4||(s4=1,(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=IG(),n=OG(),a=LG();function s(f,p,y){return typeof y!="function"?s(f,p,()=>{}):r(f,p,function v($,x,w,S,k,T){const R=y($,x,w,S,k,T);return R!==void 0?!!R:r($,x,v,T)},new Map)}function r(f,p,y,v){if(p===f)return!0;switch(typeof p){case"object":return i(f,p,y,v);case"function":return Object.keys(p).length>0?r(f,{...p},y,v):a.isEqualsSameValueZero(f,p);default:return t.isObject(f)?typeof p=="string"?p==="":!0:a.isEqualsSameValueZero(f,p)}}function i(f,p,y,v){if(p==null)return!0;if(Array.isArray(p))return d(f,p,y,v);if(p instanceof Map)return c(f,p,y,v);if(p instanceof Set)return m(f,p,y,v);const $=Object.keys(p);if(f==null||n.isPrimitive(f))return $.length===0;if($.length===0)return!0;if(v?.has(p))return v.get(p)===f;v?.set(p,f);try{for(let x=0;x<$.length;x++){const w=$[x];if(!n.isPrimitive(f)&&!(w in f)||p[w]===void 0&&f[w]!==void 0||p[w]===null&&f[w]!==null||!y(f[w],p[w],w,f,p,v))return!1}return!0}finally{v?.delete(p)}}function c(f,p,y,v){if(p.size===0)return!0;if(!(f instanceof Map))return!1;for(const[$,x]of p.entries()){const w=f.get($);if(y(w,x,$,f,p,v)===!1)return!1}return!0}function d(f,p,y,v){if(p.length===0)return!0;if(!Array.isArray(f))return!1;const $=new Set;for(let x=0;x<p.length;x++){const w=p[x];let S=!1;for(let k=0;k<f.length;k++){if($.has(k))continue;const T=f[k];let R=!1;if(y(T,w,x,f,p,v)&&(R=!0),R){$.add(k),S=!0;break}}if(!S)return!1}return!0}function m(f,p,y,v){return p.size===0?!0:f instanceof Set?d([...f],[...p],y,v):!1}e.isMatchWith=s,e.isSetMatch=m})(GS)),GS}var r4;function UG(){return r4||(r4=1,(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=Xbs();function n(a,s){return t.isMatchWith(a,s,()=>{})}e.isMatch=n})(KS)),KS}var XS={},ZS={},JS={},i4;function Zbs(){return i4||(i4=1,(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});function t(n){return Object.getOwnPropertySymbols(n).filter(a=>Object.prototype.propertyIsEnumerable.call(n,a))}e.getSymbols=t})(JS)),JS}var eA={},l4;function qj(){return l4||(l4=1,(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});
910function t(n){return n==null?n===void 0?"[object Undefined]":"[object Null]":Object.prototype.toString.call(n)}e.getTag=t})(eA)),eA}var tA={},c4;function BG(){return c4||(c4=1,(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t="[object RegExp]",n="[object String]",a="[object Number]",s="[object Boolean]",r="[object Arguments]",i="[object Symbol]",c="[object Date]",d="[object Map]",m="[object Set]",f="[object Array]",p="[object Function]",y="[object ArrayBuffer]",v="[object Object]",$="[object Error]",x="[object DataView]",w="[object Uint8Array]",S="[object Uint8ClampedArray]",k="[object Uint16Array]",T="[object Uint32Array]",R="[object BigUint64Array]",_="[object Int8Array]",P="[object Int16Array]",j="[object Int32Array]",N="[object BigInt64Array]",I="[object Float32Array]",z="[object Float64Array]";e.argumentsTag=r,e.arrayBufferTag=y,e.arrayTag=f,e.bigInt64ArrayTag=N,e.bigUint64ArrayTag=R,e.booleanTag=s,e.dataViewTag=x,e.dateTag=c,e.errorTag=$,e.float32ArrayTag=I,e.float64ArrayTag=z,e.functionTag=p,e.int16ArrayTag=P,e.int32ArrayTag=j,e.int8ArrayTag=_,e.mapTag=d,e.numberTag=a,e.objectTag=v,e.regexpTag=t,e.setTag=m,e.stringTag=n,e.symbolTag=i,e.uint16ArrayTag=k,e.uint32ArrayTag=T,e.uint8ArrayTag=w,e.uint8ClampedArrayTag=S})(tA)),tA}var nA={},aA={},d4;function Jbs(){return d4||(d4=1,(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=typeof globalThis=="object"&&globalThis||typeof window=="object"&&window||typeof self=="object"&&self||typeof xI=="object"&&xI||(function(){return this})()||Function("return this")();e.globalThis=t})(aA)),aA}var u4;function exs(){return u4||(u4=1,(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=Jbs();function n(a){return typeof t.globalThis.Buffer<"u"&&t.globalThis.Buffer.isBuffer(a)}e.isBuffer=n})(nA)),nA}var oA={},m4;function txs(){return m4||(m4=1,(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});function t(n){return ArrayBuffer.isView(n)&&!(n instanceof DataView)}e.isTypedArray=t})(oA)),oA}var p4;function FG(){return p4||(p4=1,(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=Zbs(),n=qj(),a=BG(),s=exs(),r=OG(),i=txs();function c(p,y){return d(p,void 0,p,new Map,y)}function d(p,y,v,$=new Map,x=void 0){const w=x?.(p,y,v,$);if(w!==void 0)return w;if(r.isPrimitive(p))return p;if($.has(p))return $.get(p);if(Array.isArray(p)){const S=new Array(p.length);$.set(p,S);for(let k=0;k<p.length;k++)S[k]=d(p[k],k,v,$,x);return Object.hasOwn(p,"index")&&(S.index=p.index),Object.hasOwn(p,"input")&&(S.input=p.input),S}if(p instanceof Date)return new Date(p.getTime());if(p instanceof RegExp){const S=new RegExp(p.source,p.flags);return S.lastIndex=p.lastIndex,S}if(p instanceof Map){const S=new Map;$.set(p,S);for(const[k,T]of p)S.set(k,d(T,k,v,$,x));return S}if(p instanceof Set){const S=new Set;$.set(p,S);for(const k of p)S.add(d(k,void 0,v,$,x));return S}if(s.isBuffer(p))return p.subarray();if(i.isTypedArray(p)){const S=new(Object.getPrototypeOf(p)).constructor(p.length);$.set(p,S);for(let k=0;k<p.length;k++)S[k]=d(p[k],k,v,$,x);return S}if(p instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&p instanceof SharedArrayBuffer)return p.slice(0);if(p instanceof DataView){const S=new DataView(p.buffer.slice(0),p.byteOffset,p.byteLength);return $.set(p,S),m(S,p,v,$,x),S}if(typeof File<"u"&&p instanceof File){const S=new File([p],p.name,{type:p.type});return $.set(p,S),m(S,p,v,$,x),S}if(typeof Blob<"u"&&p instanceof Blob){const S=new Blob([p],{type:p.type});return $.set(p,S),m(S,p,v,$,x),S}if(p instanceof Error){const S=structuredClone(p);return $.set(p,S),S.message=p.message,S.name=p.name,S.stack=p.stack,S.cause=p.cause,S.constructor=p.constructor,m(S,p,v,$,x),S}if(p instanceof Boolean){const S=new Boolean(p.valueOf());return $.set(p,S),m(S,p,v,$,x),S}if(p instanceof Number){const S=new Number(p.valueOf());return $.set(p,S),m(S,p,v,$,x),S}if(p instanceof String){const S=new String(p.valueOf());return $.set(p,S),m(S,p,v,$,x),S}if(typeof p=="object"&&f(p)){const S=Object.create(Object.getPrototypeOf(p)
910);return $.set(p,S),m(S,p,v,$,x),S}return p}function m(p,y,v=p,$,x){const w=[...Object.keys(y),...t.getSymbols(y)];for(let S=0;S<w.length;S++){const k=w[S],T=Object.getOwnPropertyDescriptor(p,k);(T==null||T.writable)&&(p[k]=d(y[k],k,v,$,x))}}function f(p){switch(n.getTag(p)){case a.argumentsTag:case a.arrayTag:case a.arrayBufferTag:case a.dataViewTag:case a.booleanTag:case a.dateTag:case a.float32ArrayTag:case a.float64ArrayTag:case a.int8ArrayTag:case a.int16ArrayTag:case a.int32ArrayTag:case a.mapTag:case a.numberTag:case a.objectTag:case a.regexpTag:case a.setTag:case a.stringTag:case a.symbolTag:case a.uint8ArrayTag:case a.uint8ClampedArrayTag:case a.uint16ArrayTag:case a.uint32ArrayTag:return!0;default:return!1}}e.cloneDeepWith=c,e.cloneDeepWithImpl=d,e.copyProperties=m})(ZS)),ZS}var f4;function nxs(){return f4||(f4=1,(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=FG();function n(a){return t.cloneDeepWithImpl(a,void 0,a,new Map,void 0)}e.cloneDeep=n})(XS)),XS}var g4;function axs(){return g4||(g4=1,(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=UG(),n=nxs();function a(s){return s=n.cloneDeep(s),r=>t.isMatch(r,s)}e.matches=a})(VS)),VS}var sA={},rA={},iA={},h4;function oxs(){return h4||(h4=1,(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=FG(),n=qj(),a=BG();function s(r,i){return t.cloneDeepWith(r,(c,d,m,f)=>{const p=i?.(c,d,m,f);if(p!==void 0)return p;if(typeof r=="object"){if(n.getTag(r)===a.objectTag&&typeof r.constructor!="function"){const y={};return f.set(r,y),t.copyProperties(y,r,m,f),y}switch(Object.prototype.toString.call(r)){case a.numberTag:case a.stringTag:case a.booleanTag:{const y=new r.constructor(r?.valueOf());return t.copyProperties(y,r),y}case a.argumentsTag:{const y={};return t.copyProperties(y,r),y.length=r.length,y[Symbol.iterator]=r[Symbol.iterator],y}default:return}}})}e.cloneDeepWith=s})(iA)),iA}var y4;function sxs(){return y4||(y4=1,(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=oxs();function n(a){return t.cloneDeepWith(a)}e.cloneDeep=n})(rA)),rA}var lA={},cA={},v4;function zG(){return v4||(v4=1,(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=/^(?:0|[1-9]\d*)$/;function n(a,s=Number.MAX_SAFE_INTEGER){switch(typeof a){case"number":return Number.isInteger(a)&&a>=0&&a<s;case"symbol":return!1;case"string":return t.test(a)}}e.isIndex=n})(cA)),cA}var dA={},b4;function rxs(){return b4||(b4=1,(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=qj();function n(a){return a!==null&&typeof a=="object"&&t.getTag(a)==="[object Arguments]"}e.isArguments=n})(dA)),dA}var x4;function ixs(){return x4||(x4=1,(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=RG(),n=zG(),a=rxs(),s=Uj();function r(i,c){let d;if(Array.isArray(c)?d=c:typeof c=="string"&&t.isDeepKey(c)&&i?.[c]==null?d=s.toPath(c):d=[c],d.length===0)return!1;let m=i;for(let f=0;f<d.length;f++){const p=d[f];if((m==null||!Object.hasOwn(m,p))&&!((Array.isArray(m)||a.isArguments(m))&&n.isIndex(p)&&p<m.length))return!1;m=m[p]}return!0}e.has=r})(lA)),lA}var $4;function lxs(){return $4||($4=1,(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=UG(),n=Lj(),a=sxs(),s=Bj(),r=ixs();function i(c,d){switch(typeof c){case"object":{Object.is(c?.valueOf(),-0)&&(c="-0");break}case"number":{c=n.toKey(c);break}}return d=a.cloneDeep(d),function(m){const f=s.get(m,c);return f===void 0?r.has(m,c):d===void 0?f===void 0:t.isMatch(f,d)}}e.matchesProperty=i})(sA)),sA}var w4;function cxs(){return w4||(w4=1,(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=MG(),n=Qbs(),a=axs(),s=lxs();function r(i){if(i==null)return t.identity;switch(typeof i){case"function":return i;case"object":return Array.isArray(i)&&i.length===2?s.matchesProperty(i[0],i[1]):a.matches(i);case"string":case"symbol":case"number":return n.property(i)}}e.iteratee=r})(qS)),qS}var k4;function dxs(){return k4||(k4=1,(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=Vbs(),n=Kbs(),a=MG(),s=Ybs(),r=cxs();function i(c,d=a.identity){return s.isArrayLikeObject(c)?t.uniqBy(Array.from(c),n.ary(r.iteratee(d),1)):[]}e.uniqBy=i})(ES)),ES}var uA,C4;function uxs(){return C4||(C4=1,uA=dxs().uniqBy),uA}var mxs=uxs();const S4=il(mxs);function qG(e,t,n){return t===!0?S4(e,n):typeof t=="function"?S4(e,t):e}var mA={exports:{}},pA={};/**
911 * @license React
912 * use-sync-external-store-shim/with-selector.production.js
913 *
914 * Copyright (c) Meta Platforms, Inc. and affiliates.
915 *
916 * This source code is licensed under the MIT license found in the
917 * LICENSE file in the root directory of this source tree.
918 */var A4;function pxs(){if(A4)return pA;A4=1;var e=jp(),t=dV();function n(m,f){return m===f&&(m!==0||1/m===1/f)||m!==m&&f!==f}var a=typeof Object.is=="function"?Object.is:n,s=t.useSyncExternalStore,r=e.useRef,i=e.useEffect,c=e.useMemo,d=e.useDebugValue;return pA.useSyncExternalStoreWithSelector=function(m,f,p,y,v){var $=r(null);if($.current===null){var x={hasValue:!1,value:null};$.current=x}else x=$.current;$=c(function(){function S(P){if(!k){if(k=!0,T=P,P=y(P),v!==void 0&&x.hasValue){var j=x.value;if(v(j,P))return R=j}return R=P}if(j=R,a(T,P))return j;var N=y(P);return v!==void 0&&v(j,N)?(T=P,j):(T=P,R=N)}var k=!1,T,R,_=p===void 0?null:p;return[function(){return S(f())},_===null?void 0:function(){return S(_())}]},[f,p,y,v]);var w=s(m,$[0],$[1]);return i(function(){x.hasValue=!0,x.value=w},[w]),d(w),w},pA}var T4;function fxs(){return T4||(T4=1,mA.exports=pxs()),mA.exports}var gxs=fxs(),Hj=h.createContext(null),hxs=e=>e,gn=()=>{var e=h.useContext(Hj);return e?e.store.dispatch:hxs},mx=()=>{},yxs=()=>mx,vxs=(e,t)=>e===t;function Ge(e){var t=h.useContext(Hj),n=h.useMemo(()=>t?a=>{if(a!=null)return e(a)}:mx,[t,e]);return gxs.useSyncExternalStoreWithSelector(t?t.subscription.addNestedSub:yxs,t?t.store.getState:mx,t?t.store.getState:mx,n,vxs)}function bxs(e,t=`expected a function, instead received ${typeof e}`){if(typeof e!="function")throw new TypeError(t)}function xxs(e,t=`expected an object, instead received ${typeof e}`){if(typeof e!="object")throw new TypeError(t)}function $xs(e,t="expected all items to be functions, instead received the following types: "){if(!e.every(n=>typeof n=="function")){const n=e.map(a=>typeof a=="function"?`function ${a.name||"unnamed"}()`:typeof a).join(", ");throw new TypeError(`${t}[${n}]`)}}var R4=e=>Array.isArray(e)?e:[e];function wxs(e){const t=Array.isArray(e[0])?e[0]:e;return $xs(t,"createSelector expects all input-selectors to be functions, but received the following types: "),t}function kxs(e,t){const n=[],{length:a}=e;for(let s=0;s<a;s++)n.push(e[s].apply(null,t));return n}var Cxs=class{constructor(e){this.value=e}deref(){return this.value}},Sxs=typeof WeakRef<"u"?WeakRef:Cxs,Axs=0,P4=1;function wb(){return{s:Axs,v:void 0,o:null,p:null}}function HG(e,t={}){let n=wb();const{resultEqualityCheck:a}=t;let s,r=0;function i(){let c=n;const{length:d}=arguments;for(let p=0,y=d;p<y;p++){const v=arguments[p];if(typeof v=="function"||typeof v=="object"&&v!==null){let $=c.o;$===null&&(c.o=$=new WeakMap);const x=$.get(v);x===void 0?(c=wb(),$.set(v,c)):c=x}else{let $=c.p;$===null&&(c.p=$=new Map);const x=$.get(v);x===void 0?(c=wb(),$.set(v,c)):c=x}}const m=c;let f;if(c.s===P4)f=c.v;else if(f=e.apply(null,arguments),r++,a){const p=s?.deref?.()??s;p!=null&&a(p,f)&&(f=p,r!==0&&r--),s=typeof f=="object"&&f!==null||typeof f=="function"?new Sxs(f):f}return m.s=P4,m.v=f,f}return i.clearCache=()=>{n=wb(),i.resetResultsCount()},i.resultsCount=()=>r,i.resetResultsCount=()=>{r=0},i}function Txs(e,...t){const n=typeof e=="function"?{memoize:e,memoizeOptions:t}:e,a=(...s)=>{let r=0,i=0,c,d={},m=s.pop();typeof m=="object"&&(d=m,m=s.pop()),bxs(m,`createSelector expects an output function after the inputs, but received: [${typeof m}]`);const f={...n,...d},{memoize:p,memoizeOptions:y=[],argsMemoize:v=HG,argsMemoizeOptions:$=[]}=f,x=R4(y),w=R4($),S=wxs(s),k=p(function(){return r++,m.apply(null,arguments)},...x),T=v(function(){i++;const _=kxs(S,arguments);return c=k.apply(null,_),c},...w);return Object.assign(T,{resultFunc:m,memoizedResultFunc:k,dependencies:S,dependencyRecomputations:()=>i,resetDependencyRecomputations:()=>{i=0},lastResult:()=>c,recomputations:()=>r,resetRecomputations:()=>{r=0},memoize:p,argsMemoize:v})};return Object.assign(a,{withTypes:()=>a}),a}var ce=Txs(HG),Rxs=Object.assign((e,t=ce)=>{xxs(e,`createStructuredSelector expects first argument to be an object where each property is a selector, instead received a ${typeof e}`);const n=Object.keys(e),a=n.map(r=>e[r]);return t(a,(...r)=>r.reduce((i,c,d)=>(i[n[d]]=c,i),{}))},{withTypes:()=>Rxs}),fA={},gA={},hA={},_4;function Pxs(){return _4||(_4=1,(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});function t(a){return typeof a=="symbol"?1:a===null?2:a===void 0?3:a!==a?4:0}const n=(a,s,r)=>{if(a!==s){const i=t(a),c=t(s);if(i===c&&i===0){if(a<s)return r==="desc"?1:-1;if(a>s)return r==="desc"?-1:1}return r==="desc"?c-i:i-c}return 0};e.compareValues=n})(hA)),hA}var yA={},vA={},j4;function VG(){return j4||(j4=1,(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});function t(n){return typeof n=="symbol"||n instanceof Symbol}
918e.isSymbol=t})(vA)),vA}var N4;function _xs(){return N4||(N4=1,(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=VG(),n=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,a=/^\w*$/;function s(r,i){return Array.isArray(r)?!1:typeof r=="number"||typeof r=="boolean"||r==null||t.isSymbol(r)?!0:typeof r=="string"&&(a.test(r)||!n.test(r))||i!=null&&Object.hasOwn(i,r)}e.isKey=s})(yA)),yA}var D4;function jxs(){return D4||(D4=1,(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=Pxs(),n=_xs(),a=Uj();function s(r,i,c,d){if(r==null)return[];c=d?void 0:c,Array.isArray(r)||(r=Object.values(r)),Array.isArray(i)||(i=i==null?[null]:[i]),i.length===0&&(i=[null]),Array.isArray(c)||(c=c==null?[]:[c]),c=c.map(v=>String(v));const m=(v,$)=>{let x=v;for(let w=0;w<$.length&&x!=null;++w)x=x[$[w]];return x},f=(v,$)=>$==null||v==null?$:typeof v=="object"&&"key"in v?Object.hasOwn($,v.key)?$[v.key]:m($,v.path):typeof v=="function"?v($):Array.isArray(v)?m($,v):typeof $=="object"?$[v]:$,p=i.map(v=>(Array.isArray(v)&&v.length===1&&(v=v[0]),v==null||typeof v=="function"||Array.isArray(v)||n.isKey(v)?v:{key:v,path:a.toPath(v)}));return r.map(v=>({original:v,criteria:p.map($=>f($,v))})).slice().sort((v,$)=>{for(let x=0;x<p.length;x++){const w=t.compareValues(v.criteria[x],$.criteria[x],c[x]);if(w!==0)return w}return 0}).map(v=>v.original)}e.orderBy=s})(gA)),gA}var bA={},M4;function Nxs(){return M4||(M4=1,(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});function t(n,a=1){const s=[],r=Math.floor(a),i=(c,d)=>{for(let m=0;m<c.length;m++){const f=c[m];Array.isArray(f)&&d<r?i(f,d+1):s.push(f)}};return i(n,0),s}e.flatten=t})(bA)),bA}var xA={},E4;function KG(){return E4||(E4=1,(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=zG(),n=EG(),a=IG(),s=LG();function r(i,c,d){return a.isObject(d)&&(typeof c=="number"&&n.isArrayLike(d)&&t.isIndex(c)&&c<d.length||typeof c=="string"&&c in d)?s.isEqualsSameValueZero(d[c],i):!1}e.isIterateeCall=r})(xA)),xA}var I4;function Dxs(){return I4||(I4=1,(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=jxs(),n=Nxs(),a=KG();function s(r,...i){const c=i.length;return c>1&&a.isIterateeCall(r,i[0],i[1])?i=[]:c>2&&a.isIterateeCall(i[0],i[1],i[2])&&(i=[i[0]]),t.orderBy(r,n.flatten(i),["asc"])}e.sortBy=s})(fA)),fA}var $A,O4;function Mxs(){return O4||(O4=1,$A=Dxs().sortBy),$A}var Exs=Mxs();const e0=il(Exs);var GG=e=>e.legend.settings,Ixs=e=>e.legend.size,Oxs=e=>e.legend.payload,Lxs=ce([Oxs,GG],(e,t)=>{var{itemSorter:n}=t,a=e.flat(1);return n?e0(a,n):a});function Uxs(){return Ge(Lxs)}var kb=1;function WG(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],[t,n]=h.useState({height:0,left:0,top:0,width:0}),a=h.useCallback(s=>{if(s!=null){var r=s.getBoundingClientRect(),i={height:r.height,left:r.left,top:r.top,width:r.width};(Math.abs(i.height-t.height)>kb||Math.abs(i.left-t.left)>kb||Math.abs(i.top-t.top)>kb||Math.abs(i.width-t.width)>kb)&&n({height:i.height,left:i.left,top:i.top,width:i.width})}},[t.width,t.height,t.top,t.left,...e]);return[t,a]}function ka(e){return`Minified Redux error #${e}; visit https://redux.js.org/Errors?code=${e} for the full message or use the non-minified dev environment for full errors. `}var Bxs=typeof Symbol=="function"&&Symbol.observable||"@@observable",L4=Bxs,wA=()=>Math.random().toString(36).substring(7).split("").join("."),Fxs={INIT:`@@redux/INIT${wA()}`,REPLACE:`@@redux/REPLACE${wA()}`,PROBE_UNKNOWN_ACTION:()=>`@@redux/PROBE_UNKNOWN_ACTION${wA()}`},Jx=Fxs;function Vj(e){if(typeof e!="object"||e===null)return!1;let t=e;for(;Object.getPrototypeOf(t)!==null;)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t||Object.getPrototypeOf(e)===null}function YG(e,t,n){if(typeof e!="function")throw new Error(ka(2));if(typeof t=="function"&&typeof n=="function"||typeof n=="function"&&typeof arguments[3]=="function")throw new Error(ka(0));if(typeof t=="function"&&typeof n>"u"&&(n=t,t=void 0),typeof n<"u"){if(typeof n!="function")throw new Error(ka(1));return n(YG)(e,t)}let a=e,s=t,r=new Map,i=r,c=0,d=!1;function m(){i===r&&(i=new Map,r.forEach((w,S)=>{i.set(S,w)}))}function f(){if(d)throw new Error(ka(3));return s}function p(w){if(typeof w!="function")throw new Error(ka(4));if(d)throw new Error(ka(5));let S=!0;m();const k=c++;return i.set(k,w),function(){if(S){if(d)throw new Error(ka(6));S=!1,m(),i.delete(k),r=null}}}function y(w){if(!Vj(w))throw new Error(ka(7));if(typeof w.type>"u")throw new Error(ka(8));if(typeof w.type!="string")throw new Error(ka(17));if(d)throw new Error(ka(9));try{d=!0,s=a(s,w)}finally{d=!1}
vendor: 4,380 bytes, line 918
918return(r=i).forEach(k=>{k()}),w}function v(w){if(typeof w!="function")throw new Error(ka(10));a=w,y({type:Jx.REPLACE})}function $(){const w=p;return{subscribe(S){if(typeof S!="object"||S===null)throw new Error(ka(11));function k(){const R=S;R.next&&R.next(f())}return k(),{unsubscribe:w(k)}},[L4](){return this}}}return y({type:Jx.INIT}),{dispatch:y,subscribe:p,getState:f,replaceReducer:v,[L4]:$}}function zxs(e){Object.keys(e).forEach(t=>{const n=e[t];if(typeof n(void 0,{type:Jx.INIT})>"u")throw new Error(ka(12));if(typeof n(void 0,{type:Jx.PROBE_UNKNOWN_ACTION()})>"u")throw new Error(ka(13))})}function QG(e){const t=Object.keys(e),n={};for(let r=0;r<t.length;r++){const i=t[r];typeof e[i]=="function"&&(n[i]=e[i])}const a=Object.keys(n);let s;try{zxs(n)}catch(r){s=r}return function(i={},c){if(s)throw s;let d=!1;const m={};for(let f=0;f<a.length;f++){const p=a[f],y=n[p],v=i[p],$=y(v,c);if(typeof $>"u")throw c&&c.type,new Error(ka(14));m[p]=$,d=d||$!==v}return d=d||a.length!==Object.keys(i).length,d?m:i}}function e$(...e){return e.length===0?t=>t:e.length===1?e[0]:e.reduce((t,n)=>(...a)=>t(n(...a)))}function qxs(...e){return t=>(n,a)=>{const s=t(n,a);let r=()=>{throw new Error(ka(15))};const i={getState:s.getState,dispatch:(d,...m)=>r(d,...m)},c=e.map(d=>d(i));return r=e$(...c)(s.dispatch),{...s,dispatch:r}}}function XG(e){return Vj(e)&&"type"in e&&typeof e.type=="string"}var ZG=Symbol.for("immer-nothing"),U4=Symbol.for("immer-draftable"),ao=Symbol.for("immer-state");function sr(e,...t){throw new Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var Zo=Object,bp=Zo.getPrototypeOf,t$="constructor",t0="prototype",WR="configurable",n$="enumerable",px="writable",yh="value",nl=e=>!!e&&!!e[ao];function vr(e){return e?JG(e)||a0(e)||!!e[U4]||!!e[t$]?.[U4]||o0(e)||s0(e):!1}var Hxs=Zo[t0][t$].toString(),B4=new WeakMap;function JG(e){if(!e||!Kj(e))return!1;const t=bp(e);if(t===null||t===Zo[t0])return!0;const n=Zo.hasOwnProperty.call(t,t$)&&t[t$];if(n===Object)return!0;if(!Mm(n))return!1;let a=B4.get(n);return a===void 0&&(a=Function.toString.call(n),B4.set(n,a)),a===Hxs}function n0(e,t,n=!0){yy(e)===0?(n?Reflect.ownKeys(e):Zo.keys(e)).forEach(s=>{t(s,e[s],e)}):e.forEach((a,s)=>t(s,a,e))}function yy(e){const t=e[ao];return t?t.type_:a0(e)?1:o0(e)?2:s0(e)?3:0}var F4=(e,t,n=yy(e))=>n===2?e.has(t):Zo[t0].hasOwnProperty.call(e,t),YR=(e,t,n=yy(e))=>n===2?e.get(t):e[t],a$=(e,t,n,a=yy(e))=>{a===2?e.set(t,n):a===3?e.add(n):e[t]=n};function Vxs(e,t){return e===t?e!==0||1/e===1/t:e!==e&&t!==t}var a0=Array.isArray,o0=e=>e instanceof Map,s0=e=>e instanceof Set,Kj=e=>typeof e=="object",Mm=e=>typeof e=="function",kA=e=>typeof e=="boolean";function Kxs(e){const t=+e;return Number.isInteger(t)&&String(t)===e}var Ui=e=>e.copy_||e.base_,Gj=e=>e.modified_?e.copy_:e.base_;function QR(e,t){if(o0(e))return new Map(e);if(s0(e))return new Set(e);if(a0(e))return Array[t0].slice.call(e);const n=JG(e);if(t===!0||t==="class_only"&&!n){const a=Zo.getOwnPropertyDescriptors(e);delete a[ao];let s=Reflect.ownKeys(a);for(let r=0;r<s.length;r++){const i=s[r],c=a[i];c[px]===!1&&(c[px]=!0,c[WR]=!0),(c.get||c.set)&&(a[i]={[WR]:!0,[px]:!0,[n$]:c[n$],[yh]:e[i]})}return Zo.create(bp(e),a)}else{const a=bp(e);if(a!==null&&n)return{...e};const s=Zo.create(a);return Zo.assign(s,e)}}function Wj(e,t=!1){return r0(e)||nl(e)||!vr(e)||(yy(e)>1&&Zo.defineProperties(e,{set:Cb,add:Cb,clear:Cb,delete:Cb}),Zo.freeze(e),t&&n0(e,(n,a)=>{Wj(a,!0)},!1)),e}function Gxs(){sr(2)}var Cb={[yh]:Gxs};function r0(e){return e===null||!Kj(e)?!0:Zo.isFrozen(e)}var o$="MapSet",XR="Patches",z4="ArrayMethods",eW={};function nu(e){const t=eW[e];return t||sr(0,e),t}var q4=e=>!!eW[e],vh,tW=()=>vh,Wxs=(e,t)=>({drafts_:[],parent_:e,immer_:t,canAutoFreeze_:!0,unfinalizedDrafts_:0,handledSet_:new Set,processedForPatches_:new Set,mapSetPlugin_:q4(o$)?nu(o$):void 0,arrayMethodsPlugin_:q4(z4)?nu(z4):void 0});function H4(e,t){t&&(e.patchPlugin_=nu(XR),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function ZR(e){JR(e),e.drafts_.forEach(Yxs),e.drafts_=null}function JR(e){e===vh&&(vh=e.parent_)}var V4=e=>vh=Wxs(vh,e);function Yxs(e){const t=e[ao];t.type_===0||t.type_===1?t.revoke_():t.revoked_=!0}function K4(e,t){t.unfinalizedDrafts_=t.drafts_.length;const n=t.drafts_[0];if(e!==void 0&&e!==n){n[ao].modified_&&(ZR(t),sr(4)),vr(e)&&(e=G4(t,e));const{patchPlugin_:s}
918=t;s&&s.generateReplacementPatches_(n[ao].base_,e,t)}else e=G4(t,n);return Qxs(t,e,!0),ZR(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e!==ZG?e:void 0}function G4(e,t){if(r0(t))return t;const n=t[ao];if(!n)return s$(t,e.handledSet_,e);if(!i0(n,e))return t;if(!n.modified_)return n.base_;if(!n.finalized_){const{callbacks_:a}=n;if(a)for(;a.length>0;)a.pop()(e);oW(n,e)}return n.copy_}function Qxs(e,t,n=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&Wj(t,n)}function nW(e){e.finalized_=!0,e.scope_.unfinalizedDrafts_--}var i0=(e,t)=>e.scope_===t,Xxs=[];function aW(e,t,n,a){const s=Ui(e),r=e.type_;if(a!==void 0&&YR(s,a,r)===t){a$(s,a,n,r);return}if(!e.draftLocations_){const c=e.draftLocations_=new Map;n0(s,(d,m)=>{if(nl(m)){const f=c.get(m)||[];f.push(d),c.set(m,f)}})}const i=e.draftLocations_.get(t)??Xxs;for(const c of i)a$(s,c,n,r)}function Zxs(e,t,n){e.callbacks_.push(function(s){const r=t;if(!r||!i0(r,s))return;s.mapSetPlugin_?.fixSetContents(r);const i=Gj(r);aW(e,r.draft_??r,i,n),oW(r,s)})}function oW(e,t){if(e.modified_&&!e.finalized_&&(e.type_===3||e.type_===1&&e.allIndicesReassigned_||(e.assigned_?.size??0)>0)){const{patchPlugin_:a}=t;if(a){const s=a.getPath(e);s&&a.generatePatches_(e,s,t)}nW(e)}}function Jxs(e,t,n){const{scope_:a}=e;if(nl(n)){const s=n[ao];i0(s,a)&&s.callbacks_.push(function(){fx(e);const i=Gj(s);aW(e,n,i,t)})}else vr(n)&&e.callbacks_.push(function(){const r=Ui(e);e.type_===3?r.has(n)&&s$(n,a.handledSet_,a):YR(r,t,e.type_)===n&&a.drafts_.length>1&&(e.assigned_.get(t)??!1)===!0&&e.copy_&&s$(YR(e.copy_,t,e.type_),a.handledSet_,a)})}function s$(e,t,n){return!n.immer_.autoFreeze_&&n.unfinalizedDrafts_<1||nl(e)||t.has(e)||!vr(e)||r0(e)||(t.add(e),n0(e,(a,s)=>{if(nl(s)){const r=s[ao];if(i0(r,n)){const i=Gj(r);a$(e,a,i,e.type_),nW(r)}}else vr(s)&&s$(s,t,n)})),e}function e$s(e,t){const n=a0(e),a={type_:n?1:0,scope_:t?t.scope_:tW(),modified_:!1,finalized_:!1,assigned_:void 0,parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1,callbacks_:void 0};let s=a,r=r$;n&&(s=[a],r=bh);const{revoke:i,proxy:c}=Proxy.revocable(s,r);return a.draft_=c,a.revoke_=i,[c,a]}var r$={get(e,t){if(t===ao)return e;let n=e.scope_.arrayMethodsPlugin_;const a=e.type_===1&&typeof t=="string";if(a&&n?.isArrayOperationMethod(t))return n.createMethodInterceptor(e,t);const s=Ui(e);if(!F4(s,t,e.type_))return t$s(e,s,t);const r=s[t];if(e.finalized_||!vr(r)||a&&e.operationMethod&&n?.isMutatingArrayMethod(e.operationMethod)&&Kxs(t))return r;if(r===CA(e.base_,t)){fx(e);const i=e.type_===1?+t:t,c=tP(e.scope_,r,e,i);return e.copy_[i]=c}return r},has(e,t){return t in Ui(e)},ownKeys(e){return Reflect.ownKeys(Ui(e))},set(e,t,n){const a=sW(Ui(e),t);if(a?.set)return a.set.call(e.draft_,n),!0;if(!e.modified_){const s=CA(Ui(e),t),r=s?.[ao];if(r&&r.base_===n)return e.copy_[t]=n,e.assigned_.set(t,!1),!0;if(Vxs(n,s)&&(n!==void 0||F4(e.base_,t,e.type_)))return!0;fx(e),eP(e)}return e.copy_[t]===n&&(n!==void 0||t in e.copy_)||Number.isNaN(n)&&Number.isNaN(e.copy_[t])||(e.copy_[t]=n,e.assigned_.set(t,!0),Jxs(e,t,n)),!0},deleteProperty(e,t){return fx(e),CA(e.base_,t)!==void 0||t in e.base_?(e.assigned_.set(t,!1),eP(e)):e.assigned_.delete(t),e.copy_&&delete e.copy_[t],!0},getOwnPropertyDescriptor(e,t){const n=Ui(e),a=Reflect.getOwnPropertyDescriptor(n,t);return a&&{[px]:!0,[WR]:e.type_!==1||t!=="length",[n$]:a[n$],[yh]:n[t]}},defineProperty(){sr(11)},getPrototypeOf(e){return bp(e.base_)},setPrototypeOf(){sr(12)}},bh={};for(let e in r$){let t=r$[e];bh[e]=function(){const n=arguments;return n[0]=n[0][0],t.apply(this,n)}}bh.deleteProperty=function(e,t){return bh.set.call(this,e,t,void 0)};bh.set=function(e,t,n){return r$.set.call(this,e[0],t,n,e[0])};function CA(e,t){const n=e[ao];return(n?Ui(n):e)[t]}function t$s(e,t,n){const a=sW(t,n);return a?yh in a?a[yh]:a.get?.call(e.draft_):void 0}function sW(e,t){if(!(t in e))return;let n=bp(e);for(;n;){const a=Object.getOwnPropertyDescriptor(n,t);if(a)return a;n=bp(n)}}function eP(e){e.modified_||(e.modified_=!0,e.parent_&&eP(e.parent_))}function fx(e){e.copy_||(e.assigned_=new Map,e.copy_=QR(e.base_,e.scope_.immer_.useStrictShallowCopy_))}var n$s=class{constructor(t){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!1,this.produce=(n,a,s)=>{if(Mm(n)&&!Mm(a)){const i=a;a=n;const c=this;return function(m=i,...f){return c.produce(m,p=>
vendor: 9,378 bytes, line 918
918a.call(this,p,...f))}}Mm(a)||sr(6),s!==void 0&&!Mm(s)&&sr(7);let r;if(vr(n)){const i=V4(this),c=tP(i,n,void 0);let d=!0;try{r=a(c),d=!1}finally{d?ZR(i):JR(i)}return H4(i,s),K4(r,i)}else if(!n||!Kj(n)){if(r=a(n),r===void 0&&(r=n),r===ZG&&(r=void 0),this.autoFreeze_&&Wj(r,!0),s){const i=[],c=[];nu(XR).generateReplacementPatches_(n,r,{patches_:i,inversePatches_:c}),s(i,c)}return r}else sr(1,n)},this.produceWithPatches=(n,a)=>{if(Mm(n))return(c,...d)=>this.produceWithPatches(c,m=>n(m,...d));let s,r;return[this.produce(n,a,(c,d)=>{s=c,r=d}),s,r]},kA(t?.autoFreeze)&&this.setAutoFreeze(t.autoFreeze),kA(t?.useStrictShallowCopy)&&this.setUseStrictShallowCopy(t.useStrictShallowCopy),kA(t?.useStrictIteration)&&this.setUseStrictIteration(t.useStrictIteration)}createDraft(t){vr(t)||sr(8),nl(t)&&(t=Rs(t));const n=V4(this),a=tP(n,t,void 0);return a[ao].isManual_=!0,JR(n),a}finishDraft(t,n){const a=t&&t[ao];(!a||!a.isManual_)&&sr(9);const{scope_:s}=a;return H4(s,n),K4(void 0,s)}setAutoFreeze(t){this.autoFreeze_=t}setUseStrictShallowCopy(t){this.useStrictShallowCopy_=t}setUseStrictIteration(t){this.useStrictIteration_=t}shouldUseStrictIteration(){return this.useStrictIteration_}applyPatches(t,n){let a;for(a=n.length-1;a>=0;a--){const r=n[a];if(r.path.length===0&&r.op==="replace"){t=r.value;break}}a>-1&&(n=n.slice(a+1));const s=nu(XR).applyPatches_;return nl(t)?s(t,n):this.produce(t,r=>s(r,n))}};function tP(e,t,n,a){const[s,r]=o0(t)?nu(o$).proxyMap_(t,n):s0(t)?nu(o$).proxySet_(t,n):e$s(t,n);return(n?.scope_??tW()).drafts_.push(s),r.callbacks_=n?.callbacks_??[],r.key_=a,n&&a!==void 0?Zxs(n,r,a):r.callbacks_.push(function(d){d.mapSetPlugin_?.fixSetContents(r);const{patchPlugin_:m}=d;r.modified_&&m&&m.generatePatches_(r,[],d)}),s}function Rs(e){return nl(e)||sr(10,e),rW(e)}function rW(e){if(!vr(e)||r0(e))return e;const t=e[ao];let n,a=!0;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,n=QR(e,t.scope_.immer_.useStrictShallowCopy_),a=t.scope_.immer_.shouldUseStrictIteration()}else n=QR(e,!0);return n0(n,(s,r)=>{a$(n,s,rW(r))},a),t&&(t.finalized_=!1),n}var a$s=new n$s,iW=a$s.produce;function lW(e){return({dispatch:n,getState:a})=>s=>r=>typeof r=="function"?r(n,a,e):s(r)}var o$s=lW(),s$s=lW,r$s=typeof window<"u"&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__:function(){if(arguments.length!==0)return typeof arguments[0]=="object"?e$:e$.apply(null,arguments)};function rs(e,t){function n(...a){if(t){let s=t(...a);if(!s)throw new Error(es(0));return{type:e,payload:s.payload,..."meta"in s&&{meta:s.meta},..."error"in s&&{error:s.error}}}return{type:e,payload:a[0]}}return n.toString=()=>`${e}`,n.type=e,n.match=a=>XG(a)&&a.type===e,n}var cW=class _g extends Array{constructor(...t){super(...t),Object.setPrototypeOf(this,_g.prototype)}static get[Symbol.species](){return _g}concat(...t){return super.concat.apply(this,t)}prepend(...t){return t.length===1&&Array.isArray(t[0])?new _g(...t[0].concat(this)):new _g(...t.concat(this))}};function W4(e){return vr(e)?iW(e,()=>{}):e}function Sb(e,t,n){return e.has(t)?e.get(t):e.set(t,n(t)).get(t)}function i$s(e){return typeof e=="boolean"}var l$s=()=>function(t){const{thunk:n=!0,immutableCheck:a=!0,serializableCheck:s=!0,actionCreatorCheck:r=!0}=t??{};let i=new cW;return n&&(i$s(n)?i.push(o$s):i.push(s$s(n.extraArgument))),i},dW="RTK_autoBatch",pn=()=>e=>({payload:e,meta:{[dW]:!0}}),Y4=e=>t=>{setTimeout(t,e)},c$s=(e,t)=>n=>{let a=!1;const s=()=>{a||(a=!0,cancelAnimationFrame(r),clearTimeout(i),n())},r=e(s),i=setTimeout(s,t)},uW=(e={type:"raf"})=>t=>(...n)=>{const a=t(...n);let s=!0,r=!1,i=!1;const c=new Set,d=e.type==="tick"?queueMicrotask:e.type==="raf"?typeof window<"u"&&window.requestAnimationFrame?c$s(window.requestAnimationFrame,100):Y4(10):e.type==="callback"?e.queueNotification:Y4(e.timeout),m=()=>{i=!1,r&&(r=!1,c.forEach(f=>f()))};return Object.assign({},a,{subscribe(f){const p=()=>s&&f(),y=a.subscribe(p);return c.add(f),()=>{y(),c.delete(f)}},dispatch(f){try{return s=!f?.meta?.[dW],r=!s,r&&(i||(i=!0,d(m))),a.dispatch(f)}finally{s=!0}}})},d$s=e=>function(n){const{autoBatch:a=!0}=n??{};let s=new cW(e);return a&&s.push(uW(typeof a=="object"?a:void 0)),s};function u$s(e){const t=l$s(),{reducer:n=void 0,middleware:a,devTools:s=!0,preloadedState:r=void 0,enhancers:i=void 0}=e||{};let c;if(typeof n=="function")c=n;else if(Vj(n))c=QG(n);else throw new Error(es(1));let d;typeof a=="function"?d=a(t):d=t();let m=e$;s&&(m=r$s({trace:!1,...typeof s=="object"&&s}));const f=qxs(...d),p=d$s(f);let y=typeof i=="function"?i(p):p();const v=m(...y);return YG(c,r,v)}function mW(e){const t={},n=[];let a;const s={addCase(r,i){const c=typeof r=="string"?r:r.type;if(!c)throw new Error(es(28));if(c in t)throw new Error(es(29));return t[c]=i,s},addAsyncThunk(r,i){return i.pending&&(t[r.pending.type]=i.pending),i.rejected&&(t[r.rejected.type]=i.rejected),i.fulfilled&&(t[r.fulfilled.type]=i.fulfilled),i.settled&&n.push({matcher:r.settled,reducer:i.settled}),s},addMatcher(r,i){return n.push({matcher:r,reducer:i}),s},addDefaultCase(r){return a=r,s}};return e(s),[t,n,a]}function m$s(e){return typeof e=="function"}function p$s(e,t){let[n,a,s]=mW(t),r;if(m$s(e))r=()=>W4(e());else{const c=W4(e);r=()=>c}function i(c=r(),d){let m=[n[d.type],...a.filter(({matcher:f})=>f(d)).map(({reducer:f})=>f)];return m.filter(f=>!!f).length===0&&(m=[s]),m.reduce((f,p)=>{if(p)if(nl(f)){const v=p(f,d);return v===void 0?f:v}else{if(vr(f))return iW(f,y=>p(y,d));{const y=p(f,d);if(y===void 0){if(f===null)return f;throw Error("A case reducer on a non-draftable value must not return undefined")}return y}}return f},c)}return i.getInitialState=r,i}var f$s="ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW",g$s=(e=21)=>{let t="",n=e;for(;n--;)t+=f$s[Math.random()*64|0];return t},h$s=Symbol.for("rtk-slice-createasyncthunk");function y$s(e,t){return`${e}/${t}`}function v$s({creators:e}={}){const t=e?.asyncThunk?.[h$s];return function(a){const{name:s,reducerPath:r=s}=a;if(!s)throw new Error(es(11));const i=(typeof a.reducers=="function"?a.reducers(x$s()):a.reducers)||{},c=Object.keys(i),d={sliceCaseReducersByName:{},sliceCaseReducersByType:{},actionCreators:{},sliceMatchers:[]},m={addCase(T,R){const _=typeof T=="string"?T:T.type;if(!_)throw new Error(es(12));if(_ in d.sliceCaseReducersByType)throw new Error(es(13));return d.sliceCaseReducersByType[_]=R,m},addMatcher(T,R){return d.sliceMatchers.push({matcher:T,reducer:R}),m},exposeAction(T,R){return d.actionCreators[T]=R,m},exposeCaseReducer(T,R){return d.sliceCaseReducersByName[T]=R,m}};c.forEach(T=>{const R=i[T],_={reducerName:T,type:y$s(s,T),createNotation:typeof a.reducers=="function"};w$s(R)?C$s(_,R,m,t):$$s(_,R,m)});function f(){const[T={},R=[],_=void 0]=typeof a.extraReducers=="function"?mW(a.extraReducers):[a.extraReducers],P={...T,...d.sliceCaseReducersByType};return p$s(a.initialState,j=>{for(let N in P)j.addCase(N,P[N]);for(let N of d.sliceMatchers)j.addMatcher(N.matcher,N.reducer);for(let N of R)j.addMatcher(N.matcher,N.reducer);_&&j.addDefaultCase(_)})}const p=T=>T,y=new Map,v=new WeakMap;let $;function x(T,R){return $||($=f()),$(T,R)}function w(){return $||($=f()),$.getInitialState()}function S(T,R=!1){function _(j){let N=j[T];return typeof N>"u"&&R&&(N=Sb(v,_,w)),N}function P(j=p){const N=Sb(y,R,()=>new WeakMap);return Sb(N,j,()=>{const I={};for(const[z,E]of Object.entries(a.selectors??{}))I[z]=b$s(E,j,()=>Sb(v,j,w),R);return I})}return{reducerPath:T,getSelectors:P,get selectors(){return P(_)},selectSlice:_}}const k={name:s,reducer:x,actions:d.actionCreators,caseReducers:d.sliceCaseReducersByName,getInitialState:w,...S(r),injectInto(T,{reducerPath:R,..._}={}){const P=R??r;return T.inject({reducerPath:P,reducer:x},_),{...k,...S(P,!0)}}};return k}}function b$s(e,t,n,a){function s(r,...i){let c=t(r);return typeof c>"u"&&a&&(c=n()),e(c,...i)}return s.unwrapped=e,s}var Ka=v$s();function x$s(){function e(t,n){return{_reducerDefinitionType:"asyncThunk",payloadCreator:t,...n}}return e.withTypes=()=>e,{reducer(t){return Object.assign({[t.name](...n){return t(...n)}}[t.name],{_reducerDefinitionType:"reducer"})},preparedReducer(t,n){return{_reducerDefinitionType:"reducerWithPrepare",prepare:t,reducer:n}},asyncThunk:e}}function $$s({type:e,reducerName:t,createNotation:n},a,s){let r,i;if("reducer"in a){if(n&&!k$s(a))throw new Error(es(17));r=a.reducer,i=a.prepare}else r=a;s.addCase(e,r).exposeCaseReducer(t,r).exposeAction(t,i?rs(e,i):rs(e))}function w$s(e){return e._reducerDefinitionType==="asyncThunk"}function k$s(e){return e._reducerDefinitionType==="reducerWithPrepare"}function C$s({type:e,reducerName:t},n,a,s){if(!s)throw new Error(es(18));const{payloadCreator:r,fulfilled:i,pending:c,rejected:d,settled:m,options:f}=n,p=s(e,r,f);a.exposeAction(t,p),i&&a.addCase(p.fulfilled,i),c&&a.addCase(p.pending,c),d&&a.addCase(p.rejected,d),m&&a.addMatcher(p.settled,m),a.exposeCaseReducer(t,{fulfilled:i||Ab,pending:c||Ab,rejected:d||Ab,settled:m||Ab})}function Ab(){}var S$s="task",pW="listener",fW="completed",Yj="cancelled",A$s=`task-${Yj}`,T$s=`task-${fW}`,nP=`${pW}-${Yj}`,R$s=`${pW}-${fW}`,l0=class{constructor(e){Bo(this,"code");Bo(this,"name","TaskAbortError");Bo(this,"message");this.code=e,this.message=`${S$s} ${Yj} (reason: ${e})`}},Qj=(e,t)=>{if(typeof e!="function")throw new TypeError(es(32))},i$=()=>{},gW=(e,t=i$)=>(e.catch(t),e),hW=(e,t)=>
918(e.addEventListener("abort",t,{once:!0}),()=>e.removeEventListener("abort",t)),Fd=e=>{if(e.aborted)throw new l0(e.reason)};function yW(e,t){let n=i$;return new Promise((a,s)=>{const r=()=>s(new l0(e.reason));if(e.aborted){r();return}n=hW(e,r),t.finally(()=>n()).then(a,s)}).finally(()=>{n=i$})}var P$s=async(e,t)=>{try{return await Promise.resolve(),{status:"ok",value:await e()}}catch(n){return{status:n instanceof l0?"cancelled":"rejected",error:n}}finally{t?.()}},l$=e=>t=>gW(yW(e,t).then(n=>(Fd(e),n))),vW=e=>{const t=l$(e);return n=>t(new Promise(a=>setTimeout(a,n)))},{assign:Km}=Object,Q4={},c0="listenerMiddleware",_$s=(e,t)=>{const n=a=>hW(e,()=>a.abort(e.reason));return(a,s)=>{Qj(a);const r=new AbortController;n(r);const i=P$s(async()=>{Fd(e),Fd(r.signal);const c=await a({pause:l$(r.signal),delay:vW(r.signal),signal:r.signal});return Fd(r.signal),c},()=>r.abort(T$s));return s?.autoJoin&&t.push(i.catch(i$)),{result:l$(e)(i),cancel(){r.abort(A$s)}}}},j$s=(e,t)=>{const n=async(a,s)=>{Fd(t);let r=()=>{};const c=[new Promise((d,m)=>{let f=e({predicate:a,effect:(p,y)=>{y.unsubscribe(),d([p,y.getState(),y.getOriginalState()])}});r=()=>{f(),m()}})];s!=null&&c.push(new Promise(d=>setTimeout(d,s,null)));try{const d=await yW(t,Promise.race(c));return Fd(t),d}finally{r()}};return((a,s)=>gW(n(a,s)))},bW=e=>{let{type:t,actionCreator:n,matcher:a,predicate:s,effect:r}=e;if(t)s=rs(t).match;else if(n)t=n.type,s=n.match;else if(a)s=a;else if(!s)throw new Error(es(21));return Qj(r),{predicate:s,type:t,effect:r}},xW=Km(e=>{const{type:t,predicate:n,effect:a}=bW(e);return{id:g$s(),effect:a,type:t,predicate:n,pending:new Set,unsubscribe:()=>{throw new Error(es(22))}}},{withTypes:()=>xW}),X4=(e,t)=>{const{type:n,effect:a,predicate:s}=bW(t);return Array.from(e.values()).find(r=>(typeof n=="string"?r.type===n:r.predicate===s)&&r.effect===a)},aP=e=>{e.pending.forEach(t=>{t.abort(nP)})},N$s=(e,t)=>()=>{for(const n of t.keys())aP(n);e.clear()},Z4=(e,t,n)=>{try{e(t,n)}catch(a){setTimeout(()=>{throw a},0)}},$W=Km(rs(`${c0}/add`),{withTypes:()=>$W}),D$s=rs(`${c0}/removeAll`),wW=Km(rs(`${c0}/remove`),{withTypes:()=>wW}),M$s=(...e)=>{console.error(`${c0}/error`,...e)},vy=(e={})=>{const t=new Map,n=new Map,a=v=>{const $=n.get(v)??0;n.set(v,$+1)},s=v=>{const $=n.get(v)??1;$===1?n.delete(v):n.set(v,$-1)},{extra:r,onError:i=M$s}=e;Qj(i);const c=v=>(v.unsubscribe=()=>t.delete(v.id),t.set(v.id,v),$=>{v.unsubscribe(),$?.cancelActive&&aP(v)}),d=(v=>{const $=X4(t,v)??xW(v);return c($)});Km(d,{withTypes:()=>d});const m=v=>{const $=X4(t,v);return $&&($.unsubscribe(),v.cancelActive&&aP($)),!!$};Km(m,{withTypes:()=>m});const f=async(v,$,x,w)=>{const S=new AbortController,k=j$s(d,S.signal),T=[];try{v.pending.add(S),a(v),await Promise.resolve(v.effect($,Km({},x,{getOriginalState:w,condition:(R,_)=>k(R,_).then(Boolean),take:k,delay:vW(S.signal),pause:l$(S.signal),extra:r,signal:S.signal,fork:_$s(S.signal,T),unsubscribe:v.unsubscribe,subscribe:()=>{t.set(v.id,v)},cancelActiveListeners:()=>{v.pending.forEach((R,_,P)=>{R!==S&&(R.abort(nP),P.delete(R))})},cancel:()=>{S.abort(nP),v.pending.delete(S)},throwIfCancelled:()=>{Fd(S.signal)}})))}catch(R){R instanceof l0||Z4(i,R,{raisedBy:"effect"})}finally{await Promise.all(T),S.abort(R$s),s(v),v.pending.delete(S)}}
918,p=N$s(t,n);return{middleware:v=>$=>x=>{if(!XG(x))return $(x);if($W.match(x))return d(x.payload);if(D$s.match(x)){p();return}if(wW.match(x))return m(x.payload);let w=v.getState();const S=()=>{if(w===Q4)throw new Error(es(23));return w};let k;try{if(k=$(x),t.size>0){const T=v.getState(),R=Array.from(t.values());for(const _ of R){let P=!1;try{P=_.predicate(x,T,w)}catch(j){P=!1,Z4(i,j,{raisedBy:"predicate"})}P&&f(_,x,v,S)}}}finally{w=Q4}return k},startListening:d,stopListening:m,clearListeners:p}};function es(e){return`Minified Redux Toolkit error #${e}; visit https://redux-toolkit.js.org/Errors?code=${e} for the full message or use the non-minified dev environment for full errors. `}var E$s={layoutType:"horizontal",width:0,height:0,margin:{top:5,right:5,bottom:5,left:5},scale:1},kW=Ka({name:"chartLayout",initialState:E$s,reducers:{setLayout(e,t){e.layoutType=t.payload},setChartSize(e,t){e.width=t.payload.width,e.height=t.payload.height},setMargin(e,t){var n,a,s,r;e.margin.top=(n=t.payload.top)!==null&&n!==void 0?n:0,e.margin.right=(a=t.payload.right)!==null&&a!==void 0?a:0,e.margin.bottom=(s=t.payload.bottom)!==null&&s!==void 0?s:0,e.margin.left=(r=t.payload.left)!==null&&r!==void 0?r:0},setScale(e,t){e.scale=t.payload}}}),{setMargin:I$s,setLayout:O$s,setChartSize:L$s,setScale:U$s}=kW.actions,B$s=kW.reducer;function CW(e,t,n){return Array.isArray(e)&&e&&t+n!==0?e.slice(t,n+1):e}function ht(e){return Number.isFinite(e)}function xp(e){return typeof e=="number"&&e>0&&Number.isFinite(e)}function J4(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,a)}return n}function Om(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?J4(Object(n),!0).forEach(function(a){F$s(e,a,n[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):J4(Object(n)).forEach(function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(n,a))})}return e}function F$s(e,t,n){return(t=z$s(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function z$s(e){var t=q$s(e,"string");return typeof t=="symbol"?t:t+""}function q$s(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var a=n.call(e,t);if(typeof a!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function jn(e,t,n){return $n(e)||$n(t)?n:si(t)?vp(e,t,n):typeof t=="function"?t(e):n}var H$s=(e,t,n)=>{if(t&&n){var{width:a,height:s}=n,{align:r,verticalAlign:i,layout:c}=t;if((c==="vertical"||c==="horizontal"&&i==="middle")&&r!=="center"&&Fe(e[r]))return Om(Om({},e),{},{[r]:e[r]+(a||0)});if((c==="horizontal"||c==="vertical"&&r==="center")&&i!=="middle"&&Fe(e[i]))return Om(Om({},e),{},{[i]:e[i]+(s||0)})}return e},pi=(e,t)=>e==="horizontal"&&t==="xAxis"||e==="vertical"&&t==="yAxis"||e==="centric"&&t==="angleAxis"||e==="radial"&&t==="radiusAxis",SW=(e,t,n,a)=>{if(a)return e.map(c=>c.coordinate);var s,r,i=e.map(c=>(c.coordinate===t&&(s=!0),c.coordinate===n&&(r=!0),c.coordinate));return s||i.push(t),r||i.push(n),i},AW=(e,t,n)=>{if(!e)return null;var{duplicateDomain:a,type:s,range:r,scale:i,realScaleType:c,isCategorical:d,categoricalDomain:m,tickCount:f,ticks:p,niceTicks:y,axisType:v}=e;if(!i)return null;var $=c==="scaleBand"&&i.bandwidth?i.bandwidth()/2:2,x=s==="category"&&i.bandwidth?i.bandwidth()/$:0;if(x=v==="angleAxis"&&r&&r.length>=2?Co(r[0]-r[1])*2*x:x,p||y){var w=(p||y||[]).map((S,k)=>{var T=a?a.indexOf(S):S,R=i.map(T);return ht(R)?{coordinate:R+x,value:S,offset:x,index:k}:null}).filter(So);return w}return d&&m?m.map((S,k)=>{var T=i.map(S);return ht(T)?{coordinate:T+x,value:S,index:k,offset:x}:null}).filter(So):i.ticks&&f!=null?i.ticks(f).map((S,k)=>{var T=i.map(S);return ht(T)?{coordinate:T+x,value:S,index:k,offset:x}:null}).filter(So):i.domain().map((S,k)=>{var T=i.map(S);return ht(T)?{coordinate:T+x,value:a?a[S]:S,index:k,offset:x}:null}).filter(So)},V$s=(e,t)=>
918{if(!t||t.length!==2||!Fe(t[0])||!Fe(t[1]))return e;var n=Math.min(t[0],t[1]),a=Math.max(t[0],t[1]),s=[e[0],e[1]];return(!Fe(e[0])||e[0]<n)&&(s[0]=n),(!Fe(e[1])||e[1]>a)&&(s[1]=a),s[0]>a&&(s[0]=a),s[1]<n&&(s[1]=n),s},K$s=e=>{var t,n=e.length;if(!(n<=0)){var a=(t=e[0])===null||t===void 0?void 0:t.length;if(!(a==null||a<=0))for(var s=0;s<a;++s)for(var r=0,i=0,c=0;c<n;++c){var d=e[c],m=d?.[s];if(m!=null){var f=m[1],p=m[0],y=hr(f)?p:f;y>=0?(m[0]=r,r+=y,m[1]=r):(m[0]=i,i+=y,m[1]=i)}}}},G$s=e=>{var t,n=e.length;if(!(n<=0)){var a=(t=e[0])===null||t===void 0?void 0:t.length;if(!(a==null||a<=0))for(var s=0;s<a;++s)for(var r=0,i=0;i<n;++i){var c=e[i],d=c?.[s];if(d!=null){var m=hr(d[1])?d[0]:d[1];m>=0?(d[0]=r,r+=m,d[1]=r):(d[0]=0,d[1]=0)}}}},W$s={sign:K$s,expand:pbs,none:tu,silhouette:fbs,wiggle:gbs,positive:G$s},Y$s=(e,t,n)=>{var a,s=(a=W$s[n])!==null&&a!==void 0?a:tu,r=mbs().keys(t).value((c,d)=>Number(jn(c,d,0))).order(VR).offset(s),i=r(e);return i.forEach((c,d)=>{c.forEach((m,f)=>{var p=jn(e[f],t[d],0);Array.isArray(p)&&p.length===2&&Fe(p[0])&&Fe(p[1])&&(m[0]=p[0],m[1]=p[1])})}),i};function TW(e){return e==null?void 0:String(e)}function e5(e){var{axis:t,ticks:n,bandSize:a,entry:s,index:r,dataKey:i}=e;if(t.type==="category"){if(!t.allowDuplicatedCategory&&t.dataKey&&!$n(s[t.dataKey])){var c=_G(n,"value",s[t.dataKey]);if(c)return c.coordinate+a/2}return n!=null&&n[r]?n[r].coordinate+a/2:null}var d=jn(s,$n(i)?t.dataKey:i),m=t.scale.map(d);return Fe(m)?m:null}var t5=e=>{var{axis:t,ticks:n,offset:a,bandSize:s,entry:r,index:i}=e;if(t.type==="category")return n[i]?n[i].coordinate+a:null;var c=jn(r,t.dataKey,t.scale.domain()[i]);if($n(c))return null;var d=t.scale.map(c);return Fe(d)?d-s/2+a:null},Q$s=e=>{var{numericAxis:t}=e,n=t.scale.domain();if(t.type==="number"){var a=Math.min(n[0],n[1]),s=Math.max(n[0],n[1]);return a<=0&&s>=0?0:s<0?s:a}return n[0]},X$s=e=>{var t=e.flat(2).filter(Fe);return[Math.min(...t),Math.max(...t)]},Z$s=e=>[e[0]===1/0?0:e[0],e[1]===-1/0?0:e[1]],J$s=(e,t,n)=>{if(e!=null)return Z$s(Object.keys(e).reduce((a,s)=>{var r=e[s];if(!r)return a;var{stackedData:i}=r,c=i.reduce((d,m)=>{var f=CW(m,t,n),p=X$s(f);return!ht(p[0])||!ht(p[1])?d:[Math.min(d[0],p[0]),Math.max(d[1],p[1])]},[1/0,-1/0]);return[Math.min(c[0],a[0]),Math.max(c[1],a[1])]},[1/0,-1/0]))},n5=/^dataMin[\s]*-[\s]*([0-9]+([.]{1}[0-9]+){0,1})$/,a5=/^dataMax[\s]*\+[\s]*([0-9]+([.]{1}[0-9]+){0,1})$/,$p=(e,t,n)=>{if(e&&e.scale&&e.scale.bandwidth){var a=e.scale.bandwidth();if(!n||a>0)return a}if(e&&t&&t.length>=2){for(var s=e0(t,f=>f.coordinate),r=1/0,i=1,c=s.length;i<c;i++){var d=s[i],m=s[i-1];r=Math.min((d?.coordinate||0)-(m?.coordinate||0),r)}return r===1/0?0:r}return n?void 0:0};function o5(e){var{tooltipEntrySettings:t,dataKey:n,payload:a,value:s,name:r}=e;return Om(Om({},t),{},{dataKey:n,payload:a,value:s,name:r})}function d0(e,t){if(e)return String(e);if(typeof t=="string")return t}var ews=(e,t)=>{if(t==="horizontal")return e.relativeX;if(t==="vertical")return e.relativeY},tws=(e,t)=>t==="centric"?e.angle:e.radius,ml=e=>e.layout.width,pl=e=>e.layout.height,nws=e=>e.layout.scale,RW=e=>e.layout.margin,u0=ce(e=>e.cartesianAxis.xAxis,e=>Object.values(e)),m0=ce(e=>e.cartesianAxis.yAxis,e=>Object.values(e)),aws="data-recharts-item-index",ows="data-recharts-item-id",by=60;function s5(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,a)}return n}function Tb(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?s5(Object(n),!0).forEach(function(a){sws(e,a,n[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):s5(Object(n)).forEach(function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(n,a))})}return e}function sws(e,t,n){return(t=rws(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function rws(e){var t=iws(e,"string");return typeof t=="symbol"?t:t+""}function iws(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var a=n.call(e,t);if(typeof a!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var lws=e=>e.brush.height;function cws(e){var t=m0(e);return t.reduce((n,a)=>
918{if(a.orientation==="left"&&!a.mirror&&!a.hide){var s=typeof a.width=="number"?a.width:by;return n+s}return n},0)}function dws(e){var t=m0(e);return t.reduce((n,a)=>{if(a.orientation==="right"&&!a.mirror&&!a.hide){var s=typeof a.width=="number"?a.width:by;return n+s}return n},0)}function uws(e){var t=u0(e);return t.reduce((n,a)=>a.orientation==="top"&&!a.mirror&&!a.hide?n+a.height:n,0)}function mws(e){var t=u0(e);return t.reduce((n,a)=>a.orientation==="bottom"&&!a.mirror&&!a.hide?n+a.height:n,0)}var ma=ce([ml,pl,RW,lws,cws,dws,uws,mws,GG,Ixs],(e,t,n,a,s,r,i,c,d,m)=>{var f={left:(n.left||0)+s,right:(n.right||0)+r},p={top:(n.top||0)+i,bottom:(n.bottom||0)+c},y=Tb(Tb({},p),f),v=y.bottom;y.bottom+=a,y=H$s(y,d,m);var $=e-y.left-y.right,x=t-y.top-y.bottom;return Tb(Tb({brushBottom:v},y),{},{width:Math.max($,0),height:Math.max(x,0)})}),pws=ce(ma,e=>({x:e.left,y:e.top,width:e.width,height:e.height})),Xj=ce(ml,pl,(e,t)=>({x:0,y:0,width:e,height:t})),fws=h.createContext(null),Ga=()=>h.useContext(fws)!=null,p0=e=>e.brush,f0=ce([p0,ma,RW],(e,t,n)=>({height:e.height,x:Fe(e.x)?e.x:t.left,y:Fe(e.y)?e.y:t.top+t.height+t.brushBottom-(n?.bottom||0),width:Fe(e.width)?e.width:t.width})),r5=function(t,n){for(var a=arguments.length,s=new Array(a>2?a-2:0),r=2;r<a;r++)s[r-2]=arguments[r];if(typeof console<"u"&&console.warn&&(n===void 0&&console.warn("LogUtils requires an error message argument"),!t))if(n===void 0)console.warn("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var i=0;console.warn(n.replace(/%s/g,()=>s[i++]))}},gws={initialDimension:{width:-1,height:-1}},hws=h.createContext(gws.initialDimension),PW=()=>h.useContext(hws);function Zj(e){if(e)return{x:e.x,y:e.y,upperWidth:"upperWidth"in e?e.upperWidth:e.width,lowerWidth:"lowerWidth"in e?e.lowerWidth:e.width,width:e.width,height:e.height}}var g0=()=>{var e,t=Ga(),n=Ge(pws),a=Ge(f0),s=(e=Ge(p0))===null||e===void 0?void 0:e.padding;return!t||!a||!s?n:{width:a.width-s.left-s.right,height:a.height-s.top-s.bottom,x:s.left,y:s.top}},yws={top:0,bottom:0,left:0,right:0,width:0,height:0,brushBottom:0},_W=()=>{var e;return(e=Ge(ma))!==null&&e!==void 0?e:yws},Jj=()=>Ge(ml),e2=()=>Ge(pl),vws=()=>Ge(e=>e.layout.margin),Ut=e=>e.layout.layoutType,Cu=()=>Ge(Ut),t2=()=>{var e=Cu();if(e==="horizontal"||e==="vertical")return e},jW=e=>{var t=e.layout.layoutType;if(t==="centric"||t==="radial")return t},bws=()=>{var e=Cu();return e!==void 0},xy=e=>{var t=gn(),n=Ga(),{width:a,height:s}=e,r=PW(),i=a,c=s;return r&&(i=r.width>0?r.width:a,c=r.height>0?r.height:s),h.useEffect(()=>{!n&&xp(i)&&xp(c)&&t(L$s({width:i,height:c}))},[t,n,i,c]),null},NW=Symbol.for("immer-nothing"),i5=Symbol.for("immer-draftable"),is=Symbol.for("immer-state");function rr(e,...t){throw new Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var xh=Object.getPrototypeOf;function wp(e){return!!e&&!!e[is]}function au(e){return e?DW(e)||Array.isArray(e)||!!e[i5]||!!e.constructor?.[i5]||$y(e)||y0(e):!1}var xws=Object.prototype.constructor.toString(),l5=new WeakMap;function DW(e){if(!e||typeof e!="object")return!1;const t=Object.getPrototypeOf(e);if(t===null||t===Object.prototype)return!0;const n=Object.hasOwnProperty.call(t,"constructor")&&t.constructor;if(n===Object)return!0;if(typeof n!="function")return!1;let a=l5.get(n);return a===void 0&&(a=Function.toString.call(n),l5.set(n,a)),a===xws}function c$(e,t,n=!0){h0(e)===0?(n?Reflect.ownKeys(e):Object.keys(e)).forEach(s=>{t(s,e[s],e)}):e.forEach((a,s)=>t(s,a,e))}function h0(e){const t=e[is];return t?t.type_:Array.isArray(e)?1:$y(e)?2:y0(e)?3:0}function oP(e,t){return h0(e)===2?e.has(t):Object.prototype.hasOwnProperty.call(e,t)}function MW(e,t,n){const a=h0(e);a===2?e.set(t,n):a===3?e.add(n):e[t]=n}function $ws(e,t){return e===t?e!==0||1/e===1/t:e!==e&&t!==t}function $y(e){return e instanceof Map}function y0(e){return e instanceof Set}function wd(e){return e.copy_||e.base_}function sP(e,t){if($y(e))return new Map(e);if(y0(e))return new Set(e);if(Array.isArray(e))return Array.prototype.slice.call(e);const n=DW(e);
918if(t===!0||t==="class_only"&&!n){const a=Object.getOwnPropertyDescriptors(e);delete a[is];let s=Reflect.ownKeys(a);for(let r=0;r<s.length;r++){const i=s[r],c=a[i];c.writable===!1&&(c.writable=!0,c.configurable=!0),(c.get||c.set)&&(a[i]={configurable:!0,writable:!0,enumerable:c.enumerable,value:e[i]})}return Object.create(xh(e),a)}else{const a=xh(e);if(a!==null&&n)return{...e};const s=Object.create(a);return Object.assign(s,e)}}function n2(e,t=!1){return v0(e)||wp(e)||!au(e)||(h0(e)>1&&Object.defineProperties(e,{set:Rb,add:Rb,clear:Rb,delete:Rb}),Object.freeze(e),t&&Object.values(e).forEach(n=>n2(n,!0))),e}function wws(){rr(2)}var Rb={value:wws};function v0(e){return e===null||typeof e!="object"?!0:Object.isFrozen(e)}var kws={};function ou(e){const t=kws[e];return t||rr(0,e),t}var $h;function EW(){return $h}function Cws(e,t){return{drafts_:[],parent_:e,immer_:t,canAutoFreeze_:!0,unfinalizedDrafts_:0}}function c5(e,t){t&&(ou("Patches"),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function rP(e){iP(e),e.drafts_.forEach(Sws),e.drafts_=null}function iP(e){e===$h&&($h=e.parent_)}function d5(e){return $h=Cws($h,e)}function Sws(e){const t=e[is];t.type_===0||t.type_===1?t.revoke_():t.revoked_=!0}function u5(e,t){t.unfinalizedDrafts_=t.drafts_.length;const n=t.drafts_[0];return e!==void 0&&e!==n?(n[is].modified_&&(rP(t),rr(4)),au(e)&&(e=d$(t,e),t.parent_||u$(t,e)),t.patches_&&ou("Patches").generateReplacementPatches_(n[is].base_,e,t.patches_,t.inversePatches_)):e=d$(t,n,[]),rP(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e!==NW?e:void 0}function d$(e,t,n){if(v0(t))return t;const a=e.immer_.shouldUseStrictIteration(),s=t[is];if(!s)return c$(t,(r,i)=>m5(e,s,t,r,i,n),a),t;if(s.scope_!==e)return t;if(!s.modified_)return u$(e,s.base_,!0),s.base_;if(!s.finalized_){s.finalized_=!0,s.scope_.unfinalizedDrafts_--;const r=s.copy_;let i=r,c=!1;s.type_===3&&(i=new Set(r),r.clear(),c=!0),c$(i,(d,m)=>m5(e,s,r,d,m,n,c),a),u$(e,r,!1),n&&e.patches_&&ou("Patches").generatePatches_(s,n,e.patches_,e.inversePatches_)}return s.copy_}function m5(e,t,n,a,s,r,i){if(s==null||typeof s!="object"&&!i)return;const c=v0(s);if(!(c&&!i)){if(wp(s)){const d=r&&t&&t.type_!==3&&!oP(t.assigned_,a)?r.concat(a):void 0,m=d$(e,s,d);if(MW(n,a,m),wp(m))e.canAutoFreeze_=!1;else return}else i&&n.add(s);if(au(s)&&!c){if(!e.immer_.autoFreeze_&&e.unfinalizedDrafts_<1||t&&t.base_&&t.base_[a]===s&&c)return;d$(e,s),(!t||!t.scope_.parent_)&&typeof a!="symbol"&&($y(n)?n.has(a):Object.prototype.propertyIsEnumerable.call(n,a))&&u$(e,s)}}}function u$(e,t,n=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&n2(t,n)}function Aws(e,t){const n=Array.isArray(e),a={type_:n?1:0,scope_:t?t.scope_:EW(),modified_:!1,finalized_:!1,assigned_:{},parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1};let s=a,r=a2;n&&(s=[a],r=wh);const{revoke:i,proxy:c}=Proxy.revocable(s,r);return a.draft_=c,a.revoke_=i,c}var a2={get(e,t){if(t===is)return e;const n=wd(e);if(!oP(n,t))return Tws(e,n,t);const a=n[t];return e.finalized_||!au(a)?a:a===SA(e.base_,t)?(AA(e),e.copy_[t]=cP(a,e)):a},has(e,t){return t in wd(e)},ownKeys(e){return Reflect.ownKeys(wd(e))},set(e,t,n){const a=IW(wd(e),t);if(a?.set)return a.set.call(e.draft_,n),!0;if(!e.modified_){const s=SA(wd(e),t),r=s?.[is];if(r&&r.base_===n)return e.copy_[t]=n,e.assigned_[t]=!1,!0;if($ws(n,s)&&(n!==void 0||oP(e.base_,t)))return!0;AA(e),lP(e)}return e.copy_[t]===n&&(n!==void 0||t in e.copy_)||Number.isNaN(n)&&Number.isNaN(e.copy_[t])||(e.copy_[t]=n,e.assigned_[t]=!0),!0},deleteProperty(e,t){return SA(e.base_,t)!==void 0||t in e.base_?(e.assigned_[t]=!1,AA(e),lP(e)):delete e.assigned_[t],e.copy_&&delete e.copy_[t],!0},getOwnPropertyDescriptor(e,t){const n=wd(e),a=Reflect.getOwnPropertyDescriptor(n,t);return a&&{writable:!0,configurable:e.type_!==1||t!=="length",enumerable:a.enumerable,value:n[t]}},defineProperty(){rr(11)},getPrototypeOf(e){return xh(e.base_)},setPrototypeOf(){rr(12)}},wh={};c$(a2,(e,t)=>{wh[e]=function(){return arguments[0]=arguments[0][0],t.apply(this,arguments)}});wh.deleteProperty=function(e,t){return wh.set.call(this,e,t,void 0)};wh.set=function(e,t,n){return a2.set.call(this,e[0],t,n,e[0])};function SA(e,t){const n=e[is];return(n?wd(n):e)[t]}function Tws(e,t,n){const a=IW(t,n);return a?"value"in a?a.value:a.get?.call(e.draft_):void 0}function IW(e,t){if(!(t in e))return;let n=xh(e);for(;n;){const a=Object.getOwnPropertyDescriptor(n,t);if(a)return a;n=xh(n)}}function lP(e){e.modified_||(e.modified_=!0,e.parent_&&lP(e.parent_))}function AA(e){e.copy_||(e.copy_=sP(e.base_,e.scope_.immer_.useStrictShallowCopy_))}var Rws=class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!0,this.produce=(t,n,a)=>
918{if(typeof t=="function"&&typeof n!="function"){const r=n;n=t;const i=this;return function(d=r,...m){return i.produce(d,f=>n.call(this,f,...m))}}typeof n!="function"&&rr(6),a!==void 0&&typeof a!="function"&&rr(7);let s;if(au(t)){const r=d5(this),i=cP(t,void 0);let c=!0;try{s=n(i),c=!1}finally{c?rP(r):iP(r)}return c5(r,a),u5(s,r)}else if(!t||typeof t!="object"){if(s=n(t),s===void 0&&(s=t),s===NW&&(s=void 0),this.autoFreeze_&&n2(s,!0),a){const r=[],i=[];ou("Patches").generateReplacementPatches_(t,s,r,i),a(r,i)}return s}else rr(1,t)},this.produceWithPatches=(t,n)=>{if(typeof t=="function")return(i,...c)=>this.produceWithPatches(i,d=>t(d,...c));let a,s;return[this.produce(t,n,(i,c)=>{a=i,s=c}),a,s]},typeof e?.autoFreeze=="boolean"&&this.setAutoFreeze(e.autoFreeze),typeof e?.useStrictShallowCopy=="boolean"&&this.setUseStrictShallowCopy(e.useStrictShallowCopy),typeof e?.useStrictIteration=="boolean"&&this.setUseStrictIteration(e.useStrictIteration)}createDraft(e){au(e)||rr(8),wp(e)&&(e=Pws(e));const t=d5(this),n=cP(e,void 0);return n[is].isManual_=!0,iP(t),n}finishDraft(e,t){const n=e&&e[is];(!n||!n.isManual_)&&rr(9);const{scope_:a}=n;return c5(a,t),u5(void 0,a)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}setUseStrictIteration(e){this.useStrictIteration_=e}shouldUseStrictIteration(){return this.useStrictIteration_}applyPatches(e,t){let n;for(n=t.length-1;n>=0;n--){const s=t[n];if(s.path.length===0&&s.op==="replace"){e=s.value;break}}n>-1&&(t=t.slice(n+1));const a=ou("Patches").applyPatches_;return wp(e)?a(e,t):this.produce(e,s=>a(s,t))}};function cP(e,t){const n=$y(e)?ou("MapSet").proxyMap_(e,t):y0(e)?ou("MapSet").proxySet_(e,t):Aws(e,t);return(t?t.scope_:EW()).drafts_.push(n),n}function Pws(e){return wp(e)||rr(10,e),OW(e)}function OW(e){if(!au(e)||v0(e))return e;const t=e[is];let n,a=!0;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,n=sP(e,t.scope_.immer_.useStrictShallowCopy_),a=t.scope_.immer_.shouldUseStrictIteration()}else n=sP(e,!0);return c$(n,(s,r)=>{MW(n,s,OW(r))},a),t&&(t.finalized_=!1),n}var _ws=new Rws;_ws.produce;var jws={settings:{layout:"horizontal",align:"center",verticalAlign:"middle",itemSorter:"value"},size:{width:0,height:0},payload:[]},LW=Ka({name:"legend",initialState:jws,reducers:{setLegendSize(e,t){e.size.width=t.payload.width,e.size.height=t.payload.height},setLegendSettings(e,t){e.settings.align=t.payload.align,e.settings.layout=t.payload.layout,e.settings.verticalAlign=t.payload.verticalAlign,e.settings.itemSorter=t.payload.itemSorter},addLegendPayload:{reducer(e,t){e.payload.push(t.payload)},prepare:pn()},replaceLegendPayload:{reducer(e,t){var{prev:n,next:a}=t.payload,s=Rs(e).payload.indexOf(n);s>-1&&(e.payload[s]=a)},prepare:pn()},removeLegendPayload:{reducer(e,t){var n=Rs(e).payload.indexOf(t.payload);n>-1&&e.payload.splice(n,1)},prepare:pn()}}}),{setLegendSize:p5,setLegendSettings:Nws,addLegendPayload:Dws,replaceLegendPayload:Mws,removeLegendPayload:Ews}=LW.actions,Iws=LW.reducer,TA={exports:{}},RA={};/**
919 * @license React
920 * use-sync-external-store-with-selector.production.js
921 *
922 * Copyright (c) Meta Platforms, Inc. and affiliates.
923 *
924 * This source code is licensed under the MIT license found in the
925 * LICENSE file in the root directory of this source tree.
926 */var f5;function Ows(){if(f5)return RA;f5=1;var e=jp();function t(d,m){return d===m&&(d!==0||1/d===1/m)||d!==d&&m!==m}var n=typeof Object.is=="function"?Object.is:t,a=e.useSyncExternalStore,s=e.useRef,r=e.useEffect,i=e.useMemo,c=e.useDebugValue;return RA.useSyncExternalStoreWithSelector=function(d,m,f,p,y){var v=s(null);if(v.current===null){var $={hasValue:!1,value:null};v.current=$}else $=v.current;v=i(function(){function w(_){if(!S){if(S=!0,k=_,_=p(_),y!==void 0&&$.hasValue){var P=$.value;if(y(P,_))return T=P}return T=_}if(P=T,n(k,_))return P;var j=p(_);return y!==void 0&&y(P,j)?(k=_,P):(k=_,T=j)}var S=!1,k,T,R=f===void 0?null:f;return[function(){return w(m())},R===null?void 0:function(){return w(R())}]},[m,f,p,y]);var x=a(d,v[0],v[1]);return r(function(){$.hasValue=!0,$.value=x},[x]),c(x),x},RA}var g5;function Lws(){return g5||(g5=1,TA.exports=Ows()),TA.exports}Lws();function Uws(e){e()}function Bws(){let e=null,t=null;return{clear(){e=null,t=null},notify(){Uws(()=>{let n=e;for(;n;)n.callback(),n=n.next})},get(){const n=[];let a=e;for(;a;)n.push(a),a=a.next;return n},subscribe(n){let a=!0;const s=t={callback:n,next:null,prev:t};return s.prev?s.prev.next=s:e=s,function(){!a||e===null||(a=!1,s.next?s.next.prev=s.prev:t=s.prev,s.prev?s.prev.next=s.next:e=s.next)}}}}var h5={notify(){},get:()=>[]};function Fws(e,t){let n,a=h5,s=0,r=!1;function i(x){f();const w=a.subscribe(x);let S=!1;return()=>{S||(S=!0,w(),p())}}function c(){a.notify()}function d(){$.onStateChange&&$.onStateChange()}function m(){return r}function f(){s++,n||(n=e.subscribe(d),a=Bws())}function p(){s--,n&&s===0&&(n(),n=void 0,a.clear(),a=h5)}function y(){r||(r=!0,f())}function v(){r&&(r=!1,p())}const $={addNestedSub:i,notifyNestedSubs:c,handleChangeWrapper:d,isSubscribed:m,trySubscribe:y,tryUnsubscribe:v,getListeners:()=>a};return $}var zws=()=>typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",qws=zws(),Hws=()=>typeof navigator<"u"&&navigator.product==="ReactNative",Vws=Hws(),Kws=()=>qws||Vws?h.useLayoutEffect:h.useEffect,Gws=Kws();function y5(e,t){return e===t?e!==0||t!==0||1/e===1/t:e!==e&&t!==t}function Wws(e,t){if(y5(e,t))return!0;
926if(typeof e!="object"||e===null||typeof t!="object"||t===null)return!1;const n=Object.keys(e),a=Object.keys(t);if(n.length!==a.length)return!1;for(let s=0;s<n.length;s++)if(!Object.prototype.hasOwnProperty.call(t,n[s])||!y5(e[n[s]],t[n[s]]))return!1;return!0}var PA=Symbol.for("react-redux-context"),_A=typeof globalThis<"u"?globalThis:{};function Yws(){if(!h.createContext)return{};const e=_A[PA]??(_A[PA]=new Map);let t=e.get(h.createContext);return t||(t=h.createContext(null),e.set(h.createContext,t)),t}var Qws=Yws();function Xws(e){const{children:t,context:n,serverState:a,store:s}=e,r=h.useMemo(()=>{const d=Fws(s);return{store:s,subscription:d,getServerState:a?()=>a:void 0}},[s,a]),i=h.useMemo(()=>s.getState(),[s]);Gws(()=>{const{subscription:d}=r;return d.onStateChange=d.notifyNestedSubs,d.trySubscribe(),i!==s.getState()&&d.notifyNestedSubs(),()=>{d.tryUnsubscribe(),d.onStateChange=void 0}},[r,i]);const c=n||Qws;return h.createElement(c.Provider,{value:r},t)}var Zws=Xws,Jws=new Set(["axisLine","tickLine","activeBar","activeDot","activeLabel","activeShape","allowEscapeViewBox","background","cursor","dot","label","line","margin","padding","position","shape","style","tick","wrapperStyle","radius","throttledEvents"]);function e0s(e,t){return e==null&&t==null?!0:typeof e=="number"&&typeof t=="number"?e===t||e!==e&&t!==t:e===t}function Yp(e,t){var n=new Set([...Object.keys(e),...Object.keys(t)]);for(var a of n)if(Jws.has(a)){if(e[a]==null&&t[a]==null)continue;if(!Wws(e[a],t[a]))return!1}else if(!e0s(e[a],t[a]))return!1;return!0}var t0s=["contextPayload"];function dP(){return dP=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)({}).hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},dP.apply(null,arguments)}function v5(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,a)}return n}function kp(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?v5(Object(n),!0).forEach(function(a){n0s(e,a,n[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):v5(Object(n)).forEach(function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(n,a))})}return e}function n0s(e,t,n){return(t=a0s(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a0s(e){var t=o0s(e,"string");return typeof t=="symbol"?t:t+""}function o0s(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var a=n.call(e,t);if(typeof a!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function s0s(e,t){if(e==null)return{};var n,a,s=r0s(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a<r.length;a++)n=r[a],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(s[n]=e[n])}return s}function r0s(e,t){if(e==null)return{};var n={};for(var a in e)if({}.hasOwnProperty.call(e,a)){if(t.indexOf(a)!==-1)continue;n[a]=e[a]}return n}function i0s(e){return e.value}function l0s(e){var{contextPayload:t}=e,n=s0s(e,t0s),a=qG(t,e.payloadUniqBy,i0s),s=kp(kp({},n),{},{payload:a});return h.isValidElement(e.content)?h.cloneElement(e.content,s):typeof e.content=="function"?h.createElement(e.content,s):h.createElement(Hbs,s)}function c0s(e,t,n,a,s,r){var{layout:i,align:c,verticalAlign:d}=t,m,f;return(!e||(e.left===void 0||e.left===null)&&(e.right===void 0||e.right===null))&&(c==="center"&&i==="vertical"?m={left:((a||0)-r.width)/2}:m=c==="right"?{right:n&&n.right||0}:{left:n&&n.left||0}),(!e||(e.top===void 0||e.top===null)&&(e.bottom===void 0||e.bottom===null))&&(d==="middle"?f={top:((s||0)-r.height)/2}:f=d==="bottom"?{bottom:n&&n.bottom||0}:{top:n&&n.top||0}),kp(kp({},m),f)}function d0s(e){var t=gn();return h.useEffect(()=>{t(Nws(e))},[t,e]),null}function u0s(e){var t=gn();return h.useEffect(()=>(t(p5(e)),()=>{t(p5({width:0,height:0}))}),[t,e]),null}function m0s(e,t,n,a){return e==="vertical"&&t!=null?{height:t}
926:e==="horizontal"?{width:n||a}:null}var p0s={align:"center",iconSize:14,inactiveColor:"#ccc",itemSorter:"value",layout:"horizontal",verticalAlign:"bottom"};function f0s(e){var t=Va(e,p0s),n=Uxs(),a=Ivs(),s=vws(),{width:r,height:i,wrapperStyle:c,portal:d}=t,[m,f]=WG([n]),p=Jj(),y=e2();if(p==null||y==null)return null;var v=p-(s?.left||0)-(s?.right||0),$=m0s(t.layout,i,r,v),x=d?c:kp(kp({position:"absolute",width:$?.width||r||"auto",height:$?.height||i||"auto"},c0s(c,t,s,p,y,m)),c),w=d??a;if(w==null||n==null)return null;var S=h.createElement("div",{className:"recharts-legend-wrapper",style:x,ref:f},h.createElement(d0s,{layout:t.layout,align:t.align,verticalAlign:t.verticalAlign,itemSorter:t.itemSorter}),!d&&h.createElement(u0s,{width:m.width,height:m.height}),h.createElement(l0s,dP({},t,$,{margin:s,chartWidth:p,chartHeight:y,contextPayload:n})));return li.createPortal(S,w)}var o2=h.memo(f0s,Yp);o2.displayName="Legend";function uP(){return uP=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)({}).hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},uP.apply(null,arguments)}function b5(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,a)}return n}function og(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?b5(Object(n),!0).forEach(function(a){g0s(e,a,n[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):b5(Object(n)).forEach(function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(n,a))})}return e}function g0s(e,t,n){return(t=h0s(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function h0s(e){var t=y0s(e,"string");return typeof t=="symbol"?t:t+""}function y0s(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var a=n.call(e,t);if(typeof a!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function v0s(e){return Array.isArray(e)&&si(e[0])&&si(e[1])?e.join(" ~ "):e}var $m={separator:" : ",contentStyle:{margin:0,padding:10,backgroundColor:"#fff",border:"1px solid #ccc",whiteSpace:"nowrap"},itemStyle:{display:"block",paddingTop:4,paddingBottom:4,color:"#000"},labelStyle:{},accessibilityLayer:!1};function b0s(e,t){return t==null?e:e0(e,t)}var x0s=e=>{var{separator:t=$m.separator,contentStyle:n,itemStyle:a,labelStyle:s=$m.labelStyle,payload:r,formatter:i,itemSorter:c,wrapperClassName:d,labelClassName:m,label:f,labelFormatter:p,accessibilityLayer:y=$m.accessibilityLayer}=e,v=()=>{if(r&&r.length){var _={padding:0,margin:0},P=b0s(r,c),j=P.map((N,I)=>{if(!N||N.type==="none")return null;var z=N.formatter||i||v0s,{value:E,name:L}=N,O=E,V=L;if(z){var ne=z(E,L,N,I,r);if(Array.isArray(ne))[O,V]=ne;else if(ne!=null)O=ne;else return null}var q=og(og({},$m.itemStyle),{},{color:N.color||$m.itemStyle.color},a);return h.createElement("li",{className:"recharts-tooltip-item",key:"tooltip-item-".concat(I),style:q},si(V)?h.createElement("span",{className:"recharts-tooltip-item-name"},V):null,si(V)?h.createElement("span",{className:"recharts-tooltip-item-separator"},t):null,h.createElement("span",{className:"recharts-tooltip-item-value"},O),h.createElement("span",{className:"recharts-tooltip-item-unit"},N.unit||""))});return h.createElement("ul",{className:"recharts-tooltip-item-list",style:_},j)}return null},$=og(og({},$m.contentStyle),n),x=og({margin:0},s),w=!$n(f),S=w?f:"",k=Lt("recharts-default-tooltip",d),T=Lt("recharts-tooltip-label",m);w&&p&&r!==void 0&&r!==null&&(S=p(f,r));var R=y?{role:"status","aria-live":"assertive"}:{};return h.createElement("div",uP({className:k,style:$},R),h.createElement("p",{className:T,style:x},h.isValidElement(S)?S:"".concat(S)),v())},sg="recharts-tooltip-wrapper",$0s={visibility:"hidden"};function w0s(e){var{coordinate:t,translateX:n,translateY:a}=e;return Lt(sg,{["".concat(sg,"-right")]:Fe(n)&&t&&Fe(t.x)&&n>=t.x,["".concat(sg,"-left")]:Fe(n)&&t&&Fe(t.x)&&n<t.x,["".concat(sg,"-bottom")]:Fe(a)&&t&&Fe(t.y)&&a>=t.y,["".concat(sg,"-top")]:Fe(a)&&t&&Fe(t.y)&&a<t.y})}function x5(e){var{allowEscapeViewBox:t,coordinate:n,key:a,offset:s,position:r,reverseDirection:i,tooltipDimension:c,viewBox:d,viewB
926oxDimension:m}=e;if(r&&Fe(r[a]))return r[a];var f=n[a]-c-(s>0?s:0),p=n[a]+s;if(t[a])return i[a]?f:p;var y=d[a];if(y==null)return 0;if(i[a]){var v=f,$=y;return v<$?Math.max(p,y):Math.max(f,y)}if(m==null)return 0;var x=p+c,w=y+m;return x>w?Math.max(f,y):Math.max(p,y)}function k0s(e){var{translateX:t,translateY:n,useTranslate3d:a}=e;return{transform:a?"translate3d(".concat(t,"px, ").concat(n,"px, 0)"):"translate(".concat(t,"px, ").concat(n,"px)")}}function C0s(e){var{allowEscapeViewBox:t,coordinate:n,offsetTop:a,offsetLeft:s,position:r,reverseDirection:i,tooltipBox:c,useTranslate3d:d,viewBox:m}=e,f,p,y;return c.height>0&&c.width>0&&n?(p=x5({allowEscapeViewBox:t,coordinate:n,key:"x",offset:s,position:r,reverseDirection:i,tooltipDimension:c.width,viewBox:m,viewBoxDimension:m.width}),y=x5({allowEscapeViewBox:t,coordinate:n,key:"y",offset:a,position:r,reverseDirection:i,tooltipDimension:c.height,viewBox:m,viewBoxDimension:m.height}),f=k0s({translateX:p,translateY:y,useTranslate3d:d})):f=$0s,{cssProperties:f,cssClasses:w0s({translateX:p,translateY:y,coordinate:n})}}var S0s=()=>!(typeof window<"u"&&window.document&&window.document.createElement&&window.setTimeout),wy={isSsr:S0s()};function UW(){var[e,t]=h.useState(()=>wy.isSsr||!window.matchMedia?!1:window.matchMedia("(prefers-reduced-motion: reduce)").matches);return h.useEffect(()=>{if(window.matchMedia){var n=window.matchMedia("(prefers-reduced-motion: reduce)"),a=()=>{t(n.matches)};return n.addEventListener("change",a),()=>{n.removeEventListener("change",a)}}},[]),e}function $5(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,a)}return n}function wm(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?$5(Object(n),!0).forEach(function(a){A0s(e,a,n[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):$5(Object(n)).forEach(function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(n,a))})}return e}function A0s(e,t,n){return(t=T0s(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function T0s(e){var t=R0s(e,"string");return typeof t=="symbol"?t:t+""}function R0s(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var a=n.call(e,t);if(typeof a!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function P0s(e){if(!(e.prefersReducedMotion&&e.isAnimationActive==="auto")&&e.isAnimationActive&&e.active)return"transform ".concat(e.animationDuration,"ms ").concat(e.animationEasing)}function _0s(e){var t,n,a,s,r,i,c=UW(),[d,m]=h.useState(()=>({dismissed:!1,dismissedAtCoordinate:{x:0,y:0}}));h.useEffect(()=>{var $=x=>{if(x.key==="Escape"){var w,S,k,T;m({dismissed:!0,dismissedAtCoordinate:{x:(w=(S=e.coordinate)===null||S===void 0?void 0:S.x)!==null&&w!==void 0?w:0,y:(k=(T=e.coordinate)===null||T===void 0?void 0:T.y)!==null&&k!==void 0?k:0}})}};return document.addEventListener("keydown",$),()=>{document.removeEventListener("keydown",$)}},[(t=e.coordinate)===null||t===void 0?void 0:t.x,(n=e.coordinate)===null||n===void 0?void 0:n.y]),d.dismissed&&(((a=(s=e.coordinate)===null||s===void 0?void 0:s.x)!==null&&a!==void 0?a:0)!==d.dismissedAtCoordinate.x||((r=(i=e.coordinate)===null||i===void 0?void 0:i.y)!==null&&r!==void 0?r:0)!==d.dismissedAtCoordinate.y)&&m(wm(wm({},d),{},{dismissed:!1}));var{cssClasses:f,cssProperties:p}=C0s({allowEscapeViewBox:e.allowEscapeViewBox,coordinate:e.coordinate,offsetLeft:typeof e.offset=="number"?e.offset:e.offset.x,offsetTop:typeof e.offset=="number"?e.offset:e.offset.y,position:e.position,reverseDirection:e.reverseDirection,tooltipBox:{height:e.lastBoundingBox.height,width:e.lastBoundingBox.width},useTranslate3d:e.useTranslate3d,viewBox:e.viewBox}),y=e.hasPortalFromProps?{}:wm(wm({transition:P0s({prefersReducedMotion:c,isAnimationActive:e.isAnimationActive,active:e.active,animationDuration:e.animationDuration,animationEasing:e.animationEasing})},p),{},{pointerEvents:"none",position:"absolute",top:0,left:0}),v=wm(wm({},y),{},{visibility:!d.dismissed&&e.active&&e.hasPayload?"visible":"hidden"},e.wrapperStyle);return h.createElement("div",{xmlns:"http://www.w3.org/1999/xhtml",tabIndex:-1,
926className:f,style:v,ref:e.innerRef},e.children)}var j0s=h.memo(_0s),BW=()=>{var e;return(e=Ge(t=>t.rootProps.accessibilityLayer))!==null&&e!==void 0?e:!0};function mP(){return mP=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)({}).hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},mP.apply(null,arguments)}function w5(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,a)}return n}function k5(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?w5(Object(n),!0).forEach(function(a){N0s(e,a,n[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):w5(Object(n)).forEach(function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(n,a))})}return e}function N0s(e,t,n){return(t=D0s(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function D0s(e){var t=M0s(e,"string");return typeof t=="symbol"?t:t+""}function M0s(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var a=n.call(e,t);if(typeof a!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var C5={curveBasisClosed:tbs,curveBasisOpen:nbs,curveBasis:ebs,curveBumpX:Bvs,curveBumpY:Fvs,curveLinearClosed:abs,curveLinear:Xw,curveMonotoneX:obs,curveMonotoneY:sbs,curveNatural:rbs,curveStep:ibs,curveStepAfter:cbs,curveStepBefore:lbs},m$=e=>ht(e.x)&&ht(e.y),S5=e=>e.base!=null&&m$(e.base)&&m$(e),rg=e=>e.x,ig=e=>e.y,E0s=(e,t)=>{if(typeof e=="function")return e;var n="curve".concat(hy(e));if((n==="curveMonotone"||n==="curveBump")&&t){var a=C5["".concat(n).concat(t==="vertical"?"Y":"X")];if(a)return a}return C5[n]||Xw},A5={connectNulls:!1,type:"linear"},I0s=e=>{var{type:t=A5.type,points:n=[],baseLine:a,layout:s,connectNulls:r=A5.connectNulls}=e,i=E0s(t,s),c=r?n.filter(m$):n;if(Array.isArray(a)){var d,m=n.map(($,x)=>k5(k5({},$),{},{base:a[x]}));s==="vertical"?d=$b().y(ig).x1(rg).x0($=>$.base.x):d=$b().x(rg).y1(ig).y0($=>$.base.y);var f=d.defined(S5).curve(i),p=r?m.filter(S5):m;return f(p)}var y;s==="vertical"&&Fe(a)?y=$b().y(ig).x1(rg).x0(a):Fe(a)?y=$b().x(rg).y1(ig).y0(a):y=yG().x(rg).y(ig);var v=y.defined(m$).curve(i);return v(c)},Fg=e=>{var{className:t,points:n,path:a,pathRef:s}=e,r=Cu();if((!n||!n.length)&&!a)return null;var i={type:e.type,points:e.points,baseLine:e.baseLine,layout:e.layout||r,connectNulls:e.connectNulls},c=n&&n.length?I0s(i):a;return h.createElement("path",mP({},Is(e),zj(e),{className:Lt("recharts-curve",t),d:c===null?void 0:c,ref:s}))},O0s=["x","y","top","left","width","height","className"];function pP(){return pP=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)({}).hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},pP.apply(null,arguments)}function T5(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,a)}return n}function L0s(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?T5(Object(n),!0).forEach(function(a){U0s(e,a,n[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):T5(Object(n)).forEach(function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(n,a))})}return e}function U0s(e,t,n){return(t=B0s(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function B0s(e){var t=F0s(e,"string");return typeof t=="symbol"?t:t+""}function F0s(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var a=n.call(e,t);if(typeof a!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function z0s(e,t){if(e==null)return{};var n,a,s=q0s(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a<r.length;a++)n=r[a],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(s[n]=e[n])}return s}function q0s(e,t){if(e==null)return{};var n={};for(var a in e)if({}.hasOwnProperty.call(e,a)){if(t.indexOf(a)!==-1)continue;n[a]=e[a]}return n}var H0s=(e,t,n,a,s,r)=>"M".concat(e,",").concat(s,"v").concat(a,"M").concat(r,",").concat(t,"h").concat(n),V0s=e=>{var{x:t=0,y:n=0,top:a=0,left:s=0,width:r=0,height:i=0,className:c}=e,d=z0s(e,O0s),m=L0s({x:t,y:n,top:a,left:s,width:r,height:i},d);return!Fe(t)||!Fe(n)||!Fe(r)||!Fe(i)||!Fe(a)||!Fe(s)?null:h.createElement("path",pP({},no(m),{className:Lt("recharts-cross",c),d:H0s(t,n,r,i,a,s)}))};function K0s(e,t,n,a){var s=a/2;return{stroke:"none",fill:"#ccc",x:e==="horizontal"?t.x-s:n.left+.5,y:e==="horizontal"?n.top+.5:t.y-s,width:e==="horizontal"?a:n.width-1,height:e==="horizontal"?n.height-1:a}}function R5(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,a)}return n}function P5(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};
926t%2?R5(Object(n),!0).forEach(function(a){G0s(e,a,n[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):R5(Object(n)).forEach(function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(n,a))})}return e}function G0s(e,t,n){return(t=W0s(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function W0s(e){var t=Y0s(e,"string");return typeof t=="symbol"?t:t+""}function Y0s(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var a=n.call(e,t);if(typeof a!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var Q0s=e=>e.replace(/([A-Z])/g,t=>"-".concat(t.toLowerCase())),FW=(e,t,n)=>e.map(a=>"".concat(Q0s(a)," ").concat(t,"ms ").concat(n)).join(","),X0s=(e,t)=>[Object.keys(e),Object.keys(t)].reduce((n,a)=>n.filter(s=>a.includes(s))),kh=(e,t)=>Object.keys(t).reduce((n,a)=>P5(P5({},n),{},{[a]:e(a,t[a])}),{});function _5(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,a)}return n}function Qn(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?_5(Object(n),!0).forEach(function(a){Z0s(e,a,n[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):_5(Object(n)).forEach(function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(n,a))})}return e}function Z0s(e,t,n){return(t=J0s(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function J0s(e){var t=eks(e,"string");return typeof t=="symbol"?t:t+""}function eks(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var a=n.call(e,t);if(typeof a!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var p$=(e,t,n)=>e+(t-e)*n,fP=e=>{var{from:t,to:n}=e;return t!==n},zW=(e,t,n)=>{var a=kh((s,r)=>{if(fP(r)){var[i,c]=e(r.from,r.to,r.velocity);return Qn(Qn({},r),{},{from:i,velocity:c})}return r},t);return n<1?kh((s,r)=>fP(r)&&a[s]!=null?Qn(Qn({},r),{},{velocity:p$(r.velocity,a[s].velocity,n),from:p$(r.from,a[s].from,n)}):r,t):zW(e,a,n-1)};function tks(e,t,n,a,s,r){var i,c=a.reduce((y,v)=>Qn(Qn({},y),{},{[v]:{from:e[v],velocity:0,to:t[v]}}),{}),d=()=>kh((y,v)=>v.from,c),m=()=>!Object.values(c).filter(fP).length,f=null,p=y=>{i||(i=y);var v=y-i,$=v/n.dt;c=zW(n,c,$),s(Qn(Qn(Qn({},e),t),d())),i=y,m()||(f=r.setTimeout(p))};return()=>(f=r.setTimeout(p),()=>{var y;(y=f)===null||y===void 0||y()})}function nks(e,t,n,a,s,r,i){var c=null,d=s.reduce((p,y)=>{var v=e[y],$=t[y];return v==null||$==null?p:Qn(Qn({},p),{},{[y]:[v,$]})},{}),m,f=p=>{m||(m=p);var y=(p-m)/a,v=kh((x,w)=>p$(...w,n(y)),d);if(r(Qn(Qn(Qn({},e),t),v)),y<1)c=i.setTimeout(f);else{var $=kh((x,w)=>p$(...w,n(1)),d);r(Qn(Qn(Qn({},e),t),$))}};return()=>(c=i.setTimeout(f),()=>{var p;(p=c)===null||p===void 0||p()})}const aks=(e,t,n,a,s,r)=>{var i=X0s(e,t);return n==null?()=>(s(Qn(Qn({},e),t)),()=>{}):n.isStepper===!0?tks(e,t,n,i,s,r):nks(e,t,n,a,i,s,r)};var f$=1e-4,qW=(e,t)=>[0,3*e,3*t-6*e,3*e-3*t+1],HW=(e,t)=>e.map((n,a)=>n*t**a).reduce((n,a)=>n+a),j5=(e,t)=>n=>{var a=qW(e,t);return HW(a,n)},oks=(e,t)=>n=>{var a=qW(e,t),s=[...a.map((r,i)=>r*i).slice(1),0];return HW(s,n)},sks=e=>{var t,n=e.split("(");if(n.length!==2||n[0]!=="cubic-bezier")return null;var a=(t=n[1])===null||t===void 0||(t=t.split(")")[0])===null||t===void 0?void 0:t.split(",");if(a==null||a.length!==4)return null;var s=a.map(r=>parseFloat(r));return[s[0],s[1],s[2],s[3]]},rks=function(){for(var t=arguments.length,n=new Array(t),a=0;a<t;a++)n[a]=arguments[a];if(n.length===1)switch(n[0]){case"linear":return[0,0,1,1];case"ease":return[.25,.1,.25,1];case"ease-in":return[.42,0,1,1];case"ease-out":return[.42,0,.58,1];case"ease-in-out":return[0,0,.58,1];default:{var s=sks(n[0]);if(s)return s}}return n.length===4?n:[0,0,1,1]},iks=(e,t,n,a)=>
926{var s=j5(e,n),r=j5(t,a),i=oks(e,n),c=m=>m>1?1:m<0?0:m,d=m=>{for(var f=m>1?1:m,p=f,y=0;y<8;++y){var v=s(p)-f,$=i(p);if(Math.abs(v-f)<f$||$<f$)return r(p);p=c(p-v/$)}return r(p)};return d.isStepper=!1,d},N5=function(){return iks(...rks(...arguments))},lks=function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{stiff:n=100,damping:a=8,dt:s=17}=t,r=(i,c,d)=>{var m=-(i-c)*n,f=d*a,p=d+(m-f)*s/1e3,y=d*s/1e3+i;return Math.abs(y-c)<f$&&Math.abs(p)<f$?[c,0]:[y,p]};return r.isStepper=!0,r.dt=s,r},cks=e=>{if(typeof e=="string")switch(e){case"ease":case"ease-in-out":case"ease-out":case"ease-in":case"linear":return N5(e);case"spring":return lks();default:if(e.split("(")[0]==="cubic-bezier")return N5(e)}return typeof e=="function"?e:null};function dks(e){var t,n=()=>null,a=!1,s=null,r=i=>{if(!a){if(Array.isArray(i)){if(!i.length)return;var c=i,[d,...m]=c;if(typeof d=="number"){s=e.setTimeout(r.bind(null,m),d);return}r(d),s=e.setTimeout(r.bind(null,m));return}typeof i=="string"&&(t=i,n(t)),typeof i=="object"&&(t=i,n(t)),typeof i=="function"&&i()}};return{stop:()=>{a=!0},start:i=>{a=!1,s&&(s(),s=null),r(i)},subscribe:i=>(n=i,()=>{n=()=>null}),getTimeoutController:()=>e}}class uks{setTimeout(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,a=performance.now(),s=null,r=i=>{i-a>=n?t(i):typeof requestAnimationFrame=="function"&&(s=requestAnimationFrame(r))};return s=requestAnimationFrame(r),()=>{s!=null&&cancelAnimationFrame(s)}}}function mks(){return dks(new uks)}var pks=h.createContext(mks);function fks(e,t){var n=h.useContext(pks);return h.useMemo(()=>t??n(e),[e,t,n])}var gks={begin:0,duration:1e3,easing:"ease",isActive:!0,canBegin:!0,onAnimationEnd:()=>{},onAnimationStart:()=>{}},D5={t:0},jA={t:1};function b0(e){var t=Va(e,gks),{isActive:n,canBegin:a,duration:s,easing:r,begin:i,onAnimationEnd:c,onAnimationStart:d,children:m}=t,f=UW(),p=n==="auto"?!wy.isSsr&&!f:n,y=fks(t.animationId,t.animationManager),[v,$]=h.useState(p?D5:jA),x=h.useRef(null);return h.useEffect(()=>{p||$(jA)},[p]),h.useEffect(()=>{if(!p||!a)return Wp;var w=aks(D5,jA,cks(r),s,$,y.getTimeoutController()),S=()=>{x.current=w()};return y.start([d,i,S,s,c]),()=>{y.stop(),x.current&&x.current(),c()}},[p,a,s,r,i,d,c,y]),m(v.t)}function x0(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"animation-",n=h.useRef(hh(t)),a=h.useRef(e);return a.current!==e&&(n.current=hh(t),a.current=e),n.current}var hks=["radius"],yks=["radius"],M5,E5,I5,O5,L5,U5,B5,F5,z5,q5;function H5(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,a)}return n}function V5(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?H5(Object(n),!0).forEach(function(a){vks(e,a,n[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):H5(Object(n)).forEach(function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(n,a))})}return e}function vks(e,t,n){return(t=bks(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function bks(e){var t=xks(e,"string");return typeof t=="symbol"?t:t+""}function xks(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var a=n.call(e,t);if(typeof a!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function g$(){return g$=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)({}).hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},g$.apply(null,arguments)}function K5(e,t){if(e==null)return{};var n,a,s=$ks(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a<r.length;a++)n=r[a],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(s[n]=e[n])}return s}function $ks(e,t){if(e==null)return{};var n={};for(var a in e)if({}.hasOwnProperty.call(e,a)){if(t.indexOf(a)!==-1)continue;n[a]=e[a]}return n}function Ir(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}var G5=(e,t,n,a,s)=>{var r=hc(n),i=hc(a),c=Math.min(Math.abs(r)/2,Math.abs(i)/2),d=i>=0?1:-1,m=r>=0?1:-1,f=i>=0&&r>=0||i<0&&r<0?1:0,p;
926if(c>0&&Array.isArray(s)){for(var y=[0,0,0,0],v=0,$=4;v<$;v++){var x,w=(x=s[v])!==null&&x!==void 0?x:0;y[v]=w>c?c:w}p=An(M5||(M5=Ir(["M",",",""])),e,t+d*y[0]),y[0]>0&&(p+=An(E5||(E5=Ir(["A ",",",",0,0,",",",",",""])),y[0],y[0],f,e+m*y[0],t)),p+=An(I5||(I5=Ir(["L ",",",""])),e+n-m*y[1],t),y[1]>0&&(p+=An(O5||(O5=Ir(["A ",",",",0,0,",`,
927        `,",",""])),y[1],y[1],f,e+n,t+d*y[1])),p+=An(L5||(L5=Ir(["L ",",",""])),e+n,t+a-d*y[2]),y[2]>0&&(p+=An(U5||(U5=Ir(["A ",",",",0,0,",`,
928        `,",",""])),y[2],y[2],f,e+n-m*y[2],t+a)),p+=An(B5||(B5=Ir(["L ",",",""])),e+m*y[3],t+a),y[3]>0&&(p+=An(F5||(F5=Ir(["A ",",",",0,0,",`,
929        `,",",""])),y[3],y[3],f,e,t+a-d*y[3])),p+="Z"}else if(c>0&&s===+s&&s>0){var S=Math.min(c,s);p=An(z5||(z5=Ir(["M ",",",`
930            A `,",",",0,0,",",",",",`
931            L `,",",`
932            A `,",",",0,0,",",",",",`
933            L `,",",`
934            A `,",",",0,0,",",",",",`
935            L `,",",`
936            A `,",",",0,0,",",",","," Z"])),e,t+d*S,S,S,f,e+m*S,t,e+n-m*S,t,S,S,f,e+n,t+d*S,e+n,t+a-d*S,S,S,f,e+n-m*S,t+a,e+m*S,t+a,S,S,f,e,t+a-d*S)}else p=An(q5||(q5=Ir(["M ",","," h "," v "," h "," Z"])),e,t,n,a,-n);return p},W5={x:0,y:0,width:0,height:0,radius:0,isAnimationActive:!1,isUpdateAnimationActive:!1,animationBegin:0,animationDuration:1500,animationEasing:"ease"},VW=e=>{var t=Va(e,W5),n=h.useRef(null),[a,s]=h.useState(-1);h.useEffect(()=>{if(n.current&&n.current.getTotalLength)try{var M=n.current.getTotalLength();M&&s(M)}catch{}},[]);var{x:r,y:i,width:c,height:d,radius:m,className:f}=t,{animationEasing:p,animationDuration:y,animationBegin:v,isAnimationActive:$,isUpdateAnimationActive:x}=t,w=h.useRef(c),S=h.useRef(d),k=h.useRef(r),T=h.useRef(i),R=h.useMemo(()=>({x:r,y:i,width:c,height:d,radius:m}),[r,i,c,d,m]),_=x0(R,"rectangle-");if(r!==+r||i!==+i||c!==+c||d!==+d||c===0||d===0)return null;var P=Lt("recharts-rectangle",f);if(!x){var j=no(t),{radius:N}=j,I=K5(j,hks);return h.createElement("path",g$({},I,{x:hc(r),y:hc(i),width:hc(c),height:hc(d),radius:typeof m=="number"?m:void 0,className:P,d:G5(r,i,c,d,m)}))}var z=w.current,E=S.current,L=k.current,O=T.current,V="0px ".concat(a===-1?1:a,"px"),ne="".concat(a,"px ").concat(a,"px"),q=FW(["strokeDasharray"],y,typeof p=="string"?p:W5.animationEasing);return h.createElement(b0,{animationId:_,key:_,canBegin:a>0,duration:y,easing:p,isActive:x,begin:v},M=>{var F=bn(z,c,M),H=bn(E,d,M),ee=bn(L,r,M),B=bn(O,i,M);n.current&&(w.current=F,S.current=H,k.current=ee,T.current=B);var G;$?M>0?G={transition:q,strokeDasharray:ne}:G={strokeDasharray:V}:G={strokeDasharray:ne};var Q=no(t),{radius:de}=Q,Y=K5(Q,yks);return h.createElement("path",g$({},Y,{radius:typeof m=="number"?m:void 0,className:P,d:G5(ee,B,F,H,m),ref:n,style:V5(V5({},G),t.style)}))})};function Y5(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,a)}return n}function Q5(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?Y5(Object(n),!0).forEach(function(a){wks(e,a,n[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Y5(Object(n)).forEach(function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(n,a))})}return e}function wks(e,t,n){return(t=kks(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function kks(e){var t=Cks(e,"string");return typeof t=="symbol"?t:t+""}function Cks(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var a=n.call(e,t);if(typeof a!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var h$=Math.PI/180,Sks=e=>e*180/Math.PI,Sa=(e,t,n,a)=>({x:e+Math.cos(-h$*a)*n,y:t+Math.sin(-h$*a)*n}),Aks=function(t,n){var a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{top:0,right:0,bottom:0,left:0};return Math.min(Math.abs(t-(a.left||0)-(a.right||0)),Math.abs(n-(a.top||0)-(a.bottom||0)))/2},Tks=(e,t)=>{var{x:n,y:a}=e,{x:s,y:r}=t;return Math.sqrt((n-s)**2+(a-r)**2)},Rks=(e,t)=>{var{x:n,y:a}=e,{cx:s,cy:r}=t,i=Tks({x:n,y:a},{x:s,y:r});if(i<=0)return{radius:i,angle:0};var c=(n-s)/i,d=Math.acos(c);return a>r&&(d=2*Math.PI-d),{radius:i,angle:Sks(d),angleInRadian:d}},Pks=e=>{var{startAngle:t,endAngle:n}=e,a=Math.floor(t/360),s=Math.floor(n/360),r=Math.min(a,s);return{startAngle:t-r*360,endAngle:n-r*360}},_ks=(e,t)=>{var{startAngle:n,endAngle:a}=t,s=Math.floor(n/360),r=Math.floor(a/360),i=Math.min(s,r);return e+i*360},jks=(e,t)=>{var{relativeX:n,relativeY:a}=e,{radius:s,angle:r}=Rks({x:n,y:a},t),{innerRadius:i,outerRadius:c}=t;if(s<i||s>c||s===0)return null;var{startAngle:d,endAngle:m}=Pks(t),f=r,p;if(d<=m){for(;f>m;)f-=360;for(;f<d;)f+=360;p=f>=d&&f<=m}else{for(;f>d;)f-=360;for(;f<m;)f+=360;p=f>=m&&f<=d}return p?Q5(Q5({},t),{},{radius:s,angle:_ks(f,t)}):null};function KW(e){var{cx:t,cy:n,radius:a,startAngle:s,endAngle:r}=e,i=Sa(t,n,a,s),c=Sa(t,n,a,r);return{points:[i,c],cx:t,cy:n,radius:a,startAngle:s,endAngle:r}}var X5,Z5,J5,eU,tU,nU,aU;function gP(){return gP=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)({}).hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},gP.apply(null,arguments)}function Td(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}var Nks=(e,t)=>{var n=Co(t-e),a=Math.min(Math.abs(t-e),359.999);return n*a},Pb=e=>{var{cx:t,cy:n,radius:a,angle:s,sign:r,isExternal:i,cornerRadius:c,cornerIsExternal:d}=e,m=c*(i?1:-1)+a,f=Math.asin(c/m)/h$,p=d?s:s+r*f,y=Sa(t,n,m,p),v=Sa(t,n,a,p),$=d?s-r*f:s,x=Sa(t,n,m*Math.cos(f*h$),$);return{center:y,circleTangency:v,lineTangency:x,theta:f}},GW=e=>{var{cx:t,cy:n,innerRadius:a,outerRadius:s,startAngle:r,endAngle:i}=e,c=Nks(r,i),d=r+c,m=Sa(t,n,s,r),f=Sa(t,n,s,d),p=An(X5||(X5=Td(["M ",",",`
937    A `,",",`,0,
938    `,",",`,
939    `,",",`
940  `])),m.x,m.y,s,s,+(Math.abs(c)>180),+(r>d),f.x,f.y);if(a>
9400){var y=Sa(t,n,a,r),v=Sa(t,n,a,d);p+=An(Z5||(Z5=Td(["L ",",",`
941            A `,",",`,0,
942            `,",",`,
943            `,","," Z"])),v.x,v.y,a,a,+(Math.abs(c)>180),+(r<=d),y.x,y.y)}else p+=An(J5||(J5=Td(["L ",","," Z"])),t,n);return p},Dks=e=>{var{cx:t,cy:n,innerRadius:a,outerRadius:s,cornerRadius:r,forceCornerRadius:i,cornerIsExternal:c,startAngle:d,endAngle:m}=e,f=Co(m-d),{circleTangency:p,lineTangency:y,theta:v}=Pb({cx:t,cy:n,radius:s,angle:d,sign:f,cornerRadius:r,cornerIsExternal:c}),{circleTangency:$,lineTangency:x,theta:w}=Pb({cx:t,cy:n,radius:s,angle:m,sign:-f,cornerRadius:r,cornerIsExternal:c}),S=c?Math.abs(d-m):Math.abs(d-m)-v-w;if(S<0)return i?An(eU||(eU=Td(["M ",",",`
944        a`,",",",0,0,1,",`,0
945        a`,",",",0,0,1,",`,0
946      `])),y.x,y.y,r,r,r*2,r,r,-r*2):GW({cx:t,cy:n,innerRadius:a,outerRadius:s,startAngle:d,endAngle:m});var k=An(tU||(tU=Td(["M ",",",`
947    A`,",",",0,0,",",",",",`
948    A`,",",",0,",",",",",",",`
949    A`,",",",0,0,",",",",",`
950  `])),y.x,y.y,r,r,+(f<0),p.x,p.y,s,s,+(S>180),+(f<0),$.x,$.y,r,r,+(f<0),x.x,x.y);if(a>0){var{circleTangency:T,lineTangency:R,theta:_}=Pb({cx:t,cy:n,radius:a,angle:d,sign:f,isExternal:!0,cornerRadius:r,cornerIsExternal:c}),{circleTangency:P,lineTangency:j,theta:N}=Pb({cx:t,cy:n,radius:a,angle:m,sign:-f,isExternal:!0,cornerRadius:r,cornerIsExternal:c}),I=c?Math.abs(d-m):Math.abs(d-m)-_-N;if(I<0&&r===0)return"".concat(k,"L").concat(t,",").concat(n,"Z");k+=An(nU||(nU=Td(["L",",",`
951      A`,",",",0,0,",",",",",`
952      A`,",",",0,",",",",",",",`
953      A`,",",",0,0,",",",",","Z"])),j.x,j.y,r,r,+(f<0),P.x,P.y,a,a,+(I>180),+(f>0),T.x,T.y,r,r,+(f<0),R.x,R.y)}else k+=An(aU||(aU=Td(["L",",","Z"])),t,n);return k},Mks={cx:0,cy:0,innerRadius:0,outerRadius:0,startAngle:0,endAngle:0,cornerRadius:0,forceCornerRadius:!1,cornerIsExternal:!1},WW=e=>{var t=Va(e,Mks),{cx:n,cy:a,innerRadius:s,outerRadius:r,cornerRadius:i,forceCornerRadius:c,cornerIsExternal:d,startAngle:m,endAngle:f,className:p}=t;if(r<s||m===f)return null;var y=Lt("recharts-sector",p),v=r-s,$=yr(i,v,0,!0),x;return $>0&&Math.abs(m-f)<360?x=Dks({cx:n,cy:a,innerRadius:s,outerRadius:r,cornerRadius:Math.min($,v/2),forceCornerRadius:c,cornerIsExternal:d,startAngle:m,endAngle:f}):x=GW({cx:n,cy:a,innerRadius:s,outerRadius:r,startAngle:m,endAngle:f}),h.createElement("path",gP({},no(t),{className:y,d:x}))};function Eks(e,t,n){if(e==="horizontal")return[{x:t.x,y:n.top},{x:t.x,y:n.top+n.height}];if(e==="vertical")return[{x:n.left,y:t.y},{x:n.left+n.width,y:t.y}];if(NG(t)){if(e==="centric"){var{cx:a,cy:s,innerRadius:r,outerRadius:i,angle:c}=t,d=Sa(a,s,r,c),m=Sa(a,s,i,c);return[{x:d.x,y:d.y},{x:m.x,y:m.y}]}return KW(t)}}var NA={},DA={},MA={},oU;function Iks(){return oU||(oU=1,(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=VG();function n(a){return t.isSymbol(a)?NaN:Number(a)}e.toNumber=n})(MA)),MA}var sU;function Oks(){return sU||(sU=1,(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=Iks();function n(a){return a?(a=t.toNumber(a),a===1/0||a===-1/0?(a<0?-1:1)*Number.MAX_VALUE:a===a?a:0):a===0?a:0}e.toFinite=n})(DA)),DA}var rU;function Lks(){return rU||(rU=1,(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=KG(),n=Oks();function a(s,r,i){i&&typeof i!="number"&&t.isIterateeCall(s,r,i)&&(r=i=void 0),s=n.toFinite(s),r===void 0?(r=s,s=0):r=n.toFinite(r),i=i===void 0?s<r?1:-1:n.toFinite(i);const c=Math.max(Math.ceil((r-s)/(i||1)),0),d=new Array(c);for(let m=0;m<c;m++)d[m]=s,s+=i;return d}e.range=a})(NA)),NA}var EA,iU;function Uks(){return iU||(iU=1,EA=Lks().range),EA}var Bks=Uks();const YW=il(Bks);var Ar=e=>e.chartData,s2=ce([Ar],e=>{var t=e.chartData!=null?e.chartData.length-1:0;return{chartData:e.chartData,computedData:e.computedData,dataEndIndex:t,dataStartIndex:0}}),$0=(e,t,n,a)=>a?s2(e):Ar(e),QW=(e,t,n)=>n?s2(e):Ar(e),Fks=ce([$0],e=>{var{chartData:t,dataStartIndex:n,dataEndIndex:a}=e;return t!=null?t.slice(n,a+1):[]});ce([s2],e=>{var{chartData:t,dataStartIndex:n,dataEndIndex:a}=e;return t!=null?t.slice(n,a+1):[]});var zks=ce([Ar],e=>{var{chartData:t,dataStartIndex:n,dataEndIndex:a}=e;return t!=null?t.slice(n,a+1):[]});function ni(e){if(Array.isArray(e)&&e.length===2){var[t,n]=e;if(ht(t)&&ht(n))return!0}return!1}
vendor: 14,443 bytes, line 953
953function lU(e,t,n){return n?e:[Math.min(e[0],t[0]),Math.max(e[1],t[1])]}function XW(e,t){if(t&&typeof e!="function"&&Array.isArray(e)&&e.length===2){var[n,a]=e,s,r;if(ht(n))s=n;else if(typeof n=="function")return;if(ht(a))r=a;else if(typeof a=="function")return;var i=[s,r];if(ni(i))return i}}function qks(e,t,n){if(!(!n&&t==null)){if(typeof e=="function"&&t!=null)try{var a=e(t,n);if(ni(a))return lU(a,t,n)}catch{}if(Array.isArray(e)&&e.length===2){var[s,r]=e,i,c;if(s==="auto")t!=null&&(i=Math.min(...t));else if(Fe(s))i=s;else if(typeof s=="function")try{t!=null&&(i=s(t?.[0]))}catch{}else if(typeof s=="string"&&n5.test(s)){var d=n5.exec(s);if(d==null||d[1]==null||t==null)i=void 0;else{var m=+d[1];i=t[0]-m}}else i=t?.[0];if(r==="auto")t!=null&&(c=Math.max(...t));else if(Fe(r))c=r;else if(typeof r=="function")try{t!=null&&(c=r(t?.[1]))}catch{}else if(typeof r=="string"&&a5.test(r)){var f=a5.exec(r);if(f==null||f[1]==null||t==null)c=void 0;else{var p=+f[1];c=t[1]+p}}else c=t?.[1];var y=[i,c];if(ni(y))return t==null?y:lU(y,t,n)}}}var Qp=1e9,Hks={precision:20,rounding:4,toExpNeg:-7,toExpPos:21,LN10:"2.302585092994045684017991454684364207601101488628772976033327900967572609677352480235997205089598298341967784042286"},i2,yn=!0,Os="[DecimalError] ",zd=Os+"Invalid argument: ",r2=Os+"Exponent out of range: ",Xp=Math.floor,kd=Math.pow,Vks=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,Wo,ra=1e7,fn=7,ZW=9007199254740991,y$=Xp(ZW/fn),He={};He.absoluteValue=He.abs=function(){var e=new this.constructor(this);return e.s&&(e.s=1),e};He.comparedTo=He.cmp=function(e){var t,n,a,s,r=this;if(e=new r.constructor(e),r.s!==e.s)return r.s||-e.s;if(r.e!==e.e)return r.e>e.e^r.s<0?1:-1;for(a=r.d.length,s=e.d.length,t=0,n=a<s?a:s;t<n;++t)if(r.d[t]!==e.d[t])return r.d[t]>e.d[t]^r.s<0?1:-1;return a===s?0:a>s^r.s<0?1:-1};He.decimalPlaces=He.dp=function(){var e=this,t=e.d.length-1,n=(t-e.e)*fn;if(t=e.d[t],t)for(;t%10==0;t/=10)n--;return n<0?0:n};He.dividedBy=He.div=function(e){return Wi(this,new this.constructor(e))};He.dividedToIntegerBy=He.idiv=function(e){var t=this,n=t.constructor;return tn(Wi(t,new n(e),0,1),n.precision)};He.equals=He.eq=function(e){return!this.cmp(e)};He.exponent=function(){return Hn(this)};He.greaterThan=He.gt=function(e){return this.cmp(e)>0};He.greaterThanOrEqualTo=He.gte=function(e){return this.cmp(e)>=0};He.isInteger=He.isint=function(){return this.e>this.d.length-2};He.isNegative=He.isneg=function(){return this.s<0};He.isPositive=He.ispos=function(){return this.s>0};He.isZero=function(){return this.s===0};He.lessThan=He.lt=function(e){return this.cmp(e)<0};He.lessThanOrEqualTo=He.lte=function(e){return this.cmp(e)<1};He.logarithm=He.log=function(e){var t,n=this,a=n.constructor,s=a.precision,r=s+5;if(e===void 0)e=new a(10);else if(e=new a(e),e.s<1||e.eq(Wo))throw Error(Os+"NaN");if(n.s<1)throw Error(Os+(n.s?"NaN":"-Infinity"));return n.eq(Wo)?new a(0):(yn=!1,t=Wi(Ch(n,r),Ch(e,r),r),yn=!0,tn(t,s))};He.minus=He.sub=function(e){var t=this;return e=new t.constructor(e),t.s==e.s?tY(t,e):JW(t,(e.s=-e.s,e))};He.modulo=He.mod=function(e){var t,n=this,a=n.constructor,s=a.precision;if(e=new a(e),!e.s)throw Error(Os+"NaN");return n.s?(yn=!1,t=Wi(n,e,0,1).times(e),yn=!0,n.minus(t)):tn(new a(n),s)};He.naturalExponential=He.exp=function(){return eY(this)};He.naturalLogarithm=He.ln=function(){return Ch(this)};He.negated=He.neg=function(){var e=new this.constructor(this);return e.s=-e.s||0,e};He.plus=He.add=function(e){var t=this;return e=new t.constructor(e),t.s==e.s?JW(t,e):tY(t,(e.s=-e.s,e))};He.precision=He.sd=function(e){var t,n,a,s=this;if(e!==void 0&&e!==!!e&&e!==1&&e!==0)throw Error(zd+e);if(t=Hn(s)+1,a=s.d.length-1,n=a*fn+1,a=s.d[a],a){for(;a%10==0;a/=10)n--;for(a=s.d[0];a>=10;a/=10)n++}return e&&t>n?t:n};He.squareRoot=He.sqrt=function(){var e,t,n,a,s,r,i,c=this,d=c.constructor;if(c.s<1){if(!c.s)return new d(0);throw Error(Os+"NaN")}for(e=Hn(c),yn=!1,s=Math.sqrt(+c),s==0||s==1/0?(t=Xr(c.d),(t.length+e)%2==0&&(t+="0"),s=Math.sqrt(t),e=Xp((e+1)/2)-(e<0||e%2),s==1/0?t="5e"+e:(t=s.toExponential(),t=t.slice(0,t.indexOf("e")+1)+e),a=new d(t)):a=new d(s.toString()),n=d.precision,s=i=n+3;;)if(r=a,a=r.plus(Wi(c,r,i+2)).times(.5),Xr(r.d).slice(0,i)===(t=Xr(a.d)).slice(0,i)){if(t=t.slice(i-3,i+1),s==i&&t=="4999"){if(tn(r,n+1,0),r.times(r).eq(c)){a=r;break}}else if(t!="9999")break;i+=4}return yn=!0,tn(a,n)};He.times=He.mul=function(e){var t,n,a,s,r,i,c,d,m,f=this,p=f.constructor,y=f.d,v=(e=new p(e)).d;if(!f.s||!e.s)return new p(0);for(e.s*=f.s,n=f.e+e.e,d=y.length,m=v.length,d<m&&(r=y,y=v,v=r,i=d,d=m,m=i),r=[],i=d+m,a=i;a--;)r.push(0);for(a=m;--a>=0;){for(t=0,s=d+a;s>a;)c=r[s]+v[a]*y[s-a-1]+t,r[s--]=c%ra|0,t=c/ra|0;r[s]=(r[s]+t)%ra|0}for(;!r[--i];)r.pop();return t?++n:r.shift(),e.d=r,e.e=n,yn?tn(e,p.precision):e};He.toDecimalPlaces=He.todp=function(e,t){var n=this,a=n.constructor;return n=new a(n),e===void 0?n:(ri(e,0,Qp),t===void 0?t=a.rounding:ri(t,0,8),tn(n,e+Hn(n)+1,t))};He.toExponential=function(e,t){var n,a=this,s=a.constructor;return e===void 0?n=su(a,!0):(ri(e,0,Qp),t===void 0?t=s.rounding:ri(t,0,8),a=tn(new s(a),e+1,t),n=su(a,!0,e+1)),n};He.toFixed=function(e,t){var n,a,s=this,r=s.constructor;return e===void 0?su(s):(ri(e,0,Qp),t===void 0?t=r.rounding:ri(t,0,8),a=tn(new r(s),e+Hn(s)+1,t),n=su(a.abs(),!1,e+Hn(a)+1),s.isneg()&&!s.isZero()?"-"+n:n)};He.toInteger=He.toint=function(){var e=this,t=e.constructor;return tn(new t(e),Hn(e)+1,t.rounding)};He.toNumber=function(){return+this};He.toPower=He.pow=function(e){var t,n,a,s,r,i,c=this,d=c.constructor,m=12,f=+(e=new d(e));if(!e.s)return new d(Wo);if(c=new d(c),!c.s){if(e.s<1)throw Error(Os+"Infinity");return c}if(c.eq(Wo))return c;if(a=d.precision,e.eq(Wo))return tn(c,a);if(t=e.e,n=e.d.length-1,i=t>=n,r=c.s,i){if((n=f<0?-f:f)<=ZW){for(s=new d(Wo),t=Math.ceil(a/fn+4),yn=!1;n%2&&(s=s.times(c),dU(s.d,t)),n=Xp(n/2),n!==0;)c=c.times(c),dU(c.d,t);return yn=!0,e.s<0?new d(Wo).div(s):tn(s,a)}}else if(r<0)throw Error(Os+"NaN");return r=r<0&&e.d[Math.max(t,n)]&1?-1:1,c.s=1,yn=!1,s=e.times(Ch(c,a+m)),yn=!0,s=eY(s),s.s=r,s};He.toPrecision=function(e,t){var n,a,s=this,r=s.constructor;return e===void 0?(n=Hn(s),a=su(s,n<=r.toExpNeg||n>=r.toExpPos)):(ri(e,1,Qp),t===void 0?t=r.rounding:ri(t,0,8),s=tn(new r(s),e,t),n=Hn(s),a=su(s,e<=n||n<=r.toExpNeg,e)),a};He.toSignificantDigits=He.tosd=function(e,t){var n=this,a=n.constructor;return e===void 0?(e=a.precision,t=a.rounding):(ri(e,1,Qp),t===void 0?t=a.rounding:ri(t,0,8)),tn(new a(n),e,t)};He.toString=He.valueOf=He.val=He.toJSON=He[Symbol.for("nodejs.util.inspect.custom")]=function(){var e=this,t=Hn(e),n=e.constructor;return su(e,t<=n.toExpNeg||t>=n.toExpPos)};function JW(e,t){var n,a,s,r,i,c,d,m,f=e.constructor,p=f.precision;if(!e.s||!t.s)return t.s||(t=new f(e)),yn?tn(t,p):t;if(d=e.d,m=t.d,i=e.e,s=t.e,d=d.slice(),r=i-s,r){for(r<0?(a=d,r=-r,c=m.length):(a=m,s=i,c=d.length),i=Math.ceil(p/fn),c=i>c?i+1:c+1,r>c&&(r=c,a.length=1),a.reverse();r--;)a.push(0);a.reverse()}for(c=d.length,r=m.length,c-r<0&&(r=c,a=m,m=d,d=a),n=0;r;)n=(d[--r]=d[r]+m[r]+n)/ra|0,d[r]%=ra;for(n&&(d.unshift(n),++s),c=d.length;d[--c]==0;)d.pop();return t.d=d,t.e=s,yn?tn(t,p):t}function ri(e,t,n){if(e!==~~e||e<t||e>n)throw Error(zd+e)}function Xr(e){var t,n,a,s=e.length-1,r="",i=e[0];if(s>0){for(r+=i,t=1;t<s;t++)a=e[t]+"",n=fn-a.length,n&&(r+=Zl(n)),r+=a;i=e[t],a=i+"",n=fn-a.length,n&&(r+=Zl(n))}else if(i===0)return"0";for(;i%10===0;)i/=10;return r+i}var Wi=(function(){function e(a,s){var r,i=0,c=a.length;for(a=a.slice();c--;)r=a[c]*s+i,a[c]=r%ra|0,i=r/ra|0;return i&&a.unshift(i),a}function t(a,s,r,i){var c,d;if(r!=i)d=r>i?1:-1;else for(c=d=0;c<r;c++)if(a[c]!=s[c]){d=a[c]>s[c]?1:-1;break}return d}function n(a,s,r){for(var i=0;r--;)a[r]-=i,i=a[r]<s[r]?1:0,a[r]=i*ra+a[r]-s[r];for(;!a[0]&&a.length>1;)a.shift()}return function(a,s,r,i){var c,d,m,f,p,y,v,$,x,w,S,k,T,R,_,P,j,N,I=a.constructor,z=a.s==s.s?1:-1,E=a.d,L=s.d;if(!a.s)return new I(a);if(!s.s)throw Error(Os+"Division by zero");for(d=a.e-s.e,j=L.length,_=E.length,v=new I(z),$=v.d=[],m=0;L[m]==(E[m]||0);)++m;if(L[m]>(E[m]||0)&&--d,r==null?k=r=I.precision:i?k=r+(Hn(a)-Hn(s))+1:k=r,k<0)return new I(0);if(k=k/fn+2|0,m=0,j==1)for(f=0,L=L[0],k++;(m<_||f)&&k--;m++)T=f*ra+(E[m]||0),$[m]=T/L|0,f=T%L|0;else{for(f=ra/(L[0]+1)|0,f>1&&(L=e(L,f),E=e(E,f),j=L.length,_=E.length),R=j,x=E.slice(0,j),w=x.length;w<j;)x[w++]=0;N=L.slice(),N.unshift(0),P=L[0],L[1]>=ra/2&&++P;do f=0,c=t(L,x,j,w),c<0?(S=x[0],j!=w&&(S=S*ra+(x[1]||0)),f=S/P|0,f>1?(f>=ra&&(f=ra-1),p=e(L,f),y=p.length,w=x.length,c=t(p,x,y,w),c==1&&(f--,n(p,j<y?N:L,y))):(f==0&&(c=f=1),p=L.slice()),y=p.length,y<w&&p.unshift(0),n(x,p,w),c==-1&&(w=x.length,c=t(L,x,j,w),c<1&&(f++,n(x,j<w?N:L,w))),w=x.length):c===0&&(f++,x=[0]),$[m++]=f,c&&x[0]?x[w++]=E[R]||0:(x=[E[R]],w=1);while((R++<_||x[0]!==void 0)&&k--)}return $[0]||$.shift(),v.e=d,tn(v,i?r+Hn(v)+1:r)}})();function eY(e,t){var n,a,s,r,i,c,d=0,m=0,f=e.constructor,p=f.precision;if(Hn(e)>16)throw Error(r2+Hn(e));if(!e.s)return new f(Wo);for(yn=!1,c=p,i=new f(.03125);e.abs().gte(.1);)e=e.times(i),m+=5;for(a=Math.log(kd(2,m))/Math.LN10*2+5|0,c+=a,n=s=r=new f(Wo),f.precision=c;;){if(s=tn(s.times(e),c),n=n.times(++d),i=r.plus(Wi(s,n,c)),Xr(i.d).slice(0,c)===Xr(r.d).slice(0,c)){for(;m--;)r=tn(r.times(r),c);return f.precision=p,t==null?(yn=!0,tn(r,p)):r}r=i}}function Hn(e){for(var t=e.e*fn,n=e.d[0];n>=10;n/=10)t++;return t}function IA(e,t,n){if(t>e.LN10.sd())throw yn=!0,n&&(e.precision=n),Error(Os+"LN10 precision limit exceeded");return tn(new e(e.LN10),t)}function Zl(e){for(var t="";e--;)t+="0";return t}function Ch(e,t){var n,a,s,r,i,c,d,m,f,p=1,y=10,v=e,$=v.d,x=v.constructor,w=x.precision;if(v.s<1)throw Error(Os+(v.s?"NaN":"-Infinity"));if(v.eq(Wo))return new x(0);if(t==null?(yn=!1,m=w):m=t,v.eq(10))return t==null&&(yn=!0),IA(x,m);if(m+=y,x.precision=m,n=Xr($),a=n.charAt(0),r=Hn(v),Math.abs(r)<15e14){for(;a<7&&a!=1||a==1&&n.charAt(1)>3;)v=v.times(e),n=Xr(v.d),a=n.charAt(0),p++;r=Hn(v),a>1?(v=new x("0."+n),r++):v=new x(a+"."+n.slice(1))}else return d=IA(x,m+2,w).times(r+""),v=Ch(new x(a+"."+n.slice(1)),m-y).plus(d),x.precision=w,t==null?(yn=!0,tn(v,w)):v;for(c=i=v=Wi(v.minus(Wo),v.plus(Wo),m),f=tn(v.times(v),m),s=3;;){if(i=tn(i.times(f),m),d=c.plus(Wi(i,new x(s),m)),Xr(d.d).slice(0,m)===Xr(c.d).slice(0,m))return c=c.times(2),r!==0&&(c=c.plus(IA(x,m+2,w).times(r+""))),c=Wi(c,new x(p),m),x.precision=w,t==null?(yn=!0,tn(c,w)):c;c=d,s+=2}}function cU(e,t){var n,a,s;for((n=t.indexOf("."))>-1&&(t=t.replace(".","")),(a=t.search(/e/i))>0?(n<0&&(n=a),n+=+t.slice(a+1),t=t.substring(0,a)):n<0&&(n=t.length),a=0;t.charCodeAt(a)===48;)++a;for(s=t.length;t.charCodeAt(s-1)===48;)--s;if(t=t.slice(a,s),t){if(s-=a,n=n-a-1,e.e=Xp(n/fn),e.d=[],a=(n+1)%fn,n<0&&(a+=fn),a<s){for(a&&e.d.push(+t.slice(0,a)),s-=fn;a<s;)e.d.push(+t.slice(a,a+=fn));t=t.slice(a),a=fn-t.length}else a-=s;for(;a--;)t+="0";if(e.d.push(+t),yn&&(e.e>y$||e.e<-y$))throw Error(r2+n)}else e.s=0,e.e=0,e.d=[0];return e}function tn(e,t,n){var a,s,r,i,c,d,m,f,p=e.d;for(i=1,r=p[0];r>=10;r/=10)i++;if(a=t-i,a<0)a+=fn,s=t,m=p[f=0];else{if(f=Math.ceil((a+1)/fn),r=p.length,f>=r)return e;for(m=r=p[f],i=1;r>=10;r/=10)i++;a%=fn,s=a-fn+i}if(n!==void 0&&(r=kd(10,i-s-1),c=m/r%10|0,d=t<0||p[f+1]!==void 0||m%r,d=n<4?(c||d)&&(n==0||n==(e.s<0?3:2)):c>5||c==5&&(n==4||d||n==6&&(a>0?s>0?m/kd(10,i-s):0:p[f-1])%10&1||n==(e.s<0?8:7))),t<1||!p[0])return d?(r=Hn(e),p.length=1,t=t-r-1,p[0]=kd(10,(fn-t%fn)%fn),e.e=Xp(-t/fn)||0):(p.length=1,p[0]=e.e=e.s=0),e;if(a==0?(p.length=f,r=1,f--):(p.length=f+1,r=kd(10,fn-a),p[f]=s>0?(m/kd(10,i-s)%kd(10,s)|0)*r:0),d)for(;;)if(f==0){(p[0]+=r)==ra&&(p[0]=1,++e.e);break}else{if(p[f]+=r,p[f]!=ra)break;p[f--]=0,r=1}for(a=p.length;p[--a]===0;)p.pop();if(yn&&(e.e>y$||e.e<-y$))throw Error(r2+Hn(e));return e}function tY(e,t){var n,a,s,r,i,c,d,m,f,p,y=e.constructor,v=y.precision;if(!e.s||!t.s)return t.s?t.s=-t.s:t=new y(e),yn?tn(t,v):t;if(d=e.d,p=t.d,a=t.e,m=e.e,d=d.slice(),i=m-a,i){for(f=i<0,f?(n=d,i=-i,c=p.length):(n=p,a=m,c=d.length),s=Math.max(Math.ceil(v/fn),c)+2,i>s&&(i=s,n.length=1),n.reverse(),s=i;s--;)n.push(0);n.reverse()}else{for(s=d.length,c=p.length,f=s<c,f&&(c=s),s=0;s<c;s++)if(d[s]!=p[s]){f=d[s]<p[s];break}i=0}for(f&&(n=d,d=p,p=n,t.s=-t.s),c=d.length,s=p.length-c;s>0;--s)d[c++]=0;for(s=p.length;s>i;){if(d[--s]<p[s]){for(r=s;r&&d[--r]===0;)d[r]=ra-1;--d[r],d[s]+=ra}d[s]-=p[s]}for(;d[--c]===0;)d.pop();for(;d[0]===0;d.shift())--a;return d[0]?(t.d=d,t.e=a,yn?tn(t,v):t):new y(0)}function su(e,t,n){var a,s=Hn(e),r=Xr(e.d),i=r.length;return t?(n&&(a=n-i)>0?r=r.charAt(0)+"."+r.slice(1)+Zl(a):i>1&&(r=r.charAt(0)+"."+r.slice(1)),r=r+(s<0?"e":"e+")+s):s<0?(r="0."+Zl(-s-1)+r,n&&(a=n-i)>0&&(r+=Zl(a))):s>=i?(r+=Zl(s+1-i),n&&(a=n-s-1)>0&&(r=r+"."+Zl(a))):((a=s+1)<i&&(r=r.slice(0,a)+"."+r.slice(a)),n&&(a=n-i)>0&&(s+1===i&&(r+="."),r+=Zl(a))),e.s<0?"-"+r:r}function dU(e,t){if(e.length>t)return e.length=t,!0}function nY(e){var t,n,a;function s(r){var i=this;if(!(i instanceof s))return new s(r);if(i.constructor=s,r instanceof s){i.s=r.s,i.e=r.e,i.d=(r=r.d)?r.slice():r;return}if(typeof r=="number"){if(r*0!==0)throw Error(zd+r);if(r>0)i.s=1;else if(r<0)r=-r,i.s=-1;else{i.s=0,i.e=0,i.d=[0];return}if(r===~~r&&r<1e7){i.e=0,i.d=[r];return}return cU(i,r.toString())}else if(typeof r!="string")throw Error(zd+r);if(r.charCodeAt(0)===45?(r=r.slice(1),i.s=-1):i.s=1,Vks.test(r))cU(i,r);else throw Error(zd+r)}if(s.prototype=He,s.ROUND_UP=0,s.ROUND_DOWN=1,s.ROUND_CEIL=2,s.ROUND_FLOOR=3,s.ROUND_HALF_UP=4,s.ROUND_HALF_DOWN=5,s.ROUND_HALF_EVEN=6,s.ROUND_HALF_CEIL=7,s.ROUND_HALF_FLOOR=8,s.clone=nY,s.config=s.set=Kks,e===void 0&&(e={}),e)for(a=["precision","rounding","toExpNeg","toExpPos","LN10"],t=0;t<a.length;)e.hasOwnProperty(n=a[t++])||(e[n]=this[n]);return s.config(e),s}function Kks(e){if(!e||typeof e!="object")throw Error(Os+"Object expected");var t,n,a,s=["precision",1,Qp,"rounding",0,8,"toExpNeg",-1/0,0,"toExpPos",0,1/0];for(t=0;t<s.length;t+=3)if((a=e[n=s[t]])!==void 0)if(Xp(a)===a&&a>=s[t+1]&&a<=s[t+2])this[n]=a;else throw Error(zd+n+": "+a);if((a=e[n="LN10"])!==void 0)if(a==Math.LN10)this[n]=new this(a);else throw Error(zd+n+": "+a);return this}var i2=nY(Hks);Wo=new i2(1);const At=i2;function aY(e){var t;return e===0?t=1:t=Math.floor(new At(e).abs().log(10).toNumber())+1,t}function oY(e,t,n){for(var a=new At(e),s=0,r=[];a.lt(t)&&s<1e5;)r.push(a.toNumber()),a=a.add(n),s++;return r}var sY=e=>{var[t,n]=e,[a,s]=[t,n];return t>n&&([a,s]=[n,t]),[a,s]},l2=(e,t,n)=>{if(e.lte(0))return new At(0);
953var a=aY(e.toNumber()),s=new At(10).pow(a),r=e.div(s),i=a!==1?.05:.1,c=new At(Math.ceil(r.div(i).toNumber())).add(n).mul(i),d=c.mul(s);return t?new At(d.toNumber()):new At(Math.ceil(d.toNumber()))},rY=(e,t,n)=>{var a;if(e.lte(0))return new At(0);var s=[1,2,2.5,5],r=e.toNumber(),i=Math.floor(new At(r).abs().log(10).toNumber()),c=new At(10).pow(i),d=e.div(c).toNumber(),m=s.findIndex(v=>v>=d-1e-10);if(m===-1&&(c=c.mul(10),m=0),m+=n,m>=s.length){var f=Math.floor(m/s.length);m%=s.length,c=c.mul(new At(10).pow(f))}var p=(a=s[m])!==null&&a!==void 0?a:1,y=new At(p).mul(c);return t?y:new At(Math.ceil(y.toNumber()))},Gks=(e,t,n)=>{var a=new At(1),s=new At(e);if(!s.isint()&&n){var r=Math.abs(e);r<1?(a=new At(10).pow(aY(e)-1),s=new At(Math.floor(s.div(a).toNumber())).mul(a)):r>1&&(s=new At(Math.floor(e)))}else e===0?s=new At(Math.floor((t-1)/2)):n||(s=new At(Math.floor(e)));for(var i=Math.floor((t-1)/2),c=[],d=0;d<t;d++)c.push(s.add(new At(d-i).mul(a)).toNumber());return c},iY=function(t,n,a,s){var r=arguments.length>4&&arguments[4]!==void 0?arguments[4]:0,i=arguments.length>5&&arguments[5]!==void 0?arguments[5]:l2;if(!Number.isFinite((n-t)/(a-1)))return{step:new At(0),tickMin:new At(0),tickMax:new At(0)};var c=i(new At(n).sub(t).div(a-1),s,r),d;t<=0&&n>=0?d=new At(0):(d=new At(t).add(n).div(2),d=d.sub(new At(d).mod(c)));var m=Math.ceil(d.sub(t).div(c).toNumber()),f=Math.ceil(new At(n).sub(d).div(c).toNumber()),p=m+f+1;return p>a?iY(t,n,a,s,r+1,i):(p<a&&(f=n>0?f+(a-p):f,m=n>0?m:m+(a-p)),{step:c,tickMin:d.sub(new At(m).mul(c)),tickMax:d.add(new At(f).mul(c))})},uU=function(t){var[n,a]=t,s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:6,r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:"auto",c=Math.max(s,2),[d,m]=sY([n,a]);if(d===-1/0||m===1/0){var f=m===1/0?[d,...Array(s-1).fill(1/0)]:[...Array(s-1).fill(-1/0),m];return n>a?f.reverse():f}if(d===m)return Gks(d,s,r);var p=i==="snap125"?rY:l2,{step:y,tickMin:v,tickMax:$}=iY(d,m,c,r,0,p),x=oY(v,$.add(new At(.1).mul(y)),y);return n>a?x.reverse():x},mU=function(t,n){var[a,s]=t,r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:"auto",[c,d]=sY([a,s]);if(c===-1/0||d===1/0)return[a,s];if(c===d)return[c];var m=i==="snap125"?rY:l2,f=Math.max(n,2),p=m(new At(d).sub(c).div(f-1),r,0),y=[...oY(new At(c),new At(d),p),d];return r===!1&&(y=y.map(v=>Math.round(v))),a>s?y.reverse():y},lY=e=>e.rootProps.maxBarSize,Wks=e=>e.rootProps.barGap,cY=e=>e.rootProps.barCategoryGap,Yks=e=>e.rootProps.barSize,w0=e=>e.rootProps.stackOffset,dY=e=>e.rootProps.reverseStackOrder,c2=e=>e.options.chartName,d2=e=>e.rootProps.syncId,uY=e=>e.rootProps.syncMethod,u2=e=>e.options.eventEmitter,Qks=e=>e.rootProps.baseValue,la={grid:-100,barBackground:-50,area:100,cursorRectangle:200,bar:300,line:400,axis:500,scatter:600,activeBar:1e3,cursorLine:1100,activeDot:1200,label:2e3},gd={allowDecimals:!1,allowDataOverflow:!1,angleAxisId:0,reversed:!1,scale:"auto",tick:!0,type:"auto"},Or={allowDataOverflow:!1,allowDecimals:!1,allowDuplicatedCategory:!0,includeHidden:!1,radiusAxisId:0,reversed:!1,scale:"auto",tick:!0,tickCount:5,type:"auto"},k0=(e,t)=>{if(!(!e||!t))return e!=null&&e.reversed?[t[1],t[0]]:t};function C0(e,t,n){if(n!=="auto")return n;if(e!=null)return pi(e,t)?"category":"number"}function pU(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,a)}return n}function v$(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?pU(Object(n),!0).forEach(function(a){Xks(e,a,n[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):pU(Object(n)).forEach(function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(n,a))})}return e}function Xks(e,t,n){return(t=Zks(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Zks(e){var t=Jks(e,"string");return typeof t=="symbol"?t:t+""}function Jks(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var a=n.call(e,t);if(typeof a!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var fU={allowDataOverflow:gd.allowDataOverflow,allowDecimals:gd.allowDecimals,allowDuplicatedCategory:!1,dataKey:void 0,domain:void 0,id:gd.angleAxisId,includeHidden:!1,name:void 0,reversed:gd.reversed,scale:gd.scale,tick:gd.tick,tickCount:void 0,ticks:void 0,type:gd.type,unit:void 0,niceTicks:"auto"},gU={allowDataOverflow:Or.allowDataOverflow,allowDecimals:Or.allowDecimals,allowDuplicatedCategory:Or.allowDuplicatedCategory,dataKey:void 0,domain:void 0,id:Or.radiusAxisId,includeHidden:Or.includeHidden,name:void 0,reversed:Or.reversed,scale:Or.scale,tick:Or.tick,tickCount:Or.tickCount,ticks:void 0,type:Or.type,unit:void 0,niceTicks:"auto"},eCs=(e,t)=>{if(t!=null)return e.polarAxis.angleAxis[t]},m2=ce([eCs,jW],(e,t)=>{var n;if(e!=null)return e;var a=(n=C0(t,"angleAxis",fU.type))!==null&&n!==void 0?n:"category";return v$(v$({},fU),{},{type:a})}),tCs=(e,t)=>e.polarAxis.radiusAxis[t],p2=ce([tCs,jW],(e,t)=>{var n;if(e!=null)return e;var a=(n=C0(t,"radiusAxis",gU.type))!==null&&n!==void 0?n:"category";return v$(v$({},gU),{},{type:a})}),S0=e=>e.polarOptions,f2=ce([ml,pl,ma],Aks),mY=ce([S0,f2],(e,t)=>{if(e!=null)return yr(e.innerRadius,t,0)}),pY=ce([S0,f2],(e,t)=>{if(e!=null)return yr(e.outerRadius,t,t*.8)}),nCs=e=>{if(e==null)return[0,0];var{startAngle:t,endAngle:n}=e;return[t,n]},fY=ce([S0],nCs);ce([m2,fY],k0);var gY=ce([f2,mY,pY],(e,t,n)=>{if(!(e==null||t==null||n==null))return[t,n]});ce([p2,gY],k0);var hY=ce([Ut,S0,mY,pY,ml,pl],(e,t,n,a,s,r)=>{if(!(e!=="centric"&&e!=="radial"||t==null||n==null||a==null)){var{cx:i,cy:c,startAngle:d,endAngle:m}=t;return{cx:yr(i,s,s/2),cy:yr(c,r,r/2),innerRadius:n,outerRadius:a,startAngle:d,endAngle:m,clockWise:!1}}}),pa=(e,t)=>t,A0=(e,t,n)=>n;function T0(e){return e?.id}function yY(e,t,n){var{chartData:a=[]}=t,{allowDuplicatedCategory:s,dataKey:r}=n,i=new Map;return e.forEach(c=>{var d,m=(d=c.data)!==null&&d!==void 0?d:a;if(!(m==null||m.length===0)){var f=T0(c);m.forEach((p,y)=>{var v=r==null||s?y:String(jn(p,r,null)),$=jn(p,c.dataKey,0),x;i.has(v)?x=i.get(v):x={},Object.assign(x,{[f]:$}),i.set(v,x)})}}),Array.from(i.values())}function R0(e){return"stackId"in e&&e.stackId!=null&&e.dataKey!=null}var P0=(e,t)=>e===t?!0:e==null||t==null?!1:e[0]===t[0]&&e[1]===t[1];function _0(e,t){return Array.isArray(e)&&Array.isArray(t)&&e.length===0&&t.length===0?!0:e===t}function aCs(e,t){if(e.length===t.length){for(var n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}return!1}var fa=e=>{var t=Ut(e);return t==="horizontal"?"xAxis":t==="vertical"?"yAxis":t==="centric"?"angleAxis":"radiusAxis"},Zp=e=>e.tooltip.settings.axisId;function g2(e){if(e!=null){var t=e.ticks,n=e.bandwidth,a=e.range(),s=[Math.min(...a),Math.max(...a)];return{domain:()=>e.domain(),range:(function(r){function i(){return r.apply(this,arguments)}return i.toString=function(){return r.toString()},i})(()=>s),rangeMin:()=>s[0],rangeMax:()=>s[1],isInRange(r){var i=s[0],c=s[1];return i<=c?r>=i&&r<=c:r>=c&&r<=i},bandwidth:n?()=>n.call(e):void 0,ticks:t?r=>t.call(e,r):void 0,map:(r,i)=>{var c=e(r);
953if(c!=null){if(e.bandwidth&&i!==null&&i!==void 0&&i.position){var d=e.bandwidth();switch(i.position){case"middle":c+=d/2;break;case"end":c+=d;break}}return c}}}}}var oCs=(e,t)=>{if(t!=null)switch(e){case"linear":{if(!ni(t)){for(var n,a,s=0;s<t.length;s++){var r=t[s];ht(r)&&((n===void 0||r<n)&&(n=r),(a===void 0||r>a)&&(a=r))}return n!==void 0&&a!==void 0?[n,a]:void 0}return t}default:return t}};function xc(e,t){return e==null||t==null?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function sCs(e,t){return e==null||t==null?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function h2(e){let t,n,a;e.length!==2?(t=xc,n=(c,d)=>xc(e(c),d),a=(c,d)=>e(c)-d):(t=e===xc||e===sCs?e:rCs,n=e,a=e);function s(c,d,m=0,f=c.length){if(m<f){if(t(d,d)!==0)return f;do{const p=m+f>>>1;n(c[p],d)<0?m=p+1:f=p}while(m<f)}return m}function r(c,d,m=0,f=c.length){if(m<f){if(t(d,d)!==0)return f;do{const p=m+f>>>1;n(c[p],d)<=0?m=p+1:f=p}while(m<f)}return m}function i(c,d,m=0,f=c.length){const p=s(c,d,m,f-1);return p>m&&a(c[p-1],d)>-a(c[p],d)?p-1:p}return{left:s,center:i,right:r}}function rCs(){return 0}function vY(e){return e===null?NaN:+e}function*iCs(e,t){for(let n of e)n!=null&&(n=+n)>=n&&(yield n)}const lCs=h2(xc),ky=lCs.right;h2(vY).center;class hU extends Map{constructor(t,n=uCs){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:n}}),t!=null)for(const[a,s]of t)this.set(a,s)}get(t){return super.get(yU(this,t))}has(t){return super.has(yU(this,t))}set(t,n){return super.set(cCs(this,t),n)}delete(t){return super.delete(dCs(this,t))}}function yU({_intern:e,_key:t},n){const a=t(n);return e.has(a)?e.get(a):n}function cCs({_intern:e,_key:t},n){const a=t(n);return e.has(a)?e.get(a):(e.set(a,n),n)}function dCs({_intern:e,_key:t},n){const a=t(n);return e.has(a)&&(n=e.get(a),e.delete(a)),n}function uCs(e){return e!==null&&typeof e=="object"?e.valueOf():e}function mCs(e=xc){if(e===xc)return bY;if(typeof e!="function")throw new TypeError("compare is not a function");return(t,n)=>{const a=e(t,n);return a||a===0?a:(e(n,n)===0)-(e(t,t)===0)}}function bY(e,t){return(e==null||!(e>=e))-(t==null||!(t>=t))||(e<t?-1:e>t?1:0)}const pCs=Math.sqrt(50),fCs=Math.sqrt(10),gCs=Math.sqrt(2);function b$(e,t,n){const a=(t-e)/Math.max(0,n),s=Math.floor(Math.log10(a)),r=a/Math.pow(10,s),i=r>=pCs?10:r>=fCs?5:r>=gCs?2:1;let c,d,m;return s<0?(m=Math.pow(10,-s)/i,c=Math.round(e*m),d=Math.round(t*m),c/m<e&&++c,d/m>t&&--d,m=-m):(m=Math.pow(10,s)*i,c=Math.round(e/m),d=Math.round(t/m),c*m<e&&++c,d*m>t&&--d),d<c&&.5<=n&&n<2?b$(e,t,n*2):[c,d,m]}function hP(e,t,n){if(t=+t,e=+e,n=+n,!(n>0))return[];if(e===t)return[e];const a=t<e,[s,r,i]=a?b$(t,e,n):b$(e,t,n);if(!(r>=s))return[];const c=r-s+1,d=new Array(c);if(a)if(i<0)for(let m=0;m<c;++m)d[m]=(r-m)/-i;else for(let m=0;m<c;++m)d[m]=(r-m)*i;else if(i<0)for(let m=0;m<c;++m)d[m]=(s+m)/-i;else for(let m=0;m<c;++m)d[m]=(s+m)*i;return d}function yP(e,t,n){return t=+t,e=+e,n=+n,b$(e,t,n)[2]}function vP(e,t,n){t=+t,e=+e,n=+n;const a=t<e,s=a?yP(t,e,n):yP(e,t,n);return(a?-1:1)*(s<0?1/-s:s)}function vU(e,t){let n;if(t===void 0)for(const a of e)a!=null&&(n<a||n===void 0&&a>=a)&&(n=a);else{let a=-1;for(let s of e)(s=t(s,++a,e))!=null&&(n<s||n===void 0&&s>=s)&&(n=s)}return n}function bU(e,t){let n;if(t===void 0)for(const a of e)a!=null&&(n>a||n===void 0&&a>=a)&&(n=a);else{let a=-1;for(let s of e)(s=t(s,++a,e))!=null&&(n>s||n===void 0&&s>=s)&&(n=s)}return n}function xY(e,t,n=0,a=1/0,s){if(t=Math.floor(t),n=Math.floor(Math.max(0,n)),a=Math.floor(Math.min(e.length-1,a)),!(n<=t&&t<=a))return e;for(s=s===void 0?bY:mCs(s);a>n;){if(a-n>600){const d=a-n+1,m=t-n+1,f=Math.log(d),p=.5*Math.exp(2*f/3),y=.5*Math.sqrt(f*p*(d-p)/d)*(m-d/2<0?-1:1),v=Math.max(n,Math.floor(t-m*p/d+y)),$=Math.min(a,Math.floor(t+(d-m)*p/d+y));xY(e,t,v,$,s)}const r=e[t];let i=n,c=a;for(lg(e,n,t),s(e[a],r)>0&&lg(e,n,a);i<c;){for(lg(e,i,c),++i,--c;s(e[i],r)<0;)++i;for(;s(e[c],r)>0;)--c}s(e[n],r)===0?lg(e,n,c):(++c,lg(e,c,a)),c<=t&&(n=c+1),t<=c&&(a=c-1)}return e}function lg(e,t,n){const a=e[t];e[t]=e[n],e[n]=a}function hCs(e,t,n){if(e=Float64Array.from(iCs(e)),!(!(a=e.length)||isNaN(t=+t))){if(t<=0||a<2)return bU(e);if(t>=1)return vU(e);var a,s=(a-1)*t,r=Math.floor(s),i=vU(xY(e,r).subarray(0,r+1)),c=bU(e.subarray(r+1));return i+(c-i)*(s-r)}}function yCs(e,t,n=vY){if(!(!(a=e.length)||isNaN(t=+t))){if(t<=0||a<2)return+n(e[0],0,e);if(t>=1)return+n(e[a-1],a-1,e);var a,s=(a-1)*t,r=Math.floor(s),i=+n(e[r],r,e),c=+n(e[r+1],r+1,e);return i+(c-i)*(s-r)}}function vCs(e,t,n){e=+e,t=+t,n=(s=arguments.length)<2?(t=e,e=0,1):s<3?1:+n;for(var a=-1,s=Math.max(0,Math.ceil((t-e)/n))|0,r=new Array(s);++a<s;)r[a]=e+a*n;return r}function Bs(e,t){switch(arguments.length){case 0:break;case 1:this.range(e);break;default:this.range(t).domain(e);break}return this}function fl(e,t){switch(arguments.length){case 0:break;case 1:{typeof e=="function"?this.interpolator(e):this.range(e);break}default:{this.domain(e),typeof t=="function"?this.interpolator(t):this.range(t);break}}return this}
vendor: 7,813 bytes, line 953
953const bP=Symbol("implicit");function y2(){var e=new hU,t=[],n=[],a=bP;function s(r){let i=e.get(r);if(i===void 0){if(a!==bP)return a;e.set(r,i=t.push(r)-1)}return n[i%n.length]}return s.domain=function(r){if(!arguments.length)return t.slice();t=[],e=new hU;for(const i of r)e.has(i)||e.set(i,t.push(i)-1);return s},s.range=function(r){return arguments.length?(n=Array.from(r),s):n.slice()},s.unknown=function(r){return arguments.length?(a=r,s):a},s.copy=function(){return y2(t,n).unknown(a)},Bs.apply(s,arguments),s}function v2(){var e=y2().unknown(void 0),t=e.domain,n=e.range,a=0,s=1,r,i,c=!1,d=0,m=0,f=.5;delete e.unknown;function p(){var y=t().length,v=s<a,$=v?s:a,x=v?a:s;r=(x-$)/Math.max(1,y-d+m*2),c&&(r=Math.floor(r)),$+=(x-$-r*(y-d))*f,i=r*(1-d),c&&($=Math.round($),i=Math.round(i));var w=vCs(y).map(function(S){return $+r*S});return n(v?w.reverse():w)}return e.domain=function(y){return arguments.length?(t(y),p()):t()},e.range=function(y){return arguments.length?([a,s]=y,a=+a,s=+s,p()):[a,s]},e.rangeRound=function(y){return[a,s]=y,a=+a,s=+s,c=!0,p()},e.bandwidth=function(){return i},e.step=function(){return r},e.round=function(y){return arguments.length?(c=!!y,p()):c},e.padding=function(y){return arguments.length?(d=Math.min(1,m=+y),p()):d},e.paddingInner=function(y){return arguments.length?(d=Math.min(1,y),p()):d},e.paddingOuter=function(y){return arguments.length?(m=+y,p()):m},e.align=function(y){return arguments.length?(f=Math.max(0,Math.min(1,y)),p()):f},e.copy=function(){return v2(t(),[a,s]).round(c).paddingInner(d).paddingOuter(m).align(f)},Bs.apply(p(),arguments)}function $Y(e){var t=e.copy;return e.padding=e.paddingOuter,delete e.paddingInner,delete e.paddingOuter,e.copy=function(){return $Y(t())},e}function bCs(){return $Y(v2.apply(null,arguments).paddingInner(1))}function b2(e,t,n){e.prototype=t.prototype=n,n.constructor=e}function wY(e,t){var n=Object.create(e.prototype);for(var a in t)n[a]=t[a];return n}function Cy(){}var Sh=.7,x$=1/Sh,Gm="\\s*([+-]?\\d+)\\s*",Ah="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",ai="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",xCs=/^#([0-9a-f]{3,8})$/,$Cs=new RegExp(`^rgb\\(${Gm},${Gm},${Gm}\\)$`),wCs=new RegExp(`^rgb\\(${ai},${ai},${ai}\\)$`),kCs=new RegExp(`^rgba\\(${Gm},${Gm},${Gm},${Ah}\\)$`),CCs=new RegExp(`^rgba\\(${ai},${ai},${ai},${Ah}\\)$`),SCs=new RegExp(`^hsl\\(${Ah},${ai},${ai}\\)$`),ACs=new RegExp(`^hsla\\(${Ah},${ai},${ai},${Ah}\\)$`),xU={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};b2(Cy,Th,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:$U,formatHex:$U,formatHex8:TCs,formatHsl:RCs,formatRgb:wU,toString:wU});function $U(){return this.rgb().formatHex()}function TCs(){return this.rgb().formatHex8()}function RCs(){return kY(this).formatHsl()}function wU(){return this.rgb().formatRgb()}function Th(e){var t,n;return e=(e+"").trim().toLowerCase(),(t=xCs.exec(e))?(n=t[1].length,t=parseInt(t[1],16),n===6?kU(t):n===3?new Ao(t>>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):n===8?_b(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):n===4?_b(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=$Cs.exec(e))?new Ao(t[1],t[2],t[3],1):(t=wCs.exec(e))?new Ao(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=kCs.exec(e))?_b(t[1],t[2],t[3],t[4]):(t=CCs.exec(e))?_b(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=SCs.exec(e))?AU(t[1],t[2]/100,t[3]/100,1):(t=ACs.exec(e))?AU(t[1],t[2]/100,t[3]/100,t[4]):xU.hasOwnProperty(e)?kU(xU[e]):e==="transparent"?new Ao(NaN,NaN,NaN,0):null}function kU(e){return new Ao(e>>16&255,e>>8&255,e&255,1)}function _b(e,t,n,a){return a<=0&&(e=t=n=NaN),new Ao(e,t,n,a)}function PCs(e){return e instanceof Cy||(e=Th(e)),e?(e=e.rgb(),new Ao(e.r,e.g,e.b,e.opacity)):new Ao}function xP(e,t,n,a){return arguments.length===1?PCs(e):new Ao(e,t,n,a??1)}function Ao(e,t,n,a){this.r=+e,this.g=+t,this.b=+n,this.opacity=+a}b2(Ao,xP,wY(Cy,{brighter(e){return e=e==null?x$:Math.pow(x$,e),new Ao(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?Sh:Math.pow(Sh,e),new Ao(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new Ao(qd(this.r),qd(this.g),qd(this.b),$$(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:CU,formatHex:CU,formatHex8:_Cs,formatRgb:SU,toString:SU}));function CU(){return`#${Rd(this.r)}${Rd(this.g)}${Rd(this.b)}`}function _Cs(){return`#${Rd(this.r)}${Rd(this.g)}${Rd(this.b)}${Rd((isNaN(this.opacity)?1:this.opacity)*255)}`}function SU(){const e=$$(this.opacity);return`${e===1?"rgb(":"rgba("}${qd(this.r)}, ${qd(this.g)}, ${qd(this.b)}${e===1?")":`, ${e})`}`}function $$(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function qd(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function Rd(e){return e=qd(e),(e<16?"0":"")+e.toString(16)}function AU(e,t,n,a){return a<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new ir(e,t,n,a)}function kY(e){if(e instanceof ir)return new ir(e.h,e.s,e.l,e.opacity);if(e instanceof Cy||(e=Th(e)),!e)return new ir;if(e instanceof ir)return e;e=e.rgb();
vendor: 5,513 bytes, line 953
953var t=e.r/255,n=e.g/255,a=e.b/255,s=Math.min(t,n,a),r=Math.max(t,n,a),i=NaN,c=r-s,d=(r+s)/2;return c?(t===r?i=(n-a)/c+(n<a)*6:n===r?i=(a-t)/c+2:i=(t-n)/c+4,c/=d<.5?r+s:2-r-s,i*=60):c=d>0&&d<1?0:i,new ir(i,c,d,e.opacity)}function jCs(e,t,n,a){return arguments.length===1?kY(e):new ir(e,t,n,a??1)}function ir(e,t,n,a){this.h=+e,this.s=+t,this.l=+n,this.opacity=+a}b2(ir,jCs,wY(Cy,{brighter(e){return e=e==null?x$:Math.pow(x$,e),new ir(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?Sh:Math.pow(Sh,e),new ir(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,a=n+(n<.5?n:1-n)*t,s=2*n-a;return new Ao(OA(e>=240?e-240:e+120,s,a),OA(e,s,a),OA(e<120?e+240:e-120,s,a),this.opacity)},clamp(){return new ir(TU(this.h),jb(this.s),jb(this.l),$$(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const e=$$(this.opacity);return`${e===1?"hsl(":"hsla("}${TU(this.h)}, ${jb(this.s)*100}%, ${jb(this.l)*100}%${e===1?")":`, ${e})`}`}}));function TU(e){return e=(e||0)%360,e<0?e+360:e}function jb(e){return Math.max(0,Math.min(1,e||0))}function OA(e,t,n){return(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)*255}const j0=e=>()=>e;function CY(e,t){return function(n){return e+n*t}}function NCs(e,t,n){return e=Math.pow(e,n),t=Math.pow(t,n)-e,n=1/n,function(a){return Math.pow(e+a*t,n)}}function r6s(e,t){var n=t-e;return n?CY(e,n>180||n<-180?n-360*Math.round(n/360):n):j0(isNaN(e)?t:e)}function DCs(e){return(e=+e)==1?SY:function(t,n){return n-t?NCs(t,n,e):j0(isNaN(t)?n:t)}}function SY(e,t){var n=t-e;return n?CY(e,n):j0(isNaN(e)?t:e)}const RU=(function e(t){var n=DCs(t);function a(s,r){var i=n((s=xP(s)).r,(r=xP(r)).r),c=n(s.g,r.g),d=n(s.b,r.b),m=SY(s.opacity,r.opacity);return function(f){return s.r=i(f),s.g=c(f),s.b=d(f),s.opacity=m(f),s+""}}return a.gamma=e,a})(1);function MCs(e,t){t||(t=[]);var n=e?Math.min(t.length,e.length):0,a=t.slice(),s;return function(r){for(s=0;s<n;++s)a[s]=e[s]*(1-r)+t[s]*r;return a}}function ECs(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function ICs(e,t){var n=t?t.length:0,a=e?Math.min(n,e.length):0,s=new Array(a),r=new Array(n),i;for(i=0;i<a;++i)s[i]=Jp(e[i],t[i]);for(;i<n;++i)r[i]=t[i];return function(c){for(i=0;i<a;++i)r[i]=s[i](c);return r}}function OCs(e,t){var n=new Date;return e=+e,t=+t,function(a){return n.setTime(e*(1-a)+t*a),n}}function w$(e,t){return e=+e,t=+t,function(n){return e*(1-n)+t*n}}function LCs(e,t){var n={},a={},s;(e===null||typeof e!="object")&&(e={}),(t===null||typeof t!="object")&&(t={});for(s in t)s in e?n[s]=Jp(e[s],t[s]):a[s]=t[s];return function(r){for(s in n)a[s]=n[s](r);return a}}var $P=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,LA=new RegExp($P.source,"g");function UCs(e){return function(){return e}}function BCs(e){return function(t){return e(t)+""}}function FCs(e,t){var n=$P.lastIndex=LA.lastIndex=0,a,s,r,i=-1,c=[],d=[];for(e=e+"",t=t+"";(a=$P.exec(e))&&(s=LA.exec(t));)(r=s.index)>n&&(r=t.slice(n,r),c[i]?c[i]+=r:c[++i]=r),(a=a[0])===(s=s[0])?c[i]?c[i]+=s:c[++i]=s:(c[++i]=null,d.push({i,x:w$(a,s)})),n=LA.lastIndex;return n<t.length&&(r=t.slice(n),c[i]?c[i]+=r:c[++i]=r),c.length<2?d[0]?BCs(d[0].x):UCs(t):(t=d.length,function(m){for(var f=0,p;f<t;++f)c[(p=d[f]).i]=p.x(m);return c.join("")})}function Jp(e,t){var n=typeof t,a;return t==null||n==="boolean"?j0(t):(n==="number"?w$:n==="string"?(a=Th(t))?(t=a,RU):FCs:t instanceof Th?RU:t instanceof Date?OCs:ECs(t)?MCs:Array.isArray(t)?ICs:typeof t.valueOf!="function"&&typeof t.toString!="function"||isNaN(t)?LCs:w$)(e,t)}function x2(e,t){return e=+e,t=+t,function(n){return Math.round(e*(1-n)+t*n)}}function zCs(e,t){t===void 0&&(t=e,e=Jp);for(var n=0,a=t.length-1,s=t[0],r=new Array(a<0?0:a);n<a;)r[n]=e(s,s=t[++n]);return function(i){var c=Math.max(0,Math.min(a-1,Math.floor(i*=a)));return r[c](i-c)}}function qCs(e){return function(){return e}}function k$(e){return+e}var PU=[0,1];function to(e){return e}function wP(e,t){return(t-=e=+e)?function(n){return(n-e)/t}:qCs(isNaN(t)?NaN:.5)}function HCs(e,t){var n;return e>t&&(n=e,e=t,t=n),function(a){return Math.max(e,Math.min(t,a))}}function VCs(e,t,n){var a=e[0],s=e[1],r=t[0],i=t[1];return s<a?(a=wP(s,a),r=n(i,r)):(a=wP(a,s),r=n(r,i)),function(c){return r(a(c))}}function KCs(e,t,n){var a=Math.min(e.length,t.length)-1,s=new Array(a),r=new Array(a),i=-1;for(e[a]<e[0]&&(e=e.slice().reverse(),t=t.slice().reverse());++i<a;)s[i]=wP(e[i],e[i+1]),r[i]=n(t[i],t[i+1]);return function(c){var d=ky(e,c,1,a)-1;return r[d](s[d](c))}}function Sy(e,t){return t.domain(e.domain()).range(e.range()).interpolate(e.interpolate()).clamp(e.clamp()).unknown(e.unknown())}function N0(){var e=PU,t=PU,n=Jp,a,s,r,i=to,c,d,m;function f(){var y=Math.min(e.length,t.length);return i!==to&&(i=HCs(e[0],e[y-1])),c=y>2?KCs:VCs,d=m=null,p}function p(y){return y==null||isNaN(y=+y)?r:(d||(d=c(e.map(a),t,n)))(a(i(y)))}return p.invert=function(y){return i(s((m||(m=c(t,e.map(a),w$)))(y)))},p.domain=function(y){return arguments.length?(e=Array.from(y,k$),f()):e.slice()},p.range=function(y){return arguments.length?(t=Array.from(y),f()):t.slice()},p.rangeRound=function(y){return t=Array.from(y),n=x2,f()},p.clamp=function(y){return arguments.length?(i=y?!0:to,f()):i!==to},p.interpolate=function(y){return arguments.length?(n=y,f()):n},p.unknown=function(y){return arguments.length?(r=y,p):r},function(y,v){return a=y,s=v,f()}}function $2(){return N0()(to,to)}
vendor: 4,293 bytes, line 953
953function GCs(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString("en").replace(/,/g,""):e.toString(10)}function C$(e,t){if(!isFinite(e)||e===0)return null;var n=(e=t?e.toExponential(t-1):e.toExponential()).indexOf("e"),a=e.slice(0,n);return[a.length>1?a[0]+a.slice(2):a,+e.slice(n+1)]}function Cp(e){return e=C$(Math.abs(e)),e?e[1]:NaN}function WCs(e,t){return function(n,a){for(var s=n.length,r=[],i=0,c=e[0],d=0;s>0&&c>0&&(d+c+1>a&&(c=Math.max(1,a-d)),r.push(n.substring(s-=c,s+c)),!((d+=c+1)>a));)c=e[i=(i+1)%e.length];return r.reverse().join(t)}}function YCs(e){return function(t){return t.replace(/[0-9]/g,function(n){return e[+n]})}}var QCs=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Rh(e){if(!(t=QCs.exec(e)))throw new Error("invalid format: "+e);var t;return new w2({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}Rh.prototype=w2.prototype;function w2(e){this.fill=e.fill===void 0?" ":e.fill+"",this.align=e.align===void 0?">":e.align+"",this.sign=e.sign===void 0?"-":e.sign+"",this.symbol=e.symbol===void 0?"":e.symbol+"",this.zero=!!e.zero,this.width=e.width===void 0?void 0:+e.width,this.comma=!!e.comma,this.precision=e.precision===void 0?void 0:+e.precision,this.trim=!!e.trim,this.type=e.type===void 0?"":e.type+""}w2.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function XCs(e){e:for(var t=e.length,n=1,a=-1,s;n<t;++n)switch(e[n]){case".":a=s=n;break;case"0":a===0&&(a=n),s=n;break;default:if(!+e[n])break e;a>0&&(a=0);break}return a>0?e.slice(0,a)+e.slice(s+1):e}var S$;function ZCs(e,t){var n=C$(e,t);if(!n)return S$=void 0,e.toPrecision(t);var a=n[0],s=n[1],r=s-(S$=Math.max(-8,Math.min(8,Math.floor(s/3)))*3)+1,i=a.length;return r===i?a:r>i?a+new Array(r-i+1).join("0"):r>0?a.slice(0,r)+"."+a.slice(r):"0."+new Array(1-r).join("0")+C$(e,Math.max(0,t+r-1))[0]}function _U(e,t){var n=C$(e,t);if(!n)return e+"";var a=n[0],s=n[1];return s<0?"0."+new Array(-s).join("0")+a:a.length>s+1?a.slice(0,s+1)+"."+a.slice(s+1):a+new Array(s-a.length+2).join("0")}const jU={"%":(e,t)=>(e*100).toFixed(t),b:e=>Math.round(e).toString(2),c:e=>e+"",d:GCs,e:(e,t)=>e.toExponential(t),f:(e,t)=>e.toFixed(t),g:(e,t)=>e.toPrecision(t),o:e=>Math.round(e).toString(8),p:(e,t)=>_U(e*100,t),r:_U,s:ZCs,X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)};function NU(e){return e}var DU=Array.prototype.map,MU=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function JCs(e){var t=e.grouping===void 0||e.thousands===void 0?NU:WCs(DU.call(e.grouping,Number),e.thousands+""),n=e.currency===void 0?"":e.currency[0]+"",a=e.currency===void 0?"":e.currency[1]+"",s=e.decimal===void 0?".":e.decimal+"",r=e.numerals===void 0?NU:YCs(DU.call(e.numerals,String)),i=e.percent===void 0?"%":e.percent+"",c=e.minus===void 0?"−":e.minus+"",d=e.nan===void 0?"NaN":e.nan+"";function m(p,y){p=Rh(p);var v=p.fill,$=p.align,x=p.sign,w=p.symbol,S=p.zero,k=p.width,T=p.comma,R=p.precision,_=p.trim,P=p.type;P==="n"?(T=!0,P="g"):jU[P]||(R===void 0&&(R=12),_=!0,P="g"),(S||v==="0"&&$==="=")&&(S=!0,v="0",$="=");var j=(y&&y.prefix!==void 0?y.prefix:"")+(w==="$"?n:w==="#"&&/[boxX]/.test(P)?"0"+P.toLowerCase():""),N=(w==="$"?a:/[%p]/.test(P)?i:"")+(y&&y.suffix!==void 0?y.suffix:""),I=jU[P],z=/[defgprs%]/.test(P);R=R===void 0?6:/[gprs]/.test(P)?Math.max(1,Math.min(21,R)):Math.max(0,Math.min(20,R));function E(L){var O=j,V=N,ne,q,M;if(P==="c")V=I(L)+V,L="";else{L=+L;var F=L<0||1/L<0;if(L=isNaN(L)?d:I(Math.abs(L),R),_&&(L=XCs(L)),F&&+L==0&&x!=="+"&&(F=!1),O=(F?x==="("?x:c:x==="-"||x==="("?"":x)+O,V=(P==="s"&&!isNaN(L)&&S$!==void 0?MU[8+S$/3]:"")+V+(F&&x==="("?")":""),z){for(ne=-1,q=L.length;++ne<q;)if(M=L.charCodeAt(ne),48>M||M>57){V=(M===46?s+L.slice(ne+1):L.slice(ne))+V,L=L.slice(0,ne);break}}}T&&!S&&(L=t(L,1/0));var H=O.length+L.length+V.length,ee=H<k?new Array(k-H+1).join(v):"";switch(T&&S&&(L=t(ee+L,ee.length?k-V.length:1/0),ee=""),$){case"<":L=O+L+V+ee;break;case"=":L=O+ee+L+V;break;case"^":L=ee.slice(0,H=ee.length>>
9531)+O+L+V+ee.slice(H);break;default:L=ee+O+L+V;break}return r(L)}return E.toString=function(){return p+""},E}function f(p,y){var v=Math.max(-8,Math.min(8,Math.floor(Cp(y)/3)))*3,$=Math.pow(10,-v),x=m((p=Rh(p),p.type="f",p),{suffix:MU[8+v/3]});return function(w){return x($*w)}}return{format:m,formatPrefix:f}}var Nb,k2,AY;e1s({thousands:",",grouping:[3],currency:["$",""]});function e1s(e){return Nb=JCs(e),k2=Nb.format,AY=Nb.formatPrefix,Nb}function t1s(e){return Math.max(0,-Cp(Math.abs(e)))}function n1s(e,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(Cp(t)/3)))*3-Cp(Math.abs(e)))}function a1s(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,Cp(t)-Cp(e))+1}function TY(e,t,n,a){var s=vP(e,t,n),r;switch(a=Rh(a??",f"),a.type){case"s":{var i=Math.max(Math.abs(e),Math.abs(t));return a.precision==null&&!isNaN(r=n1s(s,i))&&(a.precision=r),AY(a,i)}case"":case"e":case"g":case"p":case"r":{a.precision==null&&!isNaN(r=a1s(s,Math.max(Math.abs(e),Math.abs(t))))&&(a.precision=r-(a.type==="e"));break}case"f":case"%":{a.precision==null&&!isNaN(r=t1s(s))&&(a.precision=r-(a.type==="%")*2);break}}return k2(a)}function qc(e){var t=e.domain;return e.ticks=function(n){var a=t();return hP(a[0],a[a.length-1],n??10)},e.tickFormat=function(n,a){var s=t();return TY(s[0],s[s.length-1],n??10,a)},e.nice=function(n){n==null&&(n=10);var a=t(),s=0,r=a.length-1,i=a[s],c=a[r],d,m,f=10;for(c<i&&(m=i,i=c,c=m,m=s,s=r,r=m);f-- >0;){if(m=yP(i,c,n),m===d)return a[s]=i,a[r]=c,t(a);if(m>0)i=Math.floor(i/m)*m,c=Math.ceil(c/m)*m;else if(m<0)i=Math.ceil(i*m)/m,c=Math.floor(c*m)/m;else break;d=m}return e},e}function RY(){var e=$2();return e.copy=function(){return Sy(e,RY())},Bs.apply(e,arguments),qc(e)}function PY(e){var t;function n(a){return a==null||isNaN(a=+a)?t:a}return n.invert=n,n.domain=n.range=function(a){return arguments.length?(e=Array.from(a,k$),n):e.slice()},n.unknown=function(a){return arguments.length?(t=a,n):t},n.copy=function(){return PY(e).unknown(t)},e=arguments.length?Array.from(e,k$):[0,1],qc(n)}function _Y(e,t){e=e.slice();var n=0,a=e.length-1,s=e[n],r=e[a],i;return r<s&&(i=n,n=a,a=i,i=s,s=r,r=i),e[n]=t.floor(s),e[a]=t.ceil(r),e}function EU(e){return Math.log(e)}function IU(e){return Math.exp(e)}function o1s(e){return-Math.log(-e)}function s1s(e){return-Math.exp(-e)}function r1s(e){return isFinite(e)?+("1e"+e):e<0?0:e}function i1s(e){return e===10?r1s:e===Math.E?Math.exp:t=>Math.pow(e,t)}function l1s(e){return e===Math.E?Math.log:e===10&&Math.log10||e===2&&Math.log2||(e=Math.log(e),t=>Math.log(t)/e)}function OU(e){return(t,n)=>-e(-t,n)}function C2(e){const t=e(EU,IU),n=t.domain;let a=10,s,r;function i(){return s=l1s(a),r=i1s(a),n()[0]<0?(s=OU(s),r=OU(r),e(o1s,s1s)):e(EU,IU),t}return t.base=function(c){return arguments.length?(a=+c,i()):a},t.domain=function(c){return arguments.length?(n(c),i()):n()},t.ticks=c=>{const d=n();let m=d[0],f=d[d.length-1];const p=f<m;p&&([m,f]=[f,m]);let y=s(m),v=s(f),$,x;const w=c==null?10:+c;let S=[];if(!(a%1)&&v-y<w){if(y=Math.floor(y),v=Math.ceil(v),m>0){for(;y<=v;++y)for($=1;$<a;++$)if(x=y<0?$/r(-y):$*r(y),!(x<m)){if(x>f)break;S.push(x)}}else for(;y<=v;++y)for($=a-1;$>=1;--$)if(x=y>0?$/r(-y):$*r(y),!(x<m)){if(x>f)break;S.push(x)}S.length*2<w&&(S=hP(m,f,w))}else S=hP(y,v,Math.min(v-y,w)).map(r);return p?S.reverse():S},t.tickFormat=(c,d)=>{if(c==null&&(c=10),d==null&&(d=a===10?"s":","),typeof d!="function"&&(!(a%1)&&(d=Rh(d)).precision==null&&(d.trim=!0),d=k2(d)),c===1/0)return d;const m=Math.max(1,a*c/t.ticks().length);return f=>{let p=f/r(Math.round(s(f)));return p*a<a-.5&&(p*=a),p<=m?d(f):""}},t.nice=()=>n(_Y(n(),{floor:c=>r(Math.floor(s(c))),ceil:c=>r(Math.ceil(s(c)))})),t}function jY(){const e=C2(N0()).domain([1,10]);return e.copy=()=>Sy(e,jY()).base(e.base()),Bs.apply(e,arguments),e}function LU(e){return function(t){return Math.sign(t)*Math.log1p(Math.abs(t/e))}}function UU(e){return function(t){return Math.sign(t)*Math.expm1(Math.abs(t))*e}}function S2(e){var t=1,n=e(LU(t),UU(t));return n.constant=function(a){return arguments.length?e(LU(t=+a),UU(t)):t},qc(n)}function NY(){var e=S2(N0());return e.copy=function(){return Sy(e,NY()).constant(e.constant())},Bs.apply(e,arguments)}function BU(e){return function(t){return t<0?-Math.pow(-t,e):Math.pow(t,e)}}function c1s(e){return e<0?-Math.sqrt(-e):Math.sqrt(e)}function d1s(e){return e<0?-e*e:e*e}function A2(e){var t=e(to,to),n=1;function a(){return n===1?e(to,to):n===.5?e(c1s,d1s):e(BU(n),BU(1/n))}return t.exponent=function(s){return arguments.length?(n=+s,a()):n},qc(t)}function T2(){var e=A2(N0());return e.copy=function(){return Sy(e,T2()).exponent(e.exponent())},Bs.apply(e,arguments),e}function u1s(){return T2.apply(null,arguments).exponent(.5)}function FU(e){return Math.sign(e)*e*e}function m1s(e){return Math.sign(e)*Math.sqrt(Math.abs(e))}function DY(){var e=$2(),t=[0,1],n=!1,a;function s(r){var i=m1s(e(r));return isNaN(i)?a:n?Math.round(i):i}return s.invert=function(r){return e.invert(FU(r))},s.domain=function(r){return arguments.length?(e.domain(r),s):e.domain()},s.range=function(r){return arguments.length?(e.range((t=Array.from(r,k$)).map(FU)),s):t.slice()},s.rangeRound=function(r){return s.range(r).round(!0)},s.round=function(r){return arguments.length?(n=!!r,s):n},s.clamp=function(r){return arguments.length?(e.clamp(r),s):e.clamp()},s.unknown=function(r){return arguments.length?(a=r,s):a},s.copy=function(){return DY(e.domain(),t).round(n).clamp(e.clamp()).unknown(a)},Bs.apply(s,arguments),qc(s)}function MY(){var e=[],t=[],n=[],a;function s(){var i=0,c=Math.max(1,t.length);for(n=new Array(c-1);++i<c;)n[i-1]=yCs(e,i/c);return r}function r(i){return i==null||isNaN(i=+i)?a:t[ky(n,i)]}return r.invertExtent=function(i){var c=t.indexOf(i);
953return c<0?[NaN,NaN]:[c>0?n[c-1]:e[0],c<n.length?n[c]:e[e.length-1]]},r.domain=function(i){if(!arguments.length)return e.slice();e=[];for(let c of i)c!=null&&!isNaN(c=+c)&&e.push(c);return e.sort(xc),s()},r.range=function(i){return arguments.length?(t=Array.from(i),s()):t.slice()},r.unknown=function(i){return arguments.length?(a=i,r):a},r.quantiles=function(){return n.slice()},r.copy=function(){return MY().domain(e).range(t).unknown(a)},Bs.apply(r,arguments)}function EY(){var e=0,t=1,n=1,a=[.5],s=[0,1],r;function i(d){return d!=null&&d<=d?s[ky(a,d,0,n)]:r}function c(){var d=-1;for(a=new Array(n);++d<n;)a[d]=((d+1)*t-(d-n)*e)/(n+1);return i}return i.domain=function(d){return arguments.length?([e,t]=d,e=+e,t=+t,c()):[e,t]},i.range=function(d){return arguments.length?(n=(s=Array.from(d)).length-1,c()):s.slice()},i.invertExtent=function(d){var m=s.indexOf(d);return m<0?[NaN,NaN]:m<1?[e,a[0]]:m>=n?[a[n-1],t]:[a[m-1],a[m]]},i.unknown=function(d){return arguments.length&&(r=d),i},i.thresholds=function(){return a.slice()},i.copy=function(){return EY().domain([e,t]).range(s).unknown(r)},Bs.apply(qc(i),arguments)}function IY(){var e=[.5],t=[0,1],n,a=1;function s(r){return r!=null&&r<=r?t[ky(e,r,0,a)]:n}return s.domain=function(r){return arguments.length?(e=Array.from(r),a=Math.min(e.length,t.length-1),s):e.slice()},s.range=function(r){return arguments.length?(t=Array.from(r),a=Math.min(e.length,t.length-1),s):t.slice()},s.invertExtent=function(r){var i=t.indexOf(r);return[e[i-1],e[i]]},s.unknown=function(r){return arguments.length?(n=r,s):n},s.copy=function(){return IY().domain(e).range(t).unknown(n)},Bs.apply(s,arguments)}const UA=new Date,BA=new Date;function Jn(e,t,n,a){function s(r){return e(r=arguments.length===0?new Date:new Date(+r)),r}return s.floor=r=>(e(r=new Date(+r)),r),s.ceil=r=>(e(r=new Date(r-1)),t(r,1),e(r),r),s.round=r=>{const i=s(r),c=s.ceil(r);return r-i<c-r?i:c},s.offset=(r,i)=>(t(r=new Date(+r),i==null?1:Math.floor(i)),r),s.range=(r,i,c)=>{const d=[];if(r=s.ceil(r),c=c==null?1:Math.floor(c),!(r<i)||!(c>0))return d;let m;do d.push(m=new Date(+r)),t(r,c),e(r);while(m<r&&r<i);return d},s.filter=r=>Jn(i=>{if(i>=i)for(;e(i),!r(i);)i.setTime(i-1)},(i,c)=>{if(i>=i)if(c<0)for(;++c<=0;)for(;t(i,-1),!r(i););else for(;--c>=0;)for(;t(i,1),!r(i););}),n&&(s.count=(r,i)=>(UA.setTime(+r),BA.setTime(+i),e(UA),e(BA),Math.floor(n(UA,BA))),s.every=r=>(r=Math.floor(r),!isFinite(r)||!(r>0)?null:r>1?s.filter(a?i=>a(i)%r===0:i=>s.count(0,i)%r===0):s)),s}const A$=Jn(()=>{},(e,t)=>{e.setTime(+e+t)},(e,t)=>t-e);A$.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?Jn(t=>{t.setTime(Math.floor(t/e)*e)},(t,n)=>{t.setTime(+t+n*e)},(t,n)=>(n-t)/e):A$);A$.range;const Ki=1e3,Ps=Ki*60,Gi=Ps*60,al=Gi*24,R2=al*7,zU=al*30,FA=al*365,Pd=Jn(e=>{e.setTime(e-e.getMilliseconds())},(e,t)=>{e.setTime(+e+t*Ki)},(e,t)=>(t-e)/Ki,e=>e.getUTCSeconds());Pd.range;const P2=Jn(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*Ki)},(e,t)=>{e.setTime(+e+t*Ps)},(e,t)=>(t-e)/Ps,e=>e.getMinutes());P2.range;const _2=Jn(e=>{e.setUTCSeconds(0,0)},(e,t)=>{e.setTime(+e+t*Ps)},(e,t)=>(t-e)/Ps,e=>e.getUTCMinutes());_2.range;const j2=Jn(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*Ki-e.getMinutes()*Ps)},(e,t)=>{e.setTime(+e+t*Gi)},(e,t)=>(t-e)/Gi,e=>e.getHours());j2.range;const N2=Jn(e=>{e.setUTCMinutes(0,0,0)},(e,t)=>{e.setTime(+e+t*Gi)},(e,t)=>(t-e)/Gi,e=>e.getUTCHours());N2.range;const Ay=Jn(e=>e.setHours(0,0,0,0),(e,t)=>e.setDate(e.getDate()+t),(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*Ps)/al,e=>e.getDate()-1);Ay.range;const D0=Jn(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/al,e=>e.getUTCDate()-1);D0.range;const OY=Jn(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/al,e=>Math.floor(e/al));OY.range;function Su(e){return Jn(t=>{t.setDate(t.getDate()-(t.getDay()+7-e)%7),t.setHours(0,0,0,0)},(t,n)=>{t.setDate(t.getDate()+n*7)},(t,n)=>(n-t-(n.getTimezoneOffset()-t.getTimezoneOffset())*Ps)/R2)}const M0=Su(0),T$=Su(1),p1s=Su(2),f1s=Su(3),Sp=Su(4),g1s=Su(5),h1s=Su(6);M0.range;T$.range;p1s.range;f1s.range;Sp.range;g1s.range;h1s.range;function Au(e){return Jn(t=>{t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-e)%7),t.setUTCHours(0,0,0,0)},(t,n)=>{t.setUTCDate(t.getUTCDate()+n*7)},(t,n)=>(n-t)/R2)}const E0=Au(0),R$=Au(1),y1s=Au(2),v1s=Au(3),Ap=Au(4),b1s=Au(5),x1s=Au(6);E0.range;R$.range;y1s.range;v1s.range;Ap.range;b1s.range;x1s.range;const D2=Jn(e=>{e.setDate(1),e.setHours(0,0,0,0)},(e,t)=>{e.setMonth(e.getMonth()+t)},(e,t)=>t.getMonth()-e.getMonth()+(t.getFullYear()-e.getFullYear())*12,e=>e.getMonth());D2.range;const M2=Jn(e=>{e.setUTCDate(1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCMonth(e.getUTCMonth()+t)},(e,t)=>t.getUTCMonth()-e.getUTCMonth()+(t.getUTCFullYear()-e.getUTCFullYear())*12,e=>e.getUTCMonth());M2.range;const ol=Jn(e=>{e.setMonth(0,1),e.setHours(0,0,0,0)},(e,t)=>{e.setFullYear(e.getFullYear()+t)},(e,t)=>t.getFullYear()-e.getFullYear(),e=>e.getFullYear());ol.every=e=>
vendor: 9,575 bytes, line 953
953!isFinite(e=Math.floor(e))||!(e>0)?null:Jn(t=>{t.setFullYear(Math.floor(t.getFullYear()/e)*e),t.setMonth(0,1),t.setHours(0,0,0,0)},(t,n)=>{t.setFullYear(t.getFullYear()+n*e)});ol.range;const sl=Jn(e=>{e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCFullYear(e.getUTCFullYear()+t)},(e,t)=>t.getUTCFullYear()-e.getUTCFullYear(),e=>e.getUTCFullYear());sl.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:Jn(t=>{t.setUTCFullYear(Math.floor(t.getUTCFullYear()/e)*e),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,n)=>{t.setUTCFullYear(t.getUTCFullYear()+n*e)});sl.range;function LY(e,t,n,a,s,r){const i=[[Pd,1,Ki],[Pd,5,5*Ki],[Pd,15,15*Ki],[Pd,30,30*Ki],[r,1,Ps],[r,5,5*Ps],[r,15,15*Ps],[r,30,30*Ps],[s,1,Gi],[s,3,3*Gi],[s,6,6*Gi],[s,12,12*Gi],[a,1,al],[a,2,2*al],[n,1,R2],[t,1,zU],[t,3,3*zU],[e,1,FA]];function c(m,f,p){const y=f<m;y&&([m,f]=[f,m]);const v=p&&typeof p.range=="function"?p:d(m,f,p),$=v?v.range(m,+f+1):[];return y?$.reverse():$}function d(m,f,p){const y=Math.abs(f-m)/p,v=h2(([,,w])=>w).right(i,y);if(v===i.length)return e.every(vP(m/FA,f/FA,p));if(v===0)return A$.every(Math.max(vP(m,f,p),1));const[$,x]=i[y/i[v-1][2]<i[v][2]/y?v-1:v];return $.every(x)}return[c,d]}const[$1s,w1s]=LY(sl,M2,E0,OY,N2,_2),[k1s,C1s]=LY(ol,D2,M0,Ay,j2,P2);function zA(e){if(0<=e.y&&e.y<100){var t=new Date(-1,e.m,e.d,e.H,e.M,e.S,e.L);return t.setFullYear(e.y),t}return new Date(e.y,e.m,e.d,e.H,e.M,e.S,e.L)}function qA(e){if(0<=e.y&&e.y<100){var t=new Date(Date.UTC(-1,e.m,e.d,e.H,e.M,e.S,e.L));return t.setUTCFullYear(e.y),t}return new Date(Date.UTC(e.y,e.m,e.d,e.H,e.M,e.S,e.L))}function cg(e,t,n){return{y:e,m:t,d:n,H:0,M:0,S:0,L:0}}function S1s(e){var t=e.dateTime,n=e.date,a=e.time,s=e.periods,r=e.days,i=e.shortDays,c=e.months,d=e.shortMonths,m=dg(s),f=ug(s),p=dg(r),y=ug(r),v=dg(i),$=ug(i),x=dg(c),w=ug(c),S=dg(d),k=ug(d),T={a:M,A:F,b:H,B:ee,c:null,d:WU,e:WU,f:W1s,g:oSs,G:rSs,H:V1s,I:K1s,j:G1s,L:UY,m:Y1s,M:Q1s,p:B,q:G,Q:XU,s:ZU,S:X1s,u:Z1s,U:J1s,V:eSs,w:tSs,W:nSs,x:null,X:null,y:aSs,Y:sSs,Z:iSs,"%":QU},R={a:Q,A:de,b:Y,B:pe,c:null,d:YU,e:YU,f:uSs,g:$Ss,G:kSs,H:lSs,I:cSs,j:dSs,L:FY,m:mSs,M:pSs,p:se,q:we,Q:XU,s:ZU,S:fSs,u:gSs,U:hSs,V:ySs,w:vSs,W:bSs,x:null,X:null,y:xSs,Y:wSs,Z:CSs,"%":QU},_={a:z,A:E,b:L,B:O,c:V,d:KU,e:KU,f:F1s,g:VU,G:HU,H:GU,I:GU,j:O1s,L:B1s,m:I1s,M:L1s,p:I,q:E1s,Q:q1s,s:H1s,S:U1s,u:_1s,U:j1s,V:N1s,w:P1s,W:D1s,x:ne,X:q,y:VU,Y:HU,Z:M1s,"%":z1s};T.x=P(n,T),T.X=P(a,T),T.c=P(t,T),R.x=P(n,R),R.X=P(a,R),R.c=P(t,R);function P(me,ye){return function(_e){var ae=[],Je=-1,Ae=0,tt=me.length,Tt,an,ta;for(_e instanceof Date||(_e=new Date(+_e));++Je<tt;)me.charCodeAt(Je)===37&&(ae.push(me.slice(Ae,Je)),(an=qU[Tt=me.charAt(++Je)])!=null?Tt=me.charAt(++Je):an=Tt==="e"?" ":"0",(ta=ye[Tt])&&(Tt=ta(_e,an)),ae.push(Tt),Ae=Je+1);return ae.push(me.slice(Ae,Je)),ae.join("")}}function j(me,ye){return function(_e){var ae=cg(1900,void 0,1),Je=N(ae,me,_e+="",0),Ae,tt;if(Je!=_e.length)return null;if("Q"in ae)return new Date(ae.Q);if("s"in ae)return new Date(ae.s*1e3+("L"in ae?ae.L:0));if(ye&&!("Z"in ae)&&(ae.Z=0),"p"in ae&&(ae.H=ae.H%12+ae.p*12),ae.m===void 0&&(ae.m="q"in ae?ae.q:0),"V"in ae){if(ae.V<1||ae.V>53)return null;"w"in ae||(ae.w=1),"Z"in ae?(Ae=qA(cg(ae.y,0,1)),tt=Ae.getUTCDay(),Ae=tt>4||tt===0?R$.ceil(Ae):R$(Ae),Ae=D0.offset(Ae,(ae.V-1)*7),ae.y=Ae.getUTCFullYear(),ae.m=Ae.getUTCMonth(),ae.d=Ae.getUTCDate()+(ae.w+6)%7):(Ae=zA(cg(ae.y,0,1)),tt=Ae.getDay(),Ae=tt>4||tt===0?T$.ceil(Ae):T$(Ae),Ae=Ay.offset(Ae,(ae.V-1)*7),ae.y=Ae.getFullYear(),ae.m=Ae.getMonth(),ae.d=Ae.getDate()+(ae.w+6)%7)}else("W"in ae||"U"in ae)&&("w"in ae||(ae.w="u"in ae?ae.u%7:"W"in ae?1:0),tt="Z"in ae?qA(cg(ae.y,0,1)).getUTCDay():zA(cg(ae.y,0,1)).getDay(),ae.m=0,ae.d="W"in ae?(ae.w+6)%7+ae.W*7-(tt+5)%7:ae.w+ae.U*7-(tt+6)%7);return"Z"in ae?(ae.H+=ae.Z/100|0,ae.M+=ae.Z%100,qA(ae)):zA(ae)}}function N(me,ye,_e,ae){for(var Je=0,Ae=ye.length,tt=_e.length,Tt,an;Je<Ae;){if(ae>=tt)return-1;if(Tt=ye.charCodeAt(Je++),Tt===37){if(Tt=ye.charAt(Je++),an=_[Tt in qU?ye.charAt(Je++):Tt],!an||(ae=an(me,_e,ae))<0)return-1}else if(Tt!=_e.charCodeAt(ae++))return-1}return ae}function I(me,ye,_e){var ae=m.exec(ye.slice(_e));return ae?(me.p=f.get(ae[0].toLowerCase()),_e+ae[0].length):-1}function z(me,ye,_e){var ae=v.exec(ye.slice(_e));return ae?(me.w=$.get(ae[0].toLowerCase()),_e+ae[0].length):-1}function E(me,ye,_e){var ae=p.exec(ye.slice(_e));return ae?(me.w=y.get(ae[0].toLowerCase()),_e+ae[0].length):-1}function L(me,ye,_e){var ae=S.exec(ye.slice(_e));return ae?(me.m=k.get(ae[0].toLowerCase()),_e+ae[0].length):-1}function O(me,ye,_e){var ae=x.exec(ye.slice(_e));return ae?(me.m=w.get(ae[0].toLowerCase()),_e+ae[0].length):-1}function V(me,ye,_e){return N(me,t,ye,_e)}function ne(me,ye,_e){return N(me,n,ye,_e)}function q(me,ye,_e){return N(me,a,ye,_e)}function M(me){return i[me.getDay()]}function F(me){return r[me.getDay()]}function H(me){return d[me.getMonth()]}function ee(me){return c[me.getMonth()]}function B(me){return s[+(me.getHours()>=12)]}function G(me){return 1+~~(me.getMonth()/3)}function Q(me){return i[me.getUTCDay()]}function de(me){return r[me.getUTCDay()]}function Y(me){return d[me.getUTCMonth()]}function pe(me){return c[me.getUTCMonth()]}function se(me){return s[+(me.getUTCHours()>=12)]}function we(me){return 1+~~(me.getUTCMonth()/3)}return{format:function(me){var ye=P(me+="",T);return ye.toString=function(){return me},ye},parse:function(me){var ye=j(me+="",!1);return ye.toString=function(){return me},ye},utcFormat:function(me){var ye=P(me+="",R);return ye.toString=function(){return me},ye},utcParse:function(me){var ye=j(me+="",!0);return ye.toString=function(){return me},ye}}}var qU={"-":"",_:" ",0:"0"},ga=/^\s*\d+/,A1s=/^%/,T1s=/[\\^$*+?|[\]().{}]/g;function Nt(e,t,n){var a=e<0?"-":"",s=(a?-e:e)+"",r=s.length;return a+(r<n?new Array(n-r+1).join(t)+s:s)}function R1s(e){return e.replace(T1s,"\\$&")}function dg(e){return new RegExp("^(?:"+e.map(R1s).join("|")+")","i")}function ug(e){return new Map(e.map((t,n)=>[t.toLowerCase(),n]))}function P1s(e,t,n){var a=ga.exec(t.slice(n,n+1));return a?(e.w=+a[0],n+a[0].length):-1}function _1s(e,t,n){var a=ga.exec(t.slice(n,n+1));return a?(e.u=+a[0],n+a[0].length):-1}function j1s(e,t,n){var a=ga.exec(t.slice(n,n+2));return a?(e.U=+a[0],n+a[0].length):-1}function N1s(e,t,n){var a=ga.exec(t.slice(n,n+2));return a?(e.V=+a[0],n+a[0].length):-1}function D1s(e,t,n){var a=ga.exec(t.slice(n,n+2));return a?(e.W=+a[0],n+a[0].length):-1}function HU(e,t,n){var a=ga.exec(t.slice(n,n+4));return a?(e.y=+a[0],n+a[0].length):-1}function VU(e,t,n){var a=ga.exec(t.slice(n,n+2));return a?(e.y=+a[0]+(+a[0]>68?1900:2e3),n+a[0].length):-1}function M1s(e,t,n){var a=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(t.slice(n,n+6));return a?(e.Z=a[1]?0:-(a[2]+(a[3]||"00")),n+a[0].length):-1}function E1s(e,t,n){var a=ga.exec(t.slice(n,n+1));return a?(e.q=a[0]*3-3,n+a[0].length):-1}function I1s(e,t,n){var a=ga.exec(t.slice(n,n+2));return a?(e.m=a[0]-1,n+a[0].length):-1}function KU(e,t,n){var a=ga.exec(t.slice(n,n+2));return a?(e.d=+a[0],n+a[0].length):-1}function O1s(e,t,n){var a=ga.exec(t.slice(n,n+3));return a?(e.m=0,e.d=+a[0],n+a[0].length):-1}function GU(e,t,n){var a=ga.exec(t.slice(n,n+2));return a?(e.H=+a[0],n+a[0].length):-1}function L1s(e,t,n){var a=ga.exec(t.slice(n,n+2));return a?(e.M=+a[0],n+a[0].length):-1}function U1s(e,t,n){var a=ga.exec(t.slice(n,n+2));return a?(e.S=+a[0],n+a[0].length):-1}function B1s(e,t,n){var a=ga.exec(t.slice(n,n+3));return a?(e.L=+a[0],n+a[0].length):-1}function F1s(e,t,n){var a=ga.exec(t.slice(n,n+6));return a?(e.L=Math.floor(a[0]/1e3),n+a[0].length):-1}function z1s(e,t,n){var a=A1s.exec(t.slice(n,n+1));return a?n+a[0].length:-1}function q1s(e,t,n){var a=ga.exec(t.slice(n));return a?(e.Q=+a[0],n+a[0].length):-1}function H1s(e,t,n){var a=ga.exec(t.slice(n));return a?(e.s=+a[0],n+a[0].length):-1}function WU(e,t){return Nt(e.getDate(),t,2)}function V1s(e,t){return Nt(e.getHours(),t,2)}function K1s(e,t){return Nt(e.getHours()%12||12,t,2)}function G1s(e,t){return Nt(1+Ay.count(ol(e),e),t,3)}function UY(e,t){return Nt(e.getMilliseconds(),t,3)}function W1s(e,t){return UY(e,t)+"000"}function Y1s(e,t){return Nt(e.getMonth()+1,t,2)}function Q1s(e,t){return Nt(e.getMinutes(),t,2)}function X1s(e,t){return Nt(e.getSeconds(),t,2)}function Z1s(e){var t=e.getDay();return t===0?7:t}function J1s(e,t){return Nt(M0.count(ol(e)-1,e),t,2)}function BY(e){var t=e.getDay();return t>=4||t===0?Sp(e):Sp.ceil(e)}function eSs(e,t){return e=BY(e),Nt(Sp.count(ol(e),e)+(ol(e).getDay()===4),t,2)}function tSs(e){return e.getDay()}function nSs(e,t){return Nt(T$.count(ol(e)-1,e),t,2)}function aSs(e,t){return Nt(e.getFullYear()%100,t,2)}function oSs(e,t){return e=BY(e),Nt(e.getFullYear()%100,t,2)}function sSs(e,t){return Nt(e.getFullYear()%1e4,t,4)}function rSs(e,t){var n=e.getDay();return e=n>=4||n===0?Sp(e):Sp.ceil(e),Nt(e.getFullYear()%1e4,t,4)}function iSs(e){var t=e.getTimezoneOffset();return(t>0?"-":(t*=-1,"+"))+Nt(t/60|0,"0",2)+Nt(t%60,"0",2)}function YU(e,t){return Nt(e.getUTCDate(),t,2)}function lSs(e,t){return Nt(e.getUTCHours(),t,2)}function cSs(e,t){return Nt(e.getUTCHours()%12||12,t,2)}function dSs(e,t){return Nt(1+D0.count(sl(e),e),t,3)}function FY(e,t){return Nt(e.getUTCMilliseconds(),t,3)}function uSs(e,t){return FY(e,t)+"000"}function mSs(e,t){return Nt(e.getUTCMonth()+1,t,2)}function pSs(e,t){return Nt(e.getUTCMinutes(),t,2)}function fSs(e,t){return Nt(e.getUTCSeconds(),t,2)}function gSs(e){var t=e.getUTCDay();return t===0?7:t}function hSs(e,t){return Nt(E0.count(sl(e)-1,e),t,2)}function zY(e){var t=e.getUTCDay();return t>=4||t===0?Ap(e):Ap.ceil(e)}
953function ySs(e,t){return e=zY(e),Nt(Ap.count(sl(e),e)+(sl(e).getUTCDay()===4),t,2)}function vSs(e){return e.getUTCDay()}function bSs(e,t){return Nt(R$.count(sl(e)-1,e),t,2)}function xSs(e,t){return Nt(e.getUTCFullYear()%100,t,2)}function $Ss(e,t){return e=zY(e),Nt(e.getUTCFullYear()%100,t,2)}function wSs(e,t){return Nt(e.getUTCFullYear()%1e4,t,4)}function kSs(e,t){var n=e.getUTCDay();return e=n>=4||n===0?Ap(e):Ap.ceil(e),Nt(e.getUTCFullYear()%1e4,t,4)}function CSs(){return"+0000"}function QU(){return"%"}function XU(e){return+e}function ZU(e){return Math.floor(+e/1e3)}var km,qY,HY;SSs({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function SSs(e){return km=S1s(e),qY=km.format,km.parse,HY=km.utcFormat,km.utcParse,km}function ASs(e){return new Date(e)}function TSs(e){return e instanceof Date?+e:+new Date(+e)}function E2(e,t,n,a,s,r,i,c,d,m){var f=$2(),p=f.invert,y=f.domain,v=m(".%L"),$=m(":%S"),x=m("%I:%M"),w=m("%I %p"),S=m("%a %d"),k=m("%b %d"),T=m("%B"),R=m("%Y");function _(P){return(d(P)<P?v:c(P)<P?$:i(P)<P?x:r(P)<P?w:a(P)<P?s(P)<P?S:k:n(P)<P?T:R)(P)}return f.invert=function(P){return new Date(p(P))},f.domain=function(P){return arguments.length?y(Array.from(P,TSs)):y().map(ASs)},f.ticks=function(P){var j=y();return e(j[0],j[j.length-1],P??10)},f.tickFormat=function(P,j){return j==null?_:m(j)},f.nice=function(P){var j=y();return(!P||typeof P.range!="function")&&(P=t(j[0],j[j.length-1],P??10)),P?y(_Y(j,P)):f},f.copy=function(){return Sy(f,E2(e,t,n,a,s,r,i,c,d,m))},f}function RSs(){return Bs.apply(E2(k1s,C1s,ol,D2,M0,Ay,j2,P2,Pd,qY).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}function PSs(){return Bs.apply(E2($1s,w1s,sl,M2,E0,D0,N2,_2,Pd,HY).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)}function I0(){var e=0,t=1,n,a,s,r,i=to,c=!1,d;function m(p){return p==null||isNaN(p=+p)?d:i(s===0?.5:(p=(r(p)-n)*s,c?Math.max(0,Math.min(1,p)):p))}m.domain=function(p){return arguments.length?([e,t]=p,n=r(e=+e),a=r(t=+t),s=n===a?0:1/(a-n),m):[e,t]},m.clamp=function(p){return arguments.length?(c=!!p,m):c},m.interpolator=function(p){return arguments.length?(i=p,m):i};function f(p){return function(y){var v,$;return arguments.length?([v,$]=y,i=p(v,$),m):[i(0),i(1)]}}return m.range=f(Jp),m.rangeRound=f(x2),m.unknown=function(p){return arguments.length?(d=p,m):d},function(p){return r=p,n=p(e),a=p(t),s=n===a?0:1/(a-n),m}}function Hc(e,t){return t.domain(e.domain()).interpolator(e.interpolator()).clamp(e.clamp()).unknown(e.unknown())}function VY(){var e=qc(I0()(to));return e.copy=function(){return Hc(e,VY())},fl.apply(e,arguments)}function KY(){var e=C2(I0()).domain([1,10]);return e.copy=function(){return Hc(e,KY()).base(e.base())},fl.apply(e,arguments)}function GY(){var e=S2(I0());return e.copy=function(){return Hc(e,GY()).constant(e.constant())},fl.apply(e,arguments)}function I2(){var e=A2(I0());return e.copy=function(){return Hc(e,I2()).exponent(e.exponent())},fl.apply(e,arguments)}function _Ss(){return I2.apply(null,arguments).exponent(.5)}function WY(){var e=[],t=to;function n(a){if(a!=null&&!isNaN(a=+a))return t((ky(e,a,1)-1)/(e.length-1))}return n.domain=function(a){if(!arguments.length)return e.slice();e=[];for(let s of a)s!=null&&!isNaN(s=+s)&&e.push(s);return e.sort(xc),n},n.interpolator=function(a){return arguments.length?(t=a,n):t},n.range=function(){return e.map((a,s)=>t(s/(e.length-1)))},n.quantiles=function(a){return Array.from({length:a+1},(s,r)=>hCs(e,r/a))},n.copy=function(){return WY(t).domain(e)},fl.apply(n,arguments)}function O0(){var e=0,t=.5,n=1,a=1,s,r,i,c,d,m=to,f,p=!1,y;function v(x){return isNaN(x=+x)?y:(x=.5+((x=+f(x))-r)*(a*x<a*r?c:d),m(p?Math.max(0,Math.min(1,x)):x))}v.domain=function(x){return arguments.length?([e,t,n]=x,s=f(e=+e),r=f
953(t=+t),i=f(n=+n),c=s===r?0:.5/(r-s),d=r===i?0:.5/(i-r),a=r<s?-1:1,v):[e,t,n]},v.clamp=function(x){return arguments.length?(p=!!x,v):p},v.interpolator=function(x){return arguments.length?(m=x,v):m};function $(x){return function(w){var S,k,T;return arguments.length?([S,k,T]=w,m=zCs(x,[S,k,T]),v):[m(0),m(.5),m(1)]}}return v.range=$(Jp),v.rangeRound=$(x2),v.unknown=function(x){return arguments.length?(y=x,v):y},function(x){return f=x,s=x(e),r=x(t),i=x(n),c=s===r?0:.5/(r-s),d=r===i?0:.5/(i-r),a=r<s?-1:1,v}}function YY(){var e=qc(O0()(to));return e.copy=function(){return Hc(e,YY())},fl.apply(e,arguments)}function QY(){var e=C2(O0()).domain([.1,1,10]);return e.copy=function(){return Hc(e,QY()).base(e.base())},fl.apply(e,arguments)}function XY(){var e=S2(O0());return e.copy=function(){return Hc(e,XY()).constant(e.constant())},fl.apply(e,arguments)}function O2(){var e=A2(O0());return e.copy=function(){return Hc(e,O2()).exponent(e.exponent())},fl.apply(e,arguments)}function jSs(){return O2.apply(null,arguments).exponent(.5)}const ZY=Object.freeze(Object.defineProperty({__proto__:null,scaleBand:v2,scaleDiverging:YY,scaleDivergingLog:QY,scaleDivergingPow:O2,scaleDivergingSqrt:jSs,scaleDivergingSymlog:XY,scaleIdentity:PY,scaleImplicit:bP,scaleLinear:RY,scaleLog:jY,scaleOrdinal:y2,scalePoint:bCs,scalePow:T2,scaleQuantile:MY,scaleQuantize:EY,scaleRadial:DY,scaleSequential:VY,scaleSequentialLog:KY,scaleSequentialPow:I2,scaleSequentialQuantile:WY,scaleSequentialSqrt:_Ss,scaleSequentialSymlog:GY,scaleSqrt:u1s,scaleSymlog:NY,scaleThreshold:IY,scaleTime:RSs,scaleUtc:PSs,tickFormat:TY},Symbol.toStringTag,{value:"Module"}));function NSs(e){var t=ZY;if(e in t&&typeof t[e]=="function")return t[e]();var n="scale".concat(hy(e));if(n in t&&typeof t[n]=="function")return t[n]()}function JU(e,t,n){if(typeof e=="function")return e.copy().domain(t).range(n);if(e!=null){var a=NSs(e);if(a!=null)return a.domain(t).range(n),a}}function L2(e,t,n,a){if(!(n==null||a==null))return typeof e.scale=="function"?JU(e.scale,n,a):JU(t,n,a)}function DSs(e){return"scale".concat(hy(e))}function MSs(e){return DSs(e)in ZY}var JY=(e,t,n)=>{if(e!=null){var{scale:a,type:s}=e;if(a==="auto")return s==="category"&&n&&(n.indexOf("LineChart")>=0||n.indexOf("AreaChart")>
953=0||n.indexOf("ComposedChart")>=0&&!t)?"point":s==="category"?"band":"linear";if(typeof a=="string")return MSs(a)?a:"point"}};function ESs(e,t){for(var n=0,a=e.length,s=e[0]<e[e.length-1];n<a;){var r=Math.floor((n+a)/2);(s?e[r]<t:e[r]>t)?n=r+1:a=r}return n}function eQ(e,t){if(e){var n=t??e.domain(),a=n.map(r=>{var i;return(i=e(r))!==null&&i!==void 0?i:0}),s=e.range();if(!(n.length===0||s.length<2))return r=>{var i,c,d=ESs(a,r);if(d<=0)return n[0];if(d>=n.length)return n[n.length-1];var m=(i=a[d-1])!==null&&i!==void 0?i:0,f=(c=a[d])!==null&&c!==void 0?c:0;return Math.abs(r-m)<=Math.abs(r-f)?n[d-1]:n[d]}}}function ISs(e){if(e!=null)return"invert"in e&&typeof e.invert=="function"?e.invert.bind(e):eQ(e,void 0)}function eB(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,a)}return n}function P$(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?eB(Object(n),!0).forEach(function(a){OSs(e,a,n[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):eB(Object(n)).forEach(function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(n,a))})}return e}function OSs(e,t,n){return(t=LSs(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function LSs(e){var t=USs(e,"string");return typeof t=="symbol"?t:t+""}function USs(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var a=n.call(e,t);if(typeof a!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var kP=[0,"auto"],Wn={allowDataOverflow:!1,allowDecimals:!0,allowDuplicatedCategory:!0,angle:0,dataKey:void 0,domain:void 0,height:30,hide:!0,id:0,includeHidden:!1,interval:"preserveEnd",minTickGap:5,mirror:!1,name:void 0,orientation:"bottom",padding:{left:0,right:0},reversed:!1,scale:"auto",tick:!0,tickCount:5,tickFormatter:void 0,ticks:void 0,type:"category",unit:void 0,niceTicks:"auto"},tQ=(e,t)=>e.cartesianAxis.xAxis[t],gl=(e,t)=>{var n=tQ(e,t);return n??Wn},Yn={allowDataOverflow:!1,allowDecimals:!0,allowDuplicatedCategory:!0,angle:0,dataKey:void 0,domain:kP,hide:!0,id:0,includeHidden:!1,interval:"preserveEnd",minTickGap:5,mirror:!1,name:void 0,orientation:"left",padding:{top:0,bottom:0},reversed:!1,scale:"auto",tick:!0,tickCount:5,tickFormatter:void 0,ticks:void 0,type:"number",unit:void 0,niceTicks:"auto",width:by},nQ=(e,t)=>e.cartesianAxis.yAxis[t],hl=(e,t)=>{var n=nQ(e,t);return n??Yn},BSs={domain:[0,"auto"],includeHidden:!1,reversed:!1,allowDataOverflow:!1,allowDuplicatedCategory:!1,dataKey:void 0,id:0,name:"",range:[64,64],scale:"auto",type:"number",unit:""},U2=(e,t)=>{var n=e.cartesianAxis.zAxis[t];return n??BSs},io=(e,t,n)=>{switch(t){case"xAxis":return gl(e,n);case"yAxis":return hl(e,n);case"zAxis":return U2(e,n);case"angleAxis":return m2(e,n);case"radiusAxis":return p2(e,n);default:throw new Error("Unexpected axis type: ".concat(t))}},FSs=(e,t,n)=>{switch(t){case"xAxis":return gl(e,n);case"yAxis":return hl(e,n);default:throw new Error("Unexpected axis type: ".concat(t))}},Ty=(e,t,n)=>{switch(t){case"xAxis":return gl(e,n);case"yAxis":return hl(e,n);case"angleAxis":return m2(e,n);case"radiusAxis":return p2(e,n);default:throw new Error("Unexpected axis type: ".concat(t))}},aQ=e=>e.graphicalItems.cartesianItems.some(t=>t.type==="bar")||e.graphicalItems.polarItems.some(t=>t.type==="radialBar");function oQ(e,t){return n=>{switch(e){case"xAxis":return"xAxisId"in n&&n.xAxisId===t;case"yAxis":return"yAxisId"in n&&n.yAxisId===t;case"zAxis":return"zAxisId"in n&&n.zAxisId===t;case"angleAxis":return"angleAxisId"in n&&n.angleAxisId===t;case"radiusAxis":return"radiusAxisId"in n&&n.radiusAxisId===t;default:return!1}}}var L0=e=>e.graphicalItems.cartesianItems,zSs=ce([pa,A0],oQ),sQ=(e,t,n)=>e.filter(n).filter(a=>t?.includeHidden===!0?!0:!a.hide),ef=ce([L0,io,zSs],sQ,{memoizeOptions:{resultEqualityCheck:_0}}),rQ=ce([ef],e=>e.filter(t=>t.type==="area"||t.type==="bar").filter(R0)),iQ=e=>e.filter(t=>!("stackId"in t)||t.stackId===void 0),qSs=ce([ef],iQ),lQ=e=>e.map(t=>
953t.data).filter(Boolean).flat(1),HSs=ce([ef],e=>e.some(t=>!t.data)),cQ=ce([ef],lQ,{memoizeOptions:{resultEqualityCheck:_0}}),dQ=(e,t)=>{var{chartData:n=[],dataStartIndex:a,dataEndIndex:s}=t;return e.length>0?e:n.slice(a,s+1)},B2=ce([cQ,$0],dQ),VSs=(e,t,n)=>t?.dataKey!=null?e.map(a=>({value:jn(a,t.dataKey)})):n.length>0?n.map(a=>a.dataKey).flatMap(a=>e.map(s=>({value:jn(s,a)}))):e.map(a=>({value:a})),uQ=(e,t,n,a,s,r)=>{var{chartData:i=[],dataStartIndex:c,dataEndIndex:d}=a,m=VSs(e,t,n);if(s&&t?.dataKey!=null&&r.length>0){var f=i.slice(c,d+1),p=f.map(y=>({value:jn(y,t.dataKey)})).filter(y=>y.value!=null);return[...p,...m]}return m},Ry=ce([B2,io,ef,$0,HSs,cQ],uQ);function Wm(e){if(si(e)||e instanceof Date){var t=Number(e);if(ht(t))return t}}function tB(e){if(Array.isArray(e)){var t=[Wm(e[0]),Wm(e[1])];return ni(t)?t:void 0}var n=Wm(e);if(n!=null)return[n,n]}function ii(e){return e.map(Wm).filter(So)}function KSs(e,t){var n=Wm(e),a=Wm(t);return n==null&&a==null?0:n==null?-1:a==null?1:n-a}var GSs=ce([Ry],e=>e?.map(t=>t.value).sort(KSs));function mQ(e,t){switch(e){case"xAxis":return t.direction==="x";case"yAxis":return t.direction==="y";default:return!1}}function WSs(e,t,n){if(!n)return[];if(!n.length)return[];var a;if(typeof t=="number"&&!hr(t))a=t;else if(Array.isArray(t)){var s=ii(t);s.length>0&&(a=Math.max(...s))}return a==null?[]:ii(n.flatMap(r=>{var i=jn(e,r.dataKey),c,d;if(Array.isArray(i)?[c,d]=i:c=d=i,!(!ht(c)||!ht(d)))return[a-c,a+d]}))}var ea=e=>{var t=fa(e),n=Zp(e);return Ty(e,t,n)},Tp=ce([ea],e=>e?.dataKey),YSs=ce([rQ,$0,ea],yY),pQ=(e,t,n,a)=>{var s={},r=t.reduce((i,c)=>{if(c.stackId==null)return i;var d=i[c.stackId];return d==null&&(d=[]),d.push(c),i[c.stackId]=d,i},s);return Object.fromEntries(Object.entries(r).map(i=>{var[c,d]=i,m=a?[...d].reverse():d,f=m.map(T0);return[c,{stackedData:Y$s(e,f,n),graphicalItems:m}]}))},_$=ce([YSs,rQ,w0,dY],pQ),fQ=(e,t,n,a)=>{var{dataStartIndex:s,dataEndIndex:r}=t;if(a==null&&n!=="zAxis"){var i=J$s(e,s,r);if(!(i!=null&&i[0]===0&&i[1]===0))return i}},QSs=ce([io],e=>e.allowDataOverflow),F2=e=>{var t;if(e==null||!("domain"in e))return kP;if(e.domain!=null)return e.domain;if("ticks"in e&&e.ticks!=null){if(e.type==="number"){var n=ii(e.ticks);return[Math.min(...n),Math.max(...n)]}if(e.type==="category")return e.ticks.map(String)}return(t=e?.domain)!==null&&t!==void 0?t:kP},gQ=ce([io],F2),hQ=ce([gQ,QSs],XW),XSs=ce([_$,Ar,pa,hQ],fQ,{memoizeOptions:{resultEqualityCheck:P0}}),z2=e=>e.errorBars,ZSs=(e,t,n)=>e.flatMap(a=>t[a.id]).filter(Boolean).filter(a=>mQ(n,a)),j$=function(){for(var t=arguments.length,n=new Array(t),a=0;a<t;a++)n[a]=arguments[a];
953var s=n.filter(Boolean);if(s.length!==0){var r=s.flat(),i=Math.min(...r),c=Math.max(...r);return[i,c]}},yQ=function(t,n,a,s,r){var i=arguments.length>5&&arguments[5]!==void 0?arguments[5]:[],c,d;if(a.length>0&&a.forEach(m=>{var f,p=m.data!=null?[...m.data]:i,y=(f=s[m.id])===null||f===void 0?void 0:f.filter(v=>mQ(r,v));p.forEach(v=>{var $,x=jn(v,($=n.dataKey)!==null&&$!==void 0?$:m.dataKey),w=WSs(v,x,y);if(w.length>=2){var S=Math.min(...w),k=Math.max(...w);(c==null||S<c)&&(c=S),(d==null||k>d)&&(d=k)}var T=tB(x);T!=null&&(c=c==null?T[0]:Math.min(c,T[0]),d=d==null?T[1]:Math.max(d,T[1]))})}),n?.dataKey!=null&&a.length===0&&t.forEach(m=>{var f=tB(jn(m,n.dataKey));f!=null&&(c=c==null?f[0]:Math.min(c,f[0]),d=d==null?f[1]:Math.max(d,f[1]))}),ht(c)&&ht(d))return[c,d]},JSs=ce([B2,io,qSs,z2,pa,Fks],yQ,{memoizeOptions:{resultEqualityCheck:P0}});function eAs(e){var{value:t}=e;if(si(t)||t instanceof Date)return t}var tAs=(e,t,n)=>{var a=e.map(eAs).filter(s=>s!=null);return n&&(t.dataKey==null||t.allowDuplicatedCategory&&PG(a))?YW(0,e.length):t.allowDuplicatedCategory?a:Array.from(new Set(a))},vQ=e=>e.referenceElements.dots,tf=(e,t,n)=>e.filter(a=>a.ifOverflow==="extendDomain").filter(a=>t==="xAxis"?a.xAxisId===n:a.yAxisId===n),nAs=ce([vQ,pa,A0],tf),bQ=e=>e.referenceElements.areas,aAs=ce([bQ,pa,A0],tf),xQ=e=>e.referenceElements.lines,oAs=ce([xQ,pa,A0],tf),$Q=(e,t)=>{if(e!=null){var n=ii(e.map(a=>t==="xAxis"?a.x:a.y));if(n.length!==0)return[Math.min(...n),Math.max(...n)]}},sAs=ce(nAs,pa,$Q),wQ=(e,t)=>{if(e!=null){var n=ii(e.flatMap(a=>[t==="xAxis"?a.x1:a.y1,t==="xAxis"?a.x2:a.y2]));if(n.length!==0)return[Math.min(...n),Math.max(...n)]}},rAs=ce([aAs,pa],wQ);function iAs(e){var t;if(e.x!=null)return ii([e.x]);var n=(t=e.segment)===null||t===void 0?void 0:t.map(a=>a.x);return n==null||n.length===0?[]:ii(n)}function lAs(e){var t;if(e.y!=null)return ii([e.y]);var n=(t=e.segment)===null||t===void 0?void 0:t.map(a=>a.y);return n==null||n.length===0?[]:ii(n)}var kQ=(e,t)=>{if(e!=null){var n=e.flatMap(a=>t==="xAxis"?iAs(a):lAs(a));if(n.length!==0)return[Math.min(...n),Math.max(...n)]}},cAs=ce([oAs,pa],kQ),dAs=ce(sAs,cAs,rAs,(e,t,n)=>j$(e,n,t)),CQ=(e,t,n,a,s,r,i,c)=>{if(n!=null)return n;var d=i==="vertical"&&c==="xAxis"||i==="horizontal"&&c==="yAxis",m=d?j$(a,r,s):j$(r,s);return qks(t,m,e.allowDataOverflow)},uAs=ce([io,gQ,hQ,XSs,JSs,dAs,Ut,pa],CQ,{memoizeOptions:{resultEqualityCheck:P0}}),mAs=[0,1],SQ=(e,t,n,a,s,r,i)=>{if(!((e==null||n==null||n.length===0)&&i===void 0)){var{dataKey:c,type:d}=e,m=pi(t,r);if(m&&c==null){var f;return YW(0,(f=n?.length)!==null&&f!==void 0?f:0)}return d==="category"?tAs(a,e,m):s==="expand"&&!m?mAs:i}},q2=ce([io,Ut,B2,Ry,w0,pa,uAs],SQ),nf=ce([io,aQ,c2],JY),AQ=(e,t,n)=>{var{niceTicks:a}=t;if(a!=="none"){var s=F2(t),r=Array.isArray(s)&&(s[0]==="auto"||s[1]==="auto");if((a==="snap125"||a==="adaptive")&&t!=null&&t.tickCount&&ni(e)){if(r)return uU(e,t.tickCount,t.allowDecimals,a);if(t.type==="number")return mU(e,t.tickCount,t.allowDecimals,a)}if(a==="auto"&&n==="linear"&&t!=null&&t.tickCount){if(r&&ni(e))return uU(e,t.tickCount,t.allowDecimals,"adaptive");if(t.type==="number"&&ni(e))return mU(e,t.tickCount,t.allowDecimals,"adaptive")}}},H2=ce([q2,Ty,nf],AQ),TQ=(e,t,n,a)=>{if(a!=="angleAxis"&&e?.type==="number"&&ni(t)&&Array.isArray(n)&&n.length>0){var s,r,i=t[0],c=(s=n[0])!==null&&s!==void 0?s:0,d=t[1],m=(r=n[n.length-1])!==null&&r!==void 0?r:0;return[Math.min(i,c),Math.max(d,m)]}return t},pAs=ce([io,q2,H2,pa],TQ),fAs=ce(Ry,io,(e,t)=>{if(!(!t||t.type!=="number")){var n=1/0,a=Array.from(ii(e.map(p=>p.value))).sort((p,y)=>p-y),s=a[0],r=a[a.length-1];if(s==null||r==null)return 1/0;var i=r-s;if(i===0)return 1/0;for(var c=0;c<a.length-1;c++){var d=a[c],m=a[c+1];if(!(d==null||m==null)){var f=m-d;n=Math.min(n,f)}}return n/i}}),RQ=ce(fAs,Ut,cY,ma,(e,t,n,a,s)=>s,(e,t,n,a,s)=>{if(!ht(e))return 0;var r=t==="vertical"?a.height:a.width;if(s==="gap")return e*r/2;if(s==="no-gap"){var i=yr(n,e*r),c=e*r/2;return c-i-(c-i)/r*i}return 0}),gAs=(e,t,n)=>{var a=gl(e,t);return a==null||typeof a.padding!="string"?0:RQ(e,"xAxis",t,n,a.padding)},hAs=(e,t,n)=>{var a=hl(e,t);return a==null||typeof a.padding!="string"?0:RQ(e,"yAxis",t,n,a.padding)},yAs=ce(gl,gAs,(e,t)=>{var n,a;if(e==null)return{left:0,right:0};var{padding:s}=e;return typeof s=="string"?{left:t,right:t}:{left:((n=s.left)!==null&&n!==void 0?n:0)+t,right:((a=s.right)!==null&&a!==void 0?a:0)+t}}),vAs=ce(hl,hAs,(e,t)=>{var n,a;if(e==null)return{top:0,bottom:0};var{padding:s}=e;return typeof s=="string"?{top:t,bottom:t}:{top:((n=s.top)!==null&&n!==void 0?n:0)+t,bottom:((a=s.bottom)!==null&&a!==void 0?a:0)+t}}),bAs=ce([ma,yAs,f0,p0,(e,t,n)=>n],(e,t,n,a,s)=>{var{padding:r}=a;return s?[r.left,n.width-r.right]:[e.left+t.left,e.left+e.width-t.right]}),xAs=ce([ma,Ut,vAs,f0,p0,(e,t,n)=>n],(e,t,n,a,s,r)=>{var{padding:i}=s;return r?[a.height-i.bottom,i.top]:t==="horizontal"?[e.top+e.height-n.bottom,e.top+n.top]:[e.top+n.top,e.top+e.height-n.bottom]}),Py=(e,t,n,a)=>{var s;switch(t){case"xAxis":return bAs(e,n,a);case"yAxis":return xAs(e,n,a);case"zAxis":return(s=U2(e,n))===null||s===void 0?void 0:s.range;case"angleAxis":return fY(e);case"radiusAxis":return gY(e,n);default:return}},PQ=ce([io,Py],k0),$As=ce([nf,pAs],oCs),V2=ce([io,nf,$As,PQ],L2),_Q=(e,t,n,a)=>
953{if(!(n==null||n.dataKey==null)){var{type:s,scale:r}=n,i=pi(e,a);if(i&&(s==="number"||r!=="auto"))return t.map(c=>c.value)}},K2=ce([Ut,Ry,Ty,pa],_Q),U0=ce([V2],g2);ce([V2],ISs);ce([V2,GSs],eQ);ce([ef,z2,pa],ZSs);function jQ(e,t){return e.id<t.id?-1:e.id>t.id?1:0}var B0=(e,t)=>t,F0=(e,t,n)=>n,wAs=ce(u0,B0,F0,(e,t,n)=>e.filter(a=>a.orientation===t).filter(a=>a.mirror===n).sort(jQ)),kAs=ce(m0,B0,F0,(e,t,n)=>e.filter(a=>a.orientation===t).filter(a=>a.mirror===n).sort(jQ)),NQ=(e,t)=>({width:e.width,height:t.height}),CAs=(e,t)=>{var n=typeof t.width=="number"?t.width:by;return{width:n,height:e.height}},DQ=ce(ma,gl,NQ),SAs=(e,t,n)=>{switch(t){case"top":return e.top;case"bottom":return n-e.bottom;default:return 0}},AAs=(e,t,n)=>{switch(t){case"left":return e.left;case"right":return n-e.right;default:return 0}},TAs=ce(pl,ma,wAs,B0,F0,(e,t,n,a,s)=>{var r={},i;return n.forEach(c=>{var d=NQ(t,c);i==null&&(i=SAs(t,a,e));var m=a==="top"&&!s||a==="bottom"&&s;r[c.id]=i-Number(m)*d.height,i+=(m?-1:1)*d.height}),r}),RAs=ce(ml,ma,kAs,B0,F0,(e,t,n,a,s)=>{var r={},i;return n.forEach(c=>{var d=CAs(t,c);i==null&&(i=AAs(t,a,e));var m=a==="left"&&!s||a==="right"&&s;r[c.id]=i-Number(m)*d.width,i+=(m?-1:1)*d.width}),r}),PAs=(e,t)=>{var n=gl(e,t);if(n!=null)return TAs(e,n.orientation,n.mirror)},_As=ce([ma,gl,PAs,(e,t)=>t],(e,t,n,a)=>{if(t!=null){var s=n?.[a];return s==null?{x:e.left,y:0}:{x:e.left,y:s}}}),jAs=(e,t)=>{var n=hl(e,t);if(n!=null)return RAs(e,n.orientation,n.mirror)},NAs=ce([ma,hl,jAs,(e,t)=>t],(e,t,n,a)=>{if(t!=null){var s=n?.[a];return s==null?{x:0,y:e.top}:{x:s,y:e.top}}}),MQ=ce(ma,hl,(e,t)=>{var n=typeof t.width=="number"?t.width:by;return{width:n,height:e.height}}),nB=(e,t,n)=>{switch(t){case"xAxis":return DQ(e,n).width;case"yAxis":return MQ(e,n).height;default:return}},EQ=(e,t,n,a)=>{if(n!=null){var{allowDuplicatedCategory:s,type:r,dataKey:i}=n,c=pi(e,a),d=t.map(f=>f.value),m=d.filter(f=>f!=null);if(i&&c&&r==="category"&&s&&PG(m))return d}},G2=ce([Ut,Ry,io,pa],EQ),aB=ce([Ut,FSs,nf,U0,G2,K2,Py,H2,pa],(e,t,n,a,s,r,i,c,d)=>{if(t!=null){var m=pi(e,d);return{angle:t.angle,interval:t.interval,minTickGap:t.minTickGap,orientation:t.orientation,tick:t.tick,tickCount:t.tickCount,tickFormatter:t.tickFormatter,ticks:t.ticks,type:t.type,unit:t.unit,axisType:d,categoricalDomain:r,duplicateDomain:s,isCategorical:m,niceTicks:c,range:i,realScaleType:n,scale:a}}}),DAs=(e,t,n,a,s,r,i,c,d)=>{if(!(t==null||a==null)){var m=pi(e,d),{type:f,ticks:p,tickCount:y}=t,v=n==="scaleBand"&&typeof a.bandwidth=="function"?a.bandwidth()/2:2,$=f==="category"&&a.bandwidth?a.bandwidth()/v:0;$=d==="angleAxis"&&r!=null&&r.length>=2?Co(r[0]-r[1])*2*$:$;var x=p||s;return x?x.map((w,S)=>{var k=i?i.indexOf(w):w,T=a.map(k);return ht(T)?{index:S,coordinate:T+$,value:w,offset:$}:null}).filter(So):m&&c?c.map((w,S)=>{var k=a.map(w);return ht(k)?{coordinate:k+$,value:w,index:S,offset:$}:null}).filter(So):a.ticks?a.ticks(y).map((w,S)=>{var k=a.map(w);return ht(k)?{coordinate:k+$,value:w,index:S,offset:$}:null}).filter(So):a.domain().map((w,S)=>{var k=a.map(w);return ht(k)?{coordinate:k+$,value:i?i[w]:w,index:S,offset:$}:null}).filter(So)}},IQ=ce([Ut,Ty,nf,U0,H2,Py,G2,K2,pa],DAs),MAs=(e,t,n,a,s,r,i)=>{if(!(t==null||n==null||a==null||a[0]===a[1])){var c=pi(e,i),{tickCount:d}=t,m=0;return m=i==="angleAxis"&&a?.length>=2?Co(a[0]-a[1])*2*m:m,c&&r?r.map((f,p)=>{var y=n.map(f);return ht(y)?{coordinate:y+m,value:f,index:p,offset:m}:null}).filter(So):n.ticks?n.ticks(d).map((f,p)=>{var y=n.map(f);return ht(y)?{coordinate:y+m,value:f,index:p,offset:m}:null}).filter(So):n.domain().map((f,p)=>{var y=n.map(f);return ht(y)?{coordinate:y+m,value:s?s[f]:f,index:p,offset:m}:null}).filter(So)}},Pc=ce([Ut,Ty,U0,Py,G2,K2,pa],MAs),_c=ce(io,U0,(e,t)=>{if(!(e==null||t==null))return P$(P$({},e),{},{scale:t})}),EAs=ce([io,nf,q2,PQ],L2),IAs=ce([EAs],g2);ce((e,t,n)=>U2(e,n),IAs,(e,t)=>{if(!(e==null||t==null))return P$(P$({},e),{},{scale:t})});var OAs=ce([Ut,u0,m0],(e,t,n)=>{switch(e){case"horizontal":return t.some(a=>a.reversed)?"right-to-left":"left-to-right";case"vertical":return n.some(a=>a.reversed)?"bottom-to-top":"top-to-bottom";case"centric":case"radial":return"left-to-right";default:return}}),LAs=(e,t,n)=>{var a;return(a=e.renderedTicks[t])===null||a===void 0?void 0:a[n]};ce([LAs],e=>{if(!(!e||e.length===0))return t=>{var n,a=1/0,s=e[0];for(var r of e){var i=Math.abs(r.coordinate-t);i<a&&(a=i,s=r)}return(n=s)===null||n===void 0?void 0:n.value}});var OQ=e=>e.options.defaultTooltipEventType,LQ=e=>e.options.validateTooltipEventTypes;
953function UQ(e,t,n){if(e==null)return t;var a=e?"axis":"item";return n==null?t:n.includes(a)?a:t}function _y(e,t){var n=OQ(e),a=LQ(e);return UQ(t,n,a)}function UAs(e){return Ge(t=>_y(t,e))}var BQ=(e,t)=>{var n,a=Number(t);if(!(hr(a)||t==null))return a>=0?e==null||(n=e[a])===null||n===void 0?void 0:n.value:void 0},BAs=e=>e.tooltip.settings,oc={active:!1,index:null,dataKey:void 0,graphicalItemId:void 0,coordinate:void 0},FAs={itemInteraction:{click:oc,hover:oc},axisInteraction:{click:oc,hover:oc},keyboardInteraction:oc,syncInteraction:{active:!1,index:null,dataKey:void 0,label:void 0,coordinate:void 0,sourceViewBox:void 0,graphicalItemId:void 0},tooltipItemPayloads:[],settings:{shared:void 0,trigger:"hover",axisId:0,active:!1,defaultIndex:void 0}},FQ=Ka({name:"tooltip",initialState:FAs,reducers:{addTooltipEntrySettings:{reducer(e,t){e.tooltipItemPayloads.push(t.payload)},prepare:pn()},replaceTooltipEntrySettings:{reducer(e,t){var{prev:n,next:a}=t.payload,s=Rs(e).tooltipItemPayloads.indexOf(n);s>-1&&(e.tooltipItemPayloads[s]=a)},prepare:pn()},removeTooltipEntrySettings:{reducer(e,t){var n=Rs(e).tooltipItemPayloads.indexOf(t.payload);n>-1&&e.tooltipItemPayloads.splice(n,1)},prepare:pn()},setTooltipSettingsState(e,t){e.settings=t.payload},setActiveMouseOverItemIndex(e,t){e.syncInteraction.active=!1,e.syncInteraction.sourceViewBox=void 0,e.keyboardInteraction.active=!1,e.itemInteraction.hover.active=!0,e.itemInteraction.hover.index=t.payload.activeIndex,e.itemInteraction.hover.dataKey=t.payload.activeDataKey,e.itemInteraction.hover.graphicalItemId=t.payload.activeGraphicalItemId,e.itemInteraction.hover.coordinate=t.payload.activeCoordinate},mouseLeaveChart(e){e.itemInteraction.hover.active=!1,e.axisInteraction.hover.active=!1},mouseLeaveItem(e){e.itemInteraction.hover.active=!1},setActiveClickItemIndex(e,t){e.syncInteraction.active=!1,e.syncInteraction.sourceViewBox=void 0,e.itemInteraction.click.active=!0,e.keyboardInteraction.active=!1,e.itemInteraction.click.index=t.payload.activeIndex,e.itemInteraction.click.dataKey=t.payload.activeDataKey,e.itemInteraction.click.graphicalItemId=t.payload.activeGraphicalItemId,e.itemInteraction.click.coordinate=t.payload.activeCoordinate},setMouseOverAxisIndex(e,t){e.syncInteraction.active=!1,e.syncInteraction.sourceViewBox=void 0,e.axisInteraction.hover.active=!0,e.keyboardInteraction.active=!1,e.axisInteraction.hover.index=t.payload.activeIndex,e.axisInteraction.hover.dataKey=t.payload.activeDataKey,e.axisInteraction.hover.coordinate=t.payload.activeCoordinate},setMouseClickAxisIndex(e,t){e.syncInteraction.active=!1,e.syncInteraction.sourceViewBox=void 0,e.keyboardInteraction.active=!1,e.axisInteraction.click.active=!0,e.axisInteraction.click.index=t.payload.activeIndex,e.axisInteraction.click.dataKey=t.payload.activeDataKey,e.axisInteraction.click.coordinate=t.payload.activeCoordinate},setSyncInteraction(e,t){e.syncInteraction=t.payload},setKeyboardInteraction(e,t){e.keyboardInteraction.active=t.payload.active,e.keyboardInteraction.index=t.payload.activeIndex,e.keyboardInteraction.coordinate=t.payload.activeCoordinate}}}),{addTooltipEntrySettings:zAs,replaceTooltipEntrySettings:qAs,removeTooltipEntrySettings:HAs,setTooltipSettingsState:VAs,setActiveMouseOverItemIndex:zQ,mouseLeaveItem:KAs,mouseLeaveChart:qQ,setActiveClickItemIndex:GAs,setMouseOverAxisIndex:HQ,setMouseClickAxisIndex:WAs,setSyncInteraction:jg,setKeyboardInteraction:N$}=FQ.actions,YAs=FQ.reducer;function oB(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,a)}return n}function Db(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?oB(Object(n),!0).forEach(function(a){QAs(e,a,n[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):oB(Object(n)).forEach(function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(n,a))})}return e}function QAs(e,t,n){return(t=XAs(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function XAs(e){var t=ZAs(e,"string");return typeof t=="symbol"?t:t+""}function ZAs(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var a=n.call(e,t);if(typeof a!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}
953function JAs(e,t,n){return t==="axis"?n==="click"?e.axisInteraction.click:e.axisInteraction.hover:n==="click"?e.itemInteraction.click:e.itemInteraction.hover}function eTs(e){return e.index!=null}var VQ=(e,t,n,a)=>{if(t==null)return oc;var s=JAs(e,t,n);if(s==null)return oc;if(s.active)return s;if(e.keyboardInteraction.active)return e.keyboardInteraction;if(e.syncInteraction.active&&e.syncInteraction.index!=null)return e.syncInteraction;var r=e.settings.active===!0;if(eTs(s)){if(r)return Db(Db({},s),{},{active:!0})}else if(a!=null)return{active:!0,coordinate:void 0,dataKey:void 0,index:a,graphicalItemId:void 0};return Db(Db({},oc),{},{coordinate:s.coordinate})};function tTs(e){if(typeof e=="number")return Number.isFinite(e)?e:void 0;if(e instanceof Date){var t=e.valueOf();return Number.isFinite(t)?t:void 0}var n=Number(e);return Number.isFinite(n)?n:void 0}function nTs(e,t){var n=tTs(e),a=t[0],s=t[1];if(n===void 0)return!1;var r=Math.min(a,s),i=Math.max(a,s);return n>=r&&n<=i}function aTs(e,t,n){if(n==null||t==null)return!0;var a=jn(e,t);return a==null||!ni(n)?!0:nTs(a,n)}var zg=(e,t,n,a)=>{var s=e?.index;if(s==null)return null;var r=Number(s);if(!ht(r))return s;var i=0,c=1/0;t.length>0&&(c=t.length-1);var d=Math.max(i,Math.min(r,c)),m=t[d];return m==null||aTs(m,n,a)?String(d):null},KQ=(e,t,n,a,s,r,i)=>{if(r!=null){var c=i[0],d=c?.getPosition(r);if(d!=null)return d;var m=s?.[Number(r)];if(m)switch(n){case"horizontal":return{x:m.coordinate,y:(a.top+t)/2};default:return{x:(a.left+e)/2,y:m.coordinate}}}},GQ=(e,t,n,a)=>{if(t==="axis")return e.tooltipItemPayloads;if(e.tooltipItemPayloads.length===0)return[];var s;if(n==="hover"?s=e.itemInteraction.hover.graphicalItemId:s=e.itemInteraction.click.graphicalItemId,e.syncInteraction.active&&s==null)return e.tooltipItemPayloads;if(s==null&&(a!=null||e.keyboardInteraction.active)){var r=e.tooltipItemPayloads[0];return r!=null?[r]:[]}return e.tooltipItemPayloads.filter(i=>{var c;return((c=i.settings)===null||c===void 0?void 0:c.graphicalItemId)===s})},WQ=e=>e.options.tooltipPayloadSearcher,af=e=>e.tooltip;function sB(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,a)}return n}function rB(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?sB(Object(n),!0).forEach(function(a){oTs(e,a,n[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):sB(Object(n)).forEach(function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(n,a))})}return e}function oTs(e,t,n){return(t=sTs(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function sTs(e){var t=rTs(e,"string");return typeof t=="symbol"?t:t+""}function rTs(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var a=n.call(e,t);if(typeof a!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function iTs(e){if(typeof e=="string"||typeof e=="number")return e}function lTs(e){if(typeof e=="string"||typeof e=="number"||typeof e=="boolean")return e}function cTs(e){if(typeof e=="string"||typeof e=="number")return e;if(typeof e=="function")return t=>e(t)}function iB(e){if(typeof e=="string")return e}function dTs(e){if(!(e==null||typeof e!="object")){var t="name"in e?iTs(e.name):void 0,n="unit"in e?lTs(e.unit):void 0,a="dataKey"in e?cTs(e.dataKey):void 0,s="payload"in e?e.payload:void 0,r="color"in e?iB(e.color):void 0,i="fill"in e?iB(e.fill):void 0;return{name:t,unit:n,dataKey:a,payload:s,color:r,fill:i}}}function uTs(e,t){return e??t}var YQ=(e,t,n,a,s,r,i)=>{if(!(t==null||r==null)){var{chartData:c,computedData:d,dataStartIndex:m,dataEndIndex:f}=n,p=[];return e.reduce((y,v)=>{var $,{dataDefinedOnItem:x,settings:w}=v,S=uTs(x,c),k=Array.isArray(S)?CW(S,m,f):S,T=($=w?.dataKey)!==null&&$!==void 0?$:a,R=w?.nameKey,_;if(a&&Array.isArray(k)&&!Array.isArray(k[0])&&i==="axis"?_=_G(k,a,s):_=r(k,t,d,R),Array.isArray(_))_.forEach(j=>{var N,I,z=dTs(j),E=z?.name,L=z?.dataKey,O=z?.payload,V=rB(rB({},w),{},{name:E,unit:z?.unit,color:(N=z?.color)!==null&&N!==void 0?N:w?.color,fill:(I=z?.fill)!==null&&I!==void 0?I:w?.fill});y.push(o5({tooltipEntrySettings:V,dataKey:L,payload:O,value:jn(O,L),name:E==null?void 0:String(E)}))});else{var P;y.push(o5({tooltipEntrySettings:w,dataKey:T,payload:_,value:jn(_,T),name:(P=jn(_,R))!==null&&P!==void 0?P:w?.name}))}return y},p)}},W2=ce([ea,aQ,c2],JY),mTs=ce([e=>e.graphicalItems.cartesianItems,e=>e.graphicalItems.polarItems],(e,t)=>[...e,...t]),pTs=ce([fa,Zp],oQ),Tu=ce([mTs,ea,pTs],sQ,{memoizeOptions:{resultEqualityCheck:_0}}),fTs=ce([Tu],e=>e.filter(R0)),QQ=ce([Tu],lQ,{memoizeOptions:{resultEqualityCheck:_0}}),gTs=ce([Tu],e=>e.some(t=>!t.data)),ru=ce([QQ,Ar],dQ),hTs=ce([fTs,Ar,ea],yY),Y2=ce([ru,ea,Tu,Ar,gTs,QQ],uQ),XQ=ce([ea],F2),yTs=ce([ea],e=>e.allowDataOverflow),ZQ=ce([XQ,yTs],XW),vTs=ce([Tu],e=>e.filter(R0)),bTs=ce([hTs,vTs,w0,dY],pQ),xTs=ce([bTs,Ar,fa,ZQ],fQ),$Ts=ce([Tu],iQ),wTs=ce([ru,ea,$Ts,z2,fa,zks],yQ,{memoizeOptions:{resultEqualityCheck:P0}}),kTs=ce([vQ,fa,Zp],tf),CTs=ce([kTs,fa],$Q),STs=ce([bQ,fa,Zp],tf),ATs=ce([STs,fa],wQ),TTs=ce([xQ,fa,Zp],tf),RTs=ce([TTs,fa],kQ),PTs=ce([CTs,RTs,ATs],j$),_Ts=ce([ea,XQ,ZQ,xTs,wTs,PTs,Ut,fa],CQ),Rp=ce([ea,Ut,ru,Y2,w0,fa,_Ts],SQ),jTs=ce([Rp,ea,W2],AQ),NTs=ce([ea,Rp,jTs,fa],TQ),JQ=e=>{var t=fa(e),n=Zp(e),a=!1;return Py(e,t,n,a)},eX=ce([ea,JQ],k0),DTs=ce([ea,W2,NTs,eX],L2),tX=ce([DTs],g2),MTs=ce([Ut,Y2,ea,fa],EQ),ETs=ce([Ut,Y2,ea,fa],_Q),ITs=(e,t,n,a,s,r,i,c)=>{if(t){var{type:d}=t,m=pi(e,c);if(a){var f=n==="scaleBand"&&a.bandwidth?a.bandwidth()/2:2,p=d==="category"&&a.bandwidth?a.bandwidth()/f:0;return p=c==="angleAxis"&&s!=null&&s?.length>=2?Co(s[0]-s[1])*2*p:p,m&&i?i.map((y,v)=>{var $=a.map(y);return ht($)?{coordinate:$+p,value:y,index:v,offset:p}:null}).filter(So):a.domain().map((y,v)=>{var $=a.map(y);return ht($)?{coordinate:$+p,value:r?r[y]:y,index:v,offset:p}:null}).filter(So)}}},yl=ce([Ut,ea,W2,tX,JQ,MTs,ETs,fa],ITs),Q2=ce([OQ,LQ,BAs],(e,t,n)=>UQ(n.shared,e,t)),nX=e=>e.tooltip.settings.trigger,X2=e=>e.tooltip.settings.defaultIndex,jy=ce([af,Q2,nX,X2],VQ),iu=ce([jy,ru,Tp,Rp],zg),aX=ce([yl,iu],BQ),oX=ce([jy],e=>{if(e)return e.dataKey}),OTs=ce([jy],e=>{if(e)return e.graphicalItemId}),sX=ce([af,Q2,nX,X2],GQ),LTs=ce([ml,pl,Ut,ma,yl,X2,sX],KQ),UTs=ce([jy,LTs],(e,t)=>e!=null&&e.coordinate?e.coordinate:t),BTs=ce([jy],e=>{var t;return(t=e?.active)!==null&&t!==void 0?t:!1}),FTs=ce([sX,iu,Ar,Tp,aX,WQ,Q2],YQ),zTs=ce([FTs],e=>{if(e!=null){var t=e.map(n=>n.payload).filter(n=>n!=null);return Array.from(new Set(t))}});function lB(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,a)}return n}function cB(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};
953t%2?lB(Object(n),!0).forEach(function(a){qTs(e,a,n[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):lB(Object(n)).forEach(function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(n,a))})}return e}function qTs(e,t,n){return(t=HTs(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function HTs(e){var t=VTs(e,"string");return typeof t=="symbol"?t:t+""}function VTs(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var a=n.call(e,t);if(typeof a!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var KTs=()=>Ge(ea),GTs=()=>{var e=KTs(),t=Ge(yl),n=Ge(tX);return $p(!e||!n?void 0:cB(cB({},e),{},{scale:n}),t)};function dB(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,a)}return n}function Cm(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?dB(Object(n),!0).forEach(function(a){WTs(e,a,n[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):dB(Object(n)).forEach(function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(n,a))})}return e}function WTs(e,t,n){return(t=YTs(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function YTs(e){var t=QTs(e,"string");return typeof t=="symbol"?t:t+""}function QTs(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var a=n.call(e,t);if(typeof a!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var XTs=(e,t,n,a)=>{var s=t.find(r=>r&&r.index===n);if(s){if(e==="horizontal")return{x:s.coordinate,y:a.relativeY};if(e==="vertical")return{x:a.relativeX,y:s.coordinate}}return{x:0,y:0}},ZTs=(e,t,n,a)=>{var s=t.find(m=>m&&m.index===n);if(s){if(e==="centric"){var r=s.coordinate,{radius:i}=a;return Cm(Cm(Cm({},a),Sa(a.cx,a.cy,i,r)),{},{angle:r,radius:i})}var c=s.coordinate,{angle:d}=a;return Cm(Cm(Cm({},a),Sa(a.cx,a.cy,c,d)),{},{angle:d,radius:c})}return{angle:0,clockWise:!1,cx:0,cy:0,endAngle:0,innerRadius:0,outerRadius:0,radius:0,startAngle:0,x:0,y:0}};function JTs(e,t){var{relativeX:n,relativeY:a}=e;return n>=t.left&&n<=t.left+t.width&&a>=t.top&&a<=t.top+t.height}var rX=(e,t,n,a,s)=>{var r,i=(r=t?.length)!==null&&r!==void 0?r:0;if(i<=1||e==null)return 0;if(a==="angleAxis"&&s!=null&&Math.abs(Math.abs(s[1]-s[0])-360)<=1e-6)for(var c=0;c<i;c++){var d,m,f,p,y,v=c>0?(d=n[c-1])===null||d===void 0?void 0:d.coordinate:(m=n[i-1])===null||m===void 0?void 0:m.coordinate,$=(f=n[c])===null||f===void 0?void 0:f.coordinate,x=c>=i-1?(p=n[0])===null||p===void 0?void 0:p.coordinate:(y=n[c+1])===null||y===void 0?void 0:y.coordinate,w=void 0;if(!(v==null||$==null||x==null))if(Co($-v)!==Co(x-$)){var S=[];if(Co(x-$)===Co(s[1]-s[0])){w=x;var k=$+s[1]-s[0];S[0]=Math.min(k,(k+v)/2),S[1]=Math.max(k,(k+v)/2)}else{w=v;var T=x+s[1]-s[0];S[0]=Math.min($,(T+$)/2),S[1]=Math.max($,(T+$)/2)}var R=[Math.min($,(w+$)/2),Math.max($,(w+$)/2)];if(e>R[0]&&e<=R[1]||e>=S[0]&&e<=S[1]){var _;return(_=n[c])===null||_===void 0?void 0:_.index}}else{var P=Math.min(v,x),j=Math.max(v,x);if(e>(P+$)/2&&e<=(j+$)/2){var N;return(N=n[c])===null||N===void 0?void 0:N.index}}}else if(t)for(var I=0;I<i;I++){var z=t[I];if(z!=null){var E=t[I+1],L=t[I-1];if(I===0&&E!=null&&e<=(z.coordinate+E.coordinate)/2||I===i-1&&L!=null&&e>(z.coordinate+L.coordinate)/2||I>0&&I<i-1&&L!=null&&E!=null&&e>(z.coordinate+L.coordinate)/2&&e<=(z.coordinate+E.coordinate)/2)return z.index}}return-1},iX=()=>Ge(c2),Z2=(e,t)=>t,lX=(e,t,n)=>n,J2=(e,t,n,a)=>a,eRs=ce(yl,e=>e0(e,t=>t.coordinate)),eN=ce([af,Z2,lX,J2],VQ),tN=ce([eN,ru,Tp,Rp],zg),tRs=(e,t,n)=>{if(t!=null){var a=af(e);return t==="axis"?n==="hover"?a.axisInteraction.hover.dataKey:a.axisInteraction.click.dataKey:n==="hover"?a.itemInteraction.hover.dataKey:a.itemInteraction.click.dataKey}},cX=ce([af,Z2,lX,J2],GQ),D$=ce([ml,pl,Ut,ma,yl,J2,cX],KQ),nRs=ce([eN,D$],(e,t)=>{var n;return(n=e.coordinate)!==null&&n!==void 0?n:t}),dX=ce([yl,tN],BQ),aRs=ce([cX,tN,Ar,Tp,dX,WQ,Z2],YQ),oRs=ce([eN,tN],(e,t)=>({isActive:e.active&&t!=null,activeIndex:t})),sRs=(e,t,n,a,s,r,i)=>{if(!(!e||!n||!a||!s)&&JTs(e,i)){var c=ews(e,t),d=rX(c,r,s,n,a),m=XTs(t,s,d,e);return{activeIndex:String(d),activeCoordinate:m}}},rRs=(e,t,n,a,s,r,i)=>{if(!(!e||!a||!s||!r||!n)){var c=jks(e,n);if(c){var d=tws(c,t),m=rX(d,i,r,a,s),f=ZTs(t,r,m,c);return{activeIndex:String(m),activeCoordinate:f}}}},iRs=(e,t,n,a,s,r,i,c)=>{if(!(!e||!t||!a||!s||!r))return t==="horizontal"||t==="vertical"?sRs(e,t,a,s,r,i,c):rRs(e,t,n,a,s,r,i)},lRs=ce(e=>e.zIndex.zIndexMap,(e,t)=>t,(e,t,n)=>n,(e,t,n)=>{if(t!=null){var a=e[t];if(a!=null)return n?a.panoramaElement:a.element}}),cRs=ce(e=>e.zIndex.zIndexMap,e=>{var t=Object.keys(e).map(a=>parseInt(a,10)).concat(Object.values(la)),n=Array.from(new Set(t));return n.sort((a,s)=>a-s)},{memoizeOptions:{resultEqualityCheck:aCs}});function uB(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,a)}return n}function mB(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};
953t%2?uB(Object(n),!0).forEach(function(a){dRs(e,a,n[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):uB(Object(n)).forEach(function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(n,a))})}return e}function dRs(e,t,n){return(t=uRs(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function uRs(e){var t=mRs(e,"string");return typeof t=="symbol"?t:t+""}function mRs(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var a=n.call(e,t);if(typeof a!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var pRs={},fRs={zIndexMap:Object.values(la).reduce((e,t)=>mB(mB({},e),{},{[t]:{element:void 0,panoramaElement:void 0,consumers:0}}),pRs)},gRs=new Set(Object.values(la));function hRs(e){return gRs.has(e)}var uX=Ka({name:"zIndex",initialState:fRs,reducers:{registerZIndexPortal:{reducer:(e,t)=>{var{zIndex:n}=t.payload;e.zIndexMap[n]?e.zIndexMap[n].consumers+=1:e.zIndexMap[n]={consumers:1,element:void 0,panoramaElement:void 0}},prepare:pn()},unregisterZIndexPortal:{reducer:(e,t)=>{var{zIndex:n}=t.payload;e.zIndexMap[n]&&(e.zIndexMap[n].consumers-=1,e.zIndexMap[n].consumers<=0&&!hRs(n)&&delete e.zIndexMap[n])},prepare:pn()},registerZIndexPortalElement:{reducer:(e,t)=>{var{zIndex:n,element:a,isPanorama:s}=t.payload;e.zIndexMap[n]?s?e.zIndexMap[n].panoramaElement=a:e.zIndexMap[n].element=a:e.zIndexMap[n]={consumers:0,element:s?void 0:a,panoramaElement:s?a:void 0}},prepare:pn()},unregisterZIndexPortalElement:{reducer:(e,t)=>{var{zIndex:n}=t.payload;e.zIndexMap[n]&&(t.payload.isPanorama?e.zIndexMap[n].panoramaElement=void 0:e.zIndexMap[n].element=void 0)},prepare:pn()}}}),{registerZIndexPortal:yRs,unregisterZIndexPortal:HA,registerZIndexPortalElement:vRs,unregisterZIndexPortalElement:bRs}=uX.actions,xRs=uX.reducer;function Fs(e){var{zIndex:t,children:n}=e,a=bws(),s=a&&t!==void 0&&t!==0,r=Ga(),i=h.useRef(void 0),c=h.useRef(new Set),d=gn(),m=Ge(p=>lRs(p,t,r));if(h.useLayoutEffect(()=>{if(!s){var p=c.current;p.forEach(v=>{d(HA({zIndex:v}))}),p.clear(),i.current=void 0;return}if(c.current.has(t)||(d(yRs({zIndex:t})),c.current.add(t)),m){i.current=m;var y=c.current;y.forEach(v=>{v!==t&&(d(HA({zIndex:v})),y.delete(v))})}},[d,t,s,m]),h.useLayoutEffect(()=>{var p=c.current;return()=>{p.forEach(y=>{d(HA({zIndex:y}))}),p.clear()}},[d]),!s)return n;var f=m??i.current;return f?li.createPortal(n,f):null}function CP(){return CP=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)({}).hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},CP.apply(null,arguments)}function pB(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,a)}return n}function Mb(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?pB(Object(n),!0).forEach(function(a){$Rs(e,a,n[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):pB(Object(n)).forEach(function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(n,a))})}return e}function $Rs(e,t,n){return(t=wRs(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function wRs(e){var t=kRs(e,"string");return typeof t=="symbol"?t:t+""}function kRs(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var a=n.call(e,t);if(typeof a!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function CRs(e){var{cursor:t,cursorComp:n,cursorProps:a}=e;return h.isValidElement(t)?h.cloneElement(t,a):h.createElement(n,a)}function SRs(e){var t,{coordinate:n,payload:a,index:s,offset:r,tooltipAxisBandSize:i,layout:c,cursor:d,tooltipEventType:m,chartName:f}=e,p=n,y=a,v=s;if(!d||!p||f!=="ScatterChart"&&m!=="axis")return null;var $,x,w;if(f==="ScatterChart")$=p,x=V0s,w=la.cursorLine;else if(f==="BarChart")$=K0s(c,p,r,i),x=VW,w=la.cursorRectangle;else if(c==="radial"&&NG(p)){var{cx:S,cy:k,radius:T,startAngle:R,endAngle:_}=KW(p);$={cx:S,cy:k,startAngle:R,endAngle:_,innerRadius:T,outerRadius:T},x=WW,w=la.cursorLine}else $={points:Eks(c,p,r)},x=Fg,w=la.cursorLine;var P=typeof d=="object"&&"className"in d?d.className:void 0,j=Mb(Mb(Mb(Mb({stroke:"#ccc",pointerEvents:"none"},r),$),gy(d)),{},{payload:y,payloadIndex:v,className:Lt("recharts-tooltip-cursor",P)});return h.createElement(Fs,{zIndex:(t=e.zIndex)!==null&&t!==void 0?t:w},h.createElement(CRs,{cursor:d,cursorComp:x,cursorProps:j}))}function ARs(e){var t=GTs(),n=_W(),a=Cu(),s=iX();return t==null||n==null||a==null||s==null?null:h.createElement(SRs,CP({}
953,e,{offset:n,layout:a,tooltipAxisBandSize:t,chartName:s}))}var mX=h.createContext(null),TRs=()=>h.useContext(mX),VA={exports:{}},fB;function RRs(){return fB||(fB=1,(function(e){var t=Object.prototype.hasOwnProperty,n="~";function a(){}Object.create&&(a.prototype=Object.create(null),new a().__proto__||(n=!1));function s(d,m,f){this.fn=d,this.context=m,this.once=f||!1}function r(d,m,f,p,y){if(typeof f!="function")throw new TypeError("The listener must be a function");var v=new s(f,p||d,y),$=n?n+m:m;return d._events[$]?d._events[$].fn?d._events[$]=[d._events[$],v]:d._events[$].push(v):(d._events[$]=v,d._eventsCount++),d}function i(d,m){--d._eventsCount===0?d._events=new a:delete d._events[m]}function c(){this._events=new a,this._eventsCount=0}c.prototype.eventNames=function(){var m=[],f,p;if(this._eventsCount===0)return m;for(p in f=this._events)t.call(f,p)&&m.push(n?p.slice(1):p);return Object.getOwnPropertySymbols?m.concat(Object.getOwnPropertySymbols(f)):m},c.prototype.listeners=function(m){var f=n?n+m:m,p=this._events[f];if(!p)return[];if(p.fn)return[p.fn];for(var y=0,v=p.length,$=new Array(v);y<v;y++)$[y]=p[y].fn;return $},c.prototype.listenerCount=function(m){var f=n?n+m:m,p=this._events[f];return p?p.fn?1:p.length:0},c.prototype.emit=function(m,f,p,y,v,$){var x=n?n+m:m;if(!this._events[x])return!1;var w=this._events[x],S=arguments.length,k,T;if(w.fn){switch(w.once&&this.removeListener(m,w.fn,void 0,!0),S){case 1:return w.fn.call(w.context),!0;case 2:return w.fn.call(w.context,f),!0;case 3:return w.fn.call(w.context,f,p),!0;case 4:return w.fn.call(w.context,f,p,y),!0;case 5:return w.fn.call(w.context,f,p,y,v),!0;case 6:return w.fn.call(w.context,f,p,y,v,$),!0}for(T=1,k=new Array(S-1);T<S;T++)k[T-1]=arguments[T];w.fn.apply(w.context,k)}else{var R=w.length,_;for(T=0;T<R;T++)switch(w[T].once&&this.removeListener(m,w[T].fn,void 0,!0),S){case 1:w[T].fn.call(w[T].context);break;case 2:w[T].fn.call(w[T].context,f);break;case 3:w[T].fn.call(w[T].context,f,p);break;case 4:w[T].fn.call(w[T].context,f,p,y);break;default:if(!k)for(_=1,k=new Array(S-1);_<S;_++)k[_-1]=arguments[_];w[T].fn.apply(w[T].context,k)}}return!0},c.prototype.on=function(m,f,p){return r(this,m,f,p,!1)},c.prototype.once=function(m,f,p){return r(this,m,f,p,!0)},c.prototype.removeListener=function(m,f,p,y){var v=n?n+m:m;if(!this._events[v])return this;if(!f)return i(this,v),this;var $=this._events[v];if($.fn)$.fn===f&&(!y||$.once)&&(!p||$.context===p)&&i(this,v);else{for(var x=0,w=[],S=$.length;x<S;x++)($[x].fn!==f||y&&!$[x].once||p&&$[x].context!==p)&&w.push($[x]);w.length?this._events[v]=w.length===1?w[0]:w:i(this,v)}return this},c.prototype.removeAllListeners=function(m){var f;return m?(f=n?n+m:m,this._events[f]&&i(this,f)):(this._events=new a,this._eventsCount=0),this},c.prototype.off=c.prototype.removeListener,c.prototype.addListener=c.prototype.on,c.prefixed=n,c.EventEmitter=c,e.exports=c})(VA)),VA.exports}var PRs=RRs();const _Rs=il(PRs);var Ph=new _Rs,SP="recharts.syncEvent.tooltip",gB="recharts.syncEvent.brush",pX=(e,t)=>{if(t&&Array.isArray(e)){var n=Number.parseInt(t,10);if(!hr(n))return e[n]}},jRs={chartName:"",tooltipPayloadSearcher:()=>{},eventEmitter:void 0,defaultTooltipEventType:"axis"},fX=Ka({name:"options",initialState:jRs,reducers:{createEventEmitter:e=>{e.eventEmitter==null&&(e.eventEmitter=Symbol("rechartsEventEmitter"))}}}),NRs=fX.reducer,{createEventEmitter:DRs}=fX.actions;function MRs(e){return e.tooltip.syncInteraction}var ERs={chartData:void 0,computedData:void 0,dataStartIndex:0,dataEndIndex:0},gX=Ka({name:"chartData",initialState:ERs,reducers:{setChartData(e,t){if(e.chartData=t.payload,t.payload==null){e.dataStartIndex=0,e.dataEndIndex=0;return}t.payload.length>0&&e.dataEndIndex!==t.payload.length-1&&(e.dataEndIndex=t.payload.length-1)},setComputedData(e,t){e.computedData=t.payload},setDataStartEndIndexes(e,t){var{startIndex:n,endIndex:a}=t.payload;n!=null&&(e.dataStartIndex=n),a!=null&&(e.dataEndIndex=a)}}}),{setChartData:hB,setDataStartEndIndexes:IRs,setComputedData:i6s}=gX.actions,ORs=gX.reducer,LRs=["x","y"];function yB(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,a)}return n}function Sm(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};
953t%2?yB(Object(n),!0).forEach(function(a){URs(e,a,n[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):yB(Object(n)).forEach(function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(n,a))})}return e}function URs(e,t,n){return(t=BRs(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function BRs(e){var t=FRs(e,"string");return typeof t=="symbol"?t:t+""}function FRs(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var a=n.call(e,t);if(typeof a!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function zRs(e,t){if(e==null)return{};var n,a,s=qRs(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a<r.length;a++)n=r[a],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(s[n]=e[n])}return s}function qRs(e,t){if(e==null)return{};var n={};for(var a in e)if({}.hasOwnProperty.call(e,a)){if(t.indexOf(a)!==-1)continue;n[a]=e[a]}return n}function HRs(){var e=Ge(d2),t=Ge(u2),n=gn(),a=Ge(uY),s=Ge(yl),r=Cu(),i=g0(),c=Ge(d=>d.rootProps.className);h.useEffect(()=>{if(e==null)return Wp;var d=(m,f,p)=>{if(t!==p&&e===m){if(f.payload.active===!1){n(jg({active:!1,coordinate:void 0,dataKey:void 0,index:null,label:void 0,sourceViewBox:void 0,graphicalItemId:void 0}));return}if(a==="index"){var y;if(i&&f!==null&&f!==void 0&&(y=f.payload)!==null&&y!==void 0&&y.coordinate&&f.payload.sourceViewBox){var v=f.payload.coordinate,{x:$,y:x}=v,w=zRs(v,LRs),{x:S,y:k,width:T,height:R}=f.payload.sourceViewBox,_=Sm(Sm({},w),{},{x:i.x+(T?($-S)/T:0)*i.width,y:i.y+(R?(x-k)/R:0)*i.height});n(Sm(Sm({},f),{},{payload:Sm(Sm({},f.payload),{},{coordinate:_})}))}else n(f);return}if(s!=null){var P;if(typeof a=="function"){var j={activeTooltipIndex:f.payload.index==null?void 0:Number(f.payload.index),isTooltipActive:f.payload.active,activeIndex:f.payload.index==null?void 0:Number(f.payload.index),activeLabel:f.payload.label,activeDataKey:f.payload.dataKey,activeCoordinate:f.payload.coordinate},N=a(s,j);P=s[N]}else a==="value"&&(P=s.find(q=>String(q.value)===f.payload.label));var{coordinate:I}=f.payload;if(I==null||i==null){n(jg({active:!1,coordinate:void 0,dataKey:void 0,index:null,label:void 0,sourceViewBox:void 0,graphicalItemId:void 0}));return}if(P==null){n(jg({active:!1,coordinate:void 0,dataKey:void 0,index:null,label:void 0,sourceViewBox:f.payload.sourceViewBox,graphicalItemId:void 0}));return}var{x:z,y:E}=I,L=Math.min(z,i.x+i.width),O=Math.min(E,i.y+i.height),V={x:r==="horizontal"?P.coordinate:L,y:r==="horizontal"?O:P.coordinate},ne=jg({active:f.payload.active,coordinate:V,dataKey:f.payload.dataKey,index:String(P.index),label:f.payload.label,sourceViewBox:f.payload.sourceViewBox,graphicalItemId:f.payload.graphicalItemId});n(ne)}}};return Ph.on(SP,d),()=>{Ph.off(SP,d)}},[c,n,t,e,a,s,r,i])}function VRs(){var e=Ge(d2),t=Ge(u2),n=gn();h.useEffect(()=>{if(e==null)return Wp;var a=(s,r,i)=>{t!==i&&e===s&&n(IRs(r))};return Ph.on(gB,a),()=>{Ph.off(gB,a)}},[n,t,e])}function KRs(){var e=gn();h.useEffect(()=>{e(DRs())},[e]),HRs(),VRs()}function GRs(e,t,n,a,s,r){var i=Ge($=>tRs($,e,t)),c=Ge(OTs),d=Ge(u2),m=Ge(d2),f=Ge(uY),p=Ge(MRs),y=p?.sourceViewBox!=null,v=g0();h.useEffect(()=>{if(!y&&m!=null&&d!=null){var $=jg({active:r,coordinate:n,dataKey:i,index:s,label:typeof a=="number"?String(a):a,sourceViewBox:v,graphicalItemId:c});Ph.emit(SP,m,$,d)}},[y,n,i,c,s,a,d,m,f,r,v])}function vB(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,a)}return n}function bB(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?vB(Object(n),!0).forEach(function(a){WRs(e,a,n[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):vB(Object(n)).forEach(function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(n,a))})}return e}function WRs(e,t,n){return(t=YRs(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function YRs(e){var t=QRs(e,"string");return typeof t=="symbol"?t:t+""}function QRs(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var a=n.call(e,t);if(typeof a!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function XRs(e){return e.dataKey}function ZRs(e,t){return h.isValidElement(e)?h.cloneElement(e,t):typeof e=="function"?h.createElement(e,t):
953h.createElement(x0s,t)}var xB=[],JRs={allowEscapeViewBox:{x:!1,y:!1},animationDuration:400,animationEasing:"ease",axisId:0,contentStyle:{},cursor:!0,filterNull:!0,includeHidden:!1,isAnimationActive:"auto",itemSorter:"name",itemStyle:{},labelStyle:{},offset:10,reverseDirection:{x:!1,y:!1},separator:" : ",trigger:"hover",useTranslate3d:!1,wrapperStyle:{}};function hX(e){var t,n,a=Va(e,JRs),{active:s,allowEscapeViewBox:r,animationDuration:i,animationEasing:c,content:d,filterNull:m,isAnimationActive:f,offset:p,payloadUniqBy:y,position:v,reverseDirection:$,useTranslate3d:x,wrapperStyle:w,cursor:S,shared:k,trigger:T,defaultIndex:R,portal:_,axisId:P}=a,j=gn(),N=typeof R=="number"?String(R):R;h.useEffect(()=>{j(VAs({shared:k,trigger:T,axisId:P,active:s,defaultIndex:N}))},[j,k,T,P,s,N]);var I=g0(),z=BW(),E=UAs(k),{activeIndex:L,isActive:O}=(t=Ge(we=>oRs(we,E,T,N)))!==null&&t!==void 0?t:{},V=Ge(we=>aRs(we,E,T,N)),ne=Ge(we=>dX(we,E,T,N)),q=Ge(we=>nRs(we,E,T,N)),M=V,F=TRs(),H=(n=s??O)!==null&&n!==void 0?n:!1,[ee,B]=WG([M,H]),G=E==="axis"?ne:void 0;GRs(E,T,q,G,L,H);var Q=_??F;if(Q==null||I==null||E==null)return null;var de=M??xB;H||(de=xB),m&&de.length&&(de=qG(de.filter(we=>we.value!=null&&(we.hide!==!0||a.includeHidden)),y,XRs));var Y=de.length>0,pe=bB(bB({},a),{},{payload:de,label:G,active:H,activeIndex:L,coordinate:q,accessibilityLayer:z}),se=h.createElement(j0s,{allowEscapeViewBox:r,animationDuration:i,animationEasing:c,isAnimationActive:f,active:H,coordinate:q,hasPayload:Y,offset:p,position:v,reverseDirection:$,useTranslate3d:x,viewB
953ox:I,wrapperStyle:w,lastBoundingBox:ee,innerRef:B,hasPortalFromProps:!!_},ZRs(d,pe));return h.createElement(h.Fragment,null,li.createPortal(se,Q),H&&h.createElement(ARs,{cursor:S,tooltipEventType:E,coordinate:q,payload:de,index:L}))}var yX=e=>null;yX.displayName="Cell";function ePs(e,t,n){return(t=tPs(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function tPs(e){var t=nPs(e,"string");return typeof t=="symbol"?t:t+""}function nPs(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var a=n.call(e,t);if(typeof a!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}class aPs{constructor(t){ePs(this,"cache",new Map),this.maxSize=t}get(t){var n=this.cache.get(t);return n!==void 0&&(this.cache.delete(t),this.cache.set(t,n)),n}set(t,n){if(this.cache.has(t))this.cache.delete(t);else if(this.cache.size>=this.maxSize){var a=this.cache.keys().next().value;a!=null&&this.cache.delete(a)}this.cache.set(t,n)}clear(){this.cache.clear()}size(){return this.cache.size}}function $B(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,a)}return n}function oPs(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?$B(Object(n),!0).forEach(function(a){sPs(e,a,n[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):$B(Object(n)).forEach(function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(n,a))})}return e}function sPs(e,t,n){return(t=rPs(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function rPs(e){var t=iPs(e,"string");return typeof t=="symbol"?t:t+""}function iPs(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var a=n.call(e,t);if(typeof a!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var lPs={cacheSize:2e3,enableCache:!0},vX=oPs({},lPs),wB=new aPs(vX.cacheSize),cPs={position:"absolute",top:"-20000px",left:0,padding:0,margin:0,border:"none",whiteSpace:"pre"},kB="recharts_measurement_span";function dPs(e,t){var n=t.fontSize||"",a=t.fontFamily||"",s=t.fontWeight||"",r=t.fontStyle||"",i=t.letterSpacing||"",c=t.textTransform||"";return"".concat(e,"|").concat(n,"|").concat(a,"|").concat(s,"|").concat(r,"|").concat(i,"|").concat(c)}var CB=(e,t)=>{try{var n=document.getElementById(kB);n||(n=document.createElement("span"),n.setAttribute("id",kB),n.setAttribute("aria-hidden","true"),document.body.appendChild(n)),Object.assign(n.style,cPs,t),n.textContent="".concat(e);var a=n.getBoundingClientRect();return{width:a.width,height:a.height}}catch{return{width:0,height:0}}},qg=function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(t==null||wy.isSsr)return{width:0,height:0};if(!vX.enableCache)return CB(t,n);var a=dPs(t,n),s=wB.get(a);if(s)return s;var r=CB(t,n);return wB.set(a,r),r},bX;function uPs(e,t,n){return(t=mPs(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function mPs(e){var t=pPs(e,"string");return typeof t=="symbol"?t:t+""}function pPs(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var a=n.call(e,t);if(typeof a!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var SB=/(-?\d+(?:\.\d+)?[a-zA-Z%]*)([*/])(-?\d+(?:\.\d+)?[a-zA-Z%]*)/,AB=/(-?\d+(?:\.\d+)?[a-zA-Z%]*)([+-])(-?\d+(?:\.\d+)?[a-zA-Z%]*)/,fPs=/^(px|cm|vh|vw|em|rem|%|mm|in|pt|pc|ex|ch|vmin|vmax|Q)$/,gPs=/(-?\d+(?:\.\d+)?)([a-zA-Z%]+)?/,hPs={cm:96/2.54,mm:96/25.4,pt:96/72,pc:96/6,in:96,Q:96/(2.54*40),px:1},yPs=["cm","mm","pt","pc","in","Q","px"];function vPs(e){return yPs.includes(e)}var Lm="NaN";function bPs(e,t){return e*hPs[t]}class Ca{static parse(t){var n,[,a,s]=(n=gPs.exec(t))!==null&&n!==void 0?n:[];return a==null?Ca.NaN:new Ca(parseFloat(a),s??"")}constructor(t,n){this.num=t,this.unit=n,this.num=t,this.unit=n,hr(t)&&(this.unit=""),n!==""&&!fPs.test(n)&&(this.num=NaN,this.unit=""),vPs(n)&&(this.num=bPs(t,n),this.unit="px")}add(t){return this.unit!==t.unit?new Ca(NaN,""):new Ca(this.num+t.num,this.unit)}subtract(t){return this.unit!==t.unit?new Ca(NaN,""):new Ca(this.num-t.num,this.unit)}multiply(t){return this.unit!==""&&t.unit!==""&&this.unit!==t.unit?new Ca(NaN,""):new Ca(this.num*t.num,this.unit||t.unit)}divide(t){return this.unit!==""&&t.unit!==""&&this.unit!==t.unit?new Ca(NaN,""):new Ca(this.num/t.num,this.unit||t.unit)}toString(){return"".concat(this.num).concat(this.unit)}isNaN(){return hr(this.num)}}
953bX=Ca;uPs(Ca,"NaN",new bX(NaN,""));function xX(e){if(e==null||e.includes(Lm))return Lm;for(var t=e;t.includes("*")||t.includes("/");){var n,[,a,s,r]=(n=SB.exec(t))!==null&&n!==void 0?n:[],i=Ca.parse(a??""),c=Ca.parse(r??""),d=s==="*"?i.multiply(c):i.divide(c);if(d.isNaN())return Lm;t=t.replace(SB,d.toString())}for(;t.includes("+")||/.-\d+(?:\.\d+)?/.test(t);){var m,[,f,p,y]=(m=AB.exec(t))!==null&&m!==void 0?m:[],v=Ca.parse(f??""),$=Ca.parse(y??""),x=p==="+"?v.add($):v.subtract($);if(x.isNaN())return Lm;t=t.replace(AB,x.toString())}return t}var TB=/\(([^()]*)\)/;function xPs(e){for(var t=e,n;(n=TB.exec(t))!=null;){var[,a]=n;t=t.replace(TB,xX(a))}return t}function $Ps(e){var t=e.replace(/\s+/g,"");return t=xPs(t),t=xX(t),t}function wPs(e){try{return $Ps(e)}catch{return Lm}}function KA(e){var t=wPs(e.slice(5,-1));return t===Lm?"":t}var kPs=["x","y","lineHeight","capHeight","fill","scaleToFit","textAnchor","verticalAnchor"],CPs=["dx","dy","angle","className","breakAll"];function AP(){return AP=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)({}).hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},AP.apply(null,arguments)}function RB(e,t){if(e==null)return{};var n,a,s=SPs(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a<r.length;a++)n=r[a],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(s[n]=e[n])}return s}function SPs(e,t){if(e==null)return{};var n={};for(var a in e)if({}.hasOwnProperty.call(e,a)){if(t.indexOf(a)!==-1)continue;n[a]=e[a]}return n}var $X=/[ \f\n\r\t\v\u2028\u2029]+/,wX=e=>{var{children:t,breakAll:n,style:a}=e;try{var s=[];$n(t)||(n?s=t.toString().split(""):s=t.toString().split($X));var r=s.map(c=>({word:c,width:qg(c,a).width})),i=n?0:qg(" ",a).width;return{wordsWithComputedWidth:r,spaceWidth:i}}catch{return null}};function kX(e){return e==="start"||e==="middle"||e==="end"||e==="inherit"}function APs(e){return $n(e)||typeof e=="string"||typeof e=="number"||typeof e=="boolean"}var CX=(e,t,n,a)=>e.reduce((s,r)=>{var{word:i,width:c}=r,d=s[s.length-1];if(d&&c!=null&&(t==null||a||d.width+c+n<Number(t)))d.words.push(i),d.width+=c+n;else{var m={words:[i],width:c};s.push(m)}return s},[]),SX=e=>e.reduce((t,n)=>t.width>n.width?t:n),TPs="…",PB=(e,t,n,a,s,r,i,c)=>{var d=e.slice(0,t),m=wX({breakAll:n,style:a,children:d+TPs});if(!m)return[!1,[]];var f=CX(m.wordsWithComputedWidth,r,i,c),p=f.length>s||SX(f).width>Number(r);return[p,f]},RPs=(e,t,n,a,s)=>{var{maxLines:r,children:i,style:c,breakAll:d}=e,m=Fe(r),f=String(i),p=CX(t,a,n,s);if(!m||s)return p;var y=p.length>r||SX(p).width>Number(a);if(!y)return p;for(var v=0,$=f.length-1,x=0,w;v<=$&&x<=f.length-1;){var S=Math.floor((v+$)/2),k=S-1,[T,R]=PB(f,k,d,c,r,a,n,s),[_]=PB(f,S,d,c,r,a,n,s);if(!T&&!_&&(v=S+1),T&&_&&($=S-1),!T&&_){w=R;break}x++}return w||p},_B=e=>{var t=$n(e)?[]:e.toString().split($X);return[{words:t,width:void 0}]},PPs=e=>{var{width:t,scaleToFit:n,children:a,style:s,breakAll:r,maxLines:i}=e;if((t||n)&&!wy.isSsr){var c,d,m=wX({breakAll:r,children:a,style:s});if(m){var{wordsWithComputedWidth:f,spaceWidth:p}=m;c=f,d=p}else return _B(a);return RPs({breakAll:r,children:a,maxLines:i,style:s},c,d,t,!!n)}return _B(a)},AX="#808080",_Ps={angle:0,breakAll:!1,capHeight:"0.71em",fill:AX,lineHeight:"1em",scaleToFit:!1,textAnchor:"start",verticalAnchor:"end",x:0,y:0},nN=h.forwardRef((e,t)=>{var n=Va(e,_Ps),{x:a,y:s,lineHeight:r,capHeight:i,fill:c,scaleToFit:d,textAnchor:m,verticalAnchor:f}=n,p=RB(n,kPs),y=h.useMemo(()=>PPs({breakAll:p.breakAll,children:p.children,maxLines:p.maxLines,scaleToFit:d,style:p.style,width:p.width}),[p.breakAll,p.children,p.maxLines,d,p.style,p.width]),{dx:v,dy:$,angle:x,className:w,breakAll:S}=p,k=RB(p,CPs);if(!si(a)||!si(s)||y.length===0)return null;var T=Number(a)+(Fe(v)?v:0),R=Number(s)+(Fe($)?$:0);if(!ht(T)||!ht(R))return null;var _;switch(f){case"start":_=KA("calc(".concat(i,")"));break;case"middle":_=KA("calc(".concat((y.length-1)/2," * -").concat(r," + (").concat(i," / 2))"));break;default:_=KA("calc(".concat(y.length-1," * -").concat(r,")"));break}var P=[],j=y[0];if(d&&j!=null){var N=j.width,{width:I}=p;P.push("scale(".concat(Fe(I)&&Fe(N)?I/N:1,")"))}
953return x&&P.push("rotate(".concat(x,", ").concat(T,", ").concat(R,")")),P.length&&(k.transform=P.join(" ")),h.createElement("text",AP({},no(k),{ref:t,x:T,y:R,className:Lt("recharts-text",w),textAnchor:m,fill:c.includes("url")?AX:c}),y.map((z,E)=>{var L=z.words.join(S?"":" ");return h.createElement("tspan",{x:T,dy:E===0?_:r,key:"".concat(L,"-").concat(E)},L)}))});nN.displayName="Text";function jB(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,a)}return n}function Lr(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?jB(Object(n),!0).forEach(function(a){jPs(e,a,n[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):jB(Object(n)).forEach(function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(n,a))})}return e}function jPs(e,t,n){return(t=NPs(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function NPs(e){var t=DPs(e,"string");return typeof t=="symbol"?t:t+""}function DPs(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var a=n.call(e,t);if(typeof a!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var MPs=e=>{var{viewBox:t,position:n,offset:a=0,parentViewBox:s}=e,{x:r,y:i,height:c,upperWidth:d,lowerWidth:m}=Zj(t),f=r,p=r+(d-m)/2,y=(f+p)/2,v=(d+m)/2,$=f+d/2,x=c>=0?1:-1,w=x*a,S=x>0?"end":"start",k=x>0?"start":"end",T=d>=0?1:-1,R=T*a,_=T>0?"end":"start",P=T>0?"start":"end",j=s;if(n==="top"){var N={x:f+d/2,y:i-w,horizontalAnchor:"middle",verticalAnchor:S};return j&&(N.height=Math.max(i-j.y,0),N.width=d),N}if(n==="bottom"){var I={x:p+m/2,y:i+c+w,horizontalAnchor:"middle",verticalAnchor:k};return j&&(I.height=Math.max(j.y+j.height-(i+c),0),I.width=m),I}if(n==="left"){var z={x:y-R,y:i+c/2,horizontalAnchor:_,verticalAnchor:"middle"};return j&&(z.width=Math.max(z.x-j.x,0),z.height=c),z}if(n==="right"){var E={x:y+v+R,y:i+c/2,horizontalAnchor:P,verticalAnchor:"middle"};return j&&(E.width=Math.max(j.x+j.width-E.x,0),E.height=c),E}var L=j?{width:v,height:c}:{};return n==="insideLeft"?Lr({x:y+R,y:i+c/2,horizontalAnchor:P,verticalAnchor:"middle"},L):n==="insideRight"?Lr({x:y+v-R,y:i+c/2,horizontalAnchor:_,verticalAnchor:"middle"},L):n==="insideTop"?Lr({x:f+d/2,y:i+w,horizontalAnchor:"middle",verticalAnchor:k},L):n==="insideBottom"?Lr({x:p+m/2,y:i+c-w,horizontalAnchor:"middle",verticalAnchor:S},L):n==="insideTopLeft"?Lr({x:f+R,y:i+w,horizontalAnchor:P,verticalAnchor:k},L):n==="insideTopRight"?Lr({x:f+d-R,y:i+w,horizontalAnchor:_,verticalAnchor:k},L):n==="insideBottomLeft"?Lr({x:p+R,y:i+c-w,horizontalAnchor:P,verticalAnchor:S},L):n==="insideBottomRight"?Lr({x:p+m-R,y:i+c-w,horizontalAnchor:_,verticalAnchor:S},L):n&&typeof n=="object"&&(Fe(n.x)||KR(n.x))&&(Fe(n.y)||KR(n.y))?Lr({x:r+yr(n.x,v),y:i+yr(n.y,c),horizontalAnchor:"end",verticalAnchor:"end"},L):Lr({x:$,y:i+c/2,horizontalAnchor:"middle",verticalAnchor:"middle"},L)},EPs=["labelRef"],IPs=["content"];function NB(e,t){if(e==null)return{};var n,a,s=OPs(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a<r.length;a++)n=r[a],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(s[n]=e[n])}return s}function OPs(e,t){if(e==null)return{};var n={};for(var a in e)if({}.hasOwnProperty.call(e,a)){if(t.indexOf(a)!==-1)continue;n[a]=e[a]}return n}function DB(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,a)}return n}function Ng(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?DB(Object(n),!0).forEach(function(a){LPs(e,a,n[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):DB(Object(n)).forEach(function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(n,a))})}return e}
953function LPs(e,t,n){return(t=UPs(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function UPs(e){var t=BPs(e,"string");return typeof t=="symbol"?t:t+""}function BPs(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var a=n.call(e,t);if(typeof a!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function Hi(){return Hi=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)({}).hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},Hi.apply(null,arguments)}var TX=h.createContext(null),FPs=e=>{var{x:t,y:n,upperWidth:a,lowerWidth:s,width:r,height:i,children:c}=e,d=h.useMemo(()=>({x:t,y:n,upperWidth:a,lowerWidth:s,width:r,height:i}),[t,n,a,s,r,i]);return h.createElement(TX.Provider,{value:d},c)},RX=()=>{var e=h.useContext(TX),t=g0();return e||(t?Zj(t):void 0)},zPs=h.createContext(null),qPs=()=>{var e=h.useContext(zPs),t=Ge(hY);return e||t},HPs=e=>{var{value:t,formatter:n}=e,a=$n(e.children)?t:e.children;return typeof n=="function"?n(a):a},aN=e=>e!=null&&typeof e=="function",VPs=(e,t)=>{var n=Co(t-e),a=Math.min(Math.abs(t-e),360);return n*a},KPs=(e,t,n,a,s)=>{var{offset:r,className:i}=e,{cx:c,cy:d,innerRadius:m,outerRadius:f,startAngle:p,endAngle:y,clockWise:v}=s,$=(m+f)/2,x=VPs(p,y),w=x>=0?1:-1,S,k;switch(t){case"insideStart":S=p+w*r,k=v;break;case"insideEnd":S=y-w*r,k=!v;break;case"end":S=y+w*r,k=v;break;default:throw new Error("Unsupported position ".concat(t))}k=x<=0?k:!k;var T=Sa(c,d,$,S),R=Sa(c,d,$,S+(k?1:-1)*359),_="M".concat(T.x,",").concat(T.y,`
954    A`).concat($,",").concat($,",0,1,").concat(k?0:1,`,
955    `).concat(R.x,",").concat(R.y),P=$n(e.id)?hh("recharts-radial-line-"):e.id;return h.createElement("text",Hi({},a,{dominantBaseline:"central",className:Lt("recharts-radial-bar-label",i)}),h.createElement("defs",null,h.createElement("path",{id:P,d:_})),h.createElement("textPath",{xlinkHref:"#".concat(P)},n))},GPs=(e,t,n)=>{var{cx:a,cy:s,innerRadius:r,outerRadius:i,startAngle:c,endAngle:d}=e,m=(c+d)/2;if(n==="outside"){var{x:f,y:p}=Sa(a,s,i+t,m);return{x:f,y:p,textAnchor:f>=a?"start":"end",verticalAnchor:"middle"}}if(n==="center")return{x:a,y:s,textAnchor:"middle",verticalAnchor:"middle"};if(n==="centerTop")return{x:a,y:s,textAnchor:"middle",verticalAnchor:"start"};if(n==="centerBottom")return{x:a,y:s,textAnchor:"middle",verticalAnchor:"end"};var y=(r+i)/2,{x:v,y:$}=Sa(a,s,y,m);return{x:v,y:$,textAnchor:"middle",verticalAnchor:"middle"}},gx=e=>e!=null&&"cx"in e&&Fe(e.cx),WPs={angle:0,offset:5,zIndex:la.label,position:"middle",textBreakAll:!1};function YPs(e){if(!gx(e))return e;var{cx:t,cy:n,outerRadius:a}=e,s=a*2;return{x:t-a,y:n-a,width:s,upperWidth:s,lowerWidth:s,height:s}}function Jl(e){var t=Va(e,WPs),{viewBox:n,parentViewBox:a,position:s,value:r,children:i,content:c,className:d="",textBreakAll:m,labelRef:f}=t,p=qPs(),y=RX(),v=s==="center"?y:p??y,$,x,w;n==null?$=v:gx(n)?$=n:$=Zj(n);var S=YPs($);if(!$||$n(r)&&$n(i)&&!h.isValidElement(c)&&typeof c!="function")return null;var k=Ng(Ng({},t),{},{viewBox:$});if(h.isValidElement(c)){var{labelRef:T}=k,R=NB(k,EPs);return h.cloneElement(c,R)}if(typeof c=="function"){var{content:_}=k,P=NB(k,IPs);if(x=h.createElement(c,P),h.isValidElement(x))return x}else x=HPs(t);var j=no(t);if(gx($)){if(s==="insideStart"||s==="insideEnd"||s==="end")return KPs(t,s,x,j,$);w=GPs($,t.offset,t.position)}else{if(!S)return null;var N=MPs({viewBox:S,position:s,offset:t.offset,parentViewBox:gx(a)?void 0:a});w=Ng(Ng({x:N.x,y:N.y,textAnchor:N.horizontalAnchor,verticalAnchor:N.verticalAnchor},N.width!==void 0?{width:N.width}:{}),N.height!==void 0?{height:N.height}:{})}return h.createElement(Fs,{zIndex:t.zIndex},h.createElement(nN,Hi({ref:f,className:Lt("recharts-label",d)},j,w,{textAnchor:kX(j.textAnchor)?j.textAnchor:w.textAnchor,breakAll:m}),x))}Jl.displayName="Label";var QPs=(e,t,n)=>{if(!e)return null;var a={viewBox:t,labelRef:n};return e===!0?h.createElement(Jl,Hi({key:"label-implicit"},a)):si(e)?h.createElement(Jl,Hi({key:"label-implicit",value:e},a)):h.isValidElement(e)?e.type===Jl?h.cloneElement(e,Ng({key:"label-implicit"},a)):h.createElement(Jl,Hi({key:"label-implicit",content:e},a)):aN(e)?h.createElement(Jl,Hi({key:"label-implicit",content:e},a)):e&&typeof e=="object"?h.createElement(Jl,Hi({},e,{key:"label-implicit"},a)):null};function XPs(e){var{label:t,labelRef:n}=e,a=RX();return QPs(t,a,n)||null}var ZPs=["valueAccessor"],JPs=["dataKey","clockWise","id","textBreakAll","zIndex"];function M$(){return M$=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)({}).hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},M$.apply(null,arguments)}function MB(e,t){if(e==null)return{};var n,a,s=e_s(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a<r.length;a++)n=r[a],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(s[n]=e[n])}return s}function e_s(e,t){if(e==null)return{};var n={};for(var a in e)if({}.hasOwnProperty.call(e,a)){if(t.indexOf(a)!==-1)continue;n[a]=e[a]}return n}var t_s=e=>{var t=Array.isArray(e.value)?e.value[e.value.length-1]:e.value;if(APs(t))return t},PX=h.createContext(void 0),_X=PX.Provider,jX=h.createContext(void 0);jX.Provider;function n_s(){return h.useContext(PX)}function a_s(){return h.useContext(jX)}function hx(e){var{valueAccessor:t=t_s}=e,n=MB(e,ZPs),{dataKey:a,clockWise:s,id:r,textBreakAll:i,zIndex:c}=n,d=MB(n,JPs),m=n_s(),f=a_s(),p=m||f;
955return!p||!p.length?null:h.createElement(Fs,{zIndex:c??la.label},h.createElement(Fa,{className:"recharts-label-list"},p.map((y,v)=>{var $,x=$n(a)?t(y,v):jn(y.payload,a),w=$n(r)?{}:{id:"".concat(r,"-").concat(v)};return h.createElement(Jl,M$({key:"label-".concat(v)},no(y),d,w,{fill:($=n.fill)!==null&&$!==void 0?$:y.fill,parentViewBox:y.parentViewBox,value:x,textBreakAll:i,viewBox:y.viewBox,index:v,zIndex:0}))})))}hx.displayName="LabelList";function NX(e){var{label:t}=e;return t?t===!0?h.createElement(hx,{key:"labelList-implicit"}):h.isValidElement(t)||aN(t)?h.createElement(hx,{key:"labelList-implicit",content:t}):typeof t=="object"?h.createElement(hx,M$({key:"labelList-implicit"},t,{type:String(t.type)})):null:null}function TP(){return TP=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)({}).hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},TP.apply(null,arguments)}var DX=e=>{var{cx:t,cy:n,r:a,className:s}=e,r=Lt("recharts-dot",s);return Fe(t)&&Fe(n)&&Fe(a)?h.createElement("circle",TP({},Is(e),zj(e),{className:r,cx:t,cy:n,r:a})):null},o_s={radiusAxis:{},angleAxis:{}},MX=Ka({name:"polarAxis",initialState:o_s,reducers:{addRadiusAxis(e,t){e.radiusAxis[t.payload.id]=t.payload},removeRadiusAxis(e,t){delete e.radiusAxis[t.payload.id]},addAngleAxis(e,t){e.angleAxis[t.payload.id]=t.payload},removeAngleAxis(e,t){delete e.angleAxis[t.payload.id]}}}),{addRadiusAxis:l6s,removeRadiusAxis:c6s,addAngleAxis:d6s,removeAngleAxis:u6s}=MX.actions,s_s=MX.reducer;function r_s(e){return e&&typeof e=="object"&&"className"in e&&typeof e.className=="string"?e.className:""}var GA={exports:{}},Yt={};/** @license React v17.0.2
956 * react-is.production.min.js
957 *
958 * Copyright (c) Facebook, Inc. and its affiliates.
959 *
960 * This source code is licensed under the MIT license found in the
961 * LICENSE file in the root directory of this source tree.
962 */var EB;function i_s(){if(EB)return Yt;EB=1;var e=60103,t=60106,n=60107,a=60108,s=60114,r=60109,i=60110,c=60112,d=60113,m=60120,f=60115,p=60116,y=60121,v=60122,$=60117,x=60129,w=60131;if(typeof Symbol=="function"&&Symbol.for){var S=Symbol.for;e=S("react.element"),t=S("react.portal"),n=S("react.fragment"),a=S("react.strict_mode"),s=S("react.profiler"),r=S("react.provider"),i=S("react.context"),c=S("react.forward_ref"),d=S("react.suspense"),m=S("react.suspense_list"),f=S("react.memo"),p=S("react.lazy"),y=S("react.block"),v=S("react.server.block"),$=S("react.fundamental"),x=S("react.debug_trace_mode"),w=S("react.legacy_hidden")}function k(O){if(typeof O=="object"&&O!==null){var V=O.$$typeof;switch(V){case e:switch(O=O.type,O){case n:case s:case a:case d:case m:return O;default:switch(O=O&&O.$$typeof,O){case i:case c:case p:case f:case r:return O;default:return V}}case t:return V}}}var T=r,R=e,_=c,P=n,j=p,N=f,I=t,z=s,E=a,L=d;return Yt.ContextConsumer=i,Yt.ContextProvider=T,Yt.Element=R,Yt.ForwardRef=_,Yt.Fragment=P,Yt.Lazy=j,Yt.Memo=N,Yt.Portal=I,Yt.Profiler=z,Yt.StrictMode=E,Yt.Suspense=L,Yt.isAsyncMode=function(){return!1},Yt.isConcurrentMode=function(){return!1},Yt.isContextConsumer=function(O){return k(O)===i},Yt.isContextProvider=function(O){return k(O)===r},Yt.isElement=function(O){return typeof O=="object"&&O!==null&&O.$$typeof===e},Yt.isForwardRef=function(O){return k(O)===c},Yt.isFragment=function(O){return k(O)===n},Yt.isLazy=function(O){return k(O)===p},Yt.isMemo=function(O){return k(O)===f},Yt.isPortal=function(O){return k(O)===t},Yt.isProfiler=function(O){return k(O)===s},Yt.isStrictMode=function(O){return k(O)===a},Yt.isSuspense=function(O){return k(O)===d},Yt.isValidElementType=function(O){return typeof O=="string"||typeof O=="function"||O===n||O===s||O===x||O===a||O===d||O===m||O===w||typeof O=="object"&&O!==null&&(O.$$typeof===p||O.$$typeof===f||O.$$typeof===r||O.$$typeof===i||O.$$typeof===c||O.$$typeof===$||O.$$typeof===y||O[0]===v)},Yt.typeOf=k,Yt}var IB;function l_s(){return IB||(IB=1,GA.exports=i_s()),GA.exports}var c_s=l_s(),OB=e=>typeof e=="string"?e:e?e.displayName||e.name||"Component":"",LB=null,WA=null,EX=e=>{if(e===LB&&Array.isArray(WA))return WA;var t=[];
962return h.Children.forEach(e,n=>{$n(n)||(c_s.isFragment(n)?t=t.concat(EX(n.props.children)):t.push(n))}),WA=t,LB=e,t};function d_s(e,t){var n=[],a=[];return Array.isArray(t)?a=t.map(s=>OB(s)):a=[OB(t)],EX(e).forEach(s=>{var r=vp(s,"type.displayName")||vp(s,"type.name");r&&a.indexOf(r)!==-1&&n.push(s)}),n}var IX=e=>e&&typeof e=="object"&&"clipDot"in e?!!e.clipDot:!0,YA={},UB;function u_s(){return UB||(UB=1,(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});function t(n){if(typeof n!="object"||n==null)return!1;if(Object.getPrototypeOf(n)===null)return!0;if(Object.prototype.toString.call(n)!=="[object Object]"){const s=n[Symbol.toStringTag];return s==null||!Object.getOwnPropertyDescriptor(n,Symbol.toStringTag)?.writable?!1:n.toString()===`[object ${s}]`}let a=n;for(;Object.getPrototypeOf(a)!==null;)a=Object.getPrototypeOf(a);return Object.getPrototypeOf(n)===a}e.isPlainObject=t})(YA)),YA}var QA,BB;function m_s(){return BB||(BB=1,QA=u_s().isPlainObject),QA}var p_s=m_s();const f_s=il(p_s);var FB,zB,qB,HB,VB;function KB(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,a)}return n}function GB(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?KB(Object(n),!0).forEach(function(a){g_s(e,a,n[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):KB(Object(n)).forEach(function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(n,a))})}return e}function g_s(e,t,n){return(t=h_s(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function h_s(e){var t=y_s(e,"string");return typeof t=="symbol"?t:t+""}function y_s(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var a=n.call(e,t);if(typeof a!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function E$(){return E$=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)({}).hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},E$.apply(null,arguments)}function mg(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}var WB=(e,t,n,a,s)=>{var r=n-a,i;return i=An(FB||(FB=mg(["M ",",",""])),e,t),i+=An(zB||(zB=mg(["L ",",",""])),e+n,t),i+=An(qB||(qB=mg(["L ",",",""])),e+n-r/2,t+s),i+=An(HB||(HB=mg(["L ",",",""])),e+n-r/2-a,t+s),i+=An(VB||(VB=mg(["L ",","," Z"])),e,t),i},v_s={x:0,y:0,upperWidth:0,lowerWidth:0,height:0,isUpdateAnimationActive:!1,animationBegin:0,animationDuration:1500,animationEasing:"ease"},b_s=e=>{var t=Va(e,v_s),{x:n,y:a,upperWidth:s,lowerWidth:r,height:i,className:c}=t,{animationEasing:d,animationDuration:m,animationBegin:f,isUpdateAnimationActive:p}=t,y=h.useRef(null),[v,$]=h.useState(-1),x=h.useRef(s),w=h.useRef(r),S=h.useRef(i),k=h.useRef(n),T=h.useRef(a),R=x0(e,"trapezoid-");if(h.useEffect(()=>{if(y.current&&y.current.getTotalLength)try{var V=y.current.getTotalLength();V&&$(V)}catch{}},[]),n!==+n||a!==+a||s!==+s||r!==+r||i!==+i||s===0&&r===0||i===0)return null;var _=Lt("recharts-trapezoid",c);if(!p)return h.createElement("g",null,h.createElement("path",E$({},no(t),{className:_,d:WB(n,a,s,r,i)})));var P=x.current,j=w.current,N=S.current,I=k.current,z=T.current,E="0px ".concat(v===-1?1:v,"px"),L="".concat(v,"px ").concat(v,"px"),O=FW(["strokeDasharray"],m,d);return h.createElement(b0,{animationId:R,key:R,canBegin:v>0,duration:m,easing:d,isActive:p,begin:f},V=>{var ne=bn(P,s,V),q=bn(j,r,V),M=bn(N,i,V),F=bn(I,n,V),H=bn(z,a,V);y.current&&(x.current=ne,w.current=q,S.current=M,k.current=F,T.current=H);var ee=V>0?{transition:O,strokeDasharray:L}:{strokeDasharray:E};return h.createElement("path",E$({},no(t),{className:_,d:WB(F,H,ne,q,M),ref:y,style:GB(GB({},ee),t.style)}))})},x_s=["option","shapeType","activeClassName","inActiveClassName"];function $_s(e,t){if(e==null)return{};var n,a,s=w_s(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a<r.length;a++)n=r[a],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(s[n]=e[n])}return s}function w_s(e,t){if(e==null)return{};var n={};for(var a in e)if({}.hasOwnProperty.call(e,a)){if(t.indexOf(a)!==-1)continue;n[a]=e[a]}return n}function YB(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,a)}return n}function I$(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};
962t%2?YB(Object(n),!0).forEach(function(a){k_s(e,a,n[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):YB(Object(n)).forEach(function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(n,a))})}return e}function k_s(e,t,n){return(t=C_s(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function C_s(e){var t=S_s(e,"string");return typeof t=="symbol"?t:t+""}function S_s(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var a=n.call(e,t);if(typeof a!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function A_s(e,t){return I$(I$({},t),e)}function T_s(e,t){return e==="symbols"}function QB(e){var{shapeType:t,elementProps:n}=e;switch(t){case"rectangle":return h.createElement(VW,n);case"trapezoid":return h.createElement(b_s,n);case"sector":return h.createElement(WW,n);case"symbols":if(T_s(t))return h.createElement(Fj,n);break;case"curve":return h.createElement(Fg,n);default:return null}}function R_s(e){return h.isValidElement(e)?e.props:e}function P_s(e){var{option:t,shapeType:n,activeClassName:a="recharts-active-shape",inActiveClassName:s="recharts-shape"}=e,r=$_s(e,x_s),i;if(h.isValidElement(t))i=h.cloneElement(t,I$(I$({},r),R_s(t)));else if(typeof t=="function")i=t(r,r.index);else if(f_s(t)&&typeof t!="boolean"){var c=A_s(t,r);i=h.createElement(QB,{shapeType:n,elementProps:c})}else{var d=r;i=h.createElement(QB,{shapeType:n,elementProps:d})}return r.isActive?h.createElement(Fa,{className:a},i):h.createElement(Fa,{className:s},i)}var OX=(e,t,n)=>{var a=gn();return(s,r)=>i=>{e?.(s,r,i),a(zQ({activeIndex:String(r),activeDataKey:t,activeCoordinate:s.tooltipPosition,activeGraphicalItemId:n}))}},LX=e=>{var t=gn();return(n,a)=>s=>{e?.(n,a,s),t(KAs())}},UX=(e,t,n)=>{var a=gn();return(s,r)=>i=>{e?.(s,r,i),a(GAs({activeIndex:String(r),activeDataKey:t,activeCoordinate:s.tooltipPosition,activeGraphicalItemId:n}))}};function BX(e){var{tooltipEntrySettings:t}=e,n=gn(),a=Ga(),s=h.useRef(null);return h.useLayoutEffect(()=>{a||(s.current===null?n(zAs(t)):s.current!==t&&n(qAs({prev:s.current,next:t})),s.current=t)},[t,n,a]),h.useLayoutEffect(()=>()=>{s.current&&(n(HAs(s.current)),s.current=null)},[n]),null}function FX(e){var{legendPayload:t}=e,n=gn(),a=Ga(),s=h.useRef(null);return h.useLayoutEffect(()=>{a||(s.current===null?n(Dws(t)):s.current!==t&&n(Mws({prev:s.current,next:t})),s.current=t)},[n,a,t]),h.useLayoutEffect(()=>()=>{s.current&&(n(Ews(s.current)),s.current=null)},[n]),null}var XA,__s=()=>{var[e]=h.useState(()=>hh("uid-"));return e},j_s=(XA=Lh.useId)!==null&&XA!==void 0?XA:__s;function N_s(e,t){var n=j_s();return t||(e?"".concat(e,"-").concat(n):n)}var D_s=h.createContext(void 0),zX=e=>{var{id:t,type:n,children:a}=e,s=N_s("recharts-".concat(n),t);return h.createElement(D_s.Provider,{value:s},a(s))},M_s={cartesianItems:[],polarItems:[]},qX=Ka({name:"graphicalItems",initialState:M_s,reducers:{addCartesianGraphicalItem:{reducer(e,t){e.cartesianItems.push(t.payload)},prepare:pn()},replaceCartesianGraphicalItem:{reducer(e,t){var{prev:n,next:a}=t.payload,s=Rs(e).cartesianItems.indexOf(n);s>-1&&(e.cartesianItems[s]=a)},prepare:pn()},removeCartesianGraphicalItem:{reducer(e,t){var n=Rs(e).cartesianItems.indexOf(t.payload);n>-1&&e.cartesianItems.splice(n,1)},prepare:pn()},addPolarGraphicalItem:{reducer(e,t){e.polarItems.push(t.payload)},prepare:pn()},removePolarGraphicalItem:{reducer(e,t){var n=Rs(e).polarItems.indexOf(t.payload);n>-1&&e.polarItems.splice(n,1)},prepare:pn()},replacePolarGraphicalItem:{reducer(e,t){var{prev:n,next:a}=t.payload,s=Rs(e).polarItems.indexOf(n);s>-1&&(e.polarItems[s]=a)},prepare:pn()}}}),{addCartesianGraphicalItem:E_s,replaceCartesianGraphicalItem:I_s,removeCartesianGraphicalItem:O_s,addPolarGraphicalItem:m6s,removePolarGraphicalItem:p6s,replacePolarGraphicalItem:f6s}=qX.actions,L_s=qX.reducer,U_s=e=>{var t=gn(),n=h.useRef(null);return h.useLayoutEffect(()=>{n.current===null?t(E_s(e)):n.current!==e&&t(I_s({prev:n.current,next:e})),n.current=e},[t,e]),h.useLayoutEffect(()=>()=>{n.current&&(t(O_s(n.current)),n.current=null)},[t]),null},HX=h.memo(U_s),B_s=["points"];function XB(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,a)}return n}function ZA(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};
962t%2?XB(Object(n),!0).forEach(function(a){F_s(e,a,n[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):XB(Object(n)).forEach(function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(n,a))})}return e}function F_s(e,t,n){return(t=z_s(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function z_s(e){var t=q_s(e,"string");return typeof t=="symbol"?t:t+""}function q_s(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var a=n.call(e,t);if(typeof a!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function O$(){return O$=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)({}).hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},O$.apply(null,arguments)}function H_s(e,t){if(e==null)return{};var n,a,s=V_s(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a<r.length;a++)n=r[a],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(s[n]=e[n])}return s}function V_s(e,t){if(e==null)return{};var n={};for(var a in e)if({}.hasOwnProperty.call(e,a)){if(t.indexOf(a)!==-1)continue;n[a]=e[a]}return n}function K_s(e){var{option:t,dotProps:n,className:a}=e;if(h.isValidElement(t))return h.cloneElement(t,n);if(typeof t=="function")return t(n);var s=Lt(a,typeof t!="boolean"?t.className:""),r=n??{},{points:i}=r,c=H_s(r,B_s);return h.createElement(DX,O$({},c,{className:s}))}function G_s(e,t){return e==null?!1:t?!0:e.length===1}function W_s(e){var{points:t,dot:n,className:a,dotClassName:s,dataKey:r,baseProps:i,needClip:c,clipPathId:d,zIndex:m=la.scatter}=e;if(!G_s(t,n))return null;var f=IX(n),p=Pvs(n),y=t.map(($,x)=>{var w,S,k=ZA(ZA(ZA({r:3},i),p),{},{index:x,cx:(w=$.x)!==null&&w!==void 0?w:void 0,cy:(S=$.y)!==null&&S!==void 0?S:void 0,dataKey:r,value:$.value,payload:$.payload,points:t});return h.createElement(K_s,{key:"dot-".concat(x),option:n,dotProps:k,className:s})}),v={};return c&&d!=null&&(v.clipPath="url(#clipPath-".concat(f?"":"dots-").concat(d,")")),h.createElement(Fs,{zIndex:m},h.createElement(Fa,O$({className:a},v),y))}function ZB(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,a)}return n}function JB(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?ZB(Object(n),!0).forEach(function(a){Y_s(e,a,n[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ZB(Object(n)).forEach(function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(n,a))})}return e}function Y_s(e,t,n){return(t=Q_s(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Q_s(e){var t=X_s(e,"string");return typeof t=="symbol"?t:t+""}function X_s(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var a=n.call(e,t);if(typeof a!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var VX=0,Z_s={xAxis:{},yAxis:{},zAxis:{}},KX=Ka({name:"cartesianAxis",initialState:Z_s,reducers:{addXAxis:{reducer(e,t){e.xAxis[t.payload.id]=t.payload},prepare:pn()},replaceXAxis:{reducer(e,t){var{prev:n,next:a}=t.payload;e.xAxis[n.id]!==void 0&&(n.id!==a.id&&delete e.xAxis[n.id],e.xAxis[a.id]=a)},prepare:pn()},removeXAxis:{reducer(e,t){delete e.xAxis[t.payload.id]},prepare:pn()},addYAxis:{reducer(e,t){e.yAxis[t.payload.id]=t.payload},prepare:pn()},replaceYAxis:{reducer(e,t){var{prev:n,next:a}=t.payload;e.yAxis[n.id]!==void 0&&(n.id!==a.id&&delete e.yAxis[n.id],e.yAxis[a.id]=a)},prepare:pn()},removeYAxis:{reducer(e,t){delete e.yAxis[t.payload.id]},prepare:pn()},addZAxis:{reducer(e,t){e.zAxis[t.payload.id]=t.payload},prepare:pn()},replaceZAxis:{reducer(e,t){var{prev:n,next:a}=t.payload;e.zAxis[n.id]!==void 0&&(n.id!==a.id&&delete e.zAxis[n.id],e.zAxis[a.id]=a)},prepare:pn()},removeZAxis:{reducer(e,t){delete e.zAxis[t.payload.id]},prepare:pn()},updateYAxisWidth(e,t){var{id:n,width:a}=t.payload,s=e.yAxis[n];if(s){var r,i=s.widthHistory||[];if(i.length===3&&i[0]===i[2]&&a===i[1]&&a!==s.width&&Math.abs(a-((r=i[0])!==null&&r!==void 0?r:0))<=1)return;var c=[...i,a].slice(-3);e.yAxis[n]=JB(JB({},s),{},{width:a,widthHistory:c})}}}}),{addXAxis:J_s,replaceXAxis:ejs,removeXAxis:tjs,addYAxis:njs,replaceYAxis:ajs,removeYAxis:ojs,addZAxis:g6s,replaceZAxis:h6s,removeZAxis:y6s,updateYAxisWidth:sjs}=KX.actions,rjs=KX.reducer,ijs=ce([ma],e=>({top:e.top,bottom:e.bottom,left:e.left,right:e.right})),ljs=ce([ijs,ml,pl],(e,t,n)=>{if(!(!e||t==null||n==null))return{x:e.left,y:e.top,width:Math.max(0,t-e.left-e.right),height:Math.max(0,n-e.top-e.bottom)}}),oN=()=>Ge(ljs),cjs=()=>Ge(zTs);function e6(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,a)}return n}function JA(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};
962t%2?e6(Object(n),!0).forEach(function(a){djs(e,a,n[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):e6(Object(n)).forEach(function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(n,a))})}return e}function djs(e,t,n){return(t=ujs(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ujs(e){var t=mjs(e,"string");return typeof t=="symbol"?t:t+""}function mjs(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var a=n.call(e,t);if(typeof a!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var pjs=e=>{var{point:t,childIndex:n,mainColor:a,activeDot:s,dataKey:r,clipPath:i}=e;if(s===!1||t.x==null||t.y==null)return null;var c={index:n,dataKey:r,cx:t.x,cy:t.y,r:4,fill:a??"none",strokeWidth:2,stroke:"#fff",payload:t.payload,value:t.value},d=JA(JA(JA({},c),gy(s)),zj(s)),m;return h.isValidElement(s)?m=h.cloneElement(s,d):typeof s=="function"?m=s(d):m=h.createElement(DX,d),h.createElement(Fa,{className:"recharts-active-dot",clipPath:i},m)};function t6(e){var{points:t,mainColor:n,activeDot:a,itemDataKey:s,clipPath:r,zIndex:i=la.activeDot}=e,c=Ge(iu),d=cjs();if(t==null||d==null)return null;var m=t.find(f=>d.includes(f.payload));return $n(m)?null:h.createElement(Fs,{zIndex:i},h.createElement(pjs,{point:m,childIndex:Number(c),mainColor:n,dataKey:s,activeDot:a,clipPath:r}))}var n6=(e,t,n)=>{var a=n??e;if(!$n(a))return yr(a,t,0)},fjs=(e,t,n)=>{var a={},s=e.filter(R0),r=e.filter(m=>m.stackId==null),i=s.reduce((m,f)=>{var p=m[f.stackId];return p==null&&(p=[]),p.push(f),m[f.stackId]=p,m},a),c=Object.entries(i).map(m=>{var f,[p,y]=m,v=y.map(x=>x.dataKey),$=n6(t,n,(f=y[0])===null||f===void 0?void 0:f.barSize);return{stackId:p,dataKeys:v,barSize:$}}),d=r.map(m=>{var f=[m.dataKey].filter(y=>y!=null),p=n6(t,n,m.barSize);return{stackId:void 0,dataKeys:f,barSize:p}});return[...c,...d]};function a6(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,a)}return n}function Eb(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?a6(Object(n),!0).forEach(function(a){gjs(e,a,n[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a6(Object(n)).forEach(function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(n,a))})}return e}function gjs(e,t,n){return(t=hjs(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function hjs(e){var t=yjs(e,"string");return typeof t=="symbol"?t:t+""}function yjs(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var a=n.call(e,t);if(typeof a!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function vjs(e,t,n,a,s){var r,i=a.length;if(!(i<1)){var c=yr(e,n,0,!0),d,m=[];if(ht((r=a[0])===null||r===void 0?void 0:r.barSize)){var f=!1,p=n/i,y=a.reduce((k,T)=>k+(T.barSize||0),0);y+=(i-1)*c,y>=n&&(y-=(i-1)*c,c=0),y>=n&&p>0&&(f=!0,p*=.9,y=i*p);var v=(n-y)/2>>0,$={offset:v-c,size:0};d=a.reduce((k,T)=>{var R,_={stackId:T.stackId,dataKeys:T.dataKeys,position:{offset:$.offset+$.size+c,size:f?p:(R=T.barSize)!==null&&R!==void 0?R:0}},P=[...k,_];return $=_.position,P},m)}else{var x=yr(t,n,0,!0);n-2*x-(i-1)*c<=0&&(c=0);var w=(n-2*x-(i-1)*c)/i;w>1&&(w>>=0);var S=ht(s)?Math.min(w,s):w;d=a.reduce((k,T,R)=>[...k,{stackId:T.stackId,dataKeys:T.dataKeys,position:{offset:x+(w+c)*R+(w-S)/2,size:S}}],m)}return d}}var bjs=(e,t,n,a,s,r,i)=>{var c=$n(i)?t:i,d=vjs(n,a,s!==r?s:r,e,c);return s!==r&&d!=null&&(d=d.map(m=>Eb(Eb({},m),{},{position:Eb(Eb({},m.position),{},{offset:m.position.offset-s/2})}))),d},xjs=(e,t)=>{var n=T0(t);if(!(!e||n==null||t==null)){var{stackId:a}=t;if(a!=null){var s=e[a];if(s){var{stackedData:r}=s;if(r)return r.find(i=>i.key===n)}}}},$js=(e,t)=>{if(!(e==null||t==null)){var n=e.find(a=>a.stackId===t.stackId&&t.dataKey!=null&&a.dataKeys.includes(t.dataKey));if(n!=null)return n.position}};function wjs(e,t){return e&&typeof e=="object"&&"zIndex"in e&&typeof e.zIndex=="number"&&ht(e.zIndex)?e.zIndex:t}var kjs=e=>{var{chartData:t}=e,n=gn(),a=Ga();return h.useEffect(()=>a?()=>{}:(n(hB(t)),()=>{n(hB(void 0))}),[t,n,a]),null},o6={x:0,y:0,width:0,height:0,padding:{top:0,right:0,bottom:0,left:0}},GX=Ka({name:"brush",initialState:o6,reducers:{setBrushSettings(e,t){return t.payload==null?o6:t.payload}}}),{setBrushSettings:v6s}=GX.actions,Cjs=GX.reducer;function Sjs(e){return(e%180+180)%180}var Ajs=function(t){var{width:n,height:a}=t,s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,r=Sjs(s),i=r*Math.PI/180,c=Math.atan(a/n),d=i>c&&i<Math.PI-c?a/Math.sin(i):n/Math.cos(i);return Math.abs(d)},Tjs={dots:[],areas:[],lines:[]},WX=Ka({name:"referenceElements",initialState:Tjs,reducers:{addDot:(e,t)=>
962{e.dots.push(t.payload)},removeDot:(e,t)=>{var n=Rs(e).dots.findIndex(a=>a===t.payload);n!==-1&&e.dots.splice(n,1)},addArea:(e,t)=>{e.areas.push(t.payload)},removeArea:(e,t)=>{var n=Rs(e).areas.findIndex(a=>a===t.payload);n!==-1&&e.areas.splice(n,1)},addLine:(e,t)=>{e.lines.push(t.payload)},removeLine:(e,t)=>{var n=Rs(e).lines.findIndex(a=>a===t.payload);n!==-1&&e.lines.splice(n,1)}}}),{addDot:b6s,removeDot:x6s,addArea:$6s,removeArea:w6s,addLine:k6s,removeLine:C6s}=WX.actions,Rjs=WX.reducer,Pjs=h.createContext(void 0),_js=e=>{var{children:t}=e,[n]=h.useState("".concat(hh("recharts"),"-clip")),a=oN();if(a==null)return null;var{x:s,y:r,width:i,height:c}=a;return h.createElement(Pjs.Provider,{value:n},h.createElement("defs",null,h.createElement("clipPath",{id:n},h.createElement("rect",{x:s,y:r,height:c,width:i}))),t)};function YX(e,t){if(t<1)return[];if(t===1)return e;for(var n=[],a=0;a<e.length;a+=t){var s=e[a];s!==void 0&&n.push(s)}return n}function jjs(e,t,n){var a={width:e.width+t.width,height:e.height+t.height};return Ajs(a,n)}function Njs(e,t,n){var a=n==="width",{x:s,y:r,width:i,height:c}=e;return t===1?{start:a?s:r,end:a?s+i:r+c}:{start:a?s+i:r+c,end:a?s:r}}function _h(e,t,n,a,s){if(e*t<e*a||e*t>e*s)return!1;var r=n();return e*(t-e*r/2-a)>=0&&e*(t+e*r/2-s)<=0}function Djs(e,t){return YX(e,t+1)}function Mjs(e,t,n,a,s){for(var r=(a||[]).slice(),{start:i,end:c}=t,d=0,m=1,f=i,p=function(){var $=a?.[d];if($===void 0)return{v:YX(a,m)};var x=d,w,S=()=>(w===void 0&&(w=n($,x)),w),k=$.coordinate,T=d===0||_h(e,k,S,f,c);T||(d=0,f=i,m+=1),T&&(f=k+e*(S()/2+s),d+=m)},y;m<=r.length;)if(y=p(),y)return y.v;return[]}function Ejs(e,t,n,a,s){var r=(a||[]).slice(),i=r.length;if(i===0)return[];for(var{start:c,end:d}=t,m=1;m<=i;m++){for(var f=(i-1)%m,p=c,y=!0,v=function(){var R=a[x];if(R==null)return 0;var _=x,P,j=()=>(P===void 0&&(P=n(R,_)),P),N=R.coordinate,I=x===f||_h(e,N,j,p,d);if(!I)return y=!1,1;I&&(p=N+e*(j()/2+s))},$,x=f;x<i&&($=v(),!($!==0&&$===1));x+=m);if(y){for(var w=[],S=f;S<i;S+=m){var k=a[S];k!=null&&w.push(k)}return w}}return[]}function s6(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,a)}return n}function Ea(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?s6(Object(n),!0).forEach(function(a){Ijs(e,a,n[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):s6(Object(n)).forEach(function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(n,a))})}return e}function Ijs(e,t,n){return(t=Ojs(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Ojs(e){var t=Ljs(e,"string");return typeof t=="symbol"?t:t+""}function Ljs(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var a=n.call(e,t);if(typeof a!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function Ujs(e,t,n,a,s){for(var r=(a||[]).slice(),i=r.length,{start:c}=t,{end:d}=t,m=function(y){var v=r[y];if(v==null)return 1;var $=v,x,w=()=>(x===void 0&&(x=n(v,y)),x);if(y===i-1){var S=e*($.coordinate+e*w()/2-d);r[y]=$=Ea(Ea({},$),{},{tickCoord:S>0?$.coordinate-S*e:$.coordinate})}else r[y]=$=Ea(Ea({},$),{},{tickCoord:$.coordinate});if($.tickCoord!=null){var k=_h(e,$.tickCoord,w,c,d);k&&(d=$.tickCoord-e*(w()/2+s),r[y]=Ea(Ea({},$),{},{isShow:!0}))}},f=i-1;f>=0;f--)m(f);return r}function Bjs(e,t,n,a,s,r){var i=(a||[]).slice(),c=i.length,{start:d,end:m}=t;if(r){var f=a[c-1];if(f!=null){var p=n(f,c-1),y=e*(f.coordinate+e*p/2-m);if(i[c-1]=f=Ea(Ea({},f),{},{tickCoord:y>0?f.coordinate-y*e:f.coordinate}),f.tickCoord!=null){var v=_h(e,f.tickCoord,()=>p,d,m);v&&(m=f.tickCoord-e*(p/2+s),i[c-1]=Ea(Ea({},f),{},{isShow:!0}))}}}for(var $=r?c-1:c,x=function(k){var T=i[k];if(T==null)return 1;var R=T,_,P=()=>(_===void 0&&(_=n(T,k)),_);if(k===0){var j=e*(R.coordinate-e*P()/2-d);i[k]=R=Ea(Ea({},R),{},{tickCoord:j<0?R.coordinate-j*e:R.coordinate})}else i[k]=R=Ea(Ea({},R),{},{tickCoord:R.coordinate});if(R.tickCoord!=null){var N=_h(e,R.tickCoord,P,d,m);N&&(d=R.tickCoord+e*(P()/2+s),i[k]=Ea(Ea({},R),{},{isShow:!0}
962))}},w=0;w<$;w++)x(w);return i}function sN(e,t,n){var{tick:a,ticks:s,viewBox:r,minTickGap:i,orientation:c,interval:d,tickFormatter:m,unit:f,angle:p}=e;if(!s||!s.length||!a)return[];if(Fe(d)||wy.isSsr){var y;return(y=Djs(s,Fe(d)?d:0))!==null&&y!==void 0?y:[]}var v=[],$=c==="top"||c==="bottom"?"width":"height",x=f&&$==="width"?qg(f,{fontSize:t,letterSpacing:n}):{width:0,height:0},w=(_,P)=>{var j=typeof m=="function"?m(_.value,P):_.value;return $==="width"?jjs(qg(j,{fontSize:t,letterSpacing:n}),x,p):qg(j,{fontSize:t,letterSpacing:n})[$]},S=s[0],k=s[1],T=s.length>=2&&S!=null&&k!=null?Co(k.coordinate-S.coordinate):1,R=Njs(r,T,$);return d==="equidistantPreserveStart"?Mjs(T,R,w,s,i):d==="equidistantPreserveEnd"?Ejs(T,R,w,s,i):(d==="preserveStart"||d==="preserveStartEnd"?v=Bjs(T,R,w,s,i,d==="preserveStartEnd"):v=Ujs(T,R,w,s,i),v.filter(_=>_.isShow))}var Fjs=e=>{var{ticks:t,label:n,labelGapWithTick:a=5,tickSize:s=0,tickMargin:r=0}=e,i=0;if(t){Array.from(t).forEach(f=>{if(f){var p=f.getBoundingClientRect();p.width>i&&(i=p.width)}});var c=n?n.getBoundingClientRect().width:0,d=s+r,m=i+d+c+(n?a:0);return Math.round(m)}return 0},zjs={xAxis:{},yAxis:{}},QX=Ka({name:"renderedTicks",initialState:zjs,reducers:{setRenderedTicks:(e,t)=>{var{axisType:n,axisId:a,ticks:s}=t.payload;e[n][a]=s},removeRenderedTicks:(e,t)=>{var{axisType:n,axisId:a}=t.payload;delete e[n][a]}}}),{setRenderedTicks:qjs,removeRenderedTicks:Hjs}=QX.actions,Vjs=QX.reducer,Kjs=["axisLine","width","height","className","hide","ticks","axisType","axisId"];function Gjs(e,t){if(e==null)return{};var n,a,s=Wjs(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a<r.length;a++)n=r[a],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(s[n]=e[n])}return s}function Wjs(e,t){if(e==null)return{};var n={};for(var a in e)if({}.hasOwnProperty.call(e,a)){if(t.indexOf(a)!==-1)continue;n[a]=e[a]}return n}function lu(){return lu=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)({}).hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},lu.apply(null,arguments)}function r6(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,a)}return n}function Sn(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?r6(Object(n),!0).forEach(function(a){Yjs(e,a,n[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):r6(Object(n)).forEach(function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(n,a))})}return e}function Yjs(e,t,n){return(t=Qjs(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Qjs(e){var t=Xjs(e,"string");return typeof t=="symbol"?t:t+""}function Xjs(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var a=n.call(e,t);if(typeof a!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var Yi={x:0,y:0,width:0,height:0,viewBox:{x:0,y:0,width:0,height:0},orientation:"bottom",ticks:[],stroke:"#666",tickLine:!0,axisLine:!0,tick:!0,mirror:!1,minTickGap:5,tickSize:6,tickMargin:2,interval:"preserveEnd",zIndex:la.axis};function Zjs(e){var{x:t,y:n,width:a,height:s,orientation:r,mirror:i,axisLine:c,otherSvgProps:d}=e;if(!c)return null;var m=Sn(Sn(Sn({},d),Is(c)),{},{fill:"none"});if(r==="top"||r==="bottom"){var f=+(r==="top"&&!i||r==="bottom"&&i);m=Sn(Sn({},m),{},{x1:t,y1:n+f*s,x2:t+a,y2:n+f*s})}else{var p=+(r==="left"&&!i||r==="right"&&i);m=Sn(Sn({},m),{},{x1:t+p*a,y1:n,x2:t+p*a,y2:n+s})}return h.createElement("line",lu({},m,{className:Lt("recharts-cartesian-axis-line",vp(c,"className"))}))}function Jjs(e,t,n,a,s,r,i,c,d){var m,f,p,y,v,$,x=c?-1:1,w=e.tickSize||i,S=Fe(e.tickCoord)?e.tickCoord:e.coordinate;switch(r){case"top":m=f=e.coordinate,y=n+ +!c*s,p=y-x*w,$=p-x*d,v=S;break;case"left":p=y=e.coordinate,f=t+ +!c*a,m=f-x*w,v=m-x*d,$=S;break;case"right":p=y=e.coordinate,f=t+ +c*a,m=f+x*w,v=m+x*d,$=S;break;default:m=f=e.coordinate,y=n+ +c*s,p=y+x*w,$=p+x*d,v=S;break}return{line:{x1:m,y1:p,x2:f,y2:y},tick:{x:v,y:$}}}function e2s(e,t){switch(e){case"left":return t?"start":"end";case"right":return t?"end":"start";default:return"middle"}}function t2s(e,t){switch(e){case"left":case"right":return"middle";case"top":return t?"start":"end";default:return t?"end":"start"}}function n2s(e){var{option:t,tickProps:n,value:a}=e,s,r=Lt(n.className,"recharts-cartesian-axis-tick-value");if(h.isValidElement(t))s=h.cloneElement(t,Sn(Sn({},n),{},{className:r}));else if(typeof t=="function")s=t(Sn(Sn({},n),{},{className:r}));else{var i="recharts-cartesian-axis-tick-value";typeof t!="boolean"&&(i=Lt(i,r_s(t))),s=h.createElement(nN,lu({},n,{className:i}),a)}return s}function a2s(e){var{ticks:t,axisType:n,axisId:a}=e,s=gn();return h.useEffect(()=>{if(a==null||n==null)return Wp;var r=t.map(i=>({value:i.value,coordinate:i.coordinate,offset:i.offset,index:i.index}));return s(qjs({ticks:r,axisId:a,axisType:n})),()=>{s(Hjs({axisId:a,axisType:n}))}},[s,t,a,n]),null}var o2s=h.forwardRef((e,t)=>
962{var{ticks:n=[],tick:a,tickLine:s,stroke:r,tickFormatter:i,unit:c,padding:d,tickTextProps:m,orientation:f,mirror:p,x:y,y:v,width:$,height:x,tickSize:w,tickMargin:S,fontSize:k,letterSpacing:T,getTicksConfig:R,events:_,axisType:P,axisId:j}=e,N=sN(Sn(Sn({},R),{},{ticks:n}),k,T),I=Is(R),z=gy(a),E=kX(I.textAnchor)?I.textAnchor:e2s(f,p),L=t2s(f,p),O={};typeof s=="object"&&(O=s);var V=Sn(Sn({},I),{},{fill:"none"},O),ne=N.map(F=>Sn({entry:F},Jjs(F,y,v,$,x,f,w,p,S))),q=ne.map(F=>{var{entry:H,line:ee}=F;return h.createElement(Fa,{className:"recharts-cartesian-axis-tick",key:"tick-".concat(H.value,"-").concat(H.coordinate,"-").concat(H.tickCoord)},s&&h.createElement("line",lu({},V,ee,{className:Lt("recharts-cartesian-axis-tick-line",vp(s,"className"))})))}),M=ne.map((F,H)=>{var ee,B,{entry:G,tick:Q}=F,de=Sn(Sn(Sn(Sn({verticalAnchor:L},I),{},{textAnchor:E,stroke:"none",fill:r},Q),{},{index:H,payload:G,visibleTicksCount:N.length,tickFormatter:i,padding:d},m),{},{angle:(ee=(B=m?.angle)!==null&&B!==void 0?B:I.angle)!==null&&ee!==void 0?ee:0}),Y=Sn(Sn({},de),z);return h.createElement(Fa,lu({className:"recharts-cartesian-axis-tick-label",key:"tick-label-".concat(G.value,"-").concat(G.coordinate,"-").concat(G.tickCoord)},Jw(_,G,H)),a&&h.createElement(n2s,{option:a,tickProps:Y,value:"".concat(typeof i=="function"?i(G.value,H):G.value).concat(c||"")}))});return h.createElement("g",{className:"recharts-cartesian-axis-ticks recharts-".concat(P,"-ticks")},h.createElement(a2s,{ticks:N,axisId:j,axisType:P}),M.length>0&&h.createElement(Fs,{zIndex:la.label},h.createElement("g",{className:"recharts-cartesian-axis-tick-labels recharts-".concat(P,"-tick-labels"),ref:t},M)),q.length>0&&h.createElement("g",{className:"recharts-cartesian-axis-tick-lines recharts-".concat(P,"-tick-lines")},q))}),s2s=h.forwardRef((e,t)=>{var{axisLine:n,width:a,height:s,className:r,hide:i,ticks:c,axisType:d,axisId:m}=e,f=Gjs(e,Kjs),[p,y]=h.useState(""),[v,$]=h.useState(""),x=h.useRef(null);h.useImperativeHandle(t,()=>({getCalculatedWidth:()=>{var S;return Fjs({ticks:x.current,label:(S=e.labelRef)===null||S===void 0?void 0:S.current,labelGapWithTick:5,tickSize:e.tickSize,tickMargin:e.tickMargin})}}));var w=h.useCallback(S=>{if(S){var k=S.getElementsByClassName("recharts-cartesian-axis-tick-value");x.current=k;var T=k[0];if(T){var R=window.getComputedStyle(T),_=R.fontSize,P=R.letterSpacing;(_!==p||P!==v)&&(y(_),$(P))}}},[p,v]);return i||a!=null&&a<=0||s!=null&&s<=0?null:h.createElement(Fs,{zIndex:e.zIndex},h.createElement(Fa,{className:Lt("recharts-cartesian-axis",r)},h.createElement(Zjs,{x:e.x,y:e.y,width:a,height:s,orientation:e.orientation,mirror:e.mirror,axisLine:n,otherSvgProps:Is(e)}),h.createElement(o2s,{ref:w,axisType:d,events:f,fontSize:p,getTicksConfig:e,height:e.height,letterSpacing:v,mirror:e.mirror,orientation:e.orientation,padding:e.padding,stroke:e.stroke,tick:e.tick,tickFormatter:e.tickFormatter,tickLine:e.tickLine,tickMargin:e.tickMargin,tickSize:e.tickSize,tickTextProps:e.tickTextProps,ticks:c,unit:e.unit,width:e.width,x:e.x,y:e.y,axisId:m}),h.createElement(FPs,{x:e.x,y:e.y,width:e.width,height:e.height,lowerWidth:e.width,upperWidth:e.width},h.createElement(XPs,{label:e.label,labelRef:e.labelRef}),e.children)))}),rN=h.forwardRef((e,t)=>{var n=Va(e,Yi);return h.createElement(s2s,lu({},n,{ref:t}))});rN.displayName="CartesianAxis";var r2s=["x1","y1","x2","y2","key"],i2s=["offset"],l2s=["xAxisId","yAxisId"],c2s=["xAxisId","yAxisId"];function i6(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,a)}return n}function Oa(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?i6(Object(n),!0).forEach(function(a){d2s(e,a,n[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i6(Object(n)).forEach(function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(n,a))})}return e}function d2s(e,t,n){return(t=u2s(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function u2s(e){var t=m2s(e,"string");return typeof t=="symbol"?t:t+""}function m2s(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var a=n.call(e,t);if(typeof a!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function _d(){return _d=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)({}).hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},_d.apply(null,arguments)}function L$(e,t){if(e==null)return{};var n,a,s=p2s(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a<r.length;a++)n=r[a],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(s[n]=e[n])}return s}function p2s(e,t){if(e==null)return{};var n={};for(var a in e)if({}.hasOwnProperty.call(e,a)){if(t.indexOf(a)!==-1)continue;n[a]=e[a]}return n}var f2s=e=>{var{fill:t}=e;if(!t||t==="none")return null;var{fillOpacity:n,x:a,y:s,width:r,height:i,ry:c}=e;return h.createElement("rect",{x:a,y:s,ry:c,width:r,height:i,stroke:"none",fill:t,fillOpacity:n,className:"recharts-cartesian-grid-bg"})};function XX(e){var{option:t,lineItemProps:n}=e,a;
962if(h.isValidElement(t))a=h.cloneElement(t,n);else if(typeof t=="function")a=t(n);else{var s,{x1:r,y1:i,x2:c,y2:d,key:m}=n,f=L$(n,r2s),p=(s=Is(f))!==null&&s!==void 0?s:{},{offset:y}=p,v=L$(p,i2s);a=h.createElement("line",_d({},v,{x1:r,y1:i,x2:c,y2:d,fill:"none",key:m}))}return a}function g2s(e){var{x:t,width:n,horizontal:a=!0,horizontalPoints:s}=e;if(!a||!s||!s.length)return null;var{xAxisId:r,yAxisId:i}=e,c=L$(e,l2s),d=s.map((m,f)=>{var p=Oa(Oa({},c),{},{x1:t,y1:m,x2:t+n,y2:m,key:"line-".concat(f),index:f});return h.createElement(XX,{key:"line-".concat(f),option:a,lineItemProps:p})});return h.createElement("g",{className:"recharts-cartesian-grid-horizontal"},d)}function h2s(e){var{y:t,height:n,vertical:a=!0,verticalPoints:s}=e;if(!a||!s||!s.length)return null;var{xAxisId:r,yAxisId:i}=e,c=L$(e,c2s),d=s.map((m,f)=>{var p=Oa(Oa({},c),{},{x1:m,y1:t,x2:m,y2:t+n,key:"line-".concat(f),index:f});return h.createElement(XX,{option:a,lineItemProps:p,key:"line-".concat(f)})});return h.createElement("g",{className:"recharts-cartesian-grid-vertical"},d)}function y2s(e){var{horizontalFill:t,fillOpacity:n,x:a,y:s,width:r,height:i,horizontalPoints:c,horizontal:d=!0}=e;if(!d||!t||!t.length||c==null)return null;var m=c.map(p=>Math.round(p+s-s)).sort((p,y)=>p-y);s!==m[0]&&m.unshift(0);var f=m.map((p,y)=>{var v=m[y+1],$=v==null,x=$?s+i-p:v-p;if(x<=0)return null;var w=y%t.length;return h.createElement("rect",{key:"react-".concat(y),y:p,x:a,height:x,width:r,stroke:"none",fill:t[w],fillOpacity:n,className:"recharts-cartesian-grid-bg"})});return h.createElement("g",{className:"recharts-cartesian-gridstripes-horizontal"},f)}function v2s(e){var{vertical:t=!0,verticalFill:n,fillOpacity:a,x:s,y:r,width:i,height:c,verticalPoints:d}=e;if(!t||!n||!n.length)return null;var m=d.map(p=>Math.round(p+s-s)).sort((p,y)=>p-y);s!==m[0]&&m.unshift(0);var f=m.map((p,y)=>{var v=m[y+1],$=v==null,x=$?s+i-p:v-p;if(x<=0)return null;var w=y%n.length;return h.createElement("rect",{key:"react-".concat(y),x:p,y:r,width:x,height:c,stroke:"none",fill:n[w],fillOpacity:a,className:"recharts-cartesian-grid-bg"})});return h.createElement("g",{className:"recharts-cartesian-gridstripes-vertical"},f)}var b2s=(e,t)=>{var{xAxis:n,width:a,height:s,offset:r}=e;return SW(sN(Oa(Oa(Oa({},Yi),n),{},{ticks:AW(n),viewBox:{x:0,y:0,width:a,height:s}})),r.left,r.left+r.width,t)},x2s=(e,t)=>{var{yAxis:n,width:a,height:s,offset:r}=e;return SW(sN(Oa(Oa(Oa({},Yi),n),{},{ticks:AW(n),viewBox:{x:0,y:0,width:a,height:s}})),r.top,r.top+r.height,t)},$2s={horizontal:!0,vertical:!0,horizontalPoints:[],verticalPoints:[],stroke:"#ccc",fill:"none",verticalFill:[],horizontalFill:[],xAxisId:0,yAxisId:0,syncWithTicks:!1,zIndex:la.grid};function iN(e){var t=Jj(),n=e2(),a=_W(),s=Oa(Oa({},Va(e,$2s)),{},{x:Fe(e.x)?e.x:a.left,y:Fe(e.y)?e.y:a.top,width:Fe(e.width)?e.width:a.width,height:Fe(e.height)?e.height:a.height}),{xAxisId:r,yAxisId:i,x:c,y:d,width:m,height:f,syncWithTicks:p,horizontalValues:y,verticalValues:v}=s,$=Ga(),x=Ge(I=>aB(I,"xAxis",r,$)),w=Ge(I=>aB(I,"yAxis",i,$));if(!xp(m)||!xp(f)||!Fe(c)||!Fe(d))return null;var S=s.verticalCoordinatesGenerator||b2s,k=s.horizontalCoordinatesGenerator||x2s,{horizontalPoints:T,verticalPoints:R}=s;if((!T||!T.length)&&typeof k=="function"){var _=y&&y.length,P=k({yAxis:w?Oa(Oa({},w),{},{ticks:_?y:w.ticks}):void 0,width:t??m,height:n??f,offset:a},_?!0:p);r5(Array.isArray(P),"horizontalCoordinatesGenerator should return Array but instead it returned [".concat(typeof P,"]")),Array.isArray(P)&&(T=P)}if((!R||!R.length)&&typeof S=="function"){var j=v&&v.length,N=S({xAxis:x?Oa(Oa({},x),{},{ticks:j?v:x.ticks}):void 0,width:t??m,height:n??f,offset:a},j?!0:p);r5(Array.isArray(N),"verticalCoordinatesGenerator should return Array but instead it returned [".concat(typeof N,"]")),Array.isArray(N)&&(R=N)}return h.createElement(Fs,{zIndex:s.zIndex},h.createElement("g",{className:"recharts-cartesian-grid"},h.createElement(f2s,{fill:s.fill,fillOpacity:s.fillOpacity,x:s.x,y:s.y,width:s.width,height:s.height,ry:s.ry}),h.createElement(y2s,_d({},s,{horizontalPoints:T})),h.createElement(v2s,_d({},s,{verticalPoints:R})),h.createElement(g2s,_d({},s,{offset:a,horizontalPoints:T,xAxis:x,yAxis:w})),h.createElement(h2s,_d({},s,{offset:a,verticalPoints:R,xAxis:x,yAxis:w}))))}
962iN.displayName="CartesianGrid";var w2s={},ZX=Ka({name:"errorBars",initialState:w2s,reducers:{addErrorBar:(e,t)=>{var{itemId:n,errorBar:a}=t.payload;e[n]||(e[n]=[]),e[n].push(a)},replaceErrorBar:(e,t)=>{var{itemId:n,prev:a,next:s}=t.payload;e[n]&&(e[n]=e[n].map(r=>r.dataKey===a.dataKey&&r.direction===a.direction?s:r))},removeErrorBar:(e,t)=>{var{itemId:n,errorBar:a}=t.payload;e[n]&&(e[n]=e[n].filter(s=>s.dataKey!==a.dataKey||s.direction!==a.direction))}}}),{addErrorBar:S6s,replaceErrorBar:A6s,removeErrorBar:T6s}=ZX.actions,k2s=ZX.reducer,C2s=["children"];function S2s(e,t){if(e==null)return{};var n,a,s=A2s(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a<r.length;a++)n=r[a],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(s[n]=e[n])}return s}function A2s(e,t){if(e==null)return{};var n={};for(var a in e)if({}.hasOwnProperty.call(e,a)){if(t.indexOf(a)!==-1)continue;n[a]=e[a]}return n}var T2s={data:[],xAxisId:"xAxis-0",yAxisId:"yAxis-0",dataPointFormatter:()=>({x:0,y:0,value:0}),errorBarOffset:0},R2s=h.createContext(T2s);function P2s(e){var{children:t}=e,n=S2s(e,C2s);return h.createElement(R2s.Provider,{value:n},t)}function lN(e,t){var n,a,s=Ge(m=>gl(m,e)),r=Ge(m=>hl(m,t)),i=(n=s?.allowDataOverflow)!==null&&n!==void 0?n:Wn.allowDataOverflow,c=(a=r?.allowDataOverflow)!==null&&a!==void 0?a:Yn.allowDataOverflow,d=i||c;return{needClip:d,needClipX:i,needClipY:c}}function JX(e){var{xAxisId:t,yAxisId:n,clipPathId:a}=e,s=oN(),{needClipX:r,needClipY:i,needClip:c}=lN(t,n);if(!c||!s)return null;var{x:d,y:m,width:f,height:p}=s;return h.createElement("clipPath",{id:"clipPath-".concat(a)},h.createElement("rect",{x:r?d:d-f/2,y:i?m:m-p/2,width:r?f:f*2,height:i?p:p*2}))}function _2s(e){var t=gy(e),n=3,a=2;if(t!=null){var{r:s,strokeWidth:r}=t,i=Number(s),c=Number(r);return(Number.isNaN(i)||i<0)&&(i=n),(Number.isNaN(c)||c<0)&&(c=a),{r:i,strokeWidth:c}}return{r:n,strokeWidth:a}}function fi(e,t){var n,a;return(n=(a=e.graphicalItems.cartesianItems.find(s=>s.id===t))===null||a===void 0?void 0:a.xAxisId)!==null&&n!==void 0?n:VX}function gi(e,t){var n,a;return(n=(a=e.graphicalItems.cartesianItems.find(s=>s.id===t))===null||a===void 0?void 0:a.yAxisId)!==null&&n!==void 0?n:VX}var eZ=(e,t,n)=>_c(e,"xAxis",fi(e,t),n),tZ=(e,t,n)=>Pc(e,"xAxis",fi(e,t),n),nZ=(e,t,n)=>_c(e,"yAxis",gi(e,t),n),aZ=(e,t,n)=>Pc(e,"yAxis",gi(e,t),n),j2s=ce([Ut,eZ,nZ,tZ,aZ],(e,t,n,a,s)=>pi(e,"xAxis")?$p(t,a,!1):$p(n,s,!1)),N2s=(e,t)=>t,oZ=ce([L0,N2s],(e,t)=>e.filter(n=>n.type==="area").find(n=>n.id===t)),sZ=e=>{var t=Ut(e),n=pi(t,"xAxis");return n?"yAxis":"xAxis"},D2s=(e,t)=>{var n=sZ(e);return n==="yAxis"?gi(e,t):fi(e,t)},M2s=(e,t,n)=>_$(e,sZ(e),D2s(e,t),n),E2s=ce([oZ,M2s],(e,t)=>{var n;if(!(e==null||t==null)){var{stackId:a}=e,s=T0(e);if(!(a==null||s==null)){var r=(n=t[a])===null||n===void 0?void 0:n.stackedData,i=r?.find(c=>c.key===s);if(i!=null)return i.map(c=>[c[0],c[1]])}}}),I2s=ce([Ut,eZ,nZ,tZ,aZ,E2s,QW,j2s,oZ,Qks],(e,t,n,a,s,r,i,c,d,m)=>{var{chartData:f,dataStartIndex:p,dataEndIndex:y}=i;if(!(d==null||e!=="horizontal"&&e!=="vertical"||t==null||n==null||a==null||s==null||a.length===0||s.length===0||c==null)){var{data:v}=d,$;if(v&&v.length>0?$=v:$=f?.slice(p,y+1),$!=null)return nNs({layout:e,xAxis:t,yAxis:n,xAxisTicks:a,yAxisTicks:s,dataStartIndex:p,areaSettings:d,stackedData:r,displayedData:$,chartBaseValue:m,bandSize:c})}}),O2s=["id"],L2s=["activeDot","animationBegin","animationDuration","animationEasing","connectNulls","dot","fill","fillOpacity","hide","isAnimationActive","legendType","stroke","xAxisId","yAxisId"];function Hd(){return Hd=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)({}).hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},Hd.apply(null,arguments)}function rZ(e,t){if(e==null)return{};var n,a,s=U2s(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a<r.length;a++)n=r[a],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(s[n]=e[n])}return s}function U2s(e,t){if(e==null)return{};var n={};for(var a in e)if({}.hasOwnProperty.call(e,a)){if(t.indexOf(a)!==-1)continue;n[a]=e[a]}return n}function l6(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,a)}return n}function Um(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};
962t%2?l6(Object(n),!0).forEach(function(a){B2s(e,a,n[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):l6(Object(n)).forEach(function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(n,a))})}return e}function B2s(e,t,n){return(t=F2s(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function F2s(e){var t=z2s(e,"string");return typeof t=="symbol"?t:t+""}function z2s(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var a=n.call(e,t);if(typeof a!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function U$(e,t){return e&&e!=="none"?e:t}var q2s=e=>{var{dataKey:t,name:n,stroke:a,fill:s,legendType:r,hide:i}=e;return[{inactive:i,dataKey:t,type:r,color:U$(a,s),value:d0(n,t),payload:e}]},H2s=h.memo(e=>{var{dataKey:t,data:n,stroke:a,strokeWidth:s,fill:r,name:i,hide:c,unit:d,tooltipType:m,id:f}=e,p={dataDefinedOnItem:n,getPosition:Wp,settings:{stroke:a,strokeWidth:s,fill:r,dataKey:t,nameKey:void 0,name:d0(i,t),hide:c,type:m,color:U$(a,r),unit:d,graphicalItemId:f}};return h.createElement(BX,{tooltipEntrySettings:p})});function V2s(e){var{clipPathId:t,points:n,props:a}=e,{needClip:s,dot:r,dataKey:i}=a,c=Is(a);return h.createElement(W_s,{points:n,dot:r,className:"recharts-area-dots",dotClassName:"recharts-area-dot",dataKey:i,baseProps:c,needClip:s,clipPathId:t})}function K2s(e){var{showLabels:t,children:n,points:a}=e,s=a.map(r=>{var i,c,d={x:(i=r.x)!==null&&i!==void 0?i:0,y:(c=r.y)!==null&&c!==void 0?c:0,width:0,lowerWidth:0,upperWidth:0,height:0};return Um(Um({},d),{},{value:r.value,payload:r.payload,parentViewBox:void 0,viewBox:d,fill:void 0})});return h.createElement(_X,{value:t?s:void 0},n)}function c6(e){var{points:t,baseLine:n,needClip:a,clipPathId:s,props:r}=e,{layout:i,type:c,stroke:d,connectNulls:m,isRange:f}=r,{id:p}=r,y=rZ(r,O2s),v=Is(y),$=no(y);return h.createElement(h.Fragment,null,t?.length>1&&h.createElement(Fa,{clipPath:a?"url(#clipPath-".concat(s,")"):void 0},h.createElement(Fg,Hd({},$,{id:p,points:t,connectNulls:m,type:c,baseLine:n,layout:i,stroke:"none",className:"recharts-area-area"})),d!=="none"&&h.createElement(Fg,Hd({},v,{className:"recharts-area-curve",layout:i,type:c,connectNulls:m,fill:"none",points:t})),d!=="none"&&f&&Array.isArray(n)&&h.createElement(Fg,Hd({},v,{className:"recharts-area-curve",layout:i,type:c,connectNulls:m,fill:"none",points:n}))),h.createElement(V2s,{points:t,props:y,clipPathId:s}))}function G2s(e){var t,n,{alpha:a,baseLine:s,points:r,strokeWidth:i}=e,c=(t=r[0])===null||t===void 0?void 0:t.y,d=(n=r[r.length-1])===null||n===void 0?void 0:n.y;if(!ht(c)||!ht(d))return null;var m=a*Math.abs(c-d),f=Math.max(...r.map(p=>p.x||0));return Fe(s)?f=Math.max(s,f):s&&Array.isArray(s)&&s.length&&(f=Math.max(...s.map(p=>p.x||0),f)),Fe(f)?h.createElement("rect",{x:0,y:c<d?c:c-m,width:f+(i?parseInt("".concat(i),10):1),height:Math.floor(m)}):null}function W2s(e){var t,n,{alpha:a,baseLine:s,points:r,strokeWidth:i}=e,c=(t=r[0])===null||t===void 0?void 0:t.x,d=(n=r[r.length-1])===null||n===void 0?void 0:n.x;if(!ht(c)||!ht(d))return null;var m=a*Math.abs(c-d),f=Math.max(...r.map(p=>p.y||0));return Fe(s)?f=Math.max(s,f):s&&Array.isArray(s)&&s.length&&(f=Math.max(...s.map(p=>p.y||0),f)),Fe(f)?h.createElement("rect",{x:c<d?c:c-m,y:0,width:m,height:Math.floor(f+(i?parseInt("".concat(i),10):1))}):null}function Y2s(e){var{alpha:t,layout:n,points:a,baseLine:s,strokeWidth:r}=e;return n==="vertical"?h.createElement(G2s,{alpha:t,points:a,baseLine:s,strokeWidth:r}):h.createElement(W2s,{alpha:t,points:a,baseLine:s,strokeWidth:r})}function Q2s(e){var{needClip:t,clipPathId:n,props:a,previousPointsRef:s,previousBaselineRef:r}=e,{points:i,baseLine:c,isAnimationActive:d,animationBegin:m,animationDuration:f,animationEasing:p,onAnimationStart:y,onAnimationEnd:v}=a,$=h.useMemo(()=>({points:i,baseLine:c}),[i,c]),x=x0($,"recharts-area-"),w=t2(),[S,k]=h.useState(!1),T=!S,R=h.useCallback(()=>{typeof v=="function"&&v(),k(!1)},[v]),_=h.useCallback(()=>{typeof y=="function"&&y(),k(!0)},[y]);if(w==null)return null;var P=s.current,j=r.current;return h.createElement(K2s,{showLabels:T,points:i},a.children,h.createElement(b0,{animationId:x,begin:m,duration:f,isActive:d,easing:p,onAnimationEnd:R,onAnimationStart:_,key:x},N=>
962{if(P){var I=P.length/i.length,z=N===1?i:i.map((L,O)=>{var V=Math.floor(O*I);if(P[V]){var ne=P[V];return Um(Um({},L),{},{x:bn(ne.x,L.x,N),y:bn(ne.y,L.y,N)})}return L}),E;return Fe(c)?E=bn(j,c,N):$n(c)||hr(c)?E=bn(j,0,N):E=c.map((L,O)=>{var V=Math.floor(O*I);if(Array.isArray(j)&&j[V]){var ne=j[V];return Um(Um({},L),{},{x:bn(ne.x,L.x,N),y:bn(ne.y,L.y,N)})}return L}),N>0&&(s.current=z,r.current=E),h.createElement(c6,{points:z,baseLine:E,needClip:t,clipPathId:n,props:a})}return N>0&&(s.current=i,r.current=c),h.createElement(Fa,null,d&&h.createElement("defs",null,h.createElement("clipPath",{id:"animationClipPath-".concat(n)},h.createElement(Y2s,{alpha:N,points:i,baseLine:c,layout:w,strokeWidth:a.strokeWidth}))),h.createElement(Fa,{clipPath:"url(#animationClipPath-".concat(n,")")},h.createElement(c6,{points:i,baseLine:c,needClip:t,clipPathId:n,props:a})))}),h.createElement(NX,{label:a.label}))}function X2s(e){var{needClip:t,clipPathId:n,props:a}=e,s=h.useRef(null),r=h.useRef();return h.createElement(Q2s,{needClip:t,clipPathId:n,props:a,previousPointsRef:s,previousBaselineRef:r})}class Z2s extends h.PureComponent{render(){var{hide:t,dot:n,points:a,className:s,top:r,left:i,needClip:c,xAxisId:d,yAxisId:m,width:f,height:p,id:y,baseLine:v,zIndex:$}=this.props;if(t)return null;var x=Lt("recharts-area",s),w=y,{r:S,strokeWidth:k}=_2s(n),T=IX(n),R=S*2+k,_=c?"url(#clipPath-".concat(T?"":"dots-").concat(w,")"):void 0;return h.createElement(Fs,{zIndex:$},h.createElement(Fa,{className:x},c&&h.createElement("defs",null,h.createElement(JX,{clipPathId:w,xAxisId:d,yAxisId:m}),!T&&h.createElement("clipPath",{id:"clipPath-dots-".concat(w)},h.createElement("rect",{x:i-R/2,y:r-R/2,width:f+R,height:p+R}))),h.createElement(X2s,{needClip:c,clipPathId:w,props:this.props})),h.createElement(t6,{points:a,mainColor:U$(this.props.stroke,this.props.fill),itemDataKey:this.props.dataKey,activeDot:this.props.activeDot,clipPath:_}),this.props.isRange&&Array.isArray(v)&&h.createElement(t6,{points:v,mainColor:U$(this.props.stroke,this.props.fill),itemDataKey:this.props.dataKey,activeDot:this.props.activeDot,clipPath:_}))}}var J2s={activeDot:!0,animationBegin:0,animationDuration:1500,animationEasing:"ease",connectNulls:!1,dot:!1,fill:"#3182bd",fillOpacity:.6,hide:!1,isAnimationActive:"auto",legendType:"line",stroke:"#3182bd",strokeWidth:1,type:"linear",label:!1,xAxisId:0,yAxisId:0,zIndex:la.area};function eNs(e){var t,{activeDot:n,animationBegin:a,animationDuration:s,animationEasing:r,connectNulls:i,dot:c,fill:d,fillOpacity:m,hide:f,isAnimationActive:p,legendType:y,stroke:v,xAxisId:$,yAxisId:x}=e,w=rZ(e,L2s),S=Cu(),k=iX(),{needClip:T}=lN($,x),R=Ga(),{points:_,isRange:P,baseLine:j}=(t=Ge(O=>I2s(O,e.id,R)))!==null&&t!==void 0?t:{},N=oN();if(S!=="horizontal"&&S!=="vertical"||N==null||k!=="AreaChart"&&k!=="ComposedChart")return null;var{height:I,width:z,x:E,y:L}=N;return!_||!_.length?null:h.createElement(Z2s,Hd({},w,{activeDot:n,animationBegin:a,animationDuration:s,animationEasing:r,baseLine:j,connectNulls:i,dot:c,fill:d,fillOpacity:m,height:I,hide:f,layout:S,isAnimationActive:p,isRange:P,legendType:y,needClip:T,points:_,stroke:v,width:z,left:E,top:L,xAxisId:$,yAxisId:x}))}var tNs=(e,t,n,a,s)=>{var r=n??t;if(Fe(r))return r;var i=e==="horizontal"?s:a,c=i.scale.domain();if(i.type==="number"){var d=Math.max(c[0],c[1]),m=Math.min(c[0],c[1]);return r==="dataMin"?m:r==="dataMax"||d<0?d:Math.max(Math.min(c[0],c[1]),0)}return r==="dataMin"?c[0]:r==="dataMax"?c[1]:c[0]};function nNs(e){var{areaSettings:{connectNulls:t,baseValue:n,dataKey:a},stackedData:s,layout:r,chartBaseValue:i,xAxis:c,yAxis:d,displayedData:m,dataStartIndex:f,xAxisTicks:p,yAxisTicks:y,bandSize:v}=e,$=s&&s.length,x=tNs(r,i,n,c,d),w=r==="horizontal",S=!1,k=m.map((R,_)=>{var P,j,N,I;if($)I=s[f+_];else{var z=jn(R,a);Array.isArray(z)?(I=z,S=!0):I=[x,z]}var E=(P=(j=I)===null||j===void 0?void 0:j[1])!==null&&P!==void 0?P:null,L=E==null||$&&!t&&jn(R,a)==null;if(w){var O;return{x:e5({axis:c,ticks:p,bandSize:v,entry:R,index:_}),y:L?null:(O=d.scale.map(E))!==null&&O!==void 0?O:null,value:I,payload:R}}return{x:L?null:(N=c.scale.map(E))!==null&&N!==void 0?N:null,y:e5({axis:d,ticks:y,bandSize:v,entry:R,index:_}),value:I,payload:R}}),T;return $||S?T=k.map(R=>{var _,P=Array.isArray(R.value)?R.value[0]:null;if(w){var j;return{x:R.x,y:P!=null&&R.y!=null&&(j=d.scale.map(P))!==null&&j!==void 0?j:null,payload:R.payload}}return{x:P!=null&&(_=c.scale.map(P))!==null&&_!==void 0?_:null,y:R.y,payload:R.payload}}):T=w?d.scale.map(x):c.scale.map(x),{points:k,baseLine:T??0,isRange:S}}function aNs(e){var t=Va(e,J2s),n=Ga();return h.createElement(zX,{id:t.id,type:"area"},a=>h.createElement(h.Fragment,null,h.createElement(FX,{legendPayload:q2s(t)}),h.createElement(H2s,{dataKey:t.dataKey,data:t.data,stroke:t.stroke,strokeWidth:t.strokeWidth,fill:t.fill,name:t.name,hide:t.hide,unit:t.unit,tooltipType:t.tooltipType,id:a}),h.createElement(HX,{type:"area",id:a,data:t.data,dataKey:t.dataKey,xAxisId:t.xAxisId,yAxisId:t.yAxisId,zAxisId:0,stackId:TW(t.stackId),hide:t.hide,barSize:void 0,baseValue:t.baseValue,isPanorama:n,connectNulls:t.connectNulls}),h.createElement(eNs,Hd({},t,{id:a}))))}var iZ=h.memo(aNs,Yp);iZ.displayName="Area";var oNs="Invariant failed";function sNs(e,t){throw new Error(oNs)}function RP(){return RP=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)({}).hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},RP.apply(null,arguments)}function cN(e){return h.createElement(P_s,RP({shapeType:"rectangle",activeClassName:"recharts-active-bar",inActiveClassName:"recharts-inactive-bar"},e))}var rNs=function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return(a,s)=>{if(Fe(t))return t;var r=Fe(a)||$n(a);return r?t(a,s):(r||sNs(),n)}},iNs=(e,t,n)=>n,lNs=(e,t)=>t,Ny=ce([L0,lNs],(e,t)=>e.filter(n=>n.type==="bar").find(n=>n.id===t)),cNs=ce([Ny],e=>e?.maxBarSize),dNs=(e,t,n,a)=>a,uNs=ce([Ut,L0,fi,gi,iNs],(e,t,n,a,s)=>t.filter(r=>e==="horizontal"?r.xAxisId===n:r.yAxisId===a).filter(r=>r.isPanorama===s).filter(r=>r.hide===!1).filter(r=>r.type==="bar")),mNs=(e,t,n)=>{var a=Ut(e),s=fi(e,t),r=gi(e,t);if(!(s==null||r==null))return a==="horizontal"?_$(e,"yAxis",r,n):_$(e,"xAxis",s,n)},pNs=(e,t)=>{var n=Ut(e),a=fi(e,t),s=gi(e,t);if(!(a==null||s==null))return n==="horizontal"?nB(e,"xAxis",a):nB(e,"yAxis",s)},fNs=ce([uNs,Yks,pNs],fjs),gNs=(e,t,n)=>{var a,s,r=Ny(e,t);if(r==null)return 0;var i=fi(e,t),c=gi(e,t);if(i==null||c==null)return 0;var d=Ut(e),m=lY(e),{maxBarSize:f}=r,p=$n(f)?m:f,y,v;return d==="horizontal"?(y=_c(e,"xAxis",i,n),v=Pc(e,"xAxis",i,n)):(y=_c(e,"yAxis",c,n),v=Pc(e,"yAxis",c,n)),(a=(s=$p(y,v,!0))!==null&&s!==void 0?s:p
962)!==null&&a!==void 0?a:0},lZ=(e,t,n)=>{var a=Ut(e),s=fi(e,t),r=gi(e,t);if(!(s==null||r==null)){var i,c;return a==="horizontal"?(i=_c(e,"xAxis",s,n),c=Pc(e,"xAxis",s,n)):(i=_c(e,"yAxis",r,n),c=Pc(e,"yAxis",r,n)),$p(i,c)}},hNs=ce([fNs,lY,Wks,cY,gNs,lZ,cNs],bjs),yNs=(e,t,n)=>{var a=fi(e,t);if(a!=null)return _c(e,"xAxis",a,n)},vNs=(e,t,n)=>{var a=gi(e,t);if(a!=null)return _c(e,"yAxis",a,n)},bNs=(e,t,n)=>{var a=fi(e,t);if(a!=null)return Pc(e,"xAxis",a,n)},xNs=(e,t,n)=>{var a=gi(e,t);if(a!=null)return Pc(e,"yAxis",a,n)},$Ns=ce([hNs,Ny],$js),wNs=ce([mNs,Ny],xjs),kNs=ce([ma,Xj,yNs,vNs,bNs,xNs,$Ns,Ut,QW,lZ,wNs,Ny,dNs],(e,t,n,a,s,r,i,c,d,m,f,p,y)=>{var{chartData:v,dataStartIndex:$,dataEndIndex:x}=d;if(!(p==null||i==null||t==null||c!=="horizontal"&&c!=="vertical"||n==null||a==null||s==null||r==null||m==null)){var{data:w}=p,S;if(w!=null&&w.length>0?S=w:S=v?.slice($,x+1),S!=null)return XNs({layout:c,barSettings:p,pos:i,parentViewBox:t,bandSize:m,xAxis:n,yAxis:a,xAxisTicks:s,yAxisTicks:r,stackedData:f,displayedData:S,offset:e,cells:y,dataStartIndex:$})}}),CNs=["index"];function PP(){return PP=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)({}).hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},PP.apply(null,arguments)}function SNs(e,t){if(e==null)return{};var n,a,s=ANs(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a<r.length;a++)n=r[a],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(s[n]=e[n])}return s}function ANs(e,t){if(e==null)return{};var n={};for(var a in e)if({}.hasOwnProperty.call(e,a)){if(t.indexOf(a)!==-1)continue;n[a]=e[a]}return n}var cZ=h.createContext(void 0),TNs=e=>{var t=h.useContext(cZ);if(t!=null)return t.stackId;if(e!=null)return TW(e)},RNs=(e,t)=>"recharts-bar-stack-clip-path-".concat(e,"-").concat(t),PNs=e=>{var t=h.useContext(cZ);if(t!=null){var{stackId:n}=t;return"url(#".concat(RNs(n,e),")")}},dZ=e=>{var{index:t}=e,n=SNs(e,CNs),a=PNs(t);return h.createElement(Fa,PP({className:"recharts-bar-stack-layer",clipPath:a},n))},_Ns=["onMouseEnter","onMouseLeave","onClick"],jNs=["value","background","tooltipPosition"],NNs=["id"],DNs=["onMouseEnter","onClick","onMouseLeave"];function jc(){return jc=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)({}).hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},jc.apply(null,arguments)}function d6(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,a)}return n}function eo(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?d6(Object(n),!0).forEach(function(a){MNs(e,a,n[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):d6(Object(n)).forEach(function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(n,a))})}return e}function MNs(e,t,n){return(t=ENs(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ENs(e){var t=INs(e,"string");return typeof t=="symbol"?t:t+""}function INs(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var a=n.call(e,t);if(typeof a!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function B$(e,t){if(e==null)return{};var n,a,s=ONs(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a<r.length;a++)n=r[a],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(s[n]=e[n])}return s}function ONs(e,t){if(e==null)return{};var n={};for(var a in e)if({}.hasOwnProperty.call(e,a)){if(t.indexOf(a)!==-1)continue;n[a]=e[a]}return n}var LNs=e=>{var{dataKey:t,name:n,fill:a,legendType:s,hide:r}=e;return[{inactive:r,dataKey:t,type:s,color:a,value:d0(n,t),payload:e}]},UNs=h.memo(e=>{var{dataKey:t,stroke:n,strokeWidth:a,fill:s,name:r,hide:i,unit:c,tooltipType:d,id:m}=e,f={dataDefinedOnItem:void 0,getPosition:Wp,settings:{stroke:n,strokeWidth:a,fill:s,dataKey:t,nameKey:void 0,name:d0(r,t),hide:i,type:d,color:s,unit:c,graphicalItemId:m}};return h.createElement(BX,{tooltipEntrySettings:f})});function BNs(e){var t=Ge(iu),{data:n,dataKey:a,background:s,allOtherBarProps:r}=e,{onMouseEnter:i,onMouseLeave:c,onClick:d}=r,m=B$(r,_Ns),f=OX(i,a,r.id),p=LX(c),y=UX(d,a,r.id);if(!s||n==null)return null;var v=gy(s);
962return h.createElement(Fs,{zIndex:wjs(s,la.barBackground)},n.map(($,x)=>{var{value:w,background:S,tooltipPosition:k}=$,T=B$($,jNs);if(!S)return null;var R=f($,x),_=p($,x),P=y($,x),j=eo(eo(eo(eo(eo({option:s,isActive:String(x)===t},T),{},{fill:"#eee"},S),v),Jw(m,$,x)),{},{onMouseEnter:R,onMouseLeave:_,onClick:P,dataKey:a,index:x,className:"recharts-bar-background-rectangle"});return h.createElement(cN,jc({key:"background-bar-".concat(x)},j))}))}function FNs(e){var{showLabels:t,children:n,rects:a}=e,s=a?.map(r=>{var i={x:r.x,y:r.y,width:r.width,lowerWidth:r.width,upperWidth:r.width,height:r.height};return eo(eo({},i),{},{value:r.value,payload:r.payload,parentViewBox:r.parentViewBox,viewBox:i,fill:r.fill})});return h.createElement(_X,{value:t?s:void 0},n)}function zNs(e){var{shape:t,activeBar:n,baseProps:a,entry:s,index:r,dataKey:i}=e,c=Ge(iu),d=Ge(oX),m=n&&String(s.originalDataIndex)===c&&(d==null||i===d),[f,p]=h.useState(!1),[y,v]=h.useState(!1);h.useEffect(()=>{var T;return m?(p(!0),T=requestAnimationFrame(()=>{v(!0)})):v(!1),()=>{cancelAnimationFrame(T)}},[m]);var $=h.useCallback(()=>{m||p(!1)},[m]),x=m&&y,w=m||f,S;m?n===!0?S=t:S=n:S=t;var k=h.createElement(cN,jc({},a,{name:String(a.name)},s,{isActive:x,option:S,index:r,dataKey:i,onTransitionEnd:$}));return w?h.createElement(Fs,{zIndex:la.activeBar},h.createElement(dZ,{index:s.originalDataIndex},k)):k}function qNs(e){var{shape:t,baseProps:n,entry:a,index:s,dataKey:r}=e;return h.createElement(cN,jc({},n,{name:String(n.name)},a,{isActive:!1,option:t,index:s,dataKey:r}))}function HNs(e){var t,{data:n,props:a}=e,s=(t=Is(a))!==null&&t!==void 0?t:{},{id:r}=s,i=B$(s,NNs),{shape:c,dataKey:d,activeBar:m}=a,{onMouseEnter:f,onClick:p,onMouseLeave:y}=a,v=B$(a,DNs),$=OX(f,d,r),x=LX(y),w=UX(p,d,r);return n?h.createElement(h.Fragment,null,n.map((S,k)=>h.createElement(dZ,jc({index:S.originalDataIndex,key:"rectangle-".concat(S?.x,"-").concat(S?.y,"-").concat(S?.value,"-").concat(k),className:"recharts-bar-rectangle"},Jw(v,S,k),{onMouseEnter:$(S,k),onMouseLeave:x(S,k),onClick:w(S,k)}),m?h.createElement(zNs,{shape:c,activeBar:m,baseProps:i,entry:S,index:k,dataKey:d}):h.createElement(qNs,{shape:c,baseProps:i,entry:S,index:k,dataKey:d})))):null}function VNs(e){var{props:t,previousRectanglesRef:n}=e,{data:a,layout:s,isAnimationActive:r,animationBegin:i,animationDuration:c,animationEasing:d,onAnimationEnd:m,onAnimationStart:f}=t,p=n.current,y=x0(t,"recharts-bar-"),[v,$]=h.useState(!1),x=!v,w=h.useCallback(()=>{typeof m=="function"&&m(),$(!1)},[m]),S=h.useCallback(()=>{typeof f=="function"&&f(),$(!0)},[f]);return h.createElement(FNs,{showLabels:x,rects:a},h.createElement(b0,{animationId:y,begin:i,duration:c,isActive:r,easing:d,onAnimationEnd:w,onAnimationStart:S,key:y},k=>{var T=k===1?a:a?.map((R,_)=>{var P=p&&p[_];if(P)return eo(eo({},R),{},{x:bn(P.x,R.x,k),y:bn(P.y,R.y,k),width:bn(P.width,R.width,k),height:bn(P.height,R.height,k)});if(s==="horizontal"){var j=bn(0,R.height,k),N=bn(R.stackedBarStart,R.y,k);return eo(eo({},R),{},{y:N,height:j})}var I=bn(0,R.width,k),z=bn(R.stackedBarStart,R.x,k);return eo(eo({},R),{},{width:I,x:z})});return k>0&&(n.current=T??null),T==null?null:h.createElement(Fa,null,h.createElement(HNs,{props:t,data:T}))}),h.createElement(NX,{label:t.label}),t.children)}function KNs(e){var t=h.useRef(null);return h.createElement(VNs,{previousRectanglesRef:t,props:e})}var uZ=0,GNs=(e,t)=>{var n=Array.isArray(e.value)?e.value[1]:e.value;return{x:e.x,y:e.y,value:n,errorVal:jn(e,t)}};class WNs extends h.PureComponent{render(){var{hide:t,data:n,dataKey:a,className:s,xAxisId:r,yAxisId:i,needClip:c,background:d,id:m}=this.props;if(t||n==null)return null;var f=Lt("recharts-bar",s),p=m;return h.createElement(Fa,{className:f,id:m},c&&h.createElement("defs",null,h.createElement(JX,{clipPathId:p,xAxisId:r,yAxisId:i})),h.createElement(Fa,{className:"recharts-bar-rectangles",clipPath:c?"url(#clipPath-".concat(p,")"):void 0},h.createElement(BNs,{data:n,dataKey:a,background:d,allOtherBarProps:this.props}),h.createElement(KNs,this.props)))}}var YNs={activeBar:!1,animationBegin:0,animationDuration:400,animationEasing:"ease",background:!1,hide:!1,isAnimationActive:"auto",label:!1,legendT
962ype:"rect",minPointSize:uZ,xAxisId:0,yAxisId:0,zIndex:la.bar};function QNs(e){var{xAxisId:t,yAxisId:n,hide:a,legendType:s,minPointSize:r,activeBar:i,animationBegin:c,animationDuration:d,animationEasing:m,isAnimationActive:f}=e,{needClip:p}=lN(t,n),y=Cu(),v=Ga(),$=d_s(e.children,yX),x=Ge(k=>kNs(k,e.id,v,$));if(y!=="vertical"&&y!=="horizontal")return null;var w,S=x?.[0];return S==null||S.height==null||S.width==null?w=0:w=y==="vertical"?S.height/2:S.width/2,h.createElement(P2s,{xAxisId:t,yAxisId:n,data:x,dataPointFormatter:GNs,errorBarOffset:w},h.createElement(WNs,jc({},e,{layout:y,needClip:p,data:x,xAxisId:t,yAxisId:n,hide:a,legendType:s,minPointSize:r,activeBar:i,animationBegin:c,animationDuration:d,animationEasing:m,isAnimationActive:f})))}function XNs(e){var{layout:t,barSettings:{dataKey:n,minPointSize:a,hasCustomShape:s},pos:r,bandSize:i,xAxis:c,yAxis:d,xAxisTicks:m,yAxisTicks:f,stackedData:p,displayedData:y,offset:v,cells:$,parentViewBox:x,dataStartIndex:w}=e,S=t==="horizontal"?d:c,k=p?S.scale.domain():null,T=Q$s({numericAxis:S}),R=S.scale.map(T);return y.map((_,P)=>{var j,N,I,z,E,L;if(p){var O=p[P+w];if(O==null)return null;j=V$s(O,k)}else j=jn(_,n),Array.isArray(j)||(j=[T,j]);var V=rNs(a,uZ)(j[1],P);if(t==="horizontal"){var ne,q=d.scale.map(j[0]),M=d.scale.map(j[1]);if(q==null||M==null)return null;N=t5({axis:c,ticks:m,bandSize:i,offset:r.offset,entry:_,index:P}),I=(ne=M??q)!==null&&ne!==void 0?ne:void 0,z=r.size;var F=q-M;if(E=hr(F)?0:F,L={x:N,y:v.top,width:z,height:v.height},Math.abs(V)>0&&Math.abs(E)<Math.abs(V)){var H=Co(E||V)*(Math.abs(V)-Math.abs(E));I-=H,E+=H}}else{var ee=c.scale.map(j[0]),B=c.scale.map(j[1]);if(ee==null||B==null)return null;if(N=ee,I=t5({axis:d,ticks:f,bandSize:i,offset:r.offset,entry:_,index:P}),z=B-ee,E=r.size,L={x:v.left,y:I,width:v.width,height:E},Math.abs(V)>0&&Math.abs(z)<Math.abs(V)){var G=Co(z||V)*(Math.abs(V)-Math.abs(z));z+=G}}if(N==null||I==null||z==null||E==null||!s&&(z===0||E===0))return null;var Q=eo(eo({},_),{},{stackedBarStart:R,x:N,y:I,width:z,height:E,value:p?j:j[1],payload:_,background:L,tooltipPosition:{x:N+z/2,y:I+E/2},parentViewBox:x,originalDataIndex:P},$&&$[P]&&$[P].props);return Q}).filter(Boolean)}function ZNs(e){var t=Va(e,YNs),n=TNs(t.stackId),a=Ga();return h.createElement(zX,{id:t.id,type:"bar"},s=>h.createElement(h.Fragment,null,h.createElement(FX,{legendPayload:LNs(t)}),h.createElement(UNs,{dataKey:t.dataKey,stroke:t.stroke,strokeWidth:t.strokeWidth,fill:t.fill,name:t.name,hide:t.hide,unit:t.unit,tooltipType:t.tooltipType,id:s}),h.createElement(HX,{type:"bar",id:s,data:void 0,xAxisId:t.xAxisId,yAxisId:t.yAxisId,zAxisId:0,dataKey:t.dataKey,stackId:n,hide:t.hide,barSize:t.barSize,minPointSize:t.minPointSize,maxBarSize:t.maxBarSize,isPanorama:a,hasCustomShape:t.shape!=null}),h.createElement(Fs,{zIndex:t.zIndex},h.createElement(QNs,jc({},t,{id:s})))))}var mZ=h.memo(ZNs,Yp);mZ.displayName="Bar";var JNs=["domain","range"],eDs=["domain","range"];function u6(e,t){if(e==null)return{};var n,a,s=tDs(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a<r.length;a++)n=r[a],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(s[n]=e[n])}return s}function tDs(e,t){if(e==null)return{};var n={};for(var a in e)if({}.hasOwnProperty.call(e,a)){if(t.indexOf(a)!==-1)continue;n[a]=e[a]}return n}function m6(e,t){return e===t?!0:Array.isArray(e)&&e.length===2&&Array.isArray(t)&&t.length===2?e[0]===t[0]&&e[1]===t[1]:!1}function pZ(e,t){if(e===t)return!0;var{domain:n,range:a}=e,s=u6(e,JNs),{domain:r,range:i}=t,c=u6(t,eDs);return!m6(n,r)||!m6(a,i)?!1:Yp(s,c)}var nDs=["type"],aDs=["dangerouslySetInnerHTML","ticks","scale"],oDs=["id","scale"];function _P(){return _P=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)({}).hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},_P.apply(null,arguments)}function p6(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,a)}return n}function f6(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};
962t%2?p6(Object(n),!0).forEach(function(a){sDs(e,a,n[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):p6(Object(n)).forEach(function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(n,a))})}return e}function sDs(e,t,n){return(t=rDs(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function rDs(e){var t=iDs(e,"string");return typeof t=="symbol"?t:t+""}function iDs(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var a=n.call(e,t);if(typeof a!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function jP(e,t){if(e==null)return{};var n,a,s=lDs(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a<r.length;a++)n=r[a],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(s[n]=e[n])}return s}function lDs(e,t){if(e==null)return{};var n={};for(var a in e)if({}.hasOwnProperty.call(e,a)){if(t.indexOf(a)!==-1)continue;n[a]=e[a]}return n}function cDs(e){var t=gn(),n=h.useRef(null),a=t2(),{type:s}=e,r=jP(e,nDs),i=C0(a,"xAxis",s),c=h.useMemo(()=>{if(i!=null)return f6(f6({},r),{},{type:i})},[r,i]);return h.useLayoutEffect(()=>{c!=null&&(n.current===null?t(J_s(c)):n.current!==c&&t(ejs({prev:n.current,next:c})),n.current=c)},[c,t]),h.useLayoutEffect(()=>()=>{n.current&&(t(tjs(n.current)),n.current=null)},[t]),null}var dDs=e=>{var{xAxisId:t,className:n}=e,a=Ge(Xj),s=Ga(),r="xAxis",i=Ge(S=>IQ(S,r,t,s)),c=Ge(S=>DQ(S,t)),d=Ge(S=>_As(S,t)),m=Ge(S=>tQ(S,t));if(c==null||d==null||m==null)return null;var{dangerouslySetInnerHTML:f,ticks:p,scale:y}=e,v=jP(e,aDs),{id:$,scale:x}=m,w=jP(m,oDs);return h.createElement(rN,_P({},v,w,{x:d.x,y:d.y,width:c.width,height:c.height,className:Lt("recharts-".concat(r," ").concat(r),n),viewBox:a,ticks:i,axisType:r,axisId:t}))},uDs={allowDataOverflow:Wn.allowDataOverflow,allowDecimals:Wn.allowDecimals,allowDuplicatedCategory:Wn.allowDuplicatedCategory,angle:Wn.angle,axisLine:Yi.axisLine,height:Wn.height,hide:!1,includeHidden:Wn.includeHidden,interval:Wn.interval,label:!1,minTickGap:Wn.minTickGap,mirror:Wn.mirror,orientation:Wn.orientation,padding:Wn.padding,reversed:Wn.reversed,scale:Wn.scale,tick:Wn.tick,tickCount:Wn.tickCount,tickLine:Y
962i.tickLine,tickSize:Yi.tickSize,type:Wn.type,niceTicks:Wn.niceTicks,xAxisId:0},mDs=e=>{var t=Va(e,uDs);return h.createElement(h.Fragment,null,h.createElement(cDs,{allowDataOverflow:t.allowDataOverflow,allowDecimals:t.allowDecimals,allowDuplicatedCategory:t.allowDuplicatedCategory,angle:t.angle,dataKey:t.dataKey,domain:t.domain,height:t.height,hide:t.hide,id:t.xAxisId,includeHidden:t.includeHidden,interval:t.interval,minTickGap:t.minTickGap,mirror:t.mirror,name:t.name,orientation:t.orientation,padding:t.padding,reversed:t.reversed,scale:t.scale,tick:t.tick,tickCount:t.tickCount,tickFormatter:t.tickFormatter,ticks:t.ticks,type:t.type,unit:t.unit,niceTicks:t.niceTicks}),h.createElement(dDs,t))},dN=h.memo(mDs,pZ);dN.displayName="XAxis";var pDs=["type"],fDs=["dangerouslySetInnerHTML","ticks","scale"],gDs=["id","scale"];function NP(){return NP=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)({}).hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},NP.apply(null,arguments)}function g6(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,a)}return n}function h6(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?g6(Object(n),!0).forEach(function(a){hDs(e,a,n[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):g6(Object(n)).forEach(function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(n,a))})}return e}function hDs(e,t,n){return(t=yDs(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function yDs(e){var t=vDs(e,"string");return typeof t=="symbol"?t:t+""}function vDs(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var a=n.call(e,t);if(typeof a!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function DP(e,t){if(e==null)return{};var n,a,s=bDs(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a<r.length;a++)n=r[a],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(s[n]=e[n])}return s}function bDs(e,t){if(e==null)return{};var n={};for(var a in e)if({}.hasOwnProperty.call(e,a)){if(t.indexOf(a)!==-1)continue;n[a]=e[a]}return n}function xDs(e){var t=gn(),n=h.useRef(null),a=t2(),{type:s}=e,r=DP(e,pDs),i=C0(a,"yAxis",s),c=h.useMemo(()=>{if(i!=null)return h6(h6({},r),{},{type:i})},[i,r]);return h.useLayoutEffect(()=>{c!=null&&(n.current===null?t(njs(c)):n.current!==c&&t(ajs({prev:n.current,next:c})),n.current=c)},[c,t]),h.useLayoutEffect(()=>()=>{n.current&&(t(ojs(n.current)),n.current=null)},[t]),null}function $Ds(e){var{yAxisId:t,className:n,width:a,label:s}=e,r=h.useRef(null),i=h.useRef(null),c=Ge(Xj),d=Ga(),m=gn(),f="yAxis",p=Ge(P=>MQ(P,t)),y=Ge(P=>NAs(P,t)),v=Ge(P=>IQ(P,f,t,d)),$=Ge(P=>nQ(P,t));if(h.useLayoutEffect(()=>{if(!(a!=="auto"||!p||aN(s)||h.isValidElement(s)||$==null)){var P=r.current;if(P){var j=P.getCalculatedWidth();Math.round(p.width)!==Math.round(j)&&m(sjs({id:t,width:j}))}}},[v,p,m,s,t,a,$]),p==null||y==null||$==null)return null;var{dangerouslySetInnerHTML:x,ticks:w,scale:S}=e,k=DP(e,fDs),{id:T,scale:R}=$,_=DP($,gDs);return h.createElement(rN,NP({},k,_,{ref:r,labelRef:i,x:y.x,y:y.y,tickTextProps:a==="auto"?{width:void 0}:{width:a},width:p.width,height:p.height,className:Lt("recharts-".concat(f," ").concat(f),n),viewBox:c,ticks:v,axisType:f,axisId:t}))}var wDs={allowDataOverflow:Yn.allowDataOverflow,allowDecimals:Yn.allowDecimals,allowDuplicatedCategory:Yn.allowDuplicatedCategory,angle:Yn.angle,axisLine:Yi.axisLine,hide:!1,includeHidden:Yn.includeHidden,interval:Yn.interval,label:!1,minTickGap:Yn.minTickGap,mirror:Yn.mirror,orientation:Yn.orientation,padding:Yn.padding,reversed:Yn.reversed,scale:Yn.scale,tick:Yn.tick,tickCount:Yn.tickCount,tickLine:Y
962i.tickLine,tickSize:Yi.tickSize,type:Yn.type,niceTicks:Yn.niceTicks,width:Yn.width,yAxisId:0},kDs=e=>{var t=Va(e,wDs);return h.createElement(h.Fragment,null,h.createElement(xDs,{interval:t.interval,id:t.yAxisId,scale:t.scale,type:t.type,domain:t.domain,allowDataOverflow:t.allowDataOverflow,dataKey:t.dataKey,allowDuplicatedCategory:t.allowDuplicatedCategory,allowDecimals:t.allowDecimals,tickCount:t.tickCount,padding:t.padding,includeHidden:t.includeHidden,reversed:t.reversed,ticks:t.ticks,width:t.width,orientation:t.orientation,mirror:t.mirror,hide:t.hide,unit:t.unit,name:t.name,angle:t.angle,minTickGap:t.minTickGap,tick:t.tick,tickFormatter:t.tickFormatter,niceTicks:t.niceTicks}),h.createElement($Ds,t))},uN=h.memo(kDs,pZ);uN.displayName="YAxis";var CDs=(e,t)=>t,mN=ce([CDs,Ut,hY,fa,eX,yl,eRs,ma],iRs);function SDs(e){return"getBBox"in e.currentTarget&&typeof e.currentTarget.getBBox=="function"}function pN(e){var t=e.currentTarget.getBoundingClientRect(),n,a;if(SDs(e)){var s=e.currentTarget.getBBox();n=s.width>0?t.width/s.width:1,a=s.height>0?t.height/s.height:1}else{var r=e.currentTarget;n=r.offsetWidth>0?t.width/r.offsetWidth:1,a=r.offsetHeight>0?t.height/r.offsetHeight:1}var i=(c,d)=>({relativeX:Math.round((c-t.left)/n),relativeY:Math.round((d-t.top)/a)});return"touches"in e?Array.from(e.touches).map(c=>i(c.clientX,c.clientY)):i(e.clientX,e.clientY)}var fZ=rs("mouseClick"),gZ=vy();gZ.startListening({actionCreator:fZ,effect:(e,t)=>{var n=e.payload,a=mN(t.getState(),pN(n));a?.activeIndex!=null&&t.dispatch(WAs({activeIndex:a.activeIndex,activeDataKey:void 0,activeCoordinate:a.activeCoordinate}))}});var MP=rs("mouseMove"),hZ=vy(),Am=null,hd=null,eT=null;hZ.startListening({actionCreator:MP,effect:(e,t)=>{var n=e.payload,a=t.getState(),{throttleDelay:s,throttledEvents:r}=a.eventSettings,i=r==="all"||r?.includes("mousemove");Am!==null&&(cancelAnimationFrame(Am),Am=null),hd!==null&&(typeof s!="number"||!i)&&(clearTimeout(hd),hd=null),eT=pN(n);var c=()=>{var d=t.getState(),m=_y(d,d.tooltip.settings.shared);if(!eT){Am=null,hd=null;return}if(m==="axis"){var f=mN(d,eT);f?.activeIndex!=null?t.dispatch(HQ({activeIndex:f.activeIndex,activeDataKey:void 0,activeCoordinate:f.activeCoordinate})):t.dispatch(qQ())}Am=null,hd=null};if(!i){c();return}s==="raf"?Am=requestAnimationFrame(c):typeof s=="number"&&hd===null&&(hd=setTimeout(c,s))}});function ADs(e,t){return t instanceof HTMLElement?"HTMLElement <".concat(t.tagName,' class="').concat(t.className,'">'):t===window?"global.window":e==="children"&&typeof t=="object"&&t!==null?"<<CHILDREN>>":t}var y6={accessibilityLayer:!0,barCategoryGap:"10%",barGap:4,barSize:void 0,className:void 0,maxBarSize:void 0,stackOffset:"none",syncId:void 0,syncMethod:"index",baseValue:void 0,reverseStackOrder:!1},yZ=Ka({name:"rootProps",initialState:y6,reducers:{updateOptions:(e,t)=>{var n;e.accessibilityLayer=t.payload.accessibilityLayer,e.barCategoryGap=t.payload.barCategoryGap,e.barGap=(n=t.payload.barGap)!==null&&n!==void 0?n:y6.barGap,e.barSize=t.payload.barSize,e.maxBarSize=t.payload.maxBarSize,e.stackOffset=t.payload.stackOffset,e.syncId=t.payload.syncId,e.syncMethod=t.payload.syncMethod,e.className=t.payload.className,e.baseValue=t.payload.baseValue,e.reverseStackOrder=t.payload.reverseStackOrder}}}),TDs=yZ.reducer,{updateOptions:RDs}=yZ.actions,PDs=null,_Ds={updatePolarOptions:(e,t)=>e===null?t.payload:(e.startAngle=t.payload.startAngle,e.endAngle=t.payload.endAngle,e.cx=t.payload.cx,e.cy=t.payload.cy,e.innerRadius=t.payload.innerRadius,e.outerRadius=t.payload.outerRadius,e)},vZ=Ka({name:"polarOptions",initialState:PDs,reducers:_Ds}),{updatePolarOptions:R6s}=vZ.actions,jDs=vZ.reducer,bZ=rs("keyDown"),xZ=rs("focus"),$Z=rs("blur"),z0=vy(),Tm=null,yd=null,Ib=null;z0.startListening({actionCreator:bZ,effect:(e,t)=>{Ib=e.payload,Tm!==null&&(cancelAnimationFrame(Tm),Tm=null);var n=t.getState(),{throttleDelay:a,throttledEvents:s}=n.eventSettings,r=s==="all"||s.includes("keydown");yd!==null&&(typeof a!="number"||!r)&&(clearTimeout(yd),yd=null);var i=()=>{try{var c=t.getState(),d=c.rootProps.accessibilityLayer!==!1;if(!d)return;var{keyboardInteraction:m}=c.tooltip,f=Ib;if(f!=="ArrowRight"&&f!=="ArrowLeft"&&f!=="Enter")return;var p=zg(m,ru(c),Tp(c),Rp(c)),y=p==null?-1:Number(p),v=!Number.isFinite(y)||y<0,$=yl(c),x=ru(c),w=_y(c,c.tooltip.settings.shared);if(f==="Enter"){if(v)return;var S=D$(c,w,"hover",String(m.index));t.dispatch(N$({active:!m.active,activeIndex:m.index,activeCoordinate:S}));return}var k=OAs(c),T=k==="left-to-right"?1:-1,R=f==="ArrowRight"?1:-1,_;if(v){var P=Tp(c),j=Rp(c),N=R*T,I=V=>({active:!1,index:String(V),dataKey:void 0,graphicalItemId:void 0,coordinate:void 0});if(_=-1,N>0){for(var z=0;z<x.length;z++)if(zg(I(z),x,P,j)!=null){_=z;break}}else for(var E=x.length-1;E>=0;E--)if(zg(I(E),x,P,j)!=null){_=E;break}if(_<0)return}else{_=y+R*T;var L=$?.length||x.length;if(L===0||_>=L||_<0)return}var O=D$(c,w,"hover",String(_));t.dispatch(N$({active:!0,activeIndex:_.toString(),activeCoordinate:O}))}finally{Tm=null,yd=null}};if(!r){i();return}a==="raf"?Tm=requestAnimationFrame(i):typeof a=="number"&&yd===null&&(i(),Ib=null,yd=setTimeout(()=>{Ib?i():(yd=null,Tm=null)},a))}});z0.startListening({actionCreator:xZ,effect:(e,t)=>
962{var n=t.getState(),a=n.rootProps.accessibilityLayer!==!1;if(a){var{keyboardInteraction:s}=n.tooltip;if(!s.active&&s.index==null){var r="0",i=_y(n,n.tooltip.settings.shared),c=D$(n,i,"hover",String(r));t.dispatch(N$({active:!0,activeIndex:r,activeCoordinate:c}))}}}});z0.startListening({actionCreator:$Z,effect:(e,t)=>{var n=t.getState(),a=n.rootProps.accessibilityLayer!==!1;if(a){var{keyboardInteraction:s}=n.tooltip;s.active&&t.dispatch(N$({active:!1,activeIndex:s.index,activeCoordinate:s.coordinate}))}}});function wZ(e){e.persist();var{currentTarget:t}=e;return new Proxy(e,{get:(n,a)=>{if(a==="currentTarget")return t;var s=Reflect.get(n,a);return typeof s=="function"?s.bind(n):s}})}var Cs=rs("externalEvent"),kZ=vy(),Ob=new Map,pg=new Map,tT=new Map;kZ.startListening({actionCreator:Cs,effect:(e,t)=>{var{handler:n,reactEvent:a}=e.payload;if(n!=null){var s=a.type,r=wZ(a);tT.set(s,{handler:n,reactEvent:r});var i=Ob.get(s);i!==void 0&&(cancelAnimationFrame(i),Ob.delete(s));var c=t.getState(),{throttleDelay:d,throttledEvents:m}=c.eventSettings,f=m,p=f==="all"||f?.includes(s),y=pg.get(s);y!==void 0&&(typeof d!="number"||!p)&&(clearTimeout(y),pg.delete(s));var v=()=>{var w=tT.get(s);try{if(!w)return;var{handler:S,reactEvent:k}=w,T=t.getState(),R={activeCoordinate:UTs(T),activeDataKey:oX(T),activeIndex:iu(T),activeLabel:aX(T),activeTooltipIndex:iu(T),isTooltipActive:BTs(T)};S&&S(R,k)}finally{Ob.delete(s),pg.delete(s),tT.delete(s)}};if(!p){v();return}if(d==="raf"){var $=requestAnimationFrame(v);Ob.set(s,$)}else if(typeof d=="number"){if(!pg.has(s)){v();var x=setTimeout(v,d);pg.set(s,x)}}else v()}}});var NDs=ce([af],e=>e.tooltipItemPayloads),DDs=ce([NDs,(e,t)=>t,(e,t,n)=>n],(e,t,n)=>{if(t!=null){var a=e.find(r=>r.settings.graphicalItemId===n);if(a!=null){var{getPosition:s}=a;if(s!=null)return s(t)}}}),CZ=rs("touchMove"),SZ=vy(),vd=null,Kl=null,v6=null,fg=null;SZ.startListening({actionCreator:CZ,effect:(e,t)=>{var n=e.payload;if(!(n.touches==null||n.touches.length===0)){fg=wZ(n);var a=t.getState(),{throttleDelay:s,throttledEvents:r}=a.eventSettings,i=r==="all"||r.includes("touchmove");vd!==null&&(cancelAnimationFrame(vd),vd=null),Kl!==null&&(typeof s!="number"||!i)&&(clearTimeout(Kl),Kl=null),v6=Array.from(n.touches).map(d=>pN({clientX:d.clientX,clientY:d.clientY,currentTarget:n.currentTarget}));var c=()=>{if(fg!=null){var d=t.getState(),m=_y(d,d.tooltip.settings.shared);if(m==="axis"){var f,p=(f=v6)===null||f===void 0?void 0:f[0];if(p==null){vd=null,Kl=null;return}var y=mN(d,p);y?.activeIndex!=null&&t.dispatch(HQ({activeIndex:y.activeIndex,activeDataKey:void 0,activeCoordinate:y.activeCoordinate}))}else if(m==="item"){var v,$=fg.touches[0];if(document.elementFromPoint==null||$==null)return;var x=document.elementFromPoint($.clientX,$.clientY);if(!x||!x.getAttribute)return;var w=x.getAttribute(aws),S=(v=x.getAttribute(ows))!==null&&v!==void 0?v:void 0,k=Tu(d).find(_=>_.id===S);if(w==null||k==null||S==null)return;var{dataKey:T}=k,R=DDs(d,w,S);t.dispatch(zQ({activeDataKey:T,activeIndex:w,activeCoordinate:R,activeGraphicalItemId:S}))}vd=null,Kl=null}};if(!i){c();return}s==="raf"?vd=requestAnimationFrame(c):typeof s=="number"&&Kl===null&&(c(),fg=null,Kl=setTimeout(()=>{fg?c():(Kl=null,vd=null)},s))}}});var AZ={throttleDelay:"raf",throttledEvents:["mousemove","touchmove","pointermove","scroll","wheel"]},TZ=Ka({name:"eventSettings",initialState:AZ,reducers:{setEventSettings:(e,t)=>{t.payload.throttleDelay!=null&&(e.throttleDelay=t.payload.throttleDelay),t.payload.throttledEvents!=null&&(e.throttledEvents=t.payload.throttledEvents)}}}),{setEventSettings:MDs}=TZ.actions,EDs=TZ.reducer,IDs=QG({brush:Cjs,cartesianAxis:rjs,chartData:ORs,errorBars:k2s,eventSettings:EDs,graphicalItems:L_s,layout:B$s,legend:Iws,options:NRs,polarAxis:s_s,polarOptions:jDs,referenceElements:Rjs,renderedTicks:Vjs,rootProps:TDs,tooltip:YAs,zIndex:xRs}),ODs=function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"Chart";return u$s({reducer:IDs,preloadedState:t,middleware:a=>{var s;return a({serializableCheck:!1,immutableCheck:!["commonjs","es6","production"].includes((s="es6")!==null&&s!==void 0?s:"")}).concat([gZ.middleware,hZ.middleware,z0.middleware,kZ.middleware,SZ.middleware])},enhancers:a=>{var s=a;return typeof a=="function"&&(s=a()),s.concat(uW({type:"raf"}))},devTools:{serialize:{replacer:ADs},name:"recharts-".concat(n)}})};function LDs(e){var{preloadedState:t,children:n,reduxStoreName:a}=e,s=Ga(),r=h.useRef(null);if(s)return n;r.current==null&&(r.current=ODs(t,a));var i=Hj;return h.createElement(Zws,{context:i,store:r.current},n)}function UDs(e){var{layout:t,margin:n}=e,a=gn(),s=Ga();return h.useEffect(()=>{s||(a(O$s(t)),a(I$s(n)))},[a,s,t,n]),null}var BDs=h.memo(UDs,Yp);function FDs(e){var t=gn();return h.useEffect(()=>{t(RDs(e))},[t,e]),null}var zDs=e=>{var t=gn();return h.useEffect(()=>{t(MDs(e))},[t,e]),null},qDs=h.memo(zDs,Yp);function b6(e){var{zIndex:t,isPanorama:n}=e,a=h.useRef(null),s=gn();return h.useLayoutEffect(()=>(a.current&&s(vRs({zIndex:t,element:a.current,isPanorama:n})),()=>{s(bRs({zIndex:t,isPanorama:n}))}),[s,t,n]),h.createElement("g",{tabIndex:-1,ref:a,className:"recharts-zIndex-layer_".concat(t)})}function x6(e){var{children:t,isPanorama:n}=e,a=Ge(cRs);if(!a||a.length===0)return t;var s=a.filter(i=>i<0),r=a.filter(i=>i>0);return h.createElement(h.Fragment,null,s.map(i=>h.createElement(b6,{key:i,zIndex:i,isPanorama:n})),t,r.map(i=>h.createElement(b6,{key:i,zIndex:i,isPanorama:n})))}var HDs=["children"];function VDs(e,t){if(e==null)return{};var n,a,s=KDs(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a<r.length;a++)n=r[a],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(s[n]=e[n])}return s}function KDs(e,t){if(e==null)return{};var n={};for(var a in e)if({}.hasOwnProperty.call(e,a)){if(t.indexOf(a)!==-1)continue;n[a]=e[a]}return n}function F$(){return F$=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)({}).hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},F$.apply(null,arguments)}var GDs={width:"100%",height:"100%",display:"block"},WDs=h.forwardRef((e,t)=>
962{var n=Jj(),a=e2(),s=BW();if(!xp(n)||!xp(a))return null;var{children:r,otherAttributes:i,title:c,desc:d}=e,m,f;return i!=null&&(typeof i.tabIndex=="number"?m=i.tabIndex:m=s?0:void 0,typeof i.role=="string"?f=i.role:f=s?"application":void 0),h.createElement(Mj,F$({},i,{title:c,desc:d,role:f,tabIndex:m,width:n,height:a,style:GDs,ref:t}),r)}),YDs=e=>{var{children:t}=e,n=Ge(f0);if(!n)return null;var{width:a,height:s,y:r,x:i}=n;return h.createElement(Mj,{width:a,height:s,x:i,y:r},t)},$6=h.forwardRef((e,t)=>{var{children:n}=e,a=VDs(e,HDs),s=Ga();return s?h.createElement(YDs,null,h.createElement(x6,{isPanorama:!0},n)):h.createElement(WDs,F$({ref:t},a),h.createElement(x6,{isPanorama:!1},n))});function QDs(){var e=gn(),[t,n]=h.useState(null),a=Ge(nws);return h.useEffect(()=>{if(t!=null){var s=t.getBoundingClientRect(),r=s.width/t.offsetWidth;ht(r)&&r!==a&&e(U$s(r))}},[t,e,a]),n}function w6(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,a)}return n}function XDs(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?w6(Object(n),!0).forEach(function(a){ZDs(e,a,n[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):w6(Object(n)).forEach(function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(n,a))})}return e}function ZDs(e,t,n){return(t=JDs(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function JDs(e){var t=eMs(e,"string");return typeof t=="symbol"?t:t+""}function eMs(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var a=n.call(e,t);if(typeof a!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function $c(){return $c=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)({}).hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},$c.apply(null,arguments)}var tMs=()=>(KRs(),null);function z$(e){if(typeof e=="number")return e;if(typeof e=="string"){var t=parseFloat(e);if(!Number.isNaN(t))return t}return 0}var nMs=h.forwardRef((e,t)=>{var n,a,s=h.useRef(null),[r,i]=h.useState({containerWidth:z$((n=e.style)===null||n===void 0?void 0:n.width),containerHeight:z$((a=e.style)===null||a===void 0?void 0:a.height)}),c=h.useCallback((m,f)=>{i(p=>{var y=Math.round(m),v=Math.round(f);return p.containerWidth===y&&p.containerHeight===v?p:{containerWidth:y,containerHeight:v}})},[]),d=h.useCallback(m=>{if(typeof t=="function"&&t(m),s.current!=null&&(s.current.disconnect(),s.current=null),m!=null&&typeof ResizeObserver<"u"){var{width:f,height:p}=m.getBoundingClientRect();c(f,p);var y=$=>{var x=$[0];if(x!=null){var{width:w,height:S}=x.contentRect;c(w,S)}},v=new ResizeObserver(y);v.observe(m),s.current=v}},[t,c]);return h.useEffect(()=>()=>{var m=s.current;m?.disconnect()},[c]),h.createElement(h.Fragment,null,h.createElement(xy,{width:r.containerWidth,height:r.containerHeight}),h.createElement("div",$c({ref:d},e)))}),aMs=h.forwardRef((e,t)=>{var{width:n,height:a}=e,[s,r]=h.useState({containerWidth:z$(n),containerHeight:z$(a)}),i=h.useCallback((d,m)=>{r(f=>{var p=Math.round(d),y=Math.round(m);return f.containerWidth===p&&f.containerHeight===y?f:{containerWidth:p,containerHeight:y}})},[]),c=h.useCallback(d=>{if(typeof t=="function"&&t(d),d!=null){var{width:m,height:f}=d.getBoundingClientRect();i(m,f)}},[t,i]);return h.createElement(h.Fragment,null,h.createElement(xy,{width:s.containerWidth,height:s.containerHeight}),h.createElement("div",$c({ref:c},e)))}),oMs=h.forwardRef((e,t)=>{var{width:n,height:a}=e;return h.createElement(h.Fragment,null,h.createElement(xy,{width:n,height:a}),h.createElement("div",$c({ref:t},e)))}),sMs=h.forwardRef((e,t)=>{var{width:n,height:a}=e;return typeof n=="string"||typeof a=="string"?h.createElement(aMs,$c({},e,{ref:t})):typeof n=="number"&&typeof a=="number"?h.createElement(oMs,$c({},e,{width:n,height:a,ref:t})):h.createElement(h.Fragment,null,h.createElement(xy,{width:n,height:a}),h.createElement("div",$c({ref:t},e)))});function rMs(e){return e?nMs:sMs}var iMs=h.forwardRef((e,t)=>
962{var{children:n,className:a,height:s,onClick:r,onContextMenu:i,onDoubleClick:c,onMouseDown:d,onMouseEnter:m,onMouseLeave:f,onMouseMove:p,onMouseUp:y,onTouchEnd:v,onTouchMove:$,onTouchStart:x,style:w,width:S,responsive:k,dispatchTouchEvents:T=!0}=e,R=h.useRef(null),_=gn(),[P,j]=h.useState(null),[N,I]=h.useState(null),z=QDs(),E=PW(),L=E?.width>0?E.width:S,O=E?.height>0?E.height:s,V=h.useCallback(ye=>{z(ye),typeof t=="function"&&t(ye),j(ye),I(ye),ye!=null&&(R.current=ye)},[z,t,j,I]),ne=h.useCallback(ye=>{_(fZ(ye)),_(Cs({handler:r,reactEvent:ye}))},[_,r]),q=h.useCallback(ye=>{_(MP(ye)),_(Cs({handler:m,reactEvent:ye}))},[_,m]),M=h.useCallback(ye=>{_(qQ()),_(Cs({handler:f,reactEvent:ye}))},[_,f]),F=h.useCallback(ye=>{_(MP(ye)),_(Cs({handler:p,reactEvent:ye}))},[_,p]),H=h.useCallback(()=>{_(xZ())},[_]),ee=h.useCallback(()=>{_($Z())},[_]),B=h.useCallback(ye=>{_(bZ(ye.key))},[_]),G=h.useCallback(ye=>{_(Cs({handler:i,reactEvent:ye}))},[_,i]),Q=h.useCallback(ye=>{_(Cs({handler:c,reactEvent:ye}))},[_,c]),de=h.useCallback(ye=>{_(Cs({handler:d,reactEvent:ye}))},[_,d]),Y=h.useCallback(ye=>{_(Cs({handler:y,reactEvent:ye}))},[_,y]),pe=h.useCallback(ye=>{_(Cs({handler:x,reactEvent:ye}))},[_,x]),se=h.useCallback(ye=>{T&&_(CZ(ye)),_(Cs({handler:$,reactEvent:ye}))},[_,T,$]),we=h.useCallback(ye=>{_(Cs({handler:v,reactEvent:ye}))},[_,v]),me=rMs(k);return h.createElement(mX.Provider,{value:P},h.createElement(uG.Provider,{value:N},h.createElement(me,{width:L??w?.width,height:O??w?.height,className:Lt("recharts-wrapper",a),style:XDs({position:"relative",cursor:"default",width:L,height:O},w),onClick:ne,onContextMenu:G,onDoubleClick:Q,onFocus:H,onBlur:ee,onKeyDown:B,onMouseDown:de,onMouseEnter:q,onMouseLeave:M,onMouseMove:F,onMouseUp:Y,onTouchEnd:we,onTouchMove:se,onTouchStart:pe,ref:V},h.createElement(tMs,null),n)))}),lMs=["width","height","responsive","children","className","style","compact","title","desc"];function cMs(e,t){if(e==null)return{};var n,a,s=dMs(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a<r.length;a++)n=r[a],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(s[n]=e[n])}return s}function dMs(e,t){if(e==null)return{};var n={};for(var a in e)if({}.hasOwnProperty.call(e,a)){if(t.indexOf(a)!==-1)continue;n[a]=e[a]}return n}var uMs=h.forwardRef((e,t)=>{var{width:n,height:a,responsive:s,children:r,className:i,style:c,compact:d,title:m,desc:f}=e,p=cMs(e,lMs),y=Is(p);return d?h.createElement(h.Fragment,null,h.createElement(xy,{width:n,height:a}),h.createElement($6,{otherAttributes:y,title:m,desc:f},r)):h.createElement(iMs,{className:i,style:c,width:n,height:a,responsive:s??!1,onClick:e.onClick,onMouseLeave:e.onMouseLeave,onMouseEnter:e.onMouseEnter,onMouseMove:e.onMouseMove,onMouseDown:e.onMouseDown,onMouseUp:e.onMouseUp,onContextMenu:e.onContextMenu,onDoubleClick:e.onDoubleClick,onTouchStart:e.onTouchStart,onTouchMove:e.onTouchMove,onTouchEnd:e.onTouchEnd},h.createElement($6,{otherAttributes:y,title:m,desc:f,ref:t},h.createElement(_js,null,r)))});function EP(){return EP=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)({}).hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},EP.apply(null,arguments)}function k6(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,a)}return n}function mMs(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?k6(Object(n),!0).forEach(function(a){pMs(e,a,n[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):k6(Object(n)).forEach(function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(n,a))})}return e}function pMs(e,t,n){return(t=fMs(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function fMs(e){var t=gMs(e,"string");return typeof t=="symbol"?t:t+""}function gMs(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var a=n.call(e,t);if(typeof a!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var hMs={top:5,right:5,bottom:5,left:5},yMs=mMs({accessibilityLayer:!0,barCategoryGap:"10%",barGap:4,layout:"horizontal",margin:hMs,responsive:!1,reverseStackOrder:!1,stackOffset:"none",syncMethod:"index"},AZ),RZ=h.forwardRef(function(t,n){var a,s=Va(t.categoricalChartProps,yMs),{chartName:r,defaultTooltipEventType:i,validateTooltipEventTypes:c,tooltipPayloadSearcher:d,categoricalChartProps:m}=t,f={chartName:r,defaultTooltipEventType:i,validateTooltipEventTypes:c,tooltipPayloadSearcher:d,eventEmitter:void 0};return h.createElement(LDs,{preloadedState:{options:f},reduxStoreName:(a=m.id)!==null&&a!==void 0?a:r},h.createElement(kjs,{chartData:m.data}),h.createElement(BDs,{layout:s.layout,margin:s.margin}),h.createElement(qDs,{throttleDelay:s.throttleDelay,throttledEvents:s.throttledEvents}),h.createElement(FDs,{baseValue:s.baseValue,accessibilityLayer:s.accessibilityLayer,barCategoryGap:s.barCategoryGap,maxBarSize:s.maxBarSize,stackOffset:s.stackOffset,barGap:s.barGap,barSize:s.barSize,syncId:s.syncId,syncMethod:s.syncMethod,className:s.className,reverseStackOrder:s.reverseStackOrder}),h.createElement(uMs,EP({},s,{ref:n})))}),vMs=["axis","item"],bMs=h.forwardRef((e,t)=>
962h.createElement(RZ,{chartName:"BarChart",defaultTooltipEventType:"axis",validateTooltipEventTypes:vMs,tooltipPayloadSearcher:pX,categoricalChartProps:e,ref:t})),xMs=["axis"],$Ms=h.forwardRef((e,t)=>h.createElement(RZ,{chartName:"AreaChart",defaultTooltipEventType:"axis",validateTooltipEventTypes:xMs,tooltipPayloadSearcher:pX,categoricalChartProps:e,ref:t}));function wMs({active:e,payload:t,label:n,valueFormatter:a,labelFormatter:s}){const{t:r}=W();if(!e||!t?.length)return null;const i=Svs(t.filter(f=>f?.value!=null));if(!i.length)return null;const c=i.reduce((f,p)=>f+(Number(p.value)||0),0),d=a??(f=>String(f)),m=s?s(n):String(n??"");return o.jsxs("div",{className:"min-w-56 rounded-lg border border-[color:var(--border)] bg-[color:var(--popover)] px-3 py-2.5 text-xs text-[color:var(--popover-foreground)] shadow-[0_18px_60px_rgba(13,17,23,0.14)]",children:[m?o.jsx("div",{className:"mb-2 font-medium text-[color:var(--muted-foreground)]",children:m}):null,o.jsx("div",{className:"space-y-1.5",children:i.map(f=>{const p=Number(f.value)||0,y=c>0?p/c*100:0;return o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("span",{className:"size-2 shrink-0 rounded-full",style:{backgroundColor:f.color??f.fill}}),o.jsx("span",{className:"mr-4 max-w-44 truncate text-[color:var(--foreground)]",children:f.name}),o.jsx("span",{className:"ml-auto tabular-nums text-[color:var(--foreground)]",children:d(p)}),o.jsxs("span",{className:"w-16 text-right tabular-nums text-[color:var(--muted-foreground)]",children:[y.toFixed(2),"%"]})]},String(f.dataKey))})}),i.length>1?o.jsxs("div",{className:"mt-2 flex items-center gap-2 border-t border-[color:var(--border)] pt-2",children:[o.jsx("span",{className:"text-[color:var(--muted-foreground)]",children:r("common.total")}),o.jsx("span",{className:"ml-auto font-semibold tabular-nums text-[color:var(--foreground)]",children:d(c)})]}):null]})}function PZ({data:e,xAxisKey:t,series:n,valueFormatter:a,xTickFormatter:s,layout:r="horizontal",maxBarSize:i=32,...c}){return o.jsx(Nj,{...c,hasData:e.length>0,children:o.jsxs(bMs,{data:e,layout:r,margin:{top:8,right:8,left:8,bottom:8},children:[o.jsx(iN,{strokeDasharray:"3 3",stroke:"var(--border)"}),o.jsx(dN,{dataKey:r==="horizontal"?t:void 0,type:r==="horizontal"?"category":"number",tick:{fontSize:11},stroke:"var(--muted-foreground)",tickFormatter:s}),o.jsx(uN,{dataKey:r==="vertical"?t:void 0,type:r==="vertical"?"category":"number",tick:{fontSize:11},stroke:"var(--muted-foreground)",tickFormatter:r==="horizontal"?a:void 0}),o.jsx(hX,{...iG,cursor:{fill:"var(--muted)",opacity:.4},content:o.jsx(wMs,{valueFormatter:a,labelFormatter:s})}),o.jsx(o2,{iconType:"circle",wrapperStyle:lG}),n.map((d,m)=>o.jsx(mZ,{dataKey:d.dataKey,name:d.name??d.dataKey,fill:Yw(d.colorIndex??m+1),stackId:d.stackId},d.dataKey))]})})}function _Z({data:e,xAxisKey:t,series:n,valueFormatter:a,xTickFormatter:s,...r}){return o.jsx(Nj,{...r,hasData:e.length>0,children:o.jsxs($Ms,{data:e,margin:{top:8,right:8,left:8,bottom:8},children:[o.jsx(iN,{strokeDasharray:"3 3",stroke:"var(--border)"}),o.jsx(dN,{dataKey:t,tick:{fontSize:11},stroke:"var(--muted-foreground)",tickFormatter:s}),o.jsx(uN,{tick:{fontSize:11},stroke:"var(--muted-foreground)",tickFormatter:a}),o.jsx(hX,{...iG,formatter:a}),n.length>1?o.jsx(o2,{iconType:"circle",wrapperStyle:lG}):null,n.map((i,c)=>{const d=Yw(i.colorIndex??c+1);return o.jsx(iZ,{type:"monotone",dataKey:i.dataKey,name:i.name??i.dataKey,stroke:d,fill:d,fillOpacity:.15,stackId:i.stackId},i.dataKey)})]})})}const C6=[1,10,50,100,300,500,1e3,1500,3e3];function kMs(e,t,n=new Date,a="en"){const s=new Map(e.map(v=>[v.day.slice(0,10),v])),r=TMs(n),i=new Date(r);i.setDate(r.getDate()-t+1),i.setDate(i.getDate()-i.getDay());const c=[];for(const v=new Date(i);v<=r;v.setDate(v.getDate()+1)){const $=RMs(v),x=s.get($),w=Number(x?.billedCredit??0);c.push({date:$,label:new Intl.DateTimeFormat(a,{month:"short",day:"numeric"}).format(v),credit:w,requests:x?.requestCount??0,tokens:(x?.inputTokens??0)+(x?.outputTokens??0),level:0})}const d=c.reduce((v,$)=>Math.max(v,$.credit),0),m=c.filter(q$).length;let f=null;for(const v of c)v.level=AMs(v),v.tokens>0&&(!f||v.tokens>f.tokens)&&(f=v);const p=[];for(let v=0;v<c.length;v+=7)p.push(c.slice(v,v+7));const y=c.reduce((v,$)=>
962v+$.credit,0);return{weeks:p,activeDays:m,totalCredit:y,averageDailyCredit:m>0?y/m:0,maxCredit:d,peakDay:f}}function CMs(e){const t=e.flat();let n=0,a=0;for(const r of t)q$(r)?(a+=1,a>n&&(n=a)):a=0;let s=0;for(let r=t.length-1;r>=0&&q$(t[r]);r-=1)s+=1;return{current:s,longest:n}}function SMs(e){if(e<=0)return 0;let t=1;for(let n=1;n<C6.length&&!(e<C6[n]);n+=1)t+=1;return t}function AMs(e){const t=SMs(e.requests);return t>0||!q$(e)?t:1}function q$(e){return e.requests>0||e.tokens>0||e.credit>0}function TMs(e){return new Date(e.getFullYear(),e.getMonth(),e.getDate())}function RMs(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")}`}function jZ(e,t){const n=new Map,a=new Map;for(const d of e){let m=n.get(d.bucket);m||(m={bucket:d.bucket},n.set(d.bucket,m)),m[d.series]=(Number(m[d.series])||0)+d.value,a.set(d.series,(a.get(d.series)??0)+d.value)}const s=[...a.keys()].sort((d,m)=>d==="(other)"?1:m==="(other)"?-1:(a.get(m)??0)-(a.get(d)??0)),r=(d,m)=>d<m?-1:d>m?1:0,c=(t&&t.length?[...new Set([...t,...n.keys()])].sort(r):[...n.keys()].sort(r)).map(d=>n.get(d)??{bucket:d});for(const d of c)for(const m of s)d[m]==null&&(d[m]=0);return{rows:c,series:s}}function NZ(e,t,n){if(!e||!t)return[];const a=new Date(e),s=new Date(t);if(Number.isNaN(a.getTime())||Number.isNaN(s.getTime())||s.getTime()<a.getTime())return[];const r=PMs(a,n),i=s.getTime(),c=[];for(let d=0;r.getTime()<=i&&d<9e3;d++)c.push(r.toISOString()),_Ms(r,n);return c}function PMs(e,t){if(t==="hour")return new Date(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours());if(t==="day")return new Date(e.getFullYear(),e.getMonth(),e.getDate());const n=(e.getDay()+6)%7;return new Date(e.getFullYear(),e.getMonth(),e.getDate()-n)}function _Ms(e,t){t==="hour"?e.setHours(e.getHours()+1):t==="day"?e.setDate(e.getDate()+1):e.setDate(e.getDate()+7)}function Zr(e){if(!Number.isFinite(e))return"0";const t=Math.abs(e);return t>=1e9?`${nT(e/1e9)}B`:t>=1e6?`${nT(e/1e6)}M`:t>=1e3?`${nT(e/1e3)}K`:new Intl.NumberFormat("en").format(e)}function nT(e){return e.toFixed(2).replace(/\.?0+$/,"")}function jMs(e,t){if(!e||!t)return"week";const n=new Date(e).getTime(),a=new Date(t).getTime();if(!Number.isFinite(n)||!Number.isFinite(a)||a<=n)return"day";const s=(a-n)/864e5;return s<=2.05?"hour":s<=31?"day":"week"}function S6(e){if(!e)return;const t=new Date(e);if(!Number.isNaN(t.getTime()))return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}-${String(t.getDate()).padStart(2,"0")}`}const yx=864e5;function H$(e){return Date.parse(`${e}T00:00:00Z`)}function A6(e){return new Date(e).toISOString().slice(0,10)}function NMs(e,t){if(!e||!t)return null;const n=H$(e),a=H$(t);if(!Number.isFinite(n)||!Number.isFinite(a)||a<n)return null;const s=Math.round((a-n)/yx)+1,r=n-yx;return{startDate:A6(r-(s-1)*yx),endDate:A6(r)}}function DMs(e,t){return t==null||t===0||!Number.isFinite(t)?null:(e-t)/t*100}function MMs(e,t,n){if(!t||!n)return null;const a=H$(t),s=H$(n);if(!Number.isFinite(a)||!Number.isFinite(s)||s<a)return null;const r=Math.round((s-a)/yx)+1;return r<=0?null:e/r*30}const EMs=["last1h","today","yesterday","last7d","last30d","thisMonth","byMonth","custom","all"],IMs={preset:"last30d"},T6=["preset","from","to"];function OMs(){const{t:e,i18n:t}=W(),{params:n,patch:a,remove:s}=Mt(),r=h.useMemo(()=>qw(n,IMs),[n]);function i(O){a({...Hw(O)})}const c=S6(r.from),d=S6(r.to),m=jMs(r.from,r.to),f=oys({startDate:c,endDate:d,granularity:m}),p=BK(365),y=kj(),v=qa(),[$,x]=h.useState("tokens"),w=kS({groupBy:"model",metric:$,granularity:m,startDate:c,endDate:d}),S=kS({groupBy:"tokenType",metric:"tokens",granularity:m,startDate:c,endDate:d}),k=kS({groupBy:"apiKey",metric:$,granularity:m,startDate:c,endDate:d}),T=h.useMemo(()=>NZ(r.from,r.to,m),[r.from,r.to,m]),R=f.data,_=R?.summary,P=y.data?.items?.length??0;_?.requestCount;const j=h.useMemo(()=>NMs(c,d),[c,d]),N=OK(j??{},{enabled:j!=null}),I=j?N.data:void 0,z=h.useMemo(()=>{const O=new Map;for(const V of R?.topApiKeys??[])O.set(V.key,V.displayName);return O},[R?.topApiKeys]);if(!f.isPending&&!y.isPending&&P===0)return o.jsx(QMs,{});const L=f.isFetching&&!f.isPending;return o.jsxs(Vt,{title:e("usage.title",{defaultValue:"Usage"}),description:e("usage.description",{defaultValue:"Balance, burn rate, and where your spend goes."}),action:o.jsxs("div",{className:"grid w-full min-w-0 grid-cols-[minmax(0,1fr)_auto] gap-2 sm:flex sm:w-auto 
962sm:items-center",children:[o.jsx(uh,{value:r,onChange:i,presets:EMs,locale:t.language,labels:fh(e,LMs(e)),minDate:v.data?.user.createdAt,className:"w-full justify-start"}),o.jsx(nn,{show:Zt(n,T6),onReset:()=>s(T6),labelKey:"common.reset",className:"col-span-2 justify-self-start sm:col-span-1 sm:justify-self-auto"}),o.jsxs(K,{variant:"outline",size:"icon",onClick:()=>f.refetch(),disabled:L,"aria-busy":L,className:"sm:h-9 sm:w-auto sm:px-3","aria-label":e("usage.refresh",{defaultValue:"Refresh"}),children:[o.jsx(Vp,{className:X("size-3.5",L&&"animate-spin")}),o.jsx("span",{className:"hidden sm:inline",children:e("usage.refresh",{defaultValue:"Refresh"})})]})]}),children:[f.isError?o.jsx(Qt,{title:e("usage.error.title",{defaultValue:"Could not load usage"}),description:f.error instanceof Error?f.error.message:void 0,action:o.jsx(K,{size:"sm",variant:"outline",onClick:()=>f.refetch(),children:e("common.retry",{defaultValue:"Retry"})})}):null,o.jsx(BMs,{availableCredit:Number(v.data?.wallet.availableCredit??0),spend30dUsd:Number(_?.totalBilledCredit??0)}),o.jsxs("div",{className:"grid gap-3 sm:grid-cols-2 lg:grid-cols-4",children:[o.jsx(zMs,{summary:_,prev:I,loading:f.isPending,refreshing:L}),o.jsx(qMs,{summary:_,prev:I,loading:f.isPending,refreshing:L}),o.jsx(HMs,{summary:_,prev:I,loading:f.isPending,refreshing:L}),o.jsx(VMs,{summary:_,prev:I,startDate:c,endDate:d,loading:f.isPending,refreshing:L})]}),o.jsx(WMs,{trend:p.data?.byDate??[],days:365,loading:p.isPending}),o.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between",children:[o.jsx("h2",{className:"text-sm font-semibold",children:e("usage.breakdown",{defaultValue:"Usage breakdown"})}),o.jsx(YMs,{value:$,onChange:x})]}),o.jsx(sT,{title:e("usage.byModel",{defaultValue:"By model"}),points:w.data?.points??[],metric:$,bucketAxis:T,granularity:m,loading:w.isPending,error:w.isError?w.error:null}),o.jsx(sT,{title:e("usage.byApiKey",{defaultValue:"By API key"}),points:k.data?.points??[],metric:$,bucketAxis:T,granularity:m,loading:k.isPending,error:k.isError?k.error:null,seriesLabel:O=>O==="(other)"?e("usage.other",{defaultValue:"Other"}):z.get(O)??O}),o.jsx(sT,{title:e("usage.byTokenType",{defaultValue:"By token type"}),points:S.data?.points??[],metric:"tokens",bucketAxis:T,granularity:m,loading:S.isPending,error:S.isError?S.error:null,seriesLabel:O=>UMs(O,e)}),o.jsxs("div",{className:"grid gap-3 md:grid-cols-2",children:[o.jsx(P6,{title:e("usage.topModels",{defaultValue:"Top models"}),rows:R?.topModels??[],loading:f.isPending,linkFor:O=>R6({model:O.key,from:c,to:d})}),o.jsx(P6,{title:e("usage.topKeys",{defaultValue:"Top API keys"}),rows:R?.topApiKeys??[],loading:f.isPending,linkFor:O=>R6({apiKey:O.key,from:c,to:d})})]})]})}function R6(e){const t=new URLSearchParams;e.model&&t.set("model",e.model),e.apiKey&&t.set("apiKey",e.apiKey),e.from&&t.set("from",e.from),e.to&&t.set("to",e.to);const n=t.toString();return`${Be.logs}${n?`?${n}`:""}`}function aT(e){if(e==null||!Number.isFinite(e))return"—";if(e<1e3)return`${Math.round(e)} ms`;if(e<6e4)return`${(e/1e3).toFixed(2)} s`;const t=Math.round(e/1e3);return`${Math.floor(t/60)}m ${t%60}s`}function LMs(e){return{last1h:e("usage.range.last1h",{defaultValue:"Last 1 hour"}),today:e("usage.range.today",{defaultValue:"Today"}),yesterday:e("usage.range.yesterday",{defaultValue:"Yesterday"}),last7d:e("usage.range.last7d",{defaultValue:"Last 7 days"}),last30d:e("usage.range.last30d",{defaultValue:"Last 30 days"}),thisMonth:e("usage.range.thisMonth",{defaultValue:"This month"}),byMonth:e("usage.range.byMonth",{defaultValue:"By month"}),custom:e("usage.range.custom",{defaultValue:"Custom"}),all:e("usage.range.all",{defaultValue:"All time"})}}function UMs(e,t){switch(e){case"prompt":return t("usage.tokenType.prompt",{defaultValue:"Input"});case"completion":return t("usage.tokenType.completion",{defaultValue:"Output"});case"cache_read":return t("usage.tokenType.cacheRead",{defaultValue:"Cache read"});case"cache_write":return t("usage.tokenType.cacheWrite",{defaultValue:"Cache write"});case"cache_write_5m":return t("usage.tokenType.cacheWrite5m",{defaultValue:"Cache write 5m"});case"cache_write_1h":return t("usage.tokenType.cacheWrite1h",{defaultValue:"Cache write 1h"});default:return e}}function BMs({availableCredit:e,spend30dUsd:t}){const{t:n}=W(),a=Te(),{daysRemaining:s,avgDailyUsd:r}=FV(e,t);if(s==null||s>=30)return null;const i=s<3?"error":s<7?"warning":"normal",c=i==="error"?"var(--destructive)":i==="warning"?"var(--warning, #9a6700)":"var(--muted-foreground)";return o.jsxs(Ee,{className:"flex flex-wrap items-center justify-between gap-3 p-3",style:{borderColor:i==="normal"?void 0:c},children:[o.jsx("p",{className:"text-sm",style:{color:i==="normal"?void 0:c},children:n("usage.burnRate",{defaultValue:"Estimated {{days}} days remaining at {{rate}}/day current rate.",days:Math.floor(s),rate:a.currency(r,"USD",2)})}),o.jsx(Ta,{to:Be.billing,className:ur({size:"sm"}),children:n("usage.topUp",{defaultValue:"Top up"})})]})}function FMs({value:e,previous:t,title:n}){const a=e==null?null:DMs(e,t);if(a==null)return null;const s=Math.round(a);return s===0?null:o.jsxs("span",{title:n,className:"text-11 tabular-nums text-[color:var(--muted-foreground)]",children:[s>0?"↑":"↓",Math.min(Math.abs(s),999),"%"]})}function q0({label:e,value:t,format:n,sub:a,loading:s,refreshing:r,breakdown:i,note:c,previousValue:d}){const{t:m}=W(),f=o.jsxs(Ee,{className:X("p-5 transition-opacity duration-150 motion-reduce:transition-none",r&&"opacity-80"),"aria-busy":r?!0:void 0,children:[o.jsxs("div",{className:"flex items-center justify-between gap-2 text-11 font-medium text-[color:var(--muted-foreground)]",children:[o.jsx("span",{children:e}),c&&!s?o.jsx("span",{className:"truncate tabular-nums",children:c}):null]}),o.jsxs("div",{className:"mt-1 flex min-h-8 items-baseline gap-2",children:[o.jsx("span",{className:"text-[22px] font-semibold tabular-nums tracking-tight text-[color:var(--foreground)]",children:s?"—":o.jsx(Ho,{value:t,format:n})}),s?null:o.jsx(FMs,{value:t,previous:d,title:m("usage.kpi.vsPrevious",{defaultValue:"vs previous period"})})]}),s?o.jsx(Rt,{className:"mt-1.5 h-3 w-24"}):o.jsx("div",{className:"mt-1 truncate text-11 text-[color:var(--muted-foreground)]",children:a})]});return!i||s?f:o.jsxs(Ns,{children:[o.jsx(Ds,{asChild:!0,children:o.jsx("div",{className:"cursor-default",children:f})}),o.jsx(ns,{className:"w-64 text-xs",children:i})]})}function Bm({label:e,value:t}){return o.jsxs("div",{className:"flex items-center justify-between py-0.5",children:[o.jsx("span",{className:"text-[color:var(--muted-foreground)]",children:e}),o.jsx("span",{className:"tabular-nums",children:t})]})}function zMs({summary:e,prev:t,loading:n,refreshing:a}){const{t:s}=W(),r=Te(),i=e?.totalInputTokens??0,c=e?.totalOutputTokens??0,d=e?.totalCacheReadTokens??0,m=d+(e?.totalCacheWriteTokens??0),f=[`${Zr(i)} ${s("usage.in",{defaultValue:"in"})}`,...m>0?[`${Zr(m)} ${s("usage.cache",{defaultValue:"cache"})}`]:[],`${Zr(c)} ${s("usage.out",{defaultValue:"out"})}`],p=i+d,y=p>0?s("usage.kpi.cacheHit",{defaultValue:"{{rate}}% cached",rate:Math.round(d/p*100)}):void 0;return o.jsx(q0,{label:s("usage.kpi.tokens",{defaultValue:"Tokens"}),value:e?.totalTokens??0,format:v=>Zr(Math.round(v)),loading:n,refreshing:a,note:y,previousValue:t?t.totalTokens??0:void 0,sub:f.join(" · "),breakdown:o.jsxs("div",{children:[o.jsx(Bm,{label:s("usage.tokenType.prompt",{defaultValue:"Input"}),value:r.number(i)}),o.jsx(Bm,{label:s("usage.tokenType.completion",{defaultValue:"Output"}),value:r.number(c)}),o.jsx(Bm,{label:s("usage.tokenType.cacheRead",{defaultValue:"Cache read"}),value:r.number(e?.totalCacheReadTokens??0)}),o.jsx(Bm,{label:s("usage.tokenType.cacheWrite",{defaultValue:"Cache write"}),value:r.number(e?.totalCacheWriteTokens??0)})]})})}function qMs({summary:e,prev:t,loading:n,refreshing:a}){const{t:s}=W(),r=Te(),i=e?.requestCount??0,c=e?.successCount??0,d=i>0?Math.round(c/i*1e3)/10:0;return o.jsx(q0,{label:s("usage.kpi.requests",{defaultValue:"Requests"}),value:i,format:m=>r.number(Math.round(m)),loading:n,refreshing:a,previousValue:t?t.requestCount??0:void 0,sub:s("usage.kpi.successRate",{defaultValue:"{{rate}}% success",rate:d}),breakdown:o.jsxs("div",{children:[o.jsx(Bm,{label:s("usage.requests.success",{defaultValue:"Success"}),value:r.number(c)}),o.jsx(Bm,{label:s("usage.requests.failed",{defaultValue:"Failed"}),value:r.number(Math.max(0,i-c))})]})})}function HMs({summary:e,prev:t,loading:n,refreshing:a}){const{t:s}=W(),r=e?.averageTextDurationMs??null,i=e?.averageMediaDurationMs??null,c=[`${s("usage.kpi.textDuration",{defaultValue:"text"})} ${aT(r)}`];return i!=null&&i>0&&c.push(`${s("usage.kpi.mediaDuration",{defaultValue:"image/video"})} ${aT(i)}`),o.jsx(q0,{label:s("usage.kpi.latency",{defaultValue:"Avg latency"}),value:e?.averageFirstTokenMs??null,format:aT,loading:n,refreshing:a,previousValue:t?t.averageFirstTokenMs:void 0,sub:c.join(" · ")})}
962function VMs({summary:e,prev:t,startDate:n,endDate:a,loading:s,refreshing:r}){const{t:i}=W(),c=Te(),d=Number(e?.totalBilledCredit??0),m=MMs(d,n,a),f=m!=null?i("usage.kpi.projected",{defaultValue:"≈ {{amount}}/mo",amount:c.currency(m,"USD",2)}):void 0;return o.jsx(q0,{label:i("usage.kpi.spend",{defaultValue:"Spend"}),value:d,format:p=>c.currency(p,"USD",4),loading:s,refreshing:r,note:f,previousValue:t?Number(t.totalBilledCredit):void 0,sub:i("usage.kpi.spendSub",{defaultValue:"billed this period"})})}const oT=3,V$=30,IP=14,KMs=24;function GMs(e,t){const n=Math.max(8,Math.floor((e-V$+oT)/(IP+oT))),a=Math.min(t,n),s=Math.min(KMs,Math.max(IP,Math.floor((e-V$-(a-1)*oT)/a)));return{cols:a,cell:s}}function WMs({trend:e,days:t,loading:n}){const{t:a}=W(),s=Te(),r=h.useMemo(()=>kMs(e,t,void 0,s.locale),[e,t,s.locale]),i=r.weeks.length,c=h.useRef(i);c.current=i;const[d,m]=h.useState(()=>({cols:i,cell:IP})),f=h.useRef(null),p=["var(--muted)","var(--heat-1)","var(--heat-2)","var(--heat-3)","var(--heat-4)","var(--heat-5)","var(--heat-6)","var(--heat-7)","var(--heat-8)","var(--heat-9)"],y=h.useMemo(()=>CMs(r.weeks),[r.weeks]),v=h.useCallback(k=>{if(f.current?.disconnect(),!k)return;const T=_=>m(GMs(_,c.current));T(k.clientWidth);const R=new ResizeObserver(([_])=>T(_.contentRect.width));R.observe(k),f.current=R},[]),$=d.cell,x=h.useMemo(()=>i>d.cols?r.weeks.slice(-d.cols):r.weeks,[r.weeks,i,d.cols]),w=h.useMemo(()=>{const k=new Map;if(!x.length)return k;let T=new Date(x[0][0].date).getMonth(),R=-10;for(let _=1;_<x.length;_+=1){const P=new Date(x[_][0].date),j=P.getMonth();j!==T&&(T=j,_-R>=3&&(k.set(_,s.monthShort(P)),R=_))}return k},[x]),S=["",a("usage.weekday.mon",{defaultValue:"Mon"}),"",a("usage.weekday.wed",{defaultValue:"Wed"}),"",a("usage.weekday.fri",{defaultValue:"Fri"}),""];return o.jsxs(Ee,{className:"p-4",children:[o.jsx("h3",{className:"mb-3 text-sm font-semibold",children:a("usage.activity",{defaultValue:"Activity"})}),n?o.jsx(Rt,{className:"h-24 w-full"}):r.activeDays===0?o.jsx("div",{className:"grid h-24 place-items-center text-xs text-[color:var(--muted-foreground)]",children:a("usage.activityEmpty",{defaultValue:"No activity in this range"})}):o.jsxs("div",{className:"flex flex-col gap-6 lg:flex-row lg:items-center lg:gap-8",children:[o.jsxs("div",{ref:v,className:"min-w-0 lg:flex-1",children:[o.jsx("div",{className:"mb-3 flex gap-[3px] text-2xs leading-none text-[color:var(--muted-foreground)]",style:{paddingLeft:V$},children:x.map((k,T)=>o.jsx("div",{className:"relative flex-1",children:w.has(T)?o.jsx("span",{className:"absolute left-0 top-0 whitespace-nowrap",children:w.get(T)}):null},T))}),o.jsxs("div",{className:"flex gap-1.5",children:[o.jsx("div",{className:"flex w-6 shrink-0 flex-col gap-[3px] text-2xs text-[color:var(--muted-foreground)]",children:S.map((k,T)=>o.jsx("div",{style:{height:$,lineHeight:`${$}px`},children:k},T))}),o.jsx("div",{className:"flex min-w-0 flex-1 gap-[3px] overflow-hidden",role:"grid","aria-label":a("usage.activity",{defaultValue:"Activity"}),children:x.map((k,T)=>o.jsx("div",{className:"flex min-w-0 flex-1 flex-col gap-[3px]",children:k.map(R=>o.jsxs(Ns,{openDelay:80,children:[o.jsx(Ds,{asChild:!0,children:o.jsx("div",{role:"gridcell","aria-label":`${R.label}: ${s.currency(R.credit,"USD",4)}`,className:"w-full rounded-[3px]",style:{height:$,backgroundColor:p[R.level]}})}),o.jsxs(ns,{className:"w-auto text-xs",children:[o.jsx("div",{className:"font-medium",children:R.label}),o.jsxs("div",{className:"mt-0.5 tabular-nums text-[color:var(--muted-foreground)]",children:[s.currency(R.credit,"USD",4)," · ",s.number(R.requests)," ",a("usage.req",{defaultValue:"req"})," · ",Zr(R.tokens)," ",a("usage.tok",{defaultValue:"tok"})]})]})]},R.date))},T))})]}),o.jsxs("div",{className:"mt-2 flex items-center gap-1 text-2xs text-[color:var(--muted-foreground)]",style:{paddingLeft:V$},children:[o.jsx("span",{children:a("usage.activityLess",{defaultValue:"Less"})}),p.map((k,T)=>o.jsx("div",{className:"size-[14px] rounded-[3px]",style:{backgroundColor:k}},T)),o.jsx("span",{children:a("usage.activityMore",{defaultValue:"More"})})]})]}),o.jsxs("div",{className:"grid grid-cols-2 gap-3 sm:grid-cols-4 lg:w-[360
962px] lg:shrink-0 lg:grid-cols-2",children:[o.jsx(Lb,{label:a("usage.stat.activeDays",{defaultValue:"Active days"}),value:s.number(r.activeDays)}),o.jsx(Lb,{label:a("usage.stat.longestStreak",{defaultValue:"Longest streak"}),value:a("usage.stat.daysValue",{defaultValue:"{{n}} days",n:s.number(y.longest)})}),o.jsx(Lb,{label:a("usage.stat.totalSpend",{defaultValue:"Total this period"}),value:s.currency(r.totalCredit,"USD",r.totalCredit<1?4:2)}),o.jsx(Lb,{label:a("usage.stat.peakDay",{defaultValue:"Busiest day"}),value:r.peakDay?r.peakDay.label:"—",sub:r.peakDay?`${Zr(r.peakDay.tokens)} ${a("usage.tok",{defaultValue:"tok"})} · ${s.currency(r.peakDay.credit,"USD",r.peakDay.credit<1?4:2)}`:void 0})]})]})]})}function Lb({label:e,value:t,sub:n}){return o.jsxs("div",{className:"min-w-0 rounded-md border border-[color:var(--border)] bg-[color:var(--background)] px-3.5 py-2.5",children:[o.jsx("div",{className:"truncate whitespace-nowrap text-11 font-medium text-[color:var(--muted-foreground)]",children:e}),o.jsxs("div",{className:"mt-0.5 min-w-0 whitespace-nowrap",children:[o.jsx("span",{className:"block truncate text-lg font-semibold tabular-nums text-[color:var(--foreground)]",children:t}),n?o.jsx("div",{className:"mt-0.5 truncate text-11 tabular-nums text-[color:var(--muted-foreground)]",children:n}):null]})]})}function YMs({value:e,onChange:t}){const{t:n}=W(),a=["tokens","requests","cost"];return o.jsx("div",{className:"grid w-full grid-cols-3 gap-1 rounded-md border border-[color:var(--border)] p-0.5 text-11 sm:w-auto sm:flex",children:a.map(s=>o.jsx(K,{variant:"ghost",onClick:()=>t(s),className:X("h-auto min-w-0 rounded px-2 py-1 text-11 font-normal sm:px-3",e===s?"bg-[color:var(--foreground)] font-medium text-[color:var(--background)] hover:bg-[color:var(--foreground)] hover:text-[color:var(--background)]":"text-[color:var(--muted-foreground)] hover:bg-transparent hover:text-[color:var(--foreground)]"),children:n(`usage.metric.${s}`,{defaultValue:s})},s))})}function sT({title:e,points:t,metric:n,bucketAxis:a,granularity:s,loading:r,error:i,seriesLabel:c}){const{t:d,i18n:m}=W(),{rows:f,series:p}=h.useMemo(()=>jZ(t,t.length?a:void 0),[t,a]),y=n==="cost"?x=>lr(x,m.language,"USD",4):x=>Zr(x),v=h.useMemo(()=>s==="hour"?new Intl.DateTimeFormat(m.language,{hour:"2-digit",minute:"2-digit",hour12:!1}):new Intl.DateTimeFormat(m.language,{month:"short",day:"numeric"}),[m.language,s]),$=x=>{const w=new Date(String(x));return Number.isNaN(w.getTime())?String(x):v.format(w)};return o.jsx(PZ,{title:e,height:220,loading:r,error:i,data:f,xAxisKey:"bucket",valueFormatter:y,xTickFormatter:$,series:p.map((x,w)=>({dataKey:x,name:c?c(x):x,stackId:"stack",colorIndex:w+1})),emptyState:o.jsx(Ot,{title:d("usage.chartEmpty",{defaultValue:"No data"}),description:d("usage.chartEmptyHint",{defaultValue:"No usage in this range yet."}),className:"h-full"})})}function P6({title:e,rows:t,loading:n,linkFor:a}){const{t:s}=W(),r=Te(),i=t.reduce((c,d)=>Math.max(c,Number(d.billedCredit)||0),0);return o.jsxs(Ee,{className:"overflow-hidden p-0",children:[o.jsx("div",{className:"border-b border-[color:var(--border)] px-4 py-3",children:o.jsx("h3",{className:"text-sm font-semibold",children:e})}),n?o.jsxs("div",{className:"space-y-3 p-4",children:[o.jsx(Rt,{className:"h-8 w-full"}),o.jsx(Rt,{className:"h-8 w-full"}),o.jsx(Rt,{className:"h-8 w-full"})]}):t.length===0?o.jsx("div",{className:"p-6",children:o.jsx(Ot,{title:s("usage.topEmpty",{defaultValue:"No data"}),description:s("usage.topEmptyHint",{defaultValue:"Make a request to start populating this."})})}):o.jsx("ul",{className:"divide-y divide-[color:var(--border)]",children:t.map((c,d)=>{const m=Number(c.billedCredit)||0,f=i>0?m/i*100:0;return o.jsx("li",{children:o.jsxs(Ta,{to:a(c),className:"block px-4 py-2.5 transition-colors hover:bg-[color:var(--muted)]",children:[o.jsxs("div",{className:"grid min-w-0 gap-1 sm:flex sm:items-baseline sm:justify-between sm:gap-3",children:[o.jsxs("div",{className:"min-w-0",children:[o.jsx("div",{className:"break-words text-sm font-medium [overflow-wrap:anywhere] sm:truncate",children:c.displayName}),c.extra?o.jsx("div",{className:"break-all font-mono text-11 text-[color:var(--muted-foreground)] sm:truncate",children:c.extra}):null]}),o.jsxs("div",{className:"min-w-0 text-left text-sm tabular-nums sm:shrink-0 sm:text-right",children:[r.currency(m,"USD",4),o.jsxs("div",{className:"break-words text-11 text-[color:var(--muted-foreground)] [overflow-wrap:anywhere]",children:[r.number(c.requestCount)," ",s("usage.req",{defaultValue:"req"})," · ",Zr(c.totalTokens)," ",s("usage.tok",{defaultValue:"tok"})]})]})]}),o.jsx("div",{className:"mt-1.5 h-1 overflow-hidden rounded bg-[color:var(--muted)]",children:o.jsx("div",{className:"h-full",style:{width:`${f}%`,backgroundColor:Yw(d+1)}})})]})},c.key)})})]})}function QMs(){const{t:e}=W();return o.jsx(Vt,{title:e("usage.title",{defaultValue:"Usage"}),children:o.jsx("div",{className:"mx-auto max-w-md py-16",children:o.jsx(Ot,{title:e("usage.wel
962come.title",{defaultValue:"Welcome to OneHop"}),description:e("usage.welcome.body",{defaultValue:"Create your first API key to route requests through one URL, then watch your usage land here."}),action:o.jsxs("div",{className:"flex flex-wrap items-center justify-center gap-2",children:[o.jsxs(Ta,{to:Be.apiKeys,className:ur({size:"sm"}),children:[o.jsx(wr,{className:"size-3.5"})," ",e("usage.welcome.createKey",{defaultValue:"Create API key"})]}),o.jsxs(Ta,{to:Be.chat,className:ur({size:"sm",variant:"outline"}),children:[o.jsx(ybe,{className:"size-3.5"})," ",e("usage.welcome.tryPlayground",{defaultValue:"Try playground"})]})]})})})})}function fN(e){if(!e||!XMs(e))throw new Error("Payment provider returned an unusable checkout URL");window.location.assign(e)}function XMs(e){try{const t=new URL(e);return t.protocol==="https:"?!!t.hostname:!1}catch{return!1}}function H0(e){return Ue({queryKey:Ht.billingSummary,queryFn:()=>Ye.request("/console/billing/summary"),retry:1,staleTime:4500,refetchInterval:e?.pollEnabled?e.pollIntervalMs??5e3:!1})}function ZMs(){const e=Re();return ke({mutationFn:t=>Ye.request("/console/billing/redeem",{method:"POST",body:{code:t},idempotent:!0,timeoutMs:15e3}),onSuccess:()=>{e.invalidateQueries({queryKey:Ht.billingSummary}),e.invalidateQueries({queryKey:["console","billing","ledger"]}),e.invalidateQueries({queryKey:Ht.billingTopups}),e.invalidateQueries({queryKey:Ht.me})}})}function JMs(){return ke({mutationFn:async e=>{const t=await Ye.request("/console/billing/topups/checkout",{method:"POST",body:{amountUsd:e.amountUsd,couponCode:e.couponCode??void 0,paymentMethod:e.paymentMethod},idempotent:!0,timeoutMs:2e4});return fN(t.checkoutUrl),t}})}function eEs(){return ke({mutationFn:e=>Ye.request("/console/billing/topups/preview-coupon",{method:"POST",body:e,timeoutMs:15e3})})}function tEs(e,t){return Ue({queryKey:Ht.topupBonusPreview(e),queryFn:()=>Ye.request("/console/billing/topups/preview-bonus",{method:"POST",body:{amountUsd:e},timeoutMs:15e3}),enabled:t,retry:!1,staleTime:6e4})}function nEs(){return ke({mutationFn:e=>Ye.request("/console/billing/refunds",{method:"POST",body:e,idempotent:!0,timeoutMs:2e4})})}function gN(){return Ue({queryKey:Ht.billingAlertConfig,queryFn:()=>Ye.request("/console/billing/alert-config"),retry:1})}function DZ(){const e=Re();return ke({mutationFn:t=>Ye.request("/console/billing/alert-config",{method:"PATCH",body:t}),onSuccess:t=>{e.setQueryData(Ht.billingAlertConfig,t)}})}function aEs(){return ke({mutationFn:()=>Ye.request("/console/billing/alert-config/webhook-test",{method:"POST",body:{},timeoutMs:15e3})})}function oEs(){return ke({mutationFn:async()=>{const e=await Ye.request("/console/billing/payment-method/setup-checkout",{method:"POST",body:{returnUrl:window.location.href},timeoutMs:2e4});return fN(e.checkoutUrl),e}})}function sEs(){const e=Re();return ke({mutationFn:()=>Ye.request("/console/billing/payment-method",{method:"DELETE",body:{}}),onSuccess:()=>{e.invalidateQueries({queryKey:Ht.billingAlertConfig})}})}function rEs(){const e=Re();return ke({mutationFn:()=>Ye.request("/console/billing/alert-config/rotate-secret",{method:"POST",body:{}}),onSuccess:t=>{e.setQueryData(Ht.billingAlertConfig,t)}})}function iEs(){return ke({mutationFn:async()=>{const e=await Ye.request("/console/billing/portal-session",{method:"POST",body:{returnUrl:window.location.href},idempotent:!0,timeoutMs:15e3});return fN(e.url),e}})}function MZ(e={}){return Ue({queryKey:Ht.ledger(e),queryFn:()=>Ye.request(`/console/billing/ledger${$r(e)}`),retry:1})}function lEs(){const{t:e}=W(),t=qa(),n=H0(),a=n.data?.supportsSavedPaymentMethods??!0,s=n.data?.paymentsDisabled??!1,r=e("billing.alerts.autorechargeUnsupported",{defaultValue:"Automatic top-up is unavailable with the active payment provider."}),i=gN(),c=DZ(),d=aEs(),m=rEs(),f=oEs(),p=sEs(),[y,v]=h.useState(!1),[$,x]=h.useState(!1),[w,S]=h.useState(""),[k,T]=h.useState(""),[R,_]=h.useState(!1),[P,j]=h.useState(""),[N,I]=h.useState(""),z=i.data?.alertThreshold?Pm(i.data.alertThreshold):"",E=i.data?.emailEnabled??!1,L=i.data?.webhookEnabled??!1,O=i.data?.webhookUrl??"",V=i.data?.webhookSecret??null,ne=i.data?.autorechargeEnabled??!1,q=i.data?.autorechargeThreshold?Pm(i.data.autorechargeThreshold):"",M=i.data?.autorechargeAmountUsd?Pm(i.data.autorechargeAmountUsd):"",F=i.data?.hasPaymentMethod??!1,H=i.data?.cardBrand??null,ee=i.data?.cardLast4??null,B=a&&F&&!ne&&(i.data?.autorechargeConsecutiveFailures??0)>=3;h.useEffect(()=>{i.data&&(v(i.data.emailEnabled),x(i.data.webhookEnabled),S(i.data.webhookUrl??""),T(i.data.alertThreshold?Pm(i.data.alertThreshold):""),_(i.data.autorechargeEnabled),j(i.data.autorechargeThreshold?Pm(i.data.autorechargeThreshold):""),I(i.data.autorechargeAmountUsd?Pm(i.data.autorechargeAmountUsd):""))},[i.data]);const G=k.trim()===""?null:Number(k),Q=G===null||Number.isFinite(G)&&G>0,Y=(y||$)&&(G===null||!Q),pe=$&&!cEs(w),se=P.trim()===""?null:Number(P),we=N.trim()===""?null:Number(N),me=a&&R&&(!F||se===null||se<=0||we===null||we<=0),ye=a&&G!==null&&se!==null&&G<se,_e=y!==E||$!==L||w.trim()!==O||k!==z||a&&(R!==ne||P!==q||N!==M),ae=_e&&Q&&!Y&&!pe&&!me&&!ye&&!c.isPending,Je=t.data?.user?.email??"",Ae=L&&!!O&&!_e;async function tt(){try{await f.mutateAsync()}catch(yt){ie.error(yt instanceof Error?yt.message:e("billing.alerts.cardSetupFailed",{defaultValue:"Failed to start card setup"}))}}function Tt(yt){if(!a){ie.error(r);return}
962if(yt&&!F){if(s){ie.error(e("billing.topup.maintenanceDescription",{defaultValue:"Payments are temporarily unavailable. Contact us on Telegram if you need to pay."}));return}tt();return}_(yt)}async function an(){try{await p.mutateAsync(),_(!1),ie.success(e("billing.alerts.cardRemoved",{defaultValue:"Card removed"}))}catch(yt){ie.error(yt instanceof Error?yt.message:e("billing.alerts.cardRemoveFailed",{defaultValue:"Failed to remove card"}))}}async function ta(){try{await c.mutateAsync({emailEnabled:y,webhookEnabled:$,webhookUrl:w.trim()===""?null:w.trim(),alertThreshold:k.trim()===""?null:k.trim(),autorechargeEnabled:a&&R,autorechargeThreshold:a&&P.trim()!==""?P.trim():null,autorechargeAmountUsd:a&&N.trim()!==""?N.trim():null}),ie.success(e("billing.alerts.saved",{defaultValue:"Alert settings saved"}))}catch(yt){ie.error(yt instanceof Error?yt.message:e("billing.alerts.saveFailed",{defaultValue:"Failed to save alert settings"}))}}async function lo(){try{await d.mutateAsync(),ie.success(e("billing.alerts.testQueued",{defaultValue:"Test delivery queued — check your endpoint"}))}catch(yt){ie.error(yt instanceof Error?yt.message:e("billing.alerts.testFailed",{defaultValue:"Failed to queue test delivery"}))}}async function qs(){try{await m.mutateAsync(),ie.success(e("billing.alerts.secretRotated",{defaultValue:"Signing secret rotated"}))}catch(yt){ie.error(yt instanceof Error?yt.message:e("billing.alerts.rotateFailed",{defaultValue:"Failed to rotate secret"}))}}return i.isError?o.jsx(Ee,{className:"p-5",children:o.jsx(Qt,{title:e("billing.alerts.loadFailed",{defaultValue:"Could not load alert settings"}),description:i.error instanceof Error?i.error.message:""})}):o.jsxs(Ee,{className:X("p-5",i.isFetching&&!i.isPending&&"opacity-80 transition-opacity duration-150 motion-reduce:transition-none"),children:[o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(rj,{className:"size-4 text-[color:var(--muted-foreground)]"}),o.jsx("h2",{className:"text-sm font-semibold",children:e("billing.alerts.title",{defaultValue:"Balance alerts"})})]}),o.jsx("p",{className:"mt-1 text-sm text-[color:var(--muted-foreground)]",children:e("billing.alerts.description",{defaultValue:"Get notified when your balance runs low."})}),o.jsxs("div",{className:"mt-4 grid gap-x-8 gap-y-5 border-t border-[color:var(--border)] pt-4 lg:grid-cols-2",children:[o.jsxs("div",{className:"flex flex-col gap-3 lg:border-r lg:border-[color:var(--border)] lg:pr-8",children:[o.jsx("h3",{className:"text-sm font-semibold",children:e("billing.alerts.lowBalanceGroup",{defaultValue:"Low-balance alerts"})}),o.jsx(Rm,{htmlFor:"alert-threshold",label:e("billing.alerts.thresholdLabel",{defaultValue:"Alert threshold"}),children:o.jsxs("span",{className:"inline-flex items-center gap-1",children:[o.jsx("span",{className:"text-[color:var(--muted-foreground)]",children:"$"}),o.jsx(ge,{id:"alert-threshold",type:"number",inputMode:"decimal",min:"0",step:"0.01",className:"w-24 tabular-nums",placeholder:"10",value:k,"aria-describedby":"alert-threshold-hint",onChange:yt=>T(yt.target.value),disabled:i.isPending})]})}),Y?o.jsx(rT,{children:e("billing.alerts.thresholdRequired",{defaultValue:"Set a threshold above $0 to enable alerts."})}):null,o.jsx(Rm,{htmlFor:"alert-email-toggle",label:e("billing.alerts.emailLabel",{defaultValue:"Email me"}),sub:Je||void 0,children:o.jsx(js,{id:"alert-email-toggle",checked:y,onCheckedChange:v,disabled:i.isPending,"aria-label":e("billing.alerts.emailLabel",{defaultValue:"Email me"})})}),o.jsxs("div",{className:"flex flex-col gap-2",children:[o.jsx(Rm,{htmlFor:"alert-webhook-toggle",label:e("billing.alerts.webhookLabel",{defaultValue:"Webhook"}),children:o.jsx(js,{id:"alert-webhook-toggle",checked:$,onCheckedChange:x,disabled:i.isPending,"aria-label":e("billing.alerts.webhookLabel",{defaultValue:"Webhook"})})}),$?o.jsxs("div",{className:"flex flex-col gap-2",children:[o.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row sm:items-center",children:[o.jsx(ge,{id:"alert-webhook-url",type:"url",inputMode:"url",className:"w-full",placeholder:"https://example.com/webhooks/onehop",value:w,onChange:yt=>S(yt.target.value),disabled:i.isPending}),o.jsx(K,{variant:"secondary",className:"shrink-0",onClick:lo,disabled:!Ae||d.isPending,children:d.isPending?e("billing.alerts.testing",{defaultValue:"Testing…"}):e("billing.alerts.test",{defaultValue:"Test"})})]}),pe?o.jsx(rT,{children:e("billing.alerts.webhookUrlRequired",{defaultValue:"Enter an https:// URL for the webhook."})}):null,V?o.jsxs("div",{className:"flex flex-wrap items-center gap-2 text-sm text-[color:var(--muted-foreground)]",children:[o.jsx("span",{children:e("billing.alerts.signingSecret",{defaultValue:"Signing secret"})}),o.jsx("code",{className:"rounded bg-[color:var(--muted)] px-1.5 py-0.5 font-mono text-xs",children:dEs(V)}),o.jsx(py,{value:V,variant:"ghost",iconClassName:"size-3.5"}),o.jsx(Aa,{variant:"ghost",size:"sm",onClick:qs,disabled:m.isPending,"aria-label":e("billing.alerts.rotate",{defaultValue:"Rotate"}),children:o.jsx(Kp,{className:X("size-3.5",m.isPending&&"animate-spin")})})]}):o.jsx("p",{className:"text-xs text-[color:var(--muted-foreground)]",children:e("billing.alerts.secretOnSave",{defaultValue:"A signing secret is generated 
962when you save."})})]}):null]})]}),o.jsx("div",{className:"flex flex-col gap-3 border-t border-[color:var(--border)] pt-5 lg:border-t-0 lg:pl-0 lg:pt-0",children:a?o.jsxs(o.Fragment,{children:[o.jsx(Rm,{htmlFor:"alert-autorecharge-toggle",strong:!0,label:e("billing.alerts.autorechargeLabel",{defaultValue:"Auto top-up"}),children:o.jsx(js,{id:"alert-autorecharge-toggle",checked:R,onCheckedChange:Tt,disabled:i.isPending||f.isPending||s&&!F,"aria-label":e("billing.alerts.autorechargeLabel",{defaultValue:"Auto top-up"})})}),F?null:o.jsx("p",{className:"text-sm text-[color:var(--muted-foreground)]",children:e("billing.alerts.autorechargeAddCardHint",{defaultValue:"adds a card to keep your balance topped up"})}),B?o.jsxs("div",{className:"flex items-center gap-2 text-sm text-[color:var(--warning)]",children:[o.jsx(dj,{className:"size-4 shrink-0"}),o.jsx("span",{children:e("billing.alerts.autorechargeDisabledFailures",{defaultValue:"Auto top-up was disabled after repeated failures. Update your card and re-enable."})})]}):null,R&&F?o.jsxs(o.Fragment,{children:[o.jsx(Rm,{htmlFor:"ar-amount",label:e("billing.alerts.autorechargeTopUp",{defaultValue:"Top up"}),children:o.jsxs("span",{className:"inline-flex items-center gap-1",children:[o.jsx("span",{className:"text-[color:var(--muted-foreground)]",children:"$"}),o.jsx(ge,{id:"ar-amount",type:"number",inputMode:"decimal",min:"0",step:"0.01",className:"w-24 tabular-nums",placeholder:"20",value:N,onChange:yt=>I(yt.target.value),disabled:i.isPending,"aria-label":e("billing.alerts.autorechargeAmount",{defaultValue:"Auto top-up amount"})})]})}),o.jsx(Rm,{htmlFor:"ar-threshold",label:e("billing.alerts.autorechargeWhenBelow",{defaultValue:"when balance falls below"}),children:o.jsxs("span",{className:"inline-flex items-center gap-1",children:[o.jsx("span",{className:"text-[color:var(--muted-foreground)]",children:"$"}),o.jsx(ge,{id:"ar-threshold",type:"number",inputMode:"decimal",min:"0",step:"0.01",className:"w-24 tabular-nums",placeholder:"5",value:P,onChange:yt=>j(yt.target.value),disabled:i.isPending,"aria-label":e("billing.alerts.autorechargeThreshold",{defaultValue:"Auto top-up threshold"})})]})}),me?o.jsx(rT,{children:e("billing.alerts.autorechargeIncomplete",{defaultValue:"Set an auto top-up amount and threshold above $0."})}):null]}):null,F?o.jsxs("div",{className:"flex flex-wrap items-center gap-2 text-sm text-[color:var(--muted-foreground)]",children:[o.jsx(Lw,{className:"size-4"}),o.jsx("span",{className:"capitalize",children:H??e("billing.alerts.card",{defaultValue:"Card"})}),o.jsxs("span",{className:"font-mono tabular-nums",children:["•••• ",ee??"••••"]}),o.jsx(K,{variant:"ghost",size:"sm",onClick:()=>void tt(),disabled:f.isPending||s,children:e("billing.alerts.changeCard",{defaultValue:"Change"})}),o.jsx(K,{variant:"ghost",size:"sm",onClick:an,disabled:p.isPending,children:e("billing.alerts.removeCard",{defaultValue:"Remove"})})]}):null]}):o.jsxs("div",{className:"flex flex-col gap-2",children:[o.jsx("h3",{className:"text-sm font-semibold",children:e("billing.alerts.autorechargeLabel",{defaultValue:"Auto top-up"})}),o.jsx("p",{className:"text-sm text-[color:var(--muted-foreground)]",children:r})]})})]}),o.jsxs("div",{className:"mt-4 flex flex-col gap-2 border-t border-[color:var(--border)] pt-4 sm:flex-row sm:items-center sm:justify-end sm:gap-4",children:[ye?o.jsx("span",{id:"alert-threshold-hint",className:"text-xs text-[color:var(--warning)] sm:mr-auto",children:e("billing.alerts.thresholdOrderBad",{defaultValue:"Alert threshold must be ≥ the auto top-up threshold."})}):null,o.jsx(K,{onClick:ta,disabled:!ae,children:c.isPending?e("common.saving",{defaultValue:"Saving…"}):e("common.save",{defaultValue:"Save"})})]})]})}function Rm({htmlFor:e,label:t,sub:n,strong:a,children:s}){return o.jsxs("div",{className:"flex flex-col gap-1.5 sm:flex-row sm:items-center sm:justify-between sm:gap-3",children:[o.jsxs("label",{htmlFor:e,className:X("text-sm",a?"font-semibold":"font-medium"),children:[t,n?o.jsx("span",{className:"block min-w-0 break-words font-normal text-[color:var(--muted-foreground)] sm:ml-2 sm:inline",children:n}):null]}),o.jsx("div",{className:"shrink-0",children:s})]})}function rT({children:e}){return o.jsx("p",{className:"text-xs text-[color:var(--destructive)]",children:e})}function Pm(e){const t=Number(e);return Number.isFinite(t)?String(t):e}function cEs(e){try{return new URL(e.trim()).protocol==="https:"}catch{return!1}}function dEs(e){return e.length>10?`${e.slice(0,6)}••••${e.slice(-4)}`:e}function uEs({credits:e}){const{t}=W(),n=Te();return!e||e.length===0?null:o.jsxs(Ee,{className:"p-6","data-testid":"earmarked-credits",children:[o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(rbe,{className:"size-4 text-[color:var(--muted-foreground)]","aria-hidden":!0}),o.jsx("h2",{className:"text-sm font-medium text-[color:var(--foreground)]",children:t("billing.earmarked.title",{defaultValue:"Earmarked credit"})})]}),o.jsx("p",{className:"mt-1 text-xs text-[color:var(--muted-foreground)]",children:t("billing.earmarked.subtitle",{defaultValue:"Restricted to specific models, separate from your available balance."})}),o.jsx("ul",{className:"mt-4 divide-y divide-[color:var(--border)]",children:e.map(a=>o.jsx(mEs,{credit:a,t,f:n},a.scopeId))})]})}function mEs({credit:e,t,f:n}){const a=e.models??[],s=a.length>
9620?t("billing.earmarked.onlyModels",{defaultValue:"Only {{models}}",models:a.join(", ")}):t("billing.earmarked.onlyModelsGeneric",{defaultValue:"Restricted models"}),r=e.expiresAt?t("billing.earmarked.validUntil",{defaultValue:"Valid until {{date}}",date:n.dateTime(e.expiresAt)}):t("billing.earmarked.noExpiry",{defaultValue:"No expiry"});return o.jsxs("li",{className:"flex items-start justify-between gap-4 py-3 first:pt-0 last:pb-0",children:[o.jsxs("div",{className:"min-w-0",children:[o.jsx("p",{className:"truncate text-sm font-medium text-[color:var(--foreground)]",children:e.scopeName}),o.jsx("p",{className:"mt-0.5 truncate text-xs text-[color:var(--muted-foreground)]",children:s}),o.jsx("p",{className:"mt-0.5 text-xs text-[color:var(--muted-foreground)] tabular-nums",children:r})]}),o.jsxs("div",{className:"flex shrink-0 flex-col items-end gap-1",children:[o.jsx("span",{className:"text-lg font-medium tabular-nums text-[color:var(--foreground)]",children:n.currency(Number(e.amount))}),a.length>0?o.jsx(K,{asChild:!0,size:"sm",variant:"link",className:"h-auto p-0",children:o.jsx(Ta,{to:`${Be.chat}?model=${encodeURIComponent(a[0])}`,children:t("billing.earmarked.useInChat",{defaultValue:"Use in chat"})})}):null]})]})}function pEs(){return Ue({queryKey:Ht.freeTokens,queryFn:()=>Ye.request("/console/free-tokens"),retry:1,refetchInterval:6e4})}function fEs(){const{t:e}=W(),t=Te(),n=pEs(),a=gN(),s=DZ(),r=xEs(),i=n.data;if(!i)return null;const c=i.allowances??[];return c.length===0&&!i.paused?null:o.jsxs(Ee,{className:"p-6","data-testid":"free-tokens",children:[o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(uy,{className:"size-4 text-[color:var(--muted-foreground)]","aria-hidden":!0}),o.jsx("h2",{className:"text-sm font-medium text-[color:var(--foreground)]",children:e("freeTokens.title")})]}),o.jsx("p",{className:"mt-1 text-xs text-[color:var(--muted-foreground)]",children:e("freeTokens.description")}),i.paused&&i.warning?o.jsx(gEs,{contact:i.warning.contact,t:e}):null,c.length>0?o.jsx("ul",{className:"mt-4 divide-y divide-[color:var(--border)]",children:c.map(d=>o.jsx(hEs,{allowance:d,now:r,t:e,f:t},d.campaignPublicId))}):null,c.length>0?o.jsxs("div",{className:"mt-5 flex items-center justify-between gap-3 border-t border-[color:var(--border)] pt-4",children:[o.jsxs("div",{className:"min-w-0",children:[o.jsx("label",{htmlFor:"free-tokens-email",className:"text-sm font-medium text-[color:var(--foreground)]",children:e("freeTokens.emailToggle.label")}),o.jsx("p",{className:"mt-0.5 text-xs text-[color:var(--muted-foreground)]",children:e("freeTokens.emailToggle.hint")})]}),o.jsx(js,{id:"free-tokens-email",checked:a.data?.freeTokenEmailEnabled??!0,onCheckedChange:d=>s.mutate({freeTokenEmailEnabled:d}),disabled:a.isLoading||s.isPending,"aria-label":e("freeTokens.emailToggle.label")})]}):null]})}function gEs({contact:e,t}){return o.jsxs("div",{className:"mt-4 flex items-start gap-3 rounded-xl bg-[color:var(--primary)] px-4 py-3 text-[color:var(--primary-foreground)]",children:[o.jsx(_9,{className:"mt-0.5 size-5 shrink-0","aria-hidden":!0}),o.jsxs("div",{className:"min-w-0 text-sm",children:[o.jsx("p",{className:"font-medium",children:t("freeTokens.paused.title")}),o.jsxs("p",{className:"mt-1 text-[color:var(--primary-foreground)]/80",children:[t("freeTokens.paused.body")," ",o.jsx("a",{href:`mailto:${e}`,className:"font-medium underline underline-offset-2",children:e})]})]})]})}function hEs({allowance:e,now:t,t:n,f:a}){const{grantedTokens:s,consumedTokens:r,remainingTokens:i}=e,c=s>0?Math.max(0,Math.min(100,r/s*100)):0,d=c>=90?"bg-[color:var(--warning)]":void 0;return o.jsxs("li",{className:"py-5 first:pt-0 last:pb-0",children:[o.jsxs("div",{className:"flex items-start justify-between gap-4",children:[o.jsxs("div",{className:"min-w-0",children:[o.jsx("h3",{className:"truncate text-sm font-medium text-[color:var(--foreground)]",children:n(`freeTokens.campaigns.${e.campaignPublicId}`,{defaultValue:e.campaignName})}),o.jsx(yEs,{models:e.models,t:n})]}),o.jsx("span",{className:"shrink-0 rounded-full bg-[color:var(--accent)] px-2.5 py-1 text-2xs font-medium uppercase tracking-wide text-[color:var(--muted-foreground)]",children:n(e.cadence==="weekly"?"freeTokens.cadence.weekly":"freeTokens.cadence.daily")})]}),o.jsxs("div",{className:"mt-5",children:[o.jsxs("div",{className:"flex items-baseline gap-2",children:[o.jsx("span",{className:"text-base font-semibold tabular-nums text-[color:var(--foreground)]",children:a.number(r)}),o.jsxs("span",{className:"text-13 tabular-nums text-[color:var(--muted-foreground)]",children:["/ ",a.number(s)," ",n("freeTokens.tokensUnit")]}),o.jsxs("span",{className:"ml-auto text-11 tabular-nums text-[color:var(--muted-foreground)]",children:[_6(r,a.locale)," / ",_6(s,a.locale)]})]}),o.jsx(iy,{value:c,className:"mt-2",indicatorClassName:d}),o.jsx("p",{className:"mt-2 text-11 tabular-nums text-[color:var(--muted-foreground)]",children:n("freeTokens.remainingToday",{value:a.number(i)})})]}
962),o.jsx(vEs,{allowance:e,now:t,t:n,f:a}),e.campaignEndsAt?o.jsx("p",{className:"mt-3 text-xs text-[color:var(--muted-foreground)]",children:n("freeTokens.campaignEnds",{date:a.dateTime(e.campaignEndsAt)})}):null]})}function yEs({models:e,t}){return e.length===0?o.jsx("p",{className:"mt-1 text-xs text-[color:var(--muted-foreground)]",children:t("freeTokens.allModels")}):o.jsx("div",{className:"mt-2 flex flex-wrap gap-1.5",children:e.map(n=>{const{authorSlug:a}=yK(n);return o.jsxs("span",{className:"inline-flex items-center gap-1.5 rounded-md border border-[color:var(--border)] bg-[color:var(--background)] px-2 py-1 text-xs text-[color:var(--foreground)]",children:[o.jsx(Xo,{authorSlug:a,size:14,className:"shrink-0 text-foreground/80"}),vK({fullSlug:n})]},n)})})}function vEs({allowance:e,now:t,t:n,f:a}){const s=new Date(e.nextRefreshAt).getTime(),r=new Date(e.nextRefreshAt).toLocaleTimeString(a.locale,{hour:"2-digit",minute:"2-digit"}),i=n(e.cadence==="weekly"?"freeTokens.refresh.weekly":"freeTokens.refresh.daily"),c=n("freeTokens.refresh.localTime",{time:r}),d=s-t,m=d>0?n("freeTokens.refresh.countdown",{duration:bEs(d)}):n("freeTokens.refresh.refreshingSoon");return o.jsxs("div",{className:"mt-4 flex items-start gap-2 rounded-lg bg-[color:var(--muted)]/40 px-3 py-2 text-xs text-[color:var(--muted-foreground)]",children:[o.jsx(j9,{className:"mt-0.5 size-3.5 shrink-0","aria-hidden":!0}),o.jsxs("p",{className:"tabular-nums",children:[i," · ",c," · ",o.jsx("span",{className:"font-medium text-[color:var(--foreground)]",children:m})]})]})}function _6(e,t){return new Intl.NumberFormat(t,{notation:"compact",maximumFractionDigits:2}).format(e)}function bEs(e){const t=Math.floor(e/6e4),n=Math.floor(t/60),a=t%60;return n>0?`${n}h ${a}m`:a>0?`${a}m`:"<1m"}function xEs(){const[e,t]=h.useState(()=>Date.now());return h.useEffect(()=>{const n=setInterval(()=>t(Date.now()),1e3);return()=>clearInterval(n)},[]),e}const $Es={REDEEM_NOT_FOUND:"billing.redeemCard.errors.invalid",REDEEM_DISABLED:"billing.redeemCard.errors.invalid",REDEEM_RISKY:"billing.redeemCard.errors.invalid",REDEEM_EXPIRED:"billing.redeemCard.errors.expired",REDEEM_ALREADY_REDEEMED:"billing.redeemCard.errors.alreadyRedeemed",REDEEM_PER_USER_LIMIT:"billing.redeemCard.errors.perUserLimit"};function wEs(){const{t:e}=W(),t=Te(),n=ZMs(),[a,s]=h.useState("");async function r(){const i=a.trim();if(i)try{const c=await n.mutateAsync(i),d=c.restrictedModels?.length?e("billing.redeemCard.successRestricted",{defaultValue:"Redeemed {{amount}} — usable with {{models}} only",amount:t.currency(Number(c.creditedUsd)),models:c.restrictedModels.join(", ")}):e("billing.redeemCard.success",{defaultValue:"Redeemed {{amount}} to your balance",amount:t.currency(Number(c.creditedUsd))}),m=c.creditExpiresAt?` ${e("billing.redeemCard.successValidity",{defaultValue:"Valid until {{date}}.",date:t.dateTime(c.creditExpiresAt)})}`:"";ie.success(`${d}${m}`),s("")}catch(c){const d=$Es[c.code??""];ie.error(d?e(d):c.message)}}return o.jsxs(Ee,{className:"p-6","data-testid":"redeem-code",children:[o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(sxe,{className:"size-4 text-[color:var(--muted-foreground)]","aria-hidden":!0}),o.jsx("h2",{className:"text-sm font-medium text-[color:var(--foreground)]",children:e("billing.redeemCard.title",{defaultValue:"Redeem a code"})})]}),o.jsx("p",{className:"mt-1 text-xs text-[color:var(--muted-foreground)]",children:e("billing.redeemCard.description",{defaultValue:"Have a redeem code? Enter it to credit the amount to your balance."})}),o.jsxs("form",{className:"mt-4 flex flex-col gap-2 sm:flex-row",onSubmit:i=>{i.preventDefault(),r()},children:[o.jsx(ge,{value:a,onChange:i=>s(i.target.value.toUpperCase()),placeholder:e("billing.redeemCard.placeholder",{defaultValue:"e.g. OHR-XXXXXXXX"}),"aria-label":e("billing.redeemCard.title",{defaultValue:"Redeem a code"}),autoComplete:"off",spellCheck:!1}),o.jsx(K,{type:"submit",className:"sm:w-auto",disabled:n.isPending||!a.trim(),children:n.isPending?e("billing.redeemCard.redeeming",{defaultValue:"Redeeming…"}):e("billing.redeemCard.redeem",{defaultValue:"Redeem"})})]})]})}function kEs(){return Ue({queryKey:["console","referrals","banner"],queryFn:()=>Ye.request("/console/referrals/banner").then(e=>e.banner),retry:1,staleTime:6e4})}function EZ(){return Ue({queryKey:["console","referrals","dashboard"],queryFn:()=>Ye.request("/console/referrals"),retry:1})}function CEs(e={}){return Ue({queryKey:["console","referrals","events",e],queryFn:()=>Ye.request(`/console/referrals/events${$r(e)}`),retry:1})}function SEs(e){return e==="credit_purchase"||e==="credit_purchase_refund"||e==="credit_purchase_chargeback"?"topups":e.startsWith("bonus_")||e==="manual_adjustment"||e==="reconciliation_adjustment"?"bonuses":null}function AEs(e,t=0){const n={topups:0,bonuses:0,usage:0};for(const s of e){const r=Number(s.amount);if(!Number.isFinite(r))continue;const i=SEs(s.entryType);i&&(n[i]+=r)}const a=Math.abs(Number.isFinite(t)?t:0);return n.usage=a===0?0:-a,n}function TEs(e){const t=n=>Number.isFinite(Number(n))?Number(n):0;return{available:t(e.availableEarned)+t(e.availableReceived),frozen:t(e.frozenEarned)+t(e.frozenReceived)}}function REs(e){return e.reduce((t,n)=>{const a=Number(n.billedCredit);return Number.isFinite(a)?t+a:t},0)}function PEs(){const{t:e}=W(),t=Te(),{data:n}=EZ();if(!n)return null;const{available:a,frozen:s}=TEs(n);if(a+s<=0)return null;const r=n.policy?.releasePolicy?.delay_days,i=r?e("billing.referralRewards.frozenHint",{defaultValue:"Vests in ~{{days}} days",days:r}):e("billing.referralRewards.frozenHintGeneric",{defaultValue:"Vests after the holding period"});return o.jsxs(Ee,{className:"p-6","data-testid":"referral-rewards",children:[o.jsx("h2",{className:"text-sm font-medium text-[color:var(--foreground)]",children:e("billing.referralRewards.title",{defaultValue:"Referral rewards"})}),o.jsxs("dl",{className:"mt-4 grid grid-cols-2 gap-4",children:[o.jsx(j6,{label:e("billing.referralRewards.frozen",{defaultValue:"Pending (frozen)"}),value:`+${t.currency(s)}`,hint:i}),o.jsx(j6,{label:e("billing.referralRewards.available",{defaultValue:"Credited"}),value:`+${t.currency(a)}`,hint:e("billing.referralRewards.availableHint",{defaultValue:"Already in your available balance"}),credited:!0})]}),o.jsxs(Ta,{to:Be.referrals,className:"mt-4 inline-flex items-center gap-1 text-sm text-[color:var(--link)] hover:underline",children:[e("billing.referralRewards.viewDetails",{defaultValue:"View referral details"}),o.jsx(p9,{className:"size-3.5"})]})]})}function j6({label:e,value:t,hint:n,credited:a}){return o.jsxs("div",{children:[o.jsx("dt",{className:"text-xs uppercase tracking-wide text-[color:var(--muted-foreground)]",children:e}),o.jsx("dd",{className:X("mt-1 text-lg font-medium tabular-nums",a?"text-[color:var(--success)]":"text-[color:var(--foreground)]"),children:t}),o.jsx("p",{className:"mt-0.5 text-xs text-[color:var(--muted-foreground)]",children:n})]})}const _Es=[10,20,50,100];function hN(e,t={}){const n=typeof t=="number"?{initialPageSize:t}:t,a=n.page!=null,[s,r]=h.useState(1),[i,c]=h.useState(n.initialPageSize??20),d=Math.max(1,Math.ceil(e.length/i)),m=Math.min(a?n.page:s,d),f=y=>a?n.onPageChange?.(y):r(y);return{pageRows:h.useMemo(()=>e.slice((m-1)*i,m*i),[e,m,i]),page:m,pageSize:i,total:e.length,onPageChange:f,onPageSizeChange:y=>{c(y),f(1)}}}function V0(e){const{t}=W();return o.jsx("div",{className:"border-t border-[color:var(--border)] px-3 py-2.5 sm:px-4 sm:py-3",children:o.jsx(A_,{total:e.total,page:e.page,pageSize:e.pageSize,pageSizeOptions:e.pageSizeOptions??_Es,onPageChange:e.onPageChange,onPageSizeChange:e.onPageSizeChange,labels:{total:n=>t("pagination.total",{count:n,defaultValue:"Total {{count}}"}),perPage:n=>t("pagination.perPage",{count:n,defaultValue:"{{count}} / page"})}})})}function jh({children:e,className:t,onClick:n}){return o.jsx("article",{onClick:n?a=>{eu(a)||n()}:void 0,onKeyDown:n?a=>{eu(a)||(a.key==="Enter"||a.key===" ")&&(a.preventDefault(),n())}:void 0,role:n?"button":void 0,tabIndex:n?0:void 0,className:X("min-w-0 max-w-full overflow-hidden rounded-md border border-[color:var(--border)] bg-[color:var(--card)] p-2.5 text-sm shadow-[var(--shadow-control)]",n&&"cursor-pointer transition-colors hover:bg-[color:var(--muted)]/50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[color:var(--ring)]",t),children:e})}function Nh({title:e,meta:t,trailing:n}){return o.jsxs("div",{className:"flex min-w-0 items-start justify-between gap-3",children:[o.jsxs("div",{className:"min-w-0",children:[o.jsx("div",{className:"min-w-0 break-words font-medium",children:e}),t?o.jsx("div",{className:"mt-1 min-w-0 break-words text-xs text-[color:var(--muted-foreground)]",children:t}):null]}),n?o.jsx("div",{className:"shrink-0",children:n}):null]})}function K$({children:e,className:t}){return o.jsx("dl",{className:X("mt-2 grid grid-cols-2 gap-x-3 gap-y-1.5",t),children:e})}function nr({label:e,children:t,align:n="left"}){return o.jsxs("div",{className:X("grid min-w-0 gap-1",n==="right"&&"text-right"),children:[o.jsx("dt",{className:"text-2xs font-semibold uppercase text-[color:var(--muted-foreground)]",children:e}),o.jsx("dd",{className:X("min-w-0 break-words [&>*]:max-w-full [&>*]:min-w-0",n==="right"&&"tabular-nums"),children:t})]})}const iT=["preset","from","to","entryType","sourceType","idSearch","amountMin","amountMax","page","size"],jEs={preset:"last30d"},IZ=!1,NEs={"Stripe credit purchase":"billing.ledgerDesc.creditPurchase","Waffo credit purchase":"billing.ledgerDesc.creditPurchase","Credit purchase":"billing.ledgerDesc.creditPurchase","Test fixture purchased credit":"billing.ledgerDesc.creditPurchase","Topup bonus grant":"billing.ledgerDesc.topupBonus","Coupon bonus grant":"billing.ledgerDesc.couponBonus","Signup bonus":"billing.ledgerDesc.signupBonus","Test fixture signup bonus":"billing.ledgerDesc.signupBonus","Referral cashback clawback (refund)":"billing.ledgerDesc.referralClawback","Referral cashback":"billing.ledgerDesc.referralCashback","Referral invitee cashback":"billing.ledgerDesc.referralInviteeCashback","Redeem code reversal (clawback)":"billing.ledgerDesc.redeemCodeReversal"};function OP(e,t){if(e.description){const n=NEs[e.description];return n?t(n):e.description.startsWith("Redeem code ")?t("billing.ledgerDesc.redeemCode",{defaultValue:"Redeem code {{code}}",code:e.description.slice(12)}):e.description.startsWith("Stripe refund ")||e.description.startsWith("Stripe Dashboard refund ")?t("billing.ledgerDesc.stripeRefund",{defaultValue:"Stripe refund"}):e.description.startsWith("Bonus reversal for ")?t("billing.ledgerDesc.bonus
962Reversal",{defaultValue:"Bonus reversal (refund)"}):e.description}return t(`optionLabels.${e.sourceType}`,{defaultValue:ct(e.sourceType)})}function OZ({method:e}){const{t}=W();if(e!=="card"&&e!=="alipay"&&e!=="wechat_pay")return null;const n=e==="card"?o.jsx(Lw,{className:"size-3.5"}):o.jsx(kg,{brand:e==="alipay"?"alipay":"wechat-pay",size:13}),a=e==="card"?t("billing.paymentMethod.card",{defaultValue:"Card"}):e==="alipay"?t("billing.paymentMethod.alipay",{defaultValue:"Alipay"}):t("billing.paymentMethod.wechatPay",{defaultValue:"WeChat Pay"});return o.jsxs("span",{className:"inline-flex items-center gap-1 whitespace-nowrap text-xs text-[color:var(--muted-foreground)]",children:[n,a]})}function LZ(e){return e==="credit_purchase"||e.startsWith("bonus_")?"text-[color:var(--success)]":e==="manual_adjustment"?"text-[color:var(--warning)]":"text-[color:var(--muted-foreground)]"}function DEs({onTopUp:e}){const{t,i18n:n}=W(),{params:a,patch:s,remove:r}=Mt(),i=iEs(),c=h.useMemo(()=>({range:qw(a,jEs),entryType:Pe(a,"entryType"),sourceType:Pe(a,"sourceType"),idSearch:Pe(a,"idSearch"),amountMin:Pe(a,"amountMin"),amountMax:Pe(a,"amountMax"),page:ln(a,"page",1),size:ln(a,"size",20)}),[a]),d=c.range,m=H0(),f=m.data!==void 0&&m.data.supportsBillingPortal!==!1,p=T=>s({...Hw(T),page:void 0}),y=h.useDeferredValue(c.idSearch),v=h.useDeferredValue(c.amountMin),$=h.useDeferredValue(c.amountMax),x=MZ({kinds:"funding",page:String(c.page),limit:String(c.size),...c.entryType?{entryType:c.entryType}:{},...c.sourceType?{sourceType:c.sourceType}:{},...d.from?{from:d.from}:{},...d.to?{to:d.to}:{},...v?{amountMin:v}:{},...$?{amountMax:$}:{},...y?{idSearch:y}:{}}),w=x.data?.items??[],S=x.data?.total??0,k=Zt(a,iT,["page","size"]);return o.jsxs(Ee,{className:X(x.isFetching&&!x.isLoading&&"opacity-80 transition-opacity duration-150 motion-reduce:transition-none"),children:[o.jsxs("div",{className:"flex min-w-0 flex-col gap-3 border-b border-[color:var(--border)] px-3 py-3 sm:flex-row sm:items-center sm:justify-between sm:px-5 sm:py-4",children:[o.jsx("h2",{className:"text-sm font-semibold",children:t("billing.history.title",{defaultValue:"Transaction history"})}),o.jsxs("div",{className:"grid min-w-0 grid-cols-1 gap-2 min-[360px]:grid-cols-[minmax(0,1fr)_auto] sm:flex sm:items-center",children:[f?o.jsxs(K,{variant:"secondary",size:"sm",className:"w-full min-[360px]:w-auto",onClick:()=>i.mutate(void 0,{onError:()=>ie.error(t("billing.portalFailed"))}),disabled:i.isPending,children:[o.jsx(Nbe,{className:"size-3.5"}),o.jsx("span",{className:"min-w-0 truncate",children:i.isPending?t("billing.openingPortal"):t("billing.history.viewInvoices",{defaultValue:"View invoices"})})]}):null,o.jsx(IEs,{range:d,onChange:p}),o.jsx(uh,{value:d,onChange:p,defaultPreset:"last30d",locale:n.language,labels:fh(t,OEs(t)),presets:["last1h","today","yesterday","last7d","last30d","thisMonth","custom","all"],className:"w-full justify-between min-[360px]:w-auto"})]})]}),o.jsxs("div",{className:"grid min-w-0 gap-3 border-b border-[color:var(--border)] px-3 py-3 sm:px-5 sm:py-4 md:grid-cols-2 lg:grid-cols-[200px_200px_1fr_auto]",children:[o.jsx(Ze,{label:t("billing.transactionType"),value:c.entryType,options:TK,onChange:T=>s({entryType:T,page:void 0})}),o.jsx(Ze,{label:t("billing.source"),value:c.sourceType,options:RK,onChange:T=>s({sourceType:T,page:void 0})}),o.jsxs("label",{className:"grid gap-1.5 text-sm font-medium",children:[t("billing.history.idSearch",{defaultValue:"Transaction ID"}),o.jsx(ge,{value:c.idSearch,onChange:T=>s({idSearch:T.target.value,page:void 0}),placeholder:"led_...","aria-label":t("billing.history.idSearch",{defaultValue:"Transaction ID"})})]}),o.jsxs("div",{className:"grid gap-1.5 text-sm font-medium",children:[t("billing.history.amountRange",{defaultValue:"Amount range (USD)"}),o.jsxs("div",{className:"grid min-w-0 grid-cols-[minmax(0,1fr)_auto_minmax(0,1fr)] items-center gap-1.5 sm:flex",children:[o.jsx(ge,{value:c.amountMin,inputMode:"decimal",onChange:T=>s({amountMin:T.target.value,page:void 0}),placeholder:t("billing.history.min",{defaultValue:"Min"}),"aria-label":t("billing.history.min",{defaultValue:"Min"}),className:"min-w-0 sm:w-24"}),o.jsx("span",{className:"text-[color:var(--muted-foreground)]",children:"–"}),o.jsx(ge,{value:c.amountMax,inputMode:"decimal",onChange:T=>s({amountMax:T.target.value,page:void 0}),placeholder:t("billing.history.max",{defaultValue:"Max"}),"aria-label":t("billing.history.max",{defaultValue:"Max"}),className:"min-w-0 sm:w-24"}),o.jsx(nn,{show:k,onReset:()=>r(iT),labelKey:"common.reset",className:"col-span-3 w-full justify-self-end min-[360px]:w-auto sm:col-span-1"})]})]})]}),x.isLoading?o.jsx("div",{className:"space-y-2 p-5",children:Array.from({length:4}).map((T,R)=>o.jsx(Rt,{className:"h-10 w-full"},R))}):x.error?o.jsxs("div",{className:"p-5",children:[o.jsx(Qt,{title:t("billing.summaryFailed"),description:x.error.message}),o.jsx(K,{variant:"secondary",size:"sm",className:"mt-3",onClick:()=>x.refetch(),children:t("billing.history.retry",{defaultValue:"Retry"})})]}):w.length===0?o.jsx("div",{className:"p-6",children:k?o.jsx(Ot,{title:t("billing.history.emptyFiltered",{defaultValue:"No transactions match these filters"}),description:t("billing.history.emptyFilteredDesc",{defaultValue:"Try clearing filters or widening the date range."}),action:o.jsx(K,{variant:"secondary",size:"sm",onClick:()=>r(iT),children:t("billing.history.clearFilters",{defaultValue:"Clear filters"})})}):o.jsx(Ot,{icon:o.jsx(N9,{className:"size-4"}),title:t("billing.history.emptyNew",{defaultValue:"No transactions yet"}),description:t("billing.history.emptyNewDesc",{defaultValue:"Once you top up, your top-ups, bonuses and refunds will appear here."}),action:e?o.jsx(K,{size:"sm",onClick:e,children:t("billing.history.topUpCta",{defaultValue:"Top up"})}):void 0})}):o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"hidden md:block",children:o.jsxs(Ua,{"aria-label":t("billing.ledgerEntries"),children:[o.jsx(Po,{children:o.jsxs(qt,{children:[o.jsx(Ie,{sticky:"left",children:t("billing.history.date",{defaultValue:"Date"})}),o.jsx(Ie,{className:"text-right",children:t("billing.amount")}),o.jsx(Ie,{children:t("billing.history.typeMethod",{defaultValue:"Type / method"})}),o.jsx(Ie,{children:t("billing.history.description",{defaultValue:"Description"})}),o.jsx(Ie,{className:"text-right",children:t("billing.balance")}),IZ]})}),o.jsx(Ba,{children:w.map(T=>o.jsx(EEs,{entry:T},T.publicId))})]})}),o.jsx("div",{className:"grid gap-2 p-2 sm:p-3 md:hidden",children:w.map(T=>o.jsx(MEs,{entry:T},T.publicId))}),o.jsx(V0,{total:S,page:c.page,pageSize:c.size,onPageChange:T=>s({page:T===1?void 0:String(T)},{replace:!1}),onPageSizeChange:T=>s({size:T===20?void 0:String(T),page:void 0})})]})]})}function MEs({entry:e}){const{t}=W(),n=Te();return o.jsxs(jh,{className:"p-2",children:[o.jsx(Nh,{title:o.jsx("span",{className:X("tabular-nums",LZ(e.entryType)),children:n.currency(Number(e.amount),"USD",4)}),meta:n.dateTime(e.createdAt),trailing:o.jsx(Oe,{value:e.entryType})}),o.jsxs(K$,{className:"grid-cols-1 min-[360px]:grid-cols-2",children:[o.jsx(nr,{label:t("billing.history.typeMethod",{defaultValue:"Type / method"}),children:o.jsx("span",{className:"block min-h-5",children:o.jsx(OZ,{method:e.paymentMethod})})}),o.jsx(nr,{label:t("billing.history.description",{defaultValue:"Description"}),align:"left",children:o.jsx("span",{className:"break-words text-[color:var(--muted-foreground)]",children:OP(e,t)})}),o.jsx(nr,{label:t("billing.balance"),align:"left",children:n.currency(Number(e.balanceAfter),"USD",4)})]})]})}function EEs({entry:e}){const{t}=W(),n=Te();Re(),nEs();const[a,s]=h.useState(!1);e.paymentTransactionPublicId;const r=Number(e.paidAmount??0),i=Number(e.alreadyRefunded??0),c=Math.max(0,r-i);e.paymentStatus==="refunded"||c<=0;const[d,m]=h.useState(c.toFixed(2));return o.jsxs(qt,{className:"group/row",children:[o.jsx(Me,{sticky:"left",className:"whitespace-nowrap",children:n.dateTime(e.createdAt)}),o.jsx(Me,{className:X("text-right tabular-nums",LZ(e.entryType)),children:n.currency(Number(e.amount),"USD",4)}),o.jsx(Me,{children:o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(Oe,{value:e.entryType}),o.jsx(OZ,{method:e.paymentMethod})]})}),o.jsx(Me,{className:"max-w-[280px] truncate text-[color:var(--muted-foreground)]",title:OP(e,t),children:OP(e,t)}),o.jsx(Me,{className:"text-right tabular-nums",children:n.currency(Number(e.balanceAfter),"USD",4)}),IZ]})}
962function IEs({range:e,onChange:t}){const{t:n}=W(),a=Te(),s=e.from?new Date(e.from):new Date,r=new Intl.DateTimeFormat(a.locale,{year:"numeric",month:"long"}).format(s),i=d=>{const m=new Date(s.getFullYear(),s.getMonth()+d,1),f=new Date(s.getFullYear(),s.getMonth()+d+1,0,23,59,59,999);t({preset:"custom",from:m.toISOString(),to:f.toISOString()})},c=s.getFullYear()===new Date().getFullYear()&&s.getMonth()===new Date().getMonth();return o.jsxs("div",{className:"hidden items-center gap-1 sm:flex",children:[o.jsx(K,{variant:"ghost",size:"icon","aria-label":n("billing.history.prevMonth",{defaultValue:"Previous month"}),onClick:()=>i(-1),children:o.jsx(v9,{className:"size-4"})}),o.jsx("span",{className:"min-w-[7rem] text-center text-sm tabular-nums",children:r}),o.jsx(K,{variant:"ghost",size:"icon","aria-label":n("billing.history.nextMonth",{defaultValue:"Next month"}),disabled:c,onClick:()=>i(1),children:o.jsx(gR,{className:"size-4"})})]})}function OEs(e){return{last1h:e("dateRange.last1h",{defaultValue:"Last 1 hour"}),today:e("dateRange.today",{defaultValue:"Today"}),yesterday:e("dateRange.yesterday",{defaultValue:"Yesterday"}),last7d:e("dateRange.last7d",{defaultValue:"Last 7 days"}),last30d:e("dateRange.last30d",{defaultValue:"Last 30 days"}),thisMonth:e("dateRange.thisMonth",{defaultValue:"This month"}),byMonth:e("dateRange.byMonth",{defaultValue:"By month"}),custom:e("dateRange.custom",{defaultValue:"Custom"}),all:e("dateRange.all",{defaultValue:"All time"})}}function LEs(){const e=kEs(),[t,n]=h.useState("");return h.useEffect(()=>{if(!e.data)return;const a=new Date(e.data.endsAt).getTime(),s=()=>{const i=a-Date.now();if(i<=0){n("");return}const c=Math.floor(i/864e5),d=Math.floor(i%864e5/36e5),m=Math.floor(i%36e5/6e4);n(c>0?`${c}d ${d}h`:`${d}h ${m}m`)};s();const r=setInterval(s,6e4);return()=>clearInterval(r)},[e.data]),!e.data||!t?null:o.jsxs(Ee,{className:"flex items-center gap-3 border-[color:var(--primary)]/30 bg-[color:var(--primary)]/5 p-4",children:[o.jsx(j9,{className:"size-5 shrink-0 text-[color:var(--primary)]"}),o.jsxs("div",{className:"min-w-0 flex-1",children:[o.jsx("p",{className:"text-sm font-medium",children:e.data.title}),e.data.subtitle?o.jsx("p",{className:"text-xs text-[color:var(--muted-foreground)]",children:e.data.subtitle}):null]}),o.jsx("span",{className:"shrink-0 rounded-md bg-[color:var(--primary)]/10 px-2.5 py-1 text-sm font-semibold tabular-nums text-[color:var(--primary)]",children:t})]})}const UEs=["10","25","50","100"],BEs={COUPON_BELOW_MIN_PAYABLE:"billing.topup.couponBelowMin",PROMOTION_LIMIT_REACHED:"billing.topup.couponErrors.limitReached",COUPON_INVALID:"billing.topup.couponErrors.invalid",COUPON_EXPIRED:"billing.topup.couponErrors.expired",COUPON_EXHAUSTED:"billing.topup.couponErrors.exhausted",COUPON_UNAVAILABLE:"billing.topup.couponErrors.unavailable"};function N6(e,t){const n=BEs[e.code??""];return n?t(n):e.message}function FEs({open:e,onOpenChange:t}){const{t:n}=W(),a=Te(),[s,r]=h.useState("10"),[i,c]=h.useState(""),d=JMs(),m=eEs(),f=H0(),p=f.data?.paymentsDisabled??!1,y=f.data?.paymentProvider,v=f.data?.providerDisplayName,$=v?n("billing.topup.payOnProvider",{defaultValue:"Payment is completed on the secure {{provider}} checkout page.",provider:v}):n("billing.topup.payOnHostedCheckout",{defaultValue:"Payment is completed on the secure hosted checkout page."}),x=f.data?.taxExclusivePricing??!1,w=f.data?.paymentMethods??["card"],S=["alipay","wechat_pay"].filter(G=>w.includes(G)),k=w.includes("crypto"),T=d.isPending?d.variables?.paymentMethod??"card":null,R=Number(s),_=Number.isFinite(R)&&R>=QI&&R<=foe,P=m.data&&m.data.ok?m.data:null,j=P?.effect==="bonus_percent",N=P&&!j?Number(P.discountUsd):0,I=j?Number(P?.bonusUsd??0):0,z=_?R:0,E=P?.payableUsd??s,L=P?Number(P.payableUsd):z,O=f.data?.maxAmountDecimals??null,V=O!==null&&_&&!zEs(E,O),ne=h.useDeferredValue(s),q=tEs(ne,e&&_&&!j),M=!j&&q.data?q.data:null,F=Number(M?.bonusUsd??0),H=ne!==s,ee=()=>{(m.data||m.error)&&m.reset()},B=G=>d.mutate({amountUsd:s,couponCode:P?i.trim():null,paymentMethod:G});return o.jsx(Up,{open:e,onOpenChange:t,children:o.jsxs(fu,{className:"max-w-md",children:[o.jsxs(Xh,{children:[o.jsx(gu,{children:n("billing.to
962pup.title",{defaultValue:"Top up credit"})}),o.jsxs(hu,{className:"flex items-center gap-1",children:[y==="stripe"?o.jsx(Ace,{size:14}):o.jsx(yR,{className:"size-3.5"}),v?n("billing.topup.poweredBy",{defaultValue:"Secured by {{provider}}",provider:v}):n("billing.topup.secureCheckout",{defaultValue:"Secure hosted checkout"})]})]}),o.jsxs("div",{className:"space-y-4",children:[p?o.jsx(Qt,{title:n("billing.topup.maintenanceTitle",{defaultValue:"Payments temporarily unavailable"}),description:n("billing.topup.maintenanceDescription",{defaultValue:"Payments are temporarily unavailable. Contact us on Telegram if you need to pay."}),action:o.jsx("a",{href:Mg.telegram,target:"_blank",rel:"noreferrer",className:"text-sm font-medium underline",children:n("billing.topup.contactTelegram",{defaultValue:"Contact us on Telegram"})})}):null,o.jsxs("label",{className:"grid gap-1.5 text-sm font-medium",children:[n("billing.topup.amountUsd",{defaultValue:"Amount (USD)"}),o.jsx(ge,{value:s,inputMode:"decimal",onChange:G=>{r(G.target.value),ee()}})]}),o.jsx("div",{className:"flex flex-wrap gap-2","aria-label":n("billing.topup.presets",{defaultValue:"Preset amounts"}),children:UEs.map(G=>o.jsx(K,{type:"button",size:"sm",variant:s===G?"secondary":"outline","aria-pressed":s===G,className:"tabular-nums",onClick:()=>{r(G),ee()},children:a.currency(Number(G))},G))}),o.jsx("p",{className:"text-xs text-[color:var(--muted-foreground)]",children:n("billing.topup.minAmountHint",{defaultValue:"Minimum top-up is {{amount}}.",amount:a.currency(QI)})}),o.jsxs("label",{className:"grid gap-1.5 text-sm font-medium",children:[n("billing.topup.promoCode",{defaultValue:"Promotion code"}),o.jsxs("div",{className:"flex gap-2",children:[o.jsx(ge,{value:i,onChange:G=>{c(G.target.value.toUpperCase()),ee()},placeholder:n("billing.topup.promoCodePlaceholder",{defaultValue:"Enter code"}),"aria-label":n("billing.topup.promoCode",{defaultValue:"Promotion code"})}),o.jsx(K,{variant:"secondary",onClick:()=>m.mutate({amountUsd:s,couponCode:i.trim()}),disabled:m.isPending||!i.trim()||!_,children:m.isPending?n("billing.topup.previewing",{defaultValue:"Checking…"}):n("billing.topup.apply",{defaultValue:"Apply"})})]})]}),m.data&&!m.data.ok?o.jsx("p",{className:"text-sm text-[color:var(--destructive)]",children:m.data.effect==="bonus_percent"?n("billing.topup.couponInvalid",{defaultValue:"This code cannot be applied — try another code."}):n("billing.topup.couponBelowMin",{defaultValue:"Discounted total is too low — raise the amount or try another code."})}):null,m.error?o.jsx("p",{className:"text-sm text-[color:var(--destructive)]",children:N6(m.error,n)}):null,V?o.jsx("p",{className:"text-sm text-[color:var(--destructive)]",children:n("billing.topup.amountPrecision",{defaultValue:"{{provider}} accepts USD amounts with no more than 2 decimal places. Adjust the amount or promotion code.",provider:v??n("billing.topup.secureCheckoutShort",{defaultValue:"Secure checkout"})})}):null,o.jsxs("dl",{className:"grid gap-1.5 rounded-md bg-[color:var(--muted)] p-3 text-sm",children:[o.jsx("p",{className:"text-xs font-medium uppercase tracking-wider text-[color:var(--muted-foreground)]",children:n("billing.topup.pay",{defaultValue:"Pay"})}),o.jsx(bd,{label:n("billing.topup.topupAmount",{defaultValue:"Top-up amount"}),value:a.currency(z)}),P&&!j?o.jsx(bd,{label:n("billing.topup.discount",{defaultValue:"Coupon discount"}),value:`-${a.currency(N)}`}):null,o.jsx(bd,{label:n("billing.topup.serviceFee",{defaultValue:"Service fee"}),value:a.currency(0)}),o.jsx(bd,{label:n("billing.topup.totalDue",{defaultValue:"Total due"}),value:a.currency(L),emphasize:!0}),o.jsx("p",{className:"mt-2 text-xs font-medium uppercase tracking-wider text-[color:var(--muted-foreground)]",children:n("billing.topup.get",{defaultValue:"Get"})}),o.jsx(bd,{label:n("billing.topup.onehopCredits",{defaultValue:"OneHop credits"}),value:a.currency(z)}),j&&I>0?o.jsx(bd,{label:n("billing.topup.couponBonus",{defaultValue:"Coupon bonus"}),value:`+${a.currency(I)}`,tone:"positive"}):null,j&&I>0&&P?.bonusExpiryDays?o.jsx("p",{className:"text-xs text-[color:var(--muted-foreground)]",children:n("billing.to
962pup.couponBonusExpiry",{defaultValue:"Bonus credits expire {{days}} days after payment.",days:P.bonusExpiryDays})}):null,M&&!H?o.jsxs(o.Fragment,{children:[F>0?o.jsx(bd,{label:n("billing.topup.tierBonus",{defaultValue:"Promotion bonus"}),value:`+${a.currency(F)}`,tone:"positive"}):null,F>0&&M.expiryDays?o.jsx("p",{className:"text-xs text-[color:var(--muted-foreground)]",children:n("billing.topup.tierBonusExpiry",{defaultValue:"Bonus credits expire {{days}} days after payment.",days:M.expiryDays})}):null,F>0&&M.restrictedModels?.length?o.jsx("p",{className:"text-xs text-[color:var(--muted-foreground)]",children:n("billing.topup.tierBonusRestricted",{defaultValue:"Bonus credits can only be spent on: {{models}}.",models:M.restrictedModels.join(", ")})}):null,M.nextTier?o.jsx("p",{className:"text-xs font-medium text-[color:var(--success)]",children:M.nextTier.percent!=null?n("billing.topup.nextTierPercent",{defaultValue:"Top up {{amount}} more to earn {{percent}}% in bonus credits.",amount:a.currency(Math.max(0,M.nextTier.minUsd-R)),percent:M.nextTier.percent}):n("billing.topup.nextTierBonus",{defaultValue:"Top up {{amount}} more to earn {{bonus}} in bonus credits.",amount:a.currency(Math.max(0,M.nextTier.minUsd-R)),bonus:a.currency(M.nextTier.bonus??0)})}):null,M.cappedByLimit?o.jsx("p",{className:"text-xs text-[color:var(--muted-foreground)]",children:n("billing.topup.tierCapReached",{defaultValue:"You've already earned the maximum bonus for this promotion."})}):null]}):null]}),d.error?o.jsx(Qt,{title:n("billing.topupFailed"),description:N6(d.error,n),action:d.error?.code==="PAYMENTS_MAINTENANCE"?o.jsx("a",{href:Mg.telegram,target:"_blank",rel:"noreferrer",className:"text-sm font-medium underline",children:n("billing.topup.contactTelegram",{defaultValue:"Contact us on Telegram"})}):void 0}):null,o.jsxs(K,{className:"w-full",disabled:!_||V||d.isPending||p,onClick:()=>B("card"),children:[o.jsx(Lw,{className:"size-4"}),T==="card"?n("billing.creating"):n("billing.topup.payCta",{defaultValue:"Pay {{amount}}",amount:a.currency(L)}),o.jsx("span",{className:"ml-1 flex items-center gap-1.5 opacity-60",children:y==="stripe"?o.jsxs(o.Fragment,{children:[o.jsx(kg,{brand:"visa",size:22}),o.jsx(kg,{brand:"mastercard",size:17}),o.jsx(kg,{brand:"unionpay",size:17})]}):o.jsxs("span",{className:"inline-flex items-center gap-1 text-xs font-medium",children:[o.jsx(yR,{className:"size-3.5"}),v??n("billing.topup.secureCheckoutShort",{defaultValue:"Secure checkout"})]})})]}),k?o.jsxs(K,{variant:"outline",className:"w-full",disabled:!_||V||d.isPending||p,onClick:()=>B("crypto"),children:[o.jsx($9,{className:"size-4"}),T==="crypto"?n("billing.creating"):n("billing.topup.crypto",{defaultValue:"Pay with crypto (USDC / USDT)"})]}):null,S.length>0?o.jsx("div",{className:X("grid gap-2",S.length>1&&"grid-cols-2"),children:S.map(G=>o.jsxs(K,{variant:"outline",disabled:!_||V||d.isPending||p,onClick:()=>B(G),children:[o.jsx(kg,{brand:G==="alipay"?"alipay":"wechat-pay",size:16}),T===G?n("billing.creating"):G==="alipay"?n("billing.topup.alipay",{defaultValue:"Alipay"}):n("billing.topup.wechatPay",{defaultValue:"WeChat Pay"})]},G))}):null,o.jsx("p",{className:"text-center text-xs text-[color:var(--muted-foreground)]",children:x?`${n("billing.topup.taxExclusiveNotice",{defaultValue:"Applicable taxes are calculated at checkout and added to this amount."})} ${$}`:$})]})]})})}function bd({label:e,value:t,emphasize:n,tone:a}){return o.jsxs("div",{className:X("flex justify-between gap-3",n&&"border-t border-[color:var(--border)] pt-1.5 font-medium"),children:[o.jsx("dt",{className:n?"":"text-[color:var(--muted-foreground)]",children:e}),o.jsx("dd",{className:X("tabular-nums",a==="positive"&&"font-medium text-[color:var(--success)]"),children:t})]})}function zEs(e,t){const n=e.trim();return/^\d+(?:\.\d+)?$/.test(n)?(n.split(".")[1]?.replace(/0+$/,"")??"").length<=t:!1}function qEs(){const{t:e}=W(),t=Te(),[n,a]=s_(),s=n.get("topup"),r=s==="success"||s==="failed"||s==="cancelled"?s:null,[i,c]=h.useState(r!==null),[d,m]=h.useState(r==="success"),f=h.useRef(r==="success"?Date.now():0);h.useEffect(()=>{if(!d)return;const ne=setInterval(()=>{Date.now()-f.current>25e3&&m(!1)},1e3);return()=>clearInterval(ne)},[d]);const p=()=>{c(!1);const ne=new URLSearchParams(n);ne.delete("topup"),a(ne,{replace:!0})},[y,v]=h.useState(!1),$=H0({pollEnabled:d,pollIntervalMs:5e3}),x=BK(30),w=MZ({kinds:"funding",limit:"100"}),S=OK(),k=$.data?.wallet,T=gN(),R=Number(k?.availableCredit??0),_=REs(x.data?.byDate??[]),P=FV(R,_),j=AEs(w.data?.items??[],Number(S.data?.totalBilledCredit??0)),N=T.data?.alertThreshold?Number(T.data.alertThreshold):null,z=!$.isPending&&!T.isPending&&(N!=null&&Number.isFinite(N)?R<N:R<=0),E=[];P.daysRemaining!=null&&E.push(e("billing.burnRate.daysLeft",{defaultValue:"≈ {{days}} days left at current rate",days:Math.floor(P.daysRemaining)})),P.avgDailyUsd>0&&E.push(e("billing.burnRate.perDay",{defaultValue:"{{amount}} avg/day",amount:t.currency(P.avgDailyUsd,"USD",4)}));const L=E.length?E.join(" · "):e("billing.burnRate.noUsage",{defaultValue:"No usage in the last 30 days"}),O=ne=>ne>0?`+${t.currency(ne)}`:t.currency(ne),V=ne=>ne>0?"text-[color:var(--success)]":"text-[color:var(--muted-foreground)]";return o.jsxs(Vt,{title:e("billing.title"),description:e("billing.description"),children:[o.jsx(LEs,{}),i?o.jsx(HEs,{kind:r??"cancelled",polling:d,onDismiss:p,t:e}):null,o.jsxs(Ee,{className:"min-w-0 p-3 sm:p-6","data-tour":"balance",children:[z?o.jsxs("div",{className:"mb-4 flex min-w-0 items-start gap-2 rounded-md border border-[color:var(--warning-border)] bg-[color:var(--warning-surface)] px-3 py-2 text-sm sm:mb-5 sm:items-center",children:[o.jsx(dj,{className:"size-4 shrink-0 text-[color:var(--warning)]"}),o.jsx("span",{className:"min-w-0 break-words",children:$.data?.supportsSavedPaymentMethods===!1?e("billing.lowBalanceWarningNoAutoTopup",{defaultValue:"Your balance is low and may interrupt requests. Top up to continue."}):e("billing.lowBalanceWarning",{defaultValue:"Your balance is low and may interrupt requests. Top up or enable auto top-up."})})]}):null,o.jsxs("div",{className:"flex flex-col gap-4 sm:flex-row sm:items-start sm:justify-between",children:[o.jsxs("div",{className:"min-w-0",children:[o.jsx("p",{className:"text-xs font-medium text-[color:var(--muted-foreground)] sm:text-sm",children:e("billing.availableCredit")}),o.jsx("p",{"data-clarity-mask":"true",className:X("mt-1 break-all text-2xl font-semibold tabular-nums sm:text-5xl",z&&"text-[color:var(--warning)]"),children:o.jsx(Ho,{value:R,format:ne=>t.currency(ne)})}),o.jsx("p",{className:"mt-1.5 text-xs text-[color:var(--muted-foreground)] tabular-nums sm:mt-2 sm:text-sm",children:L})]}),o.jsxs(K,{size:"lg",className:"h-10 w-full sm:h-11 sm:w-auto",onClick:()=>v(!0),children:[o.jsx(wr,{className:"size-4"}
962),e("billing.topup.title",{defaultValue:"Top up"})]})]}),o.jsxs("dl",{className:"mt-4 grid grid-cols-1 gap-x-3 gap-y-2 border-t border-[color:var(--border)] pt-3 text-xs min-[360px]:grid-cols-3 sm:mt-5 sm:flex sm:gap-0 sm:divide-x sm:divide-[color:var(--border)] sm:pt-4 sm:text-sm",children:[o.jsx(lT,{label:e("billing.breakdown.topups",{defaultValue:"Top-ups"}),value:O(j.topups),className:V(j.topups)}),o.jsx(lT,{label:e("billing.breakdown.bonuses",{defaultValue:"Bonuses"}),value:O(j.bonuses),className:V(j.bonuses)}),o.jsx(lT,{label:e("billing.breakdown.usage",{defaultValue:"Usage"}),value:t.currency(j.usage),className:"text-[color:var(--muted-foreground)]"})]}),$.error?o.jsx(Qt,{className:"mt-4",title:e("billing.summaryFailed"),description:$.error.message}):null]}),o.jsx(uEs,{credits:k?.earmarkedCredits}),o.jsx(fEs,{}),o.jsx(wEs,{}),o.jsx(lEs,{}),o.jsx(PEs,{}),o.jsx(DEs,{onTopUp:()=>v(!0)}),o.jsx(Mce,{text:e("billing.compliance.text"),tosHref:"/terms",tosLabel:e("billing.compliance.tosLink")}),o.jsx(FEs,{open:y,onOpenChange:v})]})}function lT({label:e,value:t,className:n}){return o.jsxs("div",{className:"min-w-0 sm:flex-1 sm:px-5 sm:first:pl-0 sm:last:pr-0",children:[o.jsx("dt",{className:"break-words text-2xs font-semibold uppercase text-[color:var(--muted-foreground)] sm:text-xs",children:e}),o.jsx("dd",{className:X("mt-1 break-words text-sm font-medium tabular-nums",n),children:t})]})}function HEs({kind:e,polling:t,onDismiss:n,t:a}){return e==="failed"?o.jsxs(Hm,{variant:"destructive",role:"status",className:"mb-4 flex items-start gap-3 text-sm [&>svg]:static [&>svg]:size-5 [&>svg~*]:pl-0",children:[o.jsx(P3,{className:"mt-0.5 size-5 shrink-0"}),o.jsxs("div",{className:"flex-1",children:[o.jsx("p",{className:"font-medium",children:a("billing.topupBanner.failedTitle")}),o.jsx("p",{className:"mt-1 text-[color:var(--muted-foreground)]",children:a("billing.topupBanner.failedBody")})]}),o.jsx(Aa,{variant:"ghost",size:"sm",onClick:n,"aria-label":a("common.dismiss"),children:"✕"})]}):e==="cancelled"?o.jsxs(Hm,{role:"status",className:"mb-4 flex items-start gap-3 text-sm [&>svg]:static [&>svg]:size-5 [&>svg~*]:pl-0",children:[o.jsx(P3,{className:"mt-0.5 size-5 shrink-0 text-[color:var(--muted-foreground)]"}),o.jsxs("div",{className:"flex-1",children:[o.jsx("p",{className:"font-medium",children:a("billing.topupBanner.cancelledTitle")}),o.jsx("p",{className:"mt-1 text-[color:var(--muted-foreground)]",children:a("billing.topupBanner.cancelledBody")})]}),o.jsx(Aa,{variant:"ghost",size:"sm",onClick:n,"aria-label":a("common.dismiss"),children:"✕"})]}):o.jsxs(Hm,{variant:"success",role:"status","aria-live":"polite",className:"mb-4 flex items-start gap-3 text-sm text-[color:var(--foreground)] [&>svg]:static [&>svg]:size-5 [&>svg~*]:pl-0",children:[o.jsx(bve,{className:"mt-0.5 size-5 shrink-0 text-[color:var(--success)]"}),o.jsxs("div",{className:"flex-1",children:[o.jsx("p",{className:"font-medium",children:a("billing.topupBanner.successTitle")}),o.jsx("p",{className:"mt-1 text-[color:var(--muted-foreground)]",children:a(t?"billing.topupBanner.polling":"billing.topupBanner.delayed")})]}),o.jsx(Aa,{variant:"ghost",size:"sm",onClick:n,"aria-label":a("common.dismiss"),children:"✕"})]})}function D6(e){return`${e.title}
963${e.body}
964${e.inviteUrl}`.trim()}function VEs(e,t){const n=`${t.title}
965${t.body}`.trim();switch(e){case"x":return`https://twitter.com/intent/tweet?${new URLSearchParams({text:n,url:t.inviteUrl})}`;case"telegram":return`https://t.me/share/url?${new URLSearchParams({url:t.inviteUrl,text:n})}`;case"reddit":return`https://www.reddit.com/submit?${new URLSearchParams({url:t.inviteUrl,title:t.title})}`;case"linkedin":return`https://www.linkedin.com/sharing/share-offsite/?${new URLSearchParams({url:t.inviteUrl})}`;case"whatsapp":return`https://wa.me/?${new URLSearchParams({text:`${n}
966${t.inviteUrl}`.trim()})}`;case"facebook":return`https://www.facebook.com/sharer/sharer.php?${new URLSearchParams({u:t.inviteUrl})}`;case"email":return`mailto:?subject=${encodeURIComponent(t.title)}&body=${encodeURIComponent(`${t.body}
967
968${t.inviteUrl}`)}`}}function KEs(e){const t=Array.isArray(e.rewardTiers)?e.rewardTiers:[],n=t.filter(d=>d.from_day===0).map(d=>d.percent),a=n.length?Math.max(...n):t.length?Math.max(...t.map(d=>d.percent)):0,r=[...t].sort((d,m)=>d.from_day-m.from_day)[0]?.until_day??0,i=t.map(d=>d.until_day).filter(d=>d!=null),c=i.length?Math.max(...i):0;return{percent:a,firstWindowDays:r,totalWindowDays:c,capUsd:e.perTopupCapUsd??null,expiryDays:e.bonusExpiryDays??null}}function M6(e){return e==="referrer"?0:1}function UZ(e){return e>0?e+1:e}const BZ={dayRange:(e,t)=>
968`days ${e}-${t}`,dayOpenEnded:e=>`day ${e}+`};function E6(e,t,n=BZ,a=" · "){return[...e.rewardTiers].filter(s=>s.recipient_role===t).sort((s,r)=>s.from_day-r.from_day).map(s=>{const r=UZ(s.from_day);return`${s.until_day==null?n.dayOpenEnded(r):n.dayRange(r,s.until_day)} ${s.percent}%`}).join(a)}function GEs(e,t,n=BZ){return[...e.rewardTiers].sort((s,r)=>s.from_day!==r.from_day?s.from_day-r.from_day:(s.until_day??Number.POSITIVE_INFINITY)!==(r.until_day??Number.POSITIVE_INFINITY)?(s.until_day??Number.POSITIVE_INFINITY)-(r.until_day??Number.POSITIVE_INFINITY):M6(s.recipient_role)-M6(r.recipient_role)).map(s=>{const r=UZ(s.from_day);return`${s.until_day==null?n.dayOpenEnded(r):n.dayRange(r,s.until_day)}: ${t[s.recipient_role]} ${s.percent}%`}).join(" · ")}const WEs=[{channel:"x",labelKey:"referrals.x",defaultLabel:"X"},{channel:"telegram",labelKey:"referrals.telegram",defaultLabel:"Telegram"},{channel:"reddit",labelKey:"referrals.reddit",defaultLabel:"Reddit"},{channel:"linkedin",labelKey:"referrals.linkedin",defaultLabel:"LinkedIn"},{channel:"whatsapp",labelKey:"referrals.whatsapp",defaultLabel:"WhatsApp"},{channel:"email",labelKey:"referrals.email",defaultLabel:"Email"},{channel:"facebook",labelKey:"referrals.facebook",defaultLabel:"Facebook"},{channel:"wechat",labelKey:"referrals.wechat",defaultLabel:"WeChat"}];function YEs(e){return e==="email"?o.jsx(lj,{className:"size-4"}):o.jsx(Xb,{brand:e,size:16})}function QEs(){const{t:e}=W(),t=Te(),n=EZ(),a=CEs(),s=`https://${BT}`,r=n.data?`${s}/invite/${n.data.referralCode}`:"",i={referrer:e("referrals.role.referrer",{defaultValue:"Inviter"}),referee:e("referrals.role.referee",{defaultValue:"Invitee"})},c={dayRange:(x,w)=>e("referrals.policy.dayRange",{defaultValue:"days {{fromDay}}-{{untilDay}}",fromDay:x,untilDay:w}),dayOpenEnded:x=>e("referrals.policy.dayOpenEnded",{defaultValue:"day {{fromDay}}+",fromDay:x})},d=n.data?GEs(n.data.policy,i,c):"",m=n.data?E6(n.data.policy,"referrer",c):"",f=n.data?E6(n.data.policy,"referee",c):"",p=n.data?KEs(n.data.policy):{percent:0,firstWindowDays:0,totalWindowDays:0,capUsd:null,expiryDays:null},y={percent:p.percent,firstWindowDays:p.firstWindowDays,totalWindowDays:p.totalWindowDays,capUsd:p.capUsd??0,expiryDays:p.expiryDays??0,tiers:d},v=x=>({inviteUrl:r,title:e(["referrals.share."+x+".title","referrals.share.default.title"],{...y,defaultValue:"Build with every AI model through one OneHop API"}),body:e(["referrals.share."+x+".body","referrals.share.default.body"],{...y,defaultValue:"Use my invite link — after your first top-up, referral credits are tracked automatically."})}),$=async x=>{if(!r)return;const w=v(x);try{await navigator.clipboard.writeText(D6(w))}catch{}if(x==="copy")return;if(x==="wechat"){ie.success(e("referrals.wechatCopied",{defaultValue:"Invite copied. Paste it into WeChat to share."}));return}const S=VEs(x,w);x==="email"?window.location.href=S:window.open(S,"_blank","noopener,noreferrer")};return o.jsx(Vt,{title:e("referrals.title",{defaultValue:"Invite & Earn"}),description:e("referrals.description",{defaultValue:"Share your link. When someone you invite tops up, you earn cashback credit."}),children:n.isError?o.jsx(Qt,{title:e("referrals.error",{defaultValue:"Could not load your referrals"}),action:o.jsx(K,{variant:"outline",onClick:()=>n.refetch(),children:e("common.retry",{defaultValue:"Retry"})})}):o.jsxs("div",{className:"flex flex-col gap-4 sm:gap-6",children:[o.jsxs(Ee,{className:"flex min-w-0 flex-col gap-4 p-3 sm:p-5",children:[o.jsxs("div",{className:"flex flex-col gap-2",children:[o.jsx("span",{className:"text-sm text-muted-foreground",children:e("referrals.yourLink",{defaultValue:"Your invite link"})}),o.jsxs("div",{className:"grid min-w-0 gap-2 sm:flex sm:items-center",children:[o.jsxs("div",{className:"min-w-0 flex-1",children:[o.jsx(xj,{value:r||"—",copyValue:r?D6(v("copy")):"",mono:!0,className:"min-w-0 pr-10 text-xs"}),r?o.jsx("p",{className:"mt-1.5 max-h-16 overflow-y-auto break-all rounded-md border border-[color:var(--border)] bg-[color:var(--muted)]/35 px-2.5 py-2 font-[family-name:var(--font-mono)] text-xs leading-relaxed text-[color:var(--muted-foreground)] sm:hidden",children:r}):null]}),o.jsxs(zp,{modal:!1,children:[o.jsx(qp,{asChild:!0,children:o.jsxs(K,{variant:"outline",disabled:!r,className:"w-full justify-center sm:w-auto 
968sm:shrink-0",children:[o.jsx(Gbe,{className:"size-4"}),e("referrals.shareVia",{defaultValue:"Share"}),o.jsx(zc,{className:"size-3.5 opacity-60"})]})}),o.jsx(xu,{align:"end",collisionPadding:8,className:"max-h-[min(22rem,calc(100dvh-1rem))] w-[var(--radix-dropdown-menu-trigger-width)] min-w-44 max-w-[calc(100vw-1rem)] overflow-y-auto",children:WEs.map(({channel:x,labelKey:w,defaultLabel:S})=>o.jsxs(La,{onSelect:()=>$(x),className:"min-w-0 gap-2",children:[YEs(x),o.jsx("span",{className:"min-w-0 truncate",children:e(w,{defaultValue:S})})]},x))})]})]}),o.jsxs("div",{className:"flex flex-col gap-1.5 text-sm text-muted-foreground",children:[o.jsxs("p",{children:[o.jsx("strong",{className:"font-medium text-foreground",children:i.referrer}),e("referrals.roleOffer.referrer",{defaultValue:": earn referral credit when someone you invite tops up — {{tiers}}.",tiers:m})]}),o.jsxs("p",{children:[o.jsx("strong",{className:"font-medium text-foreground",children:i.referee}),e("referrals.roleOffer.referee",{defaultValue:": sign up with the link, then top up to earn too — {{tiers}}.",tiers:f})]})]}),o.jsxs("p",{className:"text-sm text-muted-foreground",children:[e("referrals.offer",{defaultValue:"Rewards are visible immediately after payment, frozen during the refund window, then released as OneHop referral credit."}),n.data?` ${e("referrals.releaseDelay",{defaultValue:"Released after {{days}} days.",days:n.data.policy.releasePolicy.delay_days??30})}`:""]})]}),o.jsxs("div",{className:"grid grid-cols-1 gap-3 min-[360px]:grid-cols-2 sm:gap-4 lg:grid-cols-4",children:[o.jsx(Gl,{label:e("referrals.totalEarned",{defaultValue:"Total earned"}),value:n.data?t.currency(Number(n.data.totalEarned)):"—"}),o.jsx(Gl,{label:e("referrals.availableEarned",{defaultValue:"Available earned"}),value:n.data?t.currency(Number(n.data.availableEarned)):"—"}),o.jsx(Gl,{label:e("referrals.frozenEarned",{defaultValue:"Frozen earned"}),value:n.data?t.currency(Number(n.data.frozenEarned)):"—"}),o.jsx(Gl,{label:e("referrals.active",{defaultValue:"Active"}),value:n.data?t.number(n.data.activeCount):"—"}),o.jsx(Gl,{label:e("referrals.invited",{defaultValue:"Invited"}),value:n.data?t.number(n.data.refereeCount):"—"}),o.jsx(Gl,{label:e("referrals.availableReceived",{defaultValue:"Available received"}),value:n.data?t.currency(Number(n.data.availableReceived)):"—"}),o.jsx(Gl,{label:e("referrals.frozenReceived",{defaultValue:"Frozen received"}),value:n.data?t.currency(Number(n.data.frozenReceived)):"—"}),o.jsx(Gl,{label:e("referrals.cancelledReversed",{defaultValue:"Cancelled / reversed"}),value:n.data?`${t.currency(Number(n.data.totalCancelled))} / ${t.currency(Number(n.data.totalReversed))}`:"—"})]})]}),o.jsxs(Ee,{className:"p-3 sm:p-5",children:[o.jsx("h2",{className:"mb-3 text-sm font-medium",children:e("referrals.peopleYouInvited",{defaultValue:"People you invited"})}),n.data&&n.data.referees.length>0?o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"hidden overflow-x-auto md:block",children:o.jsxs("table",{className:"min-w-[720px] w-full text-sm",children:[o.jsx("thead",{className:"text-left text-muted-foreground",children:o.jsxs("tr",{children:[o.jsx("th",{className:"py-2 font-normal",children:e("referrals.col.user",{defaultValue:"User"})}),o.jsx("th",{className:"py-2 font-normal",children:e("referrals.col.joined",{defaultValue:"Joined"})}),o.jsx("th",{className:"py-2 font-normal",children:e("referrals.col.topups",{defaultValue:"Topups"})}),o.jsx("th",{className:"py-2 text-right font-normal",children:e("referrals.col.earned",{defaultValue:"You earned"})}),o.jsx("th",{className:"py-2 text-right font-normal",children:e("referrals.col.frozen",{defaultValue:"Frozen"})})]})}),o.jsx("tbody",{children:n.data.referees.map(x=>o.jsxs("tr",{className:"border-t border-border",children:[o.jsx("td",{className:"max-w-[260px] break-all py-2",children:x.email}),o.jsx("td",{className:"py-2 text-muted-foreground",children:t.dateTime(x.boundAt)}),o.jsx("td",{className:"py-2 tabular-nums",children:t.number(x.topups)}),o.jsx("td",{className:"py-2 text-right tabular-nums",children:t.currency(Number(x.earned))}),o.jsx("td",{className:"py-2 text-right tabular-nums",children:t.currency(Number(x.frozen))})]},x.refereePublicId))})]})}),o.jsx("div",{className:"grid gap-2 md:hidden",children:n.data.referees.map(x=>o.jsxs(jh,{className:"p-2",children:[o.jsx(Nh,{title:o.jsx("span",{className:"break-all",children:x.email}),meta:t.dateTime(x.boundAt)}),o.jsxs(K$,{className:"mt-1.5 grid-cols-1 gap-x-2 min-[360px]:grid-cols-2",children:[o.jsx(nr,{label:e("referrals.col.topups",{defaultValue:"Topups"}),children:t.number(x.topups)}),o.jsx(nr,{label:e("referrals.col.earned",{defaultValue:"You earned"}),align:"right",children:t.currency(Number(x.earned))}),o.jsx(nr,{label:e("referrals.col.frozen",{defaultValue:"Frozen"}
968),align:"right",children:t.currency(Number(x.frozen))})]})]},x.refereePublicId))})]}):o.jsx(Ot,{icon:o.jsx(uy,{className:"size-6"}),title:e("referrals.empty.title",{defaultValue:"No invites yet"}),description:e("referrals.empty.description",{defaultValue:"Share your link to start earning."})})]}),a.data&&a.data.items.length>0&&o.jsxs(Ee,{className:"p-3 sm:p-5",children:[o.jsx("h2",{className:"mb-3 text-sm font-medium",children:e("referrals.history",{defaultValue:"Cashback history"})}),o.jsx("div",{className:"hidden overflow-x-auto md:block",children:o.jsxs("table",{className:"min-w-[860px] w-full text-sm",children:[o.jsx("thead",{className:"text-left text-muted-foreground",children:o.jsxs("tr",{children:[o.jsx("th",{className:"py-2 font-normal",children:e("referrals.col.date",{defaultValue:"Date"})}),o.jsx("th",{className:"py-2 font-normal",children:e("referrals.col.event",{defaultValue:"Event"})}),o.jsx("th",{className:"py-2 font-normal",children:e("referrals.col.topupAmount",{defaultValue:"Their topup"})}),o.jsx("th",{className:"py-2 font-normal",children:e("referrals.col.rate",{defaultValue:"Rate"})}),o.jsx("th",{className:"py-2 font-normal",children:e("referrals.col.releaseAt",{defaultValue:"Release"})}),o.jsx("th",{className:"py-2 text-right font-normal",children:e("referrals.col.cashback",{defaultValue:"Cashback"})}),o.jsx("th",{className:"py-2 text-right font-normal",children:e("referrals.col.status",{defaultValue:"Status"})})]})}),o.jsx("tbody",{children:a.data.items.map(x=>o.jsxs("tr",{className:"border-t border-border",children:[o.jsx("td",{className:"py-2 text-muted-foreground",children:t.dateTime(x.createdAt)}),o.jsx("td",{className:"py-2",children:o.jsxs("div",{className:"flex flex-col",children:[o.jsx("span",{children:I6(x.eventType,x.recipientRole,e)}),x.counterpartyEmail?o.jsx("span",{className:"break-all text-xs text-muted-foreground",children:x.counterpartyEmail}):null]})}),o.jsx("td",{className:"py-2 tabular-nums",children:x.refereeTopupUsd?t.currency(Number(x.refereeTopupUsd)):"—"}),o.jsx("td",{className:"max-w-[140px] break-words py-2 tabular-nums",children:x.ratePercent?`${Number(x.ratePercent)}%${x.tierLabel?` · ${x.tierLabel}`:""}`:"—"}),o.jsx("td",{className:"py-2 text-muted-foreground",children:x.releaseAt?t.dateTime(x.releaseAt):"—"}),o.jsx("td",{className:"py-2 text-right tabular-nums",children:o.jsxs("div",{className:"flex flex-col",children:[o.jsx("span",{children:x.grantAmount?t.currency(Math.max(Number(x.grantAmount)-Number(x.cancelled)-Number(x.reversed)-Number(x.forfeited),0)):"—"}),Number(x.cancelled)>0||Number(x.reversed)>0||Number(x.forfeited)>0?o.jsxs("span",{className:"text-xs text-muted-foreground",children:["-",t.currency(Number(x.cancelled)+Number(x.reversed)+Number(x.forfeited))]}):null]})}),o.jsx("td",{className:"py-2 text-right",children:o.jsx(jo,{tone:x.status==="released"?"primary":x.status==="reversed"||x.status==="cancelled"?"destructive":"muted",children:e(`referrals.status.${x.status}`,{defaultValue:x.status})})})]},x.publicId))})]})}),o.jsx("div",{className:"grid gap-2 md:hidden",children:a.data.items.map(x=>{const w=x.grantAmount?Math.max(Number(x.grantAmount)-Number(x.cancelled)-Number(x.reversed)-Number(x.forfeited),0):null,S=Number(x.cancelled)+Number(x.reversed)+Number(x.forfeited);return o.jsxs(jh,{className:"p-2",children:[o.jsx(Nh,{title:o.jsx("span",{className:"text-sm",children:I6(x.eventType,x.recipientRole,e)}),meta:o.jsxs(o.Fragment,{children:[t.dateTime(x.createdAt),x.counterpartyEmail?o.jsx("span",{className:"block break-all",children:x.counterpartyEmail}):null]}),trailing:o.jsx(jo,{tone:x.status==="released"?"primary":x.status==="reversed"||x.status==="cancelled"?"destructive":"muted",children:e(`referrals.status.${x.status}`,{defaultValue:x.status})})}),o.jsxs(K$,{className:"mt-1.5 grid-cols-1 gap-x-2 min-[360px]:grid-cols-2",children:[o.jsx(nr,{label:e("referrals.col.topupAmount",{defaultValue:"Their topup"}),children:x.refereeTopupUsd?t.currency(Number(x.refereeTopupUsd)):"—"}),o.jsx(nr,{label:e("referrals.col.rate",{defaultValue:"Rate"}),align:"right",children:x.ratePercent?`${Number(x.ratePercent)}%${x.tierLabel?` · ${x.tierLabel}`:""}`:"—"}),o.jsx(nr,{label:e("referrals.col.releaseAt",{defaultValue:"Release"}),children:x.releaseAt?t.dateTime(x.releaseAt):"—"}),o.jsxs(nr,{label:e("referrals.col.cashback",{defaultValue:"Cashback"}),align:"right",children:[o.jsx("span",{children:w!=null?t.currency(w):"—"}),S>0?o.jsxs("span",{className:"block text-xs text-[color:var(--muted-foreground)]",children:["-",t.currency(S)]}):null]})]})]},x.publicId)})})]})]})})}function I6(e,t,n){return e==="signup"?t==="referrer"?n("referrals.event.inviteeSignedUp",{defaultValue:"Invitee signed up"}):n("referrals.event.youSignedUp",{defaultValue:"You signed up by invite"}):t==="referrer"?n("referrals.event.inviteePaid",{defaultValue:"Invitee paid"}
968):n("referrals.event.youPaid",{defaultValue:"Your invited payment"})}function Gl({label:e,value:t}){return o.jsxs("div",{className:"flex min-w-0 flex-col gap-1",children:[o.jsx("span",{className:"min-w-0 break-words text-2xs font-semibold uppercase text-muted-foreground sm:text-xs sm:normal-case",children:e}),o.jsx("span",{className:"min-w-0 break-words text-base font-medium tabular-nums sm:text-xl",children:t})]})}const FZ=["console","tasks"];function XEs(){return Ue({queryKey:FZ,queryFn:()=>Ye.request("/console/tasks")})}function ZEs(){const e=Re();return ke({mutationFn:t=>Ye.request("/console/tasks/submissions",{method:"POST",body:t}),onSuccess:()=>{e.invalidateQueries({queryKey:FZ})}})}const JEs={pending:"warning",approved:"success",rejected:"destructive"},eIs={TASK_URL_REQUIRED:"tasks.error.urlRequired",TASK_URL_TOO_LONG:"tasks.error.urlTooLong",TASK_URL_MALFORMED:"tasks.error.urlMalformed",TASK_URL_HOST_NOT_ALLOWED:"tasks.error.hostNotAllowed",TASK_URL_NOT_A_POST:"tasks.error.notAPost",TASK_ALREADY_SUBMITTED:"tasks.error.alreadySubmitted",TASK_NOT_AVAILABLE:"tasks.error.notAvailable",TASK_WALL_BUSY:"tasks.error.busy",TASK_INELIGIBLE_EMAIL_UNVERIFIED:"tasks.error.emailUnverified",TASK_INELIGIBLE_ACCOUNT_TOO_NEW:"tasks.error.accountTooNew",TASK_INELIGIBLE_RISK_FLAGGED:"tasks.error.riskFlagged",TASK_INELIGIBLE_ACCOUNT_INACTIVE:"tasks.error.accountInactive",TASK_INELIGIBLE_DEVICE_ALREADY_CLAIMED:"tasks.error.deviceAlreadyClaimed"};function tIs({task:e,submission:t,onSubmit:n,submitting:a}){const{t:s}=W(),r=Te(),[i,c]=h.useState(""),d=s("tasks.sponsorBlurb",{defaultValue:"",url:`https://${BT}`,domain:BT,interpolation:{escapeValue:!1}}),m=t!=null&&t.status!=="rejected",f=e.rewardType==="topup_percent"?`+${e.amountUsd}%`:r.currency(e.amountUsd);return o.jsxs(Ee,{className:"flex min-w-0 flex-col gap-4 p-3 sm:p-5",children:[o.jsxs("div",{className:"flex min-w-0 items-start justify-between gap-3",children:[o.jsxs("div",{className:"min-w-0",children:[o.jsx("h3",{className:"text-sm font-medium text-foreground",children:s(`tasks.item.${e.taskKey}.title`,{defaultValue:e.taskKey})}),o.jsx("p",{className:"mt-1 text-13 text-muted-foreground",children:s(`tasks.item.${e.taskKey}.description`,{defaultValue:""})})]}),o.jsx("span",{className:"shrink-0 font-[family-name:var(--font-mono)] text-sm font-medium tabular-nums text-[color:var(--primary)]",children:f})]}),e.rewardType==="topup_percent"?o.jsxs("div",{className:"flex flex-col gap-2 rounded-md border border-[color:var(--border)] bg-[color:var(--muted)]/35 p-3",children:[o.jsx("p",{className:"whitespace-pre-wrap break-words font-[family-name:var(--font-mono)] text-2xs leading-relaxed text-muted-foreground",children:d}),o.jsx(S_,{value:d,copyLabel:s("tasks.copyBlurb",{defaultValue:"Copy this text"}),className:"self-start"})]}):null,o.jsx("ul",{className:"flex flex-col gap-1 text-13 text-muted-foreground",children:s(`tasks.item.${e.taskKey}.rules`,{returnObjects:!0,defaultValue:[]}).map(p=>o.jsxs("li",{className:"flex gap-2",children:[o.jsx("span",{"aria-hidden":!0,className:"text-[color:var(--muted-foreground)]",children:"·"}),o.jsx("span",{className:"min-w-0",children:p})]},p))}),m?o.jsxs("div",{className:"flex flex-col gap-2 border-t border-[color:var(--border)] pt-3",children:[o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(jo,{tone:JEs[t.status],children:s(t.status==="approved"&&e.rewardType==="topup_percent"?"tasks.status.active":`tasks.status.${t.status}`,{defaultValue:t.status})}),o.jsx("span",{className:"text-2xs text-muted-foreground",children:r.dateTime(t.createdAt)})]}),o.jsx("p",{className:"break-all text-2xs text-muted-foreground",children:t.submittedUrl})]}):o.jsxs("form",{className:"flex flex-col gap-2 border-t border-[color:var(--border)] pt-3",onSubmit:p=>{p.preventDefault(),i.trim()&&n(e.taskKey,i.trim())},children:[t?.status==="rejected"?o.jsx("p",{className:"text-13 text-[color:var(--destructive)]",children:s("tasks.rejectedHint",{defaultValue:"Previously rejected: {{reason}}. Fix it and submit again.",reason:t.rejectReason??""})}):null,o.jsx("label",{className:ti,htmlFor:`task-url-${e.taskKey}`,children:s("tasks.urlLabel",{defaultValue:"Link to your post"})}),o.jsxs("div",{className:"grid gap-2 sm:flex sm:items-center",children:[o.jsx(ge,{id:`task-url-${e.taskKey}`,value:i,onChange:p=>c(p.target.value),placeholder:s("tasks.urlPlaceholder",{defaultValue:"https://…"}),className:"min-w-0 flex-1",inputMode:"url"}),o.jsx(K,{type:"submit",disabled:!i.trim()||a,className:"w-full justify-center sm:w-auto 
968sm:shrink-0",children:s("tasks.submit",{defaultValue:"Submit"})})]}),o.jsx("p",{className:"text-2xs text-muted-foreground",children:s("tasks.allowedHosts",{defaultValue:"Accepted links: {{hosts}}",hosts:e.allowedHosts.join(", ")})})]})]})}function nIs(){const{t:e}=W(),t=XEs(),n=ZEs(),a=new Map((t.data?.submissions??[]).map(r=>[r.taskKey,r])),s=(r,i)=>{n.mutate({taskKey:r,url:i},{onSuccess:()=>ie.success(e("tasks.submitted",{defaultValue:"Submitted — we will review it shortly."})),onError:c=>{const d=c instanceof rn?c.code:"";ie.error(e(eIs[d]??"tasks.error.generic",{defaultValue:c instanceof Error?c.message:"Could not submit"}))}})};return o.jsx(Vt,{title:e("tasks.title",{defaultValue:"Task Wall"}),description:e("tasks.description",{defaultValue:"Share OneHop with your audience and earn trial credit. We review each submission by hand."}),children:t.isError?o.jsx(Qt,{title:e("tasks.error.load",{defaultValue:"Could not load the task wall"}),action:o.jsx(K,{variant:"outline",onClick:()=>t.refetch(),children:e("common.retry",{defaultValue:"Retry"})})}):t.isLoading?null:(t.data?.tasks.length??0)===0?o.jsx(Ot,{icon:o.jsx(uy,{className:"size-5"}),title:e("tasks.empty.title",{defaultValue:"No tasks right now"}),description:e("tasks.empty.description",{defaultValue:"Check back soon — we run these campaigns periodically."})}):o.jsx("div",{className:"flex flex-col gap-4 sm:gap-6",children:t.data.tasks.map(r=>o.jsx(tIs,{task:r,submission:a.get(r.taskKey),onSubmit:s,submitting:n.isPending},r.taskKey))})})}const aIs={open:"secondary",pending:"warning",resolved:"success",closed:"outline"};function Pp({status:e}){const{t}=W();return o.jsx(Xt,{variant:aIs[e],children:t(`support.status.${e}`)})}function oIs(){const{t:e}=W(),t=Te(),n=No(),{params:a,patch:s}=Mt(),r=Pe(a,"status"),i=h.useMemo(()=>{const p={};return r&&(p.status=r),p},[r]),c=Mxe(i),d=c.data?.pages.flatMap(p=>p.items)??[],[m,f]=h.useState(!1);return o.jsxs(Vt,{title:e("support.title"),description:e("support.subtitle"),action:o.jsxs(K,{className:"w-full sm:w-auto",onClick:()=>f(!0),children:[o.jsx(ij,{className:"size-4"}),e("support.newTicket")]}),children:[o.jsx("div",{className:"mb-4 w-full min-w-0 sm:w-48",children:o.jsxs(Ms,{value:r||"all",onValueChange:p=>s({status:p==="all"?void 0:p}),children:[o.jsx(as,{children:o.jsx(Es,{placeholder:e("support.filters.allStatuses")})}),o.jsxs(os,{children:[o.jsx(zn,{value:"all",children:e("support.filters.allStatuses")}),$F.map(p=>o.jsx(zn,{value:p,children:e(`support.status.${p}`)},p))]})]})}),c.isLoading?o.jsx("div",{className:"space-y-2",children:Array.from({length:4}).map((p,y)=>o.jsx(Rt,{className:"h-12 w-full"},y))}):d.length?o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"hidden md:block",children:o.jsxs(Ua,{className:"min-w-[680px]",children:[o.jsx(Po,{children:o.jsxs(qt,{children:[o.jsx(Ie,{sticky:"left",children:e("support.columns.subject")}),o.jsx(Ie,{children:e("support.columns.category")}),o.jsx(Ie,{children:e("support.columns.status")}),o.jsx(Ie,{children:e("support.columns.updated")})]})}),o.jsx(Ba,{children:d.map(p=>o.jsxs(qt,{className:"cursor-pointer",onClick:()=>n(FT(p.publicId)),children:[o.jsxs(Me,{sticky:"left",className:X("max-w-[34rem] truncate",p.unread&&"font-semibold"),children:[p.unread?o.jsx("span",{className:"mr-2 inline-block size-2 rounded-full bg-[color:var(--primary)]"}):null,o.jsx("span",{className:"align-middle",children:p.subject})]}),o.jsx(Me,{children:o.jsx(Xt,{variant:"outline",children:e(`support.category.${p.category}`)})}),o.jsx(Me,{children:o.jsx(Pp,{status:p.status})}),o.jsx(Me,{className:"text-[color:var(--muted-foreground)]",children:p.lastMessageAt?t.relativeTime(p.lastMessageAt):t.relativeTime(p.createdAt)})]},p.publicId))})]})}),o.jsx("div",{className:"grid min-w-0 gap-2 md:hidden",children:d.map(p=>o.jsxs(jh,{className:"shadow-none",onClick:()=>n(FT(p.publicId)),children:[o.jsx(Nh,{title:o.jsxs("span",{className:X("flex min-w-0 items-start gap-2 leading-5",p.unread&&"font-semibold"),children:[p.unread?o.jsx("span",{className:"size-2 shrink-0 rounded-full bg-[color:var(--primary)]"}):null,o.jsx("span",{className:"line-clamp-2 min-w-0 overflow-hidden break-words [overflow-wrap:anywhere]",children:p.subject})]}),meta:o.jsxs("span",{className:"inline-flex min-w-0 max-w-full flex-wrap items-center gap-2",children:[o.jsx("span",{className:"shrink-0",children:p.lastMessageAt?t.relativeTime(p.lastMessageAt):t.relativeTime(p.createdAt)}),o.jsx(Pp,{status:p.status})]})}),o.jsx(K$,{children:o.jsx(nr,{label:e("support.columns.category"),children:o.jsx(Xt,{variant:"outline",className:"max-w-full whitespace-normal leading-4",children:e(`support.category.${p.category}`)})})})]},p.publicId))})]}):o.jsx(Ot,{icon:o.jsx("span",{className:"text-3xl",children:"🎫"}),title:e("support.empty.title"),description:e("support.empty.body"),action:o.jsx(K,{onClick:()=>f(!0),children:e("support.empty.cta")})}),c.hasNextPage?o.jsx("div",{className:"mt-4 flex justify-center",children:o.jsx(K,{variant:"outline",onClick:()=>c.fetchNextPage(),disabled:c.isFetchingNextPage,children:e("support.loadMore")})}):null,m?o.jsx(sIs,{onClose:()=>f(!1)}):null]})}function sIs({onClose:e}){const{t}=W(),n=No(),a=Ixe(),[s,r]=h.useState(""),[i,c]=h.useState("technical"),[d,m]=h.useState(""),[f,p]=h.useState([]),[y,v]=h.useState(!1);async function $(w){if(w?.length){v(!0);try{for(const S of Array.from(w)){const k=await L9("user",S);p(T=>[...T,k])}}catch{ie.error(t("support.toast.error"))}finally{v(!1)}}}async function x(){if(!(!s.trim()||!d.trim()))try{const w=await a.mutateAsync({subject:s.trim(),category:i,body:d.trim(),attachments:f});ie.success(t("support.toast.created")),e(),n(FT(w.publicId))}catch{ie.error(t("support.toast.error"))}}return o.jsx(Up,{open:!0,onOpenChange:w=>!w&&e(),children:o.jsxs(fu,{className:"flex max-h-[min(720px,calc(100dvh-1rem))] max-w-lg flex-col overflow-hidden !p-0",children:[o.jsx(Xh,{className:"mb-0 shrink-0 px-4 pt-4 pr-12 sm:px-6 sm:pt-6",children:o.jsx(gu,{children:t("support.newTicket")})}),o.jsxs("div",{className:"min-h-0 flex-1 space-y-4 overflow-y-auto px-4 py-4 sm:px-6",children:[o.jsxs("div",{className:ti,children:[o.jsx("label",{children:t("support.form.subject")}),o.jsx(ge,{value:s,onChange:w=>r(w.target.value),placeholder:t("support.form.subjectPlaceholder"),maxLength:200})]}),o.jsxs("div",{className:ti,children:[o.jsx("label",{children:t("support.form.category")}),o.jsxs(Ms,{value:i,onValueChange:c,children:[o.jsx(as,{children:o.jsx(Es,{})}),o.jsx(os,{children:xF.map(w=>o.jsx(zn,{value:w,children:t(`support.category.${w}`)}
968,w))})]})]}),o.jsxs("div",{className:ti,children:[o.jsx("label",{children:t("support.form.message")}),o.jsx(_o,{value:d,onChange:w=>m(w.target.value),placeholder:t("support.form.messagePlaceholder"),rows:5,className:"max-h-[38dvh] resize-y [overflow-wrap:anywhere]"})]}),o.jsxs("div",{className:"flex min-w-0 flex-wrap items-center gap-2",children:[o.jsxs("label",{className:"inline-flex max-w-full cursor-pointer items-center gap-1 rounded-md border border-[color:var(--border)] px-2 py-1 text-sm",children:[o.jsx(cj,{className:"size-4"}),o.jsx("span",{className:"min-w-0 truncate",children:t("support.form.addAttachment")}),o.jsx("input",{type:"file",multiple:!0,className:"hidden",onChange:w=>$(w.target.files)})]}),f.map(w=>o.jsxs("span",{className:"inline-flex max-w-full min-w-0 items-center gap-1 rounded-md bg-[color:var(--gray-a3)] px-2 py-1 text-xs",children:[o.jsx("span",{className:"min-w-0 truncate [overflow-wrap:anywhere]",children:w.fileName}),o.jsx(Aa,{type:"button","aria-label":"remove",variant:"ghost",size:"sm",className:"-mr-1 size-5 shrink-0",onClick:()=>p(S=>S.filter(k=>k.key!==w.key)),children:o.jsx(my,{className:"size-3"})})]},w.key))]})]}),o.jsxs(Xde,{className:"mt-0 shrink-0 border-t border-[color:var(--border)] px-4 py-3 pb-[max(0.75rem,env(safe-area-inset-bottom))] sm:px-6",children:[o.jsx(K,{variant:"outline",onClick:e,className:"w-full sm:w-auto",children:t("support.form.cancel")}),o.jsx(K,{className:"w-full sm:w-auto",onClick:()=>void x(),disabled:a.isPending||y||!s.trim()||!d.trim(),children:t("support.form.submit")})]})]})})}const O6={重新打开了工单:"support.thread.systemStatus.open",将工单标记为等待用户:"support.thread.systemStatus.pending",将工单标记为已解决:"support.thread.systemStatus.resolved",关闭了工单:"support.thread.systemStatus.closed"};function zZ({detail:e,scope:t,canReply:n,onReply:a,sending:s}){const{t:r}=W(),[i,c]=h.useState(""),[d,m]=h.useState([]),[f,p]=h.useState(!1),y=h.useRef(null);async function v(x){if(x?.length){p(!0);try{for(const w of Array.from(x)){const S=await L9(t,w);m(k=>[...k,S])}}catch{ie.error(r("support.toast.error"))}finally{p(!1),y.current&&(y.current.value="")}}}async function $(){!i.trim()||s||(await a(i.trim(),d),c(""),m([]))}return o.jsxs("div",{className:"flex h-full min-h-0 min-w-0 flex-col overflow-hidden rounded-md border border-[color:var(--border)] bg-[color:var(--card)]",children:[o.jsx("div",{className:"min-h-0 flex-1 space-y-3 overflow-y-auto overscroll-contain px-2 py-3 sm:space-y-4 sm:px-3 sm:py-4",role:"log","aria-live":"polite",children:e.messages.map(x=>o.jsx(rIs,{message:x,scope:t},x.publicId))}),n?o.jsxs("div",{className:"shrink-0 border-t border-[color:var(--border)] bg-[color:var(--background)] px-2 py-2 pb-[max(0.5rem,env(safe-area-inset-bottom))] sm:px-3 sm:py-3",children:[d.length>0?o.jsx("div",{className:"mb-2 flex max-h-20 min-w-0 flex-wrap gap-2 overflow-y-auto overscroll-contain pr-1",children:d.map(x=>o.jsxs("span",{className:"inline-flex max-w-full min-w-0 items-center gap-1 rounded-md bg-[color:var(--gray-a3)] px-2 py-1 text-xs",children:[o.jsx("span",{className:"min-w-0 truncate [overflow-wrap:anywhere]",children:x.fileName}),o.jsx(Aa,{type:"button","aria-label":"remove",variant:"ghost",size:"sm",className:"-mr-1 size-5 shrink-0",onClick:()=>m(w=>w.filter(S=>S.key!==x.key)),children:o.jsx(my,{className:"size-3"})})]},x.key))}):null,o.jsx(_o,{value:i,onChange:x=>c(x.target.value),onKeyDown:x=>{(x.metaKey||x.ctrlKey)&&x.key==="Enter"&&(x.preventDefault(),$())},placeholder:r("support.thread.replyPlaceholder"),rows:3,className:"max-h-28 min-h-16 resize-y [overflow-wrap:anywhere] sm:max-h-32 sm:min-h-20"}),o.jsxs("div",{className:"mt-2 flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between",children:[o.jsxs("div",{className:"flex min-w-0 flex-wrap items-center gap-2",children:[o.jsx("input",{ref:y,type:"file",multiple:!0,className:"hidden",onChange:x=>v(x.target.files)}),o.jsxs(K,{className:"min-w-0",variant:"outline",size:"sm",onClick:()=>y.current?.click(),disabled:f,children:[o.jsx(cj,{className:"size-4"}),o.jsx("span",{className:"min-w-0 truncate",children:r("support.form.addAttachment")})]}),o.jsx("span",{className:"hidden text-xs text-[color:var(--muted-foreground)] sm:inline",children:r("support.thread.sendHint")})]}),o.jsx(K,{className:"w-full sm:w-auto",onClick:()=>void $(),disabled:s||f||!i.trim(),children:r("support.thread.send")})]})]}):o.jsx("div",{className:"shrink-0 border-t border-[color:var(--border)] bg-[color:var(--background)] px-3 py-3 pb-[max(0.75rem,env(safe-area-inset-bottom))] text-sm text-[color:var(--muted-foreground)]",children:r("support.thread.closedNotice")})]})}function rIs({message:e,scope:t}){const{t:n}=W(),a=Te();if(e.authorKind==="system"){const i=O6[e.body]?n(O6[e.body]):e.body;return o.jsxs("div",{className:"px-2 text-center text-xs text-[color:var(--muted-foreground)] [overflow-wrap:anywhere]",children:[i," · ",a.dateTime(e.createdAt)]})}const s=t===e.authorKind,r=e.authorKind==="admin"?n("support.thread.support"):n("support.thread.you");return o.jsxs("div",{className:X("flex min-w-0 flex-col gap-1",s?"items-end":"items-start"),children:[o.jsxs("div",{className:"max-w-full text-xs text-[color:var(--muted-foreground)] [overflow-wrap:anywhere]",children:[r," · ",a.dateTime(e.createdAt)]}),o.jsx("div",{className:X("max-w-full whitespace-pre-wrap break-words rounded-lg px-2.5 py-2 text-sm [overflow-wrap:anywhere] sm:max-w-[80%] sm:px-3",s?"bg-[color:var(--primary)] text-[color:var(--primary-foreground)]":"bg-[color:var(--gray-a3)] text-[color:var(--foreground)]"),children:e.body}),e.attachments.length>0?o.jsx("div",{className:X("flex min-w-0 max-w-full flex-wrap gap-2",s?"justify-end":"justify-start"),children:e.attachments.map((i,c)=>i.contentType.startsWith("image/")?o.jsx("a",{href:i.url,target:"_blank",rel:"noreferrer",title:i.fileName,className:"max-w-full",children:o.jsx("img",{src:i.url,alt:i.fileName,loading:"lazy",className:"max-h-48 max-w-full rounded-md border border-[color:var(--border)] object-cover sm:max-w-[260px]"})},c):o.jsxs("a",{href:i.url,target:"_blank",rel:"noreferrer",className:"inline-flex max-w-full min-w-0 items-center gap-1 rounded-md bg-[color:var(--gray-a3)] px-2 py-1 text-xs underline",children:[o.jsx(cj,{className:"size-3 shrink-0"}),o.jsx("span",{className:"min-w-0 break-all",children:i.fileName})]}
968,c))}):null]})}function iIs(){const{t:e}=W(),t=No(),{publicId:n=""}=o_(),a=Exe(n),s=Oxe(n),r=Re();h.useEffect(()=>{a.isSuccess&&r.invalidateQueries({queryKey:Bw})},[a.isSuccess,n,r]);async function i(c,d){try{await s.mutateAsync({body:c,attachments:d}),ie.success(e("support.toast.replied"))}catch{ie.error(e("support.toast.error"))}}return o.jsx(Vt,{title:a.data?.subject??e("support.title"),description:void 0,fill:!0,action:o.jsxs(K,{variant:"outline",className:"w-full sm:w-auto",onClick:()=>t(Be.support),children:[o.jsx(Iw,{className:"size-4"}),e("support.thread.back")]}),children:a.isLoading?o.jsx("div",{className:"space-y-3",children:Array.from({length:3}).map((c,d)=>o.jsx(Rt,{className:"h-16 w-2/3"},d))}):a.data?o.jsxs("div",{className:"flex h-[calc(100dvh-9.5rem)] min-h-[420px] min-w-0 flex-col overflow-hidden md:h-auto md:min-h-0 md:flex-1",children:[o.jsxs("div",{className:"mb-3 flex min-w-0 shrink-0 items-center justify-between gap-2",children:[o.jsx("div",{className:"min-w-0 text-sm font-medium leading-5 text-[color:var(--heading)] [overflow-wrap:anywhere] md:hidden",children:a.data.subject}),o.jsx(Pp,{status:a.data.status})]}),o.jsx(zZ,{detail:a.data,scope:"user",canReply:a.data.status!=="closed",onReply:i,sending:s.isPending})]}):o.jsx(Ot,{icon:o.jsx("span",{className:"text-3xl",children:"🔍"}),title:e("support.notFound")})})}const lIs=i_(Z$);function qZ({onDirtyChange:e,onSaved:t}){const{t:n}=W(),a=qa(),s=qxe(),r=Vxe(),[i,c]=h.useState(""),[d,m]=h.useState("en"),[f,p]=h.useState("UTC"),y=cL.some(x=>x.value===f),v=s.data&&Yd(s.data.locale)?s.data.locale:Xi;h.useEffect(()=>{s.data&&(c(s.data.displayName??""),m(Yd(s.data.locale)?s.data.locale:Xi),p(s.data.timezone))},[s.data]);const $=!!s.data&&(i!==(s.data.displayName??"")||d!==v||f!==s.data.timezone);return h.useEffect(()=>{e?.($)},[$,e]),o.jsx("form",{className:"min-w-0 max-w-2xl space-y-5",onSubmit:x=>{x.preventDefault(),r.mutate({displayName:i,locale:d,timezone:f},{onSuccess:()=>{ie.success(n("common.saved")),t?.()}})},children:o.jsxs(Ee,{className:"min-w-0 space-y-5 p-3 sm:p-5",children:[o.jsx("div",{"data-clarity-mask":"true",className:"break-all text-sm text-[color:var(--muted-foreground)]",children:n("settings.signedInAs",{email:a.data?.user?.email??"—"})}),o.jsxs("label",{className:"grid gap-1.5 text-sm font-medium",children:[n("settings.displayName"),o.jsx(ge,{value:i,onChange:x=>c(x.target.value)})]}),o.jsx(ca,{label:n("settings.locale"),value:d,onChange:x=>m(x.target.value),children:lIs.map(x=>o.jsx("option",{value:x,children:Uh[x]},x))}),o.jsxs(ca,{label:n("settings.timezone"),value:f,onChange:x=>p(x.target.value),children:[y?null:o.jsx("option",{value:f,children:f}),cL.map(x=>o.jsx("option",{value:x.value,children:x.label},x.value))]}),o.jsx("div",{className:"flex items-center gap-3",children:o.jsx(K,{type:"submit",disabled:r.isPending||s.isLoading,className:"w-full sm:w-auto",children:r.isPending?n("common.saving"):n("common.saveChanges")})}),s.error?o.jsx(Qt,{title:n("settings.failedLoad"),description:s.error.message}):null,r.error?o.jsx(Qt,{title:n("settings.failedSave"),description:r.error.message}):null]})})}async function cIs(e,t,n){t&&!await zt({title:e("settings.discardTitle"),message:e("settings.discardMessage"),confirmText:e("settings.discardConfirm"),cancelText:e("settings.keepEditing"),variant:"destructive"})||n()}function dIs(){const{t:e}=W(),t=No(),[n,a]=h.useState(!1);function s(){t(-1)}function r(i){i||cIs(e,n,s)}return o.jsx(Vn,{open:!0,onOpenChange:r,children:o.jsxs(Nn,{side:"auto","aria-label":e("settings.title"),className:"max-h-[100dvh] min-w-0 overflow-y-auto px-3 pb-[calc(1rem+env(safe-area-inset-bottom))] sm:px-6",children:[o.jsxs(Pa,{className:"mb-3 min-w-0",children:[o.jsx(Rn,{children:e("settings.title")}),o.jsx(ua,{className:"break-words",children:e("settings.description")})]}),o.jsx(qZ,{onDirtyChange:a,onSaved:s})]})})}function uIs(){const{t:e}=W();return o.jsx(Vt,{title:e("settings.title"),description:e("settings.description"),maxWidth:"max-w-3xl",children:o.jsx(qZ,{})})}const ve=Ye;function zs(e,t,n={}){const a=new URLSearchParams(Object.entries(n).filter(([,s])=>s)).toString();return Ue({queryKey:["ops",e,n],queryFn:()=>ve.request(`${t}${a?`?${a}`:""}`),retry:1})}const mIs=e=>zs("users","/ops/users",e),pIs=e=>Ue({queryKey:["ops","user",e],queryFn:()=>ve.request(`/ops/users/${e}`).then(t=>t.user),enabled:!!e}
968),fIs=e=>zs("wallets","/ops/billing/wallets",e),HZ=e=>zs("payments","/ops/billing/payments",e),VZ=e=>zs("refunds","/ops/billing/refunds",e),gIs=(e,t)=>{const n=new URLSearchParams(Object.entries(t??{}).filter(([,a])=>a)).toString();return Ue({queryKey:["ops","user",e,"credit-buckets",t??{}],queryFn:()=>ve.request(`/ops/users/${e}/credit-buckets${n?`?${n}`:""}`),enabled:!!e,retry:1})},hIs=(e,t)=>{const n=new URLSearchParams(Object.entries(t??{}).filter(([,a])=>a)).toString();return Ue({queryKey:["ops","user",e,"api-keys",t??{}],queryFn:()=>ve.request(`/ops/users/${e}/api-keys${n?`?${n}`:""}`),enabled:!!e,retry:1})},K0=e=>{const t=new URLSearchParams(Object.entries(e??{}).filter(([,n])=>n)).toString();return Ue({queryKey:["ops","usage",e??{}],queryFn:()=>ve.request(`/ops/usage${t?`?${t}`:""}`),retry:1})},yIs=e=>{const t=new URLSearchParams(Object.entries(e??{}).filter(([,n])=>n)).toString();return Ue({queryKey:["ops","usage","trend",e??{}],queryFn:()=>ve.request(`/ops/usage/trend${t?`?${t}`:""}`),retry:1})},vIs=e=>{const t=new URLSearchParams(Object.entries(e??{}).filter(([,n])=>n)).toString();return Ue({queryKey:["ops","usage","stacked",e??{}],queryFn:()=>ve.request(`/ops/usage/stacked${t?`?${t}`:""}`),retry:1})},cT=e=>{const t=new URLSearchParams(Object.entries(e??{}).filter(([,n])=>n)).toString();return Ue({queryKey:["ops","usage","breakdown",e??{}],queryFn:()=>ve.request(`/ops/usage/breakdown${t?`?${t}`:""}`),retry:1})},bIs=e=>Ue({queryKey:["ops","usage","detail",e],queryFn:()=>ve.request(`/ops/usage/${e}`),enabled:!!e,retry:1});async function xIs(e={}){const t=[];let n="";do{const a=new URLSearchParams(Object.entries({...e,limit:"100",cursor:n}).filter(([,r])=>r)).toString(),s=await ve.request(`/ops/usage${a?`?${a}`:""}`);t.push(...s.items),n=s.nextCursor??""}while(n);return t}const KZ=()=>zs("rate-limits","/ops/rate-limits");function $Is(){const e=Re();return ke({mutationFn:t=>ve.request("/ops/rate-limit-policies",{method:"POST",body:t}),onSuccess:()=>e.invalidateQueries({queryKey:["ops","rate-limits"]})})}function wIs(){const e=Re();return ke({mutationFn:({publicId:t,...n})=>ve.request(`/ops/rate-limit-policies/${t}`,{method:"PATCH",body:n,idempotent:!0}),onSuccess:()=>e.invalidateQueries({queryKey:["ops","rate-limits"]})})}function kIs(){const e=Re();return ke({mutationFn:t=>ve.request(`/ops/rate-limit-policies/${t}`,{method:"DELETE",idempotent:!0}),onSuccess:()=>e.invalidateQueries({queryKey:["ops","rate-limits"]})})}const CIs=e=>zs("signup-allowlist","/ops/signup-allowlist",e);function SIs(){const e=Re();return ke({mutationFn:t=>ve.request("/ops/signup-allowlist",{method:"POST",body:t}),onSuccess:()=>e.invalidateQueries({queryKey:["ops","signup-allowlist"]})})}function AIs(){const e=Re();return ke({mutationFn:t=>ve.request("/ops/signup-allowlist/bulk",{method:"POST",body:t}),onSuccess:()=>e.invalidateQueries({queryKey:["ops","signup-allowlist"]})})}function TIs(){return ke({mutationFn:e=>ve.request("/ops/signup-allowlist/check",{method:"POST",body:{email:e}})})}function RIs(){const e=Re();return ke({mutationFn:({publicId:t,...n})=>ve.request(`/ops/signup-allowlist/${t}`,{method:"PATCH",body:n,idempotent:!0}),onSuccess:()=>e.invalidateQueries({queryKey:["ops","signup-allowlist"]})})}function PIs(){const e=Re();return ke({mutationFn:t=>ve.request(`/ops/signup-allowlist/${t}/restore`,{method:"POST",idempotent:!0}),onSuccess:()=>e.invalidateQueries({queryKey:["ops","signup-allowlist"]})})}function _Is(){const e=Re();return ke({mutationFn:t=>ve.request(`/ops/signup-allowlist/${t}/invite`,{method:"POST",idempotent:!0}),onSuccess:()=>e.invalidateQueries({queryKey:["ops","signup-allowlist"]})})}function jIs(){const e=Re();return ke({mutationFn:t=>ve.request(`/ops/signup-allowlist/${t}`,{method:"DELETE",idempotent:!0}),onSuccess:()=>e.invalidateQueries({queryKey:["ops","signup-allowlist"]})})}const NIs=e=>zs("email-domain-rules","/ops/email-domain-rules",e);function DIs(){const e=Re();return ke({mutationFn:t=>ve.request("/ops/email-domain-rules",{method:"POST",body:t}),onSuccess:()=>e.invalidateQueries({queryKey:["ops","email-domain-rules"]})})}function MIs(){const e=Re();return ke({mutationFn:t=>ve.request(`/ops/email-domain-rules/${t}/restore`,{method:"POST",idempotent:!0}),onSuccess:()=>e.invalidateQueries({queryKey:["ops","email-domain-rules"]})})}function EIs(){const e=Re();return ke({mutationFn:t=>ve.request(`/ops/email-domain-rules/${t}`,{method:"DELETE",idempotent:!0}),onSuccess:()=>e.invalidateQueries({queryKey:["ops","email-domain-rules"]})})}const IIs=()=>zs("admin-users","/ops/admin-users");function OIs(){const e=Re();return ke({mutationFn:t=>ve.request("/ops/admin-users",{method:"POST",body:t}),onSuccess:()=>e.invalidateQueries({queryKey:["ops","admin-users"]})})}function LIs(){const e=Re();return ke({mutationFn:t=>ve.request(`/ops/admin-users/${t.publicId}/role`,{method:"PATCH",body:{role:t.role},idempotent:!0}),onSuccess:()=>e.invalidateQueries({queryKey:["ops","admin-users"]})})}function UIs(){const e=Re();return ke({mutationFn:t=>ve.request(`/ops/admin-users/${t.publicId}/status`,{method:"PATCH",body:{status:t.status},idempotent:!0}),onSuccess:()=>e.invalidateQueries({queryKey:["ops","admin-users"]})})}function BIs(){const e=Re();return ke({mutationFn:t=>ve.request(`/ops/admin-users/${t}`,{method:"DELETE",idempotent:!0}),onSuccess:()=>e.invalidateQueries({queryKey:["ops","admin-users"]})})}function FIs(){const e=Re();return ke({mutationFn:t=>ve.request(`/ops/users/${t.publicId}/rate-limit-policy`,{method:"PATCH",body:{code:t.code},idempotent:!0}),onSuccess:(t,n)=>
968{e.invalidateQueries({queryKey:["ops","users"]}),e.invalidateQueries({queryKey:["ops","user",n.publicId]})}})}const zIs=e=>zs("models","/ops/models",e),Ru=()=>zs("models","/ops/models",{limit:"100"}),qIs=e=>Ue({queryKey:["ops","model",e],queryFn:()=>ve.request(`/ops/models/${e}`).then(t=>t.model),enabled:!!e});function HIs(){const e=Re();return ke({mutationFn:t=>ve.request("/ops/models",{method:"POST",body:t}),onSuccess:()=>e.invalidateQueries({queryKey:["ops","models"]})})}function VIs(){const e=Re();return ke({mutationFn:t=>{const{publicId:n,...a}=t;return ve.request(`/ops/models/${n}`,{method:"PATCH",body:a})},onSuccess:(t,n)=>{e.invalidateQueries({queryKey:["ops","models"]}),e.invalidateQueries({queryKey:["ops","model",n.publicId]})}})}const KIs=(e,t=!0)=>Ue({queryKey:["ops","model",e,"pricing-factors",t],queryFn:()=>ve.request(`/ops/models/${e}/pricing-factors?includeHistory=${t}`),enabled:!!e});function GZ(){const e=Re();return ke({mutationFn:t=>{const{modelPublicId:n,...a}=t;return ve.request(`/ops/models/${n}/pricing-factors`,{method:"POST",body:a})},onSuccess:(t,n)=>{e.invalidateQueries({queryKey:["ops","model",n.modelPublicId,"pricing-factors"]}),e.invalidateQueries({queryKey:["ops","models"]})}})}function GIs(){const e=Re();return ke({mutationFn:t=>{const{modelPublicId:n,...a}=t;return ve.request(`/ops/models/${n}/pricing-factors/apply-discount`,{method:"POST",body:a})},onSuccess:(t,n)=>{n.dryRun||(e.invalidateQueries({queryKey:["ops","model",n.modelPublicId,"pricing-factors"]}),e.invalidateQueries({queryKey:["ops","models"]}))}})}function WIs(){const e=Re();return ke({mutationFn:t=>ve.request(`/ops/models/${t.modelPublicId}/pricing-factors/${t.factorPublicId}/expire`,{method:"POST",body:{}}),onSuccess:(t,n)=>{e.invalidateQueries({queryKey:["ops","model",n.modelPublicId,"pricing-factors"]}),e.invalidateQueries({queryKey:["ops","models"]})}})}const YIs=e=>Ue({queryKey:["ops","servable-models"],queryFn:()=>ve.request("/ops/sub2api/servable-models"),enabled:e,staleTime:6e4}),WZ=e=>zs("audit-logs","/ops/audit-logs",e);function QIs(){const e=Re();return ke({mutationFn:t=>ve.request(`/ops/users/${t.publicId}/status`,{method:"PATCH",body:{status:t.status,riskStatus:t.riskStatus},idempotent:!0}),onSuccess:(t,n)=>{e.invalidateQueries({queryKey:["ops","users"]}),e.invalidateQueries({queryKey:["ops","user",n.publicId]})}})}function XIs(){const e=Re();return ke({mutationFn:t=>ve.request(`/ops/users/${t.publicId}/source`,{method:"PATCH",body:{source:t.source},idempotent:!0}),onSuccess:(t,n)=>{e.invalidateQueries({queryKey:["ops","users"]}),e.invalidateQueries({queryKey:["ops","user",n.publicId]})}})}function ZIs(){const e=Re();return ke({mutationFn:t=>ve.request(`/ops/users/${t.publicId}/note`,{method:"PATCH",body:{note:t.note},idempotent:!0}),onSuccess:(t,n)=>{e.invalidateQueries({queryKey:["ops","users"]}),e.invalidateQueries({queryKey:["ops","user",n.publicId]})}})}function JIs(e){const t=new URLSearchParams,n=t.toString()?`?${t.toString()}`:"";return Ue({queryKey:["ops","acquisition","",""],queryFn:()=>ve.request(`/ops/users/acquisition${n}`).then(a=>a.items)})}function eOs(){return ke({mutationFn:e=>ve.request("/ops/content/announcements/translate",{method:"POST",body:e,timeoutMs:6e4})})}function tOs(){return ke({mutationFn:e=>{const t=new FormData;return t.append("file",e,e.name),ve.request("/ops/content/announcements/image",{method:"POST",body:t,timeoutMs:6e4})}})}const nOs=e=>zs("announcements","/ops/content/announcements",e);function aOs(){const e=Re();return ke({mutationFn:t=>ve.request("/ops/content/announcements",{method:"POST",body:t}),onSuccess:()=>e.invalidateQueries({queryKey:["ops","announcements"]})})}function oOs(){const e=Re();return ke({mutationFn:({publicId:t,...n})=>ve.request(`/ops/content/announcements/${t}`,{method:"PATCH",body:n}),onSuccess:()=>e.invalidateQueries({queryKey:["ops","announcements"]})})}function sOs(){const e=Re();return ke({mutationFn:t=>ve.request(`/ops/content/announcements/${t}`,{method:"DELETE"}),onSuccess:()=>e.invalidateQueries({queryKey:["ops","announcements"]})})}const rOs=()=>Ue({queryKey:["ops","dashboard"],queryFn:()=>ve.request("/ops/dashboard"),refetchInterval:6e4,retry:1}),iOs=["today","3d","7d","30d"],lOs="7d",cOs=["invites","revenue"],dOs="invites",uOs=(e,t)=>Ue({queryKey:["ops","leaderboard",e,t],queryFn:()=>ve.request(`/ops/dashboard/leaderboard?board=${e}&range=${t}`),staleTime:6e4,retry:1}),mOs=()=>Ue({queryKey:["ops","alert-settings"],queryFn:()=>ve.request("/ops/alert-settings"),retry:1});function pOs(){const e=Re();return ke({mutationFn:({alertType:t,...n})=>ve.request(`/ops/alert-settings/${t}`,{method:"PATCH",body:n,idempotent:!0}),onSuccess:()=>e.invalidateQueries({queryKey:["ops","alert-settings"]})})}function fOs(){const e=Re();return ke({mutationFn:t=>ve.request(`/ops/models/${t.publicId}/status`,{method:"PATCH",body:{status:t.status,visibility:t.visibility,available:t.available,requiresPaidAccount:t.requiresPaidAccount},idempotent:!0}),onSuccess:(t,n)=>
968{e.invalidateQueries({queryKey:["ops","models"]}),e.invalidateQueries({queryKey:["ops","model",n.publicId]})}})}const L6=["action","page","size"],gOs=new Map(_K.map(e=>[e.value,e.label]));function hOs(e){return e.replaceAll(".","_")}function YZ(e,t){const n=gOs.get(e)??e.replaceAll("."," / ").replaceAll("_"," ");return t(`auditLogs.actions.${hOs(e)}`,{defaultValue:n})}function yOs({log:e}){const{t}=W();return o.jsxs("div",{className:"min-w-0",children:[o.jsx("div",{children:t(`auditLogs.targetTypes.${e.targetType}`,{defaultValue:e.targetType.replaceAll("_"," ")})}),e.targetPublicId?o.jsx("code",{className:"mt-1 block truncate text-xs text-[color:var(--muted-foreground)]",children:e.targetPublicId}):null]})}function vOs({log:e}){const{t}=W(),n=Te(),a=t(`auditLogs.targetTypes.${e.targetType}`,{defaultValue:e.targetType.replaceAll("_"," ")});return o.jsxs(Dn,{children:[o.jsx(kr,{title:o.jsx("span",{className:"break-words",children:YZ(e.action,t)}),meta:n.dateTime(e.createdAt),trailing:o.jsx(Oe,{value:e.severity})}),o.jsxs(Ha,{className:"grid-cols-[minmax(0,1fr)_minmax(0,1fr)]",children:[o.jsx(Qe,{label:t("auditLogs.targetType",{defaultValue:"Target type"}),children:a}),o.jsx(Qe,{label:t("auditLogs.severity"),align:"right",children:e.severity}),o.jsx(Qe,{label:t("auditLogs.target"),className:e.requestId?void 0:"col-span-2",children:e.targetPublicId?o.jsx("code",{className:"block max-w-full truncate font-mono text-11",children:e.targetPublicId}):"-"}),e.requestId?o.jsx(Qe,{label:t("auditLogs.requestId",{defaultValue:"Request ID"}
968),align:"right",children:o.jsx("code",{className:"block max-w-full truncate font-mono text-11",children:e.requestId})}):null]})]})}const U6=20;function bOs(){const{t:e}=W(),t=Te(),{params:n,patch:a,remove:s}=Mt(),r=h.useMemo(()=>({action:Pe(n,"action"),page:ln(n,"page",1),size:ln(n,"size",U6)}),[n]),i=h.useDeferredValue(r.action),c=WZ({...i?{action:i}:{},page:String(r.page),limit:String(r.size)});return o.jsxs(Vt,{title:e("auditLogs.title"),description:e("auditLogs.description"),children:[o.jsxs("div",{className:"mb-4 grid gap-3 sm:max-w-xl sm:grid-cols-[minmax(0,1fr)_auto]",children:[o.jsx(Ze,{label:e("auditLogs.action"),value:r.action,options:_K,onChange:d=>a({action:d,page:void 0})}),o.jsx(nn,{show:Zt(n,L6,["page","size"]),onReset:()=>s(L6),className:"self-end"})]}),o.jsx(Pt,{label:e("auditLogs.label"),rows:c.data?.items,isLoading:c.isLoading,error:c.error,emptyTitle:e("auditLogs.empty"),pagination:{total:c.data?.total??0,page:r.page,pageSize:r.size,pageSizeOptions:[10,20,50,100],onPageChange:d=>a({page:d===1?void 0:String(d)},{replace:!1}),onPageSizeChange:d=>a({size:d===U6?void 0:String(d),page:void 0})},columns:[{header:e("auditLogs.time"),cell:d=>t.dateTime(d.createdAt)},{header:e("auditLogs.action"),cell:d=>YZ(d.action,e)},{header:e("auditLogs.severity"),cell:d=>o.jsx(Oe,{value:d.severity})},{header:e("auditLogs.target"),cell:d=>o.jsx(yOs,{log:d})}],mobileCard:d=>o.jsx(vOs,{log:d})})]})}function xOs(){return ke({mutationFn:e=>ve.request("/ops/billing/refunds",{method:"POST",body:e,idempotent:!0,timeoutMs:2e4})})}function $Os(){return ke({mutationFn:e=>ve.request("/ops/billing/refunds/preview",{method:"POST",body:e,timeoutMs:15e3})})}function QZ(e){const t=new URLSearchParams;e?.status&&t.set("status",e.status),e?.eventType&&t.set("eventType",e.eventType),e?.limit&&t.set("limit",String(e.limit));const n=t.toString();return Ue({queryKey:["ops","webhooks",e??{}],queryFn:()=>ve.request(`/ops/billing/webhooks${n?`?${n}`:""}`),retry:1,refetchInterval:15e3})}function wOs(e){return Ue({queryKey:["ops","webhook-detail",e],queryFn:()=>ve.request(`/ops/billing/webhooks/${e}`),enabled:!!e,staleTime:6e4})}function kOs(){return ke({mutationFn:e=>ve.request(`/ops/billing/webhooks/${e}/retry`,{method:"POST",body:{},idempotent:!0,timeoutMs:1e4})})}const COs=400,B6=`${goe/100}% + $${hoe.toFixed(2)}`;function SOs(e,t){switch(e.errorCode){case"REFUND_INSUFFICIENT_PURCHASED":return t("adminBilling.refundInsufficientCredit",{value:e.maxRefundableUsd});case"REFUND_AMOUNT_EXCEEDS":return t("adminBilling.refundExceedsMax",{value:e.maxRefundableUsd});case"REFUND_ALREADY_FULL":return t("adminBilling.refundAlreadyFull");case"REFUND_BELOW_MIN":return t("adminBilling.refundBelowMin",{value:e.minRefundableUsd??"—"});case"REFUND_AMOUNT_INVALID":return t("adminBilling.refundAmountInvalid");default:return e.errorMessage??t("adminBilling.refundPreviewFailed")}}function XZ({payment:e,open:t,onOpenChange:n,userEmail:a}){const{t:s}=W(),r=Te(),i=Re(),c=xOs(),d=$Os(),[m,f]=h.useState(""),[p,y]=h.useState("requested_by_customer"),[v,$]=h.useState(!0),x=!v,w=h.useRef(null),S=d.mutate,k=d.reset,T=c.reset;h.useEffect(()=>{if(!t){k(),T(),f(""),$(!0),w.current=null;return}S({paymentIntentPublicId:e.publicId},{onSuccess:E=>{w.current=`${E.maxRefundableUsd}|charge`,f(E.maxRefundableUsd)}})},[t,e.publicId,S,k,T]),h.useEffect(()=>{if(!t)return;const E=x?"waive":"charge";if(m===""||`${m}|${E}`===w.current)return;const L=Number(m);if(!Number.isFinite(L)||L<=0)return;const O=setTimeout(()=>{w.current=`${m}|${E}`,S({paymentIntentPublicId:e.publicId,amount:m,waiveFee:x})},COs);return()=>clearTimeout(O)},[m,x,t,e.publicId,S]);const R=d.data,_=Number(m),P=Number.isFinite(_)&&_>0,j=R!=null&&P&&_>Number(R.maxRefundableUsd),N=c.isPending||d.isPending||!R?.ok||!P||j,I=R?.ok&&R.plan?Math.max(0,Number(R.plan.purchasedReverse)-Number(R.plan.refundUsd)):0,z=()=>{c.mutate({paymentIntentPublicId:e.publicId,amount:m,reason:p,waiveFee:x},{onSuccess:()=>{ie.success(s("adminBilling.refundSubmittedTitle"),{description:s("adminBilling.refundSubmittedBody")}),i.invalidateQueries({queryKey:["ops"]}),n(!1)},onError:E=>{ie.error(s("adminBilling.refundFailedTitle"),{description:E instanceof rn?`${E.code}: ${E.message}`:E.message})}})};return o.jsx(Cw,{open:t,onOpenChange:n,children:o.jsxs(ay,{className:"w-[calc(100vw-1rem)] max-w-md p-3 pb-[calc(0.75rem+env(safe-area-inset-bottom))] sm:p-6",children:[o.jsxs(Sw,{children:[o.jsx(oy,{className:"break-words",children:s("adminBilling.refundConfirmTitle",{id:e.publicId})}),o.jsx(sy,{className:"break-words",children:s("adminBilling.refundConfirmBody",{user:a??e.userEmail??"—"})})]}),o.jsxs("div",{className:"max-h-[52dvh] space-y-3 overflow-y-auto pr-1 sm:max-h-none sm:overflow-visible sm:pr-0",children:[o.jsxs("label",{className:"grid gap-1.5 text-sm",children:[o.jsx("span",{className:"font-medium",children:s("adminBilling.refundAmountLabel")}),o.jsx(ge,{value:m,onChange:E=>f(E.target.value),inputMode:"decimal",className:"min-w-0"}),o.jsx("span",{className:"break-words text-xs text-[color:var(--muted-foreground)]",children:s("adminBilling.refundMaxHint",{value:R?.maxRefundableUsd??e.amount})})]}),o.jsxs("label",{className:"grid gap-1.5 text-sm",children:[o.jsx("span",{className:"font-medium",children:s("adminBilling.refundReasonLabel")}),o.jsxs(HF,{value:p,onChange:E=>y(E.target.value),children:[o.jsx("option",{value:"requested_by_customer",children:"requested_by_customer"}),o.jsx("option",{value:"duplicate",children:"duplicate"}),o.jsx("option",{value:"fraudulent",children:"fraudulent"}),o.jsx("option",{value:"admin_refund",children:"admin_refund"})]})]}),o.jsxs("label",{className:"flex items-center gap-2 text-sm",children:[o.jsx(Zn,{checked:v,onChange:E=>$(E.target.checked),"data-testid":"refund-fee-toggle"}),o.jsx("span",{children:s("adminBilling.refundFeeToggle",{fee:B6})})]}),d.isPending?o.jsx("p",{className:"rounded-md bg-[color:var(--muted)] p-3 text-xs text-[color:var(--muted-foreground)]",children:s("adminBilling.refundPreviewLoading")}):d.isError?o.jsx("p",{className:"rounded-md bg-[color:var(--warning-surface)] p-3 text-xs","data-testid":"refund-preview-error",children:d.error instanceof rn&&d.error.code==="REFUND_TX_NOT_FOUND"?s("adminBilling.refundNoRefundableTx"):s("adminBilling.refundPreviewFailed")}):R&&!R.ok?o.jsx("p",{className:"rounded-md bg-[color:var(--warning-surface)] p-3 text-xs","data-testid":"refund-preview-error",children:SOs(R,s)}):R?.ok&&R.plan?o.jsxs("div",{className:"space-y-2",children:[o.jsxs("dl",{className:"grid gap-1 rounded-md bg-[color:var(--muted)] p-3 text-xs","data-testid":"refund-preview",children:[o.jsxs("div",{className:"flex justify-between",children:[o.jsx("dt",{className:"text-[color:var(--muted-foreground)]",children:s("adminBilling.refundPaidRow")}),o.jsx("dd",{className:"tabular-nums",children:r.currency(Number(R.paidAmount))})]}),Number(R.alreadyRefunded)>0?o.jsxs("div",{className:"flex justify-between",children:[o.jsx("dt",{className:"text-[color:var(--muted-foreground)]",children:s("adminBilling.refundAlreadyRefundedRow")}),o.jsxs("dd",{className:"tabular-nums",children:["-",r.currency(Number(R.alreadyRefunded))]})]}):null,o.jsxs("div",{className:"flex justify-between",children:[o.jsx("dt",{className:"text-[color:var(--muted-foreground)]",children:s("adminBilling.refundThisRefundRow")}),o.jsx("dd",{className:"tabular-nums",children:r.currency(Number(R.plan.refundUsd))})]}),o.jsxs("div",{className:"flex justify-between",children:[o.jsx("dt",{className:"text-[color:var(--muted-foreground)]",children:s("adminBilling.refundCreditReclaimRow")}),o.jsx("dd",{className:"tabular-nums",children:r.currency(Number(R.plan.purchasedReverse),"USD",4)})]}),I>0?o.jsx("p",{className:"text-[color:var(--muted-foreground)]","data-testid":"refund-reclaim-note",children:R.discountAmount!=null?s("adminBilling.refundCreditCouponNote",{amount:r.currency(I,"USD",4)}):s("adminBilling.refundCreditExtraNote",{amount:r.currency(I,"USD",4)})}):null,R.plan.hasBonusForfeiture?o.jsxs("div",{className:"flex justify-between",children:[o.jsx("dt",{className:"text-[color:var(--muted-foreground)]",children:s("adminBilling.refundBonusReverseRow")}),o.jsxs("dd",{className:"tabular-nums",children:["-",r.currency(Number(R.plan.bonus
968Reverse),"USD",4)]})]}):null,Number(R.platformFee??0)>0?o.jsxs("div",{className:"flex justify-between","data-testid":"refund-fee-row",children:[o.jsx("dt",{className:"text-[color:var(--muted-foreground)]",children:s("adminBilling.refundPlatformFeeRow",{fee:B6})}),o.jsxs("dd",{className:"tabular-nums",children:["-",r.currency(Number(R.platformFee))]})]}):null,o.jsxs("div",{className:"flex justify-between border-t border-[color:var(--border)] pt-1 font-medium",children:[o.jsx("dt",{children:s("adminBilling.refundStripeReturnRow")}),o.jsx("dd",{className:"tabular-nums",children:r.currency(Number(R.stripeRefundAmount??R.plan.refundUsd))})]})]}),R.plan.hasBonusForfeiture?o.jsx("div",{className:"rounded-md bg-[color:var(--warning-surface)] p-2.5 text-xs","data-testid":"refund-bonus-warning",children:s("adminBilling.refundBonusForfeitWarning",{amount:r.currency(Number(R.plan.bonusReverse),"USD",4)})}):null,j?o.jsx("p",{className:"rounded-md bg-[color:var(--warning-surface)] p-2.5 text-xs","data-testid":"refund-over-max",children:s("adminBilling.refundExceedsMax",{value:R.maxRefundableUsd})}):null]}):null]}),o.jsxs(Aw,{className:"gap-2 sm:gap-2",children:[o.jsx(ry,{className:"mt-0 w-full sm:w-auto",disabled:c.isPending,children:s("adminBilling.cancel")}),o.jsx(K,{className:"w-full sm:w-auto",onClick:z,disabled:N,children:c.isPending?s("adminBilling.submitting"):s("adminBilling.confirmRefund")})]})]})})}function Vd({email:e,publicId:t}){return e?t?o.jsx(Ta,{to:Be.adminUserDetail.replace(":publicId",t),className:"text-[color:var(--primary)] hover:underline",children:e}):o.jsx(o.Fragment,{children:e}):o.jsx("span",{className:"text-[color:var(--muted-foreground)]",children:"—"})}const F6=["paymentStatus","payEmail","preset","from","to","payAmountMin","payAmountMax","payPage","paySize"],AOs={preset:"all"},TOs=["today","yesterday","last7d","last30d","thisMonth","custom","all"];function ROs(e){return{today:e("dateRange.today",{defaultValue:"Today"}),yesterday:e("dateRange.yesterday",{defaultValue:"Yesterday"}),last7d:e("dateRange.last7d",{defaultValue:"Last 7 days"}),last30d:e("dateRange.last30d",{defaultValue:"Last 30 days"}),thisMonth:e("dateRange.thisMonth",{defaultValue:"This month"}),custom:e("dateRange.custom",{defaultValue:"Custom"}),all:e("dateRange.all",{defaultValue:"All time"})}}function POs(){const{t:e,i18n:t}=W(),n=Te(),{params:a,patch:s,remove:r}=Mt(),i=h.useMemo(()=>({status:Pe(a,"paymentStatus","paid"),email:Pe(a,"payEmail"),range:qw(a,AOs),amountMin:Pe(a,"payAmountMin"),amountMax:Pe(a,"payAmountMax"),page:ln(a,"payPage",1),size:ln(a,"paySize",20)}),[a]),[c,d]=h.useState(i.email);h.useEffect(()=>{d(i.email)},[i.email]);const m=h.useRef(null),f=h.useCallback(w=>{d(w),m.current&&clearTimeout(m.current),m.current=setTimeout(()=>{s({payEmail:w,payPage:void 0})},300)},[s]),p=h.useDeferredValue(i.email),y=h.useDeferredValue(i.amountMin),v=h.useDeferredValue(i.amountMax),$=i.range,x=HZ({...i.status&&i.status!=="all"?{status:i.status}:{},...p?{email:p}:{},...$.from?{from:$.from}:{},...$.to?{to:$.to}:{},...y?{amountMin:y}:{},...v?{amountMax:v}:{},page:String(i.page),limit:String(i.size)});return o.jsxs("div",{children:[o.jsxs("div",{className:"mb-3 grid min-w-0 gap-2 md:grid-cols-2 lg:grid-cols-[180px_minmax(0,1fr)_auto_auto_auto] lg:items-end lg:gap-3",children:[o.jsx(Ze,{label:e("adminBilling.paymentStatus"),value:i.status,options:AK,onChange:w=>s({paymentStatus:w,payPage:void 0})}),o.jsxs("label",{className:Qo,children:[o.jsx("span",{children:e("adminBilling.emailFilter")}),o.jsx(ge,{value:c,onChange:w=>f(w.target.value),placeholder:e("adminBilling.emailPlaceholder"),"aria-label":e("adminBilling.emailFilter")})]}),o.jsxs("label",{className:Qo,children:[o.jsx("span",{children:e("adminBilling.createdRange")}),o.jsx(uh,{value:$,onChange:w=>s({...Hw(w),payPage:void 0}),defaultPreset:"all",locale:t.language,labels:fh(e,ROs(e)),presets:[...TOs],className:"w-full justify-between lg:w-auto"})]}),o.jsxs("div",{className:Qo,children:[o.jsx("span",{children:e("adminBilling.amountRange")}),o.jsxs("div",{className:"grid min-w-0 grid-cols-[minmax(0,1fr)_auto_minmax(0,1fr)] items-center gap-1.5",children:[o.jsx(ge,{value:i.amountMin,inputMode:"decimal",onChange:w=>s({payAmountMin:w.target.value,payPage:void 0}),placeholder:e("adminBilling.amountMin"),"aria-label":e("adminBilling.amountMin"),className:"min-w-0 lg:w-20"}),o.jsx("span",{className:"text-[color:var(--muted-foreground)]",children:"–"}),o.jsx(ge,{value:i.amountMax,inputMode:"decimal",onChange:w=>s({payAmountMax:w.target.value,payPage:void 0}),placeholder:e("adminBilling.amountMax"),"aria-label":e("adminBilling.amountMax"),className:"min-w-0 lg:w-20"})]})]}),o.jsx(nn,{show:Zt(a,F6,["payPage","paySize"]),onReset:()=>r(F6),className:"self-end"})]}),o.jsx(Pt,{label:e("adminBilling.payments"),rows:x.data?.items,isLoading:x.isLoading,error:x.error,emptyTitle:e("adminBilling.noPayments"),pagination:{total:x.data?.total??0,page:i.page,pageSize:i.size,pageSizeOptions:[10,20,50,100],onPageChange:w=>s({payPage:w===1?void 0:String(w)},{replace:!1}),onPageSizeChange:w=>s({paySize:w===20?void 0:String(w),payPage:void 0})},columns:[{header:e("adminBilling.payment"),mobileValue:"break-all",cell:w=>w.publicId},{header:e("adminBilling.user"),mobileValue:"break-all",cell:w=>o.jsx(Vd,{email:w.userEmail,publicId:w.userPublicId})},{header:e("adminBilling.status"),cell:w=>o.jsx(Oe,{value:w.status})},{header:e("adminBilling.amount"),cell:w=>`${n.currency(Number(w.amount))} ${w.currency}`,align:"right"}
968,{header:e("adminBilling.created"),cell:w=>n.dateTime(w.createdAt)},{header:e("adminBilling.paid"),cell:w=>w.paidAt?n.dateTime(w.paidAt):"—"},{header:"",align:"right",sticky:"right",cell:w=>o.jsx(_Os,{payment:w})}]})]})}function _Os({payment:e}){const{t}=W(),[n,a]=h.useState(!1),s=e.status==="paid";return o.jsxs("div",{className:"grid w-full grid-cols-[minmax(0,1fr)_auto] gap-1.5 min-[360px]:flex min-[360px]:w-auto min-[360px]:flex-wrap min-[360px]:justify-end",children:[o.jsxs(K,{variant:"secondary",size:"sm",className:"min-w-0 px-2",disabled:!s,onClick:()=>a(!0),title:s?void 0:t("adminBilling.notRefundable"),children:[o.jsx(Kp,{className:"size-3.5"}),o.jsx("span",{className:"min-w-0 truncate",children:t("adminBilling.refund")})]}),o.jsx(XZ,{payment:e,open:n,onOpenChange:a}),o.jsx("a",{href:`https://dashboard.stripe.com/test/payments/${e.publicId}`,target:"_blank",rel:"noopener noreferrer",className:"inline-flex h-8 items-center justify-center gap-1 rounded-md border border-[color:var(--border)] px-2 text-xs text-[color:var(--muted-foreground)] hover:text-[color:var(--foreground)]",title:t("adminBilling.viewInStripe"),children:o.jsx(dy,{className:"size-3"})})]})}const z6=["refEmail","refPage","refSize"];function jOs(){const{t:e}=W(),t=Te(),{params:n,patch:a,remove:s}=Mt(),r=h.useMemo(()=>({email:Pe(n,"refEmail"),page:ln(n,"refPage",1),size:ln(n,"refSize",20)}),[n]),[i,c]=h.useState(r.email);h.useEffect(()=>{c(r.email)},[r.email]);const d=h.useRef(null),m=h.useCallback(y=>{c(y),d.current&&clearTimeout(d.current),d.current=setTimeout(()=>{a({refEmail:y,refPage:void 0})},300)},[a]),f=h.useDeferredValue(r.email),p=VZ({...f?{email:f}:{},page:String(r.page),limit:String(r.size)});return o.jsxs("div",{children:[o.jsxs("div",{className:"mb-3 grid min-w-0 grid-cols-[minmax(0,1fr)_auto] items-end gap-2 sm:w-96",children:[o.jsxs("label",{className:Qo,children:[o.jsx("span",{children:e("adminBilling.emailFilter")}),o.jsx(ge,{value:i,onChange:y=>m(y.target.value),placeholder:e("adminBilling.emailPlaceholder"),"aria-label":e("adminBilling.emailFilter")})]}),o.jsx(nn,{show:Zt(n,z6,["refPage","refSize"]),onReset:()=>s(z6),className:"self-end"})]}),o.jsx(Pt,{label:e("adminBilling.refunds"),rows:p.data?.items,isLoading:p.isLoading,error:p.error,emptyTitle:e("adminBilling.noRefunds"),pagination:{total:p.data?.total??0,page:r.page,pageSize:r.size,pageSizeOptions:[10,20,50,100],onPageChange:y=>a({refPage:y===1?void 0:String(y)},{replace:!1}),onPageSizeChange:y=>a({refSize:y===20?void 0:String(y),refPage:void 0})},columns:[{header:e("adminBilling.refundId"),mobileValue:"break-all",cell:y=>y.publicId},{header:e("adminBilling.user"),mobileValue:"break-all",cell:y=>o.jsx(Vd,{email:y.userEmail,publicId:y.userPublicId})},{header:e("adminBilling.refundType"),cell:y=>y.type==="partial_refund"?e("adminBilling.typePartialRefund"):e("adminBilling.typeRefund")},{header:e("adminBilling.status"),cell:y=>o.jsx(Oe,{value:y.status})},{header:e("adminBilling.amount"),cell:y=>`${t.currency(Math.abs(Number(y.amount)))} ${y.currency}`,align:"right"},{header:e("adminBilling.originalPayment"),mobileValue:"break-all",cell:y=>y.originalTxPublicId??"—"},{header:e("adminBilling.created"),cell:y=>t.dateTime(y.createdAt)}]})]})}const q6=["walletEmail","walletPage","walletSize"];function NOs(){const{t:e}=W(),t=Te(),{params:n,patch:a,remove:s}=Mt(),r=h.useMemo(()=>({email:Pe(n,"walletEmail"),page:ln(n,"walletPage",1),size:ln(n,"walletSize",20)}),[n]),[i,c]=h.useState(r.email);h.useEffect(()=>{c(r.email)},[r.email]);const d=h.useRef(null),m=h.useCallback(y=>{c(y),d.current&&clearTimeout(d.current),d.current=setTimeout(()=>{a({walletEmail:y,walletPage:void 0})},300)},[a]),f=h.useDeferredValue(r.email),p=fIs({...f?{email:f}:{},page:String(r.page),limit:String(r.size)});return o.jsxs("div",{children:[o.jsxs("div",{className:"mb-3 grid min-w-0 grid-cols-[minmax(0,1fr)_auto] items-end gap-2 sm:w-96",children:[o.jsxs("label",{className:Qo,children:[o.jsx("span",{children:e("adminBilling.emailFilter")}),o.jsx(ge,{value:i,onChange:y=>m(y.target.value),placeholder:e("adminBilling.emailPlaceholder"),"aria-label":e("adminBilling.emailFilter")})]}),o.jsx(nn,{show:Zt(n,q6,["walletPage","walletSize"]),onReset:()=>s(q6),className:"self-end"})]}),o.jsx(Pt,{label:e("adminBilling.wallets"),rows:p.data?.items,isLoading:p.isLoading,error:p.error,emptyTitle:e("adminBilling.noWallets"),pagination:{total:p.data?.total??0,page:r.page,pageSize:r.size,pageSizeOptions:[10,20,50,100],onPageChange:y=>a({walletPage:y===1?void 0:String(y)},{replace:!1}),onPageSizeChange:y=>a({walletSize:y===20?void 0:String(y),walletPage:void 0})},columns:[{header:e("adminBilling.wallet"),mobileValue:"break-all",cell:y=>y.publicId},{header:e("adminBilling.user"),mobileValue:"break-all",cell:y=>o.jsx(Vd,{email:y.userEmail,publicId:y.userPublicId})},{header:e("adminBilling.total"),cell:y=>t.currency(Number(y.totalCredit)),align:"right"},{header:e("adminBilling.purchased"),cell:y=>t.currency(Number(y.purchasedCredit)),align:"right"},{header:e("adminBilling.bonus"),cell:y=>t.currency(Number(y.bonusCredit)),align:"right"}]})]})}const DOs=["payments","wallets","refunds"];function H6(e){return DOs.includes(e)?e:null}function MOs(){const{t:e}=W(),{params:t,patch:n}=Mt(),[a,s]=gh("admin_billing_tab","payments",H6),r=H6(Pe(t,"tab",a))??"payments",c=QZ({limit:1}).data?.statusCounts??[],d=Number(c.find(p=>p.status==="failed")?.count??0)+Number(c.find(p=>p.status==="dead_letter")?.count??0),m=d===0?"success":d<10?"warning":"destructive",f=`${d} ${e("adminBilling.unhealthyWebhooks")}`;return o.jsx(Vt,{title:e("adminBilling.title"),description:e("adminBilling.description"),action:o.jsxs("span",{title:e("adminBilling.webhookHealthHint"),className:"inline-flex max-w-full items-center gap-2 rounded-md border border-[color:var(--border)] px-2.5 py-1.5 text-xs sm:px-3",children:[o.jsx("span",{className:`size-2 roun
968ded-full bg-[color:var(--${m})]`,"aria-hidden":!0}),o.jsx("span",{className:"min-w-0 truncate",children:f})]}),children:o.jsxs(Cc,{value:r,onValueChange:p=>{s(p),n({tab:p==="payments"?void 0:p})},children:[o.jsx("div",{className:"min-w-0 overflow-x-auto pb-0.5",children:o.jsxs(tl,{children:[o.jsx(ia,{value:"payments",className:"h-9 px-2.5 text-xs sm:h-10 sm:px-3 sm:text-sm",children:e("adminBilling.tabs.payments")}),o.jsx(ia,{value:"wallets",className:"h-9 px-2.5 text-xs sm:h-10 sm:px-3 sm:text-sm",children:e("adminBilling.tabs.wallets")}),o.jsx(ia,{value:"refunds",className:"h-9 px-2.5 text-xs sm:h-10 sm:px-3 sm:text-sm",children:e("adminBilling.tabs.refunds")})]})}),o.jsx(Tn,{value:"payments",children:o.jsx(POs,{})}),o.jsx(Tn,{value:"wallets",children:o.jsx(NOs,{})}),o.jsx(Tn,{value:"refunds",children:o.jsx(jOs,{})})]})})}function sn({title:e,hint:t,contentClassName:n,children:a}){return o.jsxs("section",{className:"grid gap-3",children:[o.jsxs("header",{className:"grid gap-1",children:[o.jsx("h3",{className:"text-sm font-semibold text-[color:var(--foreground)]",children:e}),t?o.jsx("p",{className:"text-xs text-[color:var(--muted-foreground)]",children:t}):null]}),o.jsx("div",{className:X("grid gap-4",n),children:a})]})}function De({label:e,hint:t,error:n,className:a,children:s}){return o.jsxs("label",{className:X(ti,a),children:[o.jsx("span",{children:e}),s,t?o.jsx("span",{className:"text-xs font-normal text-[color:var(--muted-foreground)]",children:t}):null,n?o.jsx("span",{className:"text-xs font-normal text-[color:var(--destructive)]",children:n}):null]})}const EOs=["payment_success_rate_low","gateway_error_rate_high","model_error_spike","webhook_dead_letter","system_component_down","negative_balance_exposure"],LP={payment_success_rate_low:"lower",gateway_error_rate_high:"higher",model_error_spike:"higher",webhook_dead_letter:"higher",system_component_down:"higher",negative_balance_exposure:"higher"},ZZ=new Set(["payment_success_rate_low","gateway_error_rate_high","model_error_spike"]);function IOs(e){return{enabled:e.enabled,warn:String(e.warnThreshold),crit:String(e.critThreshold),cooldown:String(e.cooldownMinutes)}}function OOs(e,t){if(t.warn.trim()===""||t.crit.trim()===""||t.cooldown.trim()==="")return"required";const n=Number(t.warn),a=Number(t.crit),s=Number(t.cooldown);if(!Number.isFinite(n)||!Number.isFinite(a)||!Number.isFinite(s))return"required";if(s<0)return"cooldownNonNegative";if(ZZ.has(e)){if(n<0||n>1||a<0||a>1)return"rateRange"}else if(n<0||a<0)return"nonNegative";return LP[e]==="higher"&&n>a?"directionHigher":LP[e]==="lower"&&n<a?"directionLower":null}function LOs(e,t){return e.enabled!==t.enabled||Number(e.warn)!==t.warnThreshold||Number(e.crit)!==t.critThreshold||Number(e.cooldown)!==t.cooldownMinutes}function UOs(e){return e instanceof rn?`${e.code}: ${e.message}`:String(e)}function BOs({open:e,onOpenChange:t}){const{t:n}=W(void 0,{keyPrefix:"adminDashboard"}),a=Te(),s=qa(),r=Go(s.data?.admin??null,"ops.dashboard.write"),i=mOs(),c=pOs(),d=h.useMemo(()=>{const T=new Map((i.data?.items??[]).map(R=>[R.alertType,R]));return EOs.map(R=>T.get(R)).filter(R=>R!=null)},[i.data]),[m,f]=h.useState({}),[p,y]=h.useState(!1);e&&!p&&d.length>0&&(y(!0),f(Object.fromEntries(d.map(T=>[T.alertType,IOs(T)])))),!e&&p&&y(!1);const v=(T,R,_)=>f(P=>({...P,[T]:{...P[T],[R]:_}})),$=h.useMemo(()=>{const T={};for(const R of d){const _=m[R.alertType];if(!_)continue;const P=OOs(R.alertType,_);P&&(T[R.alertType]=P)}return T},[m,d]),x=h.useMemo(()=>d.filter(T=>m[T.alertType]&&LOs(m[T.alertType],T)),[m,d]),w=Object.keys($).length>0,S=r&&x.length>0&&!w&&!c.isPending,k=async()=>{try{for(const T of x){const R=m[T.alertType];await c.mutateAsync({alertType:T.alertType,enabled:R.enabled,warnThreshold:Number(R.warn),critThreshold:Number(R.crit),cooldownMinutes:Number(R.cooldown)})}ie.success(n("alertSettings.saved"))}catch(T){ie.error(`${n("alertSettings.saveError")}: ${UOs(T)}`)}};return o.jsx(Vn,{open:e,onOpenChange:t,children:o.jsxs(Nn,{side:"auto",children:[o.jsxs(Pa,{children:[o.jsx(Rn,{children:n("alertSettings.title")}),o.jsx(ua,{children:n("alertSettings.description")})]}),r?null:o.jsx("p",{className:"text-xs text-[color:var(--muted-foreground)]",children:n("alertSettings.readonlyHint")}),i.isLoading?o.jsx("p",{className:"text-13 text-[color:var(--muted-foreground)]",children:n("loading")}):i.error?o.jsx("p",{className:"text-13 text-[color:var(--destructive)]",children:n("failedLoad")}):d.length===0?o.jsx("p",{className:"text-13 text-[color:var(--muted-foreground)]",children:n("alertSettings.noD
968ata")}):o.jsxs("div",{className:"grid gap-5",children:[d.map(T=>{const R=m[T.alertType];if(!R)return null;const _=LP[T.alertType],P=ZZ.has(T.alertType),j=$[T.alertType],N=n(P?"alertSettings.rateHint":"alertSettings.countHint")+" "+n(_==="higher"?"alertSettings.directionHigher":"alertSettings.directionLower");return o.jsxs(sn,{title:n(`alertSettings.types.${T.alertType}`),hint:N,children:[o.jsxs("div",{className:"flex items-center justify-between gap-3",children:[o.jsx("span",{className:"text-13 text-[color:var(--muted-foreground)]",children:T.lastFiredAt?n("alertSettings.lastFired",{time:a.relativeTime(T.lastFiredAt)}):n("alertSettings.neverFired")}),o.jsxs("label",{className:"flex items-center gap-2",children:[o.jsx("span",{className:"text-13 text-[color:var(--foreground)]",children:n("alertSettings.enabled")}),o.jsx(js,{checked:R.enabled,onCheckedChange:I=>v(T.alertType,"enabled",I),disabled:!r})]})]}),o.jsxs("div",{className:"grid gap-4 md:grid-cols-2",children:[o.jsx(De,{label:n("alertSettings.warnThreshold"),children:o.jsx(ge,{type:"number",inputMode:"decimal",step:P?.01:1,min:0,max:P?1:void 0,value:R.warn,onChange:I=>v(T.alertType,"warn",I.target.value),disabled:!r,className:"tabular-nums"})}),o.jsx(De,{label:n("alertSettings.critThreshold"),children:o.jsx(ge,{type:"number",inputMode:"decimal",step:P?.01:1,min:0,max:P?1:void 0,value:R.crit,onChange:I=>v(T.alertType,"crit",I.target.value),disabled:!r,className:"tabular-nums"})})]}),o.jsx(De,{label:n("alertSettings.cooldown"),hint:n("alertSettings.cooldownHint"),error:j?n(`alertSettings.errors.${j}`):void 0,children:o.jsx(ge,{type:"number",inputMode:"numeric",step:1,min:0,value:R.cooldown,onChange:I=>v(T.alertType,"cooldown",I.target.value),disabled:!r,className:"tabular-nums"})})]},T.alertType)}),r?o.jsx("div",{className:"flex justify-end",children:o.jsx(K,{onClick:k,disabled:!S,children:c.isPending?n("alertSettings.saving"):n("alertSettings.save")})}):null]})]})})}function FOs(){const{t:e}=W(void 0,{keyPrefix:"adminDashboard.leaderboard"}),[t,n]=h.useState(dOs),[a,s]=h.useState(lOs),r=uOs(t,a),i=r.data?.items??[];return o.jsxs(Ee,{className:"overflow-hidden p-0",children:[o.jsxs("div",{className:"space-y-2 border-b border-[color:var(--border)] px-4 py-3",children:[o.jsx("h3",{className:"text-sm font-semibold",children:e("title",{defaultValue:"Referral leaderboard"})}),o.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[o.jsx(el,{value:t,onValueChange:c=>n(c),ariaLabel:e("boardAria",{defaultValue:"Select leaderboard"}),options:cOs.map(c=>({value:c,label:e(`boards.${c}`,{defaultValue:c})}))}),o.jsx(el,{value:a,onValueChange:c=>s(c),ariaLabel:e("rangeAria",{defaultValue:"Select time range"}),options:iOs.map(c=>({value:c,label:e(`ranges.${c}`,{defaultValue:c})}))})]})]}),r.isLoading?o.jsx("div",{className:"space-y-2.5 p-4",children:Array.from({length:3}).map((c,d)=>o.jsx(Rt,{className:"h-5 w-full"},d))}):r.isError?o.jsx(V6,{label:e("failedLoad",{defaultValue:"Failed to load leaderboard"})}):i.length===0?o.jsx(V6,{label:e("empty",{defaultValue:"No referrals in this window"})}):o.jsx("ul",{className:"divide-y divide-[color:var(--border)]",children:i.map((c,d)=>o.jsx(zOs,{row:c,rank:d+1,board:t},c.publicId))}),o.jsx("div",{className:"border-t border-[color:var(--border)] px-4 py-2 text-11 text-[color:var(--muted-foreground)]",children:e("validHint",{defaultValue:"Valid = normal risk status + active binding"})})]})}function zOs({row:e,rank:t,board:n}){const{t:a}=W(void 0,{keyPrefix:"adminDashboard.leaderboard"}),s=Te(),r=n==="revenue"?s.currency(e.revenueUsd,"USD",2):s.number(e.validCount),i=n==="revenue"?a("countPair",{defaultValue:"{{valid}} / {{total}} valid",valid:e.validCount,total:e.totalCount}):a("ofTotal",{defaultValue:"of {{total}}",total:e.totalCount});return o.jsx("li",{children:o.jsxs(Ta,{to:Bh(e.publicId),className:"flex items-baseline gap-3 px-4 py-2.5 transition-colors hover:bg-[color:var(--muted)]/40",children:[o.jsx("span",{className:"w-4 shrink-0 text-11 tabular-nums text-[color:var(--muted-foreground)]",children:t}),o.jsx("span",{className:"min-w-0 flex-1 truncate text-13",children:e.email}),o.jsxs("span",{className:"shrink-0 text-sm font-semibold tabular-nums",children:[r,o.jsx("span",{className:"ml-1.5 text-11 font-normal text-[color:var(--muted-foreground)]",children:i})]})]})})}function V6({label:e}){return o.jsx("div",{className:"p-5 text-xs text-[color:var(--muted-foreground)]",children:e})}function of(e){switch(e){case"watch":return"var(--alert-watch)";case"warning":return"var(--warning)";case"critical":return"var(--destructive)";default:return}}function yN(e){switch(e){case"watch":return"color-mix(in srgb, var(--alert-watch) 10%, transparent)";case"warning":return"var(--warning-surface)";case"critical":return"var(--destructive-surface)";default:return}}const Nc=e=>`${(e*100).toFixed(1)}%`;function qOs(e){switch(e){case"healthy":return"success";case"degraded":return"warning";case"down":return"destructive";default:return"muted"}}function K6(e){if(e==null||!Number.isFinite(e))return null;const t=Math.round(e*100);return t===0?null:`${t>0?"↑":"↓"}${Math.min(Math.abs(t),999)}
968%`}function HOs(e){if(e==null||!Number.isFinite(e))return null;const t=Math.abs(e);return t<.05?null:`${e>0?"↑":"↓"}${t.toFixed(1)}`}function VOs(){const{t:e}=W(void 0,{keyPrefix:"adminDashboard"}),t=Te(),n=rOs(),[a,s]=h.useState(!1),r=n.data,i=n.isFetching&&!n.isLoading;return o.jsxs(Vt,{title:e("title",{defaultValue:"Operations dashboard"}),description:e("description",{defaultValue:"Real-time overview of platform health, usage, and alerts."}),action:o.jsxs("div",{className:"grid w-full gap-2 sm:flex sm:w-auto sm:items-center",children:[o.jsxs(K,{variant:"outline",size:"sm",onClick:()=>n.refetch(),disabled:i,"aria-busy":i,children:[o.jsx(Vp,{className:X("size-3.5",i&&"animate-spin")}),e("refresh",{defaultValue:"Refresh"})]}),o.jsxs(K,{variant:"outline",size:"sm",onClick:()=>s(!0),children:[o.jsx(rj,{className:"size-3.5"}),e("alertSettings.title",{defaultValue:"Alert settings"})]})]}),children:[o.jsxs("div",{className:"flex flex-wrap items-center gap-x-4 gap-y-1 text-11 text-[color:var(--muted-foreground)]",children:[o.jsx("span",{children:r?e("lastUpdated",{defaultValue:"Updated {{time}}",time:t.dateTime(r.generatedAt)}):e("loading",{defaultValue:"Loading dashboard"})}),o.jsx("span",{className:"tabular-nums",children:mK()})]}),n.isLoading?o.jsx(o3s,{}):n.isError||!r?o.jsx(Nj,{height:120,error:n.error instanceof Error?n.error:new Error(e("failedLoad",{defaultValue:"Failed to load dashboard"})),children:o.jsx("div",{})}):o.jsx(KOs,{snapshot:r,refreshing:i}),o.jsx(BOs,{open:a,onOpenChange:s})]})}function KOs({snapshot:e,refreshing:t}){return o.jsxs(o.Fragment,{children:[o.jsx(WOs,{alerts:e.activeAlerts}),o.jsx(QOs,{snapshot:e}),o.jsx(ZOs,{block:e.systemHealth,refreshing:t}),o.jsxs("div",{className:"grid gap-3 lg:grid-cols-2",children:[o.jsx(n3s,{block:e.payment,revenue:e.revenue,refreshing:t}),o.jsx(a3s,{revenue:e.revenue,conversion:e.conversion,refreshing:t})]}),o.jsx(GOs,{})]})}function GOs(){const{t:e}=W(void 0,{keyPrefix:"adminDashboard"});return o.jsx(G0,{title:e("sections.leaderboard",{defaultValue:"Growth leaderboards"}),children:o.jsx("div",{className:"grid gap-3 lg:grid-cols-2",children:o.jsx(FOs,{})})})}function WOs({alerts:e}){const{t}=W(void 0,{keyPrefix:"adminDashboard"}),n=e.some(r=>r.tier==="critical"),a=n?"critical":e.length?"warning":"ok";if(e.length===0)return o.jsxs(Ee,{className:"flex items-center gap-2 p-3 text-sm text-[color:var(--muted-foreground)]",children:[o.jsx("span",{className:"size-2 shrink-0 rounded-full bg-[color:var(--success)]","aria-hidden":!0}),t("alerts.empty",{defaultValue:"All systems operational"})]});const s=of(a);return o.jsxs(Ee,{role:n?"alert":void 0,"aria-live":n?"assertive":"polite",className:"flex flex-wrap items-center gap-3 p-3",style:{backgroundColor:yN(a),borderColor:s},children:[o.jsx(jo,{tone:n?"destructive":"warning",children:t(`severity.${a}`,{defaultValue:a})}),o.jsx("span",{className:"text-sm font-medium",style:{color:s},children:t("alerts.activeCount",{defaultValue:"{{count}} active alerts",count:e.length})}),o.jsx("div",{className:"flex flex-wrap gap-1.5",children:e.map(r=>o.jsx(YOs,{alert:r},r.alertType))})]})}function YOs({alert:e}){const{t}=W(void 0,{keyPrefix:"adminDashboard"}),n=of(e.tier);return o.jsxs("span",{className:"inline-flex items-center gap-1.5 rounded px-2 py-0.5 text-11 font-medium tabular-nums",style:{backgroundColor:yN(e.tier),color:n},children:[o.jsx("span",{className:"size-1.5 shrink-0 rounded-full",style:{backgroundColor:n},"aria-hidden":!0}),t(`alertSettings.types.${e.alertType}`)]})}function QOs({snapshot:e}){const{t}=W(void 0,{keyPrefix:"adminDashboard"}),n=Te(),a=e.systemHealth.data,s=e.payment.data,r=e.revenue.data,i=[{label:t("kpi.requests",{defaultValue:"Requests"}),value:a?n.number(a.totalRequests):"—",failed:e.systemHealth.status==="error"},{label:t("kpi.errorRate",{defaultValue:"Error rate"}),value:a?Nc(a.gatewayErrorRate.value):"—",tier:a?.gatewayErrorRate.tier,failed:e.systemHealth.status==="error"},{label:t("kpi.successRate",{defaultValue:"Payment success"}),value:s?Nc(s.successRate.value):"—",tier:s?.successRate.tier,failed:e.payment.status==="error"},{label:t("revenue.today",{defaultValue:"Revenue today"}),value:r?n.currency(r.today,"USD",2):"—",failed:e.revenue.status==="error"},{label:t("kpi.newSignups",{defaultValue:"New signups"}),value:r?n.number(r.newSignups):"—",failed:e.revenue.status==="error"},{label:t("kpi.activeUsers",{defaultValue:"Active users"}),value:r?n.number(r.activeUsers):"—",failed:e.revenue.status==="error"}];return o.jsx(Ee,{className:"grid grid-cols-2 divide-x divide-y divide-[color:var(--border)] p-0 sm:grid-cols-3 lg:grid-cols-6 lg:divide-y-0",children:i.map(c=>o.jsxs("div",{className:"px-4 py-3",children:[o.jsx("div",{className:"truncate text-11 font-medium text-[color:var(--muted-foreground)]",children:c.label}),o.jsx("div",{className:"mt-0.5 text-base font-semibold tabular-nums",style:{color:c.failed?"var(--muted-foreground)":of(c.tier??"ok")},children:c.value})]},c.label))})}function G0({title:e,failed:t,children:n}){const{t:a}=W(void 0,{keyPrefix:"adminDashboard"});return o.jsxs("section",{className:"space-y-3",children:[o.jsxs("div",{className:"flex items-center justify-between gap-2",children:[o.jsx("h2",{className:"text-sm font-semibold",children:e}),t?o.jsx(jo,{tone:"destructive",children:a("failedLoad",{defaultValue:"load failed"})}):null]}),n]})}function Yo({label:e,value:t,format:n,tier:a="ok",spark:s,sub:r,ksub2:i,error:c,refreshing:d}){const{t:m}=W(void 0,{keyPrefix:"adminDashboard"});return o.jsxs(Ee,{className:X("p-3 transition-opacity duration-150 motion-reduce:transition-none sm:p-4",d&&"opacity-80"),"aria-busy":d?!0:void 0,children:[o.jsx("p",{className:"text-11 font-medium text-[color:var(--muted-foreground)]",children:e}),c?o.jsxs("div",{className:"mt-2 flex items-center gap-2",children:[o.jsx("span",{className:"text-xl font-semibold tabular-nums text-[color:var(--muted-foreground)] sm:text-2xl",children:"—"}),o.jsx(jo,{tone:"destructive",children:m("failedLoad",{defaultValue:"load failed"})})]}):o.jsxs(o.Fragment,{children:[o.jsx("p",{className:"mt-1.5 text-xl font-semibold tabular-nums sm:mt-2 sm:text-2xl",style:{color:of(a)},children:o.jsx(Ho,{value:t,format:n})}),s!=null?o.jsx("div",{className:"mt-1.5",children:s}):null]}),r!=null?o.jsx("div",{className:"mt-1 text-11 leading-4 text-[color:var(--muted-foreground)] sm:truncate",children:r}):null,i!=null&&!c?o.jsx("div",{className:"mt-2 border-t border-[color:var(--border)] pt-2 text-11 text-[color:var(--muted-foreground)]",children:i}):null]})}function XOs({values:e,color:t}){const s=Math.max(...e,0),r=Math.min(...e,0),i=s-r||1,c=e.map((d,m)=>{const f=e.length>1?m/(e.length-1)*100:50,p=28-(d-r)/i*28;return`${f.toFixed(1)},${p.toFixed(1)}`}).join(" ");return o.jsx("svg",{viewBox:"0 0 100 28",preserveAspectRatio:"none",className:"h-7 w-full","aria-hidden":!0,
968children:o.jsx("polyline",{points:c,fill:"none",stroke:t??"var(--muted-foreground)",strokeWidth:1.5,vectorEffect:"non-scaling-stroke",strokeLinejoin:"round",strokeLinecap:"round"})})}function ZOs({block:e,refreshing:t}){const{t:n}=W(void 0,{keyPrefix:"adminDashboard"}),a=Te(),s=e.status==="error",r=e.data,i=!s&&r!=null&&r.totalRequests===0,c=r?n("kpi.successFailed",{defaultValue:"{{success}} ok · {{failed}} fail",success:a.number(r.successRequests),failed:a.number(r.failedRequests)}):void 0,d=r?.gatewayErrorRate.tier??"ok",m=n(`health.tierReason.${d}`,{defaultValue:""}),f=r?HOs(r.errorRateDeltaPt):null,p=r&&!i?o.jsxs("span",{className:"tabular-nums",children:[m,f?` · ${n("vsYesterdayPt",{defaultValue:"{{delta}}pt vs yesterday",delta:f})}`:""]}):void 0,y=r&&r.errorTrend.length>=2?o.jsx(XOs,{values:r.errorTrend.map(v=>v.value),color:of(d)}):void 0;return o.jsxs(G0,{title:n("sections.health",{defaultValue:"System health"}),failed:s,children:[o.jsxs("div",{className:"grid gap-3 sm:grid-cols-2 lg:grid-cols-4",children:[o.jsx(Yo,{label:n("kpi.errorRate",{defaultValue:"Error rate"}),value:r?r.gatewayErrorRate.value:null,format:Nc,tier:r?.gatewayErrorRate.tier,spark:y,sub:i?n("noTraffic",{defaultValue:"No traffic yet"}):c,ksub2:p,error:s,refreshing:t}),o.jsx(Yo,{label:n("kpi.requests",{defaultValue:"Requests"}),value:r?r.totalRequests:null,format:v=>a.number(Math.round(v)),sub:c,error:s,refreshing:t}),o.jsx(Yo,{label:n("videoFailRate",{defaultValue:"Video fail rate"}),value:r?r.videoJobFailRate.value:null,format:Nc,tier:r?.videoJobFailRate.tier,sub:r?n("videoJobsDetail",{defaultValue:"{{failed}}/{{total}} jobs",failed:a.number(r.videoJobsFailed),total:a.number(r.videoJobsTotal)}):void 0,error:s,refreshing:t}),o.jsx(Yo,{label:n("avgLatency",{defaultValue:"Avg latency"}),value:r?r.avgLatencyMs:null,format:v=>`${Math.round(v)} ms`,error:s,refreshing:t}),o.jsx(Yo,{label:n("videoUnbilled",{defaultValue:"Video unbilled"}),value:r?r.videoCompletionUsageMismatch.value:null,format:v=>a.number(Math.round(v)),tier:r?.videoCompletionUsageMismatch.tier,sub:n("videoUnbilledHint",{defaultValue:"completed but not settled"}),error:s,refreshing:t})]}),o.jsxs("div",{className:"grid gap-3 lg:grid-cols-2",children:[o.jsx(JOs,{block:e}),o.jsx(e3s,{block:e})]}),o.jsx(t3s,{components:r?.components??[],failed:s})]})}function JOs({block:e}){const{t}=W(void 0,{keyPrefix:"adminDashboard"}),n=Te(),a=e.data?.errorTypes??[],s=a.reduce((r,i)=>Math.max(r,i.count),0);return o.jsx(vN,{title:t("errorTypes",{defaultValue:"Error types"}),children:e.status==="error"?o.jsx(_p,{label:t("failedLoad",{defaultValue:"load failed"})}):a.length===0?o.jsx(_p,{label:t("noErrors",{defaultValue:"No errors"})}):o.jsx("ul",{className:"divide-y divide-[color:var(--border)]",children:a.slice(0,5).map(r=>o.jsxs("li",{className:"px-4 py-2.5",children:[o.jsxs("div",{className:"flex items-baseline justify-between gap-3",children:[o.jsx("span",{className:"truncate font-mono text-13",children:r.code}),o.jsxs("span",{className:"shrink-0 text-sm tabular-nums",children:[n.number(r.count),o.jsxs("span",{className:"ml-1.5 text-11 text-[color:var(--muted-foreground)]",children:[(r.pct*100).toFixed(0),"%"]})]})]}),o.jsx("div",{className:"mt-1.5 h-1 overflow-hidden rounded bg-[color:var(--muted)]",children:o.jsx("div",{className:"h-full bg-[color:var(--muted-foreground)]",style:{width:`${s>0?r.count/s*100:0}%`}})})]},r.code))})})}function e3s({block:e}){const{t}=W(void 0,{keyPrefix:"adminDashboard"}),n=Te(),a=h.useMemo(()=>[...e.data?.modelErrors??[]].filter(s=>s.errorRate>0).sort((s,r)=>r.errorRate-s.errorRate).slice(0,5),[e.data?.modelErrors]);return o.jsx(vN,{title:t("modelAnomalies",{defaultValue:"Model anomalies"}),children:e.status==="error"?o.jsx(_p,{label:t("failedLoad",{defaultValue:"load failed"})}):a.length===0?o.jsx(_p,{label:t("noAnomalies",{defaultValue:"All models healthy"})}):o.jsx("ul",{className:"divide-y divide-[color:var(--border)]",children:a.map(s=>{const r=of(s.tier);return o.jsxs("li",{className:"flex items-baseline justify-between gap-3 px-4 py-2.5",style:{backgroundColor:yN(s.tier)},children:[o.jsx("span",{className:"truncate text-sm font-medium",style:{color:r},children:s.model}),o.jsxs("span",{className:"shrink-0 text-right text-sm tabular-nums",style:{color:r},children:[Nc(s.errorRate),o.jsxs("span",{className:"ml-1.5 text-11 text-[color:var(--muted-foreground)]",children:[n.number(s.errors)," ",t("errors",{defaultValue:"err"})]})]})]},s.model)})})})}function t3s({components:e,failed:t}){const{t:n}=W(void 0,{keyPrefix:"adminDashboard"});return o.jsx(vN,{title:n("components",{defaultValue:"Components"}),children:t?o.jsx(_p,{label:n("failedLoad",{defaultValue:"load failed"})}):e.length===0?o.jsx(_p,{label:n("empty",{defaultValue:"No data"})}):o.jsx("ul",{className:"flex flex-wrap gap-2 p-4",children:e.map(a=>o.jsxs("li",{className:"inline-flex items-center gap-2 rounded-md border border-[color:var(--border)] px-3 py-1.5",children:[o.jsx("span",{className:"text-13 text-[color:var(--foreground)]",children:a.name}),o.jsx(jo,{tone:qOs(a.status),children:n(`componentStatus.${a.status}`,{defaultValue:a.status})})]},a.name))})})}function n3s({block:e,revenue:t,refreshing:n}){const{t:a}=W(void 0,{keyPrefix:"adminDashboard"}),s=Te(),r=e.status==="error",i=e.data,c=y=>o.jsx("span",{children:a(`health.tierReason.${y??"ok"}`,{defaultValue:""})}),d=i?i.orders.paid+i.orders.failed:0,m=i!=null?d<5?o.jsx("span",{className:"tabular-nums",children:a("lowSample",{defaultValue:"Low sample ({{n}})",n:d})}):c(i.successRate.tier):void 0,f=t.data?.today,p=i!=null&&f!=null&&f>0?i.refunds/f*100:null;return o.jsx(G0,{title:a("sections.payment",{defaultValue:"Payment health"}),failed:r,children:o.jsxs("div",{className:"grid gap-3 sm:grid-cols-2",children:[o.jsx(Yo,{label:a("kpi.successRate",{defaultValue:"Payment success"}),value:i?i.successRate.value:null,format:Nc,tier:i?.successRate.tier,sub:i?a("orders.summary",{defaultValue:"{{paid}} paid · {{failed}} failed · {{pending}} pending",paid:s.number(i.orders.paid),failed:s.number(i.orders.failed),pending:s.number(i.orders.pending)}):void 0,ksub2:m,error:r,refreshing:n}),o.jsx(Yo,{label:a("abandonRate",{defaultValue:"Checkout abandon"}),value:i?i.abandonRate.value:null,format:Nc,tier:i?.abandonRate.tier,sub:i?a("checkout.funnel",{defaultValue:"opened {{opened}} · paid {{paid}}",opened:s.number(i.checkoutOpened),paid:s.number(i.orders.paid)}):void 0,ksub2:i?c(i.abandonRate.tier):void 0,error:r,refreshing:n}),o.jsx(Yo,{label:a("refunds",{defaultValue:"Refunds"}),value:i?i.refunds:null,format:y=>s.number(Math.round(y)),sub:p!=null?a("refundRate",{defaultValue:"Refund rate {{rate}}%",rate:p.toFixed(1)}):void 0,error:r,refreshing:n}),o.jsx(Yo,{label:a("chargebacks",{defaultValue:"Chargebacks"}),value:i?i.chargebacks:null,format:y=>s.number(Math.round(y)),tier:i&&i.chargebacks>0?"warning":"ok",error:r,refreshing:n})]})})}
968function a3s({revenue:e,conversion:t,refreshing:n}){const{t:a}=W(void 0,{keyPrefix:"adminDashboard"}),s=Te(),r=e.status==="error",i=e.data,c=t.data,d=i?K6(i.pctChange):null,m=h.useMemo(()=>(i?.trend??[]).map(y=>({at:y.at,value:y.value})),[i?.trend]),f=h.useMemo(()=>new Intl.DateTimeFormat(s.locale,{hour:"2-digit",minute:"2-digit",hour12:!1}),[s.locale]),p=y=>{const v=new Date(String(y));return Number.isNaN(v.getTime())?String(y):f.format(v)};return o.jsxs(G0,{title:a("sections.revenue",{defaultValue:"Revenue & growth"}),failed:r,children:[o.jsxs("div",{className:"grid gap-3 sm:grid-cols-2",children:[o.jsx(Yo,{label:a("revenue.today",{defaultValue:"Revenue today"}),value:i?i.today:null,format:y=>s.currency(y,"USD",2),sub:d!=null?o.jsxs("span",{className:"tabular-nums",children:[d," ",a("kpi.vsYesterday",{defaultValue:"vs yesterday"})]}):void 0,ksub2:i?o.jsx("span",{className:"tabular-nums",children:a("revenue.monthDetail",{defaultValue:"{{count}} charges · MTD {{mtd}}",count:s.number(i.paidCount),mtd:s.currency(i.monthToDateUsd,"USD",0)})}):void 0,error:r,refreshing:n}),o.jsx(Yo,{label:a("kpi.newSignups",{defaultValue:"New signups"}),value:i?i.newSignups:null,format:y=>s.number(Math.round(y)),sub:(()=>{const y=i?K6(i.signupDeltaPct):null;return y!=null?o.jsxs("span",{className:"tabular-nums",children:[y," ",a("kpi.vsYesterday",{defaultValue:"vs yesterday"})]}):void 0})(),ksub2:i?a("kpi.newSignupsHint",{defaultValue:"Normal users only (excludes flagged)"}):void 0,error:r,refreshing:n}),o.jsx(Yo,{label:a("kpi.activeUsers",{defaultValue:"Active users"}),value:i?i.activeUsers:null,format:y=>s.number(Math.round(y)),sub:i?a("activeUsersHint",{defaultValue:"Had gateway calls"}):void 0,error:r,refreshing:n}),o.jsx(Yo,{label:a("firstChargeConversion",{defaultValue:"First-charge conversion"}),value:c?c.firstChargeConversion.value:null,format:Nc,tier:c?.firstChargeConversion.tier,sub:c?a("conversion.paidOfSignups",{defaultValue:"{{paid}} first-charged / {{signups}} signups",paid:s.number(c.firstChargers),signups:s.number(c.newSignups)}):void 0,ksub2:c?a("conversionCohortHint",{defaultValue:"Last 7d cohort · normal users only"}):void 0,error:t.status==="error",refreshing:n})]}),!r&&m.length>0?o.jsx(_Z,{title:a("revenue.trendTitle",{defaultValue:"Revenue today vs yesterday"}),height:160,data:m,xAxisKey:"at",xTickFormatter:p,series:[{dataKey:"value",name:a("revenue.today",{defaultValue:"Revenue today"}),colorIndex:1}],valueFormatter:y=>s.currency(y,"USD",0)}):null]})}function vN({title:e,children:t}){return o.jsxs(Ee,{className:"overflow-hidden p-0",children:[o.jsx("div",{className:"border-b border-[color:var(--border)] px-4 py-3",children:o.jsx("h3",{className:"text-sm font-semibold",children:e})}),t]})}function _p({label:e}){return o.jsx("div",{className:"p-5 text-xs text-[color:var(--muted-foreground)]",children:e})}function o3s(){return o.jsxs("div",{className:"space-y-3",children:[o.jsx(Rt,{className:"h-12 w-full"}),o.jsx(Rt,{className:"h-16 w-full"}),o.jsx("div",{className:"grid gap-3 sm:grid-cols-2 lg:grid-cols-4",children:Array.from({length:4}).map((e,t)=>o.jsx(Rt,{className:"h-24 w-full"},t))}),o.jsxs("div",{className:"grid gap-3 lg:grid-cols-2",children:[o.jsx(Rt,{className:"h-48 w-full"}),o.jsx(Rt,{className:"h-48 w-full"})]})]})}const G6=["annStatus"],s3s=4,W6=new Set(["image/png","image/jpeg","image/webp","image/gif"]),r3s=5*1024*1024,Jr=noe,JZ=r_.filter(e=>e!==Jr),Ub=()=>({message:""});function bN(e){return(e??[]).filter(t=>t.label.trim()&&t.url.trim())}function vx(e,t){if(!e.message.trim())return e;if(t){const n=bN(e.actions).map(a=>({label:a.label.trim(),url:a.url.trim(),...a.variant?{variant:a.variant}:{}}));return{message:e.message.trim(),...e.title?.trim()?{title:e.title.trim()}:{},...n.length?{actions:n}:{}}}return{message:e.message.trim(),...e.ctaText?.trim()?{ctaText:e.ctaText.trim()}:{},...e.ctaUrl?.trim()?{ctaUrl:e.ctaUrl.trim()}:{}}}function i3s(e,t,n){if(n){const s=bN(e.actions).map((r,i)=>({label:t.actions?.[i]?.label?.trim()||r.label.trim(),url:r.url.trim(),...r.variant?{variant:r.variant}:{}}));return{message:t.message.trim(),...t.title?.trim()?{title:t.title.trim()}:{},...s.length?{actions:s}:{}}}return{message:t.message.trim(),...t.ctaText?.trim()?{ctaText:t.ctaText.trim()}:{},...e.ctaUrl?.trim()?{ctaUrl:e.ctaUrl.trim()}:{}}}function l3s(e,t){const n=e[Jr];if(!n?.message.trim())return{};const a={[Jr]:vx(n,t)};for(const s of JZ){const r=e[s];r?.message.trim()&&(a[s]=i3s(n,r,t))}return a}function c3s(){const{t:e}=W(),t=Te(),{params:n,patch:a,remove:s}=Mt(),r=Pe(n,"annStatus"),i=[{value:"",label:e("common.all",{defaultValue:"All"})},{value:"active",label:e("adminContent.annStatusActive")},{value:"draft",label:e("adminContent.annStatusDraft")},{value:"archived",label:e("adminContent.annArchive")}],c=nOs(r?{status:r}:{}),d=aOs(),m=oOs(),f=sOs(),[p,y]=h.useState(null),v=k=>e(`adminContent.annSev${k.charAt(0).toUpperCase()}${k.slice(1)}`,{defaultValue:k}),$=k=>({console:e("adminContent.annAudConsole"),public_site:e("adminContent.annAudPublic"),all:e("adminContent.annAudAll")})[k]??k,x=k=>({draft:e("adminContent.annStatusDraft"),active:e("adminContent.annStatusActive"),archived:e("adminContent.annArchive")})[k]??k;async function w(k){await zt({message:e("adminContent.annArchiveConfirm")})&&await f.mutateAsync(k.publicId)}async function S(k){p==="new"?await d.mutateAsync(k):p&&await m.mutateAsync({publicId:p.publicId,...k}),y(null)}return o.jsxs(o.Fragment,{children:[o.jsxs("div",{className:"mb-4 flex items-center justify-between gap-3",children:[o.jsxs("div",{className:"grid min-w-0 flex-1 gap-2 sm:flex sm:gap-3",children:[o.jsx(Ze,{label:e("adminContent.annStatus"),value:r,options:i,onChange:k=>a({annStatus:k})}),o.jsx(nn,{show:Zt(n,G6),onReset:()=>s(G6),labelKey:"common.reset",className:"self-end"})]}),o.jsx(K,{size:"sm",onClick:()=>y("new"),children:e("adminContent.annNewButton")})]}),o.jsx(Pt,{label:e("adminContent.annTitle"),rows:c.data?.items,isLoading:c.isLoading,error:c.error,emptyTitle:e("adminContent.annEmpty"),pagination:{},columns:[{header:e("adminContent.annColTitle"),cell:k=>{const T=k.i18n?.[Jr]??k.i18n?.en;return o.jsx("span",{className:"max-w-[10rem] truncate block",children:T?.title||"—"})}},{header:e("adminContent.annColContent"),cell:k=>{const T=k.i18n?.[Jr]??k.i18n?.en;return o.jsx("span",{className:"max-w-[16rem] truncate block text-[color:var(--muted-foreground)]",children:T?.message??"—"})}},{header:e("adminContent.annColType"),cell:k=>o.jsx(Oe,{value:k.displayType,label:e(k.displayType==="modal"?"adminContent.annTypeModal":"adminContent.annTypeBanner")})},{header:e("adminContent.annSeverity"),cell:k=>o.jsx(Oe,{value:k.severity,label:v(k.severity)})},{header:e("adminContent.annAudience"),cell:k=>o.jsx(Oe,{value:k.audience,label:$(k.audience)})},{header:e("adminContent.annStatus"),cell:k=>o.jsx(Oe,{value:k.status,label:x(k.status)})},{header:e("adminContent.annStartsAt"),cell:k=>k.startsAt?t.dateTime(k.startsAt):"—"},{header:e("adminContent.annEndsAt"),cell:k=>k.endsAt?t.dateTime(k.endsAt):"—"},{header:"",sticky:"right",cell:k=>o.jsxs("div",{className:"flex gap-2",children:[o.jsx(K,{size:"sm",variant:"ghost",onClick:()=>y(k),children:e("adminContent.annEditTitle")}),k.status!=="archived"&&o.jsx(K,{size:"sm",variant:"ghost",className:"text-[color:var(--destructive)]",onClick:()=>w(k),children:e("adminContent.annArchive")})]})}],mobileCard:k=>o.jsx(d3s,{announcement:k,onEdit:()=>y(k),onArchive:()=>void w(k)})}),o.jsx(Vn,{open:p!==null,onOpenChange:k=>{k||y(null)},children:o.jsxs(Nn,{side:"auto",className:"!p-0",children:[o.jsx(Pa,{className:"mb-0 shrink-0 px-4 pb-3 pt-4 sm:px-6 sm:pt-6",children:o.jsx(Rn,{className:"break-words",children:e(p==="new"?"adminContent.annCreateTitle":"adminContent.annEditTitle")})}),p!==null&&o.jsx(u3s,{initial:p==="new"?void 0:p,onSave:S,onCancel:()=>y(null),isSaving:d.isPending||m.isPending})]})})]})}function d3s({announcement:e,onEdit:t,onArchive:n}){const{t:a}=W(),s=Te(),r=e.i18n?.[Jr]??e.i18n?.en,i={draft:a("adminContent.annStatusDraft"),active:a("adminContent.annStatusActive"),archived:a("adminContent.annArchive")}[e.status]??e.status;return o.jsxs(Dn,{className:"py-2.5",children:[o.jsx(kr,{title:o.jsx("span",{className:"block min-w-0 break-words text-sm leading-5 [overflow-wrap:anywhere]",children:r?.title||r?.message||e.publicId}),meta:o.jsx("span",{className:"line-clamp-2 break-words [overflow-wrap:anywhere]",children:r?.message??"—"}),truncateTitle:!1,trailing:o.jsx(Oe,{value:e.status,label:i})}),o.jsxs(Ha,{className:"gap-y-1.5",children:[o.jsx(Qe,{label:a("adminContent.annColType"),children:o.jsx(Oe,{value:e.displayType,label:a(e.displayType==="modal"?"adminContent.annTypeModal":"adminContent.annTypeBanner")})}),o.jsx(Qe,{label:a("adminContent.annSeverity"),align:"right",children:o.jsx(Oe,{value:e.severity})}),o.jsx(Qe,{label:a("adminContent.annStartsAt"),truncate:!1,children:e.startsAt?s.relativeTime(e.startsAt):"—"}),o.jsx(Qe,{label:a("adminContent.annEndsAt"),align:"right",truncate:!1,children:e.endsAt?s.relativeTime(e.endsAt):"—"})]}),o.jsxs(Cr,{className:"mt-2 border-t border-[color:var(--border)] pt-2",children:[o.jsx(K,{size:"sm",variant:"secondary",onClick:t,children:a("adminContent.annEditTitle")}),e.status!=="archived"?o.jsx(K,{size:"sm",variant:"ghost",className:"text-[color:var(--destructive)]",onClick:n,children:a("adminContent.annArchive")}):null]})]})}function u3s({initial:e,onSave:t,onCancel:n,isSaving:a}){const{t:s}=W(),r=eOs(),[i,c]=h.useState(e?.displayType??"banner"),[d,m]=h.useState(e?.status??"draft"),[f,p]=h.useState(e?.severity??"info"),[y,v]=h.useState(e?.audie
968nce??"console"),[$,x]=h.useState(e?.dismissible??!0),[w,S]=h.useState(e?.startsAt?.slice(0,16)??""),[k,T]=h.useState(e?.endsAt?.slice(0,16)??""),[R,_]=h.useState(e?.imageUrl??""),[P,j]=h.useState(""),N=h.useRef(null),I=tOs(),[z,E]=h.useState(()=>e?.i18n??{}),[L,O]=h.useState(""),[V,ne]=h.useState(()=>{const Ae=e?.i18n?.[Jr];return Ae?JSON.stringify(vx(Ae,(e?.displayType??"banner")==="modal")):""}),[q,M]=h.useState(!1),F=i==="modal",H=z[Jr]??Ub(),ee=JZ.filter(Ae=>z[Ae]?.message?.trim()),B=JSON.stringify(vx(H,F)),G=ee.length>0&&B!==V,Q=h.useMemo(()=>[{value:"banner",label:s("adminContent.annTypeBanner")},{value:"modal",label:s("adminContent.annTypeModal")}],[s]),de=h.useMemo(()=>[{value:"draft",label:s("adminContent.annStatusDraft")},{value:"active",label:s("adminContent.annStatusActive")}],[s]),Y=h.useMemo(()=>[{value:"info",label:s("adminContent.annSevInfo")},{value:"warning",label:s("adminContent.annSevWarning")},{value:"critical",label:s("adminContent.annSevCritical")}],[s]),pe=h.useMemo(()=>[{value:"console",label:s("adminContent.annAudConsole")},{value:"public_site",label:s("adminContent.annAudPublic")},{value:"all",label:s("adminContent.annAudAll")}],[s]),se=h.useMemo(()=>[{value:"primary",label:s("adminContent.annVariantPrimary")},{value:"secondary",label:s("adminContent.annVariantSecondary")},{value:"link",label:s("adminContent.annVariantLink")}],[s]);function we(Ae){E(tt=>({...tt,[Jr]:{...Ub(),...tt[Jr],...Ae}}))}function me(Ae,tt){E(Tt=>({...Tt,[Ae]:{...Ub(),...Tt[Ae],...tt}}))}async function ye(Ae){if(j(""),!W6.has(Ae.type))return j(s("adminContent.annHeroImageBadType"));if(Ae.size>r3s)return j(s("adminContent.annHeroImageTooLarge"));try{const{url:tt}=await I.mutateAsync(Ae);_(tt)}catch(tt){j(tt instanceof Error?tt.message:s("adminContent.annHeroImageUploadFailed"))}}async function _e(){O("");const Ae=vx(H,F);if(!Ae.message.trim()){O(s("adminContent.annTranslateNeedSource"));return}const{results:tt}=await r.mutateAsync({source:Ae,displayType:i});E(an=>{const ta={...an};for(const lo of tt)lo.ok&&(ta[lo.locale]=lo.entry);return ta}),ne(JSON.stringify(Ae));const Tt=tt.filter(an=>!an.ok).map(an=>an.locale);
968Tt.length&&O(s("adminContent.annTranslatePartial",{failed:Tt.length}))}async function ae(Ae){Ae.preventDefault(),await t({displayType:i,status:d,severity:f,audience:y,dismissible:$,imageUrl:F&&R.trim()?R.trim():null,startsAt:w?new Date(w).toISOString():null,endsAt:k?new Date(k).toISOString():null,i18n:l3s(z,F),...F&&e&&q?{bumpRevision:!0}:{}})}const Je=ee.length;return o.jsxs("form",{onSubmit:ae,className:"flex min-h-0 flex-1 flex-col",children:[o.jsxs("div",{className:"min-h-0 flex-1 space-y-4 overflow-y-auto overscroll-contain px-4 pb-4 sm:px-6",children:[o.jsx(Ja,{label:s("adminContent.annDisplayType"),children:o.jsx(ft,{fullWidth:!0,value:i,options:Q,onValueChange:c})}),o.jsxs("div",{className:"grid gap-3 sm:grid-cols-2",children:[o.jsx(Ja,{label:s("adminContent.annStatus"),children:o.jsx(ft,{fullWidth:!0,value:d,options:de,onValueChange:m})}),o.jsx(Ja,{label:s("adminContent.annSeverity"),children:o.jsx(ft,{fullWidth:!0,value:f,options:Y,onValueChange:p})})]}),o.jsx(Ja,{label:s("adminContent.annAudience"),children:o.jsx(ft,{fullWidth:!0,value:y,options:pe,onValueChange:v})}),o.jsxs("div",{className:"grid gap-3 sm:grid-cols-2",children:[o.jsx(Ja,{label:s("adminContent.annStartsAt"),children:o.jsx(ge,{type:"datetime-local",value:w,onChange:Ae=>S(Ae.target.value)})}),o.jsx(Ja,{label:s("adminContent.annEndsAt"),children:o.jsx(ge,{type:"datetime-local",value:k,onChange:Ae=>T(Ae.target.value)})})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(Zn,{checked:$,onChange:Ae=>x(Ae.target.checked),id:"ann-dismissible"}),o.jsx(lh,{htmlFor:"ann-dismissible",className:"text-sm leading-5",children:s("adminContent.annDismissible")})]}),F&&o.jsxs(Ja,{label:s("adminContent.annHeroImage"),children:[o.jsxs("div",{className:"flex min-w-0 items-center gap-2",children:[o.jsx(ge,{value:R,onChange:Ae=>_(Ae.target.value),placeholder:"https://cdn.onehop.ai/...",className:"min-w-0 flex-1 font-[family-name:var(--font-mono)] text-xs"}),o.jsx(K,{type:"button",variant:"outline",size:"sm",className:"shrink-0",onClick:()=>N.current?.click(),disabled:I.isPending,children:I.isPending?s("adminContent.annHeroImageUploading"):s("adminContent.annHeroImageUpload")})]}),o.jsx("input",{ref:N,type:"file",accept:[...W6].join(","),className:"hidden",onChange:Ae=>{const tt=Ae.target.files?.[0];Ae.target.value="",tt&&ye(tt)}}),P&&o.jsx("p",{className:"text-2xs text-[color:var(--destructive)]",children:P}),R.trim()&&o.jsxs("div",{className:"flex items-center gap-2 pt-1",children:[o.jsx("img",{src:R,alt:s("adminContent.annHeroImage"),className:"h-12 w-20 rounded-[length:var(--radius-sm)] border border-[color:var(--border)] object-cover"}),o.jsx(K,{type:"button",variant:"ghost",size:"sm",onClick:()=>_(""),children:s("adminContent.annHeroImageRemove")})]}),o.jsx("p",{className:"break-words text-2xs text-[color:var(--muted-foreground)]",children:s("adminContent.annHeroImageHint")})]}),F&&e&&o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(Zn,{checked:q,onChange:Ae=>M(Ae.target.checked),id:"ann-bump"}),o.jsx(lh,{htmlFor:"ann-bump",className:"text-sm leading-5",children:s("adminContent.annBumpRevision")})]}),o.jsx("hr",{className:"border-[color:var(--border)]"}),o.jsxs("div",{className:"space-y-3",children:[o.jsx("p",{className:"text-xs font-medium uppercase tracking-wide text-[color:var(--muted-foreground)]",children:s("adminContent.annSourceLocale")}),o.jsx(m3s,{isModal:F,entry:H,onChange:we,variantOptions:se,t:s}),o.jsxs("div",{className:"grid gap-2 pt-1 sm:flex sm:items-center sm:gap-3",children:[o.jsx(K,{type:"button",variant:"outline",size:"sm",className:"w-full sm:w-auto",onClick:_e,disabled:r.isPending,children:r.isPending?s("adminContent.annTranslating"):s("adminContent.annTranslate")}),Je>0&&!r.isPending&&o.jsx("span",{className:"text-2xs text-[color:var(--muted-foreground)]",children:s("adminContent.annTranslateDone",{ok:Je})})]}),L&&o.jsx("p",{className:"text-2xs text-[color:var(--destructive)]",children:L}),G&&o.jsx("p",{className:"break-words text-2xs text-[color:var(--color-warning,#b45309)]",children:s("adminContent.annTranslateStale")}),o.jsx("p",{className:"text-2xs text-[color:var(--muted-foreground)]",children:s("adminContent.annSourceHint")})]}),ee.length>0&&o.jsxs(o.Fragment,{children:[o.jsx("hr",{className:"border-[color:var(--border)]"}),o.jsx("p",{className:"text-xs font-medium uppercase tracking-wide text-[color:var(--muted-foreground)]",children:s("adminContent.annOtherLocales")}),o.jsx("div",{className:"space-y-2",children:ee.map(Ae=>o.jsxs("details",{className:"rounded-md border border-[color:var(--border)] p-3",children:[o.jsx("summary",{className:"cursor-pointer text-sm font-medium",children:Uh[Ae]}),o.jsx("div",{className:"mt-3",children:o.jsx(p3s,{isModal:F,source:H,entry:z[Ae]??Ub(),onChange:tt=>me(Ae,tt),t:s})})]},Ae))})]})]}),o.jsxs("div",{className:"grid shrink-0 gap-2 border-t border-[color:var(--border)] bg-[color:var(--background)] px-4 py-3 pb-[max(0.75rem,env(safe-area-inset-bottom))] sm:flex sm:justify-end sm:px-6",children:[o.jsx(K,{type:"button",variant:"ghost",className:"w-full sm:w-auto",onClick:n,children:s("common.cancel",{defaultValue:"Cancel"})}),o.jsx(K,{type:"submit",className:"w-full sm:w-auto",disabled:a,children:a?s("common.saving",{defaultValue:"Saving..."}):s("common.save",{defaultValue:"Save"})})]})]})}function Ja({label:e,children:t}){return o.jsxs("div",{className:"grid min-w-0 gap-1",children:[o.jsx(lh,{className:"text-sm font-medium",children:e}),t]})}function m3s({isModal:e,entry:t,onChange:n,variantOptions:a,t:s}){const r=t.actions??[];function i(d){n({actions:d})}function c(d,m){i(r.map((f,p)=>p===d?{...f,...m}:f))}return o.jsxs(o.Fragment,{children:[e&&o.jsx(Ja,{label:s("adminContent.annModalTitle"),children:o.jsx(ge,{value:t.title??"",onChange:d=>n({title:d.target.value}),maxLength:120})}),o.jsxs(Ja,{label:s(e?"adminContent.annBody":"adminContent.annMessage"),children:[o.jsx(_o,{value:t.message,onChange:d=>n({message:d.target.value}),rows:e?4:2,maxLength:e?1e3:300}
968),o.jsx("p",{className:"text-xs text-[color:var(--muted-foreground)]",children:s("adminContent.annInlineLinkHint")})]}),e?o.jsxs("div",{className:"space-y-2",children:[o.jsx(lh,{children:s("adminContent.annActions")}),r.map((d,m)=>o.jsxs("div",{className:"grid min-w-0 items-center gap-2 rounded-md border border-[color:var(--border)] p-2 sm:grid-cols-[minmax(0,1fr)_minmax(0,1fr)]",children:[o.jsx(ge,{value:d.label,onChange:f=>c(m,{label:f.target.value}),placeholder:s("adminContent.annActionLabel"),maxLength:50}),o.jsx(ge,{value:d.url,onChange:f=>c(m,{url:f.target.value}),placeholder:"/pricing or https://...",className:"font-[family-name:var(--font-mono)] text-xs"}),o.jsx(ft,{fullWidth:!0,value:d.variant??"primary",options:a,onValueChange:f=>c(m,{variant:f})}),o.jsx(K,{type:"button",size:"sm",variant:"ghost",className:"justify-self-start text-[color:var(--destructive)]",onClick:()=>i(r.filter((f,p)=>p!==m)),children:s("adminContent.annActionRemove")})]},m)),r.length<s3s&&o.jsx(K,{type:"button",size:"sm",variant:"ghost",onClick:()=>i([...r,{label:"",url:"",variant:r.length===0?"primary":"secondary"}]),children:s("adminContent.annActionAdd")})]}):o.jsxs("div",{className:"grid gap-3 sm:grid-cols-2",children:[o.jsx(Ja,{label:s("adminContent.annCtaText"),children:o.jsx(ge,{value:t.ctaText??"",onChange:d=>n({ctaText:d.target.value}),maxLength:50})}),o.jsx(Ja,{label:s("adminContent.annCtaUrl"),children:o.jsx(ge,{value:t.ctaUrl??"",onChange:d=>n({ctaUrl:d.target.value}),placeholder:"/pricing"})})]})]})}function p3s({isModal:e,source:t,entry:n,onChange:a,t:s}){const r=bN(t.actions);function i(c,d){const m=[...n.actions??r.map(f=>({...f}))];m[c]={...m[c]??r[c],label:d},a({actions:m})}return o.jsxs("div",{className:"space-y-3",children:[e&&o.jsx(Ja,{label:s("adminContent.annModalTitle"),children:o.jsx(ge,{value:n.title??"",onChange:c=>a({title:c.target.value}),maxLength:120})}),o.jsx(Ja,{label:s(e?"adminContent.annBody":"adminContent.annMessage"),children:o.jsx(_o,{value:n.message,onChange:c=>a({message:c.target.value}),rows:e?3:2,maxLength:e?1e3:300})}),e?r.map((c,d)=>o.jsx(Ja,{label:`${s("adminContent.annActionLabel")} · ${c.label}`,children:o.jsx(ge,{value:n.actions?.[d]?.label??"",onChange:m=>i(d,m.target.value),maxLength:50})},d)):t.ctaText?.trim()&&o.jsx(Ja,{label:s("adminContent.annCtaText"),children:o.jsx(ge,{value:n.ctaText??"",onChange:c=>a({ctaText:c.target.value}),maxLength:50})})]})}function f3s(){const{t:e}=W();return o.jsx(Vt,{title:e("adminContent.title"),description:e("adminContent.description"),children:o.jsx(c3s,{})})}function g3s(){return Ue({queryKey:["ops","growth","signup-bonus-rule"],queryFn:()=>ve.request("/ops/growth/rules/signup-bonus").then(e=>e.rule),retry:1})}function h3s(){const e=Re();return ke({mutationFn:t=>ve.request("/ops/growth/rules/signup-bonus",{method:"PATCH",body:t,idempotent:!0}),onSuccess:()=>{e.invalidateQueries({queryKey:["ops","growth","signup-bonus-rule"]})}})}const eJ=["ops","platform","default-low-balance-threshold"];function y3s(){return Ue({queryKey:eJ,queryFn:()=>ve.request("/ops/platform-settings/default-low-balance-threshold").then(e=>e.value),retry:1})}function v3s(){const e=Re();return ke({mutationFn:t=>ve.request("/ops/platform-settings/default-low-balance-threshold",{method:"PATCH",body:{value:t},idempotent:!0}),onSuccess:()=>{e.invalidateQueries({queryKey:eJ})}})}function b3s(){return Ue({queryKey:["ops","growth","discount-rule"],queryFn:()=>ve.request("/ops/growth/rules/discount").then(e=>e.rule),retry:1})}function x3s(){const e=Re();return ke({mutationFn:t=>ve.request("/ops/growth/rules/discount",{method:"PATCH",body:t,idempotent:!0}),onSuccess:()=>{e.invalidateQueries({queryKey:["ops","growth","discount-rule"]})}})}function $3s(){return Ue({queryKey:["ops","growth","topup-bonus-rule"],queryFn:()=>ve.request("/ops/growth/rules/topup-bonus").then(e=>e.rule),retry:1})}function w3s(){const e=Re();return ke({mutationFn:t=>ve.request("/ops/growth/rules/topup-bonus",{method:"PATCH",body:t,idempotent:!0}),onSuccess:()=>{e.invalidateQueries({queryKey:["ops","growth","topup-bonus-rule"]})}})}function k3s(e={}){const t=new URLSearchParams(Object.entries(e).filter(([,n])=>n)).toString();return Ue({queryKey:["ops","grants",e],queryFn:()=>ve.request(`/ops/growth/grants${t?`?${t}`:""}`),retry:1})}function C3s(){const e=Re();return ke({mutationFn:t=>ve.request("/ops/growth/coupon-batches",{method:"POST",body:t,idempotent:!0}),onSuccess:()=>
968{e.invalidateQueries({queryKey:["ops","growth","coupon-batches"]})}})}function S3s(){return Ue({queryKey:["ops","growth","coupon-batches"],queryFn:()=>ve.request("/ops/growth/coupon-batches"),retry:1})}function A3s(e,t={}){return ll({queryKey:["ops","growth","coupon-codes",e,t],queryFn:({pageParam:n})=>{const a=new URLSearchParams;return e&&a.set("batchCode",e),t.status&&a.set("status",t.status),t.email&&a.set("email",t.email),n&&a.set("cursor",n),ve.request(`/ops/growth/coupon-codes?${a.toString()}`)},initialPageParam:null,getNextPageParam:n=>n.nextCursor,enabled:!!e,retry:1})}function T3s(e={}){return ll({queryKey:["ops","growth","shared-codes",e],queryFn:({pageParam:t})=>{const n=new URLSearchParams;e.status&&n.set("status",e.status),t&&n.set("cursor",t);const a=n.toString();return ve.request(`/ops/growth/shared-codes${a?`?${a}`:""}`)},initialPageParam:null,getNextPageParam:t=>t.nextCursor,retry:1})}function R3s(){const e=Re();return ke({mutationFn:t=>ve.request("/ops/growth/shared-codes",{method:"POST",body:t,idempotent:!0}),onSuccess:()=>{e.invalidateQueries({queryKey:["ops","growth","shared-codes"]})}})}function P3s(e){return ll({queryKey:["ops","growth","shared-code-payments",e],queryFn:({pageParam:t})=>{const n=new URLSearchParams;t&&n.set("cursor",t);const a=n.toString();return ve.request(`/ops/growth/shared-codes/${encodeURIComponent(e??"")}/payments${a?`?${a}`:""}`)},initialPageParam:null,getNextPageParam:t=>t.nextCursor,enabled:!!e,retry:1})}function tJ(){const e=Re();return ke({mutationFn:t=>ve.request(`/ops/growth/coupon-codes/${encodeURIComponent(t)}/disable`,{method:"POST",idempotent:!0}),onSuccess:()=>{e.invalidateQueries({queryKey:["ops","growth","shared-codes"]}),e.invalidateQueries({queryKey:["ops","growth","coupon-codes"]}),e.invalidateQueries({queryKey:["ops","growth","coupon-batches"]})}})}function _3s(){const e=Re();return ke({mutationFn:t=>ve.request("/ops/growth/redeem-batches",{method:"POST",body:t,idempotent:!0}),onSuccess:()=>{e.invalidateQueries({queryKey:["ops","growth","redeem-batches"]})}})}function j3s(){return ll({queryKey:["ops","growth","redeem-batches"],queryFn:({pageParam:e})=>{const t=new URLSearchParams;e&&t.set("cursor",e);const n=t.toString();return ve.request(`/ops/growth/redeem-batches${n?`?${n}`:""}`)},initialPageParam:null,getNextPageParam:e=>e.nextCursor,retry:1})}function N3s(e,t={}){return ll({queryKey:["ops","growth","redeem-codes",e,t],queryFn:({pageParam:n})=>{const a=new URLSearchParams;return e&&a.set("batchCode",e),t.status&&a.set("status",t.status),n&&a.set("cursor",n),ve.request(`/ops/growth/redeem-codes?${a.toString()}`)},initialPageParam:null,getNextPageParam:n=>n.nextCursor,enabled:!!e,retry:1})}function D3s(){return ke({mutationFn:e=>ve.request(`/ops/growth/redeem-batches/${encodeURIComponent(e)}/reveal`)})}function M3s(){const e=Re();return ke({mutationFn:t=>ve.request(`/ops/growth/redeem-batches/${encodeURIComponent(t)}/disable`,{method:"POST",idempotent:!0}),onSuccess:()=>{e.invalidateQueries({queryKey:["ops","growth","redeem-batches"]}),e.invalidateQueries({queryKey:["ops","growth","redeem-codes"]})}})}function E3s(){const e=Re();return ke({mutationFn:t=>ve.request(`/ops/growth/redeem-codes/${encodeURIComponent(t)}/reverse`,{method:"POST",idempotent:!0}),onSuccess:()=>{e.invalidateQueries({queryKey:["ops","growth","redeem-codes"]}),e.invalidateQueries({queryKey:["ops","growth","redeem-batches"]})}})}function I3s(){return Ue({queryKey:["ops","growth","referral-rule"],queryFn:()=>ve.request("/ops/growth/rules/referral").then(e=>e.rule),retry:1})}function O3s(){return Ue({queryKey:["ops","growth","referral-rule-versions"],queryFn:()=>ve.request("/ops/growth/rules/referral/versions").then(e=>e.versions),retry:1})}function nJ(e,t,n){const a=`/ops/growth/rules/referral/versions/${e}/${t}`;return n?`${a}?cursor=${encodeURIComponent(n)}`:a}function L3s(e){return ll({queryKey:["ops","growth","referral-version",e,"bindings"],queryFn:({pageParam:t})=>ve.request(nJ(e,"bindings",t)),initialPageParam:null,getNextPageParam:t=>t.nextCursor,enabled:e!=null,retry:1})}function U3s(e){return ll({queryKey:["ops","growth","referral-version",e,"cashback"],queryFn:({pageParam:t})=>ve.request(nJ(e,"cashback",t)),initialPageParam:null,getNextPageParam:t=>t.nextCursor,enabled:e!=null,retry:1})}function B3s(){const e=Re();return ke({mutationFn:t=>ve.request("/ops/growth/rules/referral",{method:"PATCH",body:t,idempotent:!0}),onSuccess:()=>
968{e.invalidateQueries({queryKey:["ops","growth","referral-rule"]}),e.invalidateQueries({queryKey:["ops","growth","referral-rule-versions"]})}})}function F3s(e){return Ue({queryKey:["ops","user",e,"referrals"],queryFn:()=>ve.request(`/ops/growth/users/${e}/referrals`),enabled:!!e,retry:1})}function z3s(e){return Ue({queryKey:["ops","user",e,"referral-events"],queryFn:()=>ve.request(`/ops/growth/users/${e}/referral-events`),enabled:!!e,retry:1})}const q3s=6e4;function H3s(e){const t=Math.floor(Date.now()/q3s);return["manual_grant",e.userPublicId,e.amount,e.kind??"bonus",e.referenceNo??"",t].join(":")}function V3s(){const e=Re();return ke({mutationFn:t=>ve.request("/ops/growth/grants/manual",{method:"POST",body:t,idempotencyKey:H3s(t)}),onSuccess:(t,n)=>{e.invalidateQueries({queryKey:["ops","user",n.userPublicId]}),e.invalidateQueries({queryKey:["ops","users"]}),e.invalidateQueries({queryKey:["ops","grants"]})}})}function K3s(){const{t:e}=W(),t=Te(),n=g3s(),a=h3s(),s=y3s(),r=v3s(),[i,c]=h.useState(!0),[d,m]=h.useState("5.0000"),[f,p]=h.useState("1");return h.useEffect(()=>{n.data&&(c(n.data.enabled),m(n.data.creditAmount))},[n.data]),h.useEffect(()=>{s.data!=null&&p(s.data)},[s.data]),o.jsxs("div",{className:"grid gap-4 xl:grid-cols-2",children:[o.jsxs(Ee,{className:"space-y-3 p-5",children:[o.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row sm:items-start sm:justify-between",children:[o.jsxs("div",{className:"min-w-0",children:[o.jsx("h2",{className:"text-sm font-semibold",children:e("adminGrowth.signupBonus")}),o.jsx("p",{className:"mt-1 text-sm text-[color:var(--muted-foreground)]",children:e("adminGrowth.signupBonusDescription")})]}),n.data?o.jsx(Oe,{value:n.data.status,label:ct(n.data.status)}):null]}),o.jsxs("label",{className:"flex items-center gap-2 text-sm font-medium",children:[o.jsx(Zn,{checked:i,onChange:y=>c(y.target.checked)}),o.jsx("span",{children:e("adminGrowth.signupBonusEnabled")})]}),o.jsxs("div",{className:"grid gap-1.5 text-sm font-medium",children:[o.jsx("span",{children:e("adminGrowth.signupBonusAmount")}),o.jsx(ge,{type:"number",min:"0",step:"0.0001",inputMode:"decimal",value:d,onChange:y=>m(y.target.value)})]}),o.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between",children:[o.jsx(K,{className:"w-full sm:w-auto",onClick:()=>a.mutate({enabled:i,creditAmount:d.trim()||"0"}),disabled:n.isLoading||a.isPending||i&&!d.trim(),children:a.isPending?e("adminGrowth.saving"):e("adminGrowth.saveSignupBonus")}),n.data?o.jsx("p",{className:"text-xs text-[color:var(--muted-foreground)]",children:e("adminGrowth.currentSignupBonus",{amount:t.currency(Number(n.data.creditAmount))})}):null]}),n.error?o.jsx("p",{className:"text-sm text-[color:var(--destructive)]",children:n.error.message}):null,a.error?o.jsx("p",{className:"text-sm text-[color:var(--destructive)]",children:a.error.message}):null]}),o.jsxs(Ee,{className:"space-y-3 p-5",children:[o.jsxs("div",{className:"min-w-0",children:[o.jsx("h2",{className:"text-sm font-semibold",children:e("adminGrowth.defaultLowBalanceThreshold",{defaultValue:"Default low-balance alert"})}),o.jsx("p",{className:"mt-1 text-sm text-[color:var(--muted-foreground)]",children:e("adminGrowth.defaultLowBalanceThresholdDescription",{defaultValue:"New users get an email low-balance alert at this threshold by default. Changing it only affects future signups, not existing wallets."})})]}),o.jsxs("div",{className:"grid gap-1.5 text-sm font-medium",children:[o.jsx("span",{children:e("adminGrowth.defaultLowBalanceThresholdAmount",{defaultValue:"Threshold (USD)"})}),o.jsx(ge,{type:"number",min:"0",step:"0.0001",inputMode:"decimal",value:f,onChange:y=>p(y.target.value)})]}),o.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between",children:[o.jsx(K,{className:"w-full sm:w-auto",onClick:()=>r.mutate(f.trim()),disabled:s.isLoading||r.isPending||!f.trim(),children:r.isPending?e("adminGrowth.saving"):e("adminGrowth.saveDefaultLowBalanceThreshold",{defaultValue:"Save threshold"})}),s.data?o.jsx("p",{className:"text-xs text-[color:var(--muted-foreground)]",children:e("adminGrowth.currentDefaultLowBalanceThreshold",{defaultValue:"Current: {{amount}}",amount:t.currency(Number(s.data))})}):null]}),s.error?o.jsx("p",{className:"text-sm text-[color:var(--destructive)]",children:s.error.message}):null,r.error?o.jsx("p",{className:"text-sm text-[color:var(--destructive)]",children:r.error.message}):null]})]})}function bx({label:e,hint:t,options:n,selected:a,onToggle:s}){return o.jsxs("fieldset",{className:"grid gap-1.5",children:[o.jsx("legend",{className:"text-sm font-medium text-[color:var(--foreground)]",children:e}),o.jsx("div",{className:"flex flex-wrap gap-3",children:n.map(r=>o.jsxs("label",{className:"flex items-center gap-1.5 text-sm",children:[o.jsx(Zn,{checked:a.has(r.value),onChange:()=>s(r.value)}),r.label]},r.value))}),t?o.jsx("span",{className:"text-xs text-[color:var(--muted-foreground)]",children:t}):null]})}function Pu(e){const t=Object.entries(e).filter(([,a])=>a!==void 0&&a!==""),n=new URLSearchParams(t.map(([a,s])=>
968[a,String(s)])).toString();return n?`?${n}`:""}function Dy(e={}){return Ue({queryKey:["ops","campaigns","segments",e],queryFn:()=>ve.request(`/ops/campaigns/segments${Pu({limit:100,kind:e.kind,status:e.status})}`),retry:1})}function G3s(e){return Ue({queryKey:["ops","campaigns","segment-members",e],queryFn:()=>ve.request(`/ops/campaigns/segments/${e}/members${Pu({limit:100})}`),enabled:!!e,retry:1})}function W3s(){const e=Re();return ke({mutationFn:t=>ve.request("/ops/campaigns/segments",{method:"POST",body:t,idempotent:!0}),onSuccess:()=>e.invalidateQueries({queryKey:["ops","campaigns","segments"]})})}function Y3s(){const e=Re();return ke({mutationFn:({publicId:t,...n})=>ve.request(`/ops/campaigns/segments/${t}`,{method:"PATCH",body:n,idempotent:!0}),onSuccess:()=>e.invalidateQueries({queryKey:["ops","campaigns","segments"]})})}function Q3s(){const e=Re();return ke({mutationFn:t=>ve.request(`/ops/campaigns/segments/${t}`,{method:"DELETE"}),onSuccess:()=>e.invalidateQueries({queryKey:["ops","campaigns","segments"]})})}function X3s(){const e=Re();return ke({mutationFn:({publicId:t,userPublicIds:n})=>ve.request(`/ops/campaigns/segments/${t}/members`,{method:"POST",body:{userPublicIds:n},idempotent:!0}),onSuccess:(t,{publicId:n})=>{e.invalidateQueries({queryKey:["ops","campaigns","segment-members",n]}),e.invalidateQueries({queryKey:["ops","campaigns","segments"]})}})}function Z3s(){const e=Re();return ke({mutationFn:({publicId:t,userPublicId:n})=>ve.request(`/ops/campaigns/segments/${t}/members`,{method:"DELETE",body:{userPublicId:n}}),onSuccess:(t,{publicId:n})=>{e.invalidateQueries({queryKey:["ops","campaigns","segment-members",n]}),e.invalidateQueries({queryKey:["ops","campaigns","segments"]})}})}function J3s(){const e=Re();return ke({mutationFn:t=>ve.request(`/ops/campaigns/segments/${t}/materialize`,{method:"POST",idempotent:!0}),onSuccess:(t,n)=>{e.invalidateQueries({queryKey:["ops","campaigns","segment-members",n]}),e.invalidateQueries({queryKey:["ops","campaigns","segments"]})}})}function eLs(){return ke({mutationFn:e=>ve.request("/ops/campaigns/segments/preview",{method:"POST",body:{rule:e}})})}function tLs(){return Ue({queryKey:["ops","campaigns","scopes"],queryFn:()=>ve.request(`/ops/campaigns/scopes${Pu({limit:100})}`),retry:1})}function nLs(){const e=Re();return ke({mutationFn:t=>ve.request("/ops/campaigns/scopes",{method:"POST",body:{scopeType:"model_set",...t},idempotent:!0}),onSuccess:()=>e.invalidateQueries({queryKey:["ops","campaigns","scopes"]})})}function aLs(e={}){return Ue({queryKey:["ops","campaigns","model-access",e],queryFn:()=>ve.request(`/ops/campaigns/model-access${Pu({limit:100,status:e.status})}`),retry:1})}function oLs(){const e=Re();return ke({mutationFn:t=>ve.request("/ops/campaigns/model-access",{method:"POST",body:t,idempotent:!0}),onSuccess:()=>e.invalidateQueries({queryKey:["ops","campaigns","model-access"]})})}function sLs(){const e=Re();return ke({mutationFn:({publicId:t,...n})=>ve.request(`/ops/campaigns/model-access/${t}`,{method:"PATCH",body:n,idempotent:!0}),onSuccess:()=>e.invalidateQueries({queryKey:["ops","campaigns","model-access"]})})}function rLs(){const e=Re();return ke({mutationFn:t=>ve.request(`/ops/campaigns/model-access/${t}`,{method:"DELETE"}),onSuccess:()=>e.invalidateQueries({queryKey:["ops","campaigns","model-access"]})})}function iLs(e={}){return Ue({queryKey:["ops","campaigns","discounts",e],queryFn:()=>ve.request(`/ops/campaigns/discounts${Pu({limit:100,status:e.status})}`),retry:1})}function lLs(){const e=Re();return ke({mutationFn:t=>ve.request("/ops/campaigns/discounts",{method:"POST",body:t,idempotent:!0}),onSuccess:()=>e.invalidateQueries({queryKey:["ops","campaigns","discounts"]})})}function aJ(){const e=Re();return ke({mutationFn:({publicId:t,...n})=>ve.request(`/ops/campaigns/discounts/${t}`,{method:"PATCH",body:n,idempotent:!0}),onSuccess:()=>e.invalidateQueries({queryKey:["ops","campaigns","discounts"]})})}function cLs(){const e=Re();return ke({mutationFn:t=>ve.request(`/ops/campaigns/discounts/${t}`,{method:"DELETE"}),onSuccess:()=>e.invalidateQueries({queryKey:["ops","campaigns","discounts"]})})}function dLs(e={}){return Ue({queryKey:["ops","campaigns","targeted-grants",e],queryFn:()=>ve.request(`/ops/campaigns/targeted-grants${Pu({limit:100,kind:e.kind,status:e.status})}`),retry:1})}function uLs(e){return Ue({queryKey:["ops","campaigns","targeted-grants","detail",e],queryFn:()=>ve.request(`/ops/campaigns/targeted-grants/${e}`).then(t=>t.batch),enabled:!!e,refetchInterval:t=>{const n=t.state.data?.status;return n==="pending"||n==="processing"?2e3:!1},retry:1})}function mLs(){const e=Re();return ke({mutationFn:t=>ve.request("/ops/campaigns/targeted-grants",{method:"POST",body:t}),onSuccess:()=>e.invalidateQueries({queryKey:["ops","campaigns","targeted-grants"]})})}function pLs(){const e=Re();return ke({mutationFn:({batchId:t,note:n})=>ve.request(`/ops/campaigns/targeted-grants/${t}/revoke`,{method:"POST",body:{note:n},idempotent:!0}),onSuccess:()=>e.invalidateQueries({queryKey:["ops","campaigns","targeted-grants"]})})}function oJ(e){return e.trim().length<2?Promise.resolve([]):ve.request(`/ops/campaigns/users/search${Pu({q:e})}`).then(t=>t.items)}function fLs(e){return e.length===0?Promise.resolve({matched:[],unmatchedEmails:[]}):ve.request("/ops/campaigns/users/lookup",{method:"POST",body:{emails:e}})}const Ym="__all__";function da(e){return e instanceof rn?`${e.code}: ${e.message}`:e instanceof Error?e.message:String(e)}function xN({label:e,value:t,onChange:n,hint:a,includeBlank:s,blankLabel:r}){const i=Ru(),c=h.useMemo(()=>[...i.data?.items??[]].sort((d,m)=>d.fullSlug.localeCompare(m.fullSlug)),[i.data]);return o.jsx(De,{label:e,hint:a,children:o.jsxs(Ms,{value:t===""&&s?Ym:t,onValueChange:d=>n(d===Ym?"":d),children:[o.jsx(as,{className:"min-w-0",children:o.jsx(Es,{placeholder:r??""})}),o.jsxs(os,{children:[s?o.jsx(zn,{value:Ym,children:r??" "}):null,c.map(d=>o.jsx(zn,{value:d.publicId,textClassName:"whitespace-normal [overflow-wrap:anywhere] [word-break:break-all]",children:d.fullSlug},d.publicId))]})]})})}function W0({label:e,value:t,onChange:n,allowAll:a,allLabel:s,hint:r}){const{t:i}=W(),d=Dy({status:"active"}).data?.items??[],m=s??i("adminCampaigns.allUsers");return o.jsx(De,{label:e,hint:r,children:o.jsxs(Ms,{value:t===""&&a?Ym:t,onValueChange:f=>n(f===Ym?"":f),children:[o.jsx(as,{className:"min-w-0",children:o.jsx(Es,{placeholder:a?m:""})}),o.jsxs(os,{children:[a?o.jsx(zn,{value:Ym,children:m}):null,d.map(f=>o.jsx(zn,{value:f.publicId,children:gLs(f)},f.publicId))]})]})})}function gLs(e){return`${e.name} (${e.memberCount})`}const dT="__general__";function hLs(e){const t=e.percent!=null;return{min:String(e.min??""),rewardType:t?"percent":"bonus",rewardValue:String((t?e.percent:e.bonus)??""),scopePublicId:e.scopePublicId??"",expiryDays:e.expiryDays!=null?String(e.expiryDays):""}}function yLs(e){const t=Number(e.rewardValue);return{min:Number(e.min),...e.rewardType==="percent"?{percent:t}:{bonus:t},...e.scopePublicId?{scopePublicId:e.scopePublicId}:{},...e.expiryDays.trim()?{expiryDays:Number(e.expiryDays)}:{}}}function vLs(){return{min:"",rewardType:"bonus",rewardValue:"",scopePublicId:"",expiryDays:""}}function bLs(){const{t:e}=W(),t=$3s(),n=w3s(),a=tLs(),[s,r]=h.useState(!1),[i,c]=h.useState([]),[d,m]=h.useState(""),[f,p]=h.useState(""),[y,v]=h.useState(!0),[$,x]=h.useState(null);if(t.data&&t.data.updatedAt!==$){x(t.data.updatedAt),r(t.data.status==="active");const R=t.data.conditions??{};c((R.tiers??[]).map(hLs)),m(R.min_topup_usd!=null?String(R.min_topup_usd):""),p(R.max_bonus_per_user_usd!=null?String(R.max_bonus_per_user_usd):""),v(R.exclude_risky??!0)}const w=h.useMemo(()=>(a.data?.items??[]).filter(R=>R.scopeType==="model_set"&&R.status==="active"),[a.data]);function S(R,_){c(P=>P.map((j,N)=>N===R?{...j,..._}:j))}function k(R){c(_=>_.filter((P,j)=>j!==R))}async function T(){try{await n.mutateAsync({enabled:s,tiers:i.map(yLs),minTopupUsd:d.trim()?Number(d):null,maxBonusPerUserUsd:f.trim()?Number(f):null,excludeRisky:y}),ie.success(e("adminGrowth.topup.saved",{defaultValue:"Top-up bonus saved"}))}catch(R){ie.error(da(R))}}return o.jsxs("div",{className:"grid gap-4",children:[o.jsxs(Ee,{className:"space-y-4 p-5",children:[o.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row sm:items-start sm:justify-between",children:[o.jsxs("div",{children:[o.jsx("h2",{className:"text-sm font-semibold",children:e("adminGrowth.topup.title",{defaultValue:"Top-up bonus"})}),o.jsx("p",{className:"mt-1 text-sm text-[color:var(--muted-foreground)]",children:e("adminGrowth.topup.description",{defaultValue:"Reward bigger top-ups with bonus credit. Each tier can grant general credit or credit restricted to a model group."})})]}),t.data?o.jsx(Oe,{value:t.data.status,label:ct(t.data.status)}):null]}),o.jsxs("label",{className:"flex items-center justify-between gap-3 text-sm font-medium",children:[o.jsx("span",{children:e("adminGrowth.topup.enabled",{defaultValue:"Enable top-up bonus"})}),o.jsx(js,{checked:s,onCheckedChange:r})]}),o.jsxs(sn,{title:e("adminGrowth.topup.tiers",{defaultValue:"Bonus tiers"}),hint:e("adminGrowth.topup.tiersHint",{defaultValue:"Top-up matches the highest tier whose threshold it reaches. Restricted credit only applies to synchronous text/image calls — not video or async image jobs."}),children:[i.length===0?o.jsx("p",{className:"text-sm text-[color:var(--muted-foreground)]",children:e("adminGrowth.topup.noTiers",{defaultValue:"No tiers yet. Add one to start rewarding top-ups."})}):null,i.map((R,_)=>o.jsx(Ee,{className:"grid gap-4 bg-[color:var(--muted)] p-4",children:o.jsxs("div",{className:"flex items-start justify-between gap-3",children:[o.jsxs("div",{className:"grid flex-1 gap-4 md:grid-cols-2",children:[o.jsx(De,{label:e("adminGrowth.topup.min",{defaultValue:"Min top-up (USD)"}),children:o.jsx(ge,{type:"number",min:"0",step:"0.01",inputMode:"decimal",value:R.min,onChange:P=>S(_,{min:P.target.value}),placeholder:"50"})}),o.jsx(De,{label:e("adminGrowth.topup.rewardType",{defaultValue:"Reward"}),children:o.jsx(el,{value:R.rewardType,onValueChange:P=>S(_,{rewardType:P}),options:[{value:"bonus",label:e("adminGrowth.topup.bonus",{defaultValue:"Fixed (USD)"})},{value:"percent",label:e("adminGrowth.topup.percent",{defaultValue:"Percent (%)"})}]})}),o.jsx(De,{label:R.rewardType==="percent"?e("adminGrowth.topup.rewardPercent",{defaultValue:"Percent of top-up (%)"}):e("adminGrowth.topup.rewardBonus",{defaultValue:"Bonus amount (USD)"}),children:o.jsx(ge,{type:"number",min:"0",step:R.rewardType==="percent"?"1":"0.01",inputMode:"decimal",value:R.rewardValue,onChange:P=>S(_,{rewardValue:P.target.value}),placeholder:R.rewardType==="percent"?"25":"5"})}),o.jsx(De,{label:e("adminGrowth.topup.expiryDays",{defaultValue:"Expiry (days, blank = never)"}),children:o.jsx(ge,{type:"number",min:"1",step:"1",inputMode:"numeric",value:R.expiryDays,onChange:P=>S(_,{expiryDays:P.target.value}),placeholder:e("adminGrowth.topup.noExpiry",{defaultValue:"Never"})})}),o.jsx(De,{label:e("adminGrowth.topup.scope",{defaultValue:"Credit scope"}),hint:e("adminGrowth.topup.scopeHint",{defaultValue:"General credit works on any model; a model group restricts the bonus to those models."}),className:"md:col-span-2",children:o.jsxs(Ms,{value:R.scopePublicId===""?dT:R.scopePublicId,onValueChange:P=>S(_,{scopePublicId:P===dT?"":P}),children:[o.jsx(as,{children:o.jsx(Es,{})}),o.jsxs(os,{children:[o.jsx(zn,{value:dT,children:e("adminGrowth.topup.scopeGeneral",{defaultValue:"General (any model)"})}),w.map(P=>o.jsx(zn,{value:P.publicId,children:xLs(P)},P.publicId))]})]})})]}),o.jsx(Aa,{"aria-label":e("adminGrowth.topup.removeTier",{defaultValue:"Remove tier"}),variant:"ghost",onClick:()=>k(_),children:o.jsx(Sc,{className:"size-4"})})]})},_)),o.jsx("div",{children:o.jsxs(K,{variant:"outline",onClick:()=>c(R=>[...R,vLs()]),children:[o.jsx(wr,{className:"size-4"}),e("adminGrowth.topup.addTier",{defaultValue:"Add tier"})]})})]}),o.jsxs(sn,{title:e("adminGrowth.topup.antifraud",{defaultValue:"Abuse guards"}),contentClassName:"md:grid-cols-2",children:[o.jsx(De,{label:e("adminGrowth.topup.minTopup",{defaultValue:"Min top-up to qualify (USD, blank = none)"}),children:o.jsx(ge,{type:"number",min:"0",step:"0.01",inputMode:"decimal",value:d,onChange:R=>m(R.target.value),placeholder:e("adminGrowth.topup.none",{defaultValue:"None"})})}),o.jsx(De,{label:e("adminGrowth.topup.maxBonusPerUser",{defaultValue:"Max bonus per user (USD, blank = none)"}),children:o.jsx(ge,{type:"number",min:"0",step:"0.01",inputMode:"decimal",value:f,onChange:R=>p(R.target.value),placeholder:e("adminGrowth.topup.none",{defaultValue:"None"})})}),o.jsxs("label",{className:"flex items-center justify-between gap-3 text-sm font-medium md:col-span-2",children:[o.jsx("span",{children:e("adminGrowth.topup.excludeRisky",{defaultValue:"Exclude watchlisted / blocked users"})}),o.jsx(js,{checked:y,onCheckedChange:v})]})]}),o.jsx("div",{className:"flex items-center gap-2 pt-1",children:o.jsx(K,{onClick:T,disabled:t.isLoading||n.isPending,children:n.isPending?e("adminGrowth.saving"):e("adminGrowth.topup.save",{defaultValue:"Save top-up bonus"})})}),t.error?o.jsx("p",{className:"text-sm text-[color:var(--destructive)]",children:t.error.message}):null,n.error?o.jsx("p",{className:"text-sm text-[color:var(--destructive)]",children:n.error.message}):null]}),o.jsx($Ls,{})]})}function xLs(e){const t=e.definition?.model_ids,n=Array.isArray(t)?t.length:0,a=e.name?.trim()||e.publicId;return n>0?`${a} (${n})`:a}function $Ls(){const{t:e}=W(),t=Ru(),n=nLs(),[a,s]=h.useState(""),[r,i]=h.useState([]),c=h.useMemo(()=>[...t.data?.items??[]].sort((m,f)=>m.fullSlug.localeCompare(f.fullSlug)).map(m=>({value:m.publicId,label:m.fullSlug})),[t.data]);async function d(){try{await n.mutateAsync({modelPublicIds:r,name:a.trim()||void 0}),ie.success(e("adminGrowth.topup.scopeCreated",{defaultValue:"Model group created"})),s(""),i([])}catch(m){ie.error(da(m))}}return o.jsxs(Ee,{className:"space-y-4 p-5",children:[o.jsxs("div",{children:[o.jsx("h2",{className:"text-sm font-semibold",children:e("adminGrowth.topup.createScope",{defaultValue:"New restricted model group"})}),o.jsx("p",{className:"mt-1 text-sm text-[color:var(--muted-foreground)]",children:e("adminGrowth.topup.createScopeDescription",{defaultValue:"Pick the models a restricted bonus may be spent on, then reference this group from a tier above."})})]}),o.jsxs("div",{className:"grid gap-4 md:grid-cols-2",children:[o.jsx(De,{label:e("adminGrowth.topup.scopeName",{defaultValue:"Group name"}),children:o.jsx(ge,{value:a,onChange:m=>s(m.target.value),placeholder:e("adminGrowth.topup.scopeNamePlaceholder",{defaultValue:"High-margin models"})})}),o.jsx(De,{label:e("adminGrowth.topup.scopeModels",{defaultValue:"Models"}),children:o.jsx(ly,{value:r,onChange:i,options:c,allLabel:e("adminGrowth.topup.pickModels",{defaultValue:"Pick models"}),placeholder:e("adminGrowth.topup.pickModels",{defaultValue:"Pick models"}),triggerLabel:m=>m.length===0?e("adminGrowth.topup.pickModels",{defaultValue:"Pick models"}):e("adminGrowth.topup.nModels",{defaultValue:"{{count}} models",count:m.length})})})]}),o.jsxs("div",{className:"flex items-center gap-3",children:[o.jsx(K,{onClick:d,disabled:r.length===0||n.isPending,children:n.isPending?e("adminGrowth.saving"):e("adminGrowth.topup.createScopeButton",{defaultValue:"Create group"})}),r.length>0?o.jsx(Xt,{variant:"outline",children:e("adminGrowth.topup.nModels",{defaultValue:"{{count}} models",count:r.length})}):null]})]})}function wLs(e){if(e==null)return"";const t=String(e),n=/^[=+\-@\t\r]/.test(t)?`'${t}`:t;return/[",\n\r]/.test(n)?`"${n.replaceAll('"','""')}"`:n}function My(e,t){const n=t.map(i=>i.map(wLs).join(",")).join(`
969`),a=new Blob([n],{type:"text/csv;charset=utf-8"}),s=URL.createObjectURL(a),r=document.createElement("a");r.href=s,r.download=e,r.click(),URL.revokeObjectURL(s)}function kLs(e,t){return!e||t==null?"":e==="bonus_percent"?`+${t}%`:e==="percent"?`${t}%`:`$${t}`}function CLs(e,t){const n=[t("adminGrowth.csv.code"),t("adminGrowth.csv.discount"),t("adminGrowth.csv.redeemed"),t("adminGrowth.csv.cap"),t("adminGrowth.csv.perUser"),t("adminGrowth.csv.status"),t("adminGrowth.csv.expiresAt"),t("adminGrowth.csv.batch"),t("adminGrowth.csv.createdAt")],a=e.map(s=>[`····${s.codeSuffix??""}`,kLs(s.discountType,s.di
969scountValue),s.redeemed,s.maxRedemptions,s.maxRedemptionsPerUser,s.status,s.expiresAt??"",s.batchCode??"",s.createdAt]);My(`onehop-shared-codes-${new Date().toISOString().slice(0,10)}.csv`,[n,...a])}function SLs(e,t,n){const a=[n("adminGrowth.csv.email"),n("adminGrowth.csv.paid"),n("adminGrowth.csv.credited"),n("adminGrowth.csv.bonus"),n("adminGrowth.csv.paidAt")],s=t.map(r=>[r.email??"",r.paidUsd,r.creditedUsd,r.bonusUsd??"",r.paidAt]);My(`onehop-shared-code-payments-${e}-${new Date().toISOString().slice(0,10)}.csv`,[a,...s])}function ALs(e,t,n){const a=[n("adminGrowth.csv.code"),n("adminGrowth.csv.status"),n("adminGrowth.csv.redeemedBy"),n("adminGrowth.csv.redeemedAt"),n("adminGrowth.csv.paid"),n("adminGrowth.csv.discountAmount")],s=t.map(r=>[`····${r.codeSuffix??""}`,r.status,r.redeemedByEmail??"",r.redeemedAt??"",r.paymentAmount??"",r.discountAmount??""]);My(`onehop-coupon-codes-${e}-${new Date().toISOString().slice(0,10)}.csv`,[a,...s])}const TLs="discount_default";function sJ(e,t,n){return!e||t==null?"—":e==="bonus_percent"?`+${t}%`:e==="percent"?`${t}%`:n.currency(Number(t))}function RLs(e){return e.status==="disabled"||e.disabledAt?"disabled":e.expiresAt&&new Date(e.expiresAt).getTime()<Date.now()?"expired":e.redeemed>=e.maxRedemptions?"exhausted":e.status}function PLs(){return o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"grid gap-4 xl:grid-cols-2",children:[o.jsx(_Ls,{}),o.jsx(jLs,{})]}),o.jsx(MLs,{}),o.jsx(ILs,{})]})}function _Ls(){const{t:e}=W(),t=Te(),n=b3s(),a=x3s(),[s,r]=h.useState(!0),[i,c]=h.useState("fixed_usd"),[d,m]=h.useState("2");h.useEffect(()=>{n.data&&(r(n.data.status==="active"),n.data.discountType&&c(n.data.discountType),n.data.discountValue!=null&&m(n.data.discountValue))},[n.data]);const f=n.data&&n.data.discountValue!=null?sJ(n.data.discountType,n.data.discountValue,t):null;return o.jsxs(Ee,{className:"space-y-3 p-5",children:[o.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row sm:items-start sm:justify-between",children:[o.jsxs("div",{className:"min-w-0",children:[o.jsx("h2",{className:"text-sm font-semibold",children:e("adminGrowth.discountRule")}),o.jsx("p",{className:"mt-1 text-sm text-[color:var(--muted-foreground)]",children:e("adminGrowth.discountRuleDescription")})]}),n.data?o.jsx(Oe,{value:n.data.status,label:ct(n.data.status)}):null]}),f?o.jsx("p",{className:"text-xs text-[color:var(--muted-foreground)]",children:e("adminGrowth.discountEffective",{defaultValue:"In effect: {{state}} · {{value}} off",state:n.data?.status==="active"?e("adminGrowth.stateEnabled"):e("adminGrowth.stateDisabled"),value:f})}):null,o.jsxs("label",{className:"flex items-center gap-2 text-sm font-medium",children:[o.jsx(Zn,{checked:s,onChange:p=>r(p.target.checked)}),o.jsx("span",{children:e("adminGrowth.discountEnabled")})]}),o.jsxs(ca,{label:e("adminGrowth.discountType"),value:i,onChange:p=>c(p.target.value),children:[o.jsx("option",{value:"fixed_usd",children:e("adminGrowth.discountFixed")}),o.jsx("option",{value:"percent",children:e("adminGrowth.discountPercent")})]}),o.jsxs("div",{className:"grid gap-1.5 text-sm font-medium",children:[o.jsx("span",{children:e(i==="percent"?"adminGrowth.discountValuePercent":"adminGrowth.discountValueFixed")}),o.jsx(ge,{type:"number",min:"0",step:"0.0001",inputMode:"decimal",value:d,onChange:p=>m(p.target.value)})]}),o.jsx(K,{className:"w-full sm:w-auto",onClick:()=>a.mutate({enabled:s,discountType:i,discountValue:d.trim()||"0"}),disabled:n.isLoading||a.isPending||s&&!d.trim(),children:a.isPending?e("adminGrowth.saving"):e("adminGrowth.saveDiscount")}),n.error?o.jsx("p",{className:"text-sm text-[color:var(--destructive)]",children:n.error.message}):null,a.error?o.jsx("p",{className:"text-sm text-[color:var(--destructive)]",children:a.error.message}):null]})}function jLs(){const{t:e}=W(),[t,n]=h.useState("shared");return o.jsxs(Ee,{className:"space-y-3 p-5",children:[o.jsxs("div",{className:"min-w-0",children:[o.jsx("h2",{className:"text-sm font-semibold",children:e("adminGrowth.createIssuance",{defaultValue:"Create codes"})}),o.jsx("p",{className:"mt-1 text-sm text-[color:var(--muted-foreground)]",children:e("adminGrowth.createIssuanceDescription",{defaultValue:"A shared code is one code many users can redeem up to N times; a unique batch is N one-time codes."})})]}),o.jsxs(ca,{label:e("adminGrowth.formLabel",{defaultValue:"Code type"}),value:t,onChange:a=>n(a.target.value),children:[o.jsx("option",{value:"shared",children:e("adminGrowth.formShared",{defaultValue:"Single shared code"})}),o.jsx("option",{value:"unique",children:e("adminGrowth.formUniqueBatch",{defaultValue:"Unique code batch"})})]}),t==="shared"?o.jsx(NLs,{}):o.jsx(DLs,{})]})}function NLs(){const{t:e}=W(),t=R3s(),[n,a]=h.useState(""),[s,r]=h.useState("percent"),[i,c]=h.useState("10"),[d,m]=h.useState("100"),[f,p]=h.useState("1"),[y,v]=h.useState(""),[$,x]=h.useState(""),[w,S]=h.useState(""),[k,T]=h.useState(!1),R=t.data?.code??null;async function _(){if(R)try{await navigator.clipboard.writeText(R),T(!0),setTimeout(()=>T(!1),2e3),ie.success(e("common.copied",{defaultValue:"Copied"}))}catch{ie.error(e("common.copyFailed",{defaultValue:"Failed to copy"}))}}function P(){T(!1),t.mutate({code:n.trim()||null,discountType:s,discountValue:i.trim()||"0",maxRedemptions:Number(d)||0,maxRedemptionsPerUser:Number(f)||1,expiresAt:y?new Date(y).toISOString():null,batchCode:$.trim()||null,bonusExpiryDays:s==="bonus_percent"&&w.trim()?Number(w):null})}return o.jsxs("div",{className:"space-y-3",children:[o.jsxs("div",{className:"grid gap-1.5 text-sm font-medium",children:[o.jsx("span",{children:e("adminGrowth.sharedCodeText",{defaultValue:"Code text (leave blank for random)"})}),o.jsx(ge,{value:n,onChange:j=>a(j.target.value.toUpperCase()),placeholder:e("adminGrowth.sharedCodeRandomHint",{defaultValue:"e.g. WELCOME100"})})]}),o.jsxs("div",{className:"grid gap-3 sm:grid-cols-2",children:[o.jsxs(ca,{label:e("adminGrowth.discountType"),value:s,onChange:j=>r(j.target.value),children:[o.jsx("option",{value:"fixed_usd",children:e("adminGrowth.discountFixed")}),o.jsx("option",{value:"percent",children:e("adminGrowth.discountPercent")}),o.jsx("option",{value:"bonus_percent",children:e("adminGrowth.discountTypeBonusPercent",{defaultValue:"Bonus % on top-up"})})]}),o.jsxs("label",{className:"grid gap-1.5 text-sm font-medium",children:[o.jsx("span",{children:s==="fixed_usd"?e("adminGrowth.discountValueFixed"):s==="percent"?e("adminGrowth.discountValuePercent"):e("adminGrowth.discountValueBonusPercent",{defaultValue:"Bonus (%)"})}),o.jsx(ge,{type:"number",min:"0",step:"0.0001",inputMode:"decimal",value:i,onChange:j=>c(j.target.value)})]}),o.jsxs("label",{className:"grid gap-1.5 text-sm font-medium",children:[o.jsx("span",{children:e("adminGrowth.sharedMaxRedemptions",{defaultValue:"Total redemptions (N)"})}),o.jsx(ge,{type:"number",min:"1",step:"1",inputMode:"numeric",value:d,onChange:j=>m(j.target.value)})]}),o.jsxs("label",{className:"grid gap-1.5 text-sm font-medium",children:[o.jsx("span",{children:e("adminGrowth.sharedPerUser",{defaultValue:"Per user"})}),o.jsx(ge,{type:"number",min:"1",step:"1",inputMode:"numeric",value:f,onChange:j=>p(j.target.value)})]}),o.jsxs("label",{className:"grid gap-1.5 text-sm font-medium",children:[o.jsx("span",{children:e("adminGrowth.expiresAt",{defaultValue:"Expires at (optional)"})}),o.jsx(ge,{type:"datetime-local",value:y,onChange:j=>v(j.target.value)})]}),o.jsxs("label",{className:"grid gap-1.5 text-sm font-medium",children:[o.jsx("span",{children:e("adminGrowth.batchCode")}),o.jsx(ge,{value:$,onChange:j=>x(j.target.value),placeholder:e("adminGrowth.batchCodeOptional",{defaultValue:"optional group"})})]}),s==="bonus_percent"?o.jsxs("label",{className:"grid gap-1.5 text-sm font-medium",children:[o.jsx("span",{children:e("adminGrowth.bonusExpiryDays",{defaultValue:"Bonus validity (days, optional)"})}),o.jsx(ge,{type:"number",min:"1",step:"1",inputMode:"numeric",value:w,onChange:j=>S(j.target.value),placeholder:e("adminGrowth.bonusExpiryDaysHint",{defaultValue:"blank = never expires"})})]}):null]}),o.jsx(K,{variant:"secondary",className:"w-full sm:w-auto",onClick:P,disabled:t.isPending||!i.trim()||!d.trim(),children:t.isPending?e("adminGrowth.creating"):e("adminGrowth.createSharedCode",{defaultValue:"Create shared code"})}),R?o.jsxs("div",{className:"rounded-md border border-[color:var(--border)] bg-[color:var(--muted)]/30 p-3",children:[o.jsx("p",{className:"text-sm font-medium",children:e("adminGrowth.sharedCodeCreated",{defaultValue:"Shared code created"})}),o.jsxs("div",{className:"mt-2 flex items-center justify-between gap-3",children:[o.jsx("code",{className:"break-all font-mono text-sm font-semibold",children:R}),o.jsxs(K,{variant:"outline",size:"sm",onClick:_,children:[k?o.jsx(cy,{className:"size-4"}):o.jsx(Ow,{className:"size-4"}),e(k?"adminGrowth.copied":"adminGrowth.copyAll")]})]})]}):null,t.error?o.jsx("p",{className:"text-sm text-[color:var(--destructive)]",children:t.error.message}):null]})}function DLs(){const{t:e}=W(),t=C3s(),[n,a]=h.useState("10"),[s,r]=h.useState("ops-batch"),[i,c]=h.useState(!1),[d,m]=h.useState("fixed_usd"),[f,p]=h.useState("2"),[y,v]=h.useState(!1),$=t.data?.codes??[];async function x(){if($.length!==0)try{await navigator.clipboard.writeText($.join(`
970`)),v(!0),setTimeout(()=>v(!1),2e3),ie.success(e("common.copied",{defaultValue:"Copied"}))}catch{ie.error(e("common.copyFailed",{defaultValue:"Failed to copy"}))}}function w(){v(!1),t.mutate({ruleCode:TLs,batchCode:s,count:Number(n),...i?{discountType:d,discountValue:f.trim()||"0"}:{}})}return o.jsxs("div",{className:"space-y-3",children:[o.jsxs("div",{className:"grid gap-3 sm:grid-cols-2",children:[o.jsx(ca,{label:e("adminGrowth.count"),value:n,onChange:S=>a(S.target.value),children:$hs.map(S=>o.jsx("option",{value:S.value,children:S.label},S.value))}),o.jsxs("label",{className:"grid gap-1.5 text-sm font-medium",children:[o.jsx("span",{children:e("adminGrowth.batchCode")}),o.jsx(ge,{"aria-label":e("adminGrowth.batchCode"),value:s,onChange:S=>r(S.target.value)})]})]}),o.jsxs("label",{className:"flex items-center gap-2 text-sm font-medium",children:[o.jsx(Zn,{checked:i,onChange:S=>c(S.target.checked)}),o.jsx("span",{children:e("adminGrowth.batchOwnDiscount",{defaultValue:"Use a discount for this batch (else the rule above)"})})]}),i?o.jsxs("div",{className:"grid gap-3 sm:grid-cols-2",children:[o.jsxs(ca,{label:e("adminGrowth.discountType"),value:d,onChange:S=>m(S.target.value),children:[o.jsx("option",{value:"fixed_usd",children:e("adminGrowth.discountFixed")}),o.jsx("option",{value:"percent",children:e("adminGrowth.discountPercent")})]}),o.jsxs("label",{className:"grid gap-1.5 text-sm font-medium",children:[o.jsx("span",{children:e(d==="percent"?"adminGrowth.discountValuePercent":"adminGrowth.discountValueFixed")}),o.jsx(ge,{type:"number",min:"0",step:"0.0001",inputMode:"decimal",value:f,onChange:S=>p(S.target.value)})]})]}):null,o.jsx(K,{variant:"secondary",className:"w-full sm:w-auto",onClick:w,disabled:t.isPending||!s.trim(),children:t.isPending?e("adminGrowth.creating"):e("adminGrowth.createBatch")}),$.length>0?o.jsxs("div",{className:"rounded-md border border-[color:var(--border)] bg-[color:var(--muted)]/30 p-3",children:[o.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between",children:[o.jsxs("div",{children:[o.jsx("p",{className:"text-sm font-medium",children:e("adminGrowth.codesCreated",{count:$.length})}),o.jsx("p",{className:"mt-1 text-xs text-[color:var(--muted-foreground)]",children:e("adminGrowth.batch",{code:s})})]}),o.jsxs(K,{variant:"outline",size:"sm",onClick:x,children:[y?o.jsx(cy,{className:"size-4"}):o.jsx(Ow,{className:"size-4"}),e(y?"adminGrowth.copied":"adminGrowth.copyAll")]})]}),o.jsx("div",{className:"mt-3 grid max-h-56 gap-1 overflow-auto rounded border border-[color:var(--border)] bg-[color:var(--background)] p-2",children:$.map(S=>o.jsx("code",{className:"break-all text-xs",children:S},S))})]}):null,t.error?o.jsx("p",{className:"text-sm text-[color:var(--destructive)]",children:t.error.message}):null]})}function MLs(){const{t:e}=W(),t=Te(),{params:n,patch:a}=Mt(),s=Pe(n,"scStatus"),r=Pe(n,"scPay"),i=T3s({status:s||void 0}),c=tJ(),d=h.useMemo(()=>i.data?.pages.flatMap(y=>y.items)??[],[i.data]),m=d.find(y=>y.publicId===r)??null;async function f(y){if(await zt({title:e("adminGrowth.disableCodeConfirmTitle",{defaultValue:"Disable this code?"}),message:e("adminGrowth.disableCodeConfirmMessage",{defaultValue:"New checkouts are blocked immediately. Orders already in checkout can still complete."}),confirmText:e("adminGrowth.disableCode",{defaultValue:"Disable"}),variant:"destructive"}))try{await c.mutateAsync(y.publicId),ie.success(e("adminGrowth.codeDisabled",{defaultValue:"Code disabled"}))}catch($){ie.error($.message)}}const p=[{header:e("adminGrowth.code"),cell:y=>o.jsxs("code",{className:"font-mono text-xs",children:["····",y.codeSuffix??""]}),mobileValue:"break-all"},{header:e("adminGrowth.discount"),cell:y=>sJ(y.discountType,y.discountValue,t)},{header:e("adminGrowth.colRedeemedTotal",{defaultValue:"Used / cap"}
970),align:"right",cell:y=>o.jsxs("span",{className:"tabular-nums",children:[y.redeemed,"/",y.maxRedemptions]})},{header:e("adminGrowth.colPerUser",{defaultValue:"Per user"}),align:"right",cell:y=>o.jsx("span",{className:"tabular-nums",children:y.maxRedemptionsPerUser})},{header:e("adminGrowth.colExpiry",{defaultValue:"Expires"}),cell:y=>y.expiresAt?t.dateTime(y.expiresAt):"—"},{header:e("adminGrowth.status"),cell:y=>o.jsx(Oe,{value:RLs(y)})},{header:"",sticky:"right",cell:y=>o.jsxs("div",{className:"flex items-center justify-end gap-1",children:[o.jsx(K,{variant:"ghost",size:"sm",onClick:()=>a({scPay:r===y.publicId?void 0:y.publicId}),children:e("adminGrowth.sharedPayments.view",{defaultValue:"Payments"})}),y.status==="disabled"?null:o.jsx(K,{variant:"ghost",size:"sm",onClick:()=>f(y),children:e("adminGrowth.disableCode",{defaultValue:"Disable"})})]})}];return o.jsxs(Ee,{children:[o.jsxs("div",{className:"flex flex-col gap-3 border-b border-[color:var(--border)] px-5 py-4 sm:flex-row sm:items-end sm:justify-between",children:[o.jsxs("div",{className:"min-w-0",children:[o.jsx("h2",{className:"text-sm font-semibold",children:e("adminGrowth.sharedCodesList",{defaultValue:"Shared codes"})}),o.jsx("p",{className:"mt-1 text-sm text-[color:var(--muted-foreground)]",children:e("adminGrowth.sharedCodesListDescription",{defaultValue:"One code, many users. Used count tracks paid redemptions."})})]}),o.jsxs("div",{className:"flex items-end gap-2",children:[o.jsx(Ze,{label:e("adminGrowth.statusFilter",{defaultValue:"Status"}),value:s,options:whs,onChange:y=>a({scStatus:y||void 0})}),o.jsxs(K,{variant:"outline",size:"sm",disabled:d.length===0,onClick:()=>CLs(d,e),children:[o.jsx($u,{className:"size-4"}),e("adminGrowth.exportCsv",{defaultValue:"CSV"})]})]})]}),o.jsxs("div",{className:"p-3",children:[o.jsx(Pt,{label:e("adminGrowth.sharedCodesList",{defaultValue:"Shared codes"}),rows:d,columns:p,isLoading:i.isLoading,error:i.error,emptyTitle:e("adminGrowth.noSharedCodes",{defaultValue:"No shared codes yet"})}),i.hasNextPage?o.jsx("div",{className:"mt-3 text-center",children:o.jsx(K,{variant:"outline",size:"sm",onClick:()=>i.fetchNextPage(),disabled:i.isFetchingNextPage,children:e("adminGrowth.loadMore")})}):null]}),m?o.jsx(ELs,{code:m}):null]})}function ELs({code:e}){const{t}=W(),n=Te(),a=P3s(e.publicId),s=h.useMemo(()=>a.data?.pages.flatMap(c=>c.items)??[],[a.data]),r=a.data?.pages[0]?.summary??null,i=[{header:t("adminGrowth.sharedPayments.email",{defaultValue:"User"}),cell:c=>c.email??"—",mobileValue:"break-all"},{header:t("adminGrowth.paid"),align:"right",cell:c=>o.jsx("span",{className:"tabular-nums",children:n.currency(Number(c.paidUsd))})},{header:t("adminGrowth.sharedPayments.credited",{defaultValue:"Credited"}),align:"right",cell:c=>o.jsx("span",{className:"tabular-nums",children:n.currency(Number(c.creditedUsd))})},{header:t("adminGrowth.sharedPayments.bonus",{defaultValue:"Bonus"}),align:"right",cell:c=>o.jsx("span",{className:"tabular-nums",children:c.bonusUsd!=null&&Number(c.bonusUsd)>0?`+${n.currency(Number(c.bonusUsd))}`:"—"})},{header:t("adminGrowth.time"),cell:c=>n.dateTime(c.paidAt)}];return o.jsxs("div",{className:"border-t border-[color:var(--border)] bg-[color:var(--muted)]/20 p-3",children:[o.jsxs("div",{className:"mb-3 flex flex-col gap-2 sm:flex-row sm:items-end sm:justify-between",children:[o.jsxs("div",{className:"min-w-0",children:[o.jsx("p",{className:"text-sm font-medium",children:t("adminGrowth.sharedPayments.title",{defaultValue:"Payments via ····{{code}}",code:e.codeSuffix??""})}),r?o.jsx("p",{className:"mt-1 text-xs text-[color:var(--muted-foreground)]",children:t("adminGrowth.sharedPayments.summary",{defaultValue:"{{count}} payments · {{users}} users · {{paid}} paid · {{bonus}} bonus granted",count:r.paidCount,users:r.uniqueUsers,paid:n.currency(Number(r.totalPaidUsd)),bonus:n.currency(Number(r.totalBonusUsd))})}):null]}),o.jsxs(K,{variant:"outline",size:"sm",disabled:s.length===0,onClick:()=>SLs(e.codeSuffix??e.publicId,s,t),children:[o.jsx($u,{className:"size-4"}),t("adminGrowth.exportCsv",{defaultValue:"CSV"})]})]}),o.jsx(Pt,{label:t("adminGrowth.sharedPayments.title",{defaultValue:"Payments via ····{{code}}",code:e.codeSuffix??""}),rows:s.map(c=>({...c,publicId:c.intentPublicId})),columns:i,isLoading:a.isLoading,error:a.error,emptyTitle:t("adminGrowth.sharedPayments.empty",{defaultValue:"No payments through this code yet"})}),a.hasNextPage?o.jsx("div",{className:"mt-3 text-center",children:o.jsx(K,{variant:"outline",size:"sm",onClick:()=>a.fetchNextPage(),disabled:a.isFetchingNextPage,children:t("adminGrowth.loadMore")})}):null]})}function ILs(){const{t:e}=W(),t=Te(),{params:n,patch:a}=Mt(),s=Pe(n,"batchCode"),r=S3s(),i=h.useMemo(()=>(r.data?.items??[]).map(d=>({...d,publicId:d.batchCode})),[r.data]),c=[{header:e("adminGrowth.batchCode"),cell:d=>o.jsx("span",{className:"font-medium",children:d.batchCode}),mobileValue:"break-all"},{header:e("adminGrowth.batchTotal"),align:"right",cell:d=>o.jsx("span",{className:"tabular-nums",children:d.total})},{header:e("adminGrowth.batchRedeemed"),align:"right",cell:d=>o.jsx("span",{className:"tabular-nums",children:d.redeemed})},{header:e("adminGrowth.batchReserved"),align:"right",cell:d=>o.jsx("span",{className:"tabular-nums",children:d.reserved})},{header:e("adminGrowth.batchActive"),align:"right",cell:d=>o.jsx("span",{className:"tabular-nums",children:d.active})},{header:e("adminGrowth.time"),cell:d=>t.dateTime(d.createdAt)}];return o.jsxs(Ee,{children:[o.jsxs("div",{className:"border-b border-[color:var(--border)] px-5 py-4",children:[o.jsx("h2",{className:"text-sm font-semibold",children:e("adminGrowth.couponTrace")}),o.jsx("p",{className:"mt-1 text-sm text-[color:var(--muted-foreground)]",children:e("adminGrowth.couponTraceDescription")})]}),o.jsx("div",{className:"p-3",children:o.jsx(Pt,{label:e("adminGrowth.couponTrace"),rows:i,columns:c,isLoading:r.isLoading,error:r.error,emptyTitle:e("adminGrowth.noBatches"),onRowClick:d=>a({batchCode:s===d.batchCode?void 0:d.batchCode})})}),s?o.jsx(OLs,{batchCode:s}):null]})}function OLs({batchCode:e}){const{t}=W(),n=Te(),{params:a,patch:s}=Mt(),r=Pe(a,"ccStatus"),i=Pe(a,"ccEmail"),c=A3s(e,{status:r||void 0,email:i||void 0}),d=tJ(),m=h.useMemo(()=>c.data?.pages.flatMap(y=>y.items)??[],[c.data]);async function f(y){if(await zt({title:t("adminGrowth.disableCodeConfirmTitle",{defaultValue:"Disable this code?"}),message:t("adminGrowth.disableCodeConfirmMessage",{defaultValue:"New checkouts are blocked immediately. Orders already in checkout can still complete."}),confirmText:t("adminGrowth.disableCode",{defaultValue:"Disable"}),variant:"destructive"}))try{await d.mutateAsync(y.publicId),ie.success(t("adminGrowth.codeDisabled",{defaultValue:"Code disabled"}))}catch($){ie.error($.message)}}const p=[{header:t("adminGrowth.code"),cell:y=>o.jsxs("code",{className:"font-mono text-xs",children:["····",y.codeSuffix??""]}),mobileValue:"break-all"},{header:t("adminGrowth.status"),cell:y=>o.jsx(Oe,{value:y.status,label:ct(y.status)})},{header:t("adminGrowth.redeemedBy"),cell:y=>y.redeemedByEmail??"—",mobileValue:"break-all"},{header:t("adminGrowth.redeemedAt"),cell:y=>y.redeemedAt?n.dateTime(y.redeemedAt):"—"},{header:t("adminGrowth.paid"),align:"right",cell:y=>y.paymentAmount!=null?n.currency(Number(y.paymentAmount)):"—"},{header:t("adminGrowth.discount"),align:"right",cell:y=>y.discountAmount!=null?n.currency(Number(y.discountAmount)):"—"},{header:"",sticky:"right",cell:y=>y.status==="disabled"||y.status==="redeemed"?null:o.jsx(K,{variant:"ghost",size:"sm",onClick:()=>f(y),children:t("adminGrowth.disableCode",{defaultValue:"Disable"})})}];return o.jsxs("div",{className:"border-t border-[color:var(--border)] bg-[color:var(--muted)]/20 p-3",children:[o.jsxs("div",{className:"mb-3 flex flex-col gap-2 sm:flex-row sm:items-end sm:justify-between",children:[o.jsx("p",{className:"text-sm font-medium",children:t("adminGrowth.codesInBatch",{code:e})}),o.jsxs("div",{className:"flex items-end gap-2",children:[o.jsx(Ze,{label:t("adminGrowth.statusFilter",{defaultValue:"Status"}),value:r,options:khs,onChange:y=>s({ccStatus:y||void 0})}),o.jsxs("label",{className:"grid gap-1.5",children:[o.jsx("span",{className:"text-2xs font-semibold uppercase text-[color:var(--muted-foreground)]",children:t("adminGrowth.filterByEmail",{defaultValue:"Email"})}),o.jsx(ge,{className:"h-9 w-40",value:i,onChange:y=>s({ccEmail:y.target.value||void 0}),placeholder:t("adminGrowth.filterByEmail",{defaultValue:"Email"})})]}),o.jsxs(K,{variant:"outline",size:"sm",disabled:m.length===0,onClick:()=>ALs(e,m,t),children:[o.jsx($u,{className:"size-4"}),t("adminGrowth.exportCsv",{defaultValue:"CSV"})]})]})]}),o.jsx(Pt,{label:t("adminGrowth.codesInBatch",{code:e}),rows:m,columns:p,isLoading:c.isLoading,error:c.error,emptyTitle:t("adminGrowth.noCodes")}),c.hasNextPage?o.jsx("div",{className:"mt-3 text-center",children:o.jsx(K,{variant:"outline",size:"sm",onClick:()=>c.fetchNextPage(),disabled:c.isFetchingNextPage,children:t("adminGrowth.loadMore")})}):null]})}function rJ(e,t,n){const a=[n("adminGrowth.csv.code"),n("adminGrowth.csv.status")],s=t.map(r=>[r.code,r.status??"active"]);My(`onehop-redeem-codes-${e}-${new Date().toISOString().slice(0,10)}.csv`,[a,...s])}function Y6(){return(globalThis.crypto?.randomUUID?.()??`idem-${Date.now()}-${Math.random().toString(36).slice(2)}`).slice(0,64)}function LLs(){return o.jsxs("div",{className:"space-y-4",children:[o.jsx(ULs,{}),o.jsx(FLs,{})]})}function ULs(){const{t:e}=W(),t=_3s(),n=Ru(),[a,s]=h.useState(""),[r,i]=h.useState("100"),[c,d]=h.useState("10"),[m,f]=h.useState("1"),[p,y]=h.useState(""),[v,$]=h.useState([]),[x,w]=h.useState(""),[S,k]=h.useState(Y6),[T,R]=h.useState(!1),_=h.useMemo(()=>[...n.data?.items??[]].sort((E,L)=>E.fullSlug.localeCompare(L.fullSlug)).map(E=>({value:E.publicId,label:E.fullSlug})),[n.data]),P=h.useMemo(()=>{const E=new Map;for(const L of n.data?.items??[])E.set(L.publicId,L.fullSlug);return E},[n.data]),j=t.data?.codes??[],N=t.data?.batchCode??null;async function I(){if(j.length!==0)try{await navigator.clipboard.writeText(j.join(`
971`)),R(!0),setTimeout(()=>R(!1),2e3),ie.success(e("common.copied",{defaultValue:"Copied"}))}catch{ie.error(e("common.copyFailed",{defaultValue:"Failed to copy"}))}}async function z(){R(!1);try{await t.mutateAsync({batchName:a.trim()||null,count:Number(r)||0,faceValueUsd:c.trim()||"0",perUserLimit:m.trim()?Number(m):null,expiresAt:p?new Date(p).toISOString():null,modelPublicIds:v.length>0?v:null,creditValidityDays:x.trim()?Number(x):null,idempotencyKey:S}),k(Y6())}
971catch(E){ie.error(E.message)}}return o.jsxs(Ee,{className:"space-y-3 p-5",children:[o.jsxs("div",{className:"min-w-0",children:[o.jsx("h2",{className:"text-sm font-semibold",children:e("adminGrowth.redeemCreate",{defaultValue:"Create redeem codes"})}),o.jsx("p",{className:"mt-1 text-sm text-[color:var(--muted-foreground)]",children:e("adminGrowth.redeemCreateDescription",{defaultValue:"Gift-card style codes. Users enter a code on the billing page and get the face value credited directly (bonus credit, no payment)."})})]}),o.jsxs("div",{className:"grid gap-3 sm:grid-cols-2",children:[o.jsxs("label",{className:"grid gap-1.5 text-sm font-medium",children:[o.jsx("span",{children:e("adminGrowth.redeemBatchName",{defaultValue:"Batch name (optional)"})}),o.jsx(ge,{value:a,onChange:E=>s(E.target.value),placeholder:e("adminGrowth.redeemBatchNameHint",{defaultValue:"e.g. Conf-2026 giveaway"})})]}),o.jsxs("label",{className:"grid gap-1.5 text-sm font-medium",children:[o.jsx("span",{children:e("adminGrowth.redeemCount",{defaultValue:"How many codes"})}),o.jsx(ge,{type:"number",min:"1",max:"10000",step:"1",inputMode:"numeric",value:r,onChange:E=>i(E.target.value)})]}),o.jsxs("label",{className:"grid gap-1.5 text-sm font-medium",children:[o.jsx("span",{children:e("adminGrowth.redeemFaceValue",{defaultValue:"Face value (USD each)"})}),o.jsx(ge,{type:"number",min:"0.01",step:"0.01",inputMode:"decimal",value:c,onChange:E=>d(E.target.value)})]}),o.jsxs("label",{className:"grid gap-1.5 text-sm font-medium",children:[o.jsx("span",{children:e("adminGrowth.redeemPerUserLimit",{defaultValue:"Per account in this batch (blank = unlimited)"})}),o.jsx(ge,{type:"number",min:"1",step:"1",inputMode:"numeric",value:m,onChange:E=>f(E.target.value),placeholder:e("adminGrowth.redeemUnlimited",{defaultValue:"unlimited"})})]}),o.jsxs("label",{className:"grid gap-1.5 text-sm font-medium sm:col-span-2",children:[o.jsx("span",{children:e("adminGrowth.redeemExpiresAt",{defaultValue:"Redeem-by deadline (optional)"})}),o.jsx(ge,{type:"datetime-local",value:p,onChange:E=>y(E.target.value)})]}),o.jsxs("label",{className:"grid gap-1.5 text-sm font-medium",children:[o.jsx("span",{children:e("adminGrowth.redeemModels",{defaultValue:"Restrict to models (optional)"})}),o.jsx(ly,{value:v,onChange:$,options:_,allLabel:e("adminGrowth.redeemModelsAll",{defaultValue:"General balance (no restriction)"}),placeholder:e("adminGrowth.redeemModelsAll",{defaultValue:"General balance (no restriction)"}),triggerLabel:E=>E.length===0?e("adminGrowth.redeemModelsAll",{defaultValue:"General balance (no restriction)"}):E.length<=2?E.map(L=>P.get(L)??L).join(", "):e("adminGrowth.redeemModelsCount",{defaultValue:"{{count}} models selected",count:E.length})}),o.jsx("span",{className:"text-xs font-normal text-[color:var(--muted-foreground)]",children:e("adminGrowth.redeemModelsHint",{defaultValue:"Blank = general balance. Selected models share one earmarked pool."})})]}),o.jsxs("label",{className:"grid gap-1.5 text-sm font-medium",children:[o.jsx("span",{children:e("adminGrowth.redeemValidityDays",{defaultValue:"Credit validity after redemption (days, blank = never expires)"})}),o.jsx(ge,{type:"number",min:"1",max:"3650",step:"1",inputMode:"numeric",value:x,onChange:E=>w(E.target.value),placeholder:e("adminGrowth.redeemValidityForever",{defaultValue:"never expires"})})]})]}),o.jsx(K,{variant:"secondary",className:"w-full sm:w-auto",onClick:z,disabled:t.isPending||!r.trim()||!c.trim(),children:t.isPending?e("adminGrowth.creating"):e("adminGrowth.redeemCreateBtn",{defaultValue:"Generate codes"})}),j.length>0&&N?o.jsxs("div",{className:"rounded-md border border-[color:var(--border)] bg-[color:var(--muted)]/30 p-3",children:[o.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between",children:[o.jsxs("div",{children:[o.jsx("p",{className:"text-sm font-medium",children:e("adminGrowth.codesCreated",{count:j.length})}),o.jsx("p",{className:"mt-1 text-xs text-[color:var(--muted-foreground)]",children:e("adminGrowth.batch",{code:N})})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsxs(K,{variant:"outline",size:"sm",onClick:I,children:[T?o.jsx(cy,{className:"size-4"}):o.jsx(Ow,{className:"size-4"}),e(T?"adminGrowth.copied":"adminGrowth.copyAll")]}),o.jsxs(K,{variant:"outline",size:"sm",onClick:()=>rJ(N,j.map(E=>({code:E})),e),children:[o.jsx($u,{className:"size-4"}),e("adminGrowth.exportCsv",{defaultValue:"CSV"})]})]})]}),o.jsx("p",{className:"mt-2 text-xs text-[color:var(--muted-foreground)]",children:e("adminGrowth.redeemRevealHint",{defaultValue:"Save these now. You can also re-export plaintext later via Reveal in the batch list."})}),o.jsx("div",{className:"mt-3 grid max-h-56 gap-1 overflow-auto rounded border border-[color:var(--border)] bg-[color:var(--background)] p-2",children:j.map(E=>o.jsx("code",{className:"break-all text-xs",children:E},E))})]}):null,t.error?o.jsx("p",{className:"text-sm text-[color:var(--destructive)]",children:t.error.message}):null]})}function BLs(e){return e.expiresAt&&new Date(e.expiresAt).getTime()<Date.now()?"expired":e.active>0?"active":"exhausted"}function FLs(){const{t:e}=W(),t=Te(),{params:n,patch:a}=Mt(),s=Pe(n,"rbBatch"),r=j3s(),i=D3s(),c=M3s(),d=h.useMemo(()=>(r.data?.pages.flatMap(y=>y.items)??[]).map(y=>({...y,publicId:y.batchCode})),[r.data]);async function m(y){try{const v=await i.mutateAsync(y);rJ(y,v.codes,e),ie.success(e("adminGrowth.redeemRevealed",{defaultValue:"Codes exported"}))}catch(v){ie.error(v.message)}}async function f(y){if(await zt({title:e("adminGrowth.redeemDisableBatchTitle",{defaultValue:"Disable unredeemed codes in this batch?"}),message:e("adminGrowth.redeemDisableBatchMessage",{defaultValue:"All not-yet-redeemed codes become unusable. Already-redeemed codes are not affected."}),confirmText:e("adminGrowth.disableCode",{defaultValue:"Disable"}),variant:"destructive"}))try{const $=await c.mutateAsync(y);ie.success(e("adminGrowth.redeemBatchDisabled",{defaultValue:"{{n}} codes disabled",n:$.disabled}))}catch($){ie.error($.message)}}const p=[{header:e("adminGrowth.redeemBatchCol",{defaultValue:"Batch"}),cell:y=>o.jsxs("div",{className:"min-w-0",children:[o.jsx("span",{className:"font-medium",children:y.batchName||y.batchCode}),y.batchName?o.jsx("div",{className:"font-mono text-2xs text-[color:var(--muted-foreground)]",children:y.batchCode}):null]}),mobileValue:"break-all"},{header:e("adminGrowth.redeemFace",{defaultValue:"Face"}),align:"right",cell:y=>t.currency(Number(y.faceValueUsd))},{header:e("adminGrowth.colRedeemedTotal",{defaultValue:"Used / total"}),align:"right",cell:y=>o.jsxs("span",{className:"tabular-nums",children:[y.redeemed,"/",y.total]})},{header:e("adminGrowth.colPerUser",{defaultValue:"Per user"}),align:"right",cell:y=>o.jsx("span",{className:"tabular-nums",children:y.perUserLimit??"∞"})},{header:e("adminGrowth.redeemColModels",{defaultValue:"Models"}),mobileValue:"break-all",cell:y=>y.modelFullSlugs?.length?y.modelFullSlugs.join(", "):e("adminGrowth.redeemGeneralBalance",{defaultValue:"General balance"})},{header:e("adminGrowth.redeemColValidity",{defaultValue:"Validity"}
971),align:"right",cell:y=>y.creditValidityDays!=null?e("adminGrowth.redeemValidityDaysValue",{defaultValue:"{{n}} d",n:y.creditValidityDays}):e("adminGrowth.redeemValidityForever",{defaultValue:"never expires"})},{header:e("adminGrowth.colExpiry",{defaultValue:"Expires"}),cell:y=>y.expiresAt?t.dateTime(y.expiresAt):"—"},{header:e("adminGrowth.status"),cell:y=>o.jsx(Oe,{value:BLs(y)})},{header:"",sticky:"right",cell:y=>o.jsxs("div",{className:"flex items-center gap-1",children:[o.jsx(K,{variant:"ghost",size:"sm",disabled:i.isPending,onClick:()=>m(y.batchCode),children:e("adminGrowth.redeemReveal",{defaultValue:"Reveal CSV"})}),y.active>0?o.jsx(K,{variant:"ghost",size:"sm",onClick:()=>f(y.batchCode),children:e("adminGrowth.disableCode",{defaultValue:"Disable"})}):null]})}];return o.jsxs(Ee,{children:[o.jsxs("div",{className:"border-b border-[color:var(--border)] px-5 py-4",children:[o.jsx("h2",{className:"text-sm font-semibold",children:e("adminGrowth.redeemBatches",{defaultValue:"Redeem code batches"})}),o.jsx("p",{className:"mt-1 text-sm text-[color:var(--muted-foreground)]",children:e("adminGrowth.redeemBatchesDescription",{defaultValue:"Click a batch to drill into individual codes. Reveal re-exports plaintext."})})]}),o.jsxs("div",{className:"p-3",children:[o.jsx(Pt,{label:e("adminGrowth.redeemBatches",{defaultValue:"Redeem code batches"}),rows:d,columns:p,isLoading:r.isLoading,error:r.error,emptyTitle:e("adminGrowth.redeemNoBatches",{defaultValue:"No redeem code batches yet"}),onRowClick:y=>a({rbBatch:s===y.batchCode?void 0:y.batchCode})}),r.hasNextPage?o.jsx("div",{className:"mt-3 text-center",children:o.jsx(K,{variant:"outline",size:"sm",onClick:()=>r.fetchNextPage(),disabled:r.isFetchingNextPage,children:e("adminGrowth.loadMore")})}):null]}),s?o.jsx(zLs,{batchCode:s}):null]})}function zLs({batchCode:e}){const{t}=W(),n=Te(),a=N3s(e),s=E3s(),r=h.useMemo(()=>a.data?.pages.flatMap(d=>d.items)??[],[a.data]);async function i(d){if(await zt({title:t("adminGrowth.redeemReverseTitle",{defaultValue:"Reverse this redeemed code?"}),message:t("adminGrowth.redeemReverseMessage",{defaultValue:"Claws back the unspent portion of the credited amount from the user. Already-spent credit cannot be recovered."}),confirmText:t("adminGrowth.redeemReverseBtn",{defaultValue:"Reverse"}),variant:"destructive"}))try{const f=await s.mutateAsync(d.publicId);ie.success(t("adminGrowth.redeemReversed",{defaultValue:"Reversed {{amount}}",amount:n.currency(Number(f.reversedUsd))}))}catch(f){ie.error(f.message)}}const c=[{header:t("adminGrowth.code"),cell:d=>o.jsxs("code",{className:"font-mono text-xs",children:["····",d.codeSuffix??""]}),mobileValue:"break-all"},{header:t("adminGrowth.redeemFace",{defaultValue:"Face"}),align:"right",cell:d=>n.currency(Number(d.faceValueUsd))},{header:t("adminGrowth.status"),cell:d=>o.jsx(Oe,{value:d.status,label:ct(d.status)})},{header:t("adminGrowth.redeemedBy"),cell:d=>d.redeemedByEmail??"—",mobileValue:"break-all"},{header:t("adminGrowth.redeemedAt"),cell:d=>d.redeemedAt?n.dateTime(d.redeemedAt):"—"},{header:"",sticky:"right",cell:d=>d.status==="redeemed"?o.jsx(K,{variant:"ghost",size:"sm",onClick:()=>i(d),children:t("adminGrowth.redeemReverseBtn",{defaultValue:"Reverse"})}):null}];return o.jsxs("div",{className:"border-t border-[color:var(--border)] bg-[color:var(--muted)]/20 p-3",children:[o.jsx("p",{className:"mb-3 text-sm font-medium",children:t("adminGrowth.codesInBatch",{code:e})}),o.jsx(Pt,{label:t("adminGrowth.codesInBatch",{code:e}),rows:r,columns:c,isLoading:a.isLoading,error:a.error,emptyTitle:t("adminGrowth.noCodes")}),a.hasNextPage?o.jsx("div",{className:"mt-3 text-center",children:o.jsx(K,{variant:"outline",size:"sm",onClick:()=>a.fetchNextPage(),disabled:a.isFetchingNextPage,children:t("adminGrowth.loadMore")})}):null]})}function qLs({version:e,onClose:t}){const{t:n}=W(),a=Te(),s=e?.version??null,r=L3s(s),i=U3s(s),c=r.data?.pages.flatMap(p=>p.items),d=i.data?.pages.flatMap(p=>p.items),m=[{header:n("adminGrowth.colInviter",{defaultValue:"Inviter"}),cell:p=>o.jsx(Vd,{email:p.referrerEmail,publicId:p.referrerPublicId})},{header:n("adminGrowth.colInvitee",{defaultValue:"Invitee"}),cell:p=>
971o.jsx(Vd,{email:p.refereeEmail,publicId:p.refereePublicId})},{header:n("adminGrowth.versionStatus",{defaultValue:"Status"}),cell:p=>o.jsx(Oe,{value:p.status,label:ct(p.status)})},{header:n("adminGrowth.colBoundAt",{defaultValue:"Bound at"}),cell:p=>a.dateTime(p.boundAt)}],f=[{header:n("adminGrowth.colRole",{defaultValue:"Role"}),cell:p=>ct(p.recipientRole)},{header:n("adminGrowth.colCounterparty",{defaultValue:"Counterparty"}),cell:p=>o.jsx(Vd,{email:p.counterpartyEmail,publicId:p.counterpartyPublicId})},{header:n("adminGrowth.colTopup",{defaultValue:"Top-up"}),align:"right",cell:p=>p.refereeTopupUsd?a.currency(Number(p.refereeTopupUsd)):"—"},{header:n("adminGrowth.colRate",{defaultValue:"Rate"}),align:"right",cell:p=>p.ratePercent?`${Number(p.ratePercent)}%`:"—"},{header:n("adminGrowth.colAmount",{defaultValue:"Amount"}),align:"right",cell:p=>p.grantAmount?a.currency(Number(p.grantAmount)):"—"},{header:n("adminGrowth.colTier",{defaultValue:"Tier"}),cell:p=>p.tierLabel??"—"},{header:n("adminGrowth.versionStatus",{defaultValue:"Status"}),cell:p=>o.jsx(Oe,{value:p.status,label:ct(p.status)})},{header:n("adminGrowth.colReleasedAt",{defaultValue:"Released"}),cell:p=>p.releasedAt?a.dateTime(p.releasedAt):"—"}];return o.jsx(Vn,{open:e!=null,onOpenChange:p=>{p||t()},children:o.jsxs(Nn,{side:"auto",className:"overflow-y-auto !p-0 md:w-[min(880px,94vw)] md:!max-w-none",children:[o.jsxs(Rn,{className:"sr-only",children:[n("adminGrowth.versionDetail",{defaultValue:"Version detail"}),e?` · v${e.version}`:""]}),o.jsxs("header",{className:"border-b border-[color:var(--border)] px-5 py-4",children:[o.jsxs("div",{className:"text-sm font-semibold",children:[n("adminGrowth.versionDetail",{defaultValue:"Version detail"}),e?` · v${e.version}`:""]}),e?o.jsxs("div",{className:"mt-1 flex min-w-0 flex-wrap items-center gap-2 text-xs text-[color:var(--muted-foreground)]",children:[o.jsx(Oe,{value:e.status,label:ct(e.status)}),o.jsxs("span",{className:"tabular-nums",children:[n("adminGrowth.versionBindings",{defaultValue:"Referrals"}),": ",a.number(e.bindingCount)]}),o.jsxs("span",{className:"break-words",children:["· ",a.dateTime(e.createdAt)]})]}):null]}),o.jsxs("div",{className:"space-y-6 p-3 sm:p-5",children:[o.jsxs("section",{className:"space-y-2",children:[o.jsx("h3",{className:"text-sm font-medium",children:n("adminGrowth.versionBindingsSection",{defaultValue:"Referral records"})}),o.jsx(Pt,{rows:c,columns:m,isLoading:r.isLoading,error:r.error,emptyTitle:n("adminGrowth.noBindings",{defaultValue:"No referrals under this version"})}),r.hasNextPage?o.jsx(K,{variant:"outline",size:"sm",onClick:()=>r.fetchNextPage(),disabled:r.isFetchingNextPage,children:n("adminGrowth.loadMore",{defaultValue:"Load more"})}):null]}),o.jsxs("section",{className:"space-y-2",children:[o.jsx("h3",{className:"text-sm font-medium",children:n("adminGrowth.versionCashbackSection",{defaultValue:"Cashback records"})}),o.jsx(Pt,{rows:d,columns:f,isLoading:i.isLoading,error:i.error,emptyTitle:n("adminGrowth.noCashback",{defaultValue:"No cashback under this version"})}),i.hasNextPage?o.jsx(K,{variant:"outline",size:"sm",onClick:()=>i.fetchNextPage(),disabled:i.isFetchingNextPage,children:n("adminGrowth.loadMore",{defaultValue:"Load more"})}):null]})]})]})})}const Q6=[{recipientRole:"referrer",fromDay:"0",untilDay:"30",percent:"20",label:"intro"},{recipientRole:"referee",fromDay:"0",untilDay:"30",percent:"20",label:"intro"},{recipientRole:"referrer",fromDay:"30",untilDay:"365",percent:"5",label:"year_residual"}];function HLs(e){return{recipientRole:e.recipient_role,fromDay:String(e.from_day),untilDay:e.until_day==null?"":String(e.until_day),percent:String(e.percent),label:e.label??""}}function VLs(e){return{recipient_role:e.recipientRole,from_day:Number(e.fromDay)||0,until_day:e.untilDay.trim()===""?null:Number(e.untilDay),percent:Number(e.percent)||0,label:e.label.trim()||void 0}}function KLs({tier:e,index:t,updateTier:n}){const{t:a}=W();return o.jsxs("div",{className:"grid gap-3",children:[o.jsx(iJ,{tier:e,index:t,updateTier:n}),o.jsxs("div",{className:"grid gap-3 sm:grid-cols-3",children:[o.jsx(Qm,{label:a("adminGrowth.tierFromDay",{defaultValue:"From day"}),value:e.fromDay,onChange:s=>n(t,{fromDay:s})}),o.jsx(Qm,{label:a("adminGrowth.tierUntilDay",{defaultValue:"Until day"}),value:e.untilDay,onChange:s=>n(t,{untilDay:s}),placeholder:a("adminGrowth.noEndDay",{defaultValue:"No end"})}),o.jsx(Qm,{label:a("adminGrowth.tierPercent",{defaultValue:"Percent"}),value:e.percent,onChange:s=>n(t,{percent:s}),step:"0.5",inputMode:"decimal"})]}),o.jsx(lJ,{label:a("adminGrowth.tierLabel",{defaultValue:"Label"}),value:e.label,onChange:s=>n(t,{label:s})})]})}function iJ({tier:e,index:t,updateTier:n,srOnlyLabel:a=!1}){const{t:s}=W();return o.jsxs(ca,{className:"min-w-32",label:a?o.jsx("span",{className:"sr-only",children:s("adminGrowth.tierRole",{defaultValue:"Recipient"})}):s("adminGrowth.tierRole",{defaultValue:"Recipient"}),value:e.recipientRole,onChange:r=>n(t,{recipientRole:r.target.value==="referee"?"referee":"referrer"}),children:[o.jsx("option",{value:"referrer",children:s("adminGrowth.roleReferrer",{defaultValue:"Inviter"})}),o.jsx("option",{value:"referee",children:s("adminGrowth.roleReferee",{defaultValue:"Invitee"})})]})}function Qm({label:e,value:t,onChange:n,placeholder:a,step:s="1",inputMode:r="numeric",srOnlyLabel:i=!1}){return o.jsxs("label",{className:"grid gap-1.5 text-sm font-medium",children:[o.jsx("span",{className:i?"sr-only":void 0,children:e}),o.jsx(ge,{className:"min-w-0 md:min-w-24",type:"number",min:"0",step:s,inputMode:r,placeholder:a,value:t,onChange:c=>n(c.target.value)})]})}function lJ({label:e,value:t,onChange:n,srOnlyLabel:a=!1}){return o.jsxs("label",{className:"grid gap-1.5 text-sm font-medium",children:[o.jsx("span",{className:a?"sr-only":void 0,children:e}),o.jsx(ge,{className:"min-w-0 md:min-w-36",value:t,onChange:s=>n(s.target.value)})]})}function GLs(){const{t:e}=W(),t=Te(),n=I3s(),a=O3s(),s=B3s(),[r,i]=h.useState(!0),[c,d]=h.useState(Q6),[m,f]=h.useState("30"),[p,y]=h.useState("100"),[v,$]=h.useState(""),[x,w]=h.useState(""),[S,k]=h.useState(!1),[T,R]=h.useState(""),[_,P]=h.useState(""),[j,N]=h.useState("global"),[I,z]=h.useState(""),[E,L]=h.useState(null);h.useEffect(()=>{const M=n.data;if(!M)return;i(M.enabled),d(M.rewardTiers.length>0?M.rewardTiers.map(HLs):Q6),f(String(M.releasePolicy?.delay_days??30)),y(M.perTopupCapUsd==null?"":String(M.perTopupCapUsd)),$(M.minTopupUsd==null?"":String(M.minTopupUsd)),w(M.bonusExpiryDays==null?"":String(M.bonusExpiryDays));const F=M.banner;k(!!F?.enabled),R(F?.title??""),P(F?.subtitle??""),N(F?.mode??"global"),z(F?.ends_at?F.ends_at.slice(0,16):"")},[n.data]);function O(){const M=F=>F.trim()===""?null:Number(F);s.mutate({enabled:r,rewardTiers:c.map(VLs),releasePolicy:{type:"delay_days",delay_days:Number(m)||0},perTopupCapUsd:M(p),minTopupUsd:M(v),bonusExpiryDays:M(x),banner:{enabled:S,title:T,subtitle:_,mode:j==="per_user_window"?"per_user_window":"global",ends_at:I?new Date(I).toISOString():null}})}function V(M,F){d(H=>H.map((ee,B)=>B===M?{...ee,...F}:ee))}function ne(){d(M=>[...M,{recipientRole:"referrer",fromDay:"0",untilDay:"",percent:"0",label:""}])}function q(M){d(F=>F.filter((H,ee)=>ee!==M))}return o.jsxs(Ee,{className:"space-y-3 p-5",children:[o.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row sm:items-start sm:justify-between",children:[o.jsxs("div",{className:"min-w-0",children:[o.jsx("h2",{className:"text-sm font-semibold",children:e("adminGrowth.referral",{defaultValue:"Referral cashback"})}),o.jsx("p",{className:"mt-1 text-sm text-[color:var(--muted-foreground)]",children:e("adminGrowth.referralDescription",{defaultValue:"Configure double-sided referral rewards, release delay, caps, and billing-page messaging."})})]}),n.data?o.jsxs("div",{className:"flex min-w-0 flex-wrap items-center gap-2",children:[o.jsx("span",{className:"rounded-md border border-border px-2 py-0.5 text-xs font-medium tabular-nums text-[color:var(--muted-foreground)]",children:e("adminGrowth.referralVersion",{defaultValue:"v{{version}}",version:n.data.version})}),o.jsx(Oe,{value:r?"active":"paused",label:ct(r?"active":"paused")})]}):null]}),o.jsxs("label",{className:"flex items-center gap-2 text-sm font-medium",children:[o.jsx(Zn,{checked:r,onChange:M=>i(M.target.checked)}),o.jsx("span",{children:e("adminGrowth.referralEnabled",{defaultValue:"Enable referral cashback"})})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsxs("div",{className:"grid gap-2 sm:flex sm:items-center sm:justify-between",children:[o.jsx("h3",{className:"text-sm font-medium",children:e("adminGrowth.referralRewardTiers",{defaultValue:"Reward tiers"})}),o.jsxs(K,{className:"w-full sm:w-auto",type:"button",variant:"outline",size:"sm",onClick:ne,children:[o.jsx(wr,{className:"size-4"}),e("adminGrowth.addTier",{defaultValue:"Add tier"})]})]}),o.jsx("div",{className:"grid gap-2 md:hidden",children:c.map((M,F)=>
971o.jsxs("article",{className:"rounded-lg border border-border bg-[color:var(--card)] p-3",children:[o.jsxs("div",{className:"mb-3 flex items-center justify-between gap-3",children:[o.jsx("h4",{className:"text-sm font-medium",children:e("adminGrowth.tierNumber",{defaultValue:"Tier {{number}}",number:F+1})}),o.jsx(K,{type:"button",variant:"ghost",size:"icon",onClick:()=>q(F),"aria-label":e("adminGrowth.removeTier",{defaultValue:"Remove tier"}),children:o.jsx(Sc,{className:"size-4"})})]}),o.jsx(KLs,{tier:M,index:F,updateTier:V})]},`${M.recipientRole}-${F}`))}),o.jsx("div",{className:"hidden rounded-md border border-border md:block",children:o.jsxs(Ua,{"aria-label":e("adminGrowth.referralRewardTiers",{defaultValue:"Reward tiers"}),children:[o.jsx(Po,{children:o.jsxs(qt,{children:[o.jsx(Ie,{children:e("adminGrowth.tierRole",{defaultValue:"Recipient"})}),o.jsx(Ie,{children:e("adminGrowth.tierFromDay",{defaultValue:"From day"})}),o.jsx(Ie,{children:e("adminGrowth.tierUntilDay",{defaultValue:"Until day"})}),o.jsx(Ie,{children:e("adminGrowth.tierPercent",{defaultValue:"Percent"})}),o.jsx(Ie,{children:e("adminGrowth.tierLabel",{defaultValue:"Label"})}),o.jsx(Ie,{className:"w-12 text-right",children:e("adminGrowth.tierAction",{defaultValue:"Action"})})]})}),o.jsx(Ba,{children:c.map((M,F)=>o.jsxs(qt,{children:[o.jsx(Me,{children:o.jsx(iJ,{tier:M,index:F,updateTier:V,srOnlyLabel:!0})}),o.jsx(Me,{children:o.jsx(Qm,{label:e("adminGrowth.tierFromDay",{defaultValue:"From day"}),value:M.fromDay,onChange:H=>V(F,{fromDay:H}),srOnlyLabel:!0})}),o.jsx(Me,{children:o.jsx(Qm,{label:e("adminGrowth.tierUntilDay",{defaultValue:"Until day"}),value:M.untilDay,onChange:H=>V(F,{untilDay:H}),placeholder:e("adminGrowth.noEndDay",{defaultValue:"No end"}),srOnlyLabel:!0})}),o.jsx(Me,{children:o.jsx(Qm,{label:e("adminGrowth.tierPercent",{defaultValue:"Percent"}),value:M.percent,onChange:H=>V(F,{percent:H}),step:"0.5",inputMode:"decimal",srOnlyLabel:!0})}),o.jsx(Me,{children:o.jsx(lJ,{label:e("adminGrowth.tierLabel",{defaultValue:"Label"}),value:M.label,onChange:H=>V(F,{label:H}),srOnlyLabel:!0})}),o.jsx(Me,{className:"text-right",children:o.jsx(K,{type:"button",variant:"ghost",size:"icon",onClick:()=>q(F),"aria-label":e("adminGrowth.removeTier",{defaultValue:"Remove tier"}),children:o.jsx(Sc,{className:"size-4"})})})]},`${M.recipientRole}-${F}`))})]})})]}),o.jsxs("div",{className:"grid gap-3 sm:grid-cols-2",children:[o.jsxs("label",{className:"grid gap-1.5 text-sm font-medium",children:[o.jsx("span",{children:e("adminGrowth.releaseDelayDays",{defaultValue:"Release delay (days)"})}),o.jsx(ge,{type:"number",min:"0",step:"1",inputMode:"numeric",value:m,onChange:M=>f(M.target.value)})]}),o.jsxs("label",{className:"grid gap-1.5 text-sm font-medium",children:[o.jsx("span",{children:e("adminGrowth.referralCap",{defaultValue:"Per-topup cap (USD)"})}),o.jsx(ge,{type:"number",min:"0",step:"1",inputMode:"decimal",value:p,onChange:M=>y(M.target.value)})]}),o.jsxs("label",{className:"grid gap-1.5 text-sm font-medium",children:[o.jsx("span",{children:e("adminGrowth.referralMinTopup",{defaultValue:"Min topup (USD, blank = none)"})}),o.jsx(ge,{type:"number",min:"0",step:"1",inputMode:"decimal",value:v,onChange:M=>$(M.target.value)})]}),o.jsxs("label",{className:"grid gap-1.5 text-sm font-medium",children:[o.jsx("span",{children:e("adminGrowth.referralExpiryDays",{defaultValue:"Cashback expiry (days, blank = never)"})}),o.jsx(ge,{type:"number",min:"0",step:"1",inputMode:"numeric",value:x,onChange:M=>w(M.target.value)})]})]}),o.jsxs("div",{className:"mt-2 space-y-2 border-t border-border pt-3",children:[o.jsxs("label",{className:"flex items-center gap-2 text-sm font-medium",children:[o.jsx(Zn,{checked:S,onChange:M=>k(M.target.checked)}),o.jsx("span",{children:e("adminGrowth.bannerEnabled",{defaultValue:"Billing-page countdown banner"})})]}),S?o.jsxs("div",{className:"grid gap-3 sm:grid-cols-2",children:[o.jsxs("label",{className:"grid gap-1.5 text-sm font-medium sm:col-span-2",children:[o.jsx("span",{children:e("adminGrowth.bannerTitle",{defaultValue:"Banner title"})}),o.jsx(ge,{value:T,onChange:M=>R(M.target.value)})]}),o.jsxs("label",{className:"grid gap-1.5 text-sm font-medium sm:col-span-2",children:[o.jsx("span",{children:e("adminGrowth.bannerSubtitle",{defaultValue:"Subtitle"})}
971),o.jsx(ge,{value:_,onChange:M=>P(M.target.value)})]}),o.jsxs(ca,{label:e("adminGrowth.bannerMode",{defaultValue:"Countdown mode"}),value:j,onChange:M=>N(M.target.value),children:[o.jsx("option",{value:"global",children:e("adminGrowth.bannerModeGlobal",{defaultValue:"Global deadline"})}),o.jsx("option",{value:"per_user_window",children:e("adminGrowth.bannerModeWindow",{defaultValue:"Each invitee's 30-day window"})})]}),j==="global"?o.jsxs("label",{className:"grid gap-1.5 text-sm font-medium",children:[o.jsx("span",{children:e("adminGrowth.bannerEndsAt",{defaultValue:"Ends at"})}),o.jsx(ge,{type:"datetime-local",value:I,onChange:M=>z(M.target.value)})]}):null]}):null]}),o.jsx("p",{className:"text-xs text-[color:var(--muted-foreground)]",children:e("adminGrowth.referralPublishHint",{defaultValue:"Saving reward tiers, release delay, caps, or expiry publishes a NEW version. Existing referral relationships keep the version they were bound under — only new signups get the new terms. Pausing only affects new signups."})}),o.jsx(K,{className:"w-full sm:w-auto",onClick:O,disabled:n.isLoading||s.isPending,children:s.isPending?e("adminGrowth.saving"):e("adminGrowth.saveReferral",{defaultValue:"Save referral settings"})}),n.error?o.jsx("p",{className:"text-sm text-[color:var(--destructive)]",children:n.error.message}):null,s.error?o.jsx("p",{className:"text-sm text-[color:var(--destructive)]",children:s.error.message}):null,a.data&&a.data.length>0?o.jsxs("div",{className:"mt-2 space-y-2 border-t border-border pt-3",children:[o.jsxs("h3",{className:"text-sm font-medium",children:[e("adminGrowth.referralVersionHistory",{defaultValue:"Version history"})," (",a.data.length,")"]}),o.jsx("div",{className:"grid gap-2 md:hidden",children:a.data.map(M=>o.jsxs("article",{onClick:()=>L(M),className:"rounded-lg border border-border bg-[color:var(--card)] p-3 text-sm",children:[o.jsxs("div",{className:"flex items-start justify-between gap-3",children:[o.jsxs("div",{className:"min-w-0 break-words font-medium tabular-nums",children:["v",M.version,M.current?o.jsxs("span",{className:"ml-1 text-[color:var(--muted-foreground)]",children:["(",e("adminGrowth.versionCurrent",{defaultValue:"current"}),")"]}):null]}),o.jsx(Oe,{value:M.status,label:ct(M.status)})]}),o.jsxs("dl",{className:"mt-3 grid gap-2",children:[o.jsxs("div",{className:"flex items-center justify-between gap-3",children:[o.jsx("dt",{className:"text-2xs font-semibold uppercase text-[color:var(--muted-foreground)]",children:e("adminGrowth.versionBindings",{defaultValue:"Referrals"})}),o.jsx("dd",{className:"tabular-nums",children:t.number(M.bindingCount)})]}),o.jsxs("div",{className:"grid gap-1",children:[o.jsx("dt",{className:"text-2xs font-semibold uppercase text-[color:var(--muted-foreground)]",children:e("adminGrowth.versionTiers",{defaultValue:"Reward tiers"})}),o.jsx("dd",{className:"break-words text-xs",children:M.rewardTiers.length===0?"—":M.rewardTiers.map(F=>`${F.recipient_role==="referee"?"invitee":"inviter"} ${F.from_day}-${F.until_day??"∞"}d ${F.percent}%`).join("; ")})]}),o.jsxs("div",{className:"grid gap-1",children:[o.jsx("dt",{className:"text-2xs font-semibold uppercase text-[color:var(--muted-foreground)]",children:e("adminGrowth.versionPublished",{defaultValue:"Published"})}),o.jsx("dd",{className:"text-xs",children:t.dateTime(M.createdAt)})]}),o.jsxs("div",{className:"grid gap-1",children:[o.jsx("dt",{className:"text-2xs font-semibold uppercase text-[color:var(--muted-foreground)]",children:e("adminGrowth.versionSuperseded",{defaultValue:"Superseded"})}),o.jsx("dd",{className:"text-xs",children:M.supersededAt?t.dateTime(M.supersededAt):"—"})]})]})]},M.version))}),o.jsx("div",{className:"hidden rounded-md border border-border md:block",children:o.jsxs(Ua,{"aria-label":e("adminGrowth.referralVersionHistory",{defaultValue:"Version history"}),children:[o.jsx(Po,{children:o.jsxs(qt,{children:[o.jsx(Ie,{children:e("adminGrowth.versionCol",{defaultValue:"Version"})}),o.jsx(Ie,{children:e("adminGrowth.versionStatus",{defaultValue:"Status"})}),o.jsx(Ie,{className:"text-right",children:e("adminGrowth.versionBindings",{defaultValue:"Referrals"})}),o.jsx(Ie,{children:e("adminGrowth.versionTiers",{defaultValue:"Reward tiers"})}),o.jsx(Ie,{children:e("adminGrowth.versionPublished",{defaultValue:"Published"})}),o.jsx(Ie,{children:e("adminGrowth.versionSuperseded",{defaultValue:"Superseded"})})]})}),o.jsx(Ba,{children:a.data.map(M=>o.jsxs(qt,{onClick:()=>L(M),className:"cursor-pointer hover:bg-[color:var(--muted)]",children:[o.jsxs(Me,{className:"tabular-nums",children:["v",M.version,M.current?o.jsxs("span",{className:"ml-1 text-[color:var(--muted-foreground)]",children:["(",e("adminGrowth.versionCurrent",{defaultValue:"current"}),")"]}):null]}),o.jsx(Me,{children:o.jsx(Oe,{value:M.status,label:ct(M.status)})}),o.jsx(Me,{className:"text-right tabular-nums",children:t.number(M.bindingCount)}),o.jsx(Me,{className:"text-xs",children:M.rewardTiers.length===0?"—":M.rewardTiers.map(F=>`${F.recipient_role==="referee"?"invitee":"inviter"} ${F.from_day}-${F.until_day??"∞"}d ${F.percent}%`).join("; ")}),o.jsx(Me,{className:"text-xs",children:t.dateTime(M.createdAt)}),o.jsx(Me,{className:"text-xs",children:M.supersededAt?t.dateTime(M.supersededAt):"—"})]},M.version))})]})})]}):null,o.jsx(qLs,{version:E,onClose:()=>L(null)})]})}const X6=["source","status","page"];function WLs(){const{t:e}=W(),t=Te(),{params:n,patch:a,remove:s}=Mt(),r=h.useMemo(()=>({source:Pe(n,"source"),status:Pe(n,"status"),page:ln(n,"page",1)}),[n]),i={...r.source?{source:r.source}:{},...r.status?{status:r.status}:{}},c=k3s(i).data?.items??[],d=hN(c,{page:r.page,onPageChange:f=>a({page:f===1?void 0:String(f)},{replace:!1})}),m=[{header:e("adminGrowth.time"),cell:f=>t.dateTime(f.createdAt)},{header:e("adminGrowth.user"),mobileValue:"break-all",cell:f=>f.userEmail},{header:e("adminGrowth.source"),cell:f=>o.jsx(Oe,{value:f.source,label:ct(f.source)})},{header:e("adminGrowth.status"),cell:f=>o.jsx(Oe,{value:f.status,label:ct(f.status)})},{header:e("adminGrowth.amount"),align:"right",cell:f=>t.currency(Number(f.creditAmount))}];return o.jsxs(Ee,{children:[o.jsxs("div",{className:"flex flex-col gap-3 border-b border-[color:var(--border)] px-5 py-4 md:flex-row md:items-end md:justify-between",children:[o.jsx("h2",{className:"text-sm font-semibold",children:e("adminGrowth.creditGrants")}),o.jsxs("div",{className:"grid gap-3 sm:grid-cols-2 md:w-[460px]",children:[o.jsx(Ze,{label:e("adminGrowth.source"),value:r.source,options:jK,onChange:f=>a({source:f,page:void 0})}),o.jsx(Ze,{label:e("adminGrowth.status"),value:r.status,options:NK,onChange:f=>a({status:f,page:void 0})})]}),o.jsx(nn,{show:Zt(n,X6),onReset:()=>s(X6)})]}),c.length===0?o.jsx("div",{className:"p-6",children:o.jsx(Ot,{title:e("adminGrowth.noGrants"),description:e("adminGrowth.noGrantsDescription")})}):o.jsx(Pt,{label:e("adminGrowth.creditGrants"),rows:d.pageRows,columns:m,isLoading:!1,error:null,emptyTitle:e("adminGrowth.noGrants"),pagination:{total:d.total,page:d.page,pageSize:d.pageSize,onPageChange:d.onPageChange,onPageSizeChange:d.onPageSizeChange}})]})}const YLs=(e,t)=>["ops","tasks","submissions",e,t??""],cJ=["ops","tasks","rule"];function QLs(e,t){return Ue({queryKey:YLs(e,t),queryFn:()=>ve.request(`/ops/tasks/submissions${$r({status:e,cursor:t})}`)})}function XLs(){const e=Re();return ke({mutationFn:t=>ve.request(`/ops/tasks/submissions/${t}/approve`,{method:"POST"}),onSuccess:()=>
971{e.invalidateQueries({queryKey:["ops","tasks","submissions"]}),e.invalidateQueries({queryKey:["ops","grants"]})}})}function ZLs(){const e=Re();return ke({mutationFn:({publicId:t,reason:n})=>ve.request(`/ops/tasks/submissions/${t}/reject`,{method:"POST",body:{reason:n}}),onSuccess:()=>{e.invalidateQueries({queryKey:["ops","tasks","submissions"]})}})}function JLs(){return Ue({queryKey:cJ,queryFn:()=>ve.request("/ops/growth/rules/task-wall")})}function e4s(){const e=Re();return ke({mutationFn:t=>ve.request("/ops/growth/rules/task-wall",{method:"PATCH",body:t}),onSuccess:()=>{e.invalidateQueries({queryKey:cJ}),e.invalidateQueries({queryKey:["console","tasks"]})}})}const t4s={pending:"warning",approved:"success",rejected:"destructive"};function n4s(e){return{taskKey:e.task_key,amount:String(e.amount??""),rewardType:e.reward_type==="topup_percent"?"topup_percent":"credit",enabled:e.enabled===!0,allowedHosts:e.allowed_hosts??[]}}function a4s(e){return{task_key:e.taskKey.trim(),amount:Number(e.amount),reward_type:e.rewardType,enabled:e.enabled,allowed_hosts:e.allowedHosts}}function o4s({item:e}){const{t}=W(),n=Te(),a=XLs(),s=ZLs(),[r,i]=h.useState(""),[c,d]=h.useState(!1);async function m(f,p,y){try{await f(),ie.success(t(p,{defaultValue:y}))}catch(v){ie.error(da(v))}}return o.jsxs(Ee,{className:"flex min-w-0 flex-col gap-3 p-3 sm:p-4",children:[o.jsxs("div",{className:"flex min-w-0 flex-wrap items-center gap-2",children:[o.jsx(jo,{tone:t4s[e.status],children:t(`adminGrowth.tasks.status.${e.status}`,{defaultValue:e.status})}),o.jsx(Xt,{variant:"outline",children:e.taskKey}),o.jsx("span",{className:"font-[family-name:var(--font-mono)] text-13 tabular-nums text-[color:var(--primary)]",children:n.currency(Number(e.amountUsd))}),e.duplicateAccounts>0?o.jsx(jo,{tone:"destructive",children:t("adminGrowth.tasks.duplicate",{defaultValue:"Same link from {{count}} other account(s)",count:e.duplicateAccounts})}):null,o.jsx("span",{className:"ml-auto text-2xs text-[color:var(--muted-foreground)]",children:n.dateTime(e.createdAt)})]}),o.jsxs("div",{className:"grid gap-1 text-13",children:[o.jsx("span",{className:"text-[color:var(--muted-foreground)]",children:e.userEmail}),o.jsx("a",{href:e.submittedUrl,target:"_blank",rel:"noopener noreferrer",className:"break-all text-[color:var(--primary)] underline-offset-2 hover:underline",children:e.submittedUrl}),o.jsx("span",{className:"font-[family-name:var(--font-mono)] text-2xs text-[color:var(--muted-foreground)]",children:e.canonicalRef})]}),e.status==="pending"?c?o.jsxs("div",{className:"grid gap-2 sm:flex sm:items-center",children:[o.jsx(ge,{value:r,onChange:f=>i(f.target.value),placeholder:t("adminGrowth.tasks.reasonPlaceholder",{defaultValue:"Why is this rejected?"}),className:"min-w-0 flex-1"}),o.jsxs("div",{className:"flex gap-2",children:[o.jsx(K,{variant:"destructive",disabled:!r.trim()||s.isPending,onClick:()=>m(()=>s.mutateAsync({publicId:e.publicId,reason:r.trim()}),"adminGrowth.tasks.rejected","Rejected"),children:t("adminGrowth.tasks.confirmReject",{defaultValue:"Confirm reject"})}),o.jsx(K,{variant:"outline",onClick:()=>d(!1),children:t("common.cancel",{defaultValue:"Cancel"})})]})]}):o.jsxs("div",{className:"flex flex-wrap gap-2",children:[o.jsx(K,{disabled:a.isPending,onClick:()=>m(()=>a.mutateAsync(e.publicId),"adminGrowth.tasks.approved","Approved — credit granted"),children:t("adminGrowth.tasks.approve",{defaultValue:"Approve & pay"})}),o.jsx(K,{variant:"outline",onClick:()=>d(!0),children:t("adminGrowth.tasks.reject",{defaultValue:"Reject"})})]}):e.rejectReason?o.jsx("p",{className:"text-13 text-[color:var(--muted-foreground)]",children:e.rejectReason}):null]})}function s4s(){const{t:e}=W(),t=JLs(),n=e4s(),[a,s]=h.useState(!1),[r,i]=h.useState([]),[c,d]=h.useState(""),[m,f]=h.useState(""),[p,y]=h.useState(null),v=t.data?.rule;if(v&&v.publicId!==p){y(v.publicId),s(v.status==="active");const w=v.conditions??{};i((w.tasks??[]).map(n4s)),d(w.daily_pending_cap!=null?String(w.daily_pending_cap):""),f(w.min_account_age_days!=null?String(w.min_account_age_days):"")}function $(w,S){i(k=>k.map((T,R)=>R===w?{...T,...S}:T))}async function x(){try{await n.mutateAsync({enabled:a,tasks:r.map(a4s),dailyPendingCap:c.trim()?Number(c):null,minAccountAgeDays:m.trim()?Number(m):null}),ie.success(e("adminGrowth.tasks.saved",{defaultValue:"Task wall saved"}))}catch(w){ie.error(da(w))}}return o.jsxs(Ee,{className:"space-y-4 p-5",children:[o.jsxs("div",{children:[o.jsx("h2",{className:"text-sm font-semibold",children:e("adminGrowth.tasks.
971configTitle",{defaultValue:"Task wall config"})}),o.jsx("p",{className:"mt-1 text-sm text-[color:var(--muted-foreground)]",children:e("adminGrowth.tasks.configDescription",{defaultValue:"Amounts, switches and accepted hosts. Task copy lives in the translation files, not here. Changes take effect on the next page load — no deploy."})})]}),o.jsxs("label",{className:"flex items-center justify-between gap-3 text-sm font-medium",children:[o.jsx("span",{children:e("adminGrowth.tasks.enabled",{defaultValue:"Enable the task wall"})}),o.jsx(js,{checked:a,onCheckedChange:s})]}),o.jsx(sn,{title:e("adminGrowth.tasks.tasksTitle",{defaultValue:"Tasks"}),children:o.jsxs("div",{className:"grid gap-3",children:[r.map((w,S)=>o.jsxs("div",{className:"grid gap-2 rounded-md border border-[color:var(--border)] p-3 sm:grid-cols-[1fr_auto]",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(De,{label:e("adminGrowth.tasks.taskKey",{defaultValue:"Task key"}),children:o.jsx(ge,{value:w.taskKey,onChange:k=>$(S,{taskKey:k.target.value})})}),o.jsx(De,{label:e("adminGrowth.tasks.rewardType",{defaultValue:"Reward type"}),hint:e("adminGrowth.tasks.rewardTypeHint",{defaultValue:"One-off credit pays once on approval. Top-up bonus is permanent: every later top-up pays max(standard tier, this percent)."}),children:o.jsx(ft,{value:w.rewardType,onChange:k=>$(S,{rewardType:k.target.value}),options:[{value:"credit",label:e("adminGrowth.tasks.rewardCredit",{defaultValue:"One-off credit"})},{value:"topup_percent",label:e("adminGrowth.tasks.rewardTopup",{defaultValue:"Permanent top-up bonus"})}]})}),o.jsx(De,{label:w.rewardType==="topup_percent"?e("adminGrowth.tasks.amountPercent",{defaultValue:"Bonus percent (0-100)"}):e("adminGrowth.tasks.amount",{defaultValue:"Amount (USD)"}),children:o.jsx(ge,{value:w.amount,inputMode:"decimal",onChange:k=>$(S,{amount:k.target.value})})}),o.jsx(De,{label:e("adminGrowth.tasks.hosts",{defaultValue:"Accepted hosts"}),hint:e("adminGrowth.tasks.hostsHint",{defaultValue:"Links outside this list are rejected at submission time."}),children:o.jsx(K_,{value:w.allowedHosts,onChange:k=>$(S,{allowedHosts:k})})}),o.jsxs("label",{className:"flex items-center justify-between gap-3 text-sm",children:[o.jsx("span",{children:e("adminGrowth.tasks.taskEnabled",{defaultValue:"Visible to users"})}),o.jsx(js,{checked:w.enabled,onCheckedChange:k=>$(S,{enabled:k})})]})]}),o.jsx(Aa,{"aria-label":e("common.remove",{defaultValue:"Remove"}),onClick:()=>i(k=>k.filter((T,R)=>R!==S)),children:o.jsx(Sc,{className:"size-4"})})]},S)),o.jsxs(K,{variant:"outline",onClick:()=>i(w=>[...w,{taskKey:"",amount:"",rewardType:"credit",enabled:!1,allowedHosts:[]}]),children:[o.jsx(wr,{className:"size-4"}),e("adminGrowth.tasks.addTask",{defaultValue:"Add task"})]})]})}),o.jsx(sn,{title:e("adminGrowth.tasks.guardsTitle",{defaultValue:"Abuse guards"}),children:o.jsxs("div",{className:"grid gap-3 sm:grid-cols-2",children:[o.jsx(De,{label:e("adminGrowth.tasks.dailyCap",{defaultValue:"Daily pending cap"}),hint:e("adminGrowth.tasks.dailyCapHint",{defaultValue:"0 = no cap. Fail-open if Redis is down."}),children:o.jsx(ge,{value:c,inputMode:"numeric",onChange:w=>d(w.target.value)})}),o.jsx(De,{label:e("adminGrowth.tasks.minAge",{defaultValue:"Minimum account age (days)"}),hint:e("adminGrowth.tasks.minAgeHint",{defaultValue:"0 = no age gate."}),children:o.jsx(ge,{value:m,inputMode:"numeric",onChange:w=>f(w.target.value)})})]})}),o.jsx(K,{onClick:x,disabled:n.isPending,children:e("common.save",{defaultValue:"Save"})})]})}function r4s(){const{t:e}=W(),[t,n]=h.useState("pending"),a=QLs(t);return o.jsxs("div",{className:"grid gap-4",children:[o.jsx(s4s,{}),o.jsxs(Ee,{className:"space-y-4 p-5",children:[o.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between",children:[o.jsxs("div",{children:[o.jsx("h2",{className:"text-sm font-semibold",children:e("adminGrowth.tasks.queueTitle",{defaultValue:"Submissions"})}),o.jsx("p",{className:"mt-1 text-sm text-[color:var(--muted-foreground)]",children:e("adminGrowth.tasks.queueCount",{defaultValue:"{{count}} shown",count:a.data?.items.length??0})})]}),o.jsx(el,{value:t,onValueChange:s=>n(s),options:["pending","approved","rejected"].map(s=>({value:s,label:e(`adminGrowth.tasks.status.${s}`,{defaultValue:s})}
971))})]}),a.isLoading?null:(a.data?.items.length??0)===0?o.jsx("p",{className:"text-sm text-[color:var(--muted-foreground)]",children:e("adminGrowth.tasks.empty",{defaultValue:"Nothing here."})}):o.jsx("div",{className:"grid gap-3",children:a.data.items.map(s=>o.jsx(o4s,{item:s},s.publicId))})]})]})}const Z6="onboarding",dJ=[{value:"onboarding",labelKey:"adminGrowth.tabs.onboarding",defaultLabel:"Signup & new users"},{value:"topup",labelKey:"adminGrowth.tabs.topup",defaultLabel:"Top-up bonus"},{value:"discount",labelKey:"adminGrowth.tabs.discount",defaultLabel:"Discount codes"},{value:"redeem",labelKey:"adminGrowth.tabs.redeem",defaultLabel:"Redeem codes"},{value:"referral",labelKey:"adminGrowth.tabs.referral",defaultLabel:"Referral cashback"},{value:"tasks",labelKey:"adminGrowth.tabs.tasks",defaultLabel:"Task wall"},{value:"grants",labelKey:"adminGrowth.tabs.grants",defaultLabel:"Credit grants"}];function J6(e){return dJ.some(t=>t.value===e)}function i4s(){const{t:e}=W(),{params:t,patch:n}=Mt(),a=Pe(t,"tab"),s=J6(a)?a:Z6,r=dJ.map(c=>({value:c.value,label:e(c.labelKey,{defaultValue:c.defaultLabel})}));function i(c){if(!J6(c))return;const d={tab:c===Z6?void 0:c};s==="discount"&&(d.batchCode=void 0,d.scStatus=void 0,d.ccStatus=void 0,d.ccEmail=void 0),s==="redeem"&&(d.rbBatch=void 0),s==="grants"&&(d.source=void 0,d.status=void 0,d.page=void 0),n(d)}return o.jsx(Vt,{title:e("adminGrowth.title"),description:e("adminGrowth.description"),children:o.jsxs(Cc,{value:s,onValueChange:i,children:[o.jsx("div",{className:"min-w-0 md:hidden",children:o.jsx(ft,{value:s,options:r,onValueChange:i,"aria-label":e("adminGrowth.tabs.mobileLabel",{defaultValue:"Growth section"})})}),o.jsx(tl,{className:"hidden md:inline-flex",children:r.map(c=>o.jsx(ia,{value:c.value,children:c.label},c.value))}),o.jsx(Tn,{value:"onboarding",className:"mt-4",children:o.jsx(K3s,{})}),o.jsx(Tn,{value:"topup",className:"mt-4",children:o.jsx(bLs,{})}),o.jsx(Tn,{value:"discount",className:"mt-4",children:o.jsx(PLs,{})}),o.jsx(Tn,{value:"redeem",className:"mt-4",children:o.jsx(LLs,{})}),o.jsx(Tn,{value:"referral",className:"mt-4",children:o.jsx(GLs,{})}),o.jsx(Tn,{value:"tasks",className:"mt-4",children:o.jsx(r4s,{})}),o.jsx(Tn,{value:"grants",className:"mt-4",children:o.jsx(WLs,{})})]})})}const e8=["kind","status","segment"],uJ={countryIn:"",signupAfter:"",signupBefore:"",minCumulativeSpendUsd:""};function l4s(e){return e?{countryIn:(e.countryIn??[]).join(", "),signupAfter:e.signupAfter?e.signupAfter.slice(0,10):"",signupBefore:e.signupBefore?e.signupBefore.slice(0,10):"",minCumulativeSpendUsd:e.minCumulativeSpendUsd==null?"":String(e.minCumulativeSpendUsd)}:uJ}function UP(e){const t={},n=e.countryIn.split(",").map(a=>a.trim().toUpperCase()).filter(Boolean);return n.length>0&&(t.countryIn=n),e.signupAfter&&(t.signupAfter=new Date(`${e.signupAfter}T00:00:00Z`).toISOString()),e.signupBefore&&(t.signupBefore=new Date(`${e.signupBefore}T00:00:00Z`).toISOString()),e.minCumulativeSpendUsd.trim()!==""&&(t.minCumulativeSpendUsd=Number(e.minCumulativeSpendUsd)),t}function c4s(e){return!!(e.countryIn.trim()||e.signupAfter||e.signupBefore||e.minCumulativeSpendUsd.trim())}function d4s(){const{t:e}=W(),t=Te(),{params:n,patch:a,remove:s}=Mt(),r=h.useMemo(()=>({kind:Pe(n,"kind"),status:Pe(n,"status")}),[n]),i=[{value:"",label:e("adminCampaigns.filters.allKinds")},{value:"static",label:e("adminCampaigns.filters.segmentKindStatic")},{value:"dynamic",label:e("adminCampaigns.filters.segmentKindDynamic")}],c=[{value:"",label:e("adminCampaigns.filters.allStatuses")},{value:"active",label:e("adminCampaigns.filters.statusActive")},{value:"archived",label:e("adminCampaigns.filters.statusArchived")}],d=Pe(n,"segment"),m=Dy(r),f=m.data?.items??[],p=()=>a({segment:"new"}),y=x=>a({segment:x.publicId}),v=()=>s(["segment"]),$=[{header:e("adminCampaigns.segments.name"),cell:x=>o.jsx("span",{className:"font-medium",children:x.name})},{header:e("adminCampaigns.segments.kind"),cell:x=>o.jsx(Xt,{variant:"outline",children:e(`adminCampaigns.segments.kind_${x.kind}`)})},{header:e("adminCampaigns.segments.members"),align:"right",cell:x=>t.number(x.memberCount)},{header:e("adminCampaigns.segments.materialized"),cell:x=>x.lastMaterializedAt?t.dateTime(x.lastMaterializedAt):"—"},{header:e("adminCampaigns.status"),cell:x=>o.jsx(Oe,{value:x.status})}];return o.jsxs("div",{className:"space-y-3",children:[o.jsxs("div",{className:"flex flex-col gap-3 md:flex-row md:items-end md:justify-between",children:[o.jsxs("div",{className:"flex flex-wrap items-end gap-3",children:[o.jsx(Ze,{label:e("adminCampaigns.segments.kind"),value:r.kind,options:i,onChange:x=>a({kind:x})}),o.jsx(Ze,{label:e("adminCampaigns.status"),value:r.status,options:c,onChange:x=>a({status:x})}),o.jsx(nn,{show:Zt(n,e8),onReset:()=>s(e8)})]}),o.jsxs(K,{onClick:p,children:[o.jsx(wr,{className:"size-4"}),e("adminCampaigns.segments.create")]})]}),o.jsx(Pt,{label:e("adminCampaigns.segments.title"),rows:f,columns:$,isLoading:m.isLoading,error:m.error,emptyTitle:e("adminCampaigns.segments.empty"),onRowClick:y,pagination:{pageSize:20}}),o.jsx(u4s,{open:!!d,segment:d&&d!=="new"?f.find(x=>x.publicId===d)??null:null,onClose:v})]})}function u4s({open:e,segment:t,onClose:n}){const{t:a}=W(),s=!!t,r=W3s(),i=Y3s(),[c,d]=h.useState(""),[m,f]=h.useState(""),[p,y]=h.useState("static"),[v,$]=h.useState(uJ);h.useEffect(()=>{e&&(d(t?.name??""),f(t?.description??""),y(t?.kind??"static"),$(l4s(t?.rule??null)))},[e,t]);
971async function x(){try{s&&t?(await i.mutateAsync({publicId:t.publicId,name:c,description:m,...t.kind==="dynamic"?{rule:UP(v)}:{}}),ie.success(a("adminCampaigns.segments.saved"))):(await r.mutateAsync({name:c,description:m||void 0,kind:p,...p==="dynamic"?{rule:UP(v)}:{}}),ie.success(a("adminCampaigns.segments.created")),n())}catch(k){ie.error(da(k))}}const w=r.isPending||i.isPending,S=c.trim().length>0&&!w;return o.jsx(Vn,{open:e,onOpenChange:k=>k?void 0:n(),children:o.jsxs(Nn,{side:"auto",className:"gap-4",children:[o.jsxs(Pa,{children:[o.jsx(Rn,{children:s?t.name:a("adminCampaigns.segments.create")}),o.jsx(ua,{children:a("adminCampaigns.segments.sheetDescription")})]}),o.jsxs(sn,{title:a("adminCampaigns.segments.basics"),children:[o.jsx(De,{label:a("adminCampaigns.segments.name"),children:o.jsx(ge,{value:c,onChange:k=>d(k.target.value),placeholder:a("adminCampaigns.segments.namePlaceholder")})}),o.jsx(De,{label:a("adminCampaigns.segments.description"),children:o.jsx(_o,{value:m,onChange:k=>f(k.target.value),rows:2})}),s?null:o.jsx(De,{label:a("adminCampaigns.segments.kind"),hint:a("adminCampaigns.segments.kindHint"),children:o.jsx("div",{className:"grid grid-cols-2 gap-2 sm:flex",children:["static","dynamic"].map(k=>o.jsx(K,{type:"button",variant:p===k?"default":"outline",size:"sm",onClick:()=>y(k),children:a(`adminCampaigns.segments.kind_${k}`)},k))})})]}),p==="dynamic"?o.jsx(m4s,{rule:v,onChange:$}):null,o.jsxs("div",{className:"grid gap-2 pt-2 sm:flex sm:items-center",children:[o.jsx(K,{className:"w-full sm:w-auto",onClick:x,disabled:!S,children:a(w?"common.saving":s?"common.save":"adminCampaigns.segments.create")}),o.jsx(K,{className:"w-full sm:w-auto",variant:"ghost",onClick:n,children:a("common.cancel")})]}),s&&t?t.kind==="static"?o.jsx(p4s,{segment:t}):o.jsx(f4s,{segment:t}):null]})})}function m4s({rule:e,onChange:t}){const{t:n}=W(),a=Te(),s=eLs(),[r,i]=h.useState(null);h.useEffect(()=>{if(!c4s(e)){i(0);return}const d=setTimeout(()=>{s.mutateAsync(UP(e)).then(m=>i(m.matchCount)).catch(()=>i(null))},500);return()=>clearTimeout(d)},[e.countryIn,e.signupAfter,e.signupBefore,e.minCumulativeSpendUsd]);const c=d=>t({...e,...d});return o.jsxs(sn,{title:n("adminCampaigns.segments.rule"),hint:n("adminCampaigns.segments.ruleHint"),children:[o.jsx(De,{label:n("adminCampaigns.segments.countryIn"),hint:n("adminCampaigns.segments.countryInHint"),children:o.jsx(ge,{value:e.countryIn,onChange:d=>c({countryIn:d.target.value}),placeholder:"CN, US, JP"})}),o.jsxs("div",{className:"grid gap-4 md:grid-cols-2",children:[o.jsx(De,{label:n("adminCampaigns.segments.signupAfter"),children:o.jsx(ge,{type:"date",value:e.signupAfter,onChange:d=>c({signupAfter:d.target.value})})}),o.jsx(De,{label:n("adminCampaigns.segments.signupBefore"),children:o.jsx(ge,{type:"date",value:e.signupBefore,onChange:d=>c({signupBefore:d.target.value})})})]}),o.jsx(De,{label:n("adminCampaigns.segments.minSpend"),hint:n("adminCampaigns.segments.minSpendHint"),children:o.jsx(ge,{type:"number",min:"0",step:"1",inputMode:"decimal",value:e.minCumulativeSpendUsd,onChange:d=>c({minCumulativeSpendUsd:d.target.value})})}),o.jsx("p",{className:"text-sm text-[color:var(--muted-foreground)]",children:s.isPending?n("adminCampaigns.segments.previewing"):n("adminCampaigns.segments.matchCount",{count:r??0,value:a.number(r??0)})})]})}function p4s({segment:e}){const{t}=W(),n=Te(),a=G3s(e.publicId),s=X3s(),r=Z3s(),[i,c]=h.useState([]),d=h.useCallback(async y=>(await oJ(y)).map($=>({id:$.publicId,label:$.email,hint:$.displayName??void 0})),[]);async function m(){if(i.length!==0)try{const y=await s.mutateAsync({publicId:e.publicId,userPublicIds:i.map(v=>v.id)});ie.success(t("adminCampaigns.segments.membersAdded",{count:y.added})),c([])}catch(y){ie.error(da(y))}}async function f(y){try{await r.mutateAsync({publicId:e.publicId,userPublicId:y})}catch(v){ie.error(da(v))}}const p=a.data?.items??[];return o.jsxs(sn,{title:t("adminCampaigns.segments.membersTitle"),hint:t("adminCampaigns.segments.membersHint"),children:[o.jsxs("div",{className:"grid gap-2 sm:flex sm:items-end",children:[o.jsx("div",{className:"min-w-0 flex-1",children:o.jsx(De,{label:t("adminCampaigns.segments.addMembers"),children:o.jsx(yV,{value:i,onChange:c,onSearch:d,placeholder:t("adminCampaigns.segments.searchUsers"),searchPlaceholder:t("adminCampaigns.segments.searchUsers"),emptyText:t("adminCampaigns.segments.noUsers")})})}),o.jsx(K,{className:"w-full sm:w-auto",onClick:m,disabled:i.length===0||s.isPending,children:t("adminCampaigns.actionAdd")})]}),p.length===0?o.jsx("p",{className:"text-sm text-[color:var(--muted-foreground)]",children:t("adminCampaigns.segments.noMembers")}):o.jsx("ul",{className:"divide-y divide-[color:var(--border)] rounded-md border border-[color:var(--border)]",children:p.map(y=>o.jsxs("li",{className:"flex items-center justify-between gap-2 px-3 py-2 text-sm",children:[o.jsxs("div",{className:"min-w-0",children:[o.jsx("span",{className:"block break-all",children:y.email}),o.jsxs("span",{className:"block break-words text-xs text-[color:var(--muted-foreground)]",children:[t(`adminCampaigns.segments.source_${y.source}`)," · ",n.dateTime(y.addedAt)]})]}),y.source==="manual"?o.jsx(K,{variant:"ghost",size:"icon",onClick:()=>f(y.userPublicId),"aria-label":t("adminCampaigns.actionRemove"),children:o.jsx(Sc,{className:"size-4"})}):null]},y.userPublicId))})]})}function f4s({segment:e}){const{t}=W(),n=Te(),a=J3s(),s=Q3s();async function r(){if(await zt({title:t("adminCampaigns.segments.materialize"),message:t("adminCampaigns.segments.materializeConfirm")}))try{const i=await a.mutateAsync(e.publicId);ie.success(t("adminCampaigns.segments.materializeDone",{count:i.memberCount}))}catch(i){ie.error(da(i))}}return o.jsxs(sn,{title:t("adminCampaigns.segments.materializeTitle"),hint:t("adminCampaigns.segments.materializeHint"),children:[o.jsxs("div",{className:"grid gap-2 sm:flex sm:items-center sm:justify-between",children:[o.jsx("span",{className:"min-w-0 break-words text-sm text-[color:var(--muted-foreground)]",children:e.lastMaterializedAt?t("adminCampaigns.segments.lastMaterialized",{value:n.dateTime(e.lastMaterializedAt)}):t("adminCampaigns.segments.neverMaterialized")}),o.jsx(K,{className:"w-full sm:w-auto",onClick:r,disabled:a.isPending,children:a.isPending?t("adminCampaigns.segments.materializing"):t("adminCampaigns.segments.materialize")})]}),o.jsx(K,{variant:"ghost",className:"w-full text-[color:var(--destructive)] sm:w-auto",onClick:async()=>{await zt({message:t("adminCampaigns.segments.deleteConfirm"),variant:"destructive",confirmText:t("adminCampaigns.actionDelete")})&&s.mutate(e.publicId)},children:t("adminCampaigns.segments.deleteSegment")})]})}const t8=["status","segment"],g4s=["active","paused","archived"];function h4s(){const{t:e}=W(),t=Te(),{params:n,patch:a,remove:s}=Mt(),r=h.useMemo(()=>({status:Pe(n,"status")}),[n]),i=[{value:"",label:e("adminCampaigns.filters.allStatuses")},{value:"active",label:e("adminCampaigns.filters.statusActive")},{value:"paused",label:e("adminCampaigns.filters.statusPaused")},{value:"archived",label:e("adminCampaigns.filters.statusArchived")}],c=Dy({status:"active"}),d=aLs(r),m=d.data?.items??[],[f,p]=h.useState(!1),y=(c.data?.items.length??0)>0,v=sLs(),$=rLs();async function x(k,T){try{await v.mutateAsync({publicId:k.publicId,status:T}),ie.success(e("adminCampaigns.access.statusUpdated"))}catch(R){ie.error(da(R))}}async function w(k){if(await zt({message:e("adminCampaigns.access.deleteConfirm"),variant:"destructive",confirmText:e("adminCampaigns.actionDelete")}))try{await $.mutateAsync(k.publicId)}catch(T){ie.error(da(T))}}const S=[{header:e("adminCampaigns.access.model"),mobileValue:"break-all",cell:k=>o.jsx("span",{className:"font-medium",children:k.modelFullSlug})},{header:e("adminCampaigns.access.segment"),cell:k=>k.segmentName},{header:e("adminCampaigns.access.validFrom"),cell:k=>k.validFrom?t.dateTime(k.validFrom):e("adminCampaigns.always")},{header:e("adminCampaigns.access.validTo"),cell:k=>k.validTo?t.dateTime(k.validTo):e("adminCampaigns.noExpiry")}
971,{header:e("adminCampaigns.status"),cell:k=>o.jsx(Oe,{value:k.status})},{header:e("adminCampaigns.actions"),sticky:"right",cell:k=>o.jsxs("div",{className:"flex items-center justify-end gap-1",onClick:T=>T.stopPropagation(),children:[k.status==="active"?o.jsx(K,{variant:"ghost",size:"sm",onClick:()=>x(k,"paused"),children:e("adminCampaigns.pause")}):k.status==="paused"?o.jsx(K,{variant:"ghost",size:"sm",onClick:()=>x(k,"active"),children:e("adminCampaigns.resume")}):null,o.jsx(K,{variant:"ghost",size:"sm",className:"text-[color:var(--destructive)]",onClick:()=>w(k),children:e("adminCampaigns.actionDelete")})]})}];return!y&&!c.isLoading?o.jsx(Ee,{className:"p-8",children:o.jsx(Ot,{title:e("adminCampaigns.access.noSegmentsTitle"),description:e("adminCampaigns.access.noSegmentsDescription")})}):o.jsxs("div",{className:"space-y-3",children:[o.jsxs("div",{className:"flex flex-col gap-3 md:flex-row md:items-end md:justify-between",children:[o.jsxs("div",{className:"flex flex-wrap items-end gap-3",children:[o.jsx(Ze,{label:e("adminCampaigns.status"),value:r.status,options:i,onChange:k=>a({status:k})}),o.jsx(nn,{show:Zt(n,t8),onReset:()=>s(t8)})]}),o.jsxs(K,{onClick:()=>p(!0),children:[o.jsx(wr,{className:"size-4"}),e("adminCampaigns.access.create")]})]}),o.jsx(Pt,{label:e("adminCampaigns.access.title"),rows:m,columns:S,isLoading:d.isLoading,error:d.error,emptyTitle:e("adminCampaigns.access.empty"),pagination:{pageSize:20}}),o.jsx(y4s,{open:f,onClose:()=>p(!1),statuses:g4s})]})}function y4s({open:e,onClose:t}){const{t:n,i18n:a}=W(),s=oLs(),r=Ru(),[i,c]=h.useState(""),[d,m]=h.useState(""),[f,p]=h.useState(""),[y,v]=h.useState("");function $(){c(""),m(""),p(""),v("")}const x=r.data?.items.find(T=>T.publicId===i),w=x?.visibility==="public";async function S(){if(!(!i||!d)&&!(w&&!await zt({title:n("adminCampaigns.access.publicModelTitle"),message:n("adminCampaigns.access.publicModelWarning",{model:x?.fullSlug}),confirmText:n("adminCampaigns.access.createAnyway")})))try{await s.mutateAsync({modelPublicId:i,segmentPublicId:d,validFrom:f?new Date(`${f}T00:00:00Z`).toISOString():null,validTo:y?new Date(`${y}T23:59:59Z`).toISOString():null}),ie.success(n("adminCampaigns.access.created")),$(),t()}catch(T){ie.error(da(T))}}const k=!!(i&&d)&&!s.isPending;return o.jsx(Vn,{open:e,onOpenChange:T=>T?void 0:t(),children:o.jsxs(Nn,{side:"auto",className:"gap-4",children:[o.jsxs(Pa,{children:[o.jsx(Rn,{children:n("adminCampaigns.access.create")}),o.jsx(ua,{children:n("adminCampaigns.access.sheetDescription")})]}),o.jsxs(sn,{title:n("adminCampaigns.access.target"),children:[o.jsx(xN,{label:n("adminCampaigns.access.model"),value:i,onChange:c}),w?o.jsx("p",{className:"text-sm text-[color:var(--muted-foreground)]",children:n("adminCampaigns.access.publicHint")}):null,o.jsx(W0,{label:n("adminCampaigns.access.segment"),value:d,onChange:m})]}),o.jsxs(sn,{title:n("adminCampaigns.window"),hint:n("adminCampaigns.windowHint"),contentClassName:"md:grid-cols-2",children:[o.jsx(De,{label:n("adminCampaigns.validFrom"),children:o.jsx(fr,{value:f,onChange:p,placeholder:n("adminCampaigns.always"),locale:a.language,clearLabel:n("adminCampaigns.actionClear"),labels:gr(n,n("adminCampaigns.actionClear"))})}),o.jsx(De,{label:n("adminCampaigns.validTo"),children:o.jsx(fr,{value:y,onChange:v,placeholder:n("adminCampaigns.noExpiry"),locale:a.language,clearLabel:n("adminCampaigns.actionClear"),labels:gr(n,n("adminCampaigns.actionClear"))})})]}),o.jsxs("div",{className:"grid gap-2 pt-2 sm:flex sm:items-center",children:[o.jsx(K,{className:"w-full sm:w-auto",onClick:S,disabled:!k,children:s.isPending?n("common.saving"):n("adminCampaigns.access.create")}),o.jsx(K,{className:"w-full sm:w-auto",variant:"ghost",onClick:t,children:n("common.cancel")})]})]})})}const n8=["status"];function BP(e,t=Date.now()){if(e.status!=="active")return!1;const n=new Date(e.validFrom).getTime(),a=e.validTo?new Date(e.validTo).getTime():1/0;return t>=n&&t<a}function v4s(){const{t:e}=W(),t=Te(),{params:n,patch:a,remove:s}=Mt(),r=h.useMemo(()=>({status:Pe(n,"status")}),[n]),i=[{value:"",label:e("adminCampaigns.filters.allStatuses")},{value:"active",label:e("adminCampaigns.filters.statusActive")},{value:"paused",label:e("adminCampaigns.filters.statusPaused")},{value:"ended",label:e("adminCampaigns.filters.statusEnded")},{value:"archived",label:e("adminCampaigns.filters.statusArchived")}],c=Dy({status:"active"}),d=iLs(r),m=d.data?.items??[],[f,p]=h.useState(null),y=aJ(),v=cLs();async function $(k,T){try{await y.mutateAsync({publicId:k.publicId,status:T}),ie.success(e("adminCampaigns.discounts.statusUpdated"))}catch(R){ie.error(da(R))}}async function x(k){if(await zt({message:e("adminCampaigns.discounts.deleteConfirm"),variant:"destructive",confirmText:e("adminCampaigns.actionDelete")}))try{await v.mutateAsync(k.publicId)}catch(T){ie.error(da(T))}}const w=[{header:e("adminCampaigns.discounts.model"),mobileValue:"break-all",cell:k=>o.jsx("span",{className:"font-medium",children:k.modelFullSlug})},{header:e("adminCampaigns.discounts.audience"),cell:k=>k.segmentName??e("adminCampaigns.allUsers")},{header:e("adminCampaigns.discounts.discount"),align:"right",cell:k=>o.jsxs("span",{className:"tabular-nums",children:["-",t.number(Math.round(k.value*100)),"%"]})},{header:e("adminCampaigns.discounts.window"),cell:k=>`${t.dateTime(k.validFrom)} → ${k.validTo?t.dateTime(k.validTo):e("adminCampaigns.noExpiry")}
971`},{header:e("adminCampaigns.status"),cell:k=>o.jsxs("div",{className:"flex items-center gap-1.5",children:[o.jsx(Oe,{value:k.status}),BP(k)?o.jsx(Xt,{variant:"outline",children:e("adminCampaigns.discounts.live")}):null]})},{header:e("adminCampaigns.actions"),sticky:"right",cell:k=>o.jsxs("div",{className:"flex items-center justify-end gap-1",onClick:T=>T.stopPropagation(),children:[BP(k)?o.jsx(K,{variant:"ghost",size:"sm",onClick:()=>$(k,"paused"),children:e("adminCampaigns.pause")}):k.status==="paused"?o.jsx(K,{variant:"ghost",size:"sm",onClick:()=>$(k,"active"),children:e("adminCampaigns.resume")}):null,k.status==="active"||k.status==="paused"?o.jsx(K,{variant:"ghost",size:"sm",onClick:()=>$(k,"ended"),children:e("adminCampaigns.discounts.end")}):null,o.jsx(K,{variant:"ghost",size:"sm",className:"text-[color:var(--destructive)]",onClick:()=>x(k),children:e("adminCampaigns.actionDelete")})]})}],S=(c.data?.items.length??0)>0;return o.jsxs("div",{className:"space-y-3",children:[o.jsxs("div",{className:"flex flex-col gap-3 md:flex-row md:items-end md:justify-between",children:[o.jsxs("div",{className:"flex flex-wrap items-end gap-3",children:[o.jsx(Ze,{label:e("adminCampaigns.status"),value:r.status,options:i,onChange:k=>a({status:k})}),o.jsx(nn,{show:Zt(n,n8),onReset:()=>s(n8)})]}),o.jsxs(K,{onClick:()=>p({mode:"create"}),children:[o.jsx(wr,{className:"size-4"}),e("adminCampaigns.discounts.create"),o.jsx("span",{className:"sr-only",children:e("adminCampaigns.discounts.createAria",{defaultValue:"Create discount"})})]})]}),o.jsx(Pt,{label:e("adminCampaigns.discounts.title"),rows:m,columns:w,isLoading:d.isLoading,error:d.error,emptyTitle:e("adminCampaigns.discounts.empty"),onRowClick:k=>p({mode:"edit",discount:k}),pagination:{pageSize:20}}),f?o.jsx(b4s,{discount:f.mode==="edit"?f.discount:null,allowAll:S,onClose:()=>p(null)}):null]})}function b4s({discount:e,allowAll:t,onClose:n}){const{t:a,i18n:s}=W(),r=Te(),i=!!e,c=e?BP(e):!1,d=e?.status==="ended"||e?.status==="archived",m=c||d,f=lLs(),p=aJ(),y=Ru(),[v,$]=h.useState(""),[x,w]=h.useState(""),[S,k]=h.useState(e?String(Math.round(e.value*100)):""),[T,R]=h.useState(e?.name??""),[_,P]=h.useState(e?.validFrom?e.validFrom.slice(0,10):""),[j,N]=h.useState(e?.validTo?e.validTo.slice(0,10):""),I=i?y.data?.items.find(ne=>ne.fullSlug===e.modelFullSlug):y.data?.items.find(ne=>ne.publicId===v),z=Number(S)/100,E=h.useMemo(()=>{if(!I||!(z>0&&z<1))return null;const ne=Number(I.inputPricePer1m??0),q=Number(I.officialInputPricePer1m??0);if(!(ne>0))return null;const M=ne*(1-z),F=q>0?1-M/q:null;return{our:ne,official:q,discounted:M,savedVsOfficial:F}},[I,z]);async function L(){const ne=Number(S)/100;try{if(i&&e)await p.mutateAsync({publicId:e.publicId,value:ne,name:T||void 0,validFrom:_?new Date(`${_}T00:00:00Z`).toISOString():void 0,validTo:j?new Date(`${j}T23:59:59Z`).toISOString():null}),ie.success(a("adminCampaigns.discounts.saved"));else{if(!v||!_)return;await f.mutateAsync({modelPublicId:v,segmentPublicId:x||null,value:ne,name:T||void 0,validFrom:new Date(`${_}T00:00:00Z`).toISOString(),validTo:j?new Date(`${j}T23:59:59Z`).toISOString():null}),ie.success(a("adminCampaigns.discounts.created"))}n()}catch(q){ie.error(da(q))}}const O=f.isPending||p.isPending,V=z>0&&z<1&&(i||!!v&&!!_);return o.jsx(Vn,{open:!0,onOpenChange:ne=>ne?void 0:n(),children:o.jsxs(Nn,{side:"auto",className:"gap-4",children:[o.jsxs(Pa,{children:[o.jsx(Rn,{className:"break-all",children:i?e.modelFullSlug:a("adminCampaigns.discounts.create")}),o.jsx(ua,{children:a("adminCampaigns.discounts.sheetDescription")})]}),m?o.jsx("p",{className:"rounded-md border border-[color:var(--border)] bg-[color:var(--muted)] px-3 py-2 text-sm text-[color:var(--muted-foreground)]",children:a(c?"adminCampaigns.discounts.liveReadonly":"adminCampaigns.discounts.terminalReadonly")}):null,o.jsxs(sn,{title:a("adminCampaigns.discounts.target"),children:[i?o.jsx(De,{label:a("adminCampaigns.discounts.model"),children:o.jsx(ge,{value:e.modelFullSlug,disabled:!0})}):o.jsx(xN,{label:a("adminCampaigns.discounts.model"),value:v,onChange:$}),i?o.jsx(De,{label:a("adminCampaigns.discounts.audience"),children:o.jsx(ge,{value:e.segmentName??a("adminCampaigns.allUsers"),disabled:!0})}):o.jsx(W0,{label:a("adminCampaigns.discounts.audience"),value:x,onChange:w,allowAll:t,allLabel:a("adminCampaigns.allUsers"),hint:a("adminCampaigns.discounts.audienceHint")})]}),o.jsxs(sn,{title:a("adminCampaigns.discounts.amount"),children:[o.jsx(De,{label:a("adminCampaigns.discounts.percentLabel"),hint:a("adminCampaigns.discounts.percentHint"),error:S&&!(z>0&&z<1)?a("adminCampaigns.discounts.percentError"):void 0,children:o.jsx(ge,{type:"number",min:"1",max:"99",step:"1",inputMode:"numeric",value:S,onChange:ne=>k(ne.target.value),disabled:m,placeholder:"20"})}),o.jsx(De,{label:a("adminCampaigns.discounts.name"),hint:a("adminCampaigns.discounts.nameHint"),children:o.jsx(ge,{value:T,onChange:ne=>R(ne.target.value),disabled:m})}),E?o.jsxs("div",{className:"grid gap-1 rounded-md border border-[color:var(--border)] bg-[color:var(--muted)] px-3 py-2 text-sm",children:[o.jsxs("div",{className:"grid gap-1 sm:flex sm:items-center sm:justify-between",children:[o.jsx("span",{className:"text-[color:var(--muted-foreground)]",children:a("adminCampaigns.discounts.previewPlatform")}),o.jsxs("span",{className:"tabular-nums sm:text-right",children:[o.jsx("span",{className:"line-through opacity-60",children:r.currency(E.our)})," ",o.jsx("span",{className:"font-semibold",children:r.currency(E.discounted)})," /1M"]})]}),E.savedVsOfficial!=null?o.jsxs("div",{className:"grid gap-1 sm:flex sm:items-center sm:justify-between",children:[o.jsx("span",{className:"text-[color:var(--muted-foreground)]",children:a("adminCampaigns.discounts.previewVsOfficial")}),o.jsxs("span",{className:"tabular-nums font-medium sm:text-right",children:["-",r.number(Math.round(E.savedVsOfficial*100)),"%"]})]}):null]}):null]}),o.jsxs(sn,{title:a("adminCampaigns.window"),contentClassName:"md:grid-cols-2",children:[o.jsx(De,{label:a("adminCampaigns.validFrom"),children:o.jsx(fr,{value:_,onCh
971ange:P,placeholder:a("adminCampaigns.discounts.pickStart"),locale:s.language,clearLabel:a("adminCampaigns.actionClear"),labels:gr(a,a("adminCampaigns.actionClear")),disabled:m})}),o.jsx(De,{label:a("adminCampaigns.validTo"),children:o.jsx(fr,{value:j,onChange:N,placeholder:a("adminCampaigns.noExpiry"),locale:s.language,clearLabel:a("adminCampaigns.actionClear"),labels:gr(a,a("adminCampaigns.actionClear")),disabled:m})})]}),o.jsxs("div",{className:"grid gap-2 pt-2 sm:flex sm:items-center",children:[m?null:o.jsx(K,{className:"w-full sm:w-auto",onClick:L,disabled:!V||O,children:a(O?"common.saving":i?"common.save":"adminCampaigns.discounts.create")}),o.jsx(K,{className:"w-full sm:w-auto",variant:"ghost",onClick:n,children:a(m?"adminCampaigns.actionClose":"common.cancel")})]})]})})}const x4s=/^[^\s@]+@[^\s@]+\.[^\s@]+$/;function $4s(e){const t=e.split(/[\n\r,;,;\s]+/).map(r=>r.trim().toLowerCase()).filter(Boolean),n=[],a=[],s=new Set;for(const r of t)s.has(r)||(s.add(r),(x4s.test(r)?n:a).push(r));return{emails:n,invalid:a}}function w4s(e,t=new Date){return new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate()+e)).toISOString().slice(0,10)}const a8=["kind","status"];function k4s(){const{t:e}=W(),t=Te(),{params:n,patch:a,remove:s}=Mt(),r=h.useMemo(()=>({kind:Pe(n,"kind"),status:Pe(n,"status")}),[n]),i=[{value:"",label:e("adminCampaigns.filters.allKinds")},{value:"grant",label:e("adminCampaigns.filters.grantKindGrant")},{value:"revoke",label:e("adminCampaigns.filters.grantKindRevoke")}],c=[{value:"",label:e("adminCampaigns.filters.allStatuses")},{value:"pending",label:e("adminCampaigns.filters.statusPending")},{value:"processing",label:e("adminCampaigns.filters.statusProcessing")},{value:"completed",label:e("adminCampaigns.filters.statusCompleted")},{value:"failed",label:e("adminCampaigns.filters.statusFailed")}],d=Pe(n,"batch"),m=dLs(r),f=m.data?.items??[],[p,y]=h.useState(!1),v=pLs();async function $(w){if(await zt({title:e("adminCampaigns.grants.revoke"),message:e("adminCampaigns.grants.revokeConfirm",{count:w.recipientCount,model:w.modelFullSlugs.join(", ")}),variant:"destructive",confirmText:e("adminCampaigns.grants.revoke")}))try{await v.mutateAsync({batchId:w.publicId}),ie.success(e("adminCampaigns.grants.revokeQueued"))}catch(k){ie.error(da(k))}}const x=[{header:e("adminCampaigns.grants.model"),mobileValue:"break-all",cell:w=>w.modelFullSlugs.join(", ")},{header:e("adminCampaigns.grants.kind"),cell:w=>o.jsx(Xt,{variant:"outline",children:e(`adminCampaigns.grants.kind_${w.kind}`)})},{header:e("adminCampaigns.grants.time"),cell:w=>t.dateTime(w.createdAt)},{header:e("adminCampaigns.grants.recipients"),align:"right",cell:w=>t.number(w.recipientCount)},{header:e("adminCampaigns.grants.amount"),align:"right",cell:w=>t.currency(Number(w.amountUsd))},{header:e("adminCampaigns.grants.expiry"),cell:w=>w.bucketExpiresAt?t.dateTime(w.bucketExpiresAt):e("adminCampaigns.noExpiry")},{header:e("adminCampaigns.status"),cell:w=>o.jsx(Oe,{value:w.status})},{header:e("adminCampaigns.actions"),sticky:"right",cell:w=>o.jsx("div",{className:"flex items-center justify-end gap-1",onClick:S=>S.stopPropagation(),children:w.kind==="grant"&&w.status==="completed"?o.jsx(K,{variant:"ghost",size:"sm",className:"text-[color:var(--destructive)]",onClick:()=>$(w),children:e("adminCampaigns.grants.revoke")}):null})}];return o.jsxs("div",{className:"space-y-3",children:[o.jsxs("div",{className:"flex flex-col gap-3 md:flex-row md:items-end md:justify-between",children:[o.jsxs("div",{className:"flex flex-wrap items-end gap-3",children:[o.jsx(Ze,{label:e("adminCampaigns.grants.kind"),value:r.kind,options:i,onChange:w=>a({kind:w})}),o.jsx(Ze,{label:e("adminCampaigns.status"),value:r.status,options:c,onChange:w=>a({status:w})}),o.jsx(nn,{show:Zt(n,a8),onReset:()=>s(a8)})]}),o.jsxs(K,{onClick:()=>y(!0),children:[o.jsx(wr,{className:"size-4"}),e("adminCampaigns.grants.create")]})]}),o.jsx(Pt,{label:e("adminCampaigns.grants.title"),rows:f,columns:x,isLoading:m.isLoading,error:m.error,emptyTitle:e("adminCampaigns.grants.empty"),onRowClick:w=>a({batch:w.publicId}),mobileVisibleFieldCount:3,pagination:{pageSize:20}}),o.jsx(C4s,{open:p,onClose:()=>y(!1)}),o.jsx(S4s,{batchId:d||null,onClose:()=>s(["batch"])})]})}function C4s({open:e,onClose:t}){const{t:n,i18n:a}
971=W(),s=Te(),r=mLs(),i=Dy({status:"active"}),c=Ru(),[d,m]=h.useState("segment"),[f,p]=h.useState([]),[y,v]=h.useState(""),[$,x]=h.useState([]),[w,S]=h.useState(""),[k,T]=h.useState(null),[R,_]=h.useState(!1),[P,j]=h.useState(""),[N,I]=h.useState(""),[z,E]=h.useState(!0),[L,O]=h.useState("");function V(){m("segment"),p([]),v(""),x([]),S(""),T(null),j(""),I(""),E(!0),O("")}const ne=h.useMemo(()=>[...c.data?.items??[]].sort((Y,pe)=>Y.fullSlug.localeCompare(pe.fullSlug)).map(Y=>({value:Y.publicId,label:Y.fullSlug})),[c.data]),q=h.useMemo(()=>{const Y=new Map;for(const pe of c.data?.items??[])Y.set(pe.publicId,pe.fullSlug);return Y},[c.data]),M=h.useCallback(async Y=>(await oJ(Y)).map(se=>({id:se.publicId,label:se.email,hint:se.displayName??void 0})),[]);async function F(){const{emails:Y,invalid:pe}=$4s(w);if(!(Y.length===0&&pe.length===0)){_(!0);try{const{matched:se,unmatchedEmails:we}=await fLs(Y),me=se.filter(ye=>ye.status==="active");x(ye=>{const _e=new Map(ye.map(ae=>[ae.id,ae]));for(const ae of me)_e.set(ae.publicId,{id:ae.publicId,label:ae.email,hint:ae.displayName??void 0});return[..._e.values()]}),T({matchedCount:me.length,unmatched:we,invalid:pe,inactive:se.filter(ye=>ye.status!=="active").map(ye=>ye.email)}),S("")}catch(se){ie.error(da(se))}finally{_(!1)}}}const H=i.data?.items.find(Y=>Y.publicId===y),ee=d==="segment"?H?.memberCount??0:$.length,B=Number(P),G=ee*(Number.isFinite(B)?B:0);async function Q(){if(f.length===0||!(B>=.01)||d==="segment"&&!y||d==="users"&&$.length===0)return;const Y=f.map(se=>q.get(se)??se);if(await zt({title:n("adminCampaigns.grants.confirmTitle"),message:n("adminCampaigns.grants.confirmMessage",{count:ee,amount:s.currency(B),total:s.currency(G)}),content:o.jsxs("dl",{className:"grid gap-2 text-sm",children:[o.jsx(wo,{label:n("adminCampaigns.grants.model"),value:Y.join(", ")}),o.jsx(wo,{label:n("adminCampaigns.grants.recipients"),value:s.number(ee)}),o.jsx(wo,{label:n("adminCampaigns.grants.amountEach"),value:s.currency(B)}),o.jsx(wo,{label:n("adminCampaigns.grants.total"),value:s.currency(G)}),o.jsx(wo,{label:n("adminCampaigns.grants.expiry"),value:N||n("adminCampaigns.noExpiry")}),o.jsx(wo,{label:n("adminCampaigns.grants.notifyEmail"),value:n(z?"adminCampaigns.grants.notifyYes":"adminCampaigns.grants.notifyNo")})]}),confirmText:n("adminCampaigns.grants.confirmSend")}))try{await r.mutateAsync({modelPublicIds:f,...d==="segment"?{segmentPublicId:y}:{userPublicIds:$.map(se=>se.id)},amountUsd:B,bucketExpiresAt:N?new Date(`${N}T23:59:59Z`).toISOString():null,notifyEmail:z,note:L||void 0}),ie.success(n("adminCampaigns.grants.queued")),V(),t()}catch(se){ie.error(da(se))}}const de=f.length>0&&B>=.01&&B<=2e3&&(d==="segment"?!!y:$.length>0)&&!r.isPending;return o.jsx(Vn,{open:e,onOpenChange:Y=>Y?void 0:t(),children:o.jsxs(Nn,{side:"auto",className:"gap-4",children:[o.jsxs(Pa,{children:[o.jsx(Rn,{children:n("adminCampaigns.grants.create")}),o.jsx(ua,{children:n("adminCampaigns.grants.sheetDescription")})]}),o.jsxs(sn,{title:n("adminCampaigns.grants.audience"),children:[o.jsx(el,{value:d,onValueChange:Y=>m(Y),options:[{value:"segment",label:n("adminCampaigns.grants.bySegment")},{value:"users",label:n("adminCampaigns.grants.byUsers")}]}),d==="segment"?o.jsx(W0,{label:n("adminCampaigns.grants.segment"),value:y,onChange:v}):o.jsxs(o.Fragment,{children:[o.jsx(De,{label:n("adminCampaigns.grants.users"),children:o.jsx(yV,{value:$,onChange:x,onSearch:M,placeholder:n("adminCampaigns.grants.searchUsers"),searchPlaceholder:n("adminCampaigns.grants.searchUsers"),emptyText:n("adminCampaigns.grants.noUsers")})}),o.jsxs(De,{label:n("adminCampaigns.grants.pasteEmails"),children:[o.jsx(_o,{value:w,onChange:Y=>S(Y.target.value),rows:3,placeholder:n("adminCampaigns.grants.pasteEmailsPlaceholder")}),o.jsx("div",{className:"mt-2",children:o.jsx(K,{variant:"outline",size:"sm",onClick:F,disabled:R||!w.trim(),children:n(R?"common.loading":"adminCampaigns.grants.importEmails")})}),k?o.jsxs("div",{className:"mt-2 grid gap-1 text-xs text-[color:var(--muted-foreground)]",children:[o.jsx("p",{children:n("adminCampaigns.grants.importMatched",{count:k.matchedCount})}),k.unmatched.length>0?o.jsxs("p",{className:"break-words",children:[n("adminCampaigns.grants.importUnmatched",{count:k.unmatched.length}
971)," ",k.unmatched.join(", ")]}):null,k.invalid.length>0?o.jsxs("p",{className:"break-words",children:[n("adminCampaigns.grants.importInvalid",{count:k.invalid.length})," ",k.invalid.join(", ")]}):null,k.inactive.length>0?o.jsxs("p",{className:"break-words",children:[n("adminCampaigns.grants.importInactive",{count:k.inactive.length})," ",k.inactive.join(", ")]}):null]}):null]})]})]}),o.jsxs(sn,{title:n("adminCampaigns.grants.grantDetails"),children:[o.jsx(De,{label:n("adminCampaigns.grants.model"),hint:n("adminCampaigns.grants.modelHint"),children:o.jsx(ly,{value:f,onChange:p,options:ne,allLabel:n("adminCampaigns.grants.pickModels"),placeholder:n("adminCampaigns.grants.pickModels"),triggerLabel:Y=>Y.length===0?n("adminCampaigns.grants.pickModels"):Y.length<=2?Y.map(pe=>q.get(pe)??pe).join(", "):n("adminCampaigns.grants.nModels",{count:Y.length})})}),o.jsxs("div",{className:"grid gap-4 md:grid-cols-2",children:[o.jsx(De,{label:n("adminCampaigns.grants.amountEach"),hint:n("adminCampaigns.grants.amountHint"),children:o.jsx(ge,{type:"number",min:"0.01",max:"2000",step:"0.01",inputMode:"decimal",value:P,onChange:Y=>j(Y.target.value),placeholder:"5.00"})}),o.jsxs(De,{label:n("adminCampaigns.grants.expiry"),hint:n("adminCampaigns.grants.expiryHint"),children:[o.jsx(fr,{value:N,onChange:I,placeholder:n("adminCampaigns.noExpiry"),locale:a.language,clearLabel:n("adminCampaigns.actionClear"),labels:gr(n,n("adminCampaigns.actionClear"))}),o.jsxs("div",{className:"mt-2 flex flex-wrap gap-2",children:[[7,30,90].map(Y=>o.jsx(K,{variant:"outline",size:"sm",onClick:()=>I(w4s(Y)),children:n(`adminCampaigns.grants.preset${Y}d`)},Y)),o.jsx(K,{variant:"outline",size:"sm",onClick:()=>I(""),children:n("adminCampaigns.noExpiry")})]})]})]}),o.jsxs("label",{className:"flex items-center justify-between gap-3 text-sm font-medium",children:[o.jsx("span",{children:n("adminCampaigns.grants.notifyEmail")}),o.jsx(js,{checked:z,onCheckedChange:E})]}),o.jsx(De,{label:n("adminCampaigns.grants.note"),children:o.jsx(_o,{value:L,onChange:Y=>O(Y.target.value),rows:2})})]}),ee>0&&B>0?o.jsx("p",{className:"text-sm text-[color:var(--muted-foreground)]",children:n("adminCampaigns.grants.summary",{count:ee,amount:s.currency(B),total:s.currency(G)})}):null,o.jsxs("div",{className:"grid gap-2 pt-2 sm:flex sm:items-center",children:[o.jsx(K,{className:"w-full sm:w-auto",onClick:Q,disabled:!de,children:r.isPending?n("adminCampaigns.grants.sending"):n("adminCampaigns.grants.send")}),o.jsx(K,{className:"w-full sm:w-auto",variant:"ghost",onClick:t,children:n("common.cancel")})]})]})})}function S4s({batchId:e,onClose:t}){const{t:n}=W(),a=Te(),r=uLs(e).data;return o.jsx(Vn,{open:!!e,onOpenChange:i=>i?void 0:t(),children:o.jsxs(Nn,{side:"auto",className:"gap-4",children:[o.jsxs(Pa,{children:[o.jsx(Rn,{children:n("adminCampaigns.grants.batchTitle")}),o.jsx(ua,{children:r?.modelFullSlugs.join(", ")??""})]}),r?o.jsxs("dl",{className:"grid gap-2 text-sm",children:[o.jsx(wo,{label:n("adminCampaigns.grants.kind"),value:n(`adminCampaigns.grants.kind_${r.kind}`)}),o.jsx(wo,{label:n("adminCampaigns.status"),value:o.jsx(Oe,{value:r.status})}),o.jsx(wo,{label:n("adminCampaigns.grants.recipients"),value:a.number(r.recipientCount)}),o.jsx(wo,{label:n("adminCampaigns.grants.amountEach"),value:a.currency(Number(r.amountUsd))}),o.jsx(wo,{label:n("adminCampaigns.grants.succeeded"),value:a.number(r.succeededCount)}),o.jsx(wo,{label:n("adminCampaigns.grants.failed"),value:a.number(r.failedCount)}),Number(r.revokedAmount)>0?o.jsx(wo,{label:n("adminCampaigns.grants.revokedAmount"),value:a.currency(Number(r.revokedAmount))}):null,r.completedAt?o.jsx(wo,{label:n("adminCampaigns.grants.completedAt"),value:a.dateTime(r.completedAt)}):null]}):o.jsx("p",{className:"text-sm text-[color:var(--muted-foreground)]",children:n("common.loading")})]})})}function wo({label:e,value:t}){return o.jsxs("div",{className:"grid gap-1 border-b border-[color:var(--border)] pb-2 last:border-0 sm:flex sm:items-center sm:justify-between sm:gap-3",children:[o.jsx("dt",{className:"text-[color:var(--muted-foreground)]",children:e}),o.jsx("dd",{className:"min-w-0 break-words tabular-nums sm:text-right",children:t})]})}function A4s(e){const t=Object.entries(e).filter(([,a])=>a!==void 0&&a!==""),n=new URLSearchParams(t.map(([a,s])=>
971[a,String(s)])).toString();return n?`?${n}`:""}function T4s(e={}){return Ue({queryKey:["ops","campaigns","recurring",e],queryFn:()=>ve.request(`/ops/campaigns/recurring${A4s({limit:100,status:e.status,unit:e.unit})}`),retry:1})}function R4s(){const e=Re();return ke({mutationFn:t=>ve.request("/ops/campaigns/recurring",{method:"POST",body:t,idempotent:!0}),onSuccess:()=>e.invalidateQueries({queryKey:["ops","campaigns","recurring"]})})}function P4s(){const e=Re();return ke({mutationFn:({publicId:t,...n})=>ve.request(`/ops/campaigns/recurring/${t}`,{method:"PATCH",body:n,idempotent:!0}),onSuccess:()=>e.invalidateQueries({queryKey:["ops","campaigns","recurring"]})})}const o8=["rstatus","runit"],_4s=["UTC","Asia/Shanghai","Asia/Tokyo","Asia/Singapore","Europe/London","America/New_York","America/Los_Angeles"];function j4s(){const{t:e}=W(),t=Te(),{params:n,patch:a,remove:s}=Mt(),r=h.useMemo(()=>({status:Pe(n,"rstatus"),unit:Pe(n,"runit")}),[n]),i=T4s(r),c=i.data?.items??[],[d,m]=h.useState(!1),[f,p]=h.useState(null),y=[{value:"",label:e("adminCampaigns.recurring.allStatuses")},{value:"draft",label:e("adminCampaigns.recurring.status_draft")},{value:"active",label:e("adminCampaigns.recurring.status_active")},{value:"paused",label:e("adminCampaigns.recurring.status_paused")},{value:"archived",label:e("adminCampaigns.recurring.status_archived")}],v=[{value:"",label:e("adminCampaigns.recurring.allUnits")},{value:"tokens",label:e("adminCampaigns.recurring.unit_tokens")},{value:"usd",label:e("adminCampaigns.recurring.unit_usd")}];function $(){p(null),m(!0)}function x(S){p(S),m(!0)}const w=[{header:e("adminCampaigns.recurring.name"),cell:S=>S.name},{header:e("adminCampaigns.recurring.unit"),cell:S=>o.jsx(Xt,{variant:"outline",children:e(`adminCampaigns.recurring.unit_${S.unit}`)})},{header:e("adminCampaigns.recurring.perPeriod"),align:"right",cell:S=>S.unit==="tokens"?`${t.number(S.tokensPerPeriod??0)} tok`:t.currency(Number(S.amountUsd??0))},{header:e("adminCampaigns.recurring.cadence"),cell:S=>e(`adminCampaigns.recurring.cadence_${S.cadence}`)},{header:e("adminCampaigns.recurring.audience"),cell:S=>S.segmentName??e("adminCampaigns.allUsers")},{header:e("adminCampaigns.recurring.thisPeriod"),align:"right",cell:S=>o.jsxs("span",{className:"tabular-nums",children:[t.number(S.grantedCount)," · ",t.number(Number(S.consumedTokens)),"/",t.number(Number(S.grantedTokens))]})},{header:e("adminCampaigns.status"),cell:S=>o.jsx(Oe,{value:S.status})}];return o.jsxs("div",{className:"space-y-3",children:[o.jsxs("div",{className:"flex flex-col gap-3 md:flex-row md:items-end md:justify-between",children:[o.jsxs("div",{className:"flex flex-wrap items-end gap-3",children:[o.jsx(Ze,{label:e("adminCampaigns.status"),value:r.status,options:y,onChange:S=>a({rstatus:S})}),o.jsx(Ze,{label:e("adminCampaigns.recurring.unit"),value:r.unit,options:v,onChange:S=>a({runit:S})}),o.jsx(nn,{show:Zt(n,o8),onReset:()=>s(o8)})]}),o.jsxs(K,{onClick:$,children:[o.jsx(wr,{className:"size-4"}),e("adminCampaigns.recurring.create")]})]}),o.jsx(Pt,{label:e("adminCampaigns.recurring.title"),rows:c,columns:w,isLoading:i.isLoading,error:i.error,emptyTitle:e("adminCampaigns.recurring.empty"),onRowClick:x,mobileVisibleFieldCount:3,pagination:{pageSize:20}}),o.jsx(N4s,{open:d,editing:f,onClose:()=>m(!1)})]})}function N4s({open:e,editing:t,onClose:n}){const{t:a,i18n:s}=W(),r=R4s(),i=P4s(),c=Ru(),d=!!t,m=d&&t.status!=="draft",[f,p]=h.useState(t?.name??""),[y,v]=h.useState(t?.unit??"tokens"),[$,x]=h.useState(t?.tokensPerPeriod!=null?String(t.tokensPerPeriod):""),[w,S]=h.useState(t?.amountUsd??""),[k,T]=h.useState([]),[R,_]=h.useState(""),[P,j]=h.useState(t?.segmentPublicId??""),[N,I]=h.useState(t?.cadence??"daily"),[z,E]=h.useState(t?.anchorTz??"UTC"),[L,O]=h.useState(t?.startsAt?t.startsAt.slice(0,10):""),[V,ne]=h.useState(t?.endsAt?t.endsAt.slice(0,10):""),[q,M]=h.useState(t?.excludeRisky??!0),[F,H]=h.useState(t?.status??"draft"),ee=`${e}:${t?.publicId??"new"}`,[B,G]=h.useState("");ee!==B&&(G(ee),p(t?.name??""),v(t?.unit??"tokens"),x(t?.tokensPerPeriod!=null?String(t.tokensPerPeriod):""),S(t?.amountUsd??""),T([]),_(""),j(t?.segmentPublicId??""),I(t?.cadence??"daily"),E(t?.anchorTz??"UTC"),O(t?.startsAt?t.startsAt.slice(0,10):""),ne(t?.endsAt?t.endsAt.slice(0,10):""),M(t?.excludeRisky??!0),H(t?.status??"draft"));const Q=h.useMemo(()=>[...c.data?.items??[]].sort((ae,Je)=>ae.fullSlug.localeCompare(Je.fullSlug)).map(ae=>({value:ae.publicId,label:ae.fullSlug})),[c.data]),de=h.useMemo(()=>{const ae=new Map;for(const Je of c.data?.items??[])ae.set(Je.publicId,Je.fullSlug);return ae},[c.data]),Y=Number($),pe=Number(w);function se(ae){ae&&ie.warning(ae)}
971async function we(){try{if(d&&t){const ae=await i.mutateAsync({publicId:t.publicId,name:f.trim(),status:F,...t.unit==="tokens"?{tokensPerPeriod:Y}:{amountUsd:pe},cadence:N,anchorTz:z,startsAt:L?new Date(`${L}T00:00:00Z`).toISOString():null,endsAt:V?new Date(`${V}T23:59:59Z`).toISOString():null,excludeRisky:q});se(ae.warning),ie.success(a("adminCampaigns.recurring.saved"))}else{const ae={name:f.trim(),unit:y,...y==="tokens"?{tokensPerPeriod:Y,modelPublicIds:k}:{amountUsd:pe,modelPublicId:R},...P?{segmentPublicId:P}:{},cadence:N,anchorTz:z,startsAt:L?new Date(`${L}T00:00:00Z`).toISOString():null,endsAt:V?new Date(`${V}T23:59:59Z`).toISOString():null,excludeRisky:q},Je=await r.mutateAsync(ae);se(Je.warning),ie.success(a("adminCampaigns.recurring.created"))}n()}catch(ae){ie.error(da(ae))}}const me=y==="tokens"?Number.isInteger(Y)&&Y>0:pe>0,ye=d||(y==="tokens"?k.length>0:!!R),_e=!!f.trim()&&me&&ye&&!r.isPending&&!i.isPending;return o.jsx(Vn,{open:e,onOpenChange:ae=>ae?void 0:n(),children:o.jsxs(Nn,{side:"auto",className:"gap-4",children:[o.jsxs(Pa,{children:[o.jsx(Rn,{children:a(d?"adminCampaigns.recurring.editTitle":"adminCampaigns.recurring.create")}),o.jsx(ua,{children:a("adminCampaigns.recurring.sheetDescription")})]}),o.jsxs(sn,{title:a("adminCampaigns.recurring.basics"),children:[o.jsx(De,{label:a("adminCampaigns.recurring.name"),children:o.jsx(ge,{value:f,onChange:ae=>p(ae.target.value),placeholder:a("adminCampaigns.recurring.namePlaceholder")})}),o.jsx(De,{label:a("adminCampaigns.recurring.unit"),hint:a(d?"adminCampaigns.recurring.unitLocked":"adminCampaigns.recurring.unitHint"),children:o.jsx(el,{value:y,onValueChange:ae=>v(ae),options:[{value:"tokens",label:a("adminCampaigns.recurring.unit_tokens"),disabled:d},{value:"usd",label:a("adminCampaigns.recurring.unit_usd"),disabled:d}]})})]}),o.jsxs(sn,{title:a("adminCampaigns.recurring.targeting"),children:[y==="tokens"?o.jsx(De,{label:a("adminCampaigns.recurring.models"),hint:a("adminCampaigns.recurring.modelsHint"),children:d?o.jsx("p",{className:"break-words text-sm text-[color:var(--muted-foreground)] [overflow-wrap:anywhere]",children:t.modelIds.map(ae=>de.get(String(ae))??`#${ae}`).join(", ")||"—"}):o.jsx(ly,{value:k,onChange:T,options:Q,allLabel:a("adminCampaigns.recurring.pickModels"),placeholder:a("adminCampaigns.recurring.pickModels"),triggerLabel:ae=>ae.length===0?a("adminCampaigns.recurring.pickModels"):a("adminCampaigns.recurring.nModels",{count:ae.length})})}):d?o.jsx(De,{label:a("adminCampaigns.recurring.model"),hint:a("adminCampaigns.recurring.usdSingleModelHint"),children:o.jsx("p",{className:"break-words text-sm text-[color:var(--muted-foreground)] [overflow-wrap:anywhere]",children:t.modelIds.map(ae=>de.get(String(ae))??`#${ae}`).join(", ")||"—"})}):o.jsx(xN,{label:a("adminCampaigns.recurring.model"),value:R,onChange:_,hint:a("adminCampaigns.recurring.usdSingleModelHint")}),d?o.jsx(De,{label:a("adminCampaigns.recurring.audience"),children:o.jsx("p",{className:"break-words text-sm text-[color:var(--muted-foreground)]",children:t.segmentName??a("adminCampaigns.allUsers")})}):o.jsx(W0,{label:a("adminCampaigns.recurring.audience"),value:P,onChange:j,allowAll:!0,hint:a("adminCampaigns.recurring.audienceHint")})]}),o.jsxs(sn,{title:a("adminCampaigns.recurring.schedule"),children:[o.jsxs("div",{className:"grid gap-4 md:grid-cols-2",children:[o.jsx(De,{label:a("adminCampaigns.recurring.perPeriod"),hint:a(y==="tokens"?"adminCampaigns.recurring.tokensHint":"adminCampaigns.recurring.usdHint"),children:y==="tokens"?o.jsx(ge,{type:"number",min:"1",step:"1",inputMode:"numeric",value:$,onChange:ae=>x(ae.target.value),placeholder:"100000"}):o.jsx(ge,{type:"number",min:"0.01",max:"2000",step:"0.01",inputMode:"decimal",value:w,onChange:ae=>S(ae.target.value),placeholder:"5.00"})}),o.jsx(De,{label:a("adminCampaigns.recurring.cadence"),hint:m?a("adminCampaigns.recurring.unitLocked"):void 0,children:o.jsx(el,{value:N,onValueChange:ae=>I(ae),options:[{value:"daily",label:a("adminCampaigns.recurring.cadence_daily"),disabled:m},{value:"weekly",label:a("adminCampaigns.recurring.cadence_weekly"),disabled:m}]})})]}),o.jsx(De,{label:a("adminCampaigns.recurring.anchorTz"),hint:a(m?"adminCampaigns.recurring.unitLocked":"adminCampaigns.recurring.anchorTzHint"),children:o.jsxs(Ms,{value:z,onValueChange:E,disabled:m,children:[o.jsx(as,{children:o.jsx(Es,{})}),o.jsx(os,{children:_4s.map(ae=>o.jsx(zn,{value:ae,children:ae},ae))})]})}),o.jsxs("div",{className:"grid gap-4 md:grid-cols-2",children:[o.jsx(De,{label:a("adminCampaigns.recurring.startsAt"),hint:a("adminCampaigns.recurring.startsAtHint"),children:o.jsx(fr,{value:L,onChange:O,placeholder:a("adminCampaigns.recurring.immediately"),locale:s.language,clearLabel:a("adminCampaigns.actionClear"),labels:gr(a,a("adminCampaigns.actionClear"))})}),o.jsx(De,{label:a("adminCampaigns.recurring.endsAt"),hint:a("adminCampaigns.recurring.endsAtHint"),children:o.jsx(fr,{value:V,onChange:ne,placeholder:a("adminCampaigns.noExpiry"),locale:s.language,clearLabel:a("adminCampaigns.actionClear"),labels:gr(a,a("adminCampaigns.actionClear"))})})]}),o.jsxs("label",{className:"flex items-center justify-between gap-3 text-sm font-medium",children:[o.jsx("span",{children:a("adminCampaigns.recurring.excludeRisky")}),o.jsx(js,{checked:q,onCheckedChange:M})]})]}),d?o.jsx(sn,{title:a("adminCampaigns.status"),children:o.jsx(De,{label:a("adminCampaigns.status"),children:o.jsxs(Ms,{value:F,onValueChange:ae=>H(ae),children:[o.jsx(as,{children:o.jsx(Es,{})}),o.jsx(os,{children:["draft","active","paused","archived"].map(ae=>o.jsx(zn,{value:ae,children:a(`adminCampaigns.recurring.status_${ae}`)},ae))})]})})}):null,o.jsxs("div",{className:"grid gap-2 pt-2 sm:flex sm:items-center",children:[o.jsx(K,{className:"w-full sm:w-auto",onClick:we,disabled:!_e,children:r.isPending||i.isPending?a("common.saving"):a("common.save")}),o.jsx(K,{className:"w-full sm:w-auto",variant:"ghost",onClick:n,children:a("common.cancel")})]})]})})}const s8="segments",mJ=[{value:"segments",labelKey:"adminCampaigns.tabs.segments"},{value:"access",labelKey:"adminCampaigns.tabs.access"},{value:"discounts",labelKey:"adminCampaigns.tabs.discounts"},{value:"grants",labelKey:"adminCampaigns.tabs.grants"},{value:"recurring",labelKey:"adminCampaigns.tabs.recurring"}];function r8(e){return mJ.some(t=>t.value===e)}function D4s(){const{t:e}=W(),{params:t,patch:n}=Mt(),a=Pe(t,"tab"),s=r8(a)?a:s8,r=mJ.map(c=>({value:c.value,label:e(c.labelKey)}));function i(c){r8(c)&&n({tab:c===s8?void 0:c,status:void 0,kind:void 0,page:void 0,segment:void 0,batch:void 0,rstatus:void 0,runit:void 0})}return o.jsx(Vt,{title:e("adminCampaigns.title"),description:e("adminCampaigns.description"),children:o.jsxs(Cc,{value:s,onValueChange:i,children:[o.jsx("div",{className:"min-w-0 md:hidden",children:o.jsx(ft,{value:s,options:r,onValueChange:i,"aria-label":e("adminCampaigns.tabs.mobileLabel")})}),o.jsx(tl,{className:"hidden md:inline-flex",children:r.map(c=>o.jsx(ia,{value:c.value,children:c.label},c.value))}),o.jsx(Tn,{value:"segments",className:"mt-4",children:o.jsx(d4s,{})}),o.jsx(Tn,{value:"access",className:"mt-4",children:o.jsx(h4s,{})}),o.jsx(Tn,{value:"discounts",className:"mt-4",children:o.jsx(v4s,{})}),o.jsx(Tn,{value:"grants",className:"mt-4",children:o.jsx(k4s,{})}),o.jsx(Tn,{value:"recurring",className:"mt-4",children:o.jsx(j4s,{})})]})})}const M4s=["","openai","anthropic","gemini","antigravity"],E4s=["text","image","audio","video","file"],I4s=["text","image","audio","video","embeddings"],pJ=e=>o.jsx("span",{className:"capitalize",children:e}),O4s=E4s.map(e=>({value:e,label:pJ(e)})),L4s=I4s.map(e=>({value:e,label:pJ(e)}));
971function U4s({value:e,onChange:t,isEdit:n}){const{t:a}=W(),s=YIs(!0),r=f=>t({...e,...f}),i=e.authorSlug&&e.modelSlug?`${e.authorSlug}/${e.modelSlug}`:"",c=f=>{const p=new Set(e.inputModalities);p.has(f)?p.delete(f):p.add(f),r({inputModalities:p})},d=f=>{const p=new Set(e.outputModalities);p.has(f)?p.delete(f):p.add(f),r({outputModalities:p})},m=f=>{const p=new Set(e.badges);p.has(f)?p.delete(f):p.add(f),r({badges:p})};return o.jsxs(sn,{title:a("adminModels.sections.config",{defaultValue:"Configuration"}),hint:a("adminModels.sections.configHint",{defaultValue:"Identity, upstream routing, type and capabilities."}),children:[o.jsxs("div",{className:"grid gap-4 md:grid-cols-2",children:[o.jsxs(De,{label:a("adminModels.providerSlug"),hint:a("adminModels.providerSlugHint",{defaultValue:"Pick a known provider or type a custom slug."}),children:[o.jsx(ge,{list:"model-provider-suggestions",value:e.authorSlug,disabled:n,onChange:f=>r({authorSlug:f.target.value}),placeholder:"openai"}),o.jsx("datalist",{id:"model-provider-suggestions",children:kK.map(f=>o.jsx("option",{value:f.value},f.value))})]}),o.jsx(De,{label:a("adminModels.modelSlug"),hint:i?o.jsx("span",{className:"break-all font-[family-name:var(--font-mono)]",children:i}):void 0,children:o.jsx(ge,{value:e.modelSlug,disabled:n,onChange:f=>r({modelSlug:f.target.value}),placeholder:"gpt-5.5"})})]}),o.jsx(ca,{label:a("adminModels.platform",{defaultValue:"Platform (sub2api group.platform)"}),value:e.platform,onChange:f=>r({platform:f.target.value}),children:M4s.map(f=>o.jsx("option",{value:f,children:f||a("adminModels.platformUnset",{defaultValue:"— select platform —"})},f||"unset"))}),o.jsx(De,{label:a("adminModels.sub2apiModelId"),children:o.jsxs("div",{className:"space-y-2",children:[o.jsx(ge,{className:"w-full font-[family-name:var(--font-mono)] text-xs",value:e.sub2apiModelId,onChange:f=>r({sub2apiModelId:f.target.value}),placeholder:"gpt-image-2"}),o.jsxs(ft,{fullWidth:!0,value:"",onChange:f=>f.target.value&&r({sub2apiModelId:f.target.value}),disabled:!s.data?.available,children:[o.jsx("option",{value:"",children:s.data?.available?a("adminModels.chooseSub2api"):a("adminModels.upstreamUnavailable")}),s.data?.items.map(f=>o.jsx("option",{value:f.id,children:f.id},f.id))]})]})}),o.jsx(De,{label:a("adminModels.source",{defaultValue:"Source (customer-visible)"}),hint:a("adminModels.sourceHint",{defaultValue:"Label customers see on the model/logs. Blank = vendor."}),children:o.jsx(ge,{value:e.source,onChange:f=>r({source:f.target.value}),placeholder:e.authorSlug||"official",className:"font-[family-name:var(--font-mono)] text-xs"})}),o.jsxs("div",{className:"grid gap-4 md:grid-cols-2",children:[o.jsx(De,{label:a("adminModels.contextWindow",{defaultValue:"Context window (tokens)"}),hint:a("adminModels.contextWindowHint",{defaultValue:"Max input the model accepts. Leave blank if unknown."}),children:o.jsx(ge,{type:"number",min:0,value:e.contextWindow,onChange:f=>r({contextWindow:f.target.value}),placeholder:"200000",className:"font-[family-name:var(--font-mono)] tabular-nums"})}),o.jsx(De,{label:a("adminModels.maxOutputTokens",{defaultValue:"Max output tokens"}),hint:a("adminModels.maxOutputTokensHint",{defaultValue:"Max tokens the model can generate per response."}),children:o.jsx(ge,{type:"number",min:0,value:e.maxOutputTokens,onChange:f=>r({maxOutputTokens:f.target.value}),placeholder:"64000",className:"font-[family-name:var(--font-mono)] tabular-nums"})})]}),o.jsx(De,{label:a("adminModels.aliases",{defaultValue:"Aliases"}),hint:a("adminModels.aliasesHint",{defaultValue:"Comma-separated lookup aliases for import and review."}),children:o.jsx(ge,{value:e.aliases,onChange:f=>r({aliases:f.target.value}),placeholder:"gpt-5.5, openai/gpt-5.5-preview",className:"font-[family-name:var(--font-mono)] text-xs"})}),o.jsx(bx,{label:a("adminModels.inputModalities",{defaultValue:"Input modalities"}),hint:a("adminModels.inputModalitiesHint",{defaultValue:"Declares what this model can receive, including vision, audio, video, and file inputs."}),options:O4s,selected:e.inputModalities,onToggle:f=>c(f)}),o.jsx(bx,{label:a("adminModels.outputModalities",{defaultValue:"Output modalities"}),hint:a("adminModels.outputModalitiesHint",{defaultValue:"Drives the publish gate: text requires text in/out pricing, image/video/embeddings require their factors."}),options:L4s,selected:e.outputModalities,onToggle:f=>d(f)}),o.jsx(bx,{label:a("adminModels.badges.label",{defaultValue:"Display badges"}),hint:a("adminModels.badges.hint",{defaultValue:"Hot / Benefit tags shown on the user-facing models & pricing page."}),options:wF.map(f=>({value:f,label:a(`adminModels.badges.${f}`,{defaultValue:f})})),selected:e.badges,onToggle:m})]})}
971function B4s({value:e,onChange:t}){const{t:n}=W(),a=c=>t({...e,...c}),s=c=>{const d=new Set(e.protocols);d.has(c)?d.delete(c):d.add(c),a({protocols:d})},r=e.platform?toe(e.platform):[],i=()=>a({protocols:new Set(r)});return o.jsxs(sn,{title:n("adminModels.sections.protocols",{defaultValue:"Protocols"}),hint:n("adminModels.sections.protocolsHint",{defaultValue:"Which API protocols this model serves."}),children:[e.platform?o.jsxs("div",{className:"grid min-w-0 gap-2 sm:flex sm:items-center",children:[o.jsx(K,{className:"w-full sm:w-auto",type:"button",variant:"outline",size:"sm",onClick:i,children:n("adminModels.prefillProtocols",{defaultValue:`Prefill for ${e.platform}`,platform:e.platform})}),o.jsx("span",{className:"min-w-0 break-words text-13 text-[color:var(--muted-foreground)]",children:n("adminModels.prefillProtocolsHint",{defaultValue:`Suggested max protocols for ${e.platform}: ${r.join(", ")||"none"}. Confirm/adjust below.`})})]}):null,o.jsx(bx,{label:n("adminModels.protocols"),options:Sj,selected:e.protocols,onToggle:s}),e.outputModalities.has("image")&&o.jsx(De,{label:n("adminModels.billingStyleImage",{defaultValue:"Image billing style"}),hint:n("adminModels.billingStyleHint",{defaultValue:"How the upstream charges for this output. Required before publishing — the gate demands the matching price factor."}),children:o.jsxs(ft,{value:e.billingStyleImage,onChange:c=>a({billingStyleImage:c.target.value}),children:[o.jsx("option",{value:"",children:n("adminModels.billingStyleUnset",{defaultValue:"— select billing style —"})}),o.jsx("option",{value:"token",children:n("adminModels.billingStyleToken",{defaultValue:"Per token (image_output_token)"})}),o.jsx("option",{value:"per_call",children:n("adminModels.billingStylePerImage",{defaultValue:"Per image (per_call_image)"})})]})}),e.outputModalities.has("video")&&o.jsx(De,{label:n("adminModels.billingStyleVideo",{defaultValue:"Video billing style"}),hint:n("adminModels.billingStyleHint",{defaultValue:"How the upstream charges for this output. Required before publishing — the gate demands the matching price factor."}),children:o.jsxs(ft,{value:e.billingStyleVideo,onChange:c=>a({billingStyleVideo:c.target.value}),children:[o.jsx("option",{value:"",children:n("adminModels.billingStyleUnset",{defaultValue:"— select billing style —"})}),o.jsx("option",{value:"per_second",children:n("adminModels.billingStylePerSecond",{defaultValue:"Per second (video_per_second)"})}),o.jsx("option",{value:"per_call",children:n("adminModels.billingStylePerCall",{defaultValue:"Per call (video_per_call)"})})]})})]})}const uT=[{value:"text_input",label:"Text input (LLM)",units:["per_1m_tokens"]},{value:"text_output",label:"Text output (LLM)",units:["per_1m_tokens"]},{value:"cache_read",label:"Cache read",units:["per_1m_tokens"]},{value:"cache_write",label:"Cache write",units:["per_1m_tokens"]},{value:"cache_write_5m",label:"Cache write (5m TTL)",units:["per_1m_tokens"]},{value:"cache_write_1h",label:"Cache write (1h TTL)",units:["per_1m_tokens"]},{value:"image_input_token",label:"Image input token",units:["per_1m_tokens"]},{value:"image_output_token",label:"Image output token",units:["per_1m_tokens"]},{value:"per_call_image",label:"Image (per call)",units:["per_image","per_call"]},{value:"video_per_call",label:"Video (per call)",units:["per_call"]},{value:"video_per_second",label:"Video (per second)",units:["per_second"]},{value:"web_search_call",label:"Web search call",units:["per_call"]}];function Hg(e){return e instanceof rn?`${e.code}: ${e.message}`:String(e)}function F4s(e){const t=e.trim();if(!t)return null;const n=JSON.parse(t);if(!n||typeof n!="object"||Array.isArray(n))throw new Error("conditions must be a JSON object");return n}const z4s=["","priority","flex","low","medium","high","long"],Ql="grid gap-1 text-xs font-medium";function q4s({modelPublicId:e}){return e?o.jsx(V4s,{modelPublicId:e}):null}function H4s({draft:e,onChange:t}){const{t:n}=W(),[a,s]=h.useState(e.length===0),r=c=>{t([...e,c]),s(!1)},i=c=>t(e.filter((d,m)=>m!==c));return o.jsxs("section",{className:"grid gap-3",children:[o.jsxs("header",{className:"grid gap-2 sm:flex sm:items-center sm:justify-between",children:[o.jsx("h3",{className:"text-sm font-semibold",children:n("adminModels.pricing.factors.title",{defaultValue:"Pricing factors"})}),o.jsx(K,{className:"justify-self-start sm:justify-self-auto",variant:"ghost",size:"sm",type:"button",onClick:()=>s(c=>!c),children:a?n("common.cancel",{defaultValue:"Cancel"}):`+ ${n("adminModels.pricing.factors.addFactor",{defaultValue:"Add factor"})}`})]}),o.jsx("p",{className:"text-xs text-[color:var(--muted-foreground)]",children:n("adminModels.pricing.factors.draftEditorHint",{defaultValue:"Set prices now, or leave empty and add them after the model is created."})}),a?o.jsx($N,{initial:null,onSubmit:r,busy:!1}):null,e.length===0?o.jsx("p",{className:"text-xs text-[color:var(--muted-foreground)]",children:n("adminModels.pricing.factors.draftEmpty",{defaultValue:"No prices added yet."})}):o.jsx("ul",{className:"grid gap-2",children:e.map((c,d)=>o.jsxs("li",{className:"grid min-w-0 gap-2 rounded border border-[color:var(--border)] p-2.5 sm:flex sm:items-center sm:justify-between",children:[o.jsxs("span",{className:"min-w-0 break-all font-[family-name:var
971(--font-mono)] text-xs sm:text-sm",children:[n(`adminModels.pricing.factors.factorOption.${c.atomicFactor}`,{defaultValue:c.atomicFactor}),c.tierKey?o.jsxs("span",{className:"text-[color:var(--muted-foreground)]",children:[" · ",c.tierKey]}):null]}),o.jsxs("span",{className:"flex min-w-0 flex-wrap items-center justify-between gap-2 sm:shrink-0 sm:justify-end sm:gap-3",children:[o.jsxs("span",{className:"min-w-0 break-all font-[family-name:var(--font-mono)] text-xs tabular-nums sm:text-sm",children:[cu(c.ourPriceUsd),c.officialPriceUsd&&String(c.officialPriceUsd)!==String(c.ourPriceUsd)?o.jsxs("span",{className:"ml-1 text-xs text-[color:var(--muted-foreground)]",children:[n("adminModels.pricing.factors.officialAbbr",{defaultValue:"official"})," ",cu(c.officialPriceUsd)]}):null]}),o.jsx(K,{variant:"ghost",size:"sm",type:"button",onClick:()=>i(d),children:n("adminModels.pricing.factors.remove",{defaultValue:"Remove"})})]})]},`${c.atomicFactor}-${c.tierKey??""}-${d}`))})]})}function V4s({modelPublicId:e}){const{t}=W(),n=KIs(e,!0),a=GZ(),s=WIs(),[r,i]=h.useState(!1),[c,d]=h.useState(!1),m=async v=>{try{await a.mutateAsync({modelPublicId:e,...v}),ie.success(t("adminModels.pricing.factors.changeSaved",{defaultValue:"Factor price updated."})),i(!1)}catch($){ie.error(Hg($))}},f=async v=>{if(await zt({message:t("adminModels.pricing.factors.confirmExpire",{defaultValue:"Expire this factor row? It will stop applying immediately and move to history."}),variant:"destructive"}))try{await s.mutateAsync({modelPublicId:e,factorPublicId:v.publicId}),ie.success(t("adminModels.pricing.factors.expired",{defaultValue:"Factor expired."}))}catch(x){ie.error(Hg(x))}},p=n.data?.active??[],y=n.data?.history??[];return o.jsxs("section",{className:"grid gap-3",children:[o.jsxs("header",{className:"grid gap-1",children:[o.jsxs("div",{className:"grid gap-2 sm:flex sm:items-center sm:justify-between",children:[o.jsx("h3",{className:"text-sm font-semibold",children:t("adminModels.pricing.factors.title",{defaultValue:"Pricing factors"})}),o.jsxs("span",{className:"relative z-10 flex min-w-0 flex-wrap items-center gap-1",children:[o.jsx(K,{variant:"ghost",size:"sm",type:"button",onClick:()=>d(v=>!v),children:c?t("common.cancel",{defaultValue:"Cancel"}):t("adminModels.pricing.discount.toggle",{defaultValue:"Apply discount"})}),o.jsx(K,{variant:"ghost",size:"sm",type:"button",onClick:()=>i(v=>!v),children:r?t("common.cancel",{defaultValue:"Cancel"}):`+ ${t("adminModels.pricing.factors.addFactor",{defaultValue:"Add factor"})}`})]})]}),o.jsx("p",{className:"text-xs text-[color:var(--muted-foreground)]",children:t("adminModels.pricing.factors.hint",{defaultValue:"Each row is an atomic unit (text input/output, cache, image, …). Active rows determine billing from their effective date; history rows record past prices."})})]}),o.jsxs(Hm,{className:"px-3 py-2 text-xs",children:["⚡ ",t("adminModels.pricing.factors.liveBanner",{defaultValue:"Changes here apply immediately and are recorded in price history — they are not controlled by the bottom Save button."})]}),c?o.jsx(W4s,{modelPublicId:e}):null,r?o.jsx($N,{initial:null,onSubmit:m,busy:a.isPending}):null,n.error?o.jsx(Qt,{title:t("adminModels.pricing.factors.loadError",{defaultValue:"Could not load pricing factors"}),description:Hg(n.error)}):n.isLoading?o.jsx("p",{className:"text-xs text-[color:var(--muted-foreground)]",children:t("common.loading",{defaultValue:"Loading…"})}):p.length===0?o.jsx(Ot,{title:t("adminModels.pricing.factors.emptyTitle",{defaultValue:"No active factor prices"}),description:t("adminModels.pricing.factors.empty",{defaultValue:'Click "Add factor" to set one.'}),action:o.jsx(K,{variant:"secondary",size:"sm",type:"button",onClick:()=>i(!0),children:`+ ${t("adminModels.pricing.factors.addFactor",{defaultValue:"Add factor"})}`})}):o.jsx("ul",{className:"grid gap-2",children:p.map(v=>o.jsx(K4s,{factor:v,onSubmit:m,onExpire:f,busy:a.isPending||s.isPending},v.publicId))}),y.length>0?o.jsx(IV,{type:"single",collapsible:!0,className:"text-xs",children:o.jsxs(J_,{value:"history",className:"border-b-0",children:[o.jsx(ej,{className:"py-1 text-[color:var(--muted-foreground)] hover:no-underline",children:t("adminModels.pricing.factors.historyLabel",{defaultValue:"History ({{count}})",count:y.length})}),o.jsx(tj,{className:"grid gap-1.5 pt-2",children:y.map(v=>o.jsxs("div",{className:"grid min-w-0 gap-1.5 rounded border border-[color:var(--border)] bg-[color:var(--muted)]/30 p-2 font-[family-name:var
971(--font-mono)] sm:grid-cols-[1fr_auto_auto_auto] sm:items-center sm:gap-3",children:[o.jsxs("span",{className:"min-w-0 break-all",children:[v.atomicFactor,v.tierKey?` · ${v.tierKey}`:""]}),o.jsx("span",{className:"tabular-nums",children:cu(v.ourPriceUsd)}),o.jsx("span",{className:"text-[color:var(--muted-foreground)]",children:v.unit}),o.jsxs("span",{className:"text-[color:var(--muted-foreground)]",children:[i8(v.validFrom)," → ",i8(v.validTo)]})]},v.publicId))})]})}):null]})}function K4s({factor:e,onSubmit:t,onExpire:n,busy:a}){const{t:s}=W(),[r,i]=h.useState(!1);return r?o.jsxs("li",{className:"rounded border border-[color:var(--ring)] bg-[color:var(--background)] p-2",children:[o.jsx($N,{initial:e,onSubmit:c=>{t(c),i(!1)},busy:a,lockIdentity:!0}),o.jsx(K,{variant:"ghost",size:"sm",type:"button",onClick:()=>i(!1),className:"mt-1",children:s("common.cancel",{defaultValue:"Cancel"})})]}):o.jsxs("li",{className:"grid gap-1.5 rounded border border-[color:var(--border)] p-2.5",children:[o.jsxs("div",{className:"grid min-w-0 gap-1 sm:flex sm:items-baseline sm:justify-between sm:gap-3",children:[o.jsxs("span",{className:"min-w-0 break-all font-[family-name:var(--font-mono)] text-xs sm:text-sm",children:[e.atomicFactor,e.tierKey?o.jsxs("span",{className:"text-[color:var(--muted-foreground)]",children:[" · ",e.tierKey]}):null,Object.keys(e.conditions??{}).length>0?o.jsx("span",{className:"ml-0 block break-all text-xs text-[color:var(--muted-foreground)] sm:ml-2 sm:inline",children:JSON.stringify(e.conditions)}):null]}),o.jsxs("span",{className:"font-[family-name:var(--font-mono)] text-xs tabular-nums sm:shrink-0 sm:text-sm",children:[cu(e.ourPriceUsd),e.officialPriceUsd&&e.officialPriceUsd!==e.ourPriceUsd?o.jsxs("span",{className:"ml-1 text-xs text-[color:var(--muted-foreground)]",children:[s("adminModels.pricing.factors.officialAbbr",{defaultValue:"official"})," ",cu(e.officialPriceUsd)]}):null]})]}),o.jsxs("div",{className:"grid min-w-0 gap-2 sm:flex sm:items-center sm:justify-between",children:[o.jsxs("span",{className:"min-w-0 break-all font-[family-name:var(--font-mono)] text-xs text-[color:var(--muted-foreground)]",children:[e.unit," · v",e.pricingVersion]}),o.jsxs("span",{className:"flex min-w-0 flex-wrap items-center gap-1 sm:shrink-0 sm:justify-end",children:[o.jsx(K,{variant:"ghost",size:"sm",type:"button",onClick:()=>i(!0),disabled:a,children:s("adminModels.pricing.factors.changePrice",{defaultValue:"Change price"})}),o.jsx(K,{variant:"ghost",size:"sm",type:"button",onClick:()=>n(e),disabled:a,children:s("adminModels.pricing.factors.expire",{defaultValue:"Expire"})})]})]})]})}function $N({initial:e,onSubmit:t,busy:n,lockIdentity:a}){const{t:s}=W(),[r,i]=h.useState(e?.atomicFactor??"text_input"),[c,d]=h.useState(e?.tierKey??""),[m,f]=h.useState(e?.unit??"per_1m_tokens"),[p,y]=h.useState(e?.ourPriceUsd??""),[v,$]=h.useState(e?.officialPriceUsd??""),[x,w]=h.useState(e?.source??""),[S,k]=h.useState(e?.conditions&&Object.keys(e.conditions).length>0?JSON.stringify(e.conditions):""),[T,R]=h.useState(null),_=uT.find(N=>N.value===r)??uT[0],P=_.units;P.includes(m)||f(P[0]);const j=()=>
971{if(!p.trim())return;let N=null;try{N=F4s(S),R(null)}catch(I){R(I instanceof Error?I.message:String(I));return}t({atomicFactor:r,tierKey:c||null,unit:m,ourPriceUsd:p.trim(),officialPriceUsd:v.trim()||null,source:x.trim()||null,conditions:N})};return o.jsxs("div",{className:"grid grid-cols-1 gap-2 sm:grid-cols-2",children:[o.jsx(ca,{label:s("adminModels.pricing.factors.factor",{defaultValue:"Factor"}),fieldClassName:`${Ql} sm:col-span-2`,value:r,onChange:N=>i(N.target.value),disabled:a,children:uT.map(N=>o.jsx("option",{value:N.value,children:s(`adminModels.pricing.factors.factorOption.${N.value}`,{defaultValue:N.label})},N.value))}),o.jsx(ca,{label:s("adminModels.pricing.factors.tier",{defaultValue:"Tier"}),fieldClassName:Ql,value:c,onChange:N=>d(N.target.value),disabled:a,children:z4s.map(N=>o.jsx("option",{value:N,children:N||s("adminModels.pricing.factors.tierNone",{defaultValue:"(no tier)"})},N||"null"))}),o.jsx(ca,{label:s("adminModels.pricing.factors.unit",{defaultValue:"Unit"}),fieldClassName:Ql,value:m,onChange:N=>f(N.target.value),disabled:a,children:_.units.map(N=>o.jsx("option",{value:N,children:s(`adminModels.pricing.factors.unitOption.${N}`,{defaultValue:N})},N))}),o.jsxs("label",{className:Ql,children:[s("adminModels.pricing.factors.ourPrice",{defaultValue:"Our price (USD)"}),o.jsx(ge,{value:p,onChange:N=>y(N.target.value),placeholder:"3.000000",className:"font-[family-name:var(--font-mono)] tabular-nums"})]}),o.jsxs("label",{className:Ql,children:[s("adminModels.pricing.factors.officialPrice",{defaultValue:"Official (USD)"}),o.jsx(ge,{value:v,onChange:N=>$(N.target.value),placeholder:"3.000000",className:"font-[family-name:var(--font-mono)] tabular-nums"})]}),o.jsxs("label",{className:`${Ql} sm:col-span-2`,children:[s("adminModels.pricing.factors.source",{defaultValue:"Source (optional URL or note, ≤128 chars)"}),o.jsx(ge,{value:x,onChange:N=>w(N.target.value),placeholder:"openai.com/pricing"})]}),o.jsxs("label",{className:`${Ql} sm:col-span-2`,children:[s("adminModels.pricing.factors.conditions",{defaultValue:"Conditions JSON (optional)"}),o.jsx(ge,{value:S,onChange:N=>k(N.target.value),placeholder:'{"prompt_tokens":{"unit":"kTokens","gte":0,"lt":128}}',className:"font-[family-name:var(--font-mono)] text-xs"}),T?o.jsx("span",{className:"text-11 text-[color:var(--destructive)]",children:T}):null]}),o.jsx(K,{type:"button",onClick:j,disabled:n||!p.trim(),className:"w-full justify-self-end sm:col-span-2 sm:w-auto",children:s("common.save",{defaultValue:"Save"})})]})}function G4s(e){return e.map(t=>({factorPublicId:t.factorPublicId,pricingVersion:t.pricingVersion}))}function W4s({modelPublicId:e}){const{t}=W(),n=GIs(),[a,s]=h.useState(""),[r,i]=h.useState(!1),[c,d]=h.useState(null),m=()=>d(null),f=async()=>{if(a.trim())try{const v=await n.mutateAsync({modelPublicId:e,rate:a.trim(),dryRun:!0,allowMarkup:r});d(v)}catch(v){d(null),ie.error(Hg(v))}},p=async()=>{if(!(!c||c.repriced.length===0||!await zt({title:t("adminModels.pricing.discount.confirmTitle",{defaultValue:"Apply discount to all factors?"}),message:t("adminModels.pricing.discount.confirmBody",{defaultValue:"Reprice {{count}} factor(s) to {{rate}}× the official price. This is versioned — historical billing is unaffected.",count:c.repriced.length,rate:String(c.rate)})})))try{await n.mutateAsync({modelPublicId:e,rate:c.rate,allowMarkup:r,expectedVersions:G4s(c.repriced)}),ie.success(t("adminModels.pricing.discount.applied",{defaultValue:"Repriced {{count}} factor(s) at {{rate}}× official.",count:c.repriced.length,rate:String(c.rate)})),d(null),s("")}catch($){if($ instanceof rn&&$.code==="PRICING_STALE"){d(null),ie.error(t("adminModels.pricing.discount.stale",{defaultValue:"Prices changed since the preview — please preview again."}));return}ie.error(Hg($))}},y=n.isPending;return o.jsxs("section",{className:"grid gap-2 rounded border border-[color:var(--border)] bg-[color:var(--muted)]/20 p-3",children:[o.jsx("p",{className:"text-xs text-[color:var(--muted-foreground)]",children:t("adminModels.pricing.discount.hint",{defaultValue:"Set every factor to a fraction of its official price (0.5 = 50% off). Free factors (our price 0) and factors with no official price are skipped."})}),o.jsxs("div",{className:"grid gap-2 sm:flex sm:flex-wrap sm:items-end",children:[o.jsxs("label",{className:`${Ql} min-w-0 sm:w-28`,children:[t("adminModels.pricing.discount.rate",{defaultValue:"Discount rate"}),o.jsx(ge,{value:a,onChange:v=>{s(v.target.value),m()},placeholder:"0.5",inputMode:"decimal",className:"font-[family-name:var
971(--font-mono)] tabular-nums"})]}),o.jsx(K,{className:"w-full sm:w-auto",type:"button",variant:"secondary",size:"sm",onClick:f,disabled:y||!a.trim(),children:t("adminModels.pricing.discount.preview",{defaultValue:"Preview"})}),o.jsx(K,{className:"w-full sm:w-auto",type:"button",size:"sm",onClick:p,disabled:y||!c||c.repriced.length===0,children:t("adminModels.pricing.discount.apply",{defaultValue:"Apply"})})]}),o.jsxs("label",{className:"flex items-center gap-2 text-xs text-[color:var(--muted-foreground)]",children:[o.jsx(Zn,{checked:r,onChange:v=>{i(v.target.checked),m()}}),t("adminModels.pricing.discount.allowMarkup",{defaultValue:"Allow markup (rate above 1 prices above official)"})]}),c?o.jsxs("div",{className:"grid gap-1.5 pt-1",children:[c.repriced.length===0&&c.skipped.length===0?o.jsx("p",{className:"text-xs text-[color:var(--muted-foreground)]",children:t("adminModels.pricing.discount.noFactors",{defaultValue:"No active factors to reprice."})}):null,c.repriced.map(v=>o.jsxs("div",{className:"grid min-w-0 gap-1 rounded border border-[color:var(--border)] bg-[color:var(--background)] p-2 font-[family-name:var(--font-mono)] text-xs sm:flex sm:items-baseline sm:justify-between sm:gap-3",children:[o.jsxs("span",{className:"min-w-0 break-all",children:[t(`adminModels.pricing.factors.factorOption.${v.atomicFactor}`,{defaultValue:v.atomicFactor}),v.tierKey?o.jsxs("span",{className:"text-[color:var(--muted-foreground)]",children:[" · ",v.tierKey]}):null]}),o.jsxs("span",{className:"min-w-0 break-all tabular-nums sm:shrink-0",children:[o.jsx("span",{className:"text-[color:var(--muted-foreground)]",children:cu(v.officialPriceUsd)})," → ",o.jsx("span",{className:"font-semibold",children:cu(v.newOurPriceUsd)})]})]},v.factorPublicId)),c.skipped.map(v=>o.jsxs("div",{className:"grid min-w-0 gap-1 rounded border border-dashed border-[color:var(--border)] p-2 font-[family-name:var(--font-mono)] text-xs text-[color:var(--muted-foreground)] sm:flex sm:items-baseline sm:justify-between sm:gap-3",children:[o.jsxs("span",{className:"min-w-0 break-all",children:[t(`adminModels.pricing.factors.factorOption.${v.atomicFactor}`,{defaultValue:v.atomicFactor}),v.tierKey?o.jsxs("span",{children:[" · ",v.tierKey]}):null]}),o.jsx("span",{className:"min-w-0 break-words sm:shrink-0",children:t(`adminModels.pricing.discount.skipReason.${v.reason}`,{defaultValue:v.reason})})]},v.factorPublicId))]}):null]})}function i8(e){return e?e.slice(0,19).replace("T"," "):"—"}function cu(e){return e===""?"—":Fn(e)}const Y4s=new Set(r_),Q4s=new Set(wF);function fJ(e){const t=e?.badges;return Array.isArray(t)?t.filter(n=>typeof n=="string"&&Q4s.has(n)):[]}const X4s={authorSlug:"",modelSlug:"",platform:"",sub2apiModelId:"",aliases:"",family:"",source:"",isFamilyDefault:!1,protocols:new Set,inputModalities:new Set(["text"]),outputModalities:new Set(["text"]),billingStyleImage:"",billingStyleVideo:"",contextWindow:"",maxOutputTokens:"",badges:new Set},l8={locale:"en",summary:"",description:"",familyName:"",variantNote:"",upstreamReleaseAt:"",displayOrder:"0"};function Z4s(e){return{authorSlug:e.author_slug,modelSlug:e.model_slug,platform:e.platform??"",sub2apiModelId:e.sub2api_model_id??"",aliases:(e.aliases??[]).join(", "),family:e.family??"",source:e.source??"",isFamilyDefault:e.is_family_default,protocols:new Set(Object.keys(e.supported_protocols??{}).filter(t=>e.supported_protocols[t]?.enabled)),inputModalities:new Set((e.modalities?.input??["text"]).filter(J4s)),outputModalities:new Set((e.modalities?.output??[]).filter(e5s)),billingStyleImage:e.billing_style?.image??"",billingStyleVideo:e.billing_style?.video??"",contextWindow:e.context_window!=null?String(e.context_window):"",maxOutputTokens:e.max_output_tokens!=null?String(e.max_output_tokens):"",badges:new Set(fJ(e.metadata))}}function gJ(e){const t={};return e.outputModalities.has("image")&&e.billingStyleImage&&(t.image=e.billingStyleImage),e.outputModalities.has("video")&&e.billingStyleVideo&&(t.video=e.billingStyleVideo),t}function c8(e,t){const n=e.i18n?.[t]??{};return{locale:t,summary:n.summary??"",description:n.description??"",familyName:n.family_name??"",variantNote:e.variant_note?.[t]??"",upstreamReleaseAt:t5s(e.upstream_release_at),displayOrder:String(e.dis
971play_order??0)}}function J4s(e){return e==="text"||e==="image"||e==="audio"||e==="video"||e==="file"}function e5s(e){return e==="text"||e==="image"||e==="audio"||e==="video"||e==="embeddings"}function t5s(e){if(!e)return"";const t=new Date(e);return Number.isNaN(t.getTime())?"":t.toISOString().slice(0,10)}function hJ(e){const t=e.trim();if(!t)return null;const n=new Date(`${t}T00:00:00.000Z`);return Number.isNaN(n.getTime())?null:n.toISOString()}function yJ(e){return e.split(/[\n,]/).map(t=>t.trim()).filter(Boolean)}function wN(e){const t=e.trim();return t===""||!/^\d+$/.test(t)?null:Number(t)}function G$(e){const t=e.trim();return t===""||!/^\d+$/.test(t)?null:Number(t)}function FP(e,t){const n={};for(const a of t){const s=e?.[a]?.stream;n[a]={enabled:!0,stream:s??a!=="openai_images"}}return n}function vJ(e,t,n){const a={...e??{}},s={};return n.summary.trim()&&(s.summary=n.summary.trim()),n.description.trim()&&(s.description=n.description.trim()),n.familyName.trim()&&(s.family_name=n.familyName.trim()),Object.keys(s).length>0?a[t]=s:delete a[t],a}function n5s(e,t,n){const a=a5s(e);return n.trim()?a[t]=n.trim():delete a[t],a}function a5s(e){return Object.fromEntries(Object.entries(e??{}).filter(([t])=>Y4s.has(t)))}function Dg(e,t){if(e===t)return!0;if(typeof e!="object"||typeof t!="object"||e===null||t===null)return!1;const n=Object.keys(e),a=Object.keys(t);return n.length!==a.length?!1:n.every(s=>Dg(e[s],t[s]))}function Bb(e,t){if(e.length!==t.length)return!1;const n=new Set(t);return e.every(a=>n.has(a))}function o5s(e,t){const n=`${e.authorSlug}/${e.modelSlug}`;return{provider:e.authorSlug,authorSlug:e.authorSlug,modelSlug:e.modelSlug,fullSlug:n,platform:e.platform||null,sub2apiModelId:e.sub2apiModelId||null,aliases:yJ(e.aliases),family:e.family||null,source:e.source.trim()||null,isFamilyDefault:e.isFamilyDefault,upstreamReleaseAt:hJ(t.upstreamReleaseAt),supportedProtocols:FP(void 0,e.protocols),modalities:{input:[...e.inputModalities],output:[...e.outputModalities]},billingStyle:gJ(e),contextWindow:G$(e.contextWindow),maxOutputTokens:G$(e.maxOutputTokens),variantNote:t.variantNote.trim()?{[t.locale]:t.variantNote.trim()}:null,i18n:vJ(void 0,t.locale,{summary:t.summary,description:t.description,familyName:t.familyName}),badges:[...e.badges]}}function s5s(e,t,n){const a={};t.platform!==(e.platform??"")&&(a.platform=t.platform||null),(t.sub2apiModelId||null)!==(e.sub2api_model_id??null)&&(a.sub2apiModelId=t.sub2apiModelId||null);const s=yJ(t.aliases);Bb(s,e.aliases??[])||(a.aliases=s),(t.family||null)!==(e.family??null)&&(a.family=t.family||null),(t.source.trim()||null)!==(e.source??null)&&(a.source=t.source.trim()||null),t.isFamilyDefault!==e.is_family_default&&(a.isFamilyDefault=t.isFamilyDefault);const r=FP(e.supported_protocols,t.protocols),i=new Set(Object.keys(e.supported_protocols??{}).filter(k=>e.supported_protocols[k]?.enabled)),c=FP(e.supported_protocols,i);Dg(r,c)||(a.supportedProtocols=r);const d=[...t.inputModalities],m=[...t.outputModalities];(!Bb(d,e.modalities?.input??[])||!Bb(m,e.modalities?.output??[]))&&(a.modalities={...e.modalities,input:d,output:m});const f=gJ(t);Dg(f,e.billing_style??{})||(a.billingStyle=f);const p=G$(t.contextWindow);p!==(e.context_window??null)&&(a.contextWindow=p);const y=G$(t.maxOutputTokens);y!==(e.max_output_tokens??null)&&(a.maxOutputTokens=y);const v=vJ(e.i18n,n.locale,{summary:n.summary,description:n.description,familyName:n.familyName});Dg(v,e.i18n??{})||(a.i18n=v);const $=n5s(e.variant_note,n.locale,n.variantNote);Dg($,e.variant_note??{})||(a.variantNote=$);const x=hJ(n.upstreamReleaseAt);x!==(e.upstream_release_at??null)&&(a.upstreamReleaseAt=x);const w=wN(n.displayOrder);w!==null&&w!==e.display_order&&(a.displayOrder=w);const S=[...t.badges];
971return Bb(S,fJ(e.metadata))||(a.badges=S),a}function r5s({value:e,onChange:t}){const{t:n,i18n:a}=W(),s=i=>t({...e,...i}),r=e.displayOrder.trim()!==""&&wN(e.displayOrder)===null;return o.jsxs(sn,{title:n("adminModels.sections.content",{defaultValue:"Content & Display"}),hint:n("adminModels.sections.contentHint",{defaultValue:"i18n summary / description and sort order."}),children:[o.jsxs("div",{className:"grid gap-4 md:grid-cols-2",children:[o.jsx(De,{label:n("adminModels.displayOrder",{defaultValue:"Display order"}),error:r?n("adminModels.displayOrderInvalid",{defaultValue:"Must be a non-negative integer."}):void 0,children:o.jsx(ge,{type:"number",min:0,value:e.displayOrder,onChange:i=>s({displayOrder:i.target.value}),"aria-invalid":r,className:"font-[family-name:var(--font-mono)] tabular-nums"})}),o.jsx(De,{label:n("adminModels.upstreamReleaseAt",{defaultValue:"Upstream release date"}),children:o.jsx(fr,{value:e.upstreamReleaseAt,onChange:i=>s({upstreamReleaseAt:i}),locale:a.language,clearLabel:n("common.clearAll"),labels:gr(n,n("common.clearAll"))})})]}),o.jsx(ca,{label:n("adminModels.contentLocale",{defaultValue:"Editing locale"}),value:e.locale,onChange:i=>s({locale:i.target.value}),children:r_.map(i=>o.jsx("option",{value:i,children:i},i))}),o.jsx(De,{label:n("adminModels.summary",{defaultValue:"Summary (this locale)"}),children:o.jsx(ge,{value:e.summary,onChange:i=>s({summary:i.target.value}),placeholder:"Flagship reasoning model..."})}),o.jsx(De,{label:n("adminModels.descriptionField",{defaultValue:"Description (Markdown, this locale)"}),children:o.jsx(_o,{value:e.description,onChange:i=>s({description:i.target.value}),rows:4})})]})}const i5s=["draft","published","deprecated","archived"],l5s=["public","hidden"],c5s=["available","unavailable"],d5s=["everyone","paid_only"],Fb=["config","protocols","pricing"];function gg(e){return e instanceof rn?`${e.code}: ${e.message}`:String(e)}function d8(){return o.jsx("span",{className:"ml-1.5 inline-block h-1.5 w-1.5 rounded-full bg-[color:var(--muted-foreground)]","aria-hidden":!0})}function u5s({publicId:e,onDone:t}){const{t:n}=W(),a=!!e,s=qIs(e),r=HIs(),i=VIs(),c=fOs(),d=GZ(),[m,f]=h.useState("config"),[p,y]=h.useState(X4s),[v,$]=h.useState(l8),[x,w]=h.useState([]),[S,k]=h.useState(null),[T,R]=h.useState(!1),[_,P]=h.useState(!1);a&&s.data&&S!==e&&(y(Z4s(s.data)),$(c8(s.data,"en")),k(e),R(!1),P(!1));const j=Q=>{y(Q),R(!0)},N=Q=>{if(Q.locale!==v.locale){$(s.data?c8(s.data,Q.locale):{...l8,locale:Q.locale});return}$(Q),P(!0)},I=h.useMemo(()=>p.authorSlug&&p.modelSlug?`${p.authorSlug}/${p.modelSlug}`:"",[p.authorSlug,p.modelSlug]),z=wN(v.displayOrder)!==null,E=r.isPending||i.isPending||d.isPending,L=T||_,O=!!I&&p.protocols.size>0&&z&&!E&&(!a||L),V=Fb.indexOf(m),ne=V===Fb.length-1,q=async()=>{try{if(a&&s.data){const Q=s5s(s.data,p,v);if(Object.keys(Q).length===0){t();return}await M(Q,!1)}else{const Q=await r.mutateAsync(o5s(p,v));Q.warnings.length&&ie.warning(Q.warnings.join(`
972`));let de=!1;for(const Y of x)try{await d.mutateAsync({modelPublicId:Q.model.publicId,...Y})}catch{de=!0}de&&ie.error(n("adminModels.pricing.createPriceFailed",{defaultValue:"Model created, but some prices were not saved. Add them in the Pricing tab."})),t()}}catch(Q){ie.error(gg(Q))}},M=async(Q,de)=>{if(s.data)try{await i.mutateAsync({publicId:e,...Q,expectedVersion:s.data.version,highRiskConfirmed:de}),R(!1),P(!1),t()}catch(Y){if(Y instanceof rn&&Y.code==="HIGH_RISK_CONFIRM_REQUIRED")return await zt({message:n("adminModels.errors.highRisk",{defaultValue:"This change affects live gateway routing or display semantics on a published model. Continue?"}),variant:"destructive"})?M(Q,!0):void 0;if(Y instanceof rn&&Y.code==="STALE_UPDATE"){ie.error(n("adminModels.errors.stale",{defaultValue:"Stale — reload and retry."}));return}throw Y}},F=async Q=>{if(!(!s.data||Q===s.data.status||!await zt({message:n("adminModels.lifecycle.confirmStatus",{status:Q,defaultValue:`Set status to "${Q}"? Takes effect immediately.`}),variant:Q==="published"?"default":"destructive"})))try{await c.mutateAsync({publicId:e,status:Q}),ie.success(n("adminModels.lifecycle.statusChanged",{status:Q,defaultValue:`Status set to ${Q}.`}))}catch(Y){if(Y instanceof rn&&Y.code==="MODEL_PUBLISH_BLOCKED_MISSING_PRICING"){ie.error(n("adminModels.lifecycle.publishBlocked",{defaultValue:"Cannot publish: core pricing factors are missing. Set them in the Pricing tab first."})),f("pricing");return}ie.error(gg(Y))}},H=async Q=>{if(!(!s.data||Q===s.data.visibility||!await zt({message:n("adminModels.lifecycle.confirmVisibility",{visibility:Q,defaultValue:`Set visibility to "${Q}"? Takes effect immediately.`}),variant:"destructive"})))try{await c.mutateAsync({publicId:e,visibility:Q}),ie.success(n("adminModels.lifecycle.visibilityChanged",{visibility:Q,defaultValue:`Visibility set to ${Q}.`}))}catch(Y){ie.error(gg(Y))}},ee=async Q=>{if(!(!s.data||Q===s.data.available||!await zt({message:Q?n("adminModels.lifecycle.confirmAvailable",{defaultValue:"Mark this model available again? Takes effect immediately."}):n("adminModels.lifecycle.confirmUnavailable",{defaultValue:"Mark this model temporarily unavailable? It stays listed (greyed out) but gateway calls are rejected."}),variant:Q?"default":"destructive"})))try{await c.mutateAsync({publicId:e,available:Q}),ie.success(Q?n("adminModels.lifecycle.availableChanged",{defaultValue:"Model marked available."}):n("adminModels.lifecycle.unavailableChanged",{defaultValue:"Model marked temporarily unavailable."}))}catch(Y){ie.error(gg(Y))}},B=async Q=>{if(!(!s.data||Q===s.data.requires_paid_account||!await zt({message:Q?n("adminModels.lifecycle.confirmPaidOnly",{defaultValue:"Restrict this model to accounts that have topped up? It stays listed, but users who never paid get a 403 telling them to top up."}):n("adminModels.lifecycle.confirmEveryone",{defaultValue:"Open this model to every account? Takes effect immediately."}),variant:Q?"destructive":"default"})))try{await c.mutateAsync({publicId:e,requiresPaidAccount:Q}),ie.success(Q?n("adminModels.lifecycle.paidOnlyChanged",{defaultValue:"Model restricted to accounts that have topped up."}):n("adminModels.lifecycle.everyoneChanged",{defaultValue:"Model opened to every account."}))}catch(Y){ie.error(gg(Y))}},G=async()=>
972{if(!L){t();return}await zt({message:n("adminModels.discardChanges",{defaultValue:"Discard unsaved changes?"}),variant:"destructive"})&&t()};return o.jsxs("div",{className:"grid w-[calc(100vw-2rem)] min-w-0 max-w-full grid-cols-[minmax(0,1fr)] gap-5 overflow-hidden md:w-full",children:[a&&s.data?o.jsxs("div",{className:"min-w-0 max-w-full space-y-3 border-b border-[color:var(--border)] pb-4",children:[o.jsxs("div",{className:"space-y-3 sm:grid sm:min-w-0 sm:grid-cols-2 sm:gap-3 sm:space-y-0 lg:grid-cols-3",children:[o.jsxs("div",{className:"grid min-w-0 gap-1.5",children:[o.jsx("span",{className:"text-xs font-medium text-[color:var(--foreground)] sm:text-sm",children:n("adminModels.lifecycle.status",{defaultValue:"Status"})}),o.jsx(ft,{fullWidth:!0,value:s.data.status,disabled:c.isPending,onChange:Q=>F(Q.target.value),"aria-label":n("adminModels.lifecycle.status",{defaultValue:"Status"}),children:i5s.map(Q=>o.jsx("option",{value:Q,children:n(`adminModels.lifecycle.statusOption.${Q}`,{defaultValue:Q})},Q))})]}),o.jsxs("div",{className:"grid min-w-0 gap-1.5",children:[o.jsx("span",{className:"text-xs font-medium text-[color:var(--foreground)] sm:text-sm",children:n("adminModels.lifecycle.visibility",{defaultValue:"Visibility"})}),o.jsx(ft,{fullWidth:!0,value:s.data.visibility,disabled:c.isPending,onChange:Q=>H(Q.target.value),"aria-label":n("adminModels.lifecycle.visibility",{defaultValue:"Visibility"}),children:l5s.map(Q=>o.jsx("option",{value:Q,children:n(`adminModels.lifecycle.visibilityOption.${Q}`,{defaultValue:Q})},Q))})]}),o.jsxs("div",{className:"grid min-w-0 gap-1.5",children:[o.jsx("span",{className:"text-xs font-medium text-[color:var(--foreground)] sm:text-sm",children:n("adminModels.lifecycle.availability",{defaultValue:"Availability"})}),o.jsx(ft,{fullWidth:!0,value:s.data.available?"available":"unavailable",disabled:c.isPending,onChange:Q=>ee(Q.target.value==="available"),"aria-label":n("adminModels.lifecycle.availability",{defaultValue:"Availability"}),children:c5s.map(Q=>o.jsx("option",{value:Q,children:n(`adminModels.lifecycle.availabilityOption.${Q}`,{defaultValue:Q})},Q))})]}),o.jsxs("div",{className:"grid min-w-0 gap-1.5",children:[o.jsx("span",{className:"text-xs font-medium text-[color:var(--foreground)] sm:text-sm",children:n("adminModels.lifecycle.audience",{defaultValue:"Audience"})}),o.jsx(ft,{fullWidth:!0,value:s.data.requires_paid_account?"paid_only":"everyone",disabled:c.isPending,onChange:Q=>B(Q.target.value==="paid_only"),"aria-label":n("adminModels.lifecycle.audience",{defaultValue:"Audience"}),children:d5s.map(Q=>o.jsx("option",{value:Q,children:n(`adminModels.lifecycle.audienceOption.${Q}`,{defaultValue:Q})},Q))})]})]}),o.jsx("span",{className:"text-11 text-[color:var(--muted-foreground)]",children:n("adminModels.lifecycle.hint",{defaultValue:"Lifecycle changes apply immediately (with confirmation), separate from Save."})})]}):null,o.jsxs(Cc,{value:m,onValueChange:Q=>f(Q),className:"grid min-w-0 grid-cols-[minmax(0,1fr)] gap-4",children:[o.jsxs(tl,{variant:"segmented",className:"max-w-full overflow-x-auto [scrollbar-width:none] [&::-webkit-scrollbar]:hidden",children:[o.jsxs(ia,{value:"config",className:"min-w-max text-xs sm:text-sm",children:[n("adminModels.steps.config",{defaultValue:"1 · Configuration"}),T?o.jsx(d8,{}):null]}),o.jsx(ia,{value:"protocols",className:"min-w-max text-xs sm:text-sm",children:n("adminModels.steps.protocols",{defaultValue:"2 · Protocols"})}),o.jsx(ia,{value:"pricing",className:"min-w-max text-xs sm:text-sm",children:n("adminModels.steps.pricing",{defaultValue:"3 · Pricing"})}),a?o.jsxs(ia,{value:"display",className:"min-w-max text-xs sm:text-sm",children:[n("adminModels.steps.display",{defaultValue:"Content & display"}),_?o.jsx(d8,{}):null]}):null]}),o.jsx(Tn,{value:"config",className:"mt-0",children:o.jsx(U4s,{value:p,onChange:j,isEdit:a})}),o.jsx(Tn,{value:"protocols",className:"mt-0",children:o.jsx(B4s,{value:p,onChange:j})}),o.jsx(Tn,{value:"pricing",className:"mt-0",children:a?o.jsx(q4s,{modelPublicId:e}):o.jsx(H4s,{draft:x,onChange:w})}),a?o.jsx(Tn,{value:"display",className:"mt-0",children:o.jsx(r5s,{value:v,onCh
972ange:N})}):null]}),a?m==="pricing"?o.jsx("p",{className:"text-left text-11 text-[color:var(--muted-foreground)] sm:text-right",children:n("adminModels.pricing.savesImmediately",{defaultValue:"Pricing changes apply immediately and are not controlled by Save."})}):o.jsxs("div",{className:"grid gap-2 sm:flex sm:justify-end",children:[o.jsx(K,{className:"w-full sm:w-auto",variant:"secondary",onClick:G,disabled:E,children:n("adminModels.cancel")}),o.jsx(K,{className:"w-full sm:w-auto",onClick:q,disabled:!O,children:n("adminModels.save")})]}):o.jsxs("div",{className:"grid gap-2 sm:flex sm:items-center sm:justify-between",children:[o.jsx(K,{className:"w-full sm:w-auto",variant:"secondary",onClick:G,disabled:E,children:n("adminModels.cancel")}),o.jsxs("div",{className:"grid gap-2 sm:flex",children:[V>0?o.jsx(K,{className:"w-full sm:w-auto",variant:"secondary",type:"button",onClick:()=>f(Fb[V-1]),disabled:E,children:n("adminModels.steps.back",{defaultValue:"Back"})}):null,ne?o.jsx(K,{className:"w-full sm:w-auto",onClick:q,disabled:!O,children:n("adminModels.steps.create",{defaultValue:"Create model"})}):o.jsx(K,{className:"w-full sm:w-auto",type:"button",onClick:()=>f(Fb[V+1]),children:n("adminModels.steps.next",{defaultValue:"Next"})})]})]})]})}const zb=["provider","status","visibility","search","page"];function m5s(){const{t:e}=W(),t=qa(),n=Go(t.data?.admin??null,"ops.models.write"),[a,s]=h.useState(null),{params:r,patch:i,remove:c}=Mt(),d=h.useMemo(()=>({provider:Pe(r,"provider"),status:Pe(r,"status"),visibility:Pe(r,"visibility"),search:Pe(r,"search"),page:ln(r,"page",1)}),[r]),m=h.useDeferredValue(d.search),f=zIs({page:String(d.page),...d.provider?{provider:d.provider}:{},...d.status?{status:d.status}:{},...d.visibility?{visibility:d.visibility}:{},...m?{search:m}:{}}),p=phs("provider",{includeAll:!0,allLabel:e("adminModels.filters.allProviders",{defaultValue:"All providers"})}),y=[{label:e("adminModels.filters.allStatuses",{defaultValue:"All model statuses"}),value:""},...CK],v=[{label:e("adminModels.filters.allVisibility",{defaultValue:"All visibility"}),value:""},...SK],$=a!==null,w=(a?f.data?.items.find(k=>k.publicId===a):null)?.fullSlug??a??"";function S(k){s(k)}return o.jsxs(Vt,{title:e("adminModels.title"),description:e("adminModels.description"),action:o.jsx(K,{size:"sm",onClick:()=>s(""),disabled:!n,children:e("adminModels.addModel")}),children:[o.jsxs("div",{className:"mb-3 grid gap-3 md:mb-4 md:grid-cols-[1fr_1fr_1fr_2fr_auto]",children:[o.jsx("div",{className:"hidden md:block",children:o.jsx(Ze,{label:e("adminModels.filters.provider"),value:d.provider,options:p.options,onChange:k=>i({provider:k,page:void 0})})}),o.jsx("div",{className:"hidden md:block",children:o.jsx(Ze,{label:e("adminModels.filters.status"),value:d.status,options:y,onChange:k=>i({status:k,page:void 0})})}),o.jsx("div",{className:"hidden md:block",children:o.jsx(Ze,{label:e("adminModels.filters.visibility"),value:d.visibility,options:v,onChange:k=>i({visibility:k,page:void 0})})}),o.jsxs("label",{className:"grid gap-1.5 text-xs font-medium",children:[e("adminModels.filters.search",{defaultValue:"Search model slug"}),o.jsx(ge,{value:d.search,onChange:k=>i({search:k.target.value,page:void 0}),placeholder:"claude-opus-4.7",className:"font-[family-name:var(--font-mono)]"})]}),o.jsx(nn,{show:Zt(r,zb),onReset:()=>c(zb),className:"hidden self-end md:inline-flex"})]}),o.jsxs(Gp,{label:e("adminModels.filters.mobileTitle",{defaultValue:"Filters"}),active:Zt(r,["provider","status","visibility"]),className:"mb-4",panelClassName:"gap-3",children:[o.jsx(Ze,{label:e("adminModels.filters.provider"),value:d.provider,options:p.options,onChange:k=>i({provider:k,page:void 0})}),o.jsx(Ze,{label:e("adminModels.filters.status"),value:d.status,options:y,onChange:k=>i({status:k,page:void 0})}),o.jsx(Ze,{label:e("adminModels.filters.visibility"),value:d.visibility,options:v,onChange:k=>i({visibility:k,page:void 0})}),o.jsx(nn,{show:Zt(r,zb),onReset:()=>c(zb),className:"justify-self-end"})]}),o.jsx(Pt,{label:e("adminModels.table.label"),rows:f.data?.items,isLoading:f.isLoading,error:f.error,emptyTitle:e("adminModels.table.empty"),pagination:{total:f.data?.total??0,page:d.page,onPageChange:k=>i({page:k===1?void 0:String(k)},{replace:!1})},columns:[{header:e("adminModels.table.model"),cell:k=>o.jsxs("span",{className:"flex items-center gap-2",children:[o.jsx("span",{"aria-hidden":"true",className:"flex size-[18px] shrink-0 items-center justify-center text-[color:var(--muted-foreground)]",children:o.jsx(Xo,{authorSlug:k.provider,size:18})}
972),o.jsx("span",{className:"font-[family-name:var(--font-mono)] text-sm",children:k.fullSlug})]})},{header:e("adminModels.table.source",{defaultValue:"Source"}),cell:k=>o.jsx(Xt,{variant:"outline",className:"font-[family-name:var(--font-mono)]",children:k.source??k.provider})},{header:e("adminModels.table.sub2api",{defaultValue:"Sub2API mapping"}),cell:k=>k.sub2apiModelId?o.jsxs("span",{className:"font-[family-name:var(--font-mono)] text-xs text-[color:var(--muted-foreground)]",children:["→ ",k.sub2apiModelId]}):o.jsx("span",{className:"text-[color:var(--muted-foreground)]",children:"—"})},{header:e("adminModels.table.textPrice",{defaultValue:"Price (in / out $/M)"}),align:"right",cell:k=>{const T=bJ(k);return T.hasPrice?o.jsxs("div",{className:"text-right leading-tight",children:[o.jsxs("div",{className:"font-[family-name:var(--font-mono)] text-xs tabular-nums",children:[T.ourLabel,T.kind==="image"?o.jsx("span",{className:"ml-1 text-2xs font-sans text-[color:var(--muted-foreground)]",children:e("adminModels.table.imageOutput",{defaultValue:"image out"})}):null]}),T.savedPct!=null?o.jsxs("div",{className:"mt-0.5 text-2xs tabular-nums text-[color:var(--muted-foreground)]",children:[e("adminModels.table.officialPrice",{defaultValue:"List"})," ",T.officialLabel," · ",e("adminModels.table.saved",{pct:T.savedPct,defaultValue:"-{{pct}}%"})]}):null]}):o.jsx("span",{className:"text-[color:var(--muted-foreground)]",children:"—"})}},{header:e("adminModels.table.status"),cell:k=>o.jsx(Oe,{value:k.status,label:ct(k.status)})},{header:e("adminModels.table.visibility"),cell:k=>o.jsx(Oe,{value:k.visibility,label:ct(k.visibility)})},{header:e("adminModels.table.action"),sticky:"right",cell:k=>o.jsx(K,{variant:"secondary",size:"sm",onClick:()=>S(k.publicId),disabled:!n,children:e("adminModels.table.edit")})}],mobileCard:k=>o.jsx(p5s,{model:k,canWrite:n,onEdit:()=>S(k.publicId)})}),o.jsx(Vn,{open:$,onOpenChange:k=>{k||s(null)},children:o.jsxs(Nn,{side:"auto",children:[o.jsxs(Pa,{className:"pointer-events-none pr-10",children:[o.jsxs(Rn,{className:"grid gap-0.5 text-sm leading-5 sm:text-base sm:leading-normal",children:[o.jsx("span",{children:a?e("adminModels.editModelShort",{defaultValue:"Edit model"}):e("adminModels.newModel")}),a?o.jsx("span",{className:"pointer-events-none line-clamp-2 font-[family-name:var(--font-mono)] text-xs font-medium leading-5 text-[color:var(--muted-foreground)] break-all [overflow-wrap:anywhere]",children:w}):null]}),o.jsx(ua,{children:a?e("adminModels.sheetDescription"):e("adminModels.sheetDescriptionNew",{defaultValue:"Create the model draft. Set pricing and publish after it exists."})})]}),$?o.jsx(u5s,{publicId:a||null,onDone:()=>s(null)},a):null]})})]})}function p5s({model:e,canWrite:t,onEdit:n}){const{t:a}=W(),s=bJ(e);return o.jsxs(Dn,{children:[o.jsx(kr,{title:o.jsxs("span",{className:"inline-flex min-w-0 items-start gap-2",children:[o.jsx("span",{"aria-hidden":"true",className:"mt-0.5 flex size-[18px] shrink-0 items-center justify-center text-[color:var(--muted-foreground)]",children:o.jsx(Xo,{authorSlug:e.provider,size:18})}),o.jsx("span",{className:"min-w-0 break-all font-[family-name:var(--font-mono)] text-xs",children:e.fullSlug})]}),meta:e.source??e.provider,truncateTitle:!1,trailing:o.jsxs(Cr,{children:[o.jsx(Oe,{value:e.status,label:ct(e.status)}),o.jsx(K,{type:"button",variant:"secondary",size:"sm",onClick:n,disabled:!t,children:a("adminModels.table.edit")})]})}),o.jsxs(Ha,{children:[o.jsx(Qe,{label:a("adminModels.table.visibility"),children:o.jsx(Oe,{value:e.visibility,label:ct(e.visibility)})}),o.jsx(Qe,{label:a("adminModels.table.source",{defaultValue:"Source"}),align:"right",truncate:!1,children:o.jsx(Xt,{variant:"outline",className:"font-[family-name:var(--font-mono)]",children:e.source??e.provider})}),o.jsx(Qe,{label:a("adminModels.table.sub2api",{defaultValue:"Sub2API mapping"}),className:"col-span-2",truncate:!1,children:e.sub2apiModelId?o.jsx("span",{className:"font-[family-name:var(--font-mono)] text-11 break-all text-[color:var(--muted-foreground)]",children:e.sub2apiModelId}):o.jsx("span",{className:"text-[color:var(--muted-foreground)]",children:"—"})}),o.jsx(Qe,{label:a("adminModels.table.textPrice",{defaultValue:"Price (in / out $/M)"}),className:"col-span-2",truncate:!1,children:s.hasPrice?o.jsxs("span",{className:"block font-[family-name:var
972(--font-mono)] text-xs tabular-nums",children:[s.ourLabel,s.kind==="image"?o.jsx("span",{className:"ml-1 font-sans text-2xs text-[color:var(--muted-foreground)]",children:a("adminModels.table.imageOutput",{defaultValue:"image out"})}):null,s.savedPct!=null?o.jsxs("span",{className:"mt-0.5 block font-sans text-11 text-[color:var(--muted-foreground)]",children:[a("adminModels.table.officialPrice",{defaultValue:"List"})," ",s.officialLabel," · ",a("adminModels.table.saved",{pct:s.savedPct,defaultValue:"-{{pct}}%"})]}):null]}):o.jsx("span",{className:"text-[color:var(--muted-foreground)]",children:"—"})})]})]})}function bJ(e){const t=e.outputModalities??[],n=(t.includes("image")||t.includes("video"))&&!t.includes("text"),a=n?`${Fn(e.imageOutputPricePer1m)} / 1M`:`${Fn(e.inputPricePer1m)} / ${Fn(e.outputPricePer1m)}`,s=n?`${Fn(e.officialImageOutputPricePer1m)} / 1M`:`${Fn(e.officialInputPricePer1m)} / ${Fn(e.officialOutputPricePer1m)}`,r=!!(n?e.imageOutputPricePer1m:e.inputPricePer1m||e.outputPricePer1m),i=Number(n?e.imageOutputPricePer1m:e.outputPricePer1m),c=Number(n?e.officialImageOutputPricePer1m:e.officialOutputPricePer1m),d=Number.isFinite(i)&&Number.isFinite(c)&&c>i;return{kind:n?"image":"text",ourLabel:a,officialLabel:s,hasPrice:r,savedPct:d?Math.round((1-i/c)*100):null}}const f5s=["api_gateway","auth","console","ops","global"],g5s=["active","disabled","archived"],mT=["rpm_per_key","rpm_per_user","concurrent_streams_per_key","concurrent_streams_per_user"];function h5s(e){return e instanceof rn?`${e.code}: ${e.message}`:String(e)}function y5s({policy:e,onDone:t}){const{t:n}=W(),a=!!e,s=$Is(),r=wIs(),[i,c]=h.useState(e?.code??""),[d,m]=h.useState(e?.name??""),[f,p]=h.useState(e?.description??""),[y,v]=h.useState(e?.scope??"api_gateway"),[$,x]=h.useState(e?.status??"active"),[w,S]=h.useState(()=>{const P={};for(const j of mT)P[j]=e?.limits?.[j]!=null?String(e.limits[j]):"";return P}),k=s.isPending||r.isPending,T=!!d.trim()&&(a||!!i.trim())&&!k,R=()=>{const P={};for(const j of mT){const N=w[j].trim();if(N==="")continue;const I=Number(N);if(!Number.isInteger(I)||I<=0)throw new Error(n("adminRateLimits.form.invalidLimit",{field:n(`adminRateLimits.limitNames.${j}`)}));P[j]=I}return P},_=async()=>{try{const P=R();a?await r.mutateAsync({publicId:e.publicId,name:d,description:f,scope:y,status:$,limits:P}):await s.mutateAsync({code:i.trim(),name:d,description:f,scope:y,status:$,limits:P}),ie.success(n("adminRateLimits.form.saved")),t()}catch(P){ie.error(h5s(P))}};return o.jsxs("div",{className:"grid min-w-0 gap-4 sm:gap-5",children:[o.jsxs(sn,{title:n("adminRateLimits.form.identity"),children:[o.jsx(De,{label:n("adminRateLimits.code"),hint:a?n("adminRateLimits.form.codeImmutable"):void 0,children:o.jsx(ge,{value:i,onChange:P=>c(P.target.value),disabled:a,placeholder:"team_pro",className:"font-[family-name:var(--font-mono)]"})}),o.jsx(De,{label:n("adminRateLimits.name"),children:o.jsx(ge,{value:d,onChange:P=>m(P.target.value),placeholder:"Team Pro"})}),o.jsx(De,{label:n("adminRateLimits.form.description"),children:o.jsx(ge,{value:f,onChange:P=>p(P.target.value)})})]}),o.jsxs(sn,{title:n("adminRateLimits.form.classification"),contentClassName:"md:grid-cols-2",children:[o.jsx(De,{label:n("adminRateLimits.scope"),children:o.jsx(ft,{value:y,onChange:P=>v(P.target.value),children:f5s.map(P=>o.jsx("option",{value:P,children:n(`adminRateLimits.scopes.${P}`)},P))})}),o.jsx(De,{label:n("adminRateLimits.status"),children:o.jsx(ft,{value:$,onChange:P=>x(P.target.value),children:g5s.map(P=>o.jsx("option",{value:P,children:n(`adminRateLimits.statuses.${P}`)},P))})})]}),o.jsx(sn,{title:n("adminRateLimits.limits"),hint:n("adminRateLimits.form.limitsHint"),contentClassName:"md:grid-cols-2",children:mT.map(P=>o.jsx(De,{label:n(`adminRateLimits.limitNames.${P}`),children:o.jsx(ge,{type:"number",min:1,value:w[P],onChange:j=>S(N=>({...N,[P]:j.target.value})),placeholder:n("adminRateLimits.form.default"),className:"tabular-nums"})},P))}),o.jsxs("div",{className:"grid gap-2 pt-1 sm:flex sm:justify-end",children:[o.jsx(K,{variant:"secondary",onClick:t,disabled:k,children:n("adminRateLimits.form.cancel")}),o.jsx(K,{onClick:_,disabled:!T,children:n(a?"adminRateLimits.form.save":"adminRateLimits.form.create")})]})]})}const v5s={auth:"Auth",console:"Console",api_gateway:"API gateway",ops:"Ops",global:"Global"},b5s={rpm_per_key:"RPM / key",rpm_per_user:"RPM / user",concurrent_streams_per_key:"Streams / key",concurrent_streams_per_user:"Streams / user"};function xJ(e,t){return t(`adminRateLimits.scopes.${e}`,{defaultValue:v5s[e]??e.replaceAll("_"," ")})}function $J(e,t){return t(`adminRateLimits.limitNames.${e}`,{defaultValue:b5s[e]??e.replaceAll("_"," ")})}function x5s({limits:e}){const{t}=W(),n=Object.entries(e);return n.length===0?o.jsx("span",{className:"text-[color:var(--muted-foreground)]",children:t("adminRateLimits.noLimits")}):o.jsx("div",{className:"grid min-w-[220px] gap-1",children:n.map(([a,s])=>o.jsxs("div",{className:"flex items-center justify-between gap-3 text-xs",children:[o.jsx("span",{className:"text-[color:var(--muted-foreground)]",children:$J(a,t)}),o.jsx("span",{className:"font-medium tabular-nums",children:String(s)})]},a))})}function $5s({policy:e,canWrite:t,deleting:n,onEdit:a,onDelete:s}){const{t:r}=W(),i=Object.entries(e.limits),c=i.slice(0,2),d=Math.max(0,i.length-c.length);return o.jsxs(Dn,{className:"py-2",children:[o.jsx(kr,{title:o.jsx("span",{className:"block max-w-full truncate font-[family-name:var
972(--font-mono)]",children:e.code}),meta:o.jsx("span",{className:"block max-w-full truncate",children:e.name}),trailing:o.jsxs(Cr,{children:[o.jsx(Oe,{value:e.status}),o.jsx(K,{type:"button",variant:"secondary",size:"icon",onClick:a,disabled:!t,"aria-label":r("adminRateLimits.edit"),className:"size-8",children:o.jsx(T9,{className:"size-3.5"})}),o.jsx(K,{type:"button",variant:"ghost",size:"icon",onClick:s,disabled:!t||n,"aria-label":r("adminRateLimits.delete"),className:"size-8",children:o.jsx(Sc,{className:"size-3.5"})})]})}),o.jsxs(Ha,{className:"grid-cols-[minmax(0,1fr)_auto]",children:[o.jsx(Qe,{label:r("adminRateLimits.scope"),children:xJ(e.scope,r)}),o.jsx(Qe,{label:r("adminRateLimits.limits"),align:"right",children:i.length?i.length:r("adminRateLimits.noLimits")}),c.length>0?o.jsx(Qe,{label:r("adminRateLimits.limits"),className:"col-span-2",truncate:!1,children:o.jsxs("span",{className:"flex flex-wrap gap-x-2 gap-y-1",children:[c.map(([m,f])=>o.jsxs("span",{className:"inline-flex items-center gap-1 rounded-md bg-[color:var(--muted)] px-1.5 py-0.5 text-11",children:[o.jsx("span",{className:"text-[color:var(--muted-foreground)]",children:$J(m,r)}),o.jsx("span",{className:"font-medium tabular-nums",children:String(f)})]},m)),d?o.jsxs("span",{className:"inline-flex items-center rounded-md bg-[color:var(--muted)] px-1.5 py-0.5 text-11 text-[color:var(--muted-foreground)]",children:["+",d]}):null]})}):null]})]})}function w5s(){const{t:e}=W(),t=qa(),n=Go(t.data?.admin??null,"ops.rate_limit.write"),a=KZ(),s=kIs(),[r,i]=h.useState(null),c=async d=>{if(await zt({message:e("adminRateLimits.confirmDelete",{name:d.name}),variant:"destructive"}))try{await s.mutateAsync(d.publicId),ie.success(e("adminRateLimits.deleted"))}catch(f){ie.error(f instanceof rn?`${f.code}: ${f.message}`:String(f))}};return o.jsxs(Vt,{title:e("adminRateLimits.title"),description:e("adminRateLimits.description"),action:o.jsx(K,{size:"sm",onClick:()=>i(""),disabled:!n,children:e("adminRateLimits.add")}),children:[o.jsx(Pt,{label:e("adminRateLimits.label"),rows:a.data?.items,isLoading:a.isLoading,error:a.error,emptyTitle:e("adminRateLimits.empty"),pagination:{},mobileCard:d=>o.jsx($5s,{policy:d,canWrite:n,deleting:s.isPending,onEdit:()=>i(d),onDelete:()=>c(d)}),columns:[{header:e("adminRateLimits.code"),cell:d=>o.jsx("span",{className:"font-[family-name:var(--font-mono)] text-sm",children:d.code})},{header:e("adminRateLimits.name"),cell:d=>d.name},{header:e("adminRateLimits.scope"),cell:d=>xJ(d.scope,e)},{header:e("adminRateLimits.status"),cell:d=>o.jsx(Oe,{value:d.status})},{header:e("adminRateLimits.limits"),cell:d=>o.jsx(x5s,{limits:d.limits})},{header:e("adminRateLimits.action"),sticky:"right",cell:d=>o.jsxs("div",{className:"flex justify-end gap-2",children:[o.jsx(K,{variant:"secondary",size:"sm",onClick:()=>i(d),disabled:!n,children:e("adminRateLimits.edit")}),o.jsx(K,{variant:"ghost",size:"sm",onClick:()=>c(d),disabled:!n||s.isPending,children:e("adminRateLimits.delete")})]})}]}),o.jsx(Vn,{open:r!==null,onOpenChange:d=>{d||i(null)},children:o.jsxs(Nn,{side:"auto",className:"min-w-0",children:[o.jsxs(Pa,{children:[o.jsx(Rn,{children:r?e("adminRateLimits.editTitle",{name:r.name}):e("adminRateLimits.newTitle")}),o.jsx(ua,{children:e("adminRateLimits.formDescription")})]}),r!==null?o.jsx(y5s,{policy:r===""?null:r,onDone:()=>i(null)},r===""?"new":r.publicId):null]})})]})}const u8=20,m8=["q","status","page","size"];function Xm(e){return e instanceof rn?`${e.code}: ${e.message}`:String(e)}function k5s(e){return e?e.slice(0,10):""}function C5s(e){return Be.adminUserDetail.replace(":publicId",e)}function p8({mode:e,entry:t,onDone:n}){const{t:a,i18n:s}=W(),r=SIs(),i=RIs(),[c,d]=h.useState(t?.email??""),[m,f]=h.useState(t?.note??""),[p,y]=h.useState(k5s(t?.expiresAt)),v=r.isPending||i.isPending,$=async x=>{x.preventDefault();try{e==="edit"&&t?(await i.mutateAsync({publicId:t.publicId,note:m.trim()||null,expiresAt:p||null}),ie.success(a("adminAccess.updated"))):(await r.mutateAsync({email:c.trim(),note:m.trim()||void 0,expiresAt:p||null}),ie.success(a("adminAccess.added"))),n()}catch(w){ie.error(Xm(w))}};return o.jsxs("form",{className:"mt-4 space-y-4",onSubmit:$,children:[o.jsx(De,{label:a("adminAccess.emailLabel"),hint:a("adminAccess.emailHint"),children:o.jsx(ge,{type:"text",autoFocus:!0,value:c,onChange:x=>d(x.target.value),disabled:e==="edit",placeholder:a("adminAccess.emailPlaceholder")})}),o.jsx(De,{label:a("adminAccess.noteLabel"),children:o.jsx(_o,{value:m,onChange:x=>f(x.target.value),rows:3,placeholder:a("adminAccess.notePlaceholder")})}),o.jsx(De,{label:a("adminAccess.expiresAtLabel"),hint:a("adminAccess.expiresAtHint"),children:o.jsx(fr,{value:p,onChange:y,placeholder:a("adminAccess.never"),minDate:new Date,locale:s.language,clearLabel:a("common.clearAll"),labels:gr(a,a("common.clearAll"))})}),o.jsxs("div",{className:"flex flex-col-reverse gap-2 min-[360px]:flex-row min-[360px]:justify-end",children:[o.jsx(K,{type:"button",variant:"ghost",className:"w-full min-[360px]:w-auto",onClick:n,disabled:v,children:a("common.cancel")}),o.jsx(K,{className:"w-full min-[360px]:w-auto",disabled:v||e==="add"&&!c.trim(),children:a(e==="edit"?"adminAccess.save":"adminAccess.add")})]})]})}function S5s({onDone:e}){const{t,i18n:n}=W(),a=AIs(),[s,r]=h.useState(""),[i,c]=h.useState(""),[d,m]=h.useState(""),[f,p]=h.useState([]),y=async v=>{v.preventDefault();const $=s.split(/\r?\n/).map(x=>
972x.trim()).filter(Boolean);try{const x=await a.mutateAsync({entries:$,note:i.trim()||void 0,expiresAt:d||null});p(x.results);const w=x.results.filter(S=>S.status==="added").length;ie.success(t("adminAccess.bulkAdded",{count:w}))}catch(x){ie.error(Xm(x))}};return o.jsxs("form",{className:"mt-4 space-y-4",onSubmit:y,children:[o.jsx(De,{label:t("adminAccess.bulkEntriesLabel"),children:o.jsx(_o,{value:s,onChange:v=>r(v.target.value),rows:8,placeholder:t("adminAccess.bulkEntriesPlaceholder")})}),o.jsx(De,{label:t("adminAccess.noteLabel"),children:o.jsx(_o,{value:i,onChange:v=>c(v.target.value),rows:2,placeholder:t("adminAccess.notePlaceholder")})}),o.jsx(De,{label:t("adminAccess.expiresAtLabel"),children:o.jsx(fr,{value:d,onChange:m,placeholder:t("adminAccess.never"),minDate:new Date,locale:n.language,clearLabel:t("common.clearAll"),labels:gr(t,t("common.clearAll"))})}),f.length?o.jsx("div",{className:"max-h-48 overflow-auto rounded-md border border-[color:var(--border)] text-xs",children:f.map((v,$)=>o.jsxs("div",{className:"grid grid-cols-[minmax(0,1fr)_auto] items-center gap-2 border-b border-[color:var(--border)] px-3 py-2 last:border-b-0",children:[o.jsx("span",{className:"min-w-0 break-all font-[family-name:var(--font-mono)]",children:v.email}),o.jsx(Oe,{value:v.status})]},`${v.email}-${$}`))}):null,o.jsxs("div",{className:"flex flex-col-reverse gap-2 min-[360px]:flex-row min-[360px]:justify-end",children:[o.jsx(K,{type:"button",variant:"ghost",className:"w-full min-[360px]:w-auto",onClick:e,disabled:a.isPending,children:t("common.cancel")}),o.jsx(K,{className:"w-full min-[360px]:w-auto",disabled:a.isPending||!s.trim(),children:t("adminAccess.bulkAdd")})]})]})}function A5s({canRead:e}){const{t}=W(),n=TIs(),[a,s]=h.useState(""),[r,i]=h.useState(null),c=async d=>{d.preventDefault();try{const m=await n.mutateAsync(a.trim());i(m.result)}catch(m){ie.error(Xm(m))}};return o.jsxs("form",{className:"mb-4 grid min-w-0 gap-3 rounded-md border border-[color:var(--border)] bg-[color:var(--card)] p-3 sm:grid-cols-[minmax(0,1fr)_auto] sm:p-4",onSubmit:c,children:[o.jsx(De,{label:t("adminAccess.checkLabel"),children:o.jsx(ge,{value:a,onChange:d=>s(d.target.value),placeholder:t("adminAccess.checkPlaceholder"),disabled:!e})}),o.jsx(K,{className:"self-end",variant:"secondary",disabled:!e||n.isPending||!a.trim(),children:t("adminAccess.check")}),r?o.jsxs("div",{className:"flex min-w-0 flex-wrap items-center gap-x-2 gap-y-1 text-sm sm:col-span-2",children:[o.jsx("span",{className:X("font-medium",r.allowed?"text-[color:var(--success)]":"text-[color:var(--destructive)]"),children:r.allowed?t("adminAccess.checkAllowed"):t("adminAccess.checkDenied")}),o.jsx("span",{className:"min-w-0 break-words text-[color:var(--muted-foreground)]",children:t(`adminAccess.checkReasons.${r.reason}`,{defaultValue:r.reason})}),r.matchedEntry?o.jsx("span",{className:"min-w-0 break-all font-[family-name:var(--font-mono)] text-xs",children:r.matchedEntry.email}):null]}):null]})}function f8({entry:e,canWrite:t,onEdit:n}){const{t:a}=W(),s=jIs(),r=PIs(),i=_Is(),c=s.isPending||r.isPending||i.isPending,d=async()=>{if(await zt({message:a("adminAccess.confirmRevoke",{email:e.email}),variant:"destructive"}))try{await s.mutateAsync(e.publicId),ie.success(a("adminAccess.revoked"))}catch(y){ie.error(Xm(y))}},m=async()=>{try{await r.mutateAsync(e.publicId),ie.success(a("adminAccess.restored"))}catch(p){ie.error(Xm(p))}},f=async()=>{try{await i.mutateAsync(e.publicId),ie.success(a("adminAccess.invited"))}catch(p){ie.error(Xm(p))}};return e.status==="revoked"?o.jsx("div",{className:"flex w-full justify-end min-[360px]:w-auto",children:o.jsx(K,{variant:"ghost",size:"sm",className:"w-full min-[360px]:w-auto",onClick:m,disabled:!t||c,children:a("adminAccess.restore")})}):o.jsxs("div",{className:"grid w-full grid-cols-3 gap-1 min-[360px]:flex min-[360px]:w-auto min-[360px]:justify-end",children:[o.jsx(K,{variant:"secondary",size:"sm",className:"h-8 px-2 text-11 min-[360px]:h-9 min-[360px]:text-xs",onClick:()=>n(e),disabled:!t||c,children:a("adminAccess.edit")}),o.jsx(K,{variant:"ghost",size:"sm",className:"h-8 px-2 text-11 min-[360px]:h-9 min-[360px]:text-xs",onClick:f,disabled:!t||c||e.email.startsWith("@")||e.status==="expired",children:a("adminAccess.invite")}),o.jsx(K,{variant:"ghost",size:"sm",className:"h-8 px-2 text-11 min-[360px]:h-9 min-[360px]:text-xs",onClick:d,disabled:!t||c,children:a("adminAccess.revoke")})]})}function T5s(){const{t:e}=W(),t=Te(),n=qa(),a=Go(n.data?.admin??null,"ops.users.read"),s=Go(n.data?.admin??null,"ops.users.write"),{params:r,patch:i,remove:c}=Mt(),d=h.useMemo(()=>({q:Pe(r,"q"),status:Pe(r,"status","active"),page:ln(r,"page",1),size:ln(r,"size",u8)}),[r]),m=h.useDeferredValue(d.q),f=CIs({...m?{q:m}:{},status:d.status,page:String(d.page),limit:String(d.size)}),[p,y]=h.useState(null);return o.jsxs(Vt,{title:e("adminAccess.title"),description:e("adminAccess.description"),action:o.jsxs("div",{className:"grid w-full grid-cols-2 gap-2 sm:flex sm:w-auto 
972sm:flex-wrap",children:[o.jsx(K,{size:"sm",variant:"secondary",className:"min-w-0 px-2",onClick:()=>y({mode:"bulk"}),disabled:!s,children:e("adminAccess.bulkAdd")}),o.jsx(K,{size:"sm",className:"min-w-0 px-2",onClick:()=>y({mode:"add"}),disabled:!s,children:e("adminAccess.add")})]}),children:[o.jsx(A5s,{canRead:a}),o.jsxs("div",{className:"mb-4 grid gap-3 sm:grid-cols-[minmax(220px,1fr)_180px_auto]",children:[o.jsxs("label",{className:"grid gap-1.5 text-xs font-medium",children:[e("adminAccess.search"),o.jsx(ge,{value:d.q,onChange:v=>i({q:v.target.value,page:void 0}),placeholder:e("adminAccess.searchPlaceholder")})]}),o.jsx(Ze,{label:e("adminAccess.statusFilter"),value:d.status,options:PK,onChange:v=>i({status:v||"active",page:void 0})}),o.jsx(nn,{show:Zt(r,m8,["page","size"]),onReset:()=>c(m8),className:"self-end"})]}),o.jsx(Pt,{label:e("adminAccess.label"),rows:f.data?.items,isLoading:f.isLoading,error:f.error,emptyTitle:e("adminAccess.empty"),pagination:{total:f.data?.total??0,page:d.page,pageSize:d.size,pageSizeOptions:[10,20,50,100],onPageChange:v=>i({page:v===1?void 0:String(v)},{replace:!1}),onPageSizeChange:v=>i({size:v===u8?void 0:String(v),page:void 0})},columns:[{header:e("adminAccess.email"),mobileValue:"break-all",cell:v=>o.jsx("span",{className:"font-[family-name:var(--font-mono)] text-sm",children:v.email})},{header:e("adminAccess.note"),mobileValue:"wrap",cell:v=>o.jsx("span",{className:"block max-w-[260px] truncate",children:v.note||o.jsx("span",{className:"text-[color:var(--muted-foreground)]",children:"-"})})},{header:e("adminAccess.status"),cell:v=>o.jsx(Oe,{value:v.status})},{header:e("adminAccess.registration"),cell:v=>v.user?o.jsx(Ta,{to:C5s(v.user.publicId),className:X(ur({variant:"link",size:"sm"}),"h-auto p-0"),children:e("adminAccess.registered")}):v.admin?o.jsx("span",{className:"text-sm",children:e("adminAccess.adminAllowed")}):v.email.startsWith("@")?o.jsx("span",{className:"text-sm text-[color:var(--muted-foreground)]",children:e("adminAccess.domainRule")}):o.jsx("span",{className:"text-sm text-[color:var(--muted-foreground)]",children:e("adminAccess.notRegistered")})},{header:e("adminAccess.expiresAt"),cell:v=>v.expiresAt?t.dateTime(v.expiresAt):o.jsx("span",{className:"text-[color:var(--muted-foreground)]",children:e("adminAccess.never")})},{header:e("adminAccess.invites"),mobileValue:"wrap",cell:v=>o.jsxs("div",{className:"text-sm tabular-nums",children:[v.inviteCount,v.lastInvitedAt?o.jsx("span",{className:"ml-2 text-[color:var(--muted-foreground)]",children:t.dateTime(v.lastInvitedAt)}):null]})},{header:e("adminAccess.updatedAt"),cell:v=>t.dateTime(v.updatedAt)},{header:e("adminAccess.action"),sticky:"right",cell:v=>o.jsx(f8,{entry:v,canWrite:s,onEdit:$=>y({mode:"edit",entry:$})})}],mobileCard:v=>o.jsxs(Dn,{className:"py-1.5",children:[o.jsx("div",{className:"flex min-w-0 items-start justify-between gap-2",children:o.jsxs("div",{className:"min-w-0",children:[o.jsx("div",{className:"break-all font-[family-name:var(--font-mono)] text-sm font-medium",children:v.email}),v.note?o.jsx("div",{className:"mt-0.5 line-clamp-1 min-w-0 break-words text-11 text-[color:var(--muted-foreground)]",children:v.note}):null]})}),o.jsxs(Ha,{className:"grid-cols-2",children:[o.jsx(Qe,{label:e("adminAccess.status"),children:o.jsx(Oe,{value:v.status})}),o.jsx(Qe,{label:e("adminAccess.invites"),align:"right",children:o.jsx("span",{className:"tabular-nums",children:v.inviteCount})})]}),o.jsx(Cr,{className:"mt-1",children:o.jsx(f8,{entry:v,canWrite:s,onEdit:$=>y({mode:"edit",entry:$})})})]})}),o.jsx(Vn,{open:p!==null,onOpenChange:v=>{v||y(null)},children:o.jsxs(Nn,{side:"auto",className:"min-w-0 overflow-y-auto",children:[o.jsxs(Pa,{children:[o.jsx(Rn,{className:"break-words",children:p?.mode==="edit"?e("adminAccess.editTitle",{email:p.entry?.email}):p?.mode==="bulk"?e("adminAccess.bulkTitle"):e("adminAccess.newTitle")}),o.jsx(ua,{children:p?.mode==="bulk"?e("adminAccess.bulkDescription"):e("adminAccess.formDescription")})]}),p?.mode==="bulk"?o.jsx(S5s,{onDone:()=>y(null)}):null,p?.mode==="add"?o.jsx(p8,{mode:"add",onDone:()=>y(null)}):null,p?.mode==="edit"&&p.entry?o.jsx(p8,{mode:"edit",entry:p.entry,onDone:()=>y(null)}):null]})})]})}const g8=20,h8=["q","kind","status","page","size"];function zP(e){return e instanceof rn?`${e.code}: ${e.message}`:String(e)}function R5s({kind:e}){const{t}=W(),n=e==="blacklist";return o.jsx("span",{className:"inline-flex items-center rounded-full px-2 py-0.5 text-2xs font-medium "+(n?"bg-[color:var(--destructive)]/10 text-[color:var(--destructive)]":"bg-[color:var(--success)]/10 text-[color:var(--success)]"),children:t(n?"adminAccess.domainRules.badgeBlacklist":"adminAccess.domainRules.badgeMainstream")})}function P5s({onDone:e}){const{t}
972=W(),n=DIs(),[a,s]=h.useState("blacklist"),[r,i]=h.useState(""),[c,d]=h.useState(""),m=async f=>{f.preventDefault();try{await n.mutateAsync({kind:a,domain:r.trim(),note:c.trim()||null}),ie.success(t("adminAccess.domainRules.added")),e()}catch(p){ie.error(zP(p))}};return o.jsxs("form",{className:"mt-4 space-y-4",onSubmit:m,children:[o.jsx(Ze,{label:t("adminAccess.domainRules.kindLabel"),value:a,options:[{value:"blacklist",label:t("adminAccess.domainRules.kindBlacklist")},{value:"mainstream",label:t("adminAccess.domainRules.kindMainstream")}],onChange:f=>s(f==="mainstream"?"mainstream":"blacklist")}),o.jsx(De,{label:t("adminAccess.domainRules.domainLabel"),children:o.jsx(ge,{value:r,onChange:f=>i(f.target.value),placeholder:t("adminAccess.domainRules.domainPlaceholder"),autoFocus:!0})}),o.jsx(De,{label:t("adminAccess.domainRules.noteLabel"),children:o.jsx(_o,{value:c,onChange:f=>d(f.target.value),rows:2,placeholder:t("adminAccess.domainRules.notePlaceholder")})}),o.jsxs("div",{className:"flex flex-col-reverse gap-2 min-[360px]:flex-row min-[360px]:justify-end",children:[o.jsx(K,{type:"button",variant:"ghost",className:"w-full min-[360px]:w-auto",onClick:e,disabled:n.isPending,children:t("common.cancel")}),o.jsx(K,{className:"w-full min-[360px]:w-auto",disabled:n.isPending||!r.trim(),children:t("adminAccess.domainRules.add")})]})]})}function _5s({entry:e,canWrite:t}){const{t:n}=W(),a=EIs(),s=MIs(),r=a.isPending||s.isPending,i=async()=>{if(await zt({message:n("adminAccess.domainRules.confirmRemove",{domain:e.domain}),variant:"destructive"}))try{await a.mutateAsync(e.publicId),ie.success(n("adminAccess.domainRules.removed"))}catch(m){ie.error(zP(m))}},c=async()=>{try{await s.mutateAsync(e.publicId),ie.success(n("adminAccess.domainRules.restored"))}catch(d){ie.error(zP(d))}};return e.status==="revoked"?o.jsx("div",{className:"flex w-full justify-end min-[360px]:w-auto",children:o.jsx(K,{variant:"ghost",size:"sm",className:"w-full min-[360px]:w-auto",onClick:c,disabled:!t||r,children:n("adminAccess.domainRules.restore")})}):o.jsx("div",{className:"flex w-full justify-end min-[360px]:w-auto",children:o.jsx(K,{variant:"ghost",size:"sm",className:"w-full min-[360px]:w-auto",onClick:i,disabled:!t||r,children:n("adminAccess.domainRules.remove")})})}function j5s(){const{t:e}=W(),t=Te(),n=qa(),a=Go(n.data?.admin??null,"ops.users.write"),{params:s,patch:r,remove:i}=Mt(),c=h.useMemo(()=>({q:Pe(s,"q"),kind:Pe(s,"kind","all"),status:Pe(s,"status","active"),page:ln(s,"page",1),size:ln(s,"size",g8)}),[s]),d=h.useDeferredValue(c.q),m=NIs({...d?{q:d}:{},kind:c.kind,status:c.status,page:String(c.page),limit:String(c.size)}),[f,p]=h.useState(!1);return o.jsxs(Vt,{title:e("adminAccess.domainRules.title"),description:e("adminAccess.domainRules.description"),action:o.jsx(K,{size:"sm",onClick:()=>p(!0),disabled:!a,children:e("adminAccess.domainRules.add")}),children:[o.jsxs("div",{className:"mb-4 grid gap-3 sm:grid-cols-[minmax(220px,1fr)_160px_160px_auto]",children:[o.jsxs("label",{className:"grid gap-1.5 text-xs font-medium",children:[e("adminAccess.domainRules.search"),o.jsx(ge,{value:c.q,onChange:y=>r({q:y.target.value,page:void 0}),placeholder:e("adminAccess.domainRules.searchPlaceholder")})]}),o.jsx(Ze,{label:e("adminAccess.domainRules.kindFilter"),value:c.kind,options:[{value:"all",label:e("adminAccess.domainRules.allKinds")},{value:"blacklist",label:e("adminAccess.domainRules.badgeBlacklist")},{value:"mainstream",label:e("adminAccess.domainRules.badgeMainstream")}],onChange:y=>r({kind:y||"all",page:void 0})}),o.jsx(Ze,{label:e("adminAccess.domainRules.statusFilter"),value:c.status,options:[{value:"active",label:e("adminAccess.domainRules.statusActive")},{value:"revoked",label:e("adminAccess.domainRules.statusRevoked")},{value:"all",label:e("adminAccess.domainRules.statusAll")}],onChange:y=>r({status:y||"active",page:void 0})}),o.jsx(nn,{show:Zt(s,h8,["page","size"]),onReset:()=>i(h8),className:"self-end"})]}),o.jsx(Pt,{label:e("adminAccess.domainRules.label"),rows:m.data?.items,isLoading:m.isLoading,error:m.error,emptyTitle:e("adminAccess.domainRules.empty"),pagination:{total:m.data?.total??0,page:c.page,pageSize:c.size,pageSizeOptions:[10,20,50,100],onPageChange:y=>r({page:y===1?void 0:String(y)},{replace:!1}),onPageSizeChange:y=>r({size:y===g8?void 0:String(y),page:void 0})},columns:[{header:e("adminAccess.domainRules.colDomain"),mobileValue:"break-all",cell:y=>
972o.jsx("span",{className:"font-[family-name:var(--font-mono)] text-sm",children:y.domain})},{header:e("adminAccess.domainRules.colNote"),mobileValue:"wrap",cell:y=>o.jsx("span",{className:"block max-w-[260px] whitespace-normal break-words [overflow-wrap:anywhere] md:truncate",children:y.note||o.jsx("span",{className:"text-[color:var(--muted-foreground)]",children:"-"})})},{header:e("adminAccess.domainRules.colKind"),cell:y=>o.jsx(R5s,{kind:y.kind})},{header:e("adminAccess.domainRules.status"),cell:y=>o.jsx(Oe,{value:y.status})},{header:e("adminAccess.domainRules.colAddedBy"),cell:y=>o.jsx("span",{className:"text-sm text-[color:var(--muted-foreground)]",children:y.createdByEmail||"-"})},{header:e("adminAccess.domainRules.colCreated"),cell:y=>t.dateTime(y.createdAt)},{header:e("adminAccess.domainRules.action"),sticky:"right",cell:y=>o.jsx(_5s,{entry:y,canWrite:a})}]}),o.jsx(Vn,{open:f,onOpenChange:y=>!y&&p(!1),children:o.jsxs(Nn,{side:"auto",className:"min-w-0",children:[o.jsxs(Pa,{children:[o.jsx(Rn,{children:e("adminAccess.domainRules.addTitle")}),o.jsx(ua,{children:e("adminAccess.domainRules.addDescription")})]}),o.jsx(P5s,{onDone:()=>p(!1)})]})})]})}const qP=["owner","admin","support"];function xx(e){return e instanceof rn?`${e.code}: ${e.message}`:String(e)}function N5s({onDone:e}){const{t}=W(),n=OIs(),[a,s]=h.useState(""),[r,i]=h.useState(""),[c,d]=h.useState("admin"),m=async f=>{f.preventDefault();try{await n.mutateAsync({email:a.trim(),name:r.trim(),role:c}),ie.success(t("adminStaff.added")),e()}catch(p){ie.error(xx(p))}};return o.jsxs("form",{className:"mt-4 space-y-4",onSubmit:m,children:[o.jsxs("label",{className:ti,children:[t("adminStaff.emailLabel"),o.jsx(ge,{type:"text",autoFocus:!0,value:a,onChange:f=>s(f.target.value),placeholder:t("adminStaff.emailPlaceholder")})]}),o.jsxs("label",{className:ti,children:[t("adminStaff.nameLabel"),o.jsx(ge,{type:"text",value:r,onChange:f=>i(f.target.value),placeholder:t("adminStaff.namePlaceholder")})]}),o.jsxs("label",{className:ti,children:[t("adminStaff.roleLabel"),o.jsx(ft,{value:c,onValueChange:f=>d(f),options:qP.map(f=>({value:f,label:t(`adminStaff.roles.${f}`)}))})]}),o.jsxs("div",{className:"flex flex-col-reverse gap-2 min-[360px]:flex-row min-[360px]:justify-end",children:[o.jsx(K,{type:"button",variant:"ghost",className:"w-full min-[360px]:w-auto",onClick:e,disabled:n.isPending,children:t("common.cancel")}),o.jsx(K,{className:"w-full min-[360px]:w-auto",disabled:n.isPending||!a.trim()||!r.trim(),children:t("adminStaff.add")})]})]})}function D5s(){const{t:e}=W(),t=qa(),n=IIs(),a=LIs(),s=UIs(),r=BIs(),[i,c]=h.useState(!1),d=n.data?.items??[],m=t.data?.admin?.publicId,f=d.filter(k=>k.role==="owner"&&k.status==="active").length,p=k=>k.publicId===m,y=k=>k.role==="owner"&&k.status==="active"&&f<=1,v=k=>p(k)||y(k),$=a.isPending||s.isPending||r.isPending,x=async(k,T)=>{if(T!==k.role)try{await a.mutateAsync({publicId:k.publicId,role:T}),ie.success(e("adminStaff.roleChanged"))}catch(R){ie.error(xx(R))}},w=async k=>{const T=k.status==="active"?"suspended":"active";try{await s.mutateAsync({publicId:k.publicId,status:T}),ie.success(e("adminStaff.statusChanged"))}catch(R){ie.error(xx(R))}},S=async k=>{if(await zt({message:e("adminStaff.confirmRemove",{email:k.email}),variant:"destructive"}))try{await r.mutateAsync(k.publicId),ie.success(e("adminStaff.removed"))}catch(R){ie.error(xx(R))}};return o.jsxs(Vt,{title:e("adminStaff.title"),description:e("adminStaff.description"),action:o.jsx(K,{size:"sm",className:"w-full sm:w-auto",onClick:()=>c(!0),children:e("adminStaff.add")}),children:[o.jsx(Pt,{label:e("adminStaff.label"),rows:d,isLoading:n.isLoading,error:n.error,emptyTitle:e("adminStaff.empty"),pagination:{},columns:[{header:e("adminStaff.email"),mobileValue:"break-all",cell:k=>o.jsxs("span",{className:"font-[family-name:var(--font-mono)] text-sm",children:[k.email,p(k)?o.jsxs("span",{className:"ml-1.5 text-xs text-[color:var(--muted-foreground)]",children:["(",e("adminStaff.self"),")"]}):null]})},{header:e("adminStaff.role"),mobileValue:"wrap",cell:k=>o.jsx(ft,{className:"h-9 min-w-0",menuClassName:"max-w-[calc(100vw-1rem)]",value:k.role,disabled:$||v(k),onValueChange:T=>x(k,T),options:qP.map(T=>({value:T,label:e(`adminStaff.roles.${T}`)}))})},{header:e("adminStaff.name"),cell:k=>k.name},{header:e("adminStaff.status"),cell:k=>o.jsx(Oe,{value:k.status})},{header:e("adminStaff.action"),sticky:"right",cell:k=>o.jsxs("div",{className:"grid w-full grid-cols-2 gap-1 min-[360px]:flex min-[360px]:w-auto min-[360px]:justify-end",children:[o.jsx(K,{variant:"ghost",size:"sm",className:"px-2",onClick:()=>w(k),disabled:$||v(k),children:k.status==="active"?e("adminStaff.suspend"):e("adminStaff.activate")}),o.jsx(K,{variant:"ghost",size:"sm",className:"px-2",onClick:()=>S(k),disabled:$||v(k),children:e("adminStaff.remove")})]})}],mobileCard:k=>o.jsxs(Dn,{className:"py-2",children:[o.jsxs("div",{className:"min-w-0",children:[o.jsxs("div",{className:"min-w-0 break-all font-[family-name:var
972(--font-mono)] text-xs font-medium leading-4",children:[k.email,p(k)?o.jsxs("span",{className:"ml-1.5 font-sans text-11 text-[color:var(--muted-foreground)]",children:["(",e("adminStaff.self"),")"]}):null]}),o.jsxs("div",{className:"mt-1 flex min-w-0 flex-wrap items-center gap-1.5 text-11 text-[color:var(--muted-foreground)]",children:[o.jsx("span",{className:"min-w-0 truncate",children:k.name}),o.jsx(Oe,{value:k.status})]})]}),o.jsxs("div",{className:"mt-2 grid min-w-0 grid-cols-[minmax(0,1fr)_auto] items-center gap-1.5",children:[o.jsx(ft,{className:"h-8 min-w-0 text-xs",menuClassName:"max-w-[calc(100vw-1rem)]",value:k.role,disabled:$||v(k),onValueChange:T=>x(k,T),options:qP.map(T=>({value:T,label:e(`adminStaff.roles.${T}`)}))}),o.jsxs("div",{className:"flex shrink-0 items-center gap-1",children:[o.jsx(K,{variant:"ghost",size:"sm",className:"h-8 px-2 text-xs",onClick:()=>w(k),disabled:$||v(k),children:k.status==="active"?e("adminStaff.suspend"):e("adminStaff.activate")}),o.jsx(K,{variant:"ghost",size:"sm",className:"h-8 px-2 text-xs",onClick:()=>S(k),disabled:$||v(k),children:e("adminStaff.remove")})]})]})]})}),o.jsx(Vn,{open:i,onOpenChange:c,children:o.jsxs(Nn,{side:"auto",className:"min-w-0",children:[o.jsxs(Pa,{children:[o.jsx(Rn,{children:e("adminStaff.newTitle")}),o.jsx(ua,{children:e("adminStaff.formDescription")})]}),i?o.jsx(N5s,{onDone:()=>c(!1)}):null]})})]})}function qb(e,t){if(!e)return!1;const n=Date.parse(e);return Number.isFinite(n)&&n>t}function M5s(e,t){if(!e)return!1;const n=Date.parse(e);return Number.isFinite(n)&&n<=t}function E5s(e,t=Date.now()){return e.status&&e.status!=="active"?{state:"disabled",tone:"muted"}:e.error_message&&e.error_message.trim()?{state:"error",tone:"destructive"}:M5s(e.expires_at,t)?{state:"expired",tone:"destructive"}:qb(e.overload_until,t)?{state:"overloaded",tone:"warning"}:qb(e.rate_limit_reset_at,t)||qb(e.rate_limited_at,t)?{state:"rate_limited",tone:"warning"}:qb(e.temp_unschedulable_until,t)||e.schedulable===!1?{state:"paused",tone:"warning"}:{state:"serving",tone:"success"}}function I5s(e,t){if(t==null||!(t>0))return null;const n=e/t,a=n>=1?"destructive":n>=.8?"warning":"success";return{pct:n,tone:a}}const Tr={sub2apiKeyPools:["ops","sub2api","key-pools"],sub2apiGroups:["ops","sub2api","groups"],sub2apiChannels:["ops","sub2api","channels"],sub2apiAccounts:["ops","sub2api","accounts"],sub2apiDashboardStats:["ops","sub2api","dashboard-stats"],sub2apiGroupsUsage:["ops","sub2api","groups-usage"]};function y8(e){return e.publicId??e.public_id??""}function Cd(e){return e.healthStatus??e.health_status??"unknown"}function wJ(){return Ue({queryKey:Tr.sub2apiKeyPools,queryFn:()=>ve.request("/ops/sub2api/key-pools")})}function kJ(){return Ue({queryKey:Tr.sub2apiGroups,queryFn:()=>ve.request("/ops/sub2api/groups")})}function CJ(){return Ue({queryKey:Tr.sub2apiChannels,queryFn:()=>ve.request("/ops/sub2api/channels")})}function SJ(){return Ue({queryKey:Tr.sub2apiAccounts,queryFn:()=>ve.request("/ops/sub2api/accounts")})}function O5s(){return Ue({queryKey:Tr.sub2apiDashboardStats,queryFn:()=>ve.request("/ops/sub2api/dashboard/stats")})}function L5s(){return Ue({queryKey:Tr.sub2apiGroupsUsage,queryFn:()=>ve.request("/ops/sub2api/groups/usage")})}function U5s(){const e=Re();return ke({mutationFn:t=>ve.request("/ops/sub2api/key-pools",{method:"POST",body:t,idempotent:!0}),onSuccess:()=>e.invalidateQueries({queryKey:Tr.sub2apiKeyPools})})}function B5s(){const e=Re();return ke({mutationFn:t=>ve.request(`/ops/sub2api/key-pools/${t}/test`,{method:"POST",idempotent:!0}),onSettled:()=>e.invalidateQueries({queryKey:Tr.sub2apiKeyPools})})}function F5s(){const e=Re();return ke({mutationFn:({publicId:t,plaintextKey:n})=>ve.request(`/ops/sub2api/key-pools/${t}/rotate`,{method:"POST",body:{plaintextKey:n},idempotent:!0}),onSuccess:()=>e.invalidateQueries({queryKey:Tr.sub2apiKeyPools})})}function z5s(){const e=Re();return ke({mutationFn:({publicId:t,...n})=>ve.request(`/ops/sub2api/key-pools/${t}`,{method:"PATCH",body:n,idempotent:!0}),onSuccess:()=>e.invalidateQueries({queryKey:Tr.sub2apiKeyPools})})}function q5s(){const e=Re();return ke({mutationFn:t=>ve.request(`/ops/sub2api/key-pools/${t}/resync-platform`,{method:"POST",idempotent:!0}),onSuccess:()=>e.invalidateQueries({queryKey:Tr.sub2apiKeyPools})})}function H5s(){return ke({mutationFn:()=>ve.request("/ops/sub2api/config-audit/run",{method:"POST",idempotent:!0})})}const pT=[["overview","/admin/upstream"],["keyPools","/admin/upstream/key-pools"],["groups","/admin/upstream/groups"],["channels","/admin/upstream/channels"],["accounts","/admin/upstream/accounts"]],AJ="http://localhost:28080/admin/dashboard",V5s=new Map(Sj.map(e=>[e.value,e.label]));function K5s(){const{t:e}=W(),t=No(),n=ls(),a=pT.map(([r,i])=>({value:i,label:e(`adminUpstream.tabs.${r}`)})),s=[...pT].reverse().find(([,r])=>r==="/admin/upstream"?n.pathname===r||n.pathname===`${r}/`:n.pathname.startsWith(r))?.[1]??"/admin/upstream";return o.jsxs(Vt,{title:e("adminUpstream.title"),description:e("adminUpstream.description"),action:o.jsx("a",{href:AJ,target:"_blank",rel:"noreferrer",children:o.jsxs(K,{size:"sm",variant:"outline",className:"w-full justify-center sm:w-auto",children:[o.jsx(dy,{className:"size-4"}),e("adminUpstream.openUpstreamAdmin")]})}),children:[o.jsxs(Ee,{className:"mb-4 p-1",children:[o.jsx("div",{className:"md:hidden",children:o.jsx(ft,{"aria-label":e("adminUpstream.tabsLabel"),value:s,options:a,onValueChange:r=>
972t(r),className:"h-9 text-sm"})}),o.jsx("nav",{"aria-label":e("adminUpstream.tabsLabel"),className:"hidden gap-1 overflow-x-auto md:flex",children:pT.map(([r,i])=>o.jsx(Yg,{to:i,end:i==="/admin/upstream",className:({isActive:c})=>X("shrink-0 rounded-md px-3 py-2 text-sm font-medium",c?"bg-[color:var(--accent)] text-[color:var(--foreground)]":"text-[color:var(--muted-foreground)] hover:text-[color:var(--foreground)]"),children:e(`adminUpstream.tabs.${r}`)},i))})]}),o.jsxs(IT,{children:[o.jsx(dt,{path:"/",element:o.jsx(G5s,{})}),o.jsx(dt,{path:"key-pools",element:o.jsx(X5s,{})}),o.jsx(dt,{path:"groups",element:o.jsx(Z5s,{})}),o.jsx(dt,{path:"channels",element:o.jsx(J5s,{})}),o.jsx(dt,{path:"accounts",element:o.jsx(tUs,{})}),o.jsx(dt,{path:"*",element:o.jsx(Gd,{to:".",replace:!0})})]})]})}function G5s(){const{t:e}=W(),t=Te(),n=O5s(),a=kJ(),s=CJ(),r=SJ(),i=wJ(),c=H5s(),d=a.data?.items??[],m=s.data?.items??[],f=r.data?.items??[],p=i.data?.items??[],y=d.filter(j=>j.status==="active").length,v=m.filter(j=>j.status==="active").length,$=p.filter(j=>Cd(j)==="down").length,x=n.isFetching&&!n.isPending,w=Number(n.data?.error_accounts??0),S=Number(n.data?.ratelimit_accounts??0),k=Number(n.data?.overload_accounts??0),T=w+S+k,R=T>0?e("adminUpstream.ops.accounts.breakdown",{normal:Vr(n.data?.normal_accounts,t.locale),error:w,ratelimit:S,overload:k}):e("adminUpstream.metrics.total",{value:Vr(n.data?.total_accounts??f.length,t.locale)}),_=e("adminUpstream.ops.freshness.updated",{ago:n.data?.stats_updated_at?cUs(n.data.stats_updated_at):e("adminUpstream.ops.freshness.never")}),P=T>0;return o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"grid gap-3 md:grid-cols-2 xl:grid-cols-4",children:[o.jsx(Hb,{label:e("adminUpstream.metrics.todayRequests"),value:o.jsx(Ho,{value:Number(n.data?.today_requests??0),format:j=>t.number(Math.round(j))}),detail:e("adminUpstream.metrics.total",{value:Vr(n.data?.total_requests,t.locale)}),refreshing:x}),o.jsx(Hb,{label:e("adminUpstream.metrics.upstreamCostToday"),value:o.jsx(Ho,{value:Number(n.data?.today_actual_cost??n.data?.today_cost??0),format:j=>cr(j)}),detail:`${e("adminUpstream.metrics.total",{value:cr(n.data?.total_cost)})} · ${e("adminUpstream.ops.tokensToday",{count:Vr(n.data?.today_tokens,t.locale)})}`,refreshing:x}),o.jsx(Hb,{label:e("adminUpstream.metrics.providerAccounts"),value:o.jsx(Ho,{value:Number(n.data?.normal_accounts??f.filter(j=>j.status==="active").length),format:j=>t.number(Math.round(j))}),detail:R,tone:P?"warning":"default",refreshing:x}),o.jsx(Hb,{label:e("adminUpstream.metrics.health"),value:n.data?.stats_stale?e("adminUpstream.metrics.stale"):$>0?e("adminUpstream.metrics.checkPools"):e("adminUpstream.metrics.online"),detail:`RPM ${Vr(n.data?.rpm,t.locale)} · TPM ${Vr(n.data?.tpm,t.locale)} · ${_}`,tone:n.data?.stats_stale||$>0?"warning":"success",refreshing:x})]}),n.error?o.jsx(Qt,{title:e("adminUpstream.errors.upstreamStatsFailed"),description:n.error.message,action:o.jsx(K,{onClick:()=>n.refetch(),children:e("adminUpstream.errors.retry")})}):null,o.jsxs(Ee,{className:"p-5",children:[o.jsxs("div",{className:"flex flex-col gap-4 lg:flex-row lg:items-start lg:justify-between",children:[o.jsxs("div",{className:"min-w-0",children:[o.jsx("h2",{className:"text-sm font-semibold",children:e("adminUpstream.audit.title")}),o.jsx("p",{className:"mt-1 max-w-3xl text-sm text-[color:var(--muted-foreground)]",children:e("adminUpstream.audit.description")})]}),o.jsxs(K,{onClick:()=>c.mutate(),disabled:c.isPending,className:"w-full justify-center sm:w-auto",children:[o.jsx(Vp,{className:"size-4"}),c.isPending?e("adminUpstream.audit.running"):e("adminUpstream.audit.run")]})]}),c.data?o.jsxs(o.Fragment,{children:[o.jsxs("div",{className:"mt-4 grid gap-3 lg:grid-cols-2 xl:grid-cols-4",children:[o.jsx(hg,{label:e("adminUpstream.audit.poolsChecked"),value:c.data.pools?.checkedCount??0}),o.jsx(hg,{label:e("adminUpstream.ops.audit.poolFindings"),value:(c.data.pools?.findings?.length??0)===0?e("adminUpstream.ops.audit.clean"):e("adminUpstream.ops.audit.findingsCount",{count:c.data.pools.findings.length})}),o.jsx(hg,{label:e("adminUpstream.audit.modelAudit"),value:c.data.models?.ok?e("adminUpstream.audit.ok"):e("adminUpstream.audit.needsReview")}),o.jsx(hg,{label:e("adminUpstream.audit.protocolCoverage",{defaultValue:"Protocol coverage"}),value:(c.data.protocolCoverage?.findings?.length??0)===0?c.data.protocolCoverage?.ok?e("adminUpstream.ops.audit.clean"):e("adminUpstream.audit.ring3Unchecked",{defaultValue:"ring3 not checked"}):e("adminUpstream.ops.audit.findingsCount",{count:c.data.protocolCoverage.findings.length})}),o.jsx(hg,{label:e("adminUpstream.audit.upstreamCoverage",{defaultValue:"Upstream coverage"}),value:c.data.upstreamCoverage?.ok?(c.data.upstreamCoverage?.findings?.length??0)===0?e("adminUpstream.ops.audit.clean"):e("adminUpstream.ops.audit.findingsCount",{count:c.data.upstreamCoverage.findings.length}):e("adminUpstream.audit.coverageUnchecked",{defaultValue:"accounts not readable"})})]}),o.jsx(Y5s,{findings:c.data.upstreamCoverage?.findings??[]}),c.data.protocolCoverage?.findings?.length?o.jsx("ul",{className:"mt-3 grid gap-1.5 text-13",children:c.data.protocolCoverage.findings.map((j,N)=>o.jsxs("li",{className:"flex flex-wrap items-baseline gap-2",children:[o.jsx("span",{className:`shrink-0 font-medium ${Q5s(j.kind)}`,children:j.kind}
972),o.jsxs("code",{className:"font-[family-name:var(--font-mono)] text-xs",children:[j.modelSlug," · ",j.protocol]}),o.jsx("span",{className:"text-[color:var(--muted-foreground)]",children:j.detail})]},`${j.modelSlug}-${j.protocol}-${N}`))}):null]}):null,c.error?o.jsx(Qt,{className:"mt-4",title:e("adminUpstream.errors.configAuditFailed"),description:c.error.message}):null]}),o.jsxs("div",{className:"grid gap-4 xl:grid-cols-[1fr_1.35fr]",children:[o.jsxs(Ee,{className:"p-5",children:[o.jsx("h2",{className:"text-sm font-semibold",children:e("adminUpstream.topology.title")}),o.jsxs("dl",{className:"mt-4 grid grid-cols-2 gap-3 text-sm",children:[o.jsx(Vb,{label:e("adminUpstream.topology.keyPools"),value:o.jsx(Ho,{value:p.length,format:j=>t.number(Math.round(j))})}),o.jsx(Vb,{label:e("adminUpstream.topology.activeGroups"),value:o.jsx(Ho,{value:y,format:j=>t.number(Math.round(j))})}),o.jsx(Vb,{label:e("adminUpstream.topology.activeChannels"),value:o.jsx(Ho,{value:v,format:j=>t.number(Math.round(j))})}),o.jsx(Vb,{label:e("adminUpstream.topology.accounts"),value:o.jsx(Ho,{value:f.length,format:j=>t.number(Math.round(j))})})]})]}),o.jsxs(Ee,{className:"p-5",children:[o.jsx("h2",{className:"text-sm font-semibold",children:e("adminUpstream.topology.editingBoundaryTitle")}),o.jsx("p",{className:"mt-2 text-sm leading-6 text-[color:var(--muted-foreground)]",children:e("adminUpstream.topology.editingBoundaryDescription")})]})]})]})}function W5s(e){return e==="no_servable_account"?"text-[color:var(--destructive)]":"text-[color:var(--warning-foreground)]"}function Y5s({findings:e}){const{t}=W();return e.length===0?null:o.jsx("ul",{className:"mt-3 grid gap-1.5 text-13",children:e.map(n=>o.jsxs("li",{className:"flex flex-wrap items-baseline gap-2",children:[o.jsx("span",{className:`shrink-0 font-medium ${W5s(n.kind)}`,children:n.kind}),o.jsxs("code",{className:"font-[family-name:var(--font-mono)] text-xs",children:[n.fullSlug," → ",n.upstreamId," · ",n.poolCode]}),o.jsx("span",{className:"text-[color:var(--muted-foreground)]",children:n.accounts.length?t("adminUpstream.audit.coverageOnlyAccount",{defaultValue:"only {{accounts}}",accounts:n.accounts.join(", ")}):t("adminUpstream.audit.coverageNoAccount",{defaultValue:"no schedulable account maps this upstream id"})})]},`${n.fullSlug}-${n.poolCode}`))})}function Q5s(e){return e==="missing_in_pool"||e==="pool_unavailable"?"text-[color:var(--destructive)]":e==="missing_sub2api_switch"?"text-[color:var(--warning-foreground)]":"text-[color:var(--muted-foreground)]"}function X5s(){const{t:e}=W(),t=Te(),[n,a]=h.useState("default"),[s,r]=h.useState(()=>e("adminUpstream.pools.defaultPool")),[i,c]=h.useState("false"),[d,m]=h.useState(""),[f,p]=h.useState(""),[y,v]=h.useState(""),$=wJ(),x=U5s(),w=hN($.data?.items??[]),S=B5s(),k=F5s(),T=q5s(),R=z5s(),[_,P]=h.useState(null),[j,N]=h.useState([]),I=E=>N(L=>L.includes(E)?L.filter(O=>O!==E):[...L,E]);function z(E){E.preventDefault(),x.mutate({code:n,name:s,plaintextKey:d,isDefault:i==="true"}),m("")}return o.jsxs("div",{className:"space-y-4",children:[o.jsxs(Ee,{className:"p-4",children:[o.jsxs("div",{className:"mb-3",children:[o.jsx("h2",{className:"text-sm font-semibold",children:e("adminUpstream.pools.title")}),o.jsx("p",{className:"mt-1 text-sm text-[color:var(--muted-foreground)]",children:e("adminUpstream.pools.description")})]}),o.jsxs("form",{onSubmit:z,className:"grid gap-3 md:grid-cols-[1fr_1fr_160px_1fr_auto]",children:[o.jsx(ge,{"aria-label":e("adminUpstream.pools.poolCode"),value:n,onChange:E=>a(E.target.value)}),o.jsx(ge,{"aria-label":e("adminUpstream.pools.poolName"),value:s,onChange:E=>r(E.target.value)}),o.jsxs(ft,{"aria-label":e("adminUpstream.pools.defaultPool"),value:i,onChange:E=>c(E.target.value),children:[o.jsx("option",{value:"false",children:e("adminUpstream.pools.notDefault")}),o.jsx("option",{value:"true",children:e("adminUpstream.pools.defaultPool")})]}),o.jsx(ge,{"aria-label":e("adminUpstream.pools.plaintextKey"),type:"password",value:d,onChange:E=>m(E.target.value)}),o.jsxs(K,{disabled:x.isPending||!d,className:"justify-center",children:[o.jsx(wr,{className:"size-4"}),e("adminUpstream.pools.create")]})]})]}),$.error?o.jsx(Qt,{title:e("adminUpstream.errors.keyPoolsLoadFailed"),description:$.error.message,action:o.jsx(K,{onClick:()=>$.refetch(),children:e("adminUpstream.errors.retry")})}):null,x.error?o.jsx(Qt,{title:e("adminUpstream.errors.createKeyPoolFailed"),description:x.error.message}):null,o.jsxs(Ee,{className:"overflow-hidden",children:[o.jsx("div",{className:"hidden md:block",children:o.jsxs(Ua,{"aria-label":e("adminUpstream.pools.label"),className:"min-w-[1160px]",children:[o.jsx(Po,{children:o.jsxs(qt,{children:[o.jsx(Ie,{children:e("adminUpstream.pools.pool")}),o.jsx(Ie,{children:e("adminUpstream.pools.protocols")}),o.jsx(Ie,{children:e("adminUpstream.pools.models")}),o.jsx(Ie,{children:e("adminUpstream.pools.routingGroup")}),o.jsx(Ie,{children:e("adminUpstream.pools.status")}),o.jsx(Ie,{children:e("adminUpstream.pools.health")}),o.jsx(Ie,{children:e("adminUpstream.pools.key")}),o.jsx(Ie,{children:e("adminUpstream.pools.lastCheck")}),o.jsx(Ie,{children:e("adminUpstream.pools.action")})]})}),o.jsx(Ba,{children:w.pageRows.map(E=>{const L=y8(E);return o.jsxs(qt,{children:[o.jsxs(Me,{children:[o.jsx("div",{className:"font-medium",children:E.name}),o.jsxs("div",{className:"mt-1 text-xs text-[color:var(--muted-foreground)]",children:[E.code," · ",e("adminUpstream.pools.priority",{value:E.priority??"-"}),E.is_default?` · ${e("adminUpstream.pools.default")}`:""]})]}),o.jsx(Me,{children:o.jsx(yc,{values:_m(E.protocols),formatValue:v8})}),o.jsx(Me,{children:o.jsx(yc,{values:_m(E.model_patterns),max:3})}),o.jsx(Me,{children:E.sub2api_group_name??(E.sub2api_group_id?`#${E.sub2api_group_id}`:"-")}),o.jsx(Me,{children:o.jsx(Oe,{value:E.status??"unknown"})}),o.jsxs(Me,{children:[o.jsx(Oe,{value:Cd(E)}
972),E.last_error_message&&(Cd(E)==="degraded"||Cd(E)==="down")?o.jsxs("div",{className:"mt-1 max-w-[220px] truncate text-xs text-[color:var(--destructive)]",title:E.last_error_message,children:[e("adminUpstream.ops.pools.lastError"),": ",E.last_error_message]}):null]}),o.jsx(Me,{children:o.jsxs("code",{className:"text-xs",children:[E.key_prefix??e("adminUpstream.pools.secret"),"...",E.key_suffix??e("adminUpstream.pools.hidden")]})}),o.jsx(Me,{children:Dc(E.last_health_check_at,t.locale)}),o.jsx(Me,{children:o.jsxs("div",{className:"flex flex-wrap gap-2",children:[o.jsxs(K,{size:"sm",variant:"secondary",onClick:()=>S.mutate(L),children:[o.jsx(R9,{className:"size-3.5"}),e("adminUpstream.pools.test")]}),o.jsxs(K,{size:"sm",variant:"outline",onClick:()=>p(L),children:[o.jsx(P9,{className:"size-3.5"}),e("adminUpstream.pools.rotate")]}),o.jsxs(K,{size:"sm",variant:"ghost",onClick:()=>T.mutate(L),disabled:T.isPending,children:[o.jsx(Kp,{className:"size-3.5"}),e("adminUpstream.ops.pools.resync")]}),o.jsx(K,{size:"sm",variant:"ghost",onClick:()=>{P(L),N(_m(E.protocols))},children:e("adminUpstream.pools.editProtocols",{defaultValue:"Edit protocols"})})]})})]},L)})})]})}),o.jsx("div",{className:"grid md:hidden",children:w.pageRows.map(E=>{const L=y8(E);return o.jsxs(Dn,{children:[o.jsx(kr,{title:E.name,meta:`${E.code} · ${e("adminUpstream.pools.priority",{value:E.priority??"-"})}${E.is_default?` · ${e("adminUpstream.pools.default")}`:""}`,trailing:o.jsxs(o.Fragment,{children:[o.jsx(Oe,{value:E.status??"unknown"}),o.jsx(nUs,{onTest:()=>S.mutate(L),onRotate:()=>p(L),onResync:()=>T.mutate(L),resyncing:T.isPending,onEditProtocols:()=>{P(L),N(_m(E.protocols))}})]})}),o.jsxs(Ha,{children:[o.jsx(Qe,{label:e("adminUpstream.pools.protocols"),children:o.jsx(yc,{values:_m(E.protocols),formatValue:v8})}),o.jsx(Qe,{label:e("adminUpstream.pools.models"),align:"right",children:o.jsx(yc,{values:_m(E.model_patterns),max:3})}),o.jsx(Qe,{label:e("adminUpstream.pools.routingGroup"),children:E.sub2api_group_name??(E.sub2api_group_id?`#${E.sub2api_group_id}`:"-")}),o.jsxs(Qe,{label:e("adminUpstream.pools.health"),align:"right",children:[o.jsx(Oe,{value:Cd(E)}),E.last_error_message&&(Cd(E)==="degraded"||Cd(E)==="down")?o.jsxs("span",{className:"mt-1 block break-words text-xs text-[color:var(--destructive)]",children:[e("adminUpstream.ops.pools.lastError"),": ",E.last_error_message]}):null]}),o.jsx(Qe,{label:e("adminUpstream.pools.key"),children:o.jsxs("code",{className:"text-xs",children:[E.key_prefix??e("adminUpstream.pools.secret"),"...",E.key_suffix??e("adminUpstream.pools.hidden")]})}),o.jsx(Qe,{label:e("adminUpstream.pools.lastCheck"),align:"right",children:Dc(E.last_health_check_at,t.locale)})]})]},L)})}),!$.isLoading&&($.data?.items??[]).length===0?o.jsx(Ot,{title:e("adminUpstream.pools.empty"),description:e("adminUpstream.pools.emptyDescription")}):($.data?.items??[]).length>0?o.jsx(V0,{total:w.total,page:w.page,pageSize:w.pageSize,onPageChange:w.onPageChange,onPageSizeChange:w.onPageSizeChange}):null]}),f?o.jsx(Ee,{className:"p-4",children:o.jsxs("form",{onSubmit:E=>{E.preventDefault(),k.mutate({publicId:f,plaintextKey:y}),v(""),p("")},className:"grid gap-3 sm:grid-cols-[minmax(0,1fr)_auto]",children:[o.jsx(ge,{"aria-label":e("adminUpstream.pools.newPlaintextKey"),type:"password",value:y,onChange:E=>v(E.target.value)}),o.jsx(K,{disabled:k.isPending||!y,children:e("adminUpstream.pools.confirmRotate")})]})}):null,_?o.jsxs(Ee,{className:"p-4",children:[o.jsx("div",{className:"mb-2 text-sm font-medium",children:e("adminUpstream.pools.editProtocolsTitle",{defaultValue:"Edit protocols (replace)"})}),o.jsxs("form",{onSubmit:E=>{E.preventDefault(),R.mutate({publicId:_,protocols:j},{onSuccess:()=>P(null)})},className:"grid gap-3",children:[o.jsx("div",{className:"flex flex-wrap gap-3",children:Sj.map(E=>o.jsxs("label",{className:"flex items-center gap-1.5 text-13",children:[o.jsx("input",{type:"checkbox",checked:j.includes(E.value),onChange:()=>I(E.value)}),E.label]},E.value))}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(K,{type:"submit",size:"sm",disabled:R.isPending,children:e("adminUpstream.pools.confirmEditProtocols",{defaultValue:"Save protocols"})}),o.jsx(K,{type:"button",size:"sm",variant:"ghost",onClick:()=>P(null),children:e("adminUpstream.pools.cancelEditProtocols",{defaultValue:"Cancel"})})]}),R.error?o.jsxs("div",{className:"grid gap-2",children:[o.jsx(Qt,{title:e("adminUpstream.errors.keyPoolPatchFailed",{defaultValue:"Protocol patch failed"}),description:R.error.message}),o.jsx(K,{type:"button",size:"sm",variant:"outline",onClick:()=>R.mutate({publicId:_,protocols:j,force:!0},{onSuccess:()=>P(null)}),children:e("adminUpstream.pools.forceEditProtocols",{defaultValue:"Force save (override routing check)"})})]}):null]})]}):null,S.error?o.jsx(Qt,{title:e("adminUpstream.errors.keyPoolTestFailed"),description:S.error.message}):null,k.error?o.jsx(Qt,{title:e("adminUpstream.errors.keyPoolRotateFailed"),description:k.error.message}):null]})}function Z5s(){const{t:e}=W(),t=Te(),n=kJ(),a=L5s(),s=n.data?.items??[],r=new Map((a.data?.items??[]).map(i=>[i.groupId,i]));return o.jsxs(kN,{title:e("adminUpstream.readonly.groupsTitle"),description:e("adminUpstream.readonly.groupsDescription"),error:n.error,onRetry:()=>n.refetch(),children:[o.jsx("div",{className:"hidden md:block",children:o.jsxs(Ua,{"aria-label":e("adminUpstream.readonly.groupsLabel"),className:"min-w-[1040px]",children:[o.jsx(Po,{children:o.jsxs(qt,{children:[o.jsx(Ie,{children:e("adminUpstream.table.group")}),o.jsx(Ie,{children:e("adminUpstream.table.platform")}),o.jsx(Ie,{children:e("adminUpstream.table.rate")}),o.jsx(Ie,{children:e("adminUpstream.table.rpm")}),o.jsx(Ie,{children:e("adminUpstream.table.accounts")}),o.jsx(Ie,{children:e("adminUpstream.table.limits")}),o.jsx(Ie,{children:e("adminUpstream.ops.quota.label")}),o.jsx(Ie,{children:e("adminUpstream.table.status")}),o.jsx(Ie,{children:e("adminUpstream.table.updated")})]})}),o.jsx(Ba,{children:s.map(i=>o.jsxs(qt,{children:[o.jsxs(Me,{children:[o.jsx("div",{className:"font-medium",children:i.name}),o.jsx("div",{className:"mt-1 max-w-[320px] truncate text-xs text-[color:var(--muted-foreground)]",children:i.description||e("adminUpstream.common.noDescription")})]}),o.jsx(Me,{children:ct(i.platform)}),o.jsxs(Me,{children:[i.rate_multiplier??1,"x"]}),o.jsx(Me,{children:i.rpm_limit||e("adminUpstream.common.unlimited")}),o.jsxs(Me,{children:[Vr(i.active_account_count,t.locale)," / ",Vr(i.account_count,t.locale)]}),o.jsx(Me,{children:w8(i,e("adminUpstream.common.none"))}),o.jsx(Me,{children:o.jsx(x8,{usage:r.get(i.id)})}),o.jsx(Me,{children:o.jsx(Oe,{value:i.status??"unknown"})}),o.jsx(Me,{children:Dc(i.updated_at,t.locale)})]},i.id))})]})}),o.jsx("div",{className:"grid md:hidden",children:s.map(i=>o.jsxs(Dn,{children:[o.jsx(kr,{title:i.name,meta:i.description||e("adminUpstream.common.noDescription"),trailing:o.jsx(Oe,{value:i.status??"unknown"})}),o.jsxs(Ha,{children:[o.jsx(Qe,{label:e("adminUpstream.table.platform"),children:ct(i.platform)}),o.jsxs(Qe,{label:e("adminUpstream.table.rate"),align:"right",children:[i.rate_multiplier??1,"x"]}),o.jsx(Qe,{label:e("adminUpstream.table.rpm"),children:i.rpm_limit||e("adminUpstream.common.unlimited")}),o.jsxs(Qe,{label:e("adminUpstream.table.accounts"),align:"right",children:[Vr(i.active_account_count,t.locale)," / ",Vr(i.account_count,t.locale)]}),o.jsx(Qe,{label:e("adminUpstream.table.limits"),children:w8(i,e("adminUpstream.common.none"))}),o.jsx(Qe,{label:e("adminUpstream.ops.quota.label"),align:"right",children:o.jsx(x8,{usage:r.get(i.id)})}),o.jsx(Qe,{label:e("adminUpstream.table.updated"),children:Dc(i.updated_at,t.locale)})]})]},i.id))}),n.isLoading?o.jsx(CN,{}):s.length===0?o.jsx(Ot,{title:e("adminUpstream.readonly.groupsEmpty"),description:e("adminUpstream.readonly.groupsEmptyDescription")}):null]})}function J5s(){const{t:e}=W(),t=Te(),n=CJ(),a=n.data?.items??[];return o.jsxs(kN,{title:e("adminUpstream.readonly.channelsTitle"),description:e("adminUpstream.readonly.channelsDescription"),error:n.error,onRetry:()=>n.refetch(),children:[o.jsx("div",{className:"hidden md:block",children:o.jsxs(Ua,{"aria-label":e("adminUpstream.readonly.channelsLabel"),className:"min-w-[980px]",children:[o.jsx(Po,{children:o.jsxs(qt,{children:[o.jsx(Ie,{children:e("adminUpstream.table.channel")}),o.jsx(Ie,{children:e("adminUpstream.table.groups")}),o.jsx(Ie,{children:e("adminUpstream.table.billingSource")}),o.jsx(Ie,{children:e("adminUpstream.table.mappings")}),o.jsx(Ie,{children:e("adminUpstream.table.pricing")}),o.jsx(Ie,{children:e("adminUpstream.table.status")}),o.jsx(Ie,{children:e("adminUpstream.table.updated")})]})}),o.jsx(Ba,{children:a.map(s=>o.jsxs(qt,{children:[o.jsxs(Me,{children:[o.jsx("div",{className:"font-medium",children:s.name}),o.jsx("div",{className:"mt-1 max-w-[320px] truncate text-xs text-[color:var(--muted-foreground)]",children:s.description||e("adminUpstream.common.noDescription")})]}),o.jsx(Me,{children:o.jsx(yc,{values:(s.group_ids??[]).map(r=>`#${r}`)})}),o.jsx(Me,{children:TJ(s.billing_model_source,e)}),o.jsx(Me,{children:o.jsx(iUs,{channel:s})}),o.jsx(Me,{children:o.jsx(lUs,{channel:s})}),o.jsx(Me,{children:o.jsx(Oe,{value:s.status??"unknown"})}),o.jsx(Me,{children:Dc(s.updated_at,t.locale)})]},s.id))})]})}),o.jsx("div",{className:"grid md:hidden",children:a.map(s=>o.jsx(eUs,{channel:s,locale:t.locale},s.id))}),n.isLoading?o.jsx(CN,{}):a.length===0?o.jsx(Ot,{title:e("adminUpstream.readonly.channelsEmpty"),description:e("adminUpstream.readonly.channelsEmptyDescription")}):null]})}function eUs({channel:e,locale:t}){const{t:n}=W(),a=aUs(e),s=oUs(e),r=e.description||n("adminUpstream.common.noDescription"),i=sUs(e),c=rUs(e,n);return o.jsxs(Dn,{children:[o.jsx(kr,{title:e.name,meta:r,trailing:o.jsx(Oe,{value:e.status??"unknown"})}),o.jsxs(Ha,{children:[o.jsx(Qe,{label:n("adminUpstream.table.groups"),children:o.jsx("span",{className:"tabular-nums",children:(e.group_ids??[]).length?(e.group_ids??[]).map(d=>`#${d}`).join(", "):"-"})}),o.jsx(Qe,{label:n("adminUpstream.table.billingSource"),align:"right",children:TJ(e.billing_model_source,n)}),o.jsx(Qe,{label:n("adminUpstream.table.mappings"),className:"col-span-2",children:i?o.jsxs("span",{className:"block min-w-0 break-words font-mono leading-5",children:[i,a>1?o.jsxs("span",{className:"ml-1 font-sans text-[color:var(--muted-foreground)]",children:["+",a-1]}):null]}):"-"}),o.jsx(Qe,{label:n("adminUpstream.table.pricing"),className:"col-span-2",children:c?o.jsxs("span",{className:"block min-w-0 break-words leading-5",children:[c,s>1?o.jsxs("span",{className:"ml-1 text-[color:var(--muted-foreground)]",children:["+",s-1]}):null]}):n("adminUpstream.common.noPricingRules")}),o.jsx(Qe,{label:n("adminUpstream.table.updated"),children:Dc(e.updated_at,t)})]})]})}function tUs(){const{t:e}=W(),t=Te(),n=SJ(),a=n.data?.items??[];return o.jsxs(kN,{title:e("adminUpstream.readonly.accountsTitle"),description:e("adminUpstream.readonly.accountsDescription"),error:n.error,onRetry:()=>n.refetch(),children:[o.jsx("div",{className:"hidden md:block",children:o.jsxs(Ua,{"aria-label":e("adminUpstream.readonly.accountsLabel"),className:"min-w-[1080px]",children:[o.jsx(Po,{children:o.jsxs(qt,{children:[o.jsx(Ie,{children:e("adminUpstream.table.account")}
972),o.jsx(Ie,{children:e("adminUpstream.table.platform")}),o.jsx(Ie,{children:e("adminUpstream.table.groups")}),o.jsx(Ie,{children:e("adminUpstream.table.baseUrl")}),o.jsx(Ie,{children:e("adminUpstream.table.capacity")}),o.jsx(Ie,{children:e("adminUpstream.ops.serving.label")}),o.jsx(Ie,{children:e("adminUpstream.table.status")}),o.jsx(Ie,{children:e("adminUpstream.table.lastUsed")})]})}),o.jsx(Ba,{children:a.map(s=>o.jsxs(qt,{children:[o.jsxs(Me,{children:[o.jsx("div",{className:"font-medium",children:s.name}),o.jsxs("div",{className:"mt-1 text-xs text-[color:var(--muted-foreground)]",children:[s.type??e("adminUpstream.common.unknown")," · ",e("adminUpstream.common.priority")," ",s.priority??"-"]}),s.error_message?o.jsx("div",{className:"mt-1 max-w-[320px] truncate text-xs text-[color:var(--destructive)]",children:s.error_message}):null]}),o.jsx(Me,{children:ct(s.platform)}),o.jsx(Me,{children:o.jsx($8,{account:s})}),o.jsx(Me,{children:o.jsx("code",{className:"text-xs",children:s.credentials?.base_url??"-"})}),o.jsxs(Me,{children:[o.jsxs("div",{className:"text-sm",children:["C ",s.concurrency??"-"," · ",s.rate_multiplier??1,"x"]}),o.jsx("div",{className:"mt-1 text-xs text-[color:var(--muted-foreground)]",children:s.schedulable?e("adminUpstream.common.schedulable"):e("adminUpstream.common.notSchedulable")})]}),o.jsx(Me,{children:o.jsx(b8,{account:s})}),o.jsx(Me,{children:o.jsx(Oe,{value:s.status??"unknown"})}),o.jsx(Me,{children:Dc(s.last_used_at,t.locale)})]},s.id))})]})}),o.jsx("div",{className:"grid md:hidden",children:a.map(s=>o.jsxs(Dn,{children:[o.jsx(kr,{title:s.name,meta:`${s.type??e("adminUpstream.common.unknown")} · ${e("adminUpstream.common.priority")} ${s.priority??"-"}`,trailing:o.jsx(Oe,{value:s.status??"unknown"})}),s.error_message?o.jsx("div",{className:"mt-2 break-words text-xs text-[color:var(--destructive)]",children:s.error_message}):null,o.jsxs(Ha,{children:[o.jsx(Qe,{label:e("adminUpstream.table.platform"),children:ct(s.platform)}),o.jsx(Qe,{label:e("adminUpstream.table.groups"),align:"right",children:o.jsx($8,{account:s})}),o.jsxs(Qe,{label:e("adminUpstream.table.capacity"),children:[o.jsxs("div",{children:["C ",s.concurrency??"-"," · ",s.rate_multiplier??1,"x"]}),o.jsx("div",{className:"mt-1 text-xs text-[color:var(--muted-foreground)]",children:s.schedulable?e("adminUpstream.common.schedulable"):e("adminUpstream.common.notSchedulable")})]}),o.jsx(Qe,{label:e("adminUpstream.ops.serving.label"),align:"right",children:o.jsx(b8,{account:s})}),o.jsx(Qe,{label:e("adminUpstream.table.baseUrl"),className:"col-span-2",children:o.jsx("code",{className:"block truncate text-xs",children:s.credentials?.base_url??"-"})}),o.jsx(Qe,{label:e("adminUpstream.table.lastUsed"),align:"right",children:Dc(s.last_used_at,t.locale)})]})]},s.id))}),n.isLoading?o.jsx(CN,{}):a.length===0?o.jsx(Ot,{title:e("adminUpstream.readonly.accountsEmpty"),description:e("adminUpstream.readonly.accountsEmptyDescription")}):null]})}function kN({title:e,description:t,error:n,onRetry:a,children:s}){const{t:r}=W();return o.jsxs("div",{className:"space-y-4",children:[o.jsx(Ee,{className:"p-3 sm:p-5",children:o.jsxs("div",{className:"flex flex-col gap-2 md:flex-row md:items-center md:justify-between",children:[o.jsxs("div",{children:[o.jsx("h2",{className:"text-sm font-semibold",children:e}),o.jsx("p",{className:"mt-1 line-clamp-1 text-xs text-[color:var(--muted-foreground)] sm:line-clamp-none sm:text-sm",children:t})]}),o.jsx("a",{href:AJ,target:"_blank",rel:"noreferrer",className:"text-sm font-medium text-[color:var(--primary)] hover:underline",children:r("adminUpstream.readonly.editUpstreamConfig")})]})}),n?o.jsx(Qt,{title:r("adminUpstream.errors.failedLoad",{title:e}),description:n.message,action:o.jsx(K,{onClick:a,children:r("adminUpstream.errors.retry")})}):null,o.jsx(Ee,{className:"overflow-hidden",children:s})]})}function Hb({label:e,value:t,detail:n,tone:a="default",refreshing:s}){const r=a==="success"?"text-[color:var(--success)]":a==="warning"?"text-[color:var(--warning)]":"text-[color:var(--foreground)]";return o.jsxs(Ee,{className:X("p-3 transition-opacity duration-150 motion-reduce:transition-none sm:p-4",s&&"opacity-80"),"aria-busy":s?!0:void 0,children:[o.jsx("div",{className:"text-xs font-medium uppercase tracking-normal text-[color:var(--muted-foreground)]",children:e}),o.jsx("div",{className:X("mt-1.5 text-xl font-semibold tabular-nums sm:mt-2 sm:text-2xl",r),children:t??"-"}),n?o.jsx("div",{className:"mt-1 text-11 leading-4 text-[color:var(--muted-foreground)] sm:text-xs",children:n}):null]})}function nUs({onTest:e,onRotate:t,onResync:n,onEditProtocols:a,resyncing:s}){const{t:r}=W();return o.jsxs(zp,{children:[o.jsx(qp,{asChild:!0,children:o.jsx(K,{type:"button",variant:"ghost",size:"icon","aria-label":r("adminUpstream.pools.action"),className:"size-8",children:o.jsx(Mve,{className:"size-4"})})}),o.jsxs(xu,{align:"end",className:"w-44",children:[o.jsxs(La,{onSelect:e,children:[o.jsx(R9,{className:"size-3.5"}),r("adminUpstream.pools.test")]}),o.jsxs(La,{onSelect:t,children:[o.jsx(P9,{className:"size-3.5"}),r("adminUpstream.pools.rotate")]}),o.jsxs(La,{disabled:s,onSelect:n,children:[o.jsx(Kp,{className:"size-3.5"}),r("adminUpstream.ops.pools.resync")]}),o.jsx(La,{onSelect:a,children:r("adminUpstream.pools.editProtocols")})]})]})}function hg({label:e,value:t}){return o.jsxs("div",{className:"rounded-md border border-[color:var(--border)] bg-[color:var(--muted)]/40 p-3",children:[o.jsx("div",{className:"text-xs text-[color:var(--muted-foreground)]",children:e}),o.jsx("div",{className:"mt-1 text-sm font-medium tabular-nums",children:t})]})}function Vb({label:e,value:t}){return o.jsxs("div",{className:"rounded-md border border-[color:var(--border)] p-3",children:[o.jsx("dt",{className:"text-xs text-[color:var(--muted-foreground)]",children:e}),o.jsx("dd",{className:"mt-1 text-lg font-semibold tabular-nums",children:t})]})}function yc({values:e,max:t=4,formatValue:n=a=>a}){const a=e.slice(0,t),s=e.length-a.length;return e.length===0?o.jsx("span",{className:"text-[color:var(--muted-foreground)]",children:"-"}):o.jsxs("div",{className:"flex max-w-[280px] flex-wrap gap-1",children:[a.map(r=>o.jsx("span",{className:"inline-flex h-6 items-center rounded border border-[color:var(--border)] px-2 text-xs tabular-nums",children:n(r)},r)),s>0?o.jsxs("span",{className:"inline-flex h-6 items-center rounded border border-[color:var(--border)] px-2 text-xs text-[color:var(--muted-foreground)]",children:["+",s]}):null]})}function aUs(e){return Object.values(e.model_mapping??{}).reduce((t,n)=>t+Object.keys(n??{}).length,0)}function oUs(e){return(e.model_pricing??[]).reduce((t,n)=>t+(n.models?.length??0),0)}function sUs(e){for(const[t,n]of Object.entries(e.model_mapping??{})){const a=Object.entries(n??{})[0];if(a)return`${ct(t)}: ${a[0]} -> ${a[1]}`}return null}function rUs(e,t){const n=e.model_pricing?.[0],a=n?.models?.[0];if(!n||!a)return null;const s=[n.input_price!=null?`in ${cr(n.input_price)}`:"",n.output_price!=null?`out ${cr(n.output_price)}`:"",n.per_request_price!=null?`req ${cr(n.per_request_price)}`:"",n.image_output_price!=null?`img ${cr(n.image_output_price)}
972`:""].filter(Boolean),r=s.length?` · ${s.join(" / ")}`:"";return`${ct(n.platform??"any")} · ${a}${r||` · ${t("adminUpstream.common.modelsCount",{count:n.models?.length??0})}`}`}function v8(e){return V5s.get(e)??ct(e)}function iUs({channel:e}){const t=Object.entries(e.model_mapping??{}).flatMap(([n,a])=>Object.entries(a??{}).map(([s,r])=>`${ct(n)}: ${s} -> ${r}`));return o.jsx(yc,{values:t,max:2})}function lUs({channel:e}){const{t}=W(),n=e.model_pricing??[];if(n.length===0)return o.jsx("span",{className:"text-[color:var(--muted-foreground)]",children:t("adminUpstream.common.noPricingRules")});const a=n.map(s=>`${ct(s.platform??"any")} · ${ct(s.billing_mode??"token")} · ${t("adminUpstream.common.modelsCount",{count:(s.models??[]).length})}`);return o.jsx(yc,{values:a,max:2})}function b8({account:e}){const{t}=W(),{state:n,tone:a}=E5s(e);return o.jsx(jo,{tone:a,children:t(`adminUpstream.ops.serving.${n}`)})}function x8({usage:e}){const{t}=W();if(!e)return o.jsx("span",{className:"text-[color:var(--muted-foreground)]",children:"-"});const n=I5s(e.todaySpendUsd,e.dailyLimitUsd),a=n?.tone==="destructive"?"text-[color:var(--destructive)]":n?.tone==="warning"?"text-[color:var(--warning)]":"text-[color:var(--muted-foreground)]";return o.jsxs("div",{className:"min-w-[110px]",children:[o.jsx("div",{className:"text-sm tabular-nums",children:cr(e.todaySpendUsd)}),n?o.jsxs(o.Fragment,{children:[o.jsx(iy,{value:Math.min(100,Math.round(n.pct*100)),className:"mt-1 h-1.5"}),o.jsxs("div",{className:X("mt-0.5 text-xs tabular-nums",a),children:[Math.round(n.pct*100),"% · ",cr(e.dailyLimitUsd)]})]}):o.jsx("div",{className:"mt-0.5 text-xs text-[color:var(--muted-foreground)]",children:t("adminUpstream.ops.quota.noLimit")})]})}function $8({account:e}){const t=(e.account_groups??[]).map(n=>n.group?.name??(n.group_id?`#${n.group_id}`:"")).filter(Boolean);return o.jsx(yc,{values:t,max:3})}function CN(){const{t:e}=W();return o.jsx("div",{className:"border-t border-[color:var(--border)] p-4 text-sm text-[color:var(--muted-foreground)]",children:e("adminUpstream.common.loading")})}function _m(e){if(Array.isArray(e))return e.map(String);if(typeof e=="string")try{const t=JSON.parse(e);if(Array.isArray(t))return t.map(String)}catch{return e?[e]:[]}return[]}function Dc(e,t){return e?HV(e,t):"-"}function cUs(e){const t=Date.parse(e);if(!Number.isFinite(t))return"-";const n=Math.max(0,Math.round((Date.now()-t)/1e3));if(n<60)return`${n}s`;const a=Math.round(n/60);if(a<60)return`${a}m`;const s=Math.round(a/60);return s<24?`${s}h`:`${Math.round(s/24)}d`}function Vr(e,t){const n=Number(e??0);return Number.isFinite(n)?new Intl.NumberFormat(t).format(n):"-"}function cr(e){const t=Number(e??0);return Number.isFinite(t)?`$${t.toFixed(t>10?2:4)}`:"-"}function w8(e,t){const n=[e.daily_limit_usd?`D ${cr(e.daily_limit_usd)}`:"",e.weekly_limit_usd?`W ${cr(e.weekly_limit_usd)}`:"",e.monthly_limit_usd?`M ${cr(e.monthly_limit_usd)}`:""].filter(Boolean);return n.length?n.join(" · "):t}function TJ(e,t){return e==="channel_mapped"?t("adminUpstream.common.channelMapped"):e==="requested"?t("adminUpstream.common.requestedModel"):e==="upstream"?t("adminUpstream.common.upstreamModel"):e??"-"}function dUs(e){return[e("adminUsage.csv.time"),e("adminUsage.csv.user"),e("adminUsage.csv.apiKey"),e("adminUsage.csv.model"),e("adminUsage.csv.logicalUsageId"),e("adminUsage.csv.logicalRequestedModel"),e("adminUsage.csv.logicalModel"),e("adminUsage.csv.actualRequestedModel"),e("adminUsage.csv.actualModel"),e("adminUsage.csv.fallbackHop"),e("adminUsage.csv.userVisible"),e("adminUsage.csv.supersedesUsageRecord"),e("adminUsage.csv.upstreamModel"),e("adminUsage.csv.protocol"),e("adminUsage.csv.endpoint"),e("adminUsage.csv.type"),e("adminUsage.csv.status"),e("adminUsage.csv.inputTokens"),e("adminUsage.csv.outputTokens"),e("adminUsage.csv.cacheRead"),e("adminUsage.csv.cacheWrite"),e("adminUsage.csv.sub2apiCharge"),e("adminUsage.csv.continuityMode"),e("adminUsage.csv.continuityPolicyVersion"),e("adminUsage.csv.continuitySourceModel"),e("adminUsage.csv.continuityTargetModel"),e("adminUsage.csv.continuityRequestedRawQuote"),e("adminUsage.csv.continuityRequestedQuote"),e("adminUsage.csv.continuityActualPricingStatus"),e("adminUsage.csv.continuityActualQuote"),e("adminUsage.csv.continuityChargedQuote"),e("adminUsage.csv.continuityVariance"),e("adminUsage.csv.continuityActualPricingError"),e("adminUsage.csv.firstTokenMs"),e("adminUsage.csv.durationMs"),e("adminUsage.csv.channel"),e("adminUsage.csv.group"),e("adminUsage.csv.onehopRequestId"),e("adminUsage.csv.sub2a
972piRequestId")]}function uUs(e,t){const n=dUs(t),a=e.map(s=>[s.startedAt,s.userEmail??"",s.apiKey?.name??"",s.requestedModel,s.logicalPublicId,s.logicalRequestedModel,s.logicalModelSlug,s.actualRequestedModel,s.actualModelSlug,s.fallbackHop,s.userVisible,s.supersedesUsageRecordId??"",s.upstreamModel??"",s.protocol,s.endpointPath??"",s.requestType??"",s.status,s.inputTokens,s.outputTokens,s.cacheReadTokens,s.cacheWriteTokens,s.billedCost,s.continuityPricing?.mode??"",s.continuityPricing?.policyVersion??"",s.continuityPricing?.sourceModelSlug??"",s.continuityPricing?.targetModelSlug??"",s.continuityPricing?.requestedRawQuote??"",s.continuityPricing?.requestedQuote??"",s.continuityPricing?s.continuityPricing.actualPricingStatus??(s.continuityPricing.actualQuote==null?"unavailable":"available"):"",s.continuityPricing?.actualQuote??"",s.continuityPricing?.chargedQuote??"",s.continuityPricing?.variance??"",s.continuityPricing?.actualPricingError??"",s.firstTokenMs??"",s.durationMs??"",s.channelId??"",s.groupId??"",s.onehopRequestId??s.publicId,s.sub2apiRequestId??""]);return[n,...a]}function mUs(e,t){My(`onehop-admin-usage-${new Date().toISOString().slice(0,10)}.csv`,uUs(e,t))}const pUs=[20,50,100],fUs=["","sync","stream"],gUs=["","tokens","per_request","image"],Kb=3e3,HP="24h",hUs=["24h","7d","30d","all"],k8=["range","email","uid","apiKey","model","status","protocol","type","billing","channel","group","reqId","slow","page","size"],RJ=["userPublicId","email","apiKey","model","channelId","groupId"],yUs=["protocol","requestType","billingMode","channelId","groupId","requestId","minDurationMs"],PJ={range:"range",email:"email",userPublicId:"uid",apiKey:"apiKey",model:"model",status:"status",protocol:"protocol",requestType:"type",billingMode:"billing",channelId:"channel",groupId:"group",requestId:"reqId",minDurationMs:"slow"};function VP(e,t=HP){return e&&hUs.includes(e)?e:t}function vUs(e){const t={page:void 0};for(const[n,a]of Object.entries(e)){const s=PJ[n];t[s]=n==="range"&&a==="24h"?void 0:a}return t}function bUs(e){if(e==="all")return{};const t=new Date,n=new Date(t);e==="30d"?n.setDate(t.getDate()-29):e==="7d"&&n.setDate(t.getDate()-6);const a=s=>`${s.getFullYear()}-${String(s.getMonth()+1).padStart(2,"0")}-${String(s.getDate()).padStart(2,"0")}`;return{startDate:a(n),endDate:a(t)}}function xUs(e){return e==="24h"?"hour":"day"}function du(e){return e==null||!Number.isFinite(e)?"—":e<1e3?`${Math.round(e)}ms`:`${(e/1e3).toFixed(e<1e4?2:1)}s`}function Y0(e,t=4){return`$${(e==null||e===""?0:Number(e)).toFixed(t)}`}function ec(e,t){return e>=1e9?`${(e/1e9).toFixed(2)}B`:e>=1e6?`${(e/1e6).toFixed(2)}M`:e>=1e3?`${(e/1e3).toFixed(1)}K`:or(e,t)}function $Us(e,t){return t==="tokens"?e.totalTokens:t==="requests"?e.requestCount:Number(e.billedCost)||0}function SN(e){const t=e.inputTokens+e.outputTokens+e.cacheReadTokens+e.cacheWriteTokens;return{publicId:e.publicId,createdAt:e.startedAt,completedAt:e.completedAt,protocol:e.protocol,operation:e.operation,endpointPath:e.endpointPath??"",requestedModel:e.requestedModel,modelSlug:e.modelSlug,serviceTier:e.serviceTier,reasoningEffort:e.reasoningEffort,status:e.status,stream:e.stream,requestType:e.requestType??(e.stream?"stream":"sync"),billingMode:e.billingMode,inputTokens:e.inputTokens,outputTokens:e.outputTokens,cacheReadTokens:e.cacheReadTokens,cacheWriteTokens:e.cacheWriteTokens,cacheWrite5mTokens:e.cacheWrite5mTokens,cacheWrite1hTokens:e.cacheWrite1hTokens,totalTokens:t,inputCostUsd:null,outputCostUsd:null,cacheReadCostUsd:null,cacheWriteCostUsd:null,billedCredit:e.billedCost,sub2apiCharge:e.sub2apiCharge??e.billedCost,imageCount:e.imageCount,imageSize:e.imageSize,mediaType:e.mediaType,outputImageUrls:e.outputImageUrls??null,outputImageThumbUrls:e.outputImageThumbUrls??null,outputImageDownloadUrls:e.outputImageDownloadUrls??null,outputVideoUrl:e.outputVideoUrl??null,outputVideoDownloadUrl:e.outputVideoDownloadUrl??null,durationMs:e.durationMs,firstTokenMs:e.firstTokenMs,userAgent:e.userAgent,apiKey:e.apiKey,errorCode:e.errorCode,errorMessage:e.errorMessage,cancellable:!1,jobPublicId:null}}function wUs(e,t){switch(e){case"model":case"requestedModel":case"upstreamModel":return{model:t};case"apiKey":return{apiKey:t};case"user":return{userPublicId:t};case"channel":return{channelId:t};case"group":return{groupId:t};case"stream":return{requestType:t};default:return null}}function jm({label:e,value:t,format:n,sub:a,refreshing:s,error:r}){return o.jsxs(Ee,{className:X("min-w-0 p-2.5 transition-opacity duration-150 motion-reduce:transition-none sm:p-4",s&&"opacity-80"),"aria-busy":s?!0:void 0,children:[o.jsx("p",{className:"truncate text-11 font-semibold uppercase leading-4 text-[color:var(--muted-foreground)] sm:font-medium",children:e}),r?o.jsxs("div",{className:"mt-1 flex items-center gap-2 sm:mt-2",children:[o.jsx("span",{className:"text-lg font-semibold tabular-nums text-[color:var(--muted-foreground)] sm:text-2xl",children:"—"}),o.jsx(jo,{tone:"destructive",children:"load failed"})]}):o.jsx("p",{className:"mt-0.5 truncate text-lg font-semibold tabular-nums sm:mt-2 sm:text-2xl",children:o.jsx(Ho,{value:t,format:n})}),o.jsx("p",{className:"mt-0.5 truncate text-11 leading-4 text-[color:var(--muted-foreground)] sm:mt-1 sm:text-xs",children:a})]})}function Bn({label:e,children:t}){return o.jsxs("label",{className:Qo,children:[o.jsx("span",{children:e}),t]})}function KP({value:e,options:t,onChange:n,ariaLabel:a}){return o.jsx("div",{role:"group","aria-label":a,className:"flex min-w-0 gap-1 rounded-md border border-[color:var(--border)] p-0.5 text-11",children:t.map(([s,r])=>o.jsx("button",{type:"button","aria-pressed":e===s,onClick:()=>n(s),className:X("min-w-0 rounded px-2 py-1 transition-colors sm:px-3",e===s?"bg-[color:var(--foreground)] font-medium text-[color:var(--background)]":"text-[color:var(--muted-foreground)] hover:text-[color:var(--foreground)]"),children:o.jsx("span",{className:"block truncate",children:r})},s))})}function Ko({onDrill:e,children:t,className:n}){return o.jsx("button",{type:"button",onClick:a=>{a.stopPropagation(),e()},title:typeof t=="string"?t:void 0,className:X("inline-block max-w-full cursor-pointer truncate text-left align-bottom underline decoration-dotted decoration-[color:var(--muted-foreground)]/50 underline-offset-2 hover:
972decoration-[color:var(--foreground)] focus-visible:outline focus-visible:outline-1 focus-visible:outline-[color:var(--foreground)]",n),children:t})}function GP({title:e,rows:t,emptyLabel:n,metric:a="cost",action:s,onRowDrill:r}){const i=Te(),c=p=>$Us(p,a),d=[...t].sort((p,y)=>c(y)-c(p)),m=d.reduce((p,y)=>Math.max(p,c(y)),0),f=p=>a==="cost"?Y0(p):ec(p,i.locale);return o.jsxs(Ee,{className:"overflow-hidden",children:[o.jsxs("div",{className:"flex min-w-0 flex-col gap-2 border-b border-[color:var(--border)] px-3 py-2.5 sm:flex-row sm:items-center sm:justify-between sm:px-4 sm:py-3",children:[o.jsx("span",{className:"truncate text-sm font-semibold",children:e}),s?o.jsx("div",{className:"min-w-0 sm:shrink-0",children:s}):null]}),t.length===0?o.jsx("div",{className:"p-5 text-xs text-[color:var(--muted-foreground)]",children:n}):o.jsx("ul",{className:"divide-y divide-[color:var(--border)]",children:d.map((p,y)=>{const v=c(p);return o.jsxs("li",{className:"px-3 py-2.5 sm:px-4",children:[o.jsxs("div",{className:"flex min-w-0 items-baseline justify-between gap-3",children:[o.jsxs("div",{className:"min-w-0",children:[o.jsx("div",{className:"truncate text-sm font-medium",children:r?o.jsx(Ko,{onDrill:()=>r(p),children:p.label}):p.label}),o.jsx("div",{className:"truncate text-11 text-[color:var(--muted-foreground)]",children:p.extra??`${i.number(p.requestCount)} req · ${i.number(p.totalTokens)} tok`})]}),o.jsx("div",{className:"shrink-0 text-right text-sm tabular-nums",children:f(v)})]}),o.jsx("div",{className:"mt-1.5 h-1 overflow-hidden rounded bg-[color:var(--muted)]",children:o.jsx("div",{className:"h-full",style:{width:`${m>0?v/m*100:0}%`,backgroundColor:Yw(y+1)}})})]},`${e}:${p.key}:${y}`)})})]})}function kUs(){const{t:e}=W();return h.useMemo(()=>[["requests",e("adminUsage.metrics.requests")],["tokens",e("adminUsage.metrics.tokens")],["cost",e("adminUsage.metrics.cost")]],[e])}const CUs={userPublicId:"adminUsage.breakdown.user",email:"adminUsage.userEmail",apiKey:"adminUsage.apiKey",model:"adminUsage.model",channelId:"adminUsage.channel",groupId:"adminUsage.group"};function SUs({filters:e,onClear:t,onClearAll:n}){const{t:a}=W(),s=RJ.filter(r=>e[r]);return s.length===0?null:o.jsxs("div",{className:"-mt-1 flex flex-wrap items-center gap-2",children:[o.jsx("span",{className:"text-xs text-[color:var(--muted-foreground)]",children:a("adminUsage.viewing",{defaultValue:"Viewing"})}),s.map(r=>o.jsxs("span",{className:"inline-flex items-center gap-1.5 rounded-full border border-[color:var(--border)] bg-[color:var(--muted)] py-1 pl-2.5 pr-1 text-xs",children:[o.jsx("span",{className:"text-[color:var(--muted-foreground)]",children:a(CUs[r])}),o.jsx("span",{className:"max-w-[180px] truncate font-medium tabular-nums",title:e[r],children:e[r]}),o.jsx("button",{type:"button",onClick:()=>t(r),"aria-label":a("common.reset"),className:"grid size-4 place-items-center rounded-full text-[color:var(--muted-foreground)] hover:bg-[color:var(--accent)] hover:text-[color:var(--foreground)]",children:o.jsx(my,{className:"size-3"})})]},r)),o.jsx("button",{type:"button",onClick:n,className:"text-xs text-[color:var(--muted-foreground)] underline underline-offset-2 hover:text-[color:var(--foreground)]",children:a("common.clearAll")})]})}function AUs({queryFilters:e,granularity:t,applyFilter:n}){const{t:a}=W(),s=kUs(),[r,i]=h.useState("requests"),[c,d]=h.useState("requests"),[m,f]=h.useState("stacked"),[p,y]=h.useState("user"),v=h.useMemo(()=>{const{fromIso:R,toIso:_}=TUs(e);return NZ(R,_,t)},[e,t]),$=yIs({...e,granularity:t}),x=vIs({...e,granularity:t,metric:c}),w=cT({...e,groupBy:"model",limit:"10"}),S=cT({...e,groupBy:p,limit:"10"}),k=cT({...e,groupBy:"endpoint",limit:"10"}),T=h.useMemo(()=>[{value:"model",label:a("adminUsage.breakdown.model")},{value:"requestedModel",label:a("adminUsage.breakdown.requestedModel")},{value:"upstreamModel",label:a("adminUsage.breakdown.upstreamModel")},{value:"apiKey",label:a("adminUsage.breakdown.apiKey")},{value:"user",label:a("adminUsage.breakdown.user")},{value:"endpoint",label:a("adminUsage.breakdown.endpoint")},{value:"channel",label:a("adminUsage.breakdown.channel")},{value:"group",label:a("adminUsage.breakdown.group")},{value:"stream",label:a("adminUsage.breakdown.stream")}],[a]);return o.jsxs("div",{className:"space-y-3",children:[o.jsx(jUs,{title:a("adminUsage.usageTrend"),caption:a(t==="hour"?"adminUsage.hourly":"adminUsage.daily"),rows:$.data?.items??[],metric:r,bucketAxis:v,granularity:t,loading:$.isLoading,error:$.error,emptyLabel:a("adminUsage.noTrendToday",{defaultValue:"No requests yet — usage will appear here as traffic comes in."}),actions:o.jsx(KP,{value:r,options:s,onChange:R=>i(R),ariaLabel:a("adminUsage.metric")})}),o.jsx(RUs,{view:m,onViewChange:f,metric:c,onMetricChange:d,metricOptions:s,stacked:x.data?.items??[],ranking:w.data?.items??[],bucketAxis:v,granularity:t,loading:m==="stacked"?x.isLoading:w.isLoading,error:m==="stacked"?x.error:w.error,onModelDrill:R=>n({model:R})}),o.jsxs("div",{className:"grid gap-3 xl:grid-cols-2",children:[o.jsx(GP,{title:a("adminUsage.topEndpoints"),rows:k.data?.items??[],emptyLabel:a("adminUsage.noRows"),metric:"cost"}),o.jsx(GP,{title:a("adminUsage.topDimensionRows"),rows:S.data?.items??[],emptyLabel:a("adminUsage.noRows"),metric:"cost",onRowDrill:R=>{const _=wUs(p,R.key);_&&n(_)},action:o.jsx(ft,{value:p,onValueChange:R=>y(R),options:T,className:"h-8 min-w-40 text-xs"})})]})]})}function TUs(e){const t=e.startDate;return t?{fromIso:new Date(`${t}T00:00:00`).toISOString(),toIso:new Date().toISOString()}:{}}function RUs({view:e,onViewChange:t,metric:n,onMetricChange:a,metricOptions:s,stacked:r,ranking:i,bucketAxis:c,granularity:d,loading:m,error:f,onModelDrill:p}){const{t:y}=W(),v=[["stacked",y("adminUsage.modelView.stacked",{defaultValue:"Over time"})],["ranking",y("adminUsage.modelView.ranking",{defaultValue:"Ranking"})]],$=o.jsxs("div",{className:"flex min-w-0 flex-wrap items-center gap-1.5 sm:justify-end sm:gap-2",children:[o.jsx(KP,{value:e,options:v,onChange:x=>t(x),ariaLabel:y("adminUsage.modelView.label",{defaultValue:"Chart view"})}),o.jsx(KP,{value:n,options:s,onChange:x=>a(x),ariaLabel:y("adminUsage.metric")})]});return e==="ranking"?o.jsx(GP,{title:y("adminUsage.stackedByModel"),rows:f?[]:i,emptyLabel:f?f.message:y("adminUsage.noModelUsage",{defaultValue:"No model usage"}),metric:n,action:$,onRowDrill:x=>p(x.key)}):o.jsx(PUs,{title:y("adminUsage.stackedByModel"),caption:y(d==="hour"?"adminUsage.hourly":"adminUsage.daily"),points:r,metric:n,bucketAxis:c,granularity:d,loading:m,error:f,actions:$})}function PUs({title:e,caption:t,points:n,metric:a,bucketAxis:s,granularity:r,loading:i,error:c,actions:d}){const m=Te(),{rows:f,series:p}=h.useMemo(()=>jZ(n,n.length?s:void 0),[n,s]),y=a==="cost"?x=>lr(x,m.locale,"USD",4):x=>Zr(x),v=h.useMemo(()=>r==="hour"?new Intl.DateTimeFormat(m.locale,{hour:"2-digit",minute:"2-digit",hour12:!1}):new Intl.DateTimeFormat(m.locale,{month:"short",day:"numeric"}),[m.locale,r]),$=x=>{const w=new Date(String(x));return Number.isNaN(w.getTime())?String(x):v.format(w)};return o.jsx(PZ,{title:e,description:t,actions:d,height:220,loading:i,error:c,data:f,xAxisKey:"bucket",valueFormatter:y,xTickFormatter:$,series:p.map((x,w)=>({dataKey:x,name:x,stackId:"stack",colorIndex:w+1}))})}function _Us(e,t){return t==="requests"?e.requestCount:t==="tokens"?e.totalTokens:Number(e.billedCost)}function jUs({title:e,caption:t,rows:n,metric:a,bucketAxis:s,granularity:r,loading:i,error:c,emptyLabel:d,actions:m}){const f=Te(),p=h.useMemo(()=>{const x=new Map(n.map(S=>[S.bucket,_Us(S,a)]));return(s.length&&n.length?[...new Set([...s,...x.keys()])].sort():n.map(S=>S.bucket)).map(S=>({bucket:S,value:x.get(S)??0}))},[n,s,a]),y=a==="cost"?x=>lr(x,f.locale,"USD",4):x=>Zr(x),v=h.useMemo(()=>r==="hour"?new Intl.DateTimeFormat(f.locale,{hour:"2-digit",minute:"2-digit",hour12:!1}):new Intl.DateTimeFormat(f.locale,{month:"short",day:"numeric"}),[f.locale,r]),$=x=>{const w=new Date(String(x));return Number.isNaN(w.getTime())?String(x):v.format(w)};return o.jsx(_Z,{title:e,description:t,actions:m,height:220,loading:i,error:c,data:p,xAxisKey:"bucket",valueFormatter:y,xTickFormatter:$,series:[{dataKey:"value",name:e,colorIndex:1}],emptyState:o.jsx(Ot,{title:d})})}const C8=(e,t=4)=>`$${e.toFixed(t)}`;function S8(e){return e==null||e===""?0:typeof e=="number"?e:Number(e)}function _J({row:e}){const{t}=W(),n=S8(e.billedCost),a=e.pricingFactors,s=a?.length?KK(a,e.billedCost):null;return o.jsxs("div",{className:"text-xs tabular-nums",children:[a?.length?o.jsxs(o.Fragment,{children:[a.map((r,i)=>{const c=qK(r.factor),d=c?t(`logs.userCost.factor.${c}`,{defaultValue:r.factor}):r.factor,m=HK(r.unit),f=m?t(`logs.userCost.unit.${m}`,{defaultValue:r.unit}):r.unit,p=GK(t,r.tierKey),y=p?`${d} · ${p} ($${r.unitPriceUsd} ${f})`:`${d} ($${r.unitPriceUsd} ${f})`;return o.jsx(fT,{label:y,value:C8(S8(r.lineCostUsd),6),indent:!0,dim:!0},`${r.factor}-${i}`)}),s?o.jsx(fT,{label:t("logs.userCost.saved",{defaultValue:"You save"}),value:`${C8(s.saved,6)} (${Math.round(s.pct*100)}%)`,indent:!0,positive:!0}):null]}):null,o.jsx(fT,{label:t("adminUsage.adminCost.billedTotal",{defaultValue:"Billed"}),value:Wr(n),final:!0})]})}function fT({label:e,value:t,indent:n=!1,dim:a=!1,positive:s=!1,final:r=!1}){return o.jsxs("div",{className:"flex items-baseline justify-between py-1 "+(r?"mt-1 border-t border-[color:var(--border)] pt-2 font-medium":"border-t border-[color:var(--border)]/40 first:border-t-0"),children:[o.jsx("span",{className:(n?"pl-3 ":"")+(a?"text-[color:var(--muted-foreground)]":"text-[color:var(--foreground)]"),children:e}),o.jsx("span",{style:s?{color:"var(--success)"}:void 0,className:a?"text-[color:var(--muted-foreground)]":"text-[color:var(--foreground)]",children:t})]})}function NUs({row:e}){const{t}=W();return Number(e.billedCost??0)===0?o.jsx("span",{className:"tabular-nums text-[color:var(--muted-foreground)]",children:Wr(0)}):o.jsxs(Ns,{openDelay:150,closeDelay:80,children:[o.jsx(Ds,{asChild:!0,children:o.jsxs("span",{className:"inline-flex max-w-full cursor-help flex-wrap items-baseline justify-end gap-1 tabular-nums",children:[o.jsx("span",{children:Wr(e.billedCost)}),o.jsx("span",{className:"inline-block size-3 rounded-full border border-[color:var(--muted-foreground)]/30 text-center text-3xs leading-[10px] text-[color:var(--muted-foreground)] md:opacity-0 md:group-hover/row:opacity-100",children:"i"})]})}),o.jsxs(ns,{className:"min-w-[300px]",children:[o.jsx(Rc,{children:t("adminUsage.costBreakdown")}),o.jsx(_J,{row:e})]})]})}function jJ({publicId:e,onClose:t}){const{t:n}=W(),a=Te(),s=bIs(e),r=s.data,i=r?SN(r):null,c=Number(r?.billedCost??0);return o.jsx(Vn,{open:!!e,onOpenChange:d=>{d||t()},children:o.jsxs(Nn,{side:"auto",showClose:!1,className:"!p-0 md:w-[min(1040px,94vw)] md:!max-w-none",children:[o.jsx(Rn,{className:"sr-only",children:n("adminUsage.requestDetail")}),o.jsxs("div",{className:"flex h-full w-full flex-col",children:[o.jsxs("header",{className:"flex min-w-0 items-start gap-3 border-b border-[color:var(--border)] px-3 py-3 sm:px-5",children:[o.jsxs("div",{className:"min-w-0 flex-1",children:[o.jsx("div",{className:"text-sm font-semibold",children:n("adminUsage.requestDetail")}),r?o.jsxs("div",{className:"mt-0.5 flex flex-wrap items-center gap-2 text-11 text-[color:var(--muted-foreground)]",children:[o.jsx("code",{className:"max-w-full break-all rounded border border-[color:var(--border)] bg-[color:var(--muted)] px-1.5 py-0.5 font-mono",children:r.onehopRequestId??r.publicId}),o.jsx("span",{className:"min-w-0 max-w-full break-all",children:r.userEmail??n("adminUsage.unknownUser")}),o.jsx("span",{children:"·"}),o.jsx("span",{children:a.dateTime(r.startedAt)})]}):null]}),o.jsx(h7,{className:"ml-auto grid size-10 place-items-center rounded-md border border-[color:var(--border)] text-[color:var(--muted-foreground)] hover:bg-[color:var(--muted)] hover:text-[color:var(--foreground)]",children:o.jsx(my,{
972className:"size-4"})})]}),!r||!i?o.jsx("div",{className:"p-6 text-sm text-[color:var(--muted-foreground)]",children:s.isLoading?n("adminUsage.loading"):s.error?.message}):o.jsxs("div",{className:"grid min-h-0 flex-1 overflow-y-auto md:grid-cols-[minmax(0,1fr)_340px] md:overflow-hidden",children:[o.jsxs("div",{className:"min-w-0 border-b border-[color:var(--border)] p-3 md:overflow-y-auto md:border-b-0 md:border-r md:p-5",children:[o.jsxs("div",{className:"grid gap-2 sm:grid-cols-3 sm:gap-3",children:[o.jsx(gT,{label:n("adminUsage.userSpend"),value:Y0(c)}),o.jsx(gT,{label:n("adminUsage.groupMultiplier"),value:r.rateMultiplier?`× ${Number(r.rateMultiplier).toFixed(2)}`:"—"}),o.jsx(gT,{label:n("adminUsage.accountMultiplier"),value:r.accountRateMultiplier?`× ${Number(r.accountRateMultiplier).toFixed(2)}`:"—"})]}),Rj(i).hasMedia?o.jsx(vg,{title:n("logs.drawer.response"),className:"mt-4",children:o.jsx(ZK,{record:i})}):null,o.jsx(vg,{title:n("adminUsage.costBreakdown"),className:"mt-4",children:o.jsx(_J,{row:r})}),o.jsxs("div",{className:"mt-4 grid gap-3 lg:grid-cols-2 lg:gap-4",children:[o.jsxs(vg,{title:n("adminUsage.identity"),children:[o.jsx(Ur,{label:n("adminUsage.user"),value:r.userEmail??"—"}),o.jsx(Ur,{label:n("adminUsage.userId"),value:o.jsx(Qa,{children:r.userPublicId??"—"})}),o.jsx(Ur,{label:n("adminUsage.breakdown.apiKey"),value:r.apiKey?r.apiKey.name:"—"}),o.jsx(Ur,{label:n("adminUsage.keySuffix"),value:r.apiKey?o.jsxs(Qa,{children:[r.apiKey.prefix,"…",r.apiKey.suffix]}):"—"})]}),o.jsxs(vg,{title:n("adminUsage.tokens"),children:[o.jsx(Ur,{label:n("adminUsage.input"),value:a.number(r.inputTokens)}),o.jsx(Ur,{label:n("adminUsage.output"),value:a.number(r.outputTokens)}),o.jsx(Ur,{label:n("adminUsage.cacheRead"),value:a.number(r.cacheReadTokens)}),o.jsx(Ur,{label:n("adminUsage.cacheWrite"),value:a.number(r.cacheWriteTokens)}),o.jsx(Ur,{label:n("logs.tokensBreakdown.cacheWrite5m"),value:a.number(r.cacheWrite5mTokens)}),o.jsx(Ur,{label:n("logs.tokensBreakdown.cacheWrite1h"),value:a.number(r.cacheWrite1hTokens)})]})]}),o.jsx(vg,{title:n("adminUsage.rawMetadata"),className:"mt-4",children:o.jsx("pre",{className:"max-h-[320px] overflow-auto rounded-md border border-[color:var(--border)] bg-[color:var(--muted)]/35 p-3 font-mono text-11 leading-5 text-[color:var(--foreground)] sm:max-h-[420px] sm:p-4",children:JSON.stringify(r.metadata??{},null,2)})})]}),o.jsxs("div",{className:"bg-[color:var(--muted)]/25 md:overflow-y-auto",children:[o.jsxs(Em,{title:n("adminUsage.request"),children:[o.jsx(St,{label:n("adminUsage.usageId"),value:o.jsx(Qa,{children:r.publicId})}),o.jsx(St,{label:n("adminUsage.onehopId"),value:o.jsx(Qa,{children:r.onehopRequestId??"—"})}),o.jsx(St,{label:n("adminUsage.sub2apiId"),value:o.jsx(Qa,{children:r.sub2apiRequestId??"—"})}),o.jsx(St,{label:n("adminUsage.sub2apiLog"),value:r.sub2apiUsageLogId??"—"}),o.jsx(St,{label:n("adminUsage.started"),value:a.dateTime(r.startedAt)})]}),o.jsxs(Em,{title:n("adminUsage.routing"),children:[o.jsx(St,{label:n("adminUsage.model"),value:r.requestedModel}),o.jsx(St,{label:n("adminUsage.upstream"),value:r.upstreamModel??"—"}),o.jsx(St,{label:n("adminUsage.endpoint"),value:o.jsx(Qa,{children:r.endpointPath??"—"})}),o.jsx(St,{label:n("adminUsage.group"),value:r.groupId??"—"}),o.jsx(St,{label:n("adminUsage.mapping"),value:r.modelMappingChain??"—"})]}),o.jsxs(Em,{title:n("adminUsage.continuity.hopIdentity"),children:[o.jsx(St,{label:n("adminUsage.continuity.logicalUsageId"),value:o.jsx(Qa,{children:r.logicalPublicId})}),o.jsx(St,{label:n("adminUsage.continuity.logicalRequestedModel"),value:o.jsx(Qa,{children:r.logicalRequestedModel})}),o.jsx(St,{label:n("adminUsage.continuity.logicalModel"),value:o.jsx(Qa,{children:r.logicalModelSlug})}),o.jsx(St,{label:n("adminUsage.continuity.actualRequestedModel"),value:o.jsx(Qa,{children:r.actualRequestedModel})}),o.jsx(St,{label:n("adminUsage.continuity.actualModel"),value:o.jsx(Qa,{children:r.actualModelSlug})}),o.jsx(St,{label:n("adminUsage.continuity.fallbackHop"),value:r.fallbackHop}),o.jsx(St,{label:n("adminUsage.continuity.userVisibility"),value:o.jsx(jo,{tone:r.userVisible?"success":"muted",srPrefix:n("adminUsage.continuity.userVisibility"),children:n(r.userVisible?"adminUsage.continuity.visible":"adminUsage.continuity.hidden")})}),o.jsx(St,{label:n("adminUsage.continuity.supersedesUsageRecord"),value:r.supersedesUsageRecordId==null?"—":o.jsx(Qa,{children:r.supersedesUsageRecordId})})]}),r.continuityPricing?o.jsx(DUs,{pricing:r.continuityPricing}):null,o.jsxs(Em,{title:n("adminUsage.performance"),children:[o.jsx(St,{label:n("adminUsage.firstToken"),value:du(r.firstTokenMs)}),o.jsx(St,{label:n("adminUsage.total"),value:du(r.durationMs)}),o.jsx(St,{label:n("adminUsage.type"),value:r.requestType??"—"}),o.jsx(St,{label:n("adminUsage.billing"),value:r.billingMode??"—"})]}),r.errorCode||r.errorMessage?o.jsxs(Em,{title:n("adminUsage.error"),children:[o.jsx(St,{label:n("adminUsage.code"),value:r.errorCode??"—"}),o.jsx(St,{label:n("adminUsage.message"),value:r.errorMessage??"—"})]}):null]})]})]})]})})}function DUs({pricing:e}){const{t}=W(),n=e.actualPricingStatus??(e.actualQuote==null?"unavailable":"available");return o.jsxs(Em,{title:t("adminUsage.continuity.pricingAudit"),children:[o.jsx(St,{label:t("adminUsage.continuity.mode"),value:o.jsx(Qa,{children:e.mode})}),o.jsx(St,{label:t("adminUsage.continuity.policyVersion"),value:`v${e.policyVersion}`}),o.jsx(St,{label:t("adminUsage.continuity.sourceModel"),value:o.jsx(Qa,{children:e.sourceModelSlug})}),o.jsx(St,{label:t("adminUsage.continuity.targetModel"),value:o.jsx(Qa,{children:e.targetModelSlug})}),o.jsx(St,{label:t("adminUsage.continuity.requestedRawQuote"),value:yg(e.requestedRawQuote)}),o.jsx(St,{label:t("adminUsage.continuity.requestedQuote"),value:yg(e.requestedQuote)}),o.jsx(St,{label:t("adminUsage.continuity.actualPricingStatus"),value:o.jsx(jo,{tone:n==="available"?"success":"warning",srPrefix:t("adminUsage.continuity.actualPricingStatus"),children:t(n==="available"?"adminUsage.continuity.actualPricingAvailable":"adminUsage.continuity.actualPricingUnavailable")})}),o.jsx(St,{label:t("adminUsage.continuity.actualQuote"),value:yg(e.actualQuote)}),o.jsx(St,{label:t("adminUsage.continuity.chargedQuote"),value:yg(e.chargedQuote)}),o.jsx(St,{label:t("adminUsage.continuity.variance"),value:yg(e.variance)}),e.actualPricingError?o.jsx(St,{label:t("adminUsage.continuity.actualPricingError"),value:e.actualPricingError}):null]})}function yg(e){return e==null?"—":Y0(e,6)}function gT({label:e,value:t}){return o.jsxs("div",{className:"min-w-0 rounded-md border border-[color:var(--border)] bg-[color:var(--background)] px-3 py-2.5",children:[o.jsx("div",{className:"text-11 font-medium text-[color:var(--muted-foreground)]",children:e}),o.jsx("div",{className:"mt-1 truncate font-mono text-base font-semibold tabular-nums sm:text-lg",children:t})]})}function vg({title:e,children:t,className:n}){return o.jsxs("section",{className:`min-w-0 rounded-md border border-[color:var(--border)] bg-[color:var(--background)] p-3 sm:p-4 ${n??""}`,children:[o.jsx("h3",{className:"mb-3 text-11 font-semibold uppercase text-[color:var(--muted-foreground)]",children:e}),o.jsx("div",{className:"space-y-2",children:t})]})}function Ur({label:e,value:t}){return o.jsxs("div",{className:"grid grid-cols-[82px_minmax(0,1fr)] gap-2 text-sm sm:grid-cols-[100px_minmax(0,1fr)] sm:gap-3",children:[o.jsx("div",{className:"text-[color:var(--muted-foreground)]",children:e}),o.jsx("div",{className:"min-w-0 break-words tabular-nums text-[color:var(--foreground)]",children:t})]})}function Em({title:e,children:t}){return o.jsxs("section",{className:"border-b border-[color:var(--border)] px-4 py-4 last:border-b-0 sm:px-5",children:[o.jsx("h3",{className:"mb-3 text-11 font-semibold uppercase text-[color:var(--muted-foreground)]",children:e}),o.jsx("dl",{className:"grid grid-cols-[82px_minmax(0,1fr)] gap-x-2 gap-y-2 text-xs sm:grid-cols-[96px_minmax(0,1fr)] sm:gap-x-3 sm:text-13",children:t})]})}function St({label:e,value:t}){return o.jsxs(o.Fragment,{children:[o.jsx("dt",{className:"text-[color:var(--muted-foreground)]",children:e}),o.jsx("dd",{className:"min-w-0 break-words tabular-nums text-[color:var(--foreground)]",children:t})]})}function Qa({children:e}){return o.jsx("code",{className:"font-mono text-11 break-all text-[color:var(--foreground)]",children:e})}function MUs({filters:e,queryFilters:t,hasFilters:n,applyFilter:a,patch:s,resetFilters:r}){const{t:i}=W(),[c,d]=h.useState(null),m=yUs.some(j=>e[j]),[f,p]=h.useState(m),y=f||m,v=h.useMemo(()=>({...t,limit:String(e.size),page:String(e.page)}),[e.page,e.size,t]),$=K0(v),x=$.data?.items??[],w=$.data?.summary,S=h.useMemo(()=>fUs.map(j=>({value:j,label:j?i(`optionLabels.${j}`,{defaultValue:j}):i("adminUsage.allTypes")})),[i]),k=h.useMemo(()=>gUs.map(j=>({value:j,label:j?i(`optionLabels.${j==="tokens"?"token":j==="per_request"?"request":j}`,{defaultValue:j}):i("adminUsage.allBilling")})),[i]),T=h.useMemo(()=>wK.map(j=>({...j,label:j.value?i(`optionLabels.${j.value}`,{defaultValue:j.label}):i("optionLabels.all")})),[i]),R=h.useMemo(()=>Cj.map(j=>({...j,label:j.value?i(`optionLabels.${j.value}`,{defaultValue:j.label}):i("optionLabels.all")})),[i]),_=e.status==="failed",P=!!e.minDurationMs;return o.jsxs(Ee,{className:"overflow-hidden",children:[o.jsx("div",{className:"hidden border-b border-[color:var(--border)] px-3 py-2.5 sm:block sm:px-4 sm:py-3",children:o.jsx("h2",{className:"text-sm font-semibold",children:i("adminUsage.requestLogs")})}),o.jsxs("div",{className:"border-b border-[color:var(--border)] bg-[color:var(--muted)]/20 p-2 sm:p-3",children:[o.jsxs("div",{className:"mb-1.5 flex flex-wrap items-center gap-1.5 sm:mb-3 sm:gap-2",children:[o.jsx(A8,{active:_,label:i("adminUsage.chip.failedOnly",{defaultValue:"Failed only"}),onClick:()=>a({status:_?"":"failed"})}),o.jsx(A8,{active:P,label:i("adminUsage.chip.slowOnly",{defaultValue:"Slow > {{sec}}s",sec:((Number(e.minDurationMs)||Kb)/1e3).toString()}),onClick:()=>a({minDurationMs:P?"":String(Kb)})})]}),o.jsx("p",{className:"mb-3 hidden text-11 text-[color:var(--muted-foreground)] sm:block",children:i("adminUsage.latencyHint")}),o.jsxs(Gp,{compact:!0,label:i("adminUsage.moreFilters",{defaultValue:"More filters"}),active:n,panelClassName:"gap-3 border-0 bg-transparent p-0",children:[o.jsx(Bn,{label:i("adminUsage.userEmail"),children:o.jsx(ge,{value:e.email,onChange:j=>a({email:j.target.value}),placeholder:i("adminUsage.searchEmail")})}),o.jsx(Bn,{label:i("adminUsage.model"),children:o.jsx(ge,{value:e.model,onChange:j=>a({model:j.target.value}),placeholder:i("adminUsage.searchModel")})}),o.jsx(Bn,{label:i("adminUsage.status"),children:o.jsx(ft,{value:e.status,onValueChange:j=>a({status:j}),options:T})}),o.jsx(Bn,{label:i("adminUsage.protocol"),children:o.jsx(ft,{value:e.protocol,onValueChange:j=>a({protocol:j}),options:R})}),o.jsx(Bn,{label:i("adminUsage.type"),children:o.jsx(ft,{value:e.requestType,onValueChange:j=>a({requestType:j}),options:S})}),o.jsx(Bn,{label:i("adminUsage.billing"),children:o.jsx(ft,{value:e.billingMode,onValueChange:j=>a({billingMode:j}),options:k})}),o.jsx(Bn,{label:i("adminUsage.slowThreshold",{defaultValue:"Slow threshold (ms)"}),children:o.jsx(ge,{value:e.minDurationMs,onChange:j=>a({minDurationMs:j.target.value}),inputMode:"numeric",placeholder:String(Kb)})}),o.jsx(Bn,{label:i("adminUsage.channel"),children:o.jsx(ge,{value:e.channelId,onChange:j=>a({channelId:j.target.value}),inputMode:"numeric"})}),o.jsx(Bn,{label:i("adminUsage.group"),children:o.jsx(ge,{value:e.groupId,onChange:j=>a({groupId:j.target.value}),inputMode:"numeric"})}),o.jsx(Bn,{label:i("adminUsage.requestId"),children:o.jsx(ge,{value:e.requestId,onChange:j=>a({requestId:j.target.value}),placeholder:i("adminUsage.requestIdPlaceholder")})}),o.jsx(nn,{show:n,onReset:r,labelKey:"common.reset",className:"justify-self-end"})]}),o.jsxs("div",{className:"hidden gap-3 md:grid sm:grid-cols-2 lg:grid-cols-[repeat(4,minmax(0,1fr))_auto]",children:[o.jsx(Bn,{label:i("adminUsage.userEmail"),children:o.jsx(ge,{value:e.email,onChange:j=>a({email:j.target.value}),placeholder:i("adminUsage.searchEmail")})}),o.jsx(Bn,{label:i("adminUsage.model"),children:o.jsx(ge,{value:e.model,onChange:j=>a({model:j.target.value}),placeholder:i("adminUsage.searchModel")})}),o.jsx(Bn,{label:i("adminUsage.status"),children:o.jsx(ft,{value:e.status,onValueChange:j=>a({status:j}),options:T})}),o.jsx("div",{className:"flex items-end",children:o.jsxs("button",{type:"button",onClick:()=>p(j=>!j),"aria-expanded":y,className:X("inline-flex h-9 w-full items-center justify-center gap-1 rounded-md border px-3 text-xs font-medium transition-colors lg:w-auto",m?"border-[color:var(--primary)] text-[color:var(--primary)]":"border-[color:var(--border)] text-[color:var(--muted-foreground)] hover:text-[color:var(--foreground)]"),children:[i("adminUsage.moreFilters",{defaultValue:"More filters"}),o.jsx(zc,{className:X("size-3.5 transition-transform",y&&"rotate-180")}
972)]})}),o.jsx(nn,{show:n,onReset:r,labelKey:"common.reset",className:"self-end"})]}),y?o.jsxs("div",{className:"mt-3 hidden gap-3 md:grid sm:grid-cols-2 lg:grid-cols-4",children:[o.jsx(Bn,{label:i("adminUsage.protocol"),children:o.jsx(ft,{value:e.protocol,onValueChange:j=>a({protocol:j}),options:R})}),o.jsx(Bn,{label:i("adminUsage.type"),children:o.jsx(ft,{value:e.requestType,onValueChange:j=>a({requestType:j}),options:S})}),o.jsx(Bn,{label:i("adminUsage.billing"),children:o.jsx(ft,{value:e.billingMode,onValueChange:j=>a({billingMode:j}),options:k})}),o.jsx(Bn,{label:i("adminUsage.slowThreshold",{defaultValue:"Slow threshold (ms)"}),children:o.jsx(ge,{value:e.minDurationMs,onChange:j=>a({minDurationMs:j.target.value}),inputMode:"numeric",placeholder:String(Kb)})}),o.jsx(Bn,{label:i("adminUsage.channel"),children:o.jsx(ge,{value:e.channelId,onChange:j=>a({channelId:j.target.value}),inputMode:"numeric"})}),o.jsx(Bn,{label:i("adminUsage.group"),children:o.jsx(ge,{value:e.groupId,onChange:j=>a({groupId:j.target.value}),inputMode:"numeric"})}),o.jsx(Bn,{label:i("adminUsage.requestId"),children:o.jsx(ge,{value:e.requestId,onChange:j=>a({requestId:j.target.value}),placeholder:i("adminUsage.requestIdPlaceholder")})})]}):null]}),o.jsx("div",{className:"hidden md:block",children:o.jsxs(Ua,{className:"w-full min-w-[1360px] text-sm",children:[o.jsx(Po,{className:"bg-[color:var(--muted)]/40",children:o.jsxs(qt,{className:"hover:bg-transparent",children:[o.jsx(Ie,{sticky:"left",className:"bg-[color:var(--muted)]/40",children:i("adminUsage.table.user")}),o.jsx(Ie,{children:i("adminUsage.table.time")}),o.jsx(Ie,{children:i("adminUsage.table.model")}),o.jsx(Ie,{children:i("adminUsage.table.tokens")}),o.jsx(Ie,{className:"text-right",children:i("adminUsage.table.cost")}),o.jsx(Ie,{children:i("adminUsage.table.upstream",{defaultValue:"Upstream"})}),o.jsx(Ie,{children:i("adminUsage.table.latency")}),o.jsx(Ie,{children:i("adminUsage.table.duration")}),o.jsx(Ie,{children:i("adminUsage.table.userAgent",{defaultValue:"Client"})}),o.jsx(Ie,{children:i("adminUsage.table.status")})]})}),o.jsx(Ba,{children:x.map(j=>o.jsx(IUs,{row:j,selected:j.publicId===c,onSelect:()=>d(j.publicId),onDrill:a},j.publicId))})]})}),o.jsx("div",{className:"grid p-0 md:hidden",children:x.map(j=>o.jsx(EUs,{row:j,selected:j.publicId===c,onSelect:()=>d(j.publicId),onDrill:a},j.publicId))}),$.error?o.jsx("div",{className:"p-6",children:o.jsx(Ot,{title:i("adminUsage.failedLoad"),description:$.error.message})}):null,!$.error&&x.length===0?o.jsx("div",{className:"p-6",children:o.jsx(Ot,{title:$.isLoading?i("adminUsage.loadingRecords"):i("adminUsage.empty"),description:i("adminUsage.tryDifferentFilters")})}):null,x.length>0?o.jsx(V0,{total:w?.requestCount??0,page:e.page,pageSize:e.size,pageSizeOptions:pUs,onPageChange:j=>s({page:j===1?void 0:String(j)},{replace:!1}),onPageSizeChange:j=>s({size:j===20?void 0:String(j),page:void 0})}):null,o.jsx(jJ,{publicId:c,onClose:()=>d(null)})]})}function A8({active:e,label:t,onClick:n}){return o.jsx("button",{type:"button","aria-pressed":e,onClick:n,className:X("inline-flex items-center rounded-full border px-3 py-1 text-xs font-medium transition-colors",e?"border-[color:var(--primary)] bg-[color:var(--primary)] text-[color:var(--primary-foreground)]":"border-[color:var(--border)] text-[color:var(--muted-foreground)] hover:text-[color:var(--foreground)]"),children:t})}function EUs({row:e,selected:t,onSelect:n,onDrill:a}){const{t:s}=W(),r=Te(),i=SN(e),c=e.apiKey,d=e.userPublicId,m=`${ec(e.inputTokens+e.outputTokens+e.cacheReadTokens+e.cacheWriteTokens,r.locale)} tok`;return o.jsxs(Dn,{selected:t,onClick:n,activation:"pointer",className:"py-1.5",children:[o.jsxs("div",{className:"flex min-w-0 items-start justify-between gap-2",children:[o.jsxs("div",{className:"min-w-0",children:[o.jsxs("div",{className:"flex min-w-0 items-center gap-1",onClick:f=>f.stopPropagation(),children:[d?e.userAdminNote?o.jsxs(Ls,{children:[o.jsx(Us,{asChild:!0,children:o.jsx("span",{className:"min-w-0 truncate",children:o.jsx(Ko,{onDrill:()=>a({userPublicId:d}),className:"max-w-full truncate text-sm font-medium",children:e.userEmail??d})})}),o.jsx(cs,{side:"top",className:"max-w-xs whitespace-pre-wrap break-words text-xs",children:e.userAdminNote})]}):o.jsx(Ko,{onDrill:()=>a({userPublicId:d}),className:"max-w-full truncate text-sm font-medium",children:e.userEmail??d}):o.jsx("div",{className:"truncate text-sm font-medium",children:e.userEmail??"—"}),d?o.jsx(Ta,{to:Bh(d),onClick:f=>f.stopPropagation(),"aria-label":"open user detail",className:"shrink-0 text-[color:var(--muted-foreground)] hover:text-[color:var(--primary)]",children:o.jsx(dy,{className:"size-3"})}):null]}),o.jsx("div",{className:"mt-0.5 min-w-0 truncate font-mono text-11 text-[color:var(--muted-foreground)]",onClick:f=>f.stopPropagation(),children:c?o.jsx(Ko,{onDrill:()=>a({apiKey:c.publicId}),children:c.name}):d??"—"})]}),o.jsxs(Cr,{className:"shrink-0",children:[o.jsx(Ww,{record:i}),o.jsx(K,{type:"button",variant:"ghost",size:"icon",onClick:n,"aria-label":s("adminUsage.openRequestDetail",{defaultValue:"Open request detail"}),className:"size-10",children:o.jsx(wu,{className:"size-4"})})]})]}),o.jsxs("div",{className:"mt-1 min-w-0",onClick:f=>f.stopPropagation(),children:[o.jsxs("div",{className:"flex min-w-0 items-center gap-1.5",children:[o.jsx(Ko,{onDrill:()=>a({model:e.requestedModel}),className:"min-w-0 text-sm font-medium",children:e.requestedModel}),o.jsx(Gw,{serviceTier:e.serviceTier})]}),o.jsxs("div",{className:"mt-0.5 flex min-w-0 flex-nowrap items-center gap-2 overflow-hidden text-11 text-[color:var(--muted-foreground)]",children:[o.jsx(jj,{iso:e.startedAt}),o.jsx("span",{className:"max-w-[12rem] truncate",children:e.endpointPath??e.upstreamEndpoint??"—"})]})]}),o.jsxs(Ha,{className:"grid-cols-[minmax(0,1.2fr)_minmax(0,0.8fr)]",children:[o.jsx(Qe,{label:s("adminUsage.table.tokens"),children:o.jsx("span",{className:"tabular-nums",children:m})}),o.jsx(Qe,{label:s("adminUsage.table.cost"),align:"right",children:o.jsx("span",{className:"tabular-nums",children:Y0(e.billedCost)})}),o.jsx(Qe,{label:s("adminUsage.table.upstream",{defaultValue:"Upstream"}),truncate:!1,children:o.jsx("span",{className:"inline-flex max-w-full items-center gap-1 text-11",children:e.poolCode?e.groupId!=null?o.jsx(Ko,{onDrill:()=>a({groupId:String(e.groupId)}),children:e.poolCode}):o.jsx("span",{className:"truncate",children:e.poolCode}):e.groupId!=null?o.jsx(Ko,{onDrill:()=>a({groupId:String(e.groupId)}),children:e.groupId}):o.jsx("span",{children:"—"})})}),o.jsx(Qe,{label:s("adminUsage.table.latency"),align:"right",children:o.jsx("span",{className:"tabular-nums",children:du(e.firstTokenMs)})})]})]})}function IUs({row:e,selected:t,onSelect:n,onDrill:a}){const s=SN(e),r=e.apiKey,i=e.userPublicId,c=e.userEmail??i??"—",d=i?o.jsx(Ko,{onDrill:()=>a({userPublicId:i}),className:"text-xs",children:c}):o.jsx("span",{className:"truncate text-xs",children:c});return o.jsxs(qt,{onClick:m=>{eu(m)||n()},className:X("group/row cursor-pointer hover:bg-[color:var(--muted)]/50",t&&"bg-[color:var(--primary)]/[0.04]"),children:[o.jsxs(Me,{sticky:"left",children:[o.jsxs("div",{className:"flex min-w-0 max-w-[240px] items-center gap-1",children:[e.userAdminNote?o.jsxs(Ls,{children:[o.jsx(Us,{asChild:!0,children:o.jsx("span",{className:"min-w-0 truncate",children:d})}),o.jsx(cs,{side:"top",className:"max-w-xs whitespace-pre-wrap break-words text-xs",children:e.userAdminNote})]}):d,i?o.jsx(Ta,{to:Bh(i),onClick:m=>m.stopPropagation(),"aria-label":"open user detail",className:"shrink-0 text-[color:var(--muted-foreground)] hover:text-[color:var(--primary)]",children:o.jsx(dy,{className:"size-3"})}):null]}),o.jsx("div",{className:"max-w-[240px] font-mono text-11 text-[color:var(--muted-foreground)]",children:r?o.jsx(Ko,{onDrill:()=>a({apiKey:r.publicId}),children:r.name}):i??"—"})]}),o.jsx(Me,{className:"text-xs",children:o.jsx(jj,{iso:e.startedAt})}),o.jsxs(Me,{children:[o.jsxs("div",{className:"flex min-w-0 items-center gap-1.5",children:[o.jsx(Xo,{authorSlug:Iz(e.modelSlug),size:14,className:"shrink-0 text-[color:var(--muted-foreground)]"}),o.jsx(Ko,{onDrill:()=>a({model:e.requestedModel}),className:"max-w-[240px] text-sm",children:e.requestedModel}),o.jsx(Gw,{serviceTier:e.serviceTier})]}),o.jsx("div",{className:"max-w-[260px] truncate font-mono text-11 text-[color:var(--muted-foreground)]",children:e.upstreamModel??e.modelSlug})]}),o.jsx(Me,{children:o.jsx(Pj,{record:s,detailPath:"/ops/usage"})}),o.jsx(Me,{className:"text-right",children:o.jsx(NUs,{row:e})}),o.jsxs(Me,{children:[o.jsx("div",{className:"font-mono text-11",children:e.poolCode?e.groupId!=null?o.jsx(Ko,{onDrill:()=>a({groupId:String(e.groupId)}),children:e.poolCode}):o.jsx("span",{children:e.poolCode}):e.groupId!=null?o.jsx(Ko,{onDrill:()=>a({groupId:String(e.groupId)}),children:e.groupId}):"—"}),o.jsxs("div",{className:"flex max-w-[180px] items-center gap-1 text-11 text-[color:var(--muted-foreground)]",children:[o.jsx(Ko,{onDrill:()=>a({protocol:e.protocol}),className:"text-11",children:e.protocol}),o.jsxs("span",{className:"truncate",children:["· ",e.endpointPath??e.upstreamEndpoint??"—"]})]})]}),o.jsx(Me,{className:"text-xs tabular-nums",children:du(e.firstTokenMs)}),o.jsx(Me,{className:"text-xs tabular-nums",children:du(e.durationMs)}),o.jsx(Me,{className:"text-11 text-[color:var(--muted-foreground)]",children:o.jsx("span",{className:"block max-w-[160px] truncate",title:e.userAgent??void 0,children:e.userAgent??"—"})}),o.jsx(Me,{children:o.jsx(Ww,{record:s})})]})}const NJ="onehop.adminUsage.range.v1",DJ=[0,5,10,30,60];function OUs(e){const t=Number(e);return DJ.includes(t)?t:null}function T8(){try{return VP(localStorage.getItem(NJ),HP)}catch{return HP}}function LUs(e){try{localStorage.setItem(NJ,e)}catch{}}function hT({label:e,value:t,sub:n}){return o.jsxs(Ee,{className:"min-w-0 p-2",children:[o.jsx("div",{className:"truncate text-11 font-semibold uppercase leading-4 text-[color:var(--muted-foreground)]",children:e}),o.jsx("div",{className:"mt-0.5 truncate text-sm font-semibold tabular-nums",children:t}),o.jsx("div",{className:"mt-0.5 truncate text-11 leading-4 text-[color:var(--muted-foreground)]",children:n})]})}function UUs(){const{t:e}=W(),t=Te(),n=Re(),{params:a,patch:s,remove:r}=Mt(),i=a.get("range"),[c,d]=h.useState(()=>
972VP(i,T8()));h.useEffect(()=>{d(VP(i,T8()))},[i]);const m=h.useMemo(()=>({range:c,email:Pe(a,"email"),userPublicId:Pe(a,"uid"),apiKey:Pe(a,"apiKey"),model:Pe(a,"model"),status:Pe(a,"status"),protocol:Pe(a,"protocol"),requestType:Pe(a,"type"),billingMode:Pe(a,"billing"),channelId:Pe(a,"channel"),groupId:Pe(a,"group"),requestId:Pe(a,"reqId"),minDurationMs:Pe(a,"slow"),page:ln(a,"page",1),size:ln(a,"size",20)}),[a,c]),[f,p]=gh("admin_usage_tab","analytics",B=>B==="logs"?"logs":B==="analytics"?"analytics":null),y=Pe(a,"tab",f)==="logs"?"logs":"analytics",[v,$]=h.useState(!1),[x,w]=h.useState(null),S=h.useDeferredValue(m.email),k=h.useDeferredValue(m.apiKey),T=h.useDeferredValue(m.model),R=h.useDeferredValue(m.channelId),_=h.useDeferredValue(m.groupId),P=h.useDeferredValue(m.requestId),j=h.useDeferredValue(m.minDurationMs),N=h.useMemo(()=>({...bUs(m.range),tz:uK(),email:S,userPublicId:m.userPublicId,apiKey:k,model:T,status:m.status,protocol:m.protocol,requestType:m.requestType,billingMode:m.billingMode,channelId:R,groupId:_,requestId:P,minDurationMs:j}),[m.range,m.userPublicId,m.status,m.protocol,m.requestType,m.billingMode,S,k,T,R,_,P,j]),I=xUs(m.range),z=K0({...N,limit:"1"}),E=z.data?.summary,L=z.isFetching&&!z.isPending,O=Zt(a,k8,["page","size"]),V=h.useMemo(()=>[{value:"24h",label:e("adminUsage.ranges.today")},{value:"7d",label:e("adminUsage.ranges.days7")},{value:"30d",label:e("adminUsage.ranges.days30")},{value:"all",label:e("adminUsage.ranges.all")}],[e]);function ne(B){s(vUs(B))}function q(B){d(B),LUs(B),ne({range:B})}function M(){n.invalidateQueries({queryKey:["ops","usage"]})}const[F,H]=gh("onehop.adminUsage.autoRefresh.v1",0,OUs);h.useEffect(()=>{if(!F)return;const B=setInterval(()=>{document.hidden||n.invalidateQueries({queryKey:["ops","usage"]})},F*1e3);return()=>clearInterval(B)},[F,n]);async function ee(){$(!0),w(null);try{const B=await xIs(N);mUs(B,e)}catch(B){w(B instanceof Error?B.message:e("adminUsage.exportError"))}finally{$(!1)}}return o.jsxs(Vt,{title:e("adminUsage.title"),description:e("adminUsage.description"),action:o.jsxs("div",{className:"grid w-full grid-cols-[minmax(0,1fr)_auto_auto] gap-1.5 sm:flex sm:w-auto sm:items-center sm:gap-2",children:[o.jsx(ft,{value:m.range,onValueChange:B=>q(B),options:V,className:"h-9 sm:w-32","aria-label":e("adminUsage.range")}),o.jsxs("div",{className:"flex",children:[o.jsxs(K,{variant:"outline",size:"icon",onClick:M,"aria-busy":L,"aria-label":e("adminUsage.refresh"),className:"size-9 rounded-r-none sm:w-auto sm:px-3",children:[o.jsx(Vp,{className:X("size-4",L&&"animate-spin")}),o.jsx("span",{className:"hidden sm:inline",children:F?`${F}s`:e("adminUsage.refresh")})]}),o.jsxs(zp,{children:[o.jsx(qp,{asChild:!0,children:o.jsx(K,{variant:"outline",size:"icon","aria-label":e("adminUsage.autoRefresh.label"),className:"size-9 w-6 rounded-l-none border-l-0 sm:w-7",children:o.jsx(zc,{className:"size-3.5"})})}),o.jsx(xu,{align:"end",children:o.jsx(ppe,{value:String(F),onValueChange:B=>H(Number(B)),children:DJ.map(B=>o.jsx(Jq,{value:String(B),children:B===0?e("adminUsage.autoRefresh.off"):`${B}s`},B))})})]})]}),o.jsxs(K,{variant:"secondary",size:"icon",onClick:ee,disabled:(E?.requestCount??0)===0||v,className:"size-9 sm:w-auto sm:px-3","aria-label":e(v?"adminUsage.exporting":"adminUsage.exportCsv"),children:[o.jsx($u,{className:"size-4"}),o.jsx("span",{className:"hidden sm:inline",children:e(v?"adminUsage.exporting":"adminUsage.exportCsv")})]})]}),children:[o.jsxs("div",{className:"-mt-2 truncate text-11 text-[color:var(--muted-foreground)] sm:-mt-3 sm:text-xs",children:[e("adminUsage.timesShownIn")," ",o.jsx("span",{className:"font-medium text-[color:var(--foreground)]",children:mK()})]}),o.jsx(SUs,{filters:m,onClear:B=>ne({[B]:""}),onClearAll:()=>r([...RJ.map(B=>PJ[B]),"page"])}),o.jsxs("div",{className:"grid grid-cols-3 gap-1.5 sm:hidden",children:[o.jsx(hT,{label:e("adminUsage.requests"),value:t.number(Math.round(E?.requestCount??0)),sub:e("adminUsage.successful",{count:t.number(E?.successCount??0)})}),o.jsx(hT,{label:e("adminUsage.userSpend"),value:t.currency(Number(E?.billedCost??0)),sub:e("adminUsage.userSpendSource")}),o.jsx(hT,{label:e("adminUsage.tokens"),value:ec(E?.totalTokens??0,t.locale),sub:e("adminUsage.inOut",{input
972:ec(E?.inputTokens??0,t.locale),output:ec(E?.outputTokens??0,t.locale)})})]}),o.jsxs("div",{className:"hidden grid-cols-3 gap-1.5 sm:grid sm:grid-cols-2 sm:gap-3 lg:grid-cols-6",children:[o.jsx(jm,{label:e("adminUsage.requests"),value:E?.requestCount??0,format:B=>t.number(Math.round(B)),sub:e("adminUsage.successful",{count:t.number(E?.successCount??0)}),refreshing:L}),o.jsx(jm,{label:e("adminUsage.users"),value:E?.userCount??0,format:B=>t.number(Math.round(B)),sub:e("adminUsage.apiKeys",{count:t.number(E?.apiKeyCount??0)}),refreshing:L}),o.jsx(jm,{label:e("adminUsage.userSpend"),value:Number(E?.billedCost??0),format:B=>t.currency(B),sub:e("adminUsage.userSpendSource"),refreshing:L}),o.jsx(jm,{label:e("adminUsage.tokens"),value:E?.totalTokens??0,format:B=>ec(Math.round(B),t.locale),sub:e("adminUsage.inOut",{input:ec(E?.inputTokens??0,t.locale),output:ec(E?.outputTokens??0,t.locale)}),refreshing:L}),o.jsx(jm,{label:e("adminUsage.avgLatency"),value:E?.averageFirstTokenMs??null,format:du,sub:e("adminUsage.avgLatencySub"),refreshing:L}),o.jsx(jm,{label:e("adminUsage.avgTotalDuration"),value:E?.averageDurationMs??null,format:du,sub:e("adminUsage.settledRequests"),refreshing:L})]}),x?o.jsx(Ee,{className:"border-[color:var(--destructive)]/30 p-3 text-sm text-[color:var(--destructive)]",children:x}):null,o.jsxs(Cc,{value:y,onValueChange:B=>{p(B),s({tab:B==="analytics"?void 0:B})},children:[o.jsx("div",{className:"min-w-0 overflow-x-auto pb-0.5",children:o.jsxs(tl,{children:[o.jsx(ia,{value:"analytics",className:"h-9 px-2.5 text-xs sm:h-10 sm:px-3 sm:text-sm",children:e("adminUsage.tabs.analytics",{defaultValue:"Usage analytics"})}),o.jsx(ia,{value:"logs",className:"h-9 px-2.5 text-xs sm:h-10 sm:px-3 sm:text-sm",children:e("adminUsage.tabs.logs",{defaultValue:"Request logs"})})]})}),o.jsx(Tn,{value:"analytics",children:o.jsx(AUs,{queryFilters:N,granularity:I,applyFilter:ne})}),o.jsx(Tn,{value:"logs",children:o.jsx(MUs,{filters:m,queryFilters:N,hasFilters:O,applyFilter:ne,patch:s,resetFilters:()=>r(k8)})})]})]})}function BUs(e){const t=e.trim();return t.startsWith("usr_")?{mode:"publicId",value:t}:{mode:"fuzzy",value:t}}function FUs(e,t){const n=t>0?Math.min(Math.max(e/t*100,0),100):0;return n<=0?{pct:0,label:"0%"}:n<1?{pct:n,label:"<1%"}:{pct:n,label:`${n.toFixed(1)}%`}}function zUs({spend:e}){const{t}=W(),n=Te(),a=Number(e.billedCost??0);return a<=0?o.jsx("span",{className:"tabular-nums text-[color:var(--muted-foreground)]",children:Wr(e.billedCost)}):o.jsxs(Ns,{openDelay:150,closeDelay:80,children:[o.jsx(Ds,{asChild:!0,children:o.jsxs("span",{className:"inline-flex cursor-help items-baseline gap-1 tabular-nums",children:[o.jsx("span",{children:Wr(e.billedCost)}),o.jsx("span",{className:"inline-block size-3 rounded-full border border-[color:var(--muted-foreground)]/30 text-center text-3xs leading-[10px] text-[color:var(--muted-foreground)] opacity-0 group-hover/row:opacity-100",children:"i"})]})}),o.jsxs(ns,{className:"min-w-[300px]",children:[o.jsx(Rc,{children:t("adminUserDetail.apiKeys.spendTitle")}),o.jsx(Ia,{label:t("adminUserDetail.apiKeys.spend30d"),value:Wr(e.billed30d)}),o.jsx(Ia,{label:t("adminUserDetail.apiKeys.spendAllTime"),value:Wr(e.billedCost),bold:!0}),o.jsx(Ia,{label:t("adminUserDetail.apiKeys.spendRequests"),value:n.number(e.requests)}),o.jsx("div",{className:"mt-1 grid gap-1.5 border-t border-[color:var(--border)] pt-2",children:e.models.map(s=>{const{pct:r,label:i}
972=FUs(Number(s.billedCost),a),c=s.modelSlug==="(unknown)";return o.jsxs("div",{className:"grid gap-0.5",children:[o.jsxs("div",{className:"flex items-baseline justify-between gap-6 text-11",children:[o.jsx("span",{className:c?"text-[color:var(--muted-foreground)]":"text-[color:var(--foreground)]",children:s.modelSlug}),o.jsxs("span",{className:"tabular-nums text-[color:var(--muted-foreground)]",children:[Wr(s.billedCost)," · ",i," · ",n.number(s.requests),"×"]})]}),o.jsx("div",{className:"h-1 rounded-full bg-[color:var(--muted)]",children:o.jsx("div",{className:"h-1 rounded-full bg-[color:var(--foreground)]/70",style:{width:`${r}%`}})})]},s.modelSlug)})})]})]})}function rl(e,t,n){return e==null?"—":lr(Number(e),n,t??"USD")}function vo({label:e,value:t}){return o.jsxs("div",{className:"grid min-w-0 gap-1 py-1.5 text-sm sm:grid-cols-[140px_minmax(0,1fr)] sm:gap-2",children:[o.jsx("span",{className:"text-[color:var(--muted-foreground)]",children:e}),o.jsx("span",{className:"min-w-0 break-all",children:t??"—"})]})}function qUs(e){const t=e.filter(Boolean);return t.length?t.join(" · "):"—"}function AN({role:e,status:t}){if(!e)return o.jsx(Oe,{value:"user"});const n=ct(e);return o.jsx("span",{className:"inline-flex items-center gap-2",children:o.jsx(Oe,{value:t??"unknown",label:n})})}const HUs={blue:"text-[color:var(--info)]",purple:"text-purple-500",orange:"text-orange-500"};function Kr({label:e,value:t,format:n,color:a}){const s=a?HUs[a]??"":"";return o.jsxs("div",{className:"grid gap-0.5",children:[o.jsx("span",{className:"text-xs text-[color:var(--muted-foreground)]",children:e}),o.jsx("span",{className:`text-base font-semibold tabular-nums${s?` ${s}`:""}`,children:o.jsx(Ho,{value:t,format:n})})]})}function VUs({user:e}){const{t}=W(),[n,a]=h.useState("bonus"),[s,r]=h.useState(""),[i,c]=h.useState(""),[d,m]=h.useState(""),f=V3s(),p=n==="offline_payment",y=Number(s),v=s.trim()!==""&&Number.isFinite(y)&&y>0&&(!p||d.trim()!==""),$=async()=>{v&&(y>1e3&&!await zt({message:t("adminUsers.largeGrantConfirm",{amount:y,email:e.email}),variant:"destructive"})||f.mutate({userPublicId:e.publicId,amount:y.toFixed(4),description:i||void 0,kind:n,referenceNo:p?d.trim():void 0},{onSuccess:()=>{r(""),c(""),m("")}}))};return o.jsxs("div",{className:"grid gap-2",children:[o.jsx("span",{className:"text-sm font-medium",children:t("adminUsers.grantCredit")}),o.jsxs("div",{className:"grid gap-2 sm:grid-cols-2",children:[o.jsxs("label",{className:"grid min-w-0 gap-1 text-xs text-[color:var(--muted-foreground)]",children:[t("adminUsers.grantKind"),o.jsxs(Ms,{value:n,onValueChange:x=>a(x),children:[o.jsx(as,{className:"h-9 min-w-0",children:o.jsx(Es,{})}),o.jsxs(os,{className:"max-w-[calc(100vw-1rem)]",children:[o.jsx(zn,{value:"bonus",description:t("adminUsers.grantKindBonusHint"),textClassName:"whitespace-normal break-words",descriptionClassName:"whitespace-normal break-words",children:t("adminUsers.grantKindBonus")}),o.jsx(zn,{value:"offline_payment",description:t("adminUsers.grantKindOfflineHint"),textClassName:"whitespace-normal break-words",descriptionClassName:"whitespace-normal break-words",children:t("adminUsers.grantKindOffline")})]})]})]}),p?o.jsxs("label",{className:"grid min-w-0 gap-1 text-xs text-[color:var(--muted-foreground)]",children:[t("adminUsers.referenceNo"),o.jsx(ge,{value:d,onChange:x=>m(x.target.value),placeholder:t("adminUsers.referenceNoPlaceholder")})]}):null]}),o.jsxs("div",{className:"grid gap-2 sm:grid-cols-[120px_1fr_auto] sm:items-end",children:[o.jsxs("label",{className:"grid min-w-0 gap-1 text-xs text-[color:var(--muted-foreground)]",children:[t("adminUsers.amountUsd"),o.jsx(ge,{value:s,onChange:x=>r(x.target.value),placeholder:t("adminUsers.amountPlaceholder"),inputMode:"decimal"})]}),o.jsxs("label",{className:"grid min-w-0 gap-1 text-xs text-[color:var(--muted-foreground)]",children:[t("adminUsers.reason"),o.jsx(ge,{value:i,onChange:x=>c(x.target.value),placeholder:t("adminUsers.reasonPlaceholder")})]}),o.jsx(K,{type:"button",size:"sm",className:"w-full sm:w-auto","aria-label":t(p?"adminUsers.recordPayment":"adminUsers.grantCredit"),onClick:$,disabled:!v||f.isPending,children:f.isPending?t(p?"adminUsers.recording":"adminUsers.granting"):t(p?"adminUsers.recordPayment":"adminUsers.grant")})]}),f.error?o.jsx("p",{className:"text-sm text-[color:var(--destructive)]",children:f.error.message}):null]})}function KUs({user:e}){const{t}=W(),n=QIs(),a=async(s,r)=>{!r||r===e[s]||!await zt({message:t("adminUsers.setStatusConfirm",{email:e.email,status:r}),variant:"destructive"})||n.mutate({publicId:e.publicId,[s]:r})};return o.jsxs("div",{className:"grid min-w-0 gap-3 sm:grid-cols-2",children:[o.jsxs("label",{className:"grid min-w-0 gap-1 text-xs text-[color:var(--muted-foreground)]",children:[t("adminUsers.status"),e.status==="deleted"?o.jsx(Oe,{value:"deleted"}):o.jsxs(Ms,{value:e.status,disabled:n.isPending,onValueChange:s=>a("status",s),children:[o.jsx(as,{className:"h-9 min-w-0",children:o.jsx(Es,{})}),o.jsx(os,{className:"max-w-[calc(100vw-1rem)]",children:bhs.map(s=>o.jsx(zn,{value:s.value,description:t(`adminUsers.statusEffect.${s.value}
972`),textClassName:"whitespace-normal break-words",descriptionClassName:"whitespace-normal break-words",children:t(`optionLabels.${s.value}`,{defaultValue:s.label})},s.value))})]})]}),o.jsxs("label",{className:"grid min-w-0 gap-1 text-xs text-[color:var(--muted-foreground)]",children:[t("adminUsers.risk"),o.jsxs(Ms,{value:e.riskStatus,disabled:n.isPending,onValueChange:s=>a("riskStatus",s),children:[o.jsx(as,{className:"h-9 min-w-0",children:o.jsx(Es,{})}),o.jsx(os,{className:"max-w-[calc(100vw-1rem)]",children:xhs.map(s=>o.jsx(zn,{value:s.value,description:t(`adminUsers.riskEffect.${s.value}`),textClassName:"whitespace-normal break-words",descriptionClassName:"whitespace-normal break-words",children:t(`optionLabels.${s.value}`,{defaultValue:s.label})},s.value))})]})]})]})}function GUs({user:e}){const{t}=W(),n=XIs(),[a,s]=h.useState(""),r=zV,i=e.signupSource,c=i&&r.includes(i)?i:i?"__current__":"",d=m=>n.mutate({publicId:e.publicId,source:m});return o.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[o.jsxs(ft,{className:"h-9 w-44",value:c,disabled:n.isPending,onChange:m=>{const f=m.target.value;f!=="__current__"&&d(f===""?null:f)},children:[o.jsx("option",{value:"",children:t("adminUsers.sourceDirect")}),i&&!r.includes(i)?o.jsx("option",{value:"__current__",children:i}):null,r.map(m=>o.jsx("option",{value:m,children:ct(m)},m))]}),o.jsx(ge,{className:"h-9 w-40",value:a,placeholder:t("adminUsers.sourceCustomPlaceholder"),onChange:m=>s(m.target.value)}),o.jsx(K,{size:"sm",variant:"secondary",disabled:n.isPending||!a.trim(),onClick:()=>{d(a.trim()),s("")},children:t("adminUsers.sourceSet")})]})}function WUs({user:e}){const{t}=W(),n=ZIs(),[a,s]=h.useState(e.adminNote??""),r=a.trim(),i=r!==(e.adminNote??""),c=async()=>{if(i)try{await n.mutateAsync({publicId:e.publicId,note:r===""?null:r}),ie.success(t("adminUsers.noteSaved"))}catch(d){ie.error(d instanceof rn?`${d.code}: ${d.message}`:String(d))}};return o.jsxs("div",{className:"grid gap-2",children:[o.jsx(_o,{value:a,onChange:d=>s(d.target.value),placeholder:t("adminUsers.notePlaceholder"),disabled:n.isPending,rows:2}),o.jsx(K,{size:"sm",variant:"secondary",className:"justify-self-start",disabled:n.isPending||!i,onClick:c,children:t("adminUsers.noteSave")})]})}function YUs({user:e,canWrite:t}){const{t:n}=W(),a=Object.entries(e.utm??{}).filter(([,s])=>s!=null&&s!=="");return o.jsxs(o.Fragment,{children:[o.jsx(vo,{label:n("adminUsers.acquisitionSource"),value:t?o.jsxs("div",{className:"grid gap-1",children:[o.jsx(GUs,{user:e}),e.capturedSource&&e.capturedSource!==e.signupSource?o.jsx("span",{className:"text-xs text-[color:var(--muted-foreground)]",children:n("adminUsers.sourceCaptured",{source:e.capturedSource})}):null]}):e.signupSource?o.jsx(Oe,{value:e.signupSource,label:ct(e.signupSource)}):n("adminUsers.sourceDirect")}),a.length?o.jsx(vo,{label:n("adminUsers.utm"),value:o.jsx("span",{className:"font-mono text-xs break-all",children:a.map(([s,r])=>`${s}=${String(r)}`).join(" · ")})}):null,e.referrer?o.jsx(vo,{label:n("adminUsers.referrer"),value:o.jsxs("span",{children:[e.referrer.email," ",o.jsx("span",{className:"font-mono text-xs text-[color:var(--muted-foreground)]",children:e.referrer.publicId})]})}):null]})}function QUs({user:e}){const{t}=W(),n=KZ(),a=FIs(),s=n.data?.items??[],r=e.rateLimitPolicyCode,i=s.some(d=>d.code===r)||!r?s:[{code:r,name:r},...s],c=async d=>{if(!(!d||d===r))try{await a.mutateAsync({publicId:e.publicId,code:d}),ie.success(t("adminUsers.rateLimitPolicyChanged"))}catch(m){ie.error(m instanceof rn?`${m.code}: ${m.message}`:String(m))}};return o.jsxs("label",{className:"grid min-w-0 gap-1 text-xs text-[color:var(--muted-foreground)]",children:[t("adminUsers.rateLimitPolicy"),o.jsx(ft,{className:"h-9 min-w-0",menuClassName:"max-w-[calc(100vw-1rem)]",value:r,disabled:a.isPending||n.isLoading,onChange:d=>c(d.target.value),children:i.map(d=>o.jsxs("option",{value:d.code,children:[d.name," (",d.code,")"]},d.code))})]})}function XUs(e){return e.toUpperCase().split("").map(t=>String.fromCodePoint(127462+t.charCodeAt(0)-65)).join("")}const ZUs={CN:"中国",US:"美国",JP:"日本",KR:"韩国",SG:"新加坡",HK:"香港",TW:"台湾",GB:"英国",DE:"德国",FR:"法国",CA:"加拿大",AU:"澳大利亚",IN:"印度",BR:"巴西",RU:"俄罗斯",NL:"荷兰",SE:"瑞典",CH:"瑞士",MX:"墨西
972哥",IT:"意大利",ES:"西班牙",PL:"波兰",CZ:"捷克",TH:"泰国",MY:"马来西亚",ID:"印度尼西亚",PH:"菲律宾",VN:"越南",UA:"乌克兰",TR:"土耳其",PK:"巴基斯坦",NG:"尼日利亚",EG:"埃及",AR:"阿根廷",ZA:"南非"};function JUs(e){if(!e)return"—";const t=XUs(e),n=ZUs[e.toUpperCase()]??e.toUpperCase();return`${t} ${n}`}function eBs(e){if(!e)return{browser:"—",os:"—",device:"—"};let t="Unknown";/Edg\//.test(e)?t="Edge":/OPR\/|Opera/.test(e)?t="Opera":/Chrome\//.test(e)?t="Chrome":/Firefox\//.test(e)?t="Firefox":/Safari\//.test(e)&&!/Chrome/.test(e)&&(t="Safari");let n="Unknown";/Windows NT/.test(e)?n="Windows":/Mac OS X/.test(e)&&!/iPhone|iPad/.test(e)?n="macOS":/iPhone/.test(e)?n="iOS (iPhone)":/iPad/.test(e)?n="iOS (iPad)":/Android/.test(e)?n="Android":/Linux/.test(e)&&(n="Linux");let a="Desktop";return/Mobile|iPhone|Android.*Mobile/.test(e)?a="Mobile":/iPad|Tablet|Android(?!.*Mobile)/.test(e)&&(a="Tablet"),{browser:t,os:n,device:a}}function Gb({value:e}){return o.jsx(py,{value:e,className:"size-6",iconClassName:"size-3.5"})}function R8({accounts:e}){return o.jsx("ul",{className:"grid min-w-0 grid-cols-[minmax(0,1fr)] gap-1.5",children:e.map(t=>o.jsxs("li",{className:"flex flex-wrap items-center gap-2 text-sm",children:[o.jsxs(Ta,{to:Bh(t.publicId),className:"text-[color:var(--foreground)] hover:underline",children:[t.email,o.jsx("span",{className:"ml-1 font-mono text-xs text-[color:var(--muted-foreground)]",children:t.publicId})]}),o.jsx(Oe,{value:t.riskStatus})]},t.publicId))})}function tBs({user:e}){const{t}=W(),n=eBs(e.signupUserAgent),a=e.lastLoginIp!=null&&e.lastLoginIp!==e.signupIp;return o.jsxs("div",{className:"grid min-w-0 grid-cols-[minmax(0,1fr)] gap-5",children:[o.jsxs(Ee,{className:"p-4",children:[o.jsx("p",{className:"mb-3 text-xs font-semibold text-[color:var(--muted-foreground)] uppercase tracking-wide",children:t("adminUserDetail.network.ipLocationTitle")}),o.jsxs("div",{className:"divide-y divide-[color:var(--border)]",children:[o.jsxs("div",{className:"grid grid-cols-[140px_1fr] gap-2 py-1.5 text-sm",children:[o.jsx("span",{className:"text-[color:var(--muted-foreground)]",children:t("adminUserDetail.network.signupIp")}),o.jsxs("span",{className:"flex flex-wrap items-center gap-1 break-all",children:[e.signupIp??"—",e.signupIp?o.jsxs(o.Fragment,{children:[o.jsx(Gb,{value:e.signupIp}),o.jsx("a",{href:`https://ipinfo.io/${e.signupIp}`,target:"_blank",rel:"noopener noreferrer",className:"text-xs text-[color:var(--muted-foreground)] hover:text-[color:var(--foreground)] underline",title:t("adminUserDetail.network.viewOnIpinfo"),children:"↗"})]}):null]})]}),o.jsxs("div",{className:"grid grid-cols-[140px_1fr] gap-2 py-1.5 text-sm",children:[o.jsx("span",{className:"text-[color:var(--muted-foreground)]",children:t("adminUserDetail.network.signupCountry")}),o.jsx("span",{children:JUs(e.signupCountry)})]}),o.jsxs("div",{className:"grid grid-cols-[140px_1fr] gap-2 py-1.5 text-sm",children:[o.jsx("span",{className:"text-[color:var(--muted-foreground)]",children:t("adminUserDetail.network.lastLoginIp")}),o.jsxs("span",{className:`flex flex-wrap items-center gap-1 break-all${a?" text-[color:var(--warning)]":""}`,children:[e.lastLoginIp??"—",e.lastLoginIp?o.jsx(Gb,{value:e.lastLoginIp}):null,a?o.jsx("span",{className:"text-xs",children:t("adminUserDetail.network.ipDifferent")}):null]})]})]})]}),e.sameDeviceAccounts&&e.sameDeviceAccounts.length>0?o.jsxs(Ee,{className:"border-[color:var(--warning-border)] bg-[color:var(--warning-surface)] p-4",children:[o.jsxs("p",{className:"mb-3 text-sm font-semibold text-[color:var(--warning)]",children:["⚠ ",t("adminUserDetail.network.sameDeviceAccounts",{count:e.sameDeviceTotal})]}),o.jsx(R8,{accounts:e.sameDeviceAccounts})]}):null,e.sameIpAccounts&&e.sameIpAccounts.length>0?o.jsxs(Ee,{className:"bg-[color:var(--warning-surface)] p-4",children:[o.jsxs("p",{className:"mb-2 text-xs font-semibold text-[color:var(--warning)]",children:["⚠ ",t("adminUserDetail.network.sameIpAccounts",{count:e.sameIpTotal})]}),o.jsx(R8,{accounts:e.sameIpAccounts})]}):null,o.jsxs(Ee,{className:"p-4",children:[o.jsx("p",{className:"mb-3 text-xs font-semibold text-[color:var(--muted-foreground)] uppercase tracking-wide",children:t("adminUserDetail.network.deviceBrowserTitle")}),o.jsx(Oc,{children:o.jsxs("div",{className:"divide-y divide-[color:var(--border)]",children:[[{label:t("adminUserDetail.network.browser"),value:n.browser},{label:t("adminUserDetail.network.os"),value:n.os},{label:t("adminUserDetail.network.deviceType"),value:n.device}].map(({label:s,value:r})=>
972o.jsxs(Ls,{children:[o.jsx(Us,{asChild:!0,children:o.jsxs("div",{className:"grid grid-cols-[140px_1fr] gap-2 py-1.5 text-sm cursor-default",children:[o.jsx("span",{className:"text-[color:var(--muted-foreground)]",children:s}),o.jsx("span",{children:r})]})}),e.signupUserAgent?o.jsx(cs,{className:"max-w-xs break-all text-xs",side:"top",children:e.signupUserAgent}):null]},s)),o.jsxs("div",{className:"grid grid-cols-[140px_1fr] gap-2 py-1.5 text-sm",children:[o.jsx("span",{className:"text-[color:var(--muted-foreground)]",children:t("adminUserDetail.network.acceptLanguage")}),o.jsx("span",{className:"break-all",children:e.signupAcceptLanguage??"—"})]}),o.jsxs("div",{className:"grid grid-cols-[140px_1fr] gap-2 py-1.5 text-sm",children:[o.jsx("span",{className:"text-[color:var(--muted-foreground)]",children:t("adminUserDetail.network.deviceFingerprint")}),e.deviceFingerprint?o.jsxs("span",{className:"flex flex-wrap items-center gap-1",children:[o.jsx("span",{className:"font-mono text-xs break-all",children:e.deviceFingerprint}),o.jsx(Gb,{value:e.deviceFingerprint})]}):o.jsx("span",{children:"—"})]}),o.jsxs("div",{className:"grid grid-cols-[140px_1fr] gap-2 py-1.5 text-sm",children:[o.jsx("span",{className:"text-[color:var(--muted-foreground)]",children:t("adminUserDetail.network.freeTierEligible")}),e.freeTierEligible?o.jsx("span",{children:t("adminUserDetail.network.firstDevice")}):o.jsx("span",{className:"text-[color:var(--warning)]",children:t("adminUserDetail.network.notFirstDevice")})]})]})})]}),e.stripeCustomerIdLive?o.jsxs(Ee,{className:"p-4",children:[o.jsx("p",{className:"mb-3 text-xs font-semibold text-[color:var(--muted-foreground)] uppercase tracking-wide",children:t("adminUserDetail.network.stripeTitle")}),o.jsxs("div",{className:"grid grid-cols-[140px_1fr] gap-2 py-1.5 text-sm",children:[o.jsx("span",{className:"text-[color:var(--muted-foreground)]",children:t("adminUserDetail.network.stripeCustomerId")}),o.jsxs("span",{className:"flex flex-wrap items-center gap-1",children:[o.jsx("span",{className:"font-mono text-xs",children:e.stripeCustomerIdLive}),o.jsx(Gb,{value:e.stripeCustomerIdLive})]})]})]}):null]})}function MJ(e){return e==null?"—":e<1e3?`${e}ms`:`${(e/1e3).toFixed(1)}s`}function EJ({row:e}){return e.status==="success"?o.jsx("span",{className:"font-medium text-[color:var(--success)]",children:"✓"}):e.status==="failed"?o.jsxs("span",{className:"font-medium text-[color:var(--destructive)]",children:["✗",e.errorCode?o.jsx("span",{className:"ml-1 font-mono text-xs",children:e.errorCode}):null]}):o.jsx("span",{className:"inline-flex items-center text-[color:var(--muted-foreground)]",title:e.status,children:o.jsx(obe,{className:"size-3.5"})})}function IJ({row:e,number:t}){const n=Number(e.freeDiscountUsd??0);return n>0?o.jsx("span",{className:"text-[color:var(--success)]",children:`-$${n.toFixed(4)} · ${t(e.freeTokensConsumed)}`}):o.jsx("span",{className:"text-[color:var(--muted-foreground)]",children:"—"})}function nBs({row:e,onOpen:t}){const{t:n}=W(),a=Te();return o.jsxs(Dn,{onClick:t,activation:"pointer",children:[o.jsxs("div",{className:"flex min-w-0 items-start justify-between gap-2",children:[o.jsx("span",{className:"min-w-0 break-all text-sm font-medium",title:e.requestedModel,children:e.requestedModel}),o.jsxs("span",{className:"flex shrink-0 items-center gap-1.5 text-sm",children:[o.jsx(EJ,{row:e}),o.jsx(wu,{className:"size-4 text-[color:var(--muted-foreground)]","aria-hidden":"true"})]})]}),o.jsxs("div",{className:"mt-0.5 flex flex-wrap items-center gap-x-2 text-11 text-[color:var(--muted-foreground)]",children:[o.jsx("span",{title:a.dateTime(e.startedAt),children:a.relativeTime(e.startedAt)}),o.jsx("span",{className:"font-mono",children:e.protocol})]}),o.jsxs("div",{className:"mt-1.5 flex flex-wrap items-center gap-x-4 gap-y-1 text-xs",children:[o.jsx(yT,{label:n("adminUserDetail.recentCalls.colDuration"),children:o.jsx("span",{className:"text-[color:var(--muted-foreground)]",children:MJ(e.durationMs)})}),o.jsx(yT,{label:n("adminUserDetail.recentCalls.colCost"),children:`$${Number(e.billedCost||0).toFixed(4)}`}
972),o.jsx(yT,{label:n("adminUserDetail.recentCalls.colFreeDiscount"),children:o.jsx(IJ,{row:e,number:a.number})})]})]})}function yT({label:e,children:t}){return o.jsxs("span",{className:"inline-flex items-baseline gap-1",children:[o.jsx("span",{className:"text-11 uppercase text-[color:var(--muted-foreground)]",children:e}),o.jsx("span",{className:"tabular-nums",children:t})]})}function aBs({userPublicId:e}){const{t}=W(),n=Te(),a=K0({userPublicId:e,limit:"20"}),[s,r]=h.useState(null),i=`${Be.adminUsage}?uid=${encodeURIComponent(e)}&tab=logs`,c=[{header:t("adminUserDetail.recentCalls.colStatus"),cell:d=>o.jsx(EJ,{row:d})},{header:t("adminUserDetail.recentCalls.colTime"),cell:d=>o.jsx("span",{className:"text-[color:var(--muted-foreground)]",title:n.dateTime(d.startedAt),children:n.relativeTime(d.startedAt)})},{header:t("adminUserDetail.recentCalls.colModel"),mobileValue:"wrap",cell:d=>o.jsx(Oc,{children:o.jsxs(Ls,{children:[o.jsx(Us,{asChild:!0,children:o.jsx("span",{className:"block max-w-[160px] cursor-default truncate",children:d.requestedModel.length>20?`${d.requestedModel.slice(0,20)}…`:d.requestedModel})}),o.jsx(cs,{side:"top",className:"text-xs",children:d.requestedModel})]})})},{header:t("adminUserDetail.recentCalls.colProtocol"),cell:d=>o.jsx("span",{className:"font-mono text-xs text-[color:var(--muted-foreground)]",children:d.protocol})},{header:t("adminUserDetail.recentCalls.colDuration"),align:"right",cell:d=>o.jsx("span",{className:"text-[color:var(--muted-foreground)]",children:MJ(d.durationMs)})},{header:t("adminUserDetail.recentCalls.colCost"),align:"right",cell:d=>`$${Number(d.billedCost||0).toFixed(4)}`},{header:t("adminUserDetail.recentCalls.colFreeDiscount"),align:"right",cell:d=>o.jsx(IJ,{row:d,number:n.number})}];return o.jsxs("div",{className:"grid gap-3",children:[o.jsx(Pt,{rows:a.data?.items,isLoading:a.isLoading,error:a.error,emptyTitle:t("adminUserDetail.recentCalls.empty"),columns:c,onRowClick:d=>r(d.publicId),mobileCard:d=>o.jsx(nBs,{row:d,onOpen:()=>r(d.publicId)})}),o.jsx(Ta,{to:i,className:"text-sm text-[color:var(--primary)] hover:underline",children:t("adminUserDetail.recentCalls.viewAll")}),o.jsx(jJ,{publicId:s,onClose:()=>r(null)})]})}function oBs({publicId:e}){const{t}=W(),n=Te(),a=hIs(e,{limit:"20"});return o.jsx(Pt,{rows:a.data?.items,isLoading:a.isLoading,error:a.error,emptyTitle:t("adminUserDetail.apiKeys.empty"),columns:[{header:t("adminUserDetail.apiKeys.colName"),mobileValue:"wrap",cell:s=>s.name},{header:t("adminUserDetail.apiKeys.colKey"),mobileValue:"break-all",cell:s=>o.jsxs("span",{className:"font-mono text-xs",children:[s.prefix,"…",s.suffix]})},{header:t("adminUserDetail.apiKeys.colStatus"),cell:s=>o.jsx(Oe,{value:s.status})},{header:t("adminUserDetail.apiKeys.colSpend"),align:"right",cell:s=>o.jsx(zUs,{spend:s.spend})},{header:t("adminUserDetail.apiKeys.colPolicy"),mobileValue:"break-all",cell:s=>s.rateLimitPolicyCode?o.jsx("span",{className:"font-mono text-xs",children:s.rateLimitPolicyCode}):"—"},{header:t("adminUserDetail.apiKeys.colLastUsed"),cell:s=>s.lastUsedAt?o.jsx("span",{title:n.dateTime(s.lastUsedAt),children:n.relativeTime(s.lastUsedAt)}):"—"},{header:t("adminUserDetail.apiKeys.colCreated"),cell:s=>o.jsx("span",{title:n.dateTime(s.createdAt),children:n.relativeTime(s.createdAt)})}]})}const Wb=["q","status","risk","source","method","page","size"],sBs=["","google","email","github"];function OJ(e){return e?e==="google"?{label:"Google",glyph:"G"}:e==="github"?{label:"GitHub",glyph:"GH"}:e==="email_otp"?{label:"Email OTP",glyph:"@"}:e==="magic_link"?{label:"Magic link",glyph:"ML"}:e==="email"?{label:"Email",glyph:"@"}:{label:ct(e),glyph:"?"}:null}function rBs(e){return e.toUpperCase().split("").map(t=>String.fromCodePoint(127462+t.charCodeAt(0)-65)).join("")}function LJ(e,t){if(!e)return null;const n=e.toUpperCase(),a=typeof Intl.DisplayNames=="function"?new Intl.DisplayNames([t],{type:"region"}).of(n):void 0;return{flag:rBs(n),name:a??n}}function WP({method:e}){const t=OJ(e);return t?o.jsxs("span",{className:"inline-flex items-center gap-1 text-[color:var(--muted-foreground)]",children:[o.jsx("span",{className:"inline-flex size-4 items-center justify-center rounded bg-[color:var(--muted)] text-2xs font-medium leading-none",children:t.glyph}),t.label]}):o.jsx("span",{className:"text-[color:var(--muted-foreground)]",children:"—"})}function iBs(){const{t:e}=W(),t=Te(),a=JIs().data??[];if(!a.length)return null;const s=Math.max(...a.map(r=>r.count),1);return o.jsxs(Ee,{className:"mb-4 grid gap-2 p-4",children:[o.jsx("span",{className:"text-sm font-medium",children:e("adminUsers.acquisitionTitle")}),o.jsx("div",{className:"grid gap-1.5",children:a.map(r=>o.jsxs("div",{className:"grid grid-cols-[minmax(72px,140px)_1fr_auto] items-center gap-2 text-13 sm:gap-3",children:[o.jsx("span",{children:r.source}),o.jsx("span",{className:"h-2 rounded-full bg-[color:var(--accent)]",style:{width:`${Math.round(r.count/s*100)}%`}}),o.jsx("span",{className:"tabular-nums text-[color:var(--muted-foreground)]",children:t.number(r.count)})]},r.source))})]})}function UJ({user:e}){const{t}=W(),n="-mx-2 inline-flex max-w-full truncate rounded px-2 py-1 font-medium",a=e.riskStatus==="blocked"?"bg-[color:var(--destructive)]":e.riskStatus==="watchlisted"?"bg-[color:var(--warning)]":null,s=a?t(`optionLabels.${e.riskStatus}`,{defaultValue:ct(e.riskStatus)}):null,r=e.status==="suspended"?o.jsx("span",{className:`${n} bg-[color:var(--destructive-bg)] text-[color:var(--destructive)]`,children:e.email}):e.status==="deleted"?o.jsx("span",{className:`${n} bg-[color:var(--muted)] text-[color:var(--muted-foreground)]`,children:e.email}):o.jsx("span",{className:"block max-w-full truncate font-medium",children:e.email});return!a||!s?r:o.jsxs("span",{className:"relative inline-flex max-w-full",children:[r,o.jsxs(Ls,{children:[o.jsx(Us,{asChild:!0,children:o.jsx("span",{className:`absolute -right-1.5 -top-1.5 size-2.5 rounded-full ring-2 ring-[color:var(--background)] ${a}`,"aria-label":`${t("adminUsers.risk")}: ${s}`})}),o.jsx(cs,{children:`${t("adminUsers.risk")}: ${s}`})]})]})}function lBs({note:e}){return e?o.jsxs(Ls,{children:[o.jsx(Us,{asChild:!0,children:o.jsx("span",{className:"block max-w-[180px] cursor-default truncate",children:e})}),o.jsx(cs,{side:"top",className:"max-w-xs whitespace-pre-wrap break-words text-xs",children:e})]}):o.jsx("span",{className:"text-[color:var(--muted-foreground)]",children:"—"})}function cBs({user:e,locale:t,onOpen:n}){const{t:a}=W(),s=LJ(e.signupCountry,t),r=e.lastLoginAt?Tc(e.lastLoginAt):a("adminUsers.never");return o.jsxs(Dn,{onClick:n,activation:"pointer",children:[o.jsx(kr,{title:o.jsx(UJ,{user:e}),meta:e.displayName||e.publicId,trailing:o.jsxs(Cr,{children:[o.jsx(AN,{role:e.adminRole,status:e.adminStatus}),o.jsx(K,{type:"button",variant:"ghost",size:"icon",onClick:n,"aria-label":a("adminUsers.view"),className:"size-8",children:o.jsx(wu,{className:"size-4"})})]})}),o.jsxs("div",{className:"mt-1.5 flex min-w-0 flex-wrap items-center gap-1.5",children:[o.jsx(Oe,{value:e.status}),o.jsx(Oe,{value:e.riskStatus}),o.jsx(WP,{method:e.signupMethod}),s?o.jsxs("span",{className:"inline-flex min-w-0 items-center gap-1 text-xs text-[color:var(--muted-foreground)]",children:[o.jsx("span",{className:"shrink-0",children:s.flag}),o.jsx("span",{className:"min-w-0 truncate",children:e.signupCity||s.name})]}):null]}),o.jsxs(Ha,{className:"grid-cols-[minmax(0,1fr)_minmax(0,1fr)]",children:[o.jsx(Qe,{label:a("adminUsers.walletBalance"),children:rl(e.walletBalance,e.currency,t)}),o.jsx(Qe,{label:a("adminUsers.lastLogin"),align:"right",children:r})]})]})}function dBs(){const{t:e}=W(),t=Te(),n=No(),{params:a,patch:s,remove:r}=Mt(),i=h.useMemo(()=>({q:Pe(a,"q"),status:Pe(a,"status"),risk:Pe(a,"risk"),source:Pe(a,"source"),method:Pe(a,"method"),page:ln(a,"page",1),size:ln(a,"size",20)}),[a]),[c,d]=h.useState(i.q);h.useEffect(()=>{d(i.q)},[i.q]);const m=h.useRef(null),f=h.useCallback(k=>{d(k),m.current&&clearTimeout(m.current),m.current=setTimeout(()=>{s({q:k,page:void 0})},300)},[s]),p=h.useDeferredValue(i.q),y=BUs(p),v=mIs({...y.value?{q:y.value,mode:y.mode}:{},...i.status?{status:i.status}:{},...i.risk?{riskStatus:i.risk}:{},...i.source?{source:i.source}:{},...i.method?{signupMethod:i.method}:{},page:String(i.page),limit:String(i.size)}),$=k=>n(Bh(k.publicId)),x=h.useMemo(()=>sBs.map(k=>({value:k,label:k?OJ(k)?.label??ct(k):e("common.all")})),[e]),w=h.useMemo(()=>[{value:"",label:e("common.all")},{value:"direct",label:e("adminUsers.sourceDirect")},...zV.map(k=>({value:k,label:k}))],[e]),S=k=>o.jsx(cBs,{user:k,locale:t.locale,onOpen:()=>$(k)},k.publicId);return o.jsxs(Vt,{title:e("adminUsers.title"),description:e("adminUsers.description"),children:[o.jsx(iBs,{}),o.jsxs("div",{className:"mb-2 grid grid-cols-[minmax(0,1fr)_auto] gap-2 md:mb-4 md:grid-cols-[minmax(0,1fr)_160px_160px_160px_160px_auto] md:gap-3",children:[o.jsxs("label",{className:"min-w-0 md:grid md:gap-1.5 md:text-sm md:font-medium",children:[o.jsx("span",{className:"sr-only md:not-sr-only",children:e("adminUserDetail.search")}),o.jsx(ge,{value:c,onChange:k=>f(k.target.value),placeholder:e("adminUserDetail.searchPlaceholder"),"aria-label":e("adminUserDetail.search"),className:"h-10"})]}),o.jsx("div",{className:"hidden md:block",children:o.jsx(Ze,{label:e("adminUsers.status"),value:i.status,options:MR,onChange:k=>s({status:k,page:void 0})})}),o.jsx("div",{className:"hidden md:block",children:o.jsx(Ze,{label:e("adminUsers.risk"),value:i.risk,options:ER,onChange:k=>s({risk:k,page:void 0})})}),o.jsx("div",{className:"hidden md:block",children:o.jsx(Ze,{label:e("adminUsers.acquisitionSource"),value:i.source,options:w,onChange:k=>s({source:k,page:void 0})})}),o.jsx("div",{className:"hidden md:block",children:o.jsx(Ze,{label:e("adminUsers.signupMethod"),value:i.method,options:x,onChange:k=>s({method:k,page:void 0})})}),o.jsx(nn,{show:Zt(a,Wb),onReset:()=>r(Wb),className:"hidden self-end md:inline-flex",labelKey:"common.reset"}),o.jsxs(Gp,{iconOnly:!0,label:e("adminUsers.filters",{defaultValue:"Filters"}),active:Zt(a,["status","risk","source","method"]),className:"contents",panelClassName:"col-span-2 mt-1",children:[o.jsx(Ze,{label:e("adminUsers.status"),value:i.status,options:MR,onChange:k=>s({status:k,page:void 0})}),o.jsx(Ze,{label:e("adminUsers.risk"),value:i.risk,options:ER,onChange:k=>s({risk:k,page:void 0})}),o.jsx(Ze,{label:e("adminUsers.acquisitionSource"),value:i.source,options:w,onChange:k=>s({source:k,page:void 0})}),o.jsx(Ze,{label:e("adminUsers.signupMethod"),value:i.method,options:x,onChange:k=>s({method:k,page:void 0})}),o.jsx(nn,{show:Zt(a,Wb),onReset:()=>r(Wb),className:"justify-self-end",labelKey:"common.reset"})]})]}),o.jsx(Pt,{label:e("adminUsers.label"),rows:v.data?.items,isLoading:v.isLoading,error:v.error,emptyTitle:e("adminUsers.empty"),onRowClick:$,mobileCard:S,pagination:{total:v.data?.total??0,page:i.page,pageSize:i.size,pageSizeOptions:[10,20,50,100],onPageChange:k=>s({page:k===1?void 0:String(k)},{replace:!1}),onPageSizeChange:k=>s({size:k===20?void 0:String(k),page:void 0})},columns:[{header:e("adminUsers.email"),cell:k=>o.jsx(UJ,{user:k})},{header:e("adminUsers.note"),cell:k=>o.jsx(lBs,{note:k.adminNote})},{header:e("adminUsers.role"),cell:k=>o.jsx(AN,{role:k.adminRole,status:k.adminStatus})},{header:e("adminUsers.signupMethod"),cell:k=>o.jsx(WP,{method:k.signupMethod})},{header:e("adminUsers.lastLoginMethod"),cell:k=>o.jsx(WP,{method:k.lastLoginMethod})},{header:e("adminUsers.location"),cell:k=>{const T=LJ(k.signupCountry,t.locale);return T?o.jsxs("span",{className:"inline-flex items-center gap-1",children:[T.flag&&o.jsx("span",{children:T.flag}),o.jsxs("span",{className:"text-[color:var(--muted-foreground)]",children:[k.signupCity?`${k.signupCity} · `:"",T.name]})]}):o.jsx("span",{className:"text-[color:var(--muted-foreground)]",children:"—"})}},{header:e("adminUsers.preferredLocale"),cell:k=>k.preferredLocale?o.jsx("span",{className:"text-[color:var(--muted-foreground)]",children:k.preferredLocale}):o.jsx("span",{className:"text-[color:var(--muted-foreground)]",children:"—"})},{header:e("adminUsers.recharged"),align:"right",cell:k=>o.jsx("span",{className:"tabular-nums",children:rl(k.walletTotalRecharged,k.currency,t.locale)})},{header:e("adminUsers.walletBalance"),align:"right",cell:k=>o.jsx("span",{className:"tabular-nums",children:rl(k.walletBalance,k.currency,t.locale)})},{header:e("adminUsers.joined"),cell:k=>o.jsx("span",{className:"tabular-nums",children:Tc(k.createdAt)})},{header:e("adminUsers.lastLogin"),cell:k=>k.lastLoginAt?o.jsx("span",{className:"tabular-nums",children:Tc(k.lastLoginAt)}):e("adminUsers.never")},{header:e("adminUsers.action"),align:"right",sticky:"right",cell:k=>o.jsx(K,{variant:"outline",size:"sm",onClick:()=>$(k),children:e("adminUsers.view")})}]})]})}const vT=["overview","network","recentCalls","apiKeys","payments","refunds","subscription","referrals","rewards","audit"],uBs=56;function mBs(e){const t=document.getElementById(e);if(!t)return;let n=t.parentElement;for(;n&&!/(auto|scroll)/.test(getComputedStyle(n).overflowY);)n=n.parentElement;if(!n)return;const a=n.scrollTop+t.getBoundingClientRect().top-n.getBoundingClientRect().top-uBs;n.scrollTo({top:Math.max(0,a),behavior:"smooth"})}function pBs(){const{t:e}=W(),[t,n]=h.useState(vT[0]);return h.useEffect(()=>{const a=new IntersectionObserver(s=>{const r=s.filter(c=>c.isIntersecting);if(r.length===0)return;const i=r.reduce((c,d)=>c.boundingClientRect.top<d.boundingClientRect.top?c:d);n(i.target.id)},{rootMargin:"-15% 0px -80% 0px"});for(const s of vT){const r=document.getElementById(s);r&&a.observe(r)}return()=>a.disconnect()},[]),o.jsx("nav",{className:"sticky top-0 z-10 max-w-full overflow-hidden border-b border-[color:var(--border)] bg-[color:var(--background)]/90 py-2 text-xs backdrop-blur sm:text-sm",children:o.jsx("div",{className:"flex max-w-full gap-1 overflow-x-auto overscroll-x-contain pb-1",children:vT.map(a=>o.jsx("a",{href:`#${a}`,"aria-current":t===a?"true":void 0,onClick:s=>{s.preventDefault(),n(a),mBs(a)},className:X("flex min-h-8 shrink-0 items-center whitespace-nowrap rounded px-2.5 py-1 transition-colors",t===a?"bg-[color:var(--muted)] font-medium text-[color:var(--foreground)]":"text-[color:var(--muted-foreground)] hover:bg-[color:var(--muted)] hover:text-[color:var(--foreground)]"),children:e(`adminUserDetail.nav.${a}`)},a))})})}function Br({id:e,title:t,action:n,children:a}){return o.jsxs("section",{id:e,className:"grid min-w-0 grid-cols-[minmax(0,1fr)] gap-3",children:[o.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between",children:[o.jsx("h2",{className:"text-sm font-semibold",children:t}),n]}),a]})}function bg(){const{t:e}=W();return o.jsx(Ee,{className:"p-4 text-sm text-[color:var(--muted-foreground)]",children:e("adminUserDetail.noBlockPerm")})}function fBs({free:e}){const{t}=W(),n=Te();if(!e)return null;const a=e.allowances??[];return a.length===0&&!e.paused?null:o.jsxs("div",{className:"grid min-w-0 grid-cols-[minmax(0,1fr)] gap-3",children:[o.jsx("h3",{className:"text-sm font-semibold",children:t("adminUserDetail.freeTokens.title")}),e.paused?o.jsx(Ee,{className:"p-4 text-sm text-[color:var(--muted-foreground)]",children:t("adminUserDetail.freeTokens.paused")}):null,a.length>0?o.jsx(Ee,{className:"divide-y divide-[color:var(--border)] p-4",children:a.map(s=>{const r=s.grantedTokens>0?Math.max(0,Math.min(100,s.consumedTokens/s.grantedTokens*100)):0;return o.jsxs("div",{className:"py-3 first:pt-0 last:pb-0",children:[o.jsxs("div",{className:"flex items-center justify-between gap-3",children:[o.jsx("span",{className:"text-sm font-medium",children:s.campaignName}),o.jsx("span",{className:"text-xs text-[color:var(--muted-foreground)]",children:t(s.cadence==="weekly"?"adminUserDetail.freeTokens.weekly":"adminUserDetail.freeTokens.daily")})]}),o.jsxs("div",{className:"mt-2 flex items-baseline gap-2 tabular-nums",children:[o.jsx("span",{className:"text-sm font-semibold",children:n.number(s.consumedTokens)}),o.jsxs("span",{className:"text-xs text-[color:var(--muted-foreground)]",children:["/ ",n.number(s.grantedTokens)," ",t("adminUserDetail.freeTokens.tokensUnit")]}),o.jsx("span",{className:"ml-auto text-xs text-[color:var(--muted-foreground)]",children:t("adminUserDetail.freeTokens.remaining",
972{value:n.number(s.remainingTokens)})})]}),o.jsx(iy,{value:r,className:"mt-2",indicatorClassName:r>=90?"bg-[color:var(--warning)]":void 0}),s.models.length>0?o.jsx("p",{className:"mt-2 break-all text-xs text-[color:var(--muted-foreground)]",children:s.models.join(" · ")}):null]},s.campaignPublicId)})}):null]})}function gBs({user:e,canWriteUser:t,canGrant:n}){const{t:a}=W(),s=Te(),i=K0({userPublicId:e.publicId}).data?.summary,c=t||n;return o.jsxs("div",{className:"grid min-w-0 grid-cols-[minmax(0,1fr)] gap-6",children:[o.jsxs(Ee,{className:"grid gap-4 p-4 sm:grid-cols-2 lg:grid-cols-3",children:[o.jsx(Kr,{label:a("adminUsers.walletBalance"),value:e.wallet?.totalCredit!=null?Number(e.wallet.totalCredit):null,format:d=>s.currency(d,e.wallet?.currency??"USD")}),o.jsx(Kr,{label:a("adminUsers.recharged"),value:e.wallet?.totalRecharged!=null?Number(e.wallet.totalRecharged):null,format:d=>s.currency(d,e.wallet?.currency??"USD"),color:"blue"}),o.jsx(Kr,{label:a("adminUsers.bonusGranted"),value:e.wallet?.totalGranted!=null?Number(e.wallet.totalGranted):null,format:d=>s.currency(d,e.wallet?.currency??"USD"),color:"purple"}),o.jsx(Kr,{label:a("adminUsers.consumed"),value:e.wallet?.totalConsumed!=null?Number(e.wallet.totalConsumed):null,format:d=>s.currency(d,e.wallet?.currency??"USD")}),o.jsx(Kr,{label:a("adminUsers.refunded"),value:e.wallet?.totalRefunded!=null?Number(e.wallet.totalRefunded):null,format:d=>s.currency(d,e.wallet?.currency??"USD"),color:"orange"}),o.jsx(Kr,{label:a("adminUsers.requests"),value:i?.requestCount??null,format:d=>s.number(Math.round(d))})]}),o.jsxs(Ee,{className:"grid gap-2 p-4",children:[o.jsx("span",{className:"text-sm font-medium",children:a("adminUsers.note")}),t?o.jsx(WUs,{user:e}):e.adminNote?o.jsx("p",{className:"whitespace-pre-wrap break-words text-sm",children:e.adminNote}):o.jsx("p",{className:"text-sm text-[color:var(--muted-foreground)]",children:a("adminUsers.noteEmpty")})]}),o.jsx(fBs,{free:e.freeTokens}),c?o.jsxs("div",{className:"grid min-w-0 grid-cols-[minmax(0,1fr)] gap-4",children:[o.jsx("h3",{className:"text-sm font-semibold",children:a("adminUsers.actionsSection")}),t?o.jsx(KUs,{user:e}):null,t?o.jsx(QUs,{user:e}):null,n?o.jsx(VUs,{user:e}):null]}):null,o.jsxs("div",{className:"divide-y divide-[color:var(--border)]",children:[o.jsx(vo,{label:a("adminUsers.role"),value:o.jsx(AN,{role:e.adminRole,status:e.adminStatus})}),o.jsx(vo,{label:a("adminUsers.risk"),value:o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(Oe,{value:e.riskStatus}),o.jsx("span",{className:"text-[color:var(--muted-foreground)]",children:a("adminUsers.score",{score:e.signupRiskScore??0})})]})}),o.jsx(vo,{label:a("adminUsers.emailVerified"),value:e.emailVerified?a("adminUsers.yes"):a("adminUsers.no")}),o.jsx(vo,{label:a("adminUsers.signupMethod"),value:qUs([ct(e.signupMethod),e.signupCountry])}),o.jsx(YUs,{user:e,canWrite:t}),o.jsx(vo,{label:a("adminUsers.signupBonus"),value:o.jsx(Oe,{value:e.signupBonusStatus,label:ct(e.signupBonusStatus)})}),o.jsx(vo,{label:a("adminUsers.onboarding"),value:o.jsx(Oe,{value:e.onboardingState,label:ct(e.onboardingState)})}),o.jsx(vo,{label:a("adminUsers.localeTz"),value:`${e.preferredLocale} · ${e.timezone}`}),o.jsx(vo,{label:a("adminUsers.lastLogin"),value:e.lastLoginAt?Tc(e.lastLoginAt):a("adminUsers.never")}),o.jsx(vo,{label:a("adminUsers.lastLoginMethod"),value:ct(e.lastLoginMethod)}),o.jsx(vo,{label:a("adminUsers.joined"),value:Tc(e.createdAt)}),o.jsx(vo,{label:"ID",value:o.jsx("span",{className:"font-mono text-xs",children:e.publicId})})]})]})}function hBs({payment:e,userEmail:t}){const{t:n}=W(),[a,s]=h.useState(!1);return o.jsxs(o.Fragment,{children:[o.jsx(K,{variant:"outline",size:"sm",onClick:()=>s(!0),children:n("adminUserDetail.refund")}),o.jsx(XZ,{payment:e,open:a,onOpenChange:s,userEmail:t})]})}function yBs({publicId:e,userEmail:t,canRefund:n}){const{t:a}=W(),s=Te(),r=HZ({userPublicId:e,limit:"20"});return o.jsx(Pt,{rows:r.data?.items,isLoading:r.isLoading,error:r.error,emptyTitle:a("adminUserDetail.payments.empty"),columns:[{header:a("adminUserDetail.col.amount"),align:"right",cell:i=>o.jsx("span",{className:"tabular-nums",children:rl(i.amount,i.currency,s.locale)})},{header:a("adminUserDetail.col.credit"),align:"right",cell:i=>o.jsx("span",{className:"tabular-nums",children:rl(i.creditAmount,i.currency,s.locale)})},{header:a("adminUserDetail.col.status"),cell:i=>o.jsx(Oe,{value:i.status})},{header:a("adminUserDetail.col.provider"),cell:i=>i.provider,mobileValue:"wrap"},{header:a("adminUserDetail.col.createdAt"),cell:i=>o.jsx("span",{title:s.dateTime(i.createdAt),children:s.relativeTime(i.createdAt)})},...n?[{header:a("adminUserDetail.col.action"),align:"right",sticky:"right",cell:i=>i.status==="paid"?o.jsx(hBs,{payment:i,userEmail:t}):null}]:[]]})}function vBs({publicId:e}){const{t}=W(),n=Te(),a=VZ({userPublicId:e,limit:"20"});return o.jsx(Pt,{rows:a.data?.items,isLoading:a.isLoading,error:a.error,emptyTitle:t("adminUserDetail.refunds.empty"),columns:[{header:t("adminUserDetail.col.amount"),align:"right",cell:s=>o.jsx("span",{className:"tabular-nums",children:rl(s.amount,s.currency,n.locale)})},{header:t("adminUserDetail.col.type"),cell:s=>o.jsx(Oe,{value:s.type,label:ct(s.type)})},{header:t("adminUserDetail.col.status"),cell:s=>o.jsx(Oe,{value:s.status})},{header:t("adminUserDetail.col.originalTx"),mobileValue:"break-all",cell:s=>s.originalTxPublicId?o.jsx("span",{className:"font-mono text-xs",children:s.originalTxPublicId}):"—"},{header:t("adminUserDetail.col.createdAt"),cell:s=>o.jsx("span",{title:n.dateTime(s.createdAt),children:n.relativeTime(s.createdAt)})}]})}function bBs({publicId:e}){const{t}=W(),n=Te(),a=gIs(e,{limit:"20"});return o.jsxs(o.Fragment,{children:[o.jsx("p",{className:"text-xs text-[color:var(--muted-foreground)]",children:t("adminUserDetail.rewards.note")}),o.jsx(Pt,{rows:a.data?.items,isLoading:a.isLoading,error:a.error,emptyTitle:t("adminUserDetail.rewards.empty"),columns:[{header:t("adminUserDetail.col.type"),cell:s=>o.jsx(Oe,{value:s.type,label:ct(s.type)})},{header:t("adminUserDetail.col.remaining"),align:"right",cell:s=>o.jsx("span",{className:"tabular-nums",children:rl(s.remaining,"USD",n.locale)})},{header:t("adminUserDetail.col.initial"),align:"right",cell:s=>o.jsx("span",{className:"tabular-nums",children:rl(s.initialAmount,"USD",n.locale)})},{header:t("adminUserDetail.col.status"),cell:s=>o.jsx(Oe,{value:s.status})},{header:t("adminUserDetail.col.expiresAt"),cell:s=>s.expiresAt?n.dateTime(s.expiresAt):"—"},{header:t("adminUserDetail.col.createdAt"),cell:s=>o.jsx("span",{title:n.dateTime(s.createdAt),children:n.relativeTime(s.createdAt)})}]})]})}function xBs({publicId:e}){const{t}=W(),n=Te(),a=F3s(e),s=z3s(e),r=a.data;return o.jsxs("div",{className:"grid min-w-0 grid-cols-[minmax(0,1fr)] gap-3",children:[o.jsxs(Ee,{className:"grid gap-4 p-4 sm:grid-cols-2 lg:grid-cols-4",children:[o.jsx(Kr,{label:t("adminUserDetail.referrals.totalEarned"),value:r?Number(r.totalEarned):null,format:i=>n.currency(i,"USD")}),o.jsx(Kr,{label:t("adminUserDetail.referrals.frozenEarned"),value:r?Number(r.frozenEarned):null,format:i=>n.currency(i,"USD")}),o.jsx(Kr,{label:t("adminUserDetail.referrals.refereeCount"),value:r?r.refereeCount:null,format:i=>n.number(Math.round(i))}),o.jsx(Kr,{label:t("adminUserDetail.referrals.activeCount"),value:r?r.activeCount:null,format:i=>n.number(Math.round(i))})]}),o.jsx(Pt,{rows:s.data?.items,isLoading:s.isLoading,error:s.error,emptyTitle:t("adminUserDetail.referrals.empty"),columns:[{header:t("adminUserDetail.col.event"),cell:i=>ct(i.eventType)},{header:t("adminUserDetail.referrals.role"),cell:i=>ct(i.recipientRole)},{header:t("adminUserDetail.referrals.counterparty"),mobileValue:"break-all",cell:i=>o.jsx(Vd,{email:i.counterpartyEmail,publicId:i.counterpartyPublicId})},{header:t("adminUserDetail.col.amount"),align:"right",cell:i=>o.jsx("span",{className:"tabular-nums",children:i.grantAmount?rl(i.grantAmount,"USD",n.locale):"—"})},{header:t("adminUserDetail.col.status"),cell:i=>o.jsx(Oe,{value:i.status})},{header:t("adminUserDetail.col.createdAt"),cell:i=>o.jsx("span",{title:n.dateTime(i.createdAt),children:n.relativeTime(i.createdAt)})}]})]})}function $Bs({publicId:e}){const{t}=W(),n=Te(),a=WZ({targetPublicId:e,limit:"20"});return o.jsx(Pt,{rows:a.data?.items,isLoading:a.isLoading,error:a.error,emptyTitle:t("adminUserDetail.audit.empty"),columns:[{header:t("adminUserDetail.col.action"),mobileValue:"break-all",cell:s=>o.jsx("span",{className:"font-mono text-xs",children:s.action})},{header:t("adminUserDetail.col.severity"),cell:s=>o.jsx(Oe,{value:s.severity})},{header:t("adminUserDetail.col.createdAt"),cell:s=>o.jsx("span",{title:n.dateTime(s.createdAt),children:n.relativeTime(s.createdAt)})}]})}function wBs(){const{t:e}=W(),{publicId:t}=o_(),n=qa(),a=pIs(t??null),s=a.data,r=Go(n.data?.admin,"ops.users.write"),i=Go(n.data?.admin,"ops.growth.write"),c=Go(n.data?.admin,"ops.billing.read"),d=Go(n.data?.admin,"ops.billing.write"),m=Go(n.data?.admin,"ops.audit.read");return o.jsx(Vt,{title:s?.email??e("adminUserDetail.title"),description:s?.displayName??t??"",action:o.jsxs(Ta,{to:Be.adminUsers,className:ur({variant:"outline",size:"sm"}),children:[o.jsx(Iw,{className:"size-3.5"}),e("adminUserDetail.backToList")]}),children:a.isLoading?o.jsx("p",{className:"text-sm text-[color:var(--muted-foreground)]",children:e("adminUsers.loading")}):a.error?o.jsx("p",{className:"text-sm text-[color:var(--destructive)]",children:a.error.message}):s&&t?o.jsxs("div",{className:"grid gap-8",children:[o.jsx(pBs,{}),o.jsx(Br,{id:"overview",title:e("adminUserDetail.nav.overview"),children:o.jsx(gBs,{user:s,canWriteUser:r,canGrant:i})}),o.jsx(Br,{id:"network",title:e("adminUserDetail.nav.network"),children:o.jsx(tBs,{user:s})}),o.jsx(Br,{id:"recentCalls",title:e("adminUserDetail.nav.recentCalls"),children:o.jsx(aBs,{userPublicId:t})}),o.jsx(Br,{id:"apiKeys",title:e("adminUserDetail.nav.apiKeys"),children:c?o.jsx(oBs,{publicId:t}):o.jsx(bg,{})}),o.jsx(Br,{id:"payments",title:e("adminUserDetail.nav.payments"),children:c?o.jsx(yBs,{publicId:t,userEmail:s.email,canRefund:d}):o.jsx(bg,{})}),o.jsx(Br,{id:"refunds",title:e("adminUserDetail.nav.refunds"),children:c?o.jsx(vBs,{publicId:t}):o.jsx(bg,{})}),o.jsx(Br,{id:"subscription",title:e("adminUserDetail.nav.subscription"),children:o.jsx(Ee,{className:"p-4 text-sm text-[color:var(--muted-foreground)]",children:e("adminUserDetail.subscription.phase2")})}),o.jsx(Br,{id:"referrals",title:e("adminUserDetail.nav.referrals"),children:o.jsx(xBs,{publicId:t})}),o.jsx(Br,{id:"rewards",title:e("adminUserDetail.nav.rewards"),children:c?o.jsx(bBs,{publicId:t}):o.jsx(bg,{})}),o.jsx(Br,{id:"audit",title:e("adminUserDetail.nav.audit"),children:m?o.jsx($Bs,{publicId:t}):o.jsx(bg,{})})]}):o.jsx("p",{className:"text-sm text-[color:var(--destructive)]",children:e("adminUsers.empty")})})}const P8=["status","eventType","page"],BJ=[{value:"pending",label:"pending"},{value:"processing",label:"processing"},{value:"processed",label:"processed"},{value:"failed",label:"failed"},{value:"dead_letter",label:"dead_letter"},{value:"ignored",label:"ignored"}],kBs=[{value:"",label:"All statuses"},...BJ],CBs=[{value:"checkout.session.completed",label:"checkout.session.completed"},{value:"payment_intent.succeeded",label:"payment_intent.succeeded"},{value:"charge.refunded",label:"charge.refunded"},{value:"charge.dispute.created",label:"charge.dispute.created"}],SBs=[{value:"",label:"All event types"},...CBs];function ABs({row:e,onOpen:t,onRetry:n,retrying:a}){const{t:s}=W(),r=Te(),i=["failed","dead_letter","ignored"].includes(e.status);return o.jsxs(Dn,{onClick:t,activation:"pointer",className:"py-2",children:[o.jsx(kr,{title:o.jsx("button",{type:"button",onClick:t,className:"min-w-0 max-w-full truncate text-left font-[family-name:var
972(--font-mono)] text-xs hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[color:var(--ring)]",children:e.event_type}),meta:o.jsx("span",{className:"block max-w-full truncate font-[family-name:var(--font-mono)]",children:e.event_id}),trailing:o.jsxs(Cr,{children:[o.jsx(Oe,{value:e.status}),o.jsx(Xt,{variant:e.livemode?"success":"warning",className:"h-5 rounded-md px-1.5 text-11",children:e.livemode?"live":"test"}),i?o.jsx(K,{type:"button",variant:"secondary",size:"icon",onClick:n,disabled:a,"aria-label":s("adminWebhooks.retry"),className:"size-8",children:o.jsx(Kp,{className:"size-3.5"})}):null]})}),o.jsxs(Ha,{className:"grid-cols-[minmax(0,1fr)_auto]",children:[o.jsx(Qe,{label:s("adminWebhooks.receivedAt"),children:r.dateTime(e.received_at)}),o.jsx(Qe,{label:s("adminWebhooks.attempts"),align:"right",children:e.attempt_count}),e.last_error?o.jsx(Qe,{label:s("adminWebhooks.lastError"),className:"col-span-2",children:o.jsx("span",{className:"block max-w-full truncate text-[color:var(--destructive)]",children:e.last_error})}):null]})]})}function TBs(){const{t:e}=W(),t=Te(),[n,a]=h.useState(null),{params:s,patch:r,remove:i}=Mt(),c=h.useMemo(()=>({status:Pe(s,"status"),eventType:Pe(s,"eventType"),page:ln(s,"page",1)}),[s]),d=QZ({status:c.status||void 0,eventType:c.eventType||void 0,limit:100}),m=kOs(),f=Re(),p=wOs(n),y=S=>{m.mutate(S.public_id,{onSuccess:()=>{ie.success(e("adminWebhooks.retrySubmittedTitle"),{description:e("adminWebhooks.retrySubmittedBody",{event:S.event_id})}),f.invalidateQueries({queryKey:["ops","webhooks"]})},onError:k=>{ie.error(e("adminWebhooks.retryFailedTitle"),{description:k.message})}})},v=d.data?.statusCounts??[],$=Object.fromEntries(v.map(S=>[S.status,Number(S.count)])),x=d.data?.items??[],w=hN(x,{page:c.page,onPageChange:S=>r({page:S===1?void 0:String(S)},{replace:!1})});return o.jsxs(Vt,{title:e("adminWebhooks.title"),description:e("adminWebhooks.description"),children:[o.jsx("div",{className:"grid grid-cols-2 gap-2 sm:gap-3 md:grid-cols-3 xl:grid-cols-6",children:BJ.map(S=>o.jsxs(Ee,{className:"min-w-0 p-2.5 sm:p-3",children:[o.jsx("p",{className:"truncate text-2xs font-semibold uppercase text-[color:var(--muted-foreground)] sm:text-xs sm:tracking-wider",children:S.label}),o.jsx("p",{className:"mt-1 font-[family-name:var(--font-mono)] text-lg font-semibold tabular-nums sm:text-xl",children:o.jsx(Ho,{value:$[S.value]??0,format:k=>t.number(Math.round(k))})})]},S.value))}),o.jsxs("div",{className:"mb-3 mt-4 flex flex-col gap-3 sm:mt-6 sm:flex-row sm:items-end",children:[o.jsx(Ze,{label:e("adminWebhooks.statusFilter"),value:c.status,options:kBs,onChange:S=>r({status:S,page:void 0})}),o.jsx(Ze,{label:e("adminWebhooks.eventTypeFilter"),value:c.eventType,options:SBs,onChange:S=>r({eventType:S,page:void 0})}),o.jsx(nn,{show:Zt(s,P8),onReset:()=>i(P8)})]}),o.jsxs(Ee,{children:[o.jsx("div",{className:"hidden md:block",children:o.jsxs(Ua,{"aria-label":e("adminWebhooks.title"),className:"min-w-[760px]",children:[o.jsx(Po,{children:o.jsxs(qt,{children:[o.jsx(Ie,{children:e("adminWebhooks.receivedAt")}),o.jsx(Ie,{children:e("adminWebhooks.eventType")}),o.jsx(Ie,{children:e("adminWebhooks.status")}),o.jsx(Ie,{children:e("adminWebhooks.mode")}),o.jsx(Ie,{className:"text-right",children:e("adminWebhooks.attempts")}),o.jsx(Ie,{className:"text-right"})]})}),o.jsx(Ba,{children:w.pageRows.map(S=>o.jsxs(qt,{children:[o.jsx(Me,{children:t.dateTime(S.received_at)}),o.jsx(Me,{children:o.jsx("button",{onClick:()=>a(S.public_id),className:"font-[family-name:var(--font-mono)] text-xs hover:underline",children:S.event_type})}),o.jsxs(Me,{children:[o.jsx(Oe,{value:S.status}),S.last_error?o.jsx("span",{className:"ml-2 text-xs text-[color:var(--destructive)]",title:S.last_error,children:"⚠"}):null]}),o.jsx(Me,{children:o.jsx(Xt,{variant:S.livemode?"success":"warning",className:"rounded-full",children:S.livemode?"live":"test"})}),o.jsx(Me,{className:"text-right tabular-nums",children:S.attempt_count}),o.jsx(Me,{className:"text-right",children:["failed","dead_letter","ignored"].includes(S.status)?o.jsxs(K,{variant:"secondary",size:"sm",onClick:()=>y(S),disabled:m.isPending,children:[o.jsx(Kp,{className:"size-3.5"}),e("adminWebhooks.retry")]}):null})]},S.public_id))})]})}),o.jsx("div",{className:"grid min-w-0 max-w-full grid-cols-[minmax(0,1fr)] md:hidden",children:w.pageRows.map(S=>o.jsx(ABs,{row:S,onOpen:()=>a(S.public_id),onRetry:()=>y(S),retrying:m.isPending},S.public_id))}),x.length===0?o.jsxs("div",{className:"p-6 text-center text-sm text-[color:var(--muted-foreground)]",children:[e("adminWebhooks.empty"),o.jsx("br",{}),o.jsx("span",{className:"text-xs",children:e("adminWebhooks.emptyHint")})]}):o.jsx(V0,{total:w.total,page:w.page,pageSize:w.pageSize,onPageChange:w.onPageChange,onPageSizeChange:w.onPageSizeChange})]}),o.jsx(Vn,{open:!!n,onOpenChange:S=>!S&&a(null),children:o.jsxs(Nn,{className:"w-[calc(100vw-1rem)] min-w-0 overflow-y-auto sm:w-[480px]",children:[o.jsxs(Pa,{children:[o.jsx(Rn,{className:"break-words",children:p.data?.webhook.event_type??"..."}),o.jsx(ua,{className:"break-all",children:p.data?.webhook.event_id})]}),p.isLoading?o.jsx("p",{className:"mt-4 text-sm text-[color:var(--muted-foreground)]",children:e("adminWebhooks.detailLoa
972ding")}):p.data?o.jsxs("div",{className:"mt-4 space-y-3",children:[o.jsxs("dl",{className:"space-y-2 text-xs",children:[o.jsxs("div",{className:"flex justify-between",children:[o.jsx("dt",{className:"text-[color:var(--muted-foreground)]",children:e("adminWebhooks.status")}),o.jsx("dd",{children:p.data.webhook.status})]}),o.jsxs("div",{className:"flex justify-between",children:[o.jsx("dt",{className:"text-[color:var(--muted-foreground)]",children:e("adminWebhooks.mode")}),o.jsx("dd",{children:p.data.webhook.livemode?"live":"test"})]}),o.jsxs("div",{className:"flex justify-between",children:[o.jsx("dt",{className:"text-[color:var(--muted-foreground)]",children:e("adminWebhooks.attempts")}),o.jsx("dd",{children:p.data.webhook.attempt_count})]}),p.data.webhook.last_error?o.jsxs("div",{children:[o.jsx("dt",{className:"text-[color:var(--muted-foreground)]",children:e("adminWebhooks.lastError")}),o.jsx("dd",{className:"mt-1 rounded-md bg-[color:var(--destructive)]/10 p-2 text-[color:var(--destructive)]",children:p.data.webhook.last_error})]}):null]}),o.jsxs("details",{className:"min-w-0",children:[o.jsx("summary",{className:"cursor-pointer text-sm font-medium",children:e("adminWebhooks.payload")}),o.jsx("pre",{className:"mt-2 max-h-96 min-w-0 overflow-auto whitespace-pre-wrap break-all rounded-md bg-[color:var(--muted)] p-3 text-xs",children:JSON.stringify(p.data.webhook.payload,null,2)})]})]}):null]})})]})}function RBs(){const{t:e}=W(),t=Te(),n=No(),{params:a,patch:s}=Mt(),r=Pe(a,"status"),i=Pe(a,"category"),c=Pe(a,"q"),d=h.useMemo(()=>{const p={};return r&&(p.status=r),i&&(p.category=i),c&&(p.q=c),p},[r,i,c]),m=Uxe(d),f=m.data?.pages.flatMap(p=>p.items)??[];return o.jsxs(Vt,{title:e("support.admin.title"),description:e("support.subtitle"),children:[o.jsxs("div",{className:"mb-3 grid min-w-0 grid-cols-1 gap-2 min-[360px]:grid-cols-2 sm:mb-4 sm:flex sm:flex-wrap",children:[o.jsx(ge,{className:"w-full min-[360px]:col-span-2 sm:w-64",placeholder:e("support.filters.search"),defaultValue:c,onChange:p=>s({q:p.target.value||void 0})}),o.jsx("div",{className:"min-w-0 sm:w-44",children:o.jsxs(Ms,{value:r||"all",onValueChange:p=>s({status:p==="all"?void 0:p}),children:[o.jsx(as,{children:o.jsx(Es,{placeholder:e("support.filters.allStatuses")})}),o.jsxs(os,{children:[o.jsx(zn,{value:"all",children:e("support.filters.allStatuses")}),$F.map(p=>o.jsx(zn,{value:p,children:e(`support.status.${p}`)},p))]})]})}),o.jsx("div",{className:"min-w-0 sm:w-44",children:o.jsxs(Ms,{value:i||"all",onValueChange:p=>s({category:p==="all"?void 0:p}),children:[o.jsx(as,{children:o.jsx(Es,{placeholder:e("support.filters.allCategories")})}),o.jsxs(os,{children:[o.jsx(zn,{value:"all",children:e("support.filters.allCategories")}),xF.map(p=>o.jsx(zn,{value:p,children:e(`support.category.${p}`)},p))]})]})})]}),m.isLoading?o.jsx("div",{className:"space-y-2",children:Array.from({length:6}).map((p,y)=>o.jsx(Rt,{className:"h-12 w-full"},y))}):f.length?o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"hidden md:block",children:o.jsxs(Ua,{children:[o.jsx(Po,{children:o.jsxs(qt,{children:[o.jsx(Ie,{children:e("support.columns.subject")}),o.jsx(Ie,{children:e("support.columns.user")}),o.jsx(Ie,{children:e("support.columns.category")}),o.jsx(Ie,{children:e("support.columns.status")}),o.jsx(Ie,{children:e("support.columns.updated")})]})}),o.jsx(Ba,{children:f.map(p=>o.jsxs(qt,{className:"cursor-pointer",onClick:()=>n(YI(p.publicId)),children:[o.jsxs(Me,{className:X("flex items-center gap-2",p.unread&&"font-semibold"),children:[p.unread?o.jsx("span",{className:"size-2 rounded-full bg-[color:var(--primary)]"}):null,p.subject]}),o.jsx(Me,{className:"text-[color:var(--muted-foreground)]",children:p.userEmail}),o.jsx(Me,{children:o.jsx(Xt,{variant:"outline",children:e(`support.category.${p.category}`)})}),o.jsx(Me,{children:o.jsx(Pp,{status:p.status})}),o.jsx(Me,{className:"text-[color:var(--muted-foreground)]",children:p.lastMessageAt?t.relativeTime(p.lastMessageAt):t.relativeTime(p.createdAt)})]},p.publicId))})]})}),o.jsx("div",{className:"grid min-w-0 gap-2 md:hidden",children:f.map(p=>o.jsxs(jh,{className:"p-2 shadow-none",onClick:()=>n(YI(p.publicId)),children:[o.jsx(Nh,{title:o.jsxs("span",{className:X("flex min-w-0 items-start gap-2 text-13 leading-5",p.unread&&"font-semibold"),children:[p.unread?o.jsx("span",{className:"size-2 shrink-0 rounded-full bg-[color:var(--primary)]"}):null,o.jsx("span",{className:"line-clamp-2 min-w-0 overflow-hidden break-words [overflow-wrap:anywhere]",children:p.subject})]}),meta:o.jsxs("span",{className:"inline-flex min-w-0 max-w-full flex-wrap items-center gap-x-2 gap-y-1 text-11 leading-4",children:[o.jsx("span",{className:"shrink-0 tabular-nums",children:p.lastMessageAt?t.relativeTime(p.lastMessageAt):t.relativeTime(p.createdAt)}),o.jsx(Pp,{status:p.status})]})}),o.jsxs("div",{className:"mt-1.5 flex min-w-0 flex-wrap items-center gap-x-2 gap-y-1 text-11 leading-4 text-[color:var(--muted-foreground)]",children:[o.jsx("span",{className:"min-w-0 break-all",children:p.userEmail}),o.jsx(Xt,{variant:"outline",className:"max-w-full px-1.5 py-0 text-11 leading-4",children:e(`support.category.${p.category}`)})]})]},p.publicId))})]}):o.jsx(Ot,{icon:o.jsx("span",{className:"text-3xl",children:"🎫"}),title:e("support.empty.title")}),m.hasNextPage?o.jsx("div",{className:"mt-4 flex justify-center",children:o.jsx(K,{variant:"outline",className:"w-full sm:w-auto",onClick:()=>m.fetchNextPage(),disabled:m.isFetchingNextPage,children:e("support.loadMore")})}):null]})}function PBs(){const{t:e}=W(),t=No(),{publicId:n=""}=o_(),a=Bxe(n),s=Fxe(n),r=zxe(n);async function i(m,f){try{await s.mutateAsync({body:m,attachments:f}),ie.success(e("support.toast.replied"))}catch{ie.error(e("support.toast.error"))}}async function c(m){try{await r.mutateAsync(m),ie.success(e("support.toast.statusUpdated"))}catch{ie.error(e("support.toast.error"))}}const d=a.data?.status;return o.jsx(Vt,{title:e("support.admin.title"),description:a.data?.publicId,action:o.jsxs("div",{className:"grid w-full min-w-0 grid-cols-2 gap-2 min-[360px]:grid-cols-[repeat(3,minmax(0,1fr))] sm:flex sm:w-auto 
972sm:flex-wrap sm:items-center sm:justify-end",children:[d&&d!=="closed"?o.jsxs(o.Fragment,{children:[d!=="resolved"?o.jsx(K,{className:"min-w-0 px-2",variant:"outline",size:"sm",onClick:()=>void c("resolved"),children:o.jsx("span",{className:"min-w-0 truncate",children:e("support.admin.resolve")})}):null,o.jsx(K,{className:"min-w-0 px-2",variant:"outline",size:"sm",onClick:()=>void c("closed"),children:o.jsx("span",{className:"min-w-0 truncate",children:e("support.admin.close")})})]}):d==="closed"?o.jsx(K,{className:"min-w-0 px-2",variant:"outline",size:"sm",onClick:()=>void c("open"),children:o.jsx("span",{className:"min-w-0 truncate",children:e("support.admin.reopen")})}):null,o.jsxs(K,{className:"min-w-0 px-2",variant:"outline",size:"sm",onClick:()=>t(Be.adminSupport),children:[o.jsx(Iw,{className:"size-4"}),o.jsx("span",{className:"min-w-0 truncate",children:e("support.thread.back")})]})]}),children:a.isLoading?o.jsx("div",{className:"space-y-3",children:Array.from({length:3}).map((m,f)=>o.jsx(Rt,{className:"h-16 w-2/3"},f))}):a.data?o.jsxs("div",{className:"flex h-[calc(100dvh-11rem)] min-h-[420px] min-w-0 flex-col overflow-hidden md:h-[calc(100dvh-220px)] md:min-h-[420px]",children:[o.jsx("div",{className:"mb-3 min-w-0 rounded-md border border-[color:var(--border)] bg-[color:var(--card)] p-2.5 sm:p-3",children:o.jsxs("div",{className:"flex min-w-0 flex-wrap items-start justify-between gap-2",children:[o.jsxs("div",{className:"min-w-0",children:[o.jsx("h2",{className:"break-words text-sm font-semibold leading-5 text-[color:var(--heading)] [overflow-wrap:anywhere]",children:a.data.subject}),o.jsx("p",{className:"mt-1 break-all text-xs text-[color:var(--muted-foreground)]",children:a.data.userEmail})]}),o.jsx("div",{className:"shrink-0",children:o.jsx(Pp,{status:a.data.status})})]})}),o.jsx("div",{className:"min-h-0 flex-1",children:o.jsx(zZ,{detail:a.data,scope:"admin",canReply:a.data.status!=="closed",onReply:i,sending:s.isPending})})]}):o.jsx(Ot,{icon:o.jsx("span",{className:"text-3xl",children:"🔍"}),title:e("support.notFound")})})}function wa({children:e,requiredPermission:t,requiredRole:n}){const{t:a}=W(),s=qa(),r=s.error instanceof rn?s.error:null;return s.isPending||r?.status===ko.unauthorized?o.jsx("div",{role:"status",className:"text-sm text-[color:var(--muted-foreground)]",children:a("adminGate.loading")}):s.data?.admin?n&&s.data.admin.role!==n?o.jsx(Qt,{title:a("adminGate.permissionRequired"),description:a("adminGate.permissionDescription")}):t&&!Go(s.data.admin,t)?o.jsx(Qt,{title:a("adminGate.permissionRequired"),description:a("adminGate.permissionDescription")}):e??o.jsx(yF,{}):o.jsx(Gd,{to:Be.usage,replace:!0})}const _Bs=h.lazy(()=>rF(()=>import("./mermaid-GHXKKRXX-CGcEX0fW.js").then(e=>e.C),__vite__mapDeps([0,1])));function jBs(){return o.jsx("div",{className:"min-h-0 flex-1 bg-[color:var(--background)]","aria-busy":"true"})}function NBs(){return o.jsxs(Oc,{children:[o.jsx(Ffe,{}),o.jsx(_ye,{}),o.jsxs(Wae,{basename:mp,future:{v7_relativeSplatPath:!0,v7_startTransition:!0},children:[o.jsx(Iye,{}),o.jsx(DBs,{})]})]})}function DBs(){const e=ls(),n=e.state?.backgroundLocation;return o.jsxs(o.Fragment,{children:[o.jsxs(IT,{location:n??e,children:[o.jsx(dt,{path:"/",element:o.jsx(Gd,{to:Be.usage,replace:!0})}),o.jsx(dt,{path:Be.login,element:o.jsx(Ifs,{})}),o.jsxs(dt,{element:o.jsx(Yps,{}),children:[o.jsx(dt,{path:Be.chat,element:o.jsx(h.Suspense,{fallback:o.jsx(jBs,{}),children:o.jsx(_Bs,{})})}),o.jsx(dt,{path:Be.logs,element:o.jsx(Xys,{})}),o.jsx(dt,{path:Be.models,element:o.jsx(hvs,{})}),o.jsx(dt,{path:Be.usage,element:o.jsx(OMs,{})}),o.jsx(dt,{path:Be.apiKeys,element:o.jsx(Yhs,{})}),o.jsx(dt,{path:Be.billing,element:o.jsx(qEs,{})}),o.jsx(dt,{path:Be.referrals,element:o.jsx(QEs,{})}),o.jsx(dt,{path:Be.tasks,element:o.jsx(nIs,{})}),o.jsx(dt,{path:Be.support,element:o.jsx(oIs,{})}),o.jsx(dt,{path:Be.supportTicket,element:o.jsx(iIs,{})}),o.jsx(dt,{path:Be.settings,element:o.jsx(uIs,{})}),o.jsxs(dt,{element:o.jsx(wa,{}),children:[o.jsx(dt,{path:"/admin",element:o.jsx(MBs,{})}),o.jsx(dt,{path:"/admin/dashboard",element:o.jsx(wa,{requiredPermission:"ops.dashboard.read",children:o.jsx(VOs,{})})}),o.jsx(dt,{path:"/admin/users",element:o.jsx(wa,{requiredPermission:"ops.users.read",children:o.jsx(dBs,{})})}),o.jsx(dt,{path:"/admin/users/:publicId",element:o.jsx(wa,{requiredPermission:"ops.users.read",children:o.jsx(wBs,{})})}),o.jsx(dt,{path:"/admin/billing/*",element:o.jsx(wa,{requiredPermission:"ops.billing.read",children:o.jsx(MOs,{})})}),o.jsx(dt,{path:"/admin/usage",element:o.jsx(wa,{requiredPermission:"ops.usage.read",children:o.jsx(UUs,{})})}),o.jsx(dt,{path:"/admin/rate-limits",element:o.jsx(wa,{requiredPermission:"ops.rate_limit.read",children:o.jsx(w5s,{})})}),o.jsx(dt,{path:"/admin/access",element:o.jsx(wa,{requiredPermission:"ops.users.read",children:o.jsx(T5s,{})})}),o.jsx(dt,{path:"/admin/domain-rules",element:o.jsx(wa,{requiredPermission:"ops.users.read",children:o.jsx(j5s,{})})}),o.jsx(dt,{path:"/admin/staff",element:o.jsx(wa,{requiredRole:"owner",children:o.jsx(D5s,{})})}),o.jsx(dt,{path:"/admin/growth",element:o.jsx(wa,{requiredPermission:"ops.growth.write",children:o.jsx(i4s,{})})}),o.jsx(dt,{path:"/admin/campaigns",element:o.jsx(wa,{requiredPermission:"ops.campaigns.read",children:o.jsx(D4s,{})})}),o.jsx(dt,{path:"/admin/models",element:o.jsx(wa,{requiredPermission:"ops.models.read",children:o.jsx(m5s,{})})}),o.jsx(dt,{path:"/admin/announcements",element:o.jsx(wa,{requiredPermission:"ops.content.write",children:o.jsx(f3s,{})})}),o.jsx(dt,{path:"/admin/upstream/*",element:o.jsx(wa,{requiredPermission:"ops.sub2api.read",children:o.jsx(K5s,{})})}),o.jsx(dt,{path:"/admin/audit-logs",element:o.jsx(wa,{requiredPermission:"ops.audit.read",children:o.jsx(bOs,{})})}),o.jsx(dt,{path:"/admin/webhooks",element:o.jsx(wa,{requiredPermission:"ops.billing.read",children:o.jsx(TBs,{})})}),o.jsx(dt,{path:"/admin/support",element:o.jsx(RBs,{})}),o.jsx(dt,{path:"/admin/support/:publicId",element:o.jsx(PBs,{})})]})]}),o.jsx(dt,{path:"*",element:o.jsx(Gd,{to:Be.usage,replace:!0})})]}),n?o.jsx(IT,{children:o.jsx(dt,{path:Be.settings,element:o.jsx(dIs,{})})}):null]})}function MBs(){const e=qa(),t=I9(e.data?.admin)[0]?.href??Be.usage;return o.jsx(Gd,{to:t,replace:!0})}const EBs=["dynamically imported module","importing a module script failed","error loading dynamically imported module","failed to load module script"];function _8(e){if(!e)return!1;const t=e;if(t.name==="ChunkLoadError")return!0;const n=typeof t.message=="string"?t.message.toLowerCase():"";return EBs.some(a=>n.includes(a))}const j8="oh:lazy-reload";function IBs(e){try{return e.getItem(j8)?!1:(e.setItem(j8,"1"),!0)}catch{return!1}}class OBs extends h.Component{constructor(){super(...arguments);Bo(this,"state",{error:null,reloading:!1})}static getDerivedStateFromError(n){return{error:n}}componentDidCatch(n,a){if(_8(n)){IBs(window.sessionStorage)&&(this.setState({reloading:!0}),window.location.reload());return}console.error("[console] unhandled render error",n,a.componentStack)}render(){const{error:n,reloading:a}=this.state;return n?a?o.jsx("div",{className:"min-h-screen bg-[color:var(--background)]","aria-busy":"true"}):o.jsx(LBs,{chunk:_8(n)}):this.props.children}}function LBs({chunk:e}){return o.jsxs("div",{className:"flex min-h-screen flex-col items-center justify-center gap-4 bg-[color:var(--background)] px-6 text-center",children:[o.jsxs("div",{className:"space-y-1.5",children:[o.jsx("h1",{className:"text-base font-semibold text-[color:var(--foreground)]",children:e?"页面需要刷新":"页面出错了"}),o.jsx("p",{className:"max-w-sm text-sm text-[color:var(--muted-foreground)]",children:e?"检测到新版本,刷新即可恢复。":"遇到了一个意
972外错误,刷新页面通常能解决。"})]}),o.jsx(K,{onClick:()=>window.location.reload(),children:"刷新重试"})]})}const UBs=[ko.unauthorized,ko.forbidden,ko.notFound];function BBs(e,t){return!(e>=1||t instanceof rn&&UBs.includes(t.status))}function FBs(){return new Ene({defaultOptions:{queries:{staleTime:3e4,refetchOnWindowFocus:!0,retry:BBs},mutations:{retry:!1}}})}try{sessionStorage.removeItem("oh:chunk-reload")}catch{}fj();const zBs=FBs();H8.createRoot(document.getElementById("root")).render(o.jsx(h.StrictMode,{children:o.jsx(OBs,{children:o.jsx(Ine,{client:zBs,children:o.jsx(NBs,{})})})}));export{Cc as $,Hm as A,Xt as B,Be as C,$u as D,Bp as E,yu as F,uy as G,Fp as H,Aa as I,st as J,Ao as K,lh as L,ybe as M,Fbe as N,ft as O,X$ as P,Hbe as Q,Se as R,hp as S,Gbe as T,Vn as U,Nn as V,Pa as W,Rn as X,KBs as Y,Rt as Z,js as _,Cw as a,t6s as a$,tl as a0,ia as a1,K_ as a2,ge as a3,_o as a4,Ls as a5,cs as a6,Oc as a7,Us as a8,Sc as a9,tbs as aA,nbs as aB,Xw as aC,abs as aD,rbs as aE,ibs as aF,b2 as aG,n6s as aH,wY as aI,k2 as aJ,BV as aK,QBs as aL,UV as aM,LV as aN,il as aO,NL as aP,r6s as aQ,w$ as aR,RU as aS,FCs as aT,Cys as aU,o as aV,yG as aW,RY as aX,e6s as aY,vU as aZ,A$ as a_,VBs as aa,vxe as ab,Fh as ac,rF as ad,ZBs as ae,a6s as af,Ij as ag,o6s as ah,JBs as ai,v2 as aj,Bvs as ak,Fvs as al,WO as am,Eg as an,Lt as ao,X as ap,Th as aq,je as ar,Ye as as,on as at,mG as au,vw as av,so as aw,oo as ax,Ce as ay,ebs as az,z_ as b,bU as b0,obs as b1,sbs as b2,SY as b3,Yx as b4,y2 as b5,yK as b6,yp as b7,vK as b8,Hx as b9,ie as bA,vt as bB,qa as bC,YBs as bD,ts as bE,Jh as bF,Te as bG,$K as bH,ke as bI,No as bJ,xH as bK,Ue as bL,Re as bM,s_ as bN,rz as bO,yhs as bP,W as bQ,XBs as bR,Ej as bS,Hge as ba,li as bb,h as bc,sj as bd,PCs as be,Pd as bf,Wx as bg,Sr as bh,cbs as bi,lbs as bj,Qw as bk,RSs as bl,Ay as bm,qY as bn,g1s as bo,j2 as bp,P2 as bq,T$ as br,D2 as bs,h1s as bt,M0 as bu,Sp as bv,p1s as bw,f1s as bx,Sys as by,lse as bz,ry as c,ay as d,sy as e,Aw as f,Sw as g,oy as h,$G as i,K as j,nj as k,zc as l,v9 as m,gR as n,Cy as o,py as p,zp as q,xu as r,La as s,qp as t,S9 as u,Ta as v,f_ as w,Xo as x,Zgs as y,$be as z};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.