@wengine-ai/claude-code-router-next 2.1.2 → 2.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +320 -320
- package/dist/index.html +2 -4
- package/package.json +2 -2
package/dist/index.html
CHANGED
|
@@ -7,9 +7,7 @@
|
|
|
7
7
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
8
8
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Outfit:wght@400;500;600;700&display=swap" rel="stylesheet">
|
|
9
9
|
<title>CCR UI</title>
|
|
10
|
-
<script type="module" crossorigin>function DN(t,a){for(var r=0;r<a.length;r++){const s=a[r];if(typeof s!="string"&&!Array.isArray(s)){for(const o in s)if(o!=="default"&&!(o in t)){const u=Object.getOwnPropertyDescriptor(s,o);u&&Object.defineProperty(t,o,u.get?u:{enumerable:!0,get:()=>s[o]})}}}return Object.freeze(Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}))}(function(){const a=document.createElement("link").relList;if(a&&a.supports&&a.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))s(o);new MutationObserver(o=>{for(const u of o)if(u.type==="childList")for(const d of u.addedNodes)d.tagName==="LINK"&&d.rel==="modulepreload"&&s(d)}).observe(document,{childList:!0,subtree:!0});function r(o){const u={};return o.integrity&&(u.integrity=o.integrity),o.referrerPolicy&&(u.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?u.credentials="include":o.crossOrigin==="anonymous"?u.credentials="omit":u.credentials="same-origin",u}function s(o){if(o.ep)return;o.ep=!0;const u=r(o);fetch(o.href,u)}})();function hb(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var gh={exports:{}},Ho={};var dx;function LN(){if(dx)return Ho;dx=1;var t=Symbol.for("react.transitional.element"),a=Symbol.for("react.fragment");function r(s,o,u){var d=null;if(u!==void 0&&(d=""+u),o.key!==void 0&&(d=""+o.key),"key"in o){u={};for(var f in o)f!=="key"&&(u[f]=o[f])}else u=o;return o=u.ref,{$$typeof:t,type:s,key:d,ref:o!==void 0?o:null,props:u}}return Ho.Fragment=a,Ho.jsx=r,Ho.jsxs=r,Ho}var fx;function zN(){return fx||(fx=1,gh.exports=LN()),gh.exports}var c=zN();const Ve=t=>typeof t=="string",Bo=()=>{let t,a;const r=new Promise((s,o)=>{t=s,a=o});return r.resolve=t,r.reject=a,r},hx=t=>t==null?"":""+t,PN=(t,a,r)=>{t.forEach(s=>{a[s]&&(r[s]=a[s])})},UN=/###/g,mx=t=>t&&t.indexOf("###")>-1?t.replace(UN,"."):t,px=t=>!t||Ve(t),ti=(t,a,r)=>{const s=Ve(a)?a.split("."):a;let o=0;for(;o<s.length-1;){if(px(t))return{};const u=mx(s[o]);!t[u]&&r&&(t[u]=new r),Object.prototype.hasOwnProperty.call(t,u)?t=t[u]:t={},++o}return px(t)?{}:{obj:t,k:mx(s[o])}},gx=(t,a,r)=>{const{obj:s,k:o}=ti(t,a,Object);if(s!==void 0||a.length===1){s[o]=r;return}let u=a[a.length-1],d=a.slice(0,a.length-1),f=ti(t,d,Object);for(;f.obj===void 0&&d.length;)u=`${d[d.length-1]}.${u}`,d=d.slice(0,d.length-1),f=ti(t,d,Object),f?.obj&&typeof f.obj[`${f.k}.${u}`]<"u"&&(f.obj=void 0);f.obj[`${f.k}.${u}`]=r},HN=(t,a,r,s)=>{const{obj:o,k:u}=ti(t,a,Object);o[u]=o[u]||[],o[u].push(r)},uu=(t,a)=>{const{obj:r,k:s}=ti(t,a);if(r&&Object.prototype.hasOwnProperty.call(r,s))return r[s]},BN=(t,a,r)=>{const s=uu(t,r);return s!==void 0?s:uu(a,r)},mb=(t,a,r)=>{for(const s in a)s!=="__proto__"&&s!=="constructor"&&(s in t?Ve(t[s])||t[s]instanceof String||Ve(a[s])||a[s]instanceof String?r&&(t[s]=a[s]):mb(t[s],a[s],r):t[s]=a[s]);return t},ms=t=>t.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&");var $N={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};const FN=t=>Ve(t)?t.replace(/[&<>"'\/]/g,a=>$N[a]):t;class IN{constructor(a){this.capacity=a,this.regExpMap=new Map,this.regExpQueue=[]}getRegExp(a){const r=this.regExpMap.get(a);if(r!==void 0)return r;const s=new RegExp(a);return this.regExpQueue.length===this.capacity&&this.regExpMap.delete(this.regExpQueue.shift()),this.regExpMap.set(a,s),this.regExpQueue.push(a),s}}const qN=[" ",",","?","!",";"],VN=new IN(20),GN=(t,a,r)=>{a=a||"",r=r||"";const s=qN.filter(d=>a.indexOf(d)<0&&r.indexOf(d)<0);if(s.length===0)return!0;const o=VN.getRegExp(`(${s.map(d=>d==="?"?"\\?":d).join("|")})`);let u=!o.test(t);if(!u){const d=t.indexOf(r);d>0&&!o.test(t.substring(0,d))&&(u=!0)}return u},Qh=(t,a,r=".")=>{if(!t)return;if(t[a])return Object.prototype.hasOwnProperty.call(t,a)?t[a]:void 0;const s=a.split(r);let o=t;for(let u=0;u<s.length;){if(!o||typeof o!="object")return;let d,f="";for(let m=u;m<s.length;++m)if(m!==u&&(f+=r),f+=s[m],d=o[f],d!==void 0){if(["string","number","boolean"].indexOf(typeof d)>-1&&m<s.length-1)continue;u+=m-u+1;break}o=d}return o},ii=t=>t?.replace("_","-"),KN={type:"logger",log(t){this.output("log",t)},warn(t){this.output("warn",t)},error(t){this.output("error",t)},output(t,a){console?.[t]?.apply?.(console,a)}};class du{constructor(a,r={}){this.init(a,r)}init(a,r={}){this.prefix=r.prefix||"i18next:",this.logger=a||KN,this.options=r,this.debug=r.debug}log(...a){return this.forward(a,"log","",!0)}warn(...a){return this.forward(a,"warn","",!0)}error(...a){return this.forward(a,"error","")}deprecate(...a){return this.forward(a,"warn","WARNING DEPRECATED: ",!0)}forward(a,r,s,o){return o&&!this.debug?null:(Ve(a[0])&&(a[0]=`${s}${this.prefix} ${a[0]}`),this.logger[r](a))}create(a){return new du(this.logger,{prefix:`${this.prefix}:${a}:`,...this.options})}clone(a){return a=a||this.options,a.prefix=a.prefix||this.prefix,new du(this.logger,a)}}var ya=new du;class Nu{constructor(){this.observers={}}on(a,r){return a.split(" ").forEach(s=>{this.observers[s]||(this.observers[s]=new Map);const o=this.observers[s].get(r)||0;this.observers[s].set(r,o+1)}),this}off(a,r){if(this.observers[a]){if(!r){delete this.observers[a];return}this.observers[a].delete(r)}}emit(a,...r){this.observers[a]&&Array.from(this.observers[a].entries()).forEach(([o,u])=>{for(let d=0;d<u;d++)o(...r)}),this.observers["*"]&&Array.from(this.observers["*"].entries()).forEach(([o,u])=>{for(let d=0;d<u;d++)o.apply(o,[a,...r])})}}class vx extends Nu{constructor(a,r={ns:["translation"],defaultNS:"translation"}){super(),this.data=a||{},this.options=r,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.options.ignoreJSONStructure===void 0&&(this.options.ignoreJSONStructure=!0)}addNamespaces(a){this.options.ns.indexOf(a)<0&&this.options.ns.push(a)}removeNamespaces(a){const r=this.options.ns.indexOf(a);r>-1&&this.options.ns.splice(r,1)}getResource(a,r,s,o={}){const u=o.keySeparator!==void 0?o.keySeparator:this.options.keySeparator,d=o.ignoreJSONStructure!==void 0?o.ignoreJSONStructure:this.options.ignoreJSONStructure;let f;a.indexOf(".")>-1?f=a.split("."):(f=[a,r],s&&(Array.isArray(s)?f.push(...s):Ve(s)&&u?f.push(...s.split(u)):f.push(s)));const m=uu(this.data,f);return!m&&!r&&!s&&a.indexOf(".")>-1&&(a=f[0],r=f[1],s=f.slice(2).join(".")),m||!d||!Ve(s)?m:Qh(this.data?.[a]?.[r],s,u)}addResource(a,r,s,o,u={silent:!1}){const d=u.keySeparator!==void 0?u.keySeparator:this.options.keySeparator;let f=[a,r];s&&(f=f.concat(d?s.split(d):s)),a.indexOf(".")>-1&&(f=a.split("."),o=r,r=f[1]),this.addNamespaces(r),gx(this.data,f,o),u.silent||this.emit("added",a,r,s,o)}addResources(a,r,s,o={silent:!1}){for(const u in s)(Ve(s[u])||Array.isArray(s[u]))&&this.addResource(a,r,u,s[u],{silent:!0});o.silent||this.emit("added",a,r,s)}addResourceBundle(a,r,s,o,u,d={silent:!1,skipCopy:!1}){let f=[a,r];a.indexOf(".")>-1&&(f=a.split("."),o=s,s=r,r=f[1]),this.addNamespaces(r);let m=uu(this.data,f)||{};d.skipCopy||(s=JSON.parse(JSON.stringify(s))),o?mb(m,s,u):m={...m,...s},gx(this.data,f,m),d.silent||this.emit("added",a,r,s)}removeResourceBundle(a,r){this.hasResourceBundle(a,r)&&delete this.data[a][r],this.removeNamespaces(r),this.emit("removed",a,r)}hasResourceBundle(a,r){return this.getResource(a,r)!==void 0}getResourceBundle(a,r){return r||(r=this.options.defaultNS),this.getResource(a,r)}getDataByLanguage(a){return this.data[a]}hasLanguageSomeTranslations(a){const r=this.getDataByLanguage(a);return!!(r&&Object.keys(r)||[]).find(o=>r[o]&&Object.keys(r[o]).length>0)}toJSON(){return this.data}}var pb={processors:{},addPostProcessor(t){this.processors[t.name]=t},handle(t,a,r,s,o){return t.forEach(u=>{a=this.processors[u]?.process(a,r,s,o)??a}),a}};const gb=Symbol("i18next/PATH_KEY");function YN(){const t=[],a=Object.create(null);let r;return a.get=(s,o)=>(r?.revoke?.(),o===gb?t:(t.push(o),r=Proxy.revocable(s,a),r.proxy)),Proxy.revocable(Object.create(null),a).proxy}function Zh(t,a){const{[gb]:r}=t(YN());return r.join(a?.keySeparator??".")}const yx={},vh=t=>!Ve(t)&&typeof t!="boolean"&&typeof t!="number";class fu extends Nu{constructor(a,r={}){super(),PN(["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat","utils"],a,this),this.options=r,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.logger=ya.create("translator")}changeLanguage(a){a&&(this.language=a)}exists(a,r={interpolation:{}}){const s={...r};if(a==null)return!1;const o=this.resolve(a,s);if(o?.res===void 0)return!1;const u=vh(o.res);return!(s.returnObjects===!1&&u)}extractFromKey(a,r){let s=r.nsSeparator!==void 0?r.nsSeparator:this.options.nsSeparator;s===void 0&&(s=":");const o=r.keySeparator!==void 0?r.keySeparator:this.options.keySeparator;let u=r.ns||this.options.defaultNS||[];const d=s&&a.indexOf(s)>-1,f=!this.options.userDefinedKeySeparator&&!r.keySeparator&&!this.options.userDefinedNsSeparator&&!r.nsSeparator&&!GN(a,s,o);if(d&&!f){const m=a.match(this.interpolator.nestingRegexp);if(m&&m.length>0)return{key:a,namespaces:Ve(u)?[u]:u};const p=a.split(s);(s!==o||s===o&&this.options.ns.indexOf(p[0])>-1)&&(u=p.shift()),a=p.join(o)}return{key:a,namespaces:Ve(u)?[u]:u}}translate(a,r,s){let o=typeof r=="object"?{...r}:r;if(typeof o!="object"&&this.options.overloadTranslationOptionHandler&&(o=this.options.overloadTranslationOptionHandler(arguments)),typeof o=="object"&&(o={...o}),o||(o={}),a==null)return"";typeof a=="function"&&(a=Zh(a,{...this.options,...o})),Array.isArray(a)||(a=[String(a)]);const u=o.returnDetails!==void 0?o.returnDetails:this.options.returnDetails,d=o.keySeparator!==void 0?o.keySeparator:this.options.keySeparator,{key:f,namespaces:m}=this.extractFromKey(a[a.length-1],o),p=m[m.length-1];let x=o.nsSeparator!==void 0?o.nsSeparator:this.options.nsSeparator;x===void 0&&(x=":");const y=o.lng||this.language,w=o.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if(y?.toLowerCase()==="cimode")return w?u?{res:`${p}${x}${f}`,usedKey:f,exactUsedKey:f,usedLng:y,usedNS:p,usedParams:this.getUsedParamsDetails(o)}:`${p}${x}${f}`:u?{res:f,usedKey:f,exactUsedKey:f,usedLng:y,usedNS:p,usedParams:this.getUsedParamsDetails(o)}:f;const S=this.resolve(a,o);let N=S?.res;const j=S?.usedKey||f,R=S?.exactUsedKey||f,T=["[object Number]","[object Function]","[object RegExp]"],E=o.joinArrays!==void 0?o.joinArrays:this.options.joinArrays,_=!this.i18nFormat||this.i18nFormat.handleAsObject,k=o.count!==void 0&&!Ve(o.count),L=fu.hasDefaultValue(o),z=k?this.pluralResolver.getSuffix(y,o.count,o):"",C=o.ordinal&&k?this.pluralResolver.getSuffix(y,o.count,{ordinal:!1}):"",U=k&&!o.ordinal&&o.count===0,K=U&&o[`defaultValue${this.options.pluralSeparator}zero`]||o[`defaultValue${z}`]||o[`defaultValue${C}`]||o.defaultValue;let Z=N;_&&!N&&L&&(Z=K);const re=vh(Z),ie=Object.prototype.toString.apply(Z);if(_&&Z&&re&&T.indexOf(ie)<0&&!(Ve(E)&&Array.isArray(Z))){if(!o.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn("accessing an object - but returnObjects options is not enabled!");const le=this.options.returnedObjectHandler?this.options.returnedObjectHandler(j,Z,{...o,ns:m}):`key '${f} (${this.language})' returned an object instead of string.`;return u?(S.res=le,S.usedParams=this.getUsedParamsDetails(o),S):le}if(d){const le=Array.isArray(Z),P=le?[]:{},F=le?R:j;for(const M in Z)if(Object.prototype.hasOwnProperty.call(Z,M)){const V=`${F}${d}${M}`;L&&!N?P[M]=this.translate(V,{...o,defaultValue:vh(K)?K[M]:void 0,joinArrays:!1,ns:m}):P[M]=this.translate(V,{...o,joinArrays:!1,ns:m}),P[M]===V&&(P[M]=Z[M])}N=P}}else if(_&&Ve(E)&&Array.isArray(N))N=N.join(E),N&&(N=this.extendTranslation(N,a,o,s));else{let le=!1,P=!1;!this.isValidLookup(N)&&L&&(le=!0,N=K),this.isValidLookup(N)||(P=!0,N=f);const M=(o.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&P?void 0:N,V=L&&K!==N&&this.options.updateMissing;if(P||le||V){if(this.logger.log(V?"updateKey":"missingKey",y,p,f,V?K:N),d){const O=this.resolve(f,{...o,keySeparator:!1});O&&O.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 H=[];const oe=this.languageUtils.getFallbackCodes(this.options.fallbackLng,o.lng||this.language);if(this.options.saveMissingTo==="fallback"&&oe&&oe[0])for(let O=0;O<oe.length;O++)H.push(oe[O]);else this.options.saveMissingTo==="all"?H=this.languageUtils.toResolveHierarchy(o.lng||this.language):H.push(o.lng||this.language);const me=(O,D,G)=>{const Q=L&&G!==N?G:M;this.options.missingKeyHandler?this.options.missingKeyHandler(O,p,D,Q,V,o):this.backendConnector?.saveMissing&&this.backendConnector.saveMissing(O,p,D,Q,V,o),this.emit("missingKey",O,p,D,N)};this.options.saveMissing&&(this.options.saveMissingPlurals&&k?H.forEach(O=>{const D=this.pluralResolver.getSuffixes(O,o);U&&o[`defaultValue${this.options.pluralSeparator}zero`]&&D.indexOf(`${this.options.pluralSeparator}zero`)<0&&D.push(`${this.options.pluralSeparator}zero`),D.forEach(G=>{me([O],f+G,o[`defaultValue${G}`]||K)})}):me(H,f,K))}N=this.extendTranslation(N,a,o,S,s),P&&N===f&&this.options.appendNamespaceToMissingKey&&(N=`${p}${x}${f}`),(P||le)&&this.options.parseMissingKeyHandler&&(N=this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?`${p}${x}${f}`:f,le?N:void 0,o))}return u?(S.res=N,S.usedParams=this.getUsedParamsDetails(o),S):N}extendTranslation(a,r,s,o,u){if(this.i18nFormat?.parse)a=this.i18nFormat.parse(a,{...this.options.interpolation.defaultVariables,...s},s.lng||this.language||o.usedLng,o.usedNS,o.usedKey,{resolved:o});else if(!s.skipInterpolation){s.interpolation&&this.interpolator.init({...s,interpolation:{...this.options.interpolation,...s.interpolation}});const m=Ve(a)&&(s?.interpolation?.skipOnVariables!==void 0?s.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables);let p;if(m){const y=a.match(this.interpolator.nestingRegexp);p=y&&y.length}let x=s.replace&&!Ve(s.replace)?s.replace:s;if(this.options.interpolation.defaultVariables&&(x={...this.options.interpolation.defaultVariables,...x}),a=this.interpolator.interpolate(a,x,s.lng||this.language||o.usedLng,s),m){const y=a.match(this.interpolator.nestingRegexp),w=y&&y.length;p<w&&(s.nest=!1)}!s.lng&&o&&o.res&&(s.lng=this.language||o.usedLng),s.nest!==!1&&(a=this.interpolator.nest(a,(...y)=>u?.[0]===y[0]&&!s.context?(this.logger.warn(`It seems you are nesting recursively key: ${y[0]} in key: ${r[0]}`),null):this.translate(...y,r),s)),s.interpolation&&this.interpolator.reset()}const d=s.postProcess||this.options.postProcess,f=Ve(d)?[d]:d;return a!=null&&f?.length&&s.applyPostProcessor!==!1&&(a=pb.handle(f,a,r,this.options&&this.options.postProcessPassResolved?{i18nResolved:{...o,usedParams:this.getUsedParamsDetails(s)},...s}:s,this)),a}resolve(a,r={}){let s,o,u,d,f;return Ve(a)&&(a=[a]),a.forEach(m=>{if(this.isValidLookup(s))return;const p=this.extractFromKey(m,r),x=p.key;o=x;let y=p.namespaces;this.options.fallbackNS&&(y=y.concat(this.options.fallbackNS));const w=r.count!==void 0&&!Ve(r.count),S=w&&!r.ordinal&&r.count===0,N=r.context!==void 0&&(Ve(r.context)||typeof r.context=="number")&&r.context!=="",j=r.lngs?r.lngs:this.languageUtils.toResolveHierarchy(r.lng||this.language,r.fallbackLng);y.forEach(R=>{this.isValidLookup(s)||(f=R,!yx[`${j[0]}-${R}`]&&this.utils?.hasLoadedNamespace&&!this.utils?.hasLoadedNamespace(f)&&(yx[`${j[0]}-${R}`]=!0,this.logger.warn(`key "${o}" for languages "${j.join(", ")}" won't get resolved as namespace "${f}" 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!!!")),j.forEach(T=>{if(this.isValidLookup(s))return;d=T;const E=[x];if(this.i18nFormat?.addLookupKeys)this.i18nFormat.addLookupKeys(E,x,T,R,r);else{let k;w&&(k=this.pluralResolver.getSuffix(T,r.count,r));const L=`${this.options.pluralSeparator}zero`,z=`${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;if(w&&(r.ordinal&&k.indexOf(z)===0&&E.push(x+k.replace(z,this.options.pluralSeparator)),E.push(x+k),S&&E.push(x+L)),N){const C=`${x}${this.options.contextSeparator||"_"}${r.context}`;E.push(C),w&&(r.ordinal&&k.indexOf(z)===0&&E.push(C+k.replace(z,this.options.pluralSeparator)),E.push(C+k),S&&E.push(C+L))}}let _;for(;_=E.pop();)this.isValidLookup(s)||(u=_,s=this.getResource(T,R,_,r))}))})}),{res:s,usedKey:o,exactUsedKey:u,usedLng:d,usedNS:f}}isValidLookup(a){return a!==void 0&&!(!this.options.returnNull&&a===null)&&!(!this.options.returnEmptyString&&a==="")}getResource(a,r,s,o={}){return this.i18nFormat?.getResource?this.i18nFormat.getResource(a,r,s,o):this.resourceStore.getResource(a,r,s,o)}getUsedParamsDetails(a={}){const r=["defaultValue","ordinal","context","replace","lng","lngs","fallbackLng","ns","keySeparator","nsSeparator","returnObjects","returnDetails","joinArrays","postProcess","interpolation"],s=a.replace&&!Ve(a.replace);let o=s?a.replace:a;if(s&&typeof a.count<"u"&&(o.count=a.count),this.options.interpolation.defaultVariables&&(o={...this.options.interpolation.defaultVariables,...o}),!s){o={...o};for(const u of r)delete o[u]}return o}static hasDefaultValue(a){const r="defaultValue";for(const s in a)if(Object.prototype.hasOwnProperty.call(a,s)&&r===s.substring(0,r.length)&&a[s]!==void 0)return!0;return!1}}class xx{constructor(a){this.options=a,this.supportedLngs=this.options.supportedLngs||!1,this.logger=ya.create("languageUtils")}getScriptPartFromCode(a){if(a=ii(a),!a||a.indexOf("-")<0)return null;const r=a.split("-");return r.length===2||(r.pop(),r[r.length-1].toLowerCase()==="x")?null:this.formatLanguageCode(r.join("-"))}getLanguagePartFromCode(a){if(a=ii(a),!a||a.indexOf("-")<0)return a;const r=a.split("-");return this.formatLanguageCode(r[0])}formatLanguageCode(a){if(Ve(a)&&a.indexOf("-")>-1){let r;try{r=Intl.getCanonicalLocales(a)[0]}catch{}return r&&this.options.lowerCaseLng&&(r=r.toLowerCase()),r||(this.options.lowerCaseLng?a.toLowerCase():a)}return this.options.cleanCode||this.options.lowerCaseLng?a.toLowerCase():a}isSupportedCode(a){return(this.options.load==="languageOnly"||this.options.nonExplicitSupportedLngs)&&(a=this.getLanguagePartFromCode(a)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.indexOf(a)>-1}getBestMatchFromCodes(a){if(!a)return null;let r;return a.forEach(s=>{if(r)return;const o=this.formatLanguageCode(s);(!this.options.supportedLngs||this.isSupportedCode(o))&&(r=o)}),!r&&this.options.supportedLngs&&a.forEach(s=>{if(r)return;const o=this.getScriptPartFromCode(s);if(this.isSupportedCode(o))return r=o;const u=this.getLanguagePartFromCode(s);if(this.isSupportedCode(u))return r=u;r=this.options.supportedLngs.find(d=>{if(d===u)return d;if(!(d.indexOf("-")<0&&u.indexOf("-")<0)&&(d.indexOf("-")>0&&u.indexOf("-")<0&&d.substring(0,d.indexOf("-"))===u||d.indexOf(u)===0&&u.length>1))return d})}),r||(r=this.getFallbackCodes(this.options.fallbackLng)[0]),r}getFallbackCodes(a,r){if(!a)return[];if(typeof a=="function"&&(a=a(r)),Ve(a)&&(a=[a]),Array.isArray(a))return a;if(!r)return a.default||[];let s=a[r];return s||(s=a[this.getScriptPartFromCode(r)]),s||(s=a[this.formatLanguageCode(r)]),s||(s=a[this.getLanguagePartFromCode(r)]),s||(s=a.default),s||[]}toResolveHierarchy(a,r){const s=this.getFallbackCodes((r===!1?[]:r)||this.options.fallbackLng||[],a),o=[],u=d=>{d&&(this.isSupportedCode(d)?o.push(d):this.logger.warn(`rejecting language code not found in supportedLngs: ${d}`))};return Ve(a)&&(a.indexOf("-")>-1||a.indexOf("_")>-1)?(this.options.load!=="languageOnly"&&u(this.formatLanguageCode(a)),this.options.load!=="languageOnly"&&this.options.load!=="currentOnly"&&u(this.getScriptPartFromCode(a)),this.options.load!=="currentOnly"&&u(this.getLanguagePartFromCode(a))):Ve(a)&&u(this.formatLanguageCode(a)),s.forEach(d=>{o.indexOf(d)<0&&u(this.formatLanguageCode(d))}),o}}const bx={zero:0,one:1,two:2,few:3,many:4,other:5},wx={select:t=>t===1?"one":"other",resolvedOptions:()=>({pluralCategories:["one","other"]})};class XN{constructor(a,r={}){this.languageUtils=a,this.options=r,this.logger=ya.create("pluralResolver"),this.pluralRulesCache={}}addRule(a,r){this.rules[a]=r}clearCache(){this.pluralRulesCache={}}getRule(a,r={}){const s=ii(a==="dev"?"en":a),o=r.ordinal?"ordinal":"cardinal",u=JSON.stringify({cleanedCode:s,type:o});if(u in this.pluralRulesCache)return this.pluralRulesCache[u];let d;try{d=new Intl.PluralRules(s,{type:o})}catch{if(!Intl)return this.logger.error("No Intl support, please use an Intl polyfill!"),wx;if(!a.match(/-|_/))return wx;const m=this.languageUtils.getLanguagePartFromCode(a);d=this.getRule(m,r)}return this.pluralRulesCache[u]=d,d}needsPlural(a,r={}){let s=this.getRule(a,r);return s||(s=this.getRule("dev",r)),s?.resolvedOptions().pluralCategories.length>1}getPluralFormsOfKey(a,r,s={}){return this.getSuffixes(a,s).map(o=>`${r}${o}`)}getSuffixes(a,r={}){let s=this.getRule(a,r);return s||(s=this.getRule("dev",r)),s?s.resolvedOptions().pluralCategories.sort((o,u)=>bx[o]-bx[u]).map(o=>`${this.options.prepend}${r.ordinal?`ordinal${this.options.prepend}`:""}${o}`):[]}getSuffix(a,r,s={}){const o=this.getRule(a,s);return o?`${this.options.prepend}${s.ordinal?`ordinal${this.options.prepend}`:""}${o.select(r)}`:(this.logger.warn(`no plural rule found for: ${a}`),this.getSuffix("dev",r,s))}}const Sx=(t,a,r,s=".",o=!0)=>{let u=BN(t,a,r);return!u&&o&&Ve(r)&&(u=Qh(t,r,s),u===void 0&&(u=Qh(a,r,s))),u},yh=t=>t.replace(/\$/g,"$$$$");class _x{constructor(a={}){this.logger=ya.create("interpolator"),this.options=a,this.format=a?.interpolation?.format||(r=>r),this.init(a)}init(a={}){a.interpolation||(a.interpolation={escapeValue:!0});const{escape:r,escapeValue:s,useRawValueToEscape:o,prefix:u,prefixEscaped:d,suffix:f,suffixEscaped:m,formatSeparator:p,unescapeSuffix:x,unescapePrefix:y,nestingPrefix:w,nestingPrefixEscaped:S,nestingSuffix:N,nestingSuffixEscaped:j,nestingOptionsSeparator:R,maxReplaces:T,alwaysFormat:E}=a.interpolation;this.escape=r!==void 0?r:FN,this.escapeValue=s!==void 0?s:!0,this.useRawValueToEscape=o!==void 0?o:!1,this.prefix=u?ms(u):d||"{{",this.suffix=f?ms(f):m||"}}",this.formatSeparator=p||",",this.unescapePrefix=x?"":y||"-",this.unescapeSuffix=this.unescapePrefix?"":x||"",this.nestingPrefix=w?ms(w):S||ms("$t("),this.nestingSuffix=N?ms(N):j||ms(")"),this.nestingOptionsSeparator=R||",",this.maxReplaces=T||1e3,this.alwaysFormat=E!==void 0?E:!1,this.resetRegExp()}reset(){this.options&&this.init(this.options)}resetRegExp(){const a=(r,s)=>r?.source===s?(r.lastIndex=0,r):new RegExp(s,"g");this.regexp=a(this.regexp,`${this.prefix}(.+?)${this.suffix}`),this.regexpUnescape=a(this.regexpUnescape,`${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`),this.nestingRegexp=a(this.nestingRegexp,`${this.nestingPrefix}((?:[^()"']+|"[^"]*"|'[^']*'|\\((?:[^()]|"[^"]*"|'[^']*')*\\))*?)${this.nestingSuffix}`)}interpolate(a,r,s,o){let u,d,f;const m=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{},p=S=>{if(S.indexOf(this.formatSeparator)<0){const T=Sx(r,m,S,this.options.keySeparator,this.options.ignoreJSONStructure);return this.alwaysFormat?this.format(T,void 0,s,{...o,...r,interpolationkey:S}):T}const N=S.split(this.formatSeparator),j=N.shift().trim(),R=N.join(this.formatSeparator).trim();return this.format(Sx(r,m,j,this.options.keySeparator,this.options.ignoreJSONStructure),R,s,{...o,...r,interpolationkey:j})};this.resetRegExp();const x=o?.missingInterpolationHandler||this.options.missingInterpolationHandler,y=o?.interpolation?.skipOnVariables!==void 0?o.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:S=>yh(S)},{regex:this.regexp,safeValue:S=>this.escapeValue?yh(this.escape(S)):yh(S)}].forEach(S=>{for(f=0;u=S.regex.exec(a);){const N=u[1].trim();if(d=p(N),d===void 0)if(typeof x=="function"){const R=x(a,u,o);d=Ve(R)?R:""}else if(o&&Object.prototype.hasOwnProperty.call(o,N))d="";else if(y){d=u[0];continue}else this.logger.warn(`missed to pass in variable ${N} for interpolating ${a}`),d="";else!Ve(d)&&!this.useRawValueToEscape&&(d=hx(d));const j=S.safeValue(d);if(a=a.replace(u[0],j),y?(S.regex.lastIndex+=d.length,S.regex.lastIndex-=u[0].length):S.regex.lastIndex=0,f++,f>=this.maxReplaces)break}}),a}nest(a,r,s={}){let o,u,d;const f=(m,p)=>{const x=this.nestingOptionsSeparator;if(m.indexOf(x)<0)return m;const y=m.split(new RegExp(`${x}[ ]*{`));let w=`{${y[1]}`;m=y[0],w=this.interpolate(w,d);const S=w.match(/'/g),N=w.match(/"/g);((S?.length??0)%2===0&&!N||N.length%2!==0)&&(w=w.replace(/'/g,'"'));try{d=JSON.parse(w),p&&(d={...p,...d})}catch(j){return this.logger.warn(`failed parsing options string in nesting for key ${m}`,j),`${m}${x}${w}`}return d.defaultValue&&d.defaultValue.indexOf(this.prefix)>-1&&delete d.defaultValue,m};for(;o=this.nestingRegexp.exec(a);){let m=[];d={...s},d=d.replace&&!Ve(d.replace)?d.replace:d,d.applyPostProcessor=!1,delete d.defaultValue;const p=/{.*}/.test(o[1])?o[1].lastIndexOf("}")+1:o[1].indexOf(this.formatSeparator);if(p!==-1&&(m=o[1].slice(p).split(this.formatSeparator).map(x=>x.trim()).filter(Boolean),o[1]=o[1].slice(0,p)),u=r(f.call(this,o[1].trim(),d),d),u&&o[0]===a&&!Ve(u))return u;Ve(u)||(u=hx(u)),u||(this.logger.warn(`missed to resolve ${o[1]} for nesting ${a}`),u=""),m.length&&(u=m.reduce((x,y)=>this.format(x,y,s.lng,{...s,interpolationkey:o[1].trim()}),u.trim())),a=a.replace(o[0],u),this.regexp.lastIndex=0}return a}}const QN=t=>{let a=t.toLowerCase().trim();const r={};if(t.indexOf("(")>-1){const s=t.split("(");a=s[0].toLowerCase().trim();const o=s[1].substring(0,s[1].length-1);a==="currency"&&o.indexOf(":")<0?r.currency||(r.currency=o.trim()):a==="relativetime"&&o.indexOf(":")<0?r.range||(r.range=o.trim()):o.split(";").forEach(d=>{if(d){const[f,...m]=d.split(":"),p=m.join(":").trim().replace(/^'+|'+$/g,""),x=f.trim();r[x]||(r[x]=p),p==="false"&&(r[x]=!1),p==="true"&&(r[x]=!0),isNaN(p)||(r[x]=parseInt(p,10))}})}return{formatName:a,formatOptions:r}},jx=t=>{const a={};return(r,s,o)=>{let u=o;o&&o.interpolationkey&&o.formatParams&&o.formatParams[o.interpolationkey]&&o[o.interpolationkey]&&(u={...u,[o.interpolationkey]:void 0});const d=s+JSON.stringify(u);let f=a[d];return f||(f=t(ii(s),o),a[d]=f),f(r)}},ZN=t=>(a,r,s)=>t(ii(r),s)(a);class JN{constructor(a={}){this.logger=ya.create("formatter"),this.options=a,this.init(a)}init(a,r={interpolation:{}}){this.formatSeparator=r.interpolation.formatSeparator||",";const s=r.cacheInBuiltFormats?jx:ZN;this.formats={number:s((o,u)=>{const d=new Intl.NumberFormat(o,{...u});return f=>d.format(f)}),currency:s((o,u)=>{const d=new Intl.NumberFormat(o,{...u,style:"currency"});return f=>d.format(f)}),datetime:s((o,u)=>{const d=new Intl.DateTimeFormat(o,{...u});return f=>d.format(f)}),relativetime:s((o,u)=>{const d=new Intl.RelativeTimeFormat(o,{...u});return f=>d.format(f,u.range||"day")}),list:s((o,u)=>{const d=new Intl.ListFormat(o,{...u});return f=>d.format(f)})}}add(a,r){this.formats[a.toLowerCase().trim()]=r}addCached(a,r){this.formats[a.toLowerCase().trim()]=jx(r)}format(a,r,s,o={}){const u=r.split(this.formatSeparator);if(u.length>1&&u[0].indexOf("(")>1&&u[0].indexOf(")")<0&&u.find(f=>f.indexOf(")")>-1)){const f=u.findIndex(m=>m.indexOf(")")>-1);u[0]=[u[0],...u.splice(1,f)].join(this.formatSeparator)}return u.reduce((f,m)=>{const{formatName:p,formatOptions:x}=QN(m);if(this.formats[p]){let y=f;try{const w=o?.formatParams?.[o.interpolationkey]||{},S=w.locale||w.lng||o.locale||o.lng||s;y=this.formats[p](f,S,{...x,...o,...w})}catch(w){this.logger.warn(w)}return y}else this.logger.warn(`there was no format function for ${p}`);return f},a)}}const WN=(t,a)=>{t.pending[a]!==void 0&&(delete t.pending[a],t.pendingCount--)};class eC extends Nu{constructor(a,r,s,o={}){super(),this.backend=a,this.store=r,this.services=s,this.languageUtils=s.languageUtils,this.options=o,this.logger=ya.create("backendConnector"),this.waitingReads=[],this.maxParallelReads=o.maxParallelReads||10,this.readingCalls=0,this.maxRetries=o.maxRetries>=0?o.maxRetries:5,this.retryTimeout=o.retryTimeout>=1?o.retryTimeout:350,this.state={},this.queue=[],this.backend?.init?.(s,o.backend,o)}queueLoad(a,r,s,o){const u={},d={},f={},m={};return a.forEach(p=>{let x=!0;r.forEach(y=>{const w=`${p}|${y}`;!s.reload&&this.store.hasResourceBundle(p,y)?this.state[w]=2:this.state[w]<0||(this.state[w]===1?d[w]===void 0&&(d[w]=!0):(this.state[w]=1,x=!1,d[w]===void 0&&(d[w]=!0),u[w]===void 0&&(u[w]=!0),m[y]===void 0&&(m[y]=!0)))}),x||(f[p]=!0)}),(Object.keys(u).length||Object.keys(d).length)&&this.queue.push({pending:d,pendingCount:Object.keys(d).length,loaded:{},errors:[],callback:o}),{toLoad:Object.keys(u),pending:Object.keys(d),toLoadLanguages:Object.keys(f),toLoadNamespaces:Object.keys(m)}}loaded(a,r,s){const o=a.split("|"),u=o[0],d=o[1];r&&this.emit("failedLoading",u,d,r),!r&&s&&this.store.addResourceBundle(u,d,s,void 0,void 0,{skipCopy:!0}),this.state[a]=r?-1:2,r&&s&&(this.state[a]=0);const f={};this.queue.forEach(m=>{HN(m.loaded,[u],d),WN(m,a),r&&m.errors.push(r),m.pendingCount===0&&!m.done&&(Object.keys(m.loaded).forEach(p=>{f[p]||(f[p]={});const x=m.loaded[p];x.length&&x.forEach(y=>{f[p][y]===void 0&&(f[p][y]=!0)})}),m.done=!0,m.errors.length?m.callback(m.errors):m.callback())}),this.emit("loaded",f),this.queue=this.queue.filter(m=>!m.done)}read(a,r,s,o=0,u=this.retryTimeout,d){if(!a.length)return d(null,{});if(this.readingCalls>=this.maxParallelReads){this.waitingReads.push({lng:a,ns:r,fcName:s,tried:o,wait:u,callback:d});return}this.readingCalls++;const f=(p,x)=>{if(this.readingCalls--,this.waitingReads.length>0){const y=this.waitingReads.shift();this.read(y.lng,y.ns,y.fcName,y.tried,y.wait,y.callback)}if(p&&x&&o<this.maxRetries){setTimeout(()=>{this.read.call(this,a,r,s,o+1,u*2,d)},u);return}d(p,x)},m=this.backend[s].bind(this.backend);if(m.length===2){try{const p=m(a,r);p&&typeof p.then=="function"?p.then(x=>f(null,x)).catch(f):f(null,p)}catch(p){f(p)}return}return m(a,r,f)}prepareLoading(a,r,s={},o){if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),o&&o();Ve(a)&&(a=this.languageUtils.toResolveHierarchy(a)),Ve(r)&&(r=[r]);const u=this.queueLoad(a,r,s,o);if(!u.toLoad.length)return u.pending.length||o(),null;u.toLoad.forEach(d=>{this.loadOne(d)})}load(a,r,s){this.prepareLoading(a,r,{},s)}reload(a,r,s){this.prepareLoading(a,r,{reload:!0},s)}loadOne(a,r=""){const s=a.split("|"),o=s[0],u=s[1];this.read(o,u,"read",void 0,void 0,(d,f)=>{d&&this.logger.warn(`${r}loading namespace ${u} for language ${o} failed`,d),!d&&f&&this.logger.log(`${r}loaded namespace ${u} for language ${o}`,f),this.loaded(a,d,f)})}saveMissing(a,r,s,o,u,d={},f=()=>{}){if(this.services?.utils?.hasLoadedNamespace&&!this.services?.utils?.hasLoadedNamespace(r)){this.logger.warn(`did not save key "${s}" as the namespace "${r}" 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(!(s==null||s==="")){if(this.backend?.create){const m={...d,isUpdate:u},p=this.backend.create.bind(this.backend);if(p.length<6)try{let x;p.length===5?x=p(a,r,s,o,m):x=p(a,r,s,o),x&&typeof x.then=="function"?x.then(y=>f(null,y)).catch(f):f(null,x)}catch(x){f(x)}else p(a,r,s,o,f,m)}!a||!a[0]||this.store.addResource(a[0],r,s,o)}}}const Nx=()=>({debug:!1,initAsync:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:"all",preload:!1,simplifyPluralSuffix:!0,keySeparator:".",nsSeparator:":",pluralSeparator:"_",contextSeparator:"_",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:t=>{let a={};if(typeof t[1]=="object"&&(a=t[1]),Ve(t[1])&&(a.defaultValue=t[1]),Ve(t[2])&&(a.tDescription=t[2]),typeof t[2]=="object"||typeof t[3]=="object"){const r=t[3]||t[2];Object.keys(r).forEach(s=>{a[s]=r[s]})}return a},interpolation:{escapeValue:!0,format:t=>t,prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",nestingOptionsSeparator:",",maxReplaces:1e3,skipOnVariables:!0},cacheInBuiltFormats:!0}),Cx=t=>(Ve(t.ns)&&(t.ns=[t.ns]),Ve(t.fallbackLng)&&(t.fallbackLng=[t.fallbackLng]),Ve(t.fallbackNS)&&(t.fallbackNS=[t.fallbackNS]),t.supportedLngs?.indexOf?.("cimode")<0&&(t.supportedLngs=t.supportedLngs.concat(["cimode"])),typeof t.initImmediate=="boolean"&&(t.initAsync=t.initImmediate),t),$c=()=>{},tC=t=>{Object.getOwnPropertyNames(Object.getPrototypeOf(t)).forEach(r=>{typeof t[r]=="function"&&(t[r]=t[r].bind(t))})};class ni extends Nu{constructor(a={},r){if(super(),this.options=Cx(a),this.services={},this.logger=ya,this.modules={external:[]},tC(this),r&&!this.isInitialized&&!a.isClone){if(!this.options.initAsync)return this.init(a,r),this;setTimeout(()=>{this.init(a,r)},0)}}init(a={},r){this.isInitializing=!0,typeof a=="function"&&(r=a,a={}),a.defaultNS==null&&a.ns&&(Ve(a.ns)?a.defaultNS=a.ns:a.ns.indexOf("translation")<0&&(a.defaultNS=a.ns[0]));const s=Nx();this.options={...s,...this.options,...Cx(a)},this.options.interpolation={...s.interpolation,...this.options.interpolation},a.keySeparator!==void 0&&(this.options.userDefinedKeySeparator=a.keySeparator),a.nsSeparator!==void 0&&(this.options.userDefinedNsSeparator=a.nsSeparator),typeof this.options.overloadTranslationOptionHandler!="function"&&(this.options.overloadTranslationOptionHandler=s.overloadTranslationOptionHandler);const o=p=>p?typeof p=="function"?new p:p:null;if(!this.options.isClone){this.modules.logger?ya.init(o(this.modules.logger),this.options):ya.init(null,this.options);let p;this.modules.formatter?p=this.modules.formatter:p=JN;const x=new xx(this.options);this.store=new vx(this.options.resources,this.options);const y=this.services;y.logger=ya,y.resourceStore=this.store,y.languageUtils=x,y.pluralResolver=new XN(x,{prepend:this.options.pluralSeparator,simplifyPluralSuffix:this.options.simplifyPluralSuffix}),this.options.interpolation.format&&this.options.interpolation.format!==s.interpolation.format&&this.logger.deprecate("init: you are still using the legacy format function, please use the new approach: https://www.i18next.com/translation-function/formatting"),p&&(!this.options.interpolation.format||this.options.interpolation.format===s.interpolation.format)&&(y.formatter=o(p),y.formatter.init&&y.formatter.init(y,this.options),this.options.interpolation.format=y.formatter.format.bind(y.formatter)),y.interpolator=new _x(this.options),y.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},y.backendConnector=new eC(o(this.modules.backend),y.resourceStore,y,this.options),y.backendConnector.on("*",(S,...N)=>{this.emit(S,...N)}),this.modules.languageDetector&&(y.languageDetector=o(this.modules.languageDetector),y.languageDetector.init&&y.languageDetector.init(y,this.options.detection,this.options)),this.modules.i18nFormat&&(y.i18nFormat=o(this.modules.i18nFormat),y.i18nFormat.init&&y.i18nFormat.init(this)),this.translator=new fu(this.services,this.options),this.translator.on("*",(S,...N)=>{this.emit(S,...N)}),this.modules.external.forEach(S=>{S.init&&S.init(this)})}if(this.format=this.options.interpolation.format,r||(r=$c),this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){const p=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);p.length>0&&p[0]!=="dev"&&(this.options.lng=p[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(p=>{this[p]=(...x)=>this.store[p](...x)}),["addResource","addResources","addResourceBundle","removeResourceBundle"].forEach(p=>{this[p]=(...x)=>(this.store[p](...x),this)});const f=Bo(),m=()=>{const p=(x,y)=>{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),f.resolve(y),r(x,y)};if(this.languages&&!this.isInitialized)return p(null,this.t.bind(this));this.changeLanguage(this.options.lng,p)};return this.options.resources||!this.options.initAsync?m():setTimeout(m,0),f}loadResources(a,r=$c){let s=r;const o=Ve(a)?a:this.language;if(typeof a=="function"&&(s=a),!this.options.resources||this.options.partialBundledLanguages){if(o?.toLowerCase()==="cimode"&&(!this.options.preload||this.options.preload.length===0))return s();const u=[],d=f=>{if(!f||f==="cimode")return;this.services.languageUtils.toResolveHierarchy(f).forEach(p=>{p!=="cimode"&&u.indexOf(p)<0&&u.push(p)})};o?d(o):this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach(m=>d(m)),this.options.preload?.forEach?.(f=>d(f)),this.services.backendConnector.load(u,this.options.ns,f=>{!f&&!this.resolvedLanguage&&this.language&&this.setResolvedLanguage(this.language),s(f)})}else s(null)}reloadResources(a,r,s){const o=Bo();return typeof a=="function"&&(s=a,a=void 0),typeof r=="function"&&(s=r,r=void 0),a||(a=this.languages),r||(r=this.options.ns),s||(s=$c),this.services.backendConnector.reload(a,r,u=>{o.resolve(),s(u)}),o}use(a){if(!a)throw new Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");if(!a.type)throw new Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");return a.type==="backend"&&(this.modules.backend=a),(a.type==="logger"||a.log&&a.warn&&a.error)&&(this.modules.logger=a),a.type==="languageDetector"&&(this.modules.languageDetector=a),a.type==="i18nFormat"&&(this.modules.i18nFormat=a),a.type==="postProcessor"&&pb.addPostProcessor(a),a.type==="formatter"&&(this.modules.formatter=a),a.type==="3rdParty"&&this.modules.external.push(a),this}setResolvedLanguage(a){if(!(!a||!this.languages)&&!(["cimode","dev"].indexOf(a)>-1)){for(let r=0;r<this.languages.length;r++){const s=this.languages[r];if(!(["cimode","dev"].indexOf(s)>-1)&&this.store.hasLanguageSomeTranslations(s)){this.resolvedLanguage=s;break}}!this.resolvedLanguage&&this.languages.indexOf(a)<0&&this.store.hasLanguageSomeTranslations(a)&&(this.resolvedLanguage=a,this.languages.unshift(a))}}changeLanguage(a,r){this.isLanguageChangingTo=a;const s=Bo();this.emit("languageChanging",a);const o=f=>{this.language=f,this.languages=this.services.languageUtils.toResolveHierarchy(f),this.resolvedLanguage=void 0,this.setResolvedLanguage(f)},u=(f,m)=>{m?this.isLanguageChangingTo===a&&(o(m),this.translator.changeLanguage(m),this.isLanguageChangingTo=void 0,this.emit("languageChanged",m),this.logger.log("languageChanged",m)):this.isLanguageChangingTo=void 0,s.resolve((...p)=>this.t(...p)),r&&r(f,(...p)=>this.t(...p))},d=f=>{!a&&!f&&this.services.languageDetector&&(f=[]);const m=Ve(f)?f:f&&f[0],p=this.store.hasLanguageSomeTranslations(m)?m:this.services.languageUtils.getBestMatchFromCodes(Ve(f)?[f]:f);p&&(this.language||o(p),this.translator.language||this.translator.changeLanguage(p),this.services.languageDetector?.cacheUserLanguage?.(p)),this.loadResources(p,x=>{u(x,p)})};return!a&&this.services.languageDetector&&!this.services.languageDetector.async?d(this.services.languageDetector.detect()):!a&&this.services.languageDetector&&this.services.languageDetector.async?this.services.languageDetector.detect.length===0?this.services.languageDetector.detect().then(d):this.services.languageDetector.detect(d):d(a),s}getFixedT(a,r,s){const o=(u,d,...f)=>{let m;typeof d!="object"?m=this.options.overloadTranslationOptionHandler([u,d].concat(f)):m={...d},m.lng=m.lng||o.lng,m.lngs=m.lngs||o.lngs,m.ns=m.ns||o.ns,m.keyPrefix!==""&&(m.keyPrefix=m.keyPrefix||s||o.keyPrefix);const p=this.options.keySeparator||".";let x;return m.keyPrefix&&Array.isArray(u)?x=u.map(y=>(typeof y=="function"&&(y=Zh(y,{...this.options,...d})),`${m.keyPrefix}${p}${y}`)):(typeof u=="function"&&(u=Zh(u,{...this.options,...d})),x=m.keyPrefix?`${m.keyPrefix}${p}${u}`:u),this.t(x,m)};return Ve(a)?o.lng=a:o.lngs=a,o.ns=r,o.keyPrefix=s,o}t(...a){return this.translator?.translate(...a)}exists(...a){return this.translator?.exists(...a)}setDefaultNamespace(a){this.options.defaultNS=a}hasLoadedNamespace(a,r={}){if(!this.isInitialized)return this.logger.warn("hasLoadedNamespace: i18next was not initialized",this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty",this.languages),!1;const s=r.lng||this.resolvedLanguage||this.languages[0],o=this.options?this.options.fallbackLng:!1,u=this.languages[this.languages.length-1];if(s.toLowerCase()==="cimode")return!0;const d=(f,m)=>{const p=this.services.backendConnector.state[`${f}|${m}`];return p===-1||p===0||p===2};if(r.precheck){const f=r.precheck(this,d);if(f!==void 0)return f}return!!(this.hasResourceBundle(s,a)||!this.services.backendConnector.backend||this.options.resources&&!this.options.partialBundledLanguages||d(s,a)&&(!o||d(u,a)))}loadNamespaces(a,r){const s=Bo();return this.options.ns?(Ve(a)&&(a=[a]),a.forEach(o=>{this.options.ns.indexOf(o)<0&&this.options.ns.push(o)}),this.loadResources(o=>{s.resolve(),r&&r(o)}),s):(r&&r(),Promise.resolve())}loadLanguages(a,r){const s=Bo();Ve(a)&&(a=[a]);const o=this.options.preload||[],u=a.filter(d=>o.indexOf(d)<0&&this.services.languageUtils.isSupportedCode(d));return u.length?(this.options.preload=o.concat(u),this.loadResources(d=>{s.resolve(),r&&r(d)}),s):(r&&r(),Promise.resolve())}dir(a){if(a||(a=this.resolvedLanguage||(this.languages?.length>0?this.languages[0]:this.language)),!a)return"rtl";try{const o=new Intl.Locale(a);if(o&&o.getTextInfo){const u=o.getTextInfo();if(u&&u.direction)return u.direction}}catch{}const r=["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"],s=this.services?.languageUtils||new xx(Nx());return a.toLowerCase().indexOf("-latn")>1?"ltr":r.indexOf(s.getLanguagePartFromCode(a))>-1||a.toLowerCase().indexOf("-arab")>1?"rtl":"ltr"}static createInstance(a={},r){const s=new ni(a,r);return s.createInstance=ni.createInstance,s}cloneInstance(a={},r=$c){const s=a.forkResourceStore;s&&delete a.forkResourceStore;const o={...this.options,...a,isClone:!0},u=new ni(o);if((a.debug!==void 0||a.prefix!==void 0)&&(u.logger=u.logger.clone(a)),["store","services","language"].forEach(f=>{u[f]=this[f]}),u.services={...this.services},u.services.utils={hasLoadedNamespace:u.hasLoadedNamespace.bind(u)},s){const f=Object.keys(this.store.data).reduce((m,p)=>(m[p]={...this.store.data[p]},m[p]=Object.keys(m[p]).reduce((x,y)=>(x[y]={...m[p][y]},x),m[p]),m),{});u.store=new vx(f,o),u.services.resourceStore=u.store}return a.interpolation&&(u.services.interpolator=new _x(o)),u.translator=new fu(u.services,o),u.translator.on("*",(f,...m)=>{u.emit(f,...m)}),u.init(o,r),u.translator.options=o,u.translator.backendConnector.services.utils={hasLoadedNamespace:u.hasLoadedNamespace.bind(u)},u}toJSON(){return{options:this.options,store:this.store,language:this.language,languages:this.languages,resolvedLanguage:this.resolvedLanguage}}}const pn=ni.createInstance();pn.createInstance;pn.dir;pn.init;pn.loadResources;pn.reloadResources;pn.use;pn.changeLanguage;pn.getFixedT;pn.t;pn.exists;pn.setDefaultNamespace;pn.hasLoadedNamespace;pn.loadNamespaces;pn.loadLanguages;var xh={exports:{}},Ge={};var Ex;function nC(){if(Ex)return Ge;Ex=1;var t=Symbol.for("react.transitional.element"),a=Symbol.for("react.portal"),r=Symbol.for("react.fragment"),s=Symbol.for("react.strict_mode"),o=Symbol.for("react.profiler"),u=Symbol.for("react.consumer"),d=Symbol.for("react.context"),f=Symbol.for("react.forward_ref"),m=Symbol.for("react.suspense"),p=Symbol.for("react.memo"),x=Symbol.for("react.lazy"),y=Symbol.for("react.activity"),w=Symbol.iterator;function S(O){return O===null||typeof O!="object"?null:(O=w&&O[w]||O["@@iterator"],typeof O=="function"?O:null)}var N={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},j=Object.assign,R={};function T(O,D,G){this.props=O,this.context=D,this.refs=R,this.updater=G||N}T.prototype.isReactComponent={},T.prototype.setState=function(O,D){if(typeof O!="object"&&typeof O!="function"&&O!=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,O,D,"setState")},T.prototype.forceUpdate=function(O){this.updater.enqueueForceUpdate(this,O,"forceUpdate")};function E(){}E.prototype=T.prototype;function _(O,D,G){this.props=O,this.context=D,this.refs=R,this.updater=G||N}var k=_.prototype=new E;k.constructor=_,j(k,T.prototype),k.isPureReactComponent=!0;var L=Array.isArray;function z(){}var C={H:null,A:null,T:null,S:null},U=Object.prototype.hasOwnProperty;function K(O,D,G){var Q=G.ref;return{$$typeof:t,type:O,key:D,ref:Q!==void 0?Q:null,props:G}}function Z(O,D){return K(O.type,D,O.props)}function re(O){return typeof O=="object"&&O!==null&&O.$$typeof===t}function ie(O){var D={"=":"=0",":":"=2"};return"$"+O.replace(/[=:]/g,function(G){return D[G]})}var le=/\/+/g;function P(O,D){return typeof O=="object"&&O!==null&&O.key!=null?ie(""+O.key):D.toString(36)}function F(O){switch(O.status){case"fulfilled":return O.value;case"rejected":throw O.reason;default:switch(typeof O.status=="string"?O.then(z,z):(O.status="pending",O.then(function(D){O.status==="pending"&&(O.status="fulfilled",O.value=D)},function(D){O.status==="pending"&&(O.status="rejected",O.reason=D)})),O.status){case"fulfilled":return O.value;case"rejected":throw O.reason}}throw O}function M(O,D,G,Q,ae){var ve=typeof O;(ve==="undefined"||ve==="boolean")&&(O=null);var I=!1;if(O===null)I=!0;else switch(ve){case"bigint":case"string":case"number":I=!0;break;case"object":switch(O.$$typeof){case t:case a:I=!0;break;case x:return I=O._init,M(I(O._payload),D,G,Q,ae)}}if(I)return ae=ae(O),I=Q===""?"."+P(O,0):Q,L(ae)?(G="",I!=null&&(G=I.replace(le,"$&/")+"/"),M(ae,D,G,"",function(Ce){return Ce})):ae!=null&&(re(ae)&&(ae=Z(ae,G+(ae.key==null||O&&O.key===ae.key?"":(""+ae.key).replace(le,"$&/")+"/")+I)),D.push(ae)),1;I=0;var xe=Q===""?".":Q+":";if(L(O))for(var be=0;be<O.length;be++)Q=O[be],ve=xe+P(Q,be),I+=M(Q,D,G,ve,ae);else if(be=S(O),typeof be=="function")for(O=be.call(O),be=0;!(Q=O.next()).done;)Q=Q.value,ve=xe+P(Q,be++),I+=M(Q,D,G,ve,ae);else if(ve==="object"){if(typeof O.then=="function")return M(F(O),D,G,Q,ae);throw D=String(O),Error("Objects are not valid as a React child (found: "+(D==="[object Object]"?"object with keys {"+Object.keys(O).join(", ")+"}":D)+"). If you meant to render a collection of children, use an array instead.")}return I}function V(O,D,G){if(O==null)return O;var Q=[],ae=0;return M(O,Q,"","",function(ve){return D.call(G,ve,ae++)}),Q}function H(O){if(O._status===-1){var D=O._result;D=D(),D.then(function(G){(O._status===0||O._status===-1)&&(O._status=1,O._result=G)},function(G){(O._status===0||O._status===-1)&&(O._status=2,O._result=G)}),O._status===-1&&(O._status=0,O._result=D)}if(O._status===1)return O._result.default;throw O._result}var oe=typeof reportError=="function"?reportError:function(O){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var D=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof O=="object"&&O!==null&&typeof O.message=="string"?String(O.message):String(O),error:O});if(!window.dispatchEvent(D))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",O);return}console.error(O)},me={map:V,forEach:function(O,D,G){V(O,function(){D.apply(this,arguments)},G)},count:function(O){var D=0;return V(O,function(){D++}),D},toArray:function(O){return V(O,function(D){return D})||[]},only:function(O){if(!re(O))throw Error("React.Children.only expected to receive a single React element child.");return O}};return Ge.Activity=y,Ge.Children=me,Ge.Component=T,Ge.Fragment=r,Ge.Profiler=o,Ge.PureComponent=_,Ge.StrictMode=s,Ge.Suspense=m,Ge.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=C,Ge.__COMPILER_RUNTIME={__proto__:null,c:function(O){return C.H.useMemoCache(O)}},Ge.cache=function(O){return function(){return O.apply(null,arguments)}},Ge.cacheSignal=function(){return null},Ge.cloneElement=function(O,D,G){if(O==null)throw Error("The argument must be a React element, but you passed "+O+".");var Q=j({},O.props),ae=O.key;if(D!=null)for(ve in D.key!==void 0&&(ae=""+D.key),D)!U.call(D,ve)||ve==="key"||ve==="__self"||ve==="__source"||ve==="ref"&&D.ref===void 0||(Q[ve]=D[ve]);var ve=arguments.length-2;if(ve===1)Q.children=G;else if(1<ve){for(var I=Array(ve),xe=0;xe<ve;xe++)I[xe]=arguments[xe+2];Q.children=I}return K(O.type,ae,Q)},Ge.createContext=function(O){return O={$$typeof:d,_currentValue:O,_currentValue2:O,_threadCount:0,Provider:null,Consumer:null},O.Provider=O,O.Consumer={$$typeof:u,_context:O},O},Ge.createElement=function(O,D,G){var Q,ae={},ve=null;if(D!=null)for(Q in D.key!==void 0&&(ve=""+D.key),D)U.call(D,Q)&&Q!=="key"&&Q!=="__self"&&Q!=="__source"&&(ae[Q]=D[Q]);var I=arguments.length-2;if(I===1)ae.children=G;else if(1<I){for(var xe=Array(I),be=0;be<I;be++)xe[be]=arguments[be+2];ae.children=xe}if(O&&O.defaultProps)for(Q in I=O.defaultProps,I)ae[Q]===void 0&&(ae[Q]=I[Q]);return K(O,ve,ae)},Ge.createRef=function(){return{current:null}},Ge.forwardRef=function(O){return{$$typeof:f,render:O}},Ge.isValidElement=re,Ge.lazy=function(O){return{$$typeof:x,_payload:{_status:-1,_result:O},_init:H}},Ge.memo=function(O,D){return{$$typeof:p,type:O,compare:D===void 0?null:D}},Ge.startTransition=function(O){var D=C.T,G={};C.T=G;try{var Q=O(),ae=C.S;ae!==null&&ae(G,Q),typeof Q=="object"&&Q!==null&&typeof Q.then=="function"&&Q.then(z,oe)}catch(ve){oe(ve)}finally{D!==null&&G.types!==null&&(D.types=G.types),C.T=D}},Ge.unstable_useCacheRefresh=function(){return C.H.useCacheRefresh()},Ge.use=function(O){return C.H.use(O)},Ge.useActionState=function(O,D,G){return C.H.useActionState(O,D,G)},Ge.useCallback=function(O,D){return C.H.useCallback(O,D)},Ge.useContext=function(O){return C.H.useContext(O)},Ge.useDebugValue=function(){},Ge.useDeferredValue=function(O,D){return C.H.useDeferredValue(O,D)},Ge.useEffect=function(O,D){return C.H.useEffect(O,D)},Ge.useEffectEvent=function(O){return C.H.useEffectEvent(O)},Ge.useId=function(){return C.H.useId()},Ge.useImperativeHandle=function(O,D,G){return C.H.useImperativeHandle(O,D,G)},Ge.useInsertionEffect=function(O,D){return C.H.useInsertionEffect(O,D)},Ge.useLayoutEffect=function(O,D){return C.H.useLayoutEffect(O,D)},Ge.useMemo=function(O,D){return C.H.useMemo(O,D)},Ge.useOptimistic=function(O,D){return C.H.useOptimistic(O,D)},Ge.useReducer=function(O,D,G){return C.H.useReducer(O,D,G)},Ge.useRef=function(O){return C.H.useRef(O)},Ge.useState=function(O){return C.H.useState(O)},Ge.useSyncExternalStore=function(O,D,G){return C.H.useSyncExternalStore(O,D,G)},Ge.useTransition=function(){return C.H.useTransition()},Ge.version="19.2.3",Ge}var Rx;function km(){return Rx||(Rx=1,xh.exports=nC()),xh.exports}var v=km();const gt=hb(v),Cu=DN({__proto__:null,default:gt},[v]),aC=(t,a,r,s)=>{const o=[r,{code:a,...s||{}}];if(t?.services?.logger?.forward)return t.services.logger.forward(o,"warn","react-i18next::",!0);Cl(o[0])&&(o[0]=`react-i18next:: ${o[0]}`),t?.services?.logger?.warn?t.services.logger.warn(...o):console?.warn&&console.warn(...o)},Tx={},Jh=(t,a,r,s)=>{Cl(r)&&Tx[r]||(Cl(r)&&(Tx[r]=new Date),aC(t,a,r,s))},vb=(t,a)=>()=>{if(t.isInitialized)a();else{const r=()=>{setTimeout(()=>{t.off("initialized",r)},0),a()};t.on("initialized",r)}},Wh=(t,a,r)=>{t.loadNamespaces(a,vb(t,r))},Ox=(t,a,r,s)=>{if(Cl(r)&&(r=[r]),t.options.preload&&t.options.preload.indexOf(a)>-1)return Wh(t,r,s);r.forEach(o=>{t.options.ns.indexOf(o)<0&&t.options.ns.push(o)}),t.loadLanguages(a,vb(t,s))},rC=(t,a,r={})=>!a.languages||!a.languages.length?(Jh(a,"NO_LANGUAGES","i18n.languages were undefined or empty",{languages:a.languages}),!0):a.hasLoadedNamespace(t,{lng:r.lng,precheck:(s,o)=>{if(r.bindI18n&&r.bindI18n.indexOf("languageChanging")>-1&&s.services.backendConnector.backend&&s.isLanguageChangingTo&&!o(s.isLanguageChangingTo,t))return!1}}),Cl=t=>typeof t=="string",lC=t=>typeof t=="object"&&t!==null,sC=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,oC={"&":"&","&":"&","<":"<","<":"<",">":">",">":">","'":"'","'":"'",""":'"',""":'"'," ":" "," ":" ","©":"©","©":"©","®":"®","®":"®","…":"…","…":"…","/":"/","/":"/"},iC=t=>oC[t],cC=t=>t.replace(sC,iC);let em={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transWrapTextNodes:"",transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0,unescape:cC};const uC=(t={})=>{em={...em,...t}},dC=()=>em;let yb;const fC=t=>{yb=t},hC=()=>yb,mC={type:"3rdParty",init(t){uC(t.options.react),fC(t)}},pC=v.createContext();class gC{constructor(){this.usedNamespaces={}}addUsedNamespaces(a){a.forEach(r=>{this.usedNamespaces[r]||(this.usedNamespaces[r]=!0)})}getUsedNamespaces(){return Object.keys(this.usedNamespaces)}}const vC=(t,a)=>{const r=v.useRef();return v.useEffect(()=>{r.current=t},[t,a]),r.current},xb=(t,a,r,s)=>t.getFixedT(a,r,s),yC=(t,a,r,s)=>v.useCallback(xb(t,a,r,s),[t,a,r,s]),hn=(t,a={})=>{const{i18n:r}=a,{i18n:s,defaultNS:o}=v.useContext(pC)||{},u=r||s||hC();if(u&&!u.reportNamespaces&&(u.reportNamespaces=new gC),!u){Jh(u,"NO_I18NEXT_INSTANCE","useTranslation: You will need to pass in an i18next instance by using initReactI18next");const k=(z,C)=>Cl(C)?C:lC(C)&&Cl(C.defaultValue)?C.defaultValue:Array.isArray(z)?z[z.length-1]:z,L=[k,{},!1];return L.t=k,L.i18n={},L.ready=!1,L}u.options.react?.wait&&Jh(u,"DEPRECATED_OPTION","useTranslation: It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.");const d={...dC(),...u.options.react,...a},{useSuspense:f,keyPrefix:m}=d;let p=o||u.options?.defaultNS;p=Cl(p)?[p]:p||["translation"],u.reportNamespaces.addUsedNamespaces?.(p);const x=(u.isInitialized||u.initializedStoreOnce)&&p.every(k=>rC(k,u,d)),y=yC(u,a.lng||null,d.nsMode==="fallback"?p:p[0],m),w=()=>y,S=()=>xb(u,a.lng||null,d.nsMode==="fallback"?p:p[0],m),[N,j]=v.useState(w);let R=p.join();a.lng&&(R=`${a.lng}${R}`);const T=vC(R),E=v.useRef(!0);v.useEffect(()=>{const{bindI18n:k,bindI18nStore:L}=d;E.current=!0,!x&&!f&&(a.lng?Ox(u,a.lng,p,()=>{E.current&&j(S)}):Wh(u,p,()=>{E.current&&j(S)})),x&&T&&T!==R&&E.current&&j(S);const z=()=>{E.current&&j(S)};return k&&u?.on(k,z),L&&u?.store.on(L,z),()=>{E.current=!1,u&&k&&k?.split(" ").forEach(C=>u.off(C,z)),L&&u&&L.split(" ").forEach(C=>u.store.off(C,z))}},[u,R]),v.useEffect(()=>{E.current&&x&&j(w)},[u,m,x]);const _=[N,u,x];if(_.t=N,_.i18n=u,_.ready=x,x||!x&&!f)return _;throw new Promise(k=>{a.lng?Ox(u,a.lng,p,()=>k()):Wh(u,p,()=>k())})},{slice:xC,forEach:bC}=[];function wC(t){return bC.call(xC.call(arguments,1),a=>{if(a)for(const r in a)t[r]===void 0&&(t[r]=a[r])}),t}function SC(t){return typeof t!="string"?!1:[/<\s*script.*?>/i,/<\s*\/\s*script\s*>/i,/<\s*img.*?on\w+\s*=/i,/<\s*\w+\s*on\w+\s*=.*?>/i,/javascript\s*:/i,/vbscript\s*:/i,/expression\s*\(/i,/eval\s*\(/i,/alert\s*\(/i,/document\.cookie/i,/document\.write\s*\(/i,/window\.location/i,/innerHTML/i].some(r=>r.test(t))}const Ax=/^[\u0009\u0020-\u007e\u0080-\u00ff]+$/,_C=function(t,a){const s=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{path:"/"},o=encodeURIComponent(a);let u=`${t}=${o}`;if(s.maxAge>0){const d=s.maxAge-0;if(Number.isNaN(d))throw new Error("maxAge should be a Number");u+=`; Max-Age=${Math.floor(d)}`}if(s.domain){if(!Ax.test(s.domain))throw new TypeError("option domain is invalid");u+=`; Domain=${s.domain}`}if(s.path){if(!Ax.test(s.path))throw new TypeError("option path is invalid");u+=`; Path=${s.path}`}if(s.expires){if(typeof s.expires.toUTCString!="function")throw new TypeError("option expires is invalid");u+=`; Expires=${s.expires.toUTCString()}`}if(s.httpOnly&&(u+="; HttpOnly"),s.secure&&(u+="; Secure"),s.sameSite)switch(typeof s.sameSite=="string"?s.sameSite.toLowerCase():s.sameSite){case!0:u+="; SameSite=Strict";break;case"lax":u+="; SameSite=Lax";break;case"strict":u+="; SameSite=Strict";break;case"none":u+="; SameSite=None";break;default:throw new TypeError("option sameSite is invalid")}return s.partitioned&&(u+="; Partitioned"),u},kx={create(t,a,r,s){let o=arguments.length>4&&arguments[4]!==void 0?arguments[4]:{path:"/",sameSite:"strict"};r&&(o.expires=new Date,o.expires.setTime(o.expires.getTime()+r*60*1e3)),s&&(o.domain=s),document.cookie=_C(t,a,o)},read(t){const a=`${t}=`,r=document.cookie.split(";");for(let s=0;s<r.length;s++){let o=r[s];for(;o.charAt(0)===" ";)o=o.substring(1,o.length);if(o.indexOf(a)===0)return o.substring(a.length,o.length)}return null},remove(t,a){this.create(t,"",-1,a)}};var jC={name:"cookie",lookup(t){let{lookupCookie:a}=t;if(a&&typeof document<"u")return kx.read(a)||void 0},cacheUserLanguage(t,a){let{lookupCookie:r,cookieMinutes:s,cookieDomain:o,cookieOptions:u}=a;r&&typeof document<"u"&&kx.create(r,t,s,o,u)}},NC={name:"querystring",lookup(t){let{lookupQuerystring:a}=t,r;if(typeof window<"u"){let{search:s}=window.location;!window.location.search&&window.location.hash?.indexOf("?")>-1&&(s=window.location.hash.substring(window.location.hash.indexOf("?")));const u=s.substring(1).split("&");for(let d=0;d<u.length;d++){const f=u[d].indexOf("=");f>0&&u[d].substring(0,f)===a&&(r=u[d].substring(f+1))}}return r}},CC={name:"hash",lookup(t){let{lookupHash:a,lookupFromHashIndex:r}=t,s;if(typeof window<"u"){const{hash:o}=window.location;if(o&&o.length>2){const u=o.substring(1);if(a){const d=u.split("&");for(let f=0;f<d.length;f++){const m=d[f].indexOf("=");m>0&&d[f].substring(0,m)===a&&(s=d[f].substring(m+1))}}if(s)return s;if(!s&&r>-1){const d=o.match(/\/([a-zA-Z-]*)/g);return Array.isArray(d)?d[typeof r=="number"?r:0]?.replace("/",""):void 0}}}return s}};let ps=null;const Mx=()=>{if(ps!==null)return ps;try{if(ps=typeof window<"u"&&window.localStorage!==null,!ps)return!1;const t="i18next.translate.boo";window.localStorage.setItem(t,"foo"),window.localStorage.removeItem(t)}catch{ps=!1}return ps};var EC={name:"localStorage",lookup(t){let{lookupLocalStorage:a}=t;if(a&&Mx())return window.localStorage.getItem(a)||void 0},cacheUserLanguage(t,a){let{lookupLocalStorage:r}=a;r&&Mx()&&window.localStorage.setItem(r,t)}};let gs=null;const Dx=()=>{if(gs!==null)return gs;try{if(gs=typeof window<"u"&&window.sessionStorage!==null,!gs)return!1;const t="i18next.translate.boo";window.sessionStorage.setItem(t,"foo"),window.sessionStorage.removeItem(t)}catch{gs=!1}return gs};var RC={name:"sessionStorage",lookup(t){let{lookupSessionStorage:a}=t;if(a&&Dx())return window.sessionStorage.getItem(a)||void 0},cacheUserLanguage(t,a){let{lookupSessionStorage:r}=a;r&&Dx()&&window.sessionStorage.setItem(r,t)}},TC={name:"navigator",lookup(t){const a=[];if(typeof navigator<"u"){const{languages:r,userLanguage:s,language:o}=navigator;if(r)for(let u=0;u<r.length;u++)a.push(r[u]);s&&a.push(s),o&&a.push(o)}return a.length>0?a:void 0}},OC={name:"htmlTag",lookup(t){let{htmlTag:a}=t,r;const s=a||(typeof document<"u"?document.documentElement:null);return s&&typeof s.getAttribute=="function"&&(r=s.getAttribute("lang")),r}},AC={name:"path",lookup(t){let{lookupFromPathIndex:a}=t;if(typeof window>"u")return;const r=window.location.pathname.match(/\/([a-zA-Z-]*)/g);return Array.isArray(r)?r[typeof a=="number"?a:0]?.replace("/",""):void 0}},kC={name:"subdomain",lookup(t){let{lookupFromSubdomainIndex:a}=t;const r=typeof a=="number"?a+1:1,s=typeof window<"u"&&window.location?.hostname?.match(/^(\w{2,5})\.(([a-z0-9-]{1,63}\.[a-z]{2,6})|localhost)/i);if(s)return s[r]}};let bb=!1;try{document.cookie,bb=!0}catch{}const wb=["querystring","cookie","localStorage","sessionStorage","navigator","htmlTag"];bb||wb.splice(1,1);const MC=()=>({order:wb,lookupQuerystring:"lng",lookupCookie:"i18next",lookupLocalStorage:"i18nextLng",lookupSessionStorage:"i18nextLng",caches:["localStorage"],excludeCacheFor:["cimode"],convertDetectedLanguage:t=>t});class Sb{constructor(a){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.type="languageDetector",this.detectors={},this.init(a,r)}init(){let a=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{languageUtils:{}},r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},s=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};this.services=a,this.options=wC(r,this.options||{},MC()),typeof this.options.convertDetectedLanguage=="string"&&this.options.convertDetectedLanguage.indexOf("15897")>-1&&(this.options.convertDetectedLanguage=o=>o.replace("-","_")),this.options.lookupFromUrlIndex&&(this.options.lookupFromPathIndex=this.options.lookupFromUrlIndex),this.i18nOptions=s,this.addDetector(jC),this.addDetector(NC),this.addDetector(EC),this.addDetector(RC),this.addDetector(TC),this.addDetector(OC),this.addDetector(AC),this.addDetector(kC),this.addDetector(CC)}addDetector(a){return this.detectors[a.name]=a,this}detect(){let a=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.options.order,r=[];return a.forEach(s=>{if(this.detectors[s]){let o=this.detectors[s].lookup(this.options);o&&typeof o=="string"&&(o=[o]),o&&(r=r.concat(o))}}),r=r.filter(s=>s!=null&&!SC(s)).map(s=>this.options.convertDetectedLanguage(s)),this.services&&this.services.languageUtils&&this.services.languageUtils.getBestMatchFromCodes?r:r.length>0?r[0]:null}cacheUserLanguage(a){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.options.caches;r&&(this.options.excludeCacheFor&&this.options.excludeCacheFor.indexOf(a)>-1||r.forEach(s=>{this.detectors[s]&&this.detectors[s].cacheUserLanguage(a,this.options)}))}}Sb.type="languageDetector";const DC={yes:"Yes",no:"No"},LC={title:"Claude Code Router",save:"Save",save_and_restart:"Save and Restart",cancel:"Cancel",edit:"Edit",remove:"Remove",delete:"Delete",settings:"Settings",selectFile:"Select File",config_saved_success:"Config saved successfully",config_saved_failed:"Failed to save config",config_saved_restart_success:"Config saved and service restarted successfully",config_saved_restart_failed:"Failed to save config and restart service",new_version_available:"New Version Available",update_description:"A new version is available. Please review the changelog and update to get the latest features and improvements.",no_changelog_available:"No changelog available",later:"Later",update_now:"Update Now",no_updates_available:"No updates available",update_check_failed:"Failed to check for updates",update_successful:"Update successful",update_failed:"Update failed",json_editor:"JSON Editor",log_viewer:"Log Viewer",presets:"Presets",advanced_router:"Advanced Router",language:"Language",check_updates:"Check for Updates",usage:"Usage Statistics"},zC={title:"Advanced Router",subtitle:"Configure advanced routing rules without cluttering the dashboard.",back:"Back",model_mappings:"Model Mappings",model_mappings_help:"Map Claude Code model selections such as opus, sonnet, or haiku to actual provider,model targets.",empty:"No model mappings configured yet. Add one to override how selected model families are routed.",source_model:"Source Model Key",target_model:"Target Model",source_placeholder:"e.g. opus, sonnet, haiku, claude-opus",add_mapping:"Add Mapping"},PC={title:"Sign in to your account",description:"Enter your API key to access the configuration panel",apiKey:"API Key",apiKeyPlaceholder:"Enter your API key",signIn:"Sign In",invalidApiKey:"Invalid API key",configError:"Configuration not loaded",validating:"Validating API key..."},UC={title:"General Settings",log:"Enable Logging",log_level:"Log Level",claude_path:"Claude Path",host:"Host",port:"Port",apikey:"API Key",timeout:"API Timeout (ms)",proxy_url:"Proxy URL",custom_router_path:"Custom Router Script Path",custom_router_path_placeholder:"Enter absolute path to custom router script file"},HC={title:"Custom Transformers",path:"Path",project:"Project",remove:"Remove",add:"Add Custom Transformer",edit:"Edit Custom Transformer",delete:"Delete Custom Transformer",delete_transformer_confirm:"Are you sure you want to delete this custom transformer?",parameters:"Parameters"},BC={title:"Providers",name:"Name",api_base_url:"API Full URL",api_key:"API Key",models:"Models",models_placeholder:"Enter model name and press Enter to add",add_model:"Add Model",select_models:"Select Models",remove:"Remove",add:"Add Provider",edit:"Edit Provider",delete:"Delete",cancel:"Cancel",delete_provider_confirm:"Are you sure you want to delete this provider?",test_connectivity:"Test Connectivity",testing:"Testing...",connection_successful:"Connection successful!",connection_failed:"Connection failed!",missing_credentials:"Missing API base URL or API key",fetch_available_models:"Fetch available models",fetching_models:"Fetching models...",fetch_models_failed:"Failed to fetch models",transformers:"Transformers",select_transformer:"Select Transformer",no_transformers:"No transformers available",provider_transformer:"Provider Transformer",model_transformers:"Model Transformers",transformer_parameters:"Transformer Parameters",add_parameter:"Add Parameter",parameter_name:"Parameter Name",parameter_value:"Parameter Value",selected_transformers:"Selected Transformers",import_from_template:"Import from template",no_templates_found:"No templates found",select_template:"Select a template...",api_key_required:"API Key is required",name_required:"Name is required",name_duplicate:"A provider with this name already exists",search:"Search providers...",quota_5h:"5-hour",quota_7d:"7-day",quota_balance:"Balance",quota_reset:"Reset: {{time}}",quota_token:"Quota Query Token",quota_token_placeholder:"Optional, enables automatic 5h/7d quota querying",quota_token_desc:"Some providers require a separate token/cookie to query quotas.",quota_token_tooltip:`Kimi / MiniMax: Leave blank to automatically reuse configured developer API Key for quota querying (or fill in a separate API Key if you want to use a different key for quota lookup).
|
|
11
|
-
Aliyun Coding Plan: Login to bailian.console.aliyun.com, copy the full Cookie header value from Network tab.`},$C={title:"Router",default:"Default",background:"Background",think:"Think",longContext:"Long Context",longContextThreshold:"Context Threshold",extendedContext:"Extended Context (1M)",extendedContextThreshold:"Extended Threshold",enableExtendedContext:"Enable Extended Context (1M)",enableExtendedContextDesc:"Append [1m] to Claude Code model name for 1M context window support",webSearch:"Web Search",image:"Image",threshold:"Threshold",forceAgent:"Force Agent",forceUseImageAgent:"Force Use Image Agent",selectModel:"Select a model...",searchModel:"Search model...",noModelFound:"No model found.",family_routing:"Model Family Routing",family_routing_desc:"Route opus/sonnet/haiku model families to different providers and models",enabled:"Enabled",disabled:"Disabled",add_family:"Add Family",family_name:"Family Name",family_name_placeholder:"e.g. opus, sonnet, haiku",remove_family:"Remove Family",family_fallback_title:"Family Fallback"},FC={tabs:{general:"General",router:"Advanced Router",tools:"Tools",usage:"Usage"},language:"Language",token_speed:"Token Speed & TTFT Tracking",fallback_title:"Fallback Configuration",fallback_description:"When the primary model fails, try these fallback models in order.",tools:{json_editor:"JSON Editor",json_editor_desc:"Edit raw configuration JSON",log_viewer:"Log Viewer",log_viewer_desc:"View server request logs",usage_stats:"Usage Statistics",usage_stats_desc:"View request usage and performance metrics",check_updates:"Check for Updates",check_updates_desc:"Check and install new versions",presets:"Presets",presets_desc:"Manage configuration presets"}},IC={title:"JSON Editor",save:"Save",saving:"Saving...",cancel:"Cancel",save_failed:"Failed to save config",save_and_restart:"Save & Restart"},qC={title:"Status Line Configuration",enable:"Enable Status Line",theme:"Theme Style",theme_default:"Default",theme_powerline:"Powerline",modules:"Modules",module_type:"Type",module_icon:"Icon",module_text:"Text",module_color:"Color",module_background:"Background",module_text_description:"Enter display text, variables can be used:",module_color_description:"Select text color",module_background_description:"Select background color (optional)",module_script_path:"Script Path",module_script_path_description:"Enter the absolute path of the Node.js script file",add_module:"Add Module",remove_module:"Remove Module",delete_module:"Delete Module",preview:"Preview",components:"Components",properties:"Properties",workDir:"Working Directory",gitBranch:"Git Branch",model:"Model",usage:"Usage",speed:"Speed",contextCircle:"Context Usage",totalTokens:"Total Tokens",script:"Script",background_none:"None",color_black:"Black",color_red:"Red",color_green:"Green",color_yellow:"Yellow",color_blue:"Blue",color_magenta:"Magenta",color_cyan:"Cyan",color_white:"White",color_bright_black:"Bright Black",color_bright_red:"Bright Red",color_bright_green:"Bright Green",color_bright_yellow:"Bright Yellow",color_bright_blue:"Bright Blue",color_bright_magenta:"Bright Magenta",color_bright_cyan:"Bright Cyan",color_bright_white:"Bright White",font_placeholder:"Select Font",theme_placeholder:"Select Theme Style",icon_placeholder:"Paste icon or search by name...",icon_description:"Enter icon character, paste icon, or search icons (optional)",text_placeholder:"e.g.: {{workDirName}}",script_placeholder:"e.g.: /path/to/your/script.js",drag_hint:"Drag components here to configure",select_hint:"Select a component to configure",no_icons_found:"No icons found",no_icons_available:"No icons available",import_export:"Import/Export",import:"Import Config",export:"Export Config",download_template:"Download Template",import_export_help:"Export current configuration as a JSON file, or import configuration from a JSON file. You can also download a configuration template for reference.",export_success:"Configuration exported successfully",export_failed:"Failed to export configuration",import_success:"Configuration imported successfully",import_failed:"Failed to import configuration",invalid_config:"Invalid configuration file",template_download_success:"Template downloaded successfully",template_download_success_desc:"Configuration template has been downloaded to your device",template_download_failed:"Failed to download template"},VC={placeholder:"Select color...",title:"Color Picker",clear:"Clear",no_color_selected:"No color selected",custom_color:"Custom Color",apply:"Apply",hex_input_help:"Enter hex color value (e.g.: #FF0000)"},GC={title:"Log Viewer",close:"Close",download:"Download",clear:"Clear",auto_refresh_on:"Auto Refresh On",auto_refresh_off:"Auto Refresh Off",load_failed:"Failed to load logs",no_logs_available:"No logs available",logs_cleared:"Logs cleared successfully",clear_failed:"Failed to clear logs",logs_downloaded:"Logs downloaded successfully",back_to_files:"Back to Files",select_file:"Select a log file to view",no_log_files_available:"No log files available",load_files_failed:"Failed to load log files",group_by_req_id:"Group by Request ID",grouped_on:"Grouped",request_groups:"Request Groups",total_requests:"Total Requests",total_logs:"Total Logs",request:"Request",logs:"logs",first_log:"First Log",last_log:"Last Log",back_to_all_logs:"Back to All Logs",worker_error:"Worker error",worker_init_failed:"Failed to initialize worker",grouping_not_supported:"Log grouping not supported by server",back:"Back",col_time:"Time",col_level:"Level",col_request_id:"Request ID",col_message:"Message",col_model:"Model",detail_title:"Log Detail"},KC={title:"Presets",market_title:"Preset Market",market_description:"Browse and install presets from the community marketplace",no_presets:"No presets installed",no_presets_hint:"Install a preset to get started",search_placeholder:"Search presets by name, description, author, or keywords...",no_presets_found:"No presets found",no_presets_found_hint:"Try adjusting your search terms",loading:"Loading...",by:"by {{author}}",downloads:"{{count}} downloads",github_repository:"GitHub Repository",view_details:"View Details",install:"Install",installing:"Installing...",installed_label:"Installed",apply:"Apply Preset",applying:"Applying...",close:"Close",delete:"Delete",install_dialog_title:"Install Preset",install_dialog_description:"Install a preset from a GitHub repository",from_url:"From GitHub",preset_url:"Repository URL",preset_url_placeholder:"https://github.com/owner/repo",preset_name:"Preset Name (Optional)",preset_name_placeholder:"Auto-generated from repository",github_url_hint:"Enter GitHub repository URL (e.g., https://github.com/owner/repo)",detail_dialog_title:"Preset Details",required_information:"Required Information",delete_dialog_title:"Delete Preset",delete_dialog_description:'Are you sure you want to delete preset "{{name}}"? This action cannot be undone.',preset_installed:"Preset installed successfully",preset_install_failed:"Failed to install preset: {{error}}",preset_already_installed:"Preset already installed. Please delete it first if you want to reinstall.",preset_applied:"Preset applied successfully",preset_apply_failed:"Failed to apply preset: {{error}}",preset_deleted:"Preset deleted successfully",preset_delete_failed:"Failed to delete preset: {{error}}",load_presets_failed:"Failed to load presets",load_preset_details_failed:"Failed to load preset details",please_fill_field:"Please fill in {{field}}",load_market_failed:"Failed to load market presets",preset_installed_config_required:"Preset installed, please complete configuration",please_provide_file:"Please provide a preset directory",please_provide_url:"Please provide a valid GitHub repository URL",form:{field_required:"{{field}} is required",must_be_number:"{{field}} must be a number",must_be_at_least:"{{field}} must be at least {{min}}",must_be_at_most:"{{field}} must be at most {{max}}",format_invalid:"{{field}} format is invalid",select:"Select {{label}}",applying:"Applying...",apply:"Apply",cancel:"Cancel"}},YC={title:"Usage Statistics",total_requests:"Total Requests",total_input_tokens:"Input Tokens",total_output_tokens:"Output Tokens",total_tokens:"Total Tokens",cache_read:"Cache Hit",cache_creation:"Cache Create",avg_ttft:"Avg TTFT",avg_speed:"Avg Speed",success_rate:"Success Rate",daily_chart:"Daily Usage",provider_chart:"Provider Usage",model_chart:"Model Usage",records_tab:"Records",requests:"Requests",start_date:"Start Date",end_date:"End Date",provider:"Provider",model:"Model",scenario:"Scenario",route:"Route",all:"All",time:"Time",input_tokens:"Input",output_tokens:"Output",ttft:"TTFT",speed:"Speed",duration:"Duration",status:"Status",success:"Success",error:"Error",page:"Page",records:"records",no_data:"No usage data available",clear_confirm:"Are you sure you want to clear all usage data?"},XC={common:DC,app:LC,advanced_router:zC,login:PC,toplevel:UC,transformers:HC,providers:BC,router:$C,settings:FC,json_editor:IC,statusline:qC,color_picker:VC,log_viewer:GC,presets:KC,usage:YC},QC={yes:"是",no:"否"},ZC={title:"Claude Code Router",save:"保存",save_and_restart:"保存并重启",cancel:"取消",edit:"编辑",remove:"移除",delete:"删除",settings:"设置",selectFile:"选择文件",config_saved_success:"配置保存成功",config_saved_failed:"配置保存失败",config_saved_restart_success:"配置保存并服务重启成功",config_saved_restart_failed:"配置保存并服务重启失败",new_version_available:"有新版本可用",update_description:"发现新版本。请查看更新日志并更新以获取最新功能和改进。",no_changelog_available:"暂无更新日志",later:"稍后再说",update_now:"立即更新",no_updates_available:"当前已是最新版本",update_check_failed:"检查更新失败",update_successful:"更新成功",update_failed:"更新失败",json_editor:"JSON 编辑器",log_viewer:"日志查看器",presets:"预设",advanced_router:"高级路由",language:"语言",check_updates:"检查更新",usage:"用量统计"},JC={title:"高级路由",subtitle:"把进阶路由能力放在独立页面中,不打扰主面板的基础配置。",back:"返回",model_mappings:"模型映射",model_mappings_help:"把 Claude Code 选择的模型族,例如 opus、sonnet、haiku,映射到实际的 provider,model。",empty:"当前还没有配置模型映射。添加后即可覆盖模型选择到实际后端模型的路由方式。",source_model:"源模型键",target_model:"目标模型",source_placeholder:"例如:opus、sonnet、haiku、claude-opus",add_mapping:"添加映射"},WC={title:"登录到您的账户",description:"请输入您的API密钥以访问配置面板",apiKey:"API密钥",apiKeyPlaceholder:"请输入您的API密钥",signIn:"登录",invalidApiKey:"API密钥无效",configError:"配置未加载",validating:"正在验证API密钥..."},e2={title:"通用设置",log:"启用日志",log_level:"日志级别",claude_path:"Claude 路径",host:"主机",port:"端口",apikey:"API 密钥",timeout:"API 超时时间 (毫秒)",proxy_url:"代理地址",custom_router_path:"自定义路由脚本路径",custom_router_path_placeholder:"输入自定义路由脚本文件的绝对路径"},t2={title:"自定义转换器",path:"路径",project:"项目",remove:"移除",add:"添加自定义转换器",edit:"编辑自定义转换器",delete:"删除自定义转换器",delete_transformer_confirm:"您确定要删除此自定义转换器吗?",parameters:"参数"},n2={title:"供应商",name:"名称",api_base_url:"API 完整地址",api_key:"API 密钥",models:"模型",models_placeholder:"输入模型名称并按回车键添加",add_model:"添加模型",select_models:"选择模型",remove:"移除",add:"添加供应商",edit:"编辑供应商",delete:"删除",cancel:"取消",delete_provider_confirm:"您确定要删除此供应商吗?",test_connectivity:"测试连通性",testing:"测试中...",connection_successful:"连接成功!",connection_failed:"连接失败!",missing_credentials:"缺少 API 基础地址或 API 密钥",fetch_available_models:"获取可用模型",fetching_models:"获取模型中...",fetch_models_failed:"获取模型失败",transformers:"转换器",select_transformer:"选择转换器",no_transformers:"无可用转换器",provider_transformer:"供应商转换器",model_transformers:"模型转换器",transformer_parameters:"转换器参数",add_parameter:"添加参数",parameter_name:"参数名称",parameter_value:"参数值",selected_transformers:"已选转换器",import_from_template:"从模板导入",no_templates_found:"未找到模板",select_template:"选择一个模板...",api_key_required:"API 密钥为必填项",name_required:"名称为必填项",name_duplicate:"已存在同名供应商",search:"搜索供应商...",quota_5h:"5小时",quota_7d:"7天",quota_balance:"余额",quota_reset:"重置:{{time}}",quota_token:"限额查询 Token",quota_token_placeholder:"可选,填入后可自动查询5小时/7天限额",quota_token_desc:"部分供应商需要额外的 Token/Cookie 来查询限额。",quota_token_tooltip:`Kimi / MiniMax:无需填写,系统会自动复用您配置的 API Key 进行额度查询(若想使用不同的 Key 进行额度查询则可在此填入独立的 API Key)。
|
|
12
|
-
阿里云 Coding Plan:登录 bailian.console.aliyun.com,在 Network 复制 Cookie 请求头的完整 Cookie 值。`},a2={title:"路由",default:"默认",background:"后台",think:"思考",longContext:"长上下文",longContextThreshold:"上下文阈值",extendedContext:"扩展上下文 (1M)",extendedContextThreshold:"扩展阈值",enableExtendedContext:"启用扩展上下文 (1M)",enableExtendedContextDesc:"在 Claude Code 模型名后添加 [1m] 以支持 1M 上下文窗口",webSearch:"网络搜索",image:"图像",threshold:"触发阈值",forceAgent:"强制代理",forceUseImageAgent:"强制使用图像代理",selectModel:"选择一个模型...",searchModel:"搜索模型...",noModelFound:"未找到模型.",family_routing:"模型族路由",family_routing_desc:"将 opus/sonnet/haiku 模型族路由到不同的供应商和模型",enabled:"已启用",disabled:"已关闭",add_family:"添加模型族",family_name:"模型族名称",family_name_placeholder:"例如: opus, sonnet, haiku",remove_family:"移除模型族",family_fallback_title:"模型族备用配置"},r2={tabs:{general:"通用",router:"路由高级配置",tools:"工具",usage:"用量统计"},language:"语言",token_speed:"Token 速度与 TTFT 追踪",fallback_title:"备用配置",fallback_description:"当主模型请求失败时,按顺序尝试以下备用模型。",tools:{json_editor:"JSON 编辑器",json_editor_desc:"编辑原始配置 JSON",log_viewer:"日志查看器",log_viewer_desc:"查看服务请求日志",usage_stats:"用量统计",usage_stats_desc:"查看请求用量和性能指标",check_updates:"检查更新",check_updates_desc:"检查并安装新版本",presets:"预设管理",presets_desc:"管理配置预设"}},l2={title:"JSON 编辑器",save:"保存",saving:"保存中...",cancel:"取消",save_failed:"配置保存失败",save_and_restart:"保存并重启"},s2={title:"状态栏配置",enable:"启用状态栏",theme:"主题样式",theme_default:"默认",theme_powerline:"Powerline",modules:"模块",module_type:"类型",module_icon:"图标",module_text:"文本",module_color:"颜色",module_background:"背景",module_text_description:"输入显示文本,可使用变量:",module_color_description:"选择文字颜色",module_background_description:"选择背景颜色(可选)",module_script_path:"脚本路径",module_script_path_description:"输入Node.js脚本文件的绝对路径",add_module:"添加模块",remove_module:"移除模块",delete_module:"删除组件",preview:"预览",components:"组件",properties:"属性",workDir:"工作目录",gitBranch:"Git分支",model:"模型",usage:"使用情况",speed:"速度",contextCircle:"上下文用量",totalTokens:"总Token",script:"脚本",background_none:"无",color_black:"黑色",color_red:"红色",color_green:"绿色",color_yellow:"黄色",color_blue:"蓝色",color_magenta:"品红",color_cyan:"青色",color_white:"白色",color_bright_black:"亮黑色",color_bright_red:"亮红色",color_bright_green:"亮绿色",color_bright_yellow:"亮黄色",color_bright_blue:"亮蓝色",color_bright_magenta:"亮品红",color_bright_cyan:"亮青色",color_bright_white:"亮白色",font_placeholder:"选择字体",theme_placeholder:"选择主题样式",icon_placeholder:"粘贴图标或输入名称搜索...",icon_description:"输入图标字符、粘贴图标或搜索图标(可选)",text_placeholder:"例如: {{workDirName}}",script_placeholder:"例如: /path/to/your/script.js",drag_hint:"拖拽组件到此处进行配置",select_hint:"选择一个组件进行配置",no_icons_found:"未找到图标",no_icons_available:"暂无可用图标",import_export:"导入/导出",import:"导入配置",export:"导出配置",download_template:"下载模板",import_export_help:"导出当前配置为JSON文件,或从JSON文件导入配置。您也可以下载配置模板作为参考。",export_success:"配置导出成功",export_failed:"配置导出失败",import_success:"配置导入成功",import_failed:"配置导入失败",invalid_config:"无效的配置文件",template_download_success:"模板下载成功",template_download_success_desc:"配置模板已下载到您的设备",template_download_failed:"模板下载失败"},o2={placeholder:"选择颜色...",title:"颜色选择器",clear:"清除",no_color_selected:"未选择颜色",custom_color:"自定义颜色",apply:"应用",hex_input_help:"输入十六进制颜色值 (例如: #FF0000)"},i2={title:"日志查看器",close:"关闭",download:"下载",clear:"清除",auto_refresh_on:"自动刷新开启",auto_refresh_off:"自动刷新关闭",load_failed:"加载日志失败",no_logs_available:"暂无日志",logs_cleared:"日志清除成功",clear_failed:"清除日志失败",logs_downloaded:"日志下载成功",back_to_files:"返回文件列表",select_file:"选择要查看的日志文件",no_log_files_available:"暂无日志文件",load_files_failed:"加载日志文件失败",group_by_req_id:"按请求ID分组",grouped_on:"已分组",request_groups:"请求组",total_requests:"总请求数",total_logs:"总日志数",request:"请求",logs:"条日志",first_log:"首条日志",last_log:"末条日志",back_to_all_logs:"返回所有日志",worker_error:"Worker错误",worker_init_failed:"Worker初始化失败",grouping_not_supported:"服务器不支持日志分组",back:"返回",col_time:"时间",col_level:"级别",col_request_id:"请求ID",col_message:"消息",col_model:"模型",detail_title:"日志详情"},c2={title:"预设",market_title:"预设市场",market_description:"浏览并从社区市场安装预设",no_presets:"暂无已安装的预设",no_presets_hint:"安装一个预设以开始使用",search_placeholder:"按名称、描述、作者或关键词搜索预设...",no_presets_found:"未找到预设",no_presets_found_hint:"请尝试调整搜索条件",loading:"加载中...",by:"{{author}} 创作",downloads:"{{count}} 次下载",github_repository:"GitHub 仓库",view_details:"查看详情",install:"安装",installing:"安装中...",installed_label:"已安装",apply:"应用预设",applying:"应用中...",close:"关闭",delete:"删除",install_dialog_title:"安装预设",install_dialog_description:"从 GitHub 仓库安装预设",from_url:"从 GitHub",preset_url:"仓库 URL",preset_url_placeholder:"https://github.com/owner/repo",preset_name:"预设名称 (可选)",preset_name_placeholder:"从仓库自动生成",github_url_hint:"输入 GitHub 仓库 URL(例如:https://github.com/owner/repo)",detail_dialog_title:"预设详情",required_information:"必需信息",delete_dialog_title:"删除预设",delete_dialog_description:'您确定要删除预设 "{{name}}" 吗?此操作无法撤销。',preset_installed:"预设安装成功",preset_install_failed:"预设安装失败:{{error}}",preset_already_installed:"预设已经安装。如需重新安装,请先删除现有预设。",preset_applied:"预设应用成功",preset_apply_failed:"预设应用失败:{{error}}",preset_deleted:"预设删除成功",preset_delete_failed:"预设删除失败:{{error}}",load_presets_failed:"加载预设失败",load_preset_details_failed:"加载预设详情失败",please_fill_field:"请填写 {{field}}",load_market_failed:"加载市场预设失败",preset_installed_config_required:"预设已安装,请完成配置",please_provide_file:"请提供预设目录",please_provide_url:"请提供有效的 GitHub 仓库 URL",form:{field_required:"{{field}} 为必填项",must_be_number:"{{field}} 必须是数字",must_be_at_least:"{{field}} 至少为 {{min}}",must_be_at_most:"{{field}} 最多为 {{max}}",format_invalid:"{{field}} 格式无效",select:"选择 {{label}}",applying:"应用中...",apply:"应用",cancel:"取消"}},u2={title:"用量统计",total_requests:"总请求数",total_input_tokens:"输入 Token",total_output_tokens:"输出 Token",total_tokens:"总 Token",cache_read:"缓存命中",cache_creation:"缓存创建",avg_ttft:"平均 TTFT",avg_speed:"平均速度",success_rate:"成功率",daily_chart:"每日用量",provider_chart:"供应商用量",model_chart:"模型用量",records_tab:"记录列表",requests:"请求",start_date:"开始日期",end_date:"结束日期",provider:"供应商",model:"模型",scenario:"场景",route:"路由",all:"全部",time:"时间",input_tokens:"输入",output_tokens:"输出",ttft:"TTFT",speed:"速度",duration:"耗时",status:"状态",success:"成功",error:"错误",page:"第",records:"条记录",no_data:"暂无用量数据",clear_confirm:"确定要清除所有用量数据吗?"},d2={common:QC,app:ZC,advanced_router:JC,login:WC,toplevel:e2,transformers:t2,providers:n2,router:a2,settings:r2,json_editor:l2,statusline:s2,color_picker:o2,log_viewer:i2,presets:c2,usage:u2},f2={en:{translation:XC},zh:{translation:d2}};pn.use(Sb).use(mC).init({resources:f2,fallbackLng:"en",interpolation:{escapeValue:!1}});var bh={exports:{}},$o={},wh={exports:{}},Sh={};var Lx;function h2(){return Lx||(Lx=1,(function(t){function a(M,V){var H=M.length;M.push(V);e:for(;0<H;){var oe=H-1>>>1,me=M[oe];if(0<o(me,V))M[oe]=V,M[H]=me,H=oe;else break e}}function r(M){return M.length===0?null:M[0]}function s(M){if(M.length===0)return null;var V=M[0],H=M.pop();if(H!==V){M[0]=H;e:for(var oe=0,me=M.length,O=me>>>1;oe<O;){var D=2*(oe+1)-1,G=M[D],Q=D+1,ae=M[Q];if(0>o(G,H))Q<me&&0>o(ae,G)?(M[oe]=ae,M[Q]=H,oe=Q):(M[oe]=G,M[D]=H,oe=D);else if(Q<me&&0>o(ae,H))M[oe]=ae,M[Q]=H,oe=Q;else break e}}return V}function o(M,V){var H=M.sortIndex-V.sortIndex;return H!==0?H:M.id-V.id}if(t.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var u=performance;t.unstable_now=function(){return u.now()}}else{var d=Date,f=d.now();t.unstable_now=function(){return d.now()-f}}var m=[],p=[],x=1,y=null,w=3,S=!1,N=!1,j=!1,R=!1,T=typeof setTimeout=="function"?setTimeout:null,E=typeof clearTimeout=="function"?clearTimeout:null,_=typeof setImmediate<"u"?setImmediate:null;function k(M){for(var V=r(p);V!==null;){if(V.callback===null)s(p);else if(V.startTime<=M)s(p),V.sortIndex=V.expirationTime,a(m,V);else break;V=r(p)}}function L(M){if(j=!1,k(M),!N)if(r(m)!==null)N=!0,z||(z=!0,ie());else{var V=r(p);V!==null&&F(L,V.startTime-M)}}var z=!1,C=-1,U=5,K=-1;function Z(){return R?!0:!(t.unstable_now()-K<U)}function re(){if(R=!1,z){var M=t.unstable_now();K=M;var V=!0;try{e:{N=!1,j&&(j=!1,E(C),C=-1),S=!0;var H=w;try{t:{for(k(M),y=r(m);y!==null&&!(y.expirationTime>M&&Z());){var oe=y.callback;if(typeof oe=="function"){y.callback=null,w=y.priorityLevel;var me=oe(y.expirationTime<=M);if(M=t.unstable_now(),typeof me=="function"){y.callback=me,k(M),V=!0;break t}y===r(m)&&s(m),k(M)}else s(m);y=r(m)}if(y!==null)V=!0;else{var O=r(p);O!==null&&F(L,O.startTime-M),V=!1}}break e}finally{y=null,w=H,S=!1}V=void 0}}finally{V?ie():z=!1}}}var ie;if(typeof _=="function")ie=function(){_(re)};else if(typeof MessageChannel<"u"){var le=new MessageChannel,P=le.port2;le.port1.onmessage=re,ie=function(){P.postMessage(null)}}else ie=function(){T(re,0)};function F(M,V){C=T(function(){M(t.unstable_now())},V)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(M){M.callback=null},t.unstable_forceFrameRate=function(M){0>M||125<M?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):U=0<M?Math.floor(1e3/M):5},t.unstable_getCurrentPriorityLevel=function(){return w},t.unstable_next=function(M){switch(w){case 1:case 2:case 3:var V=3;break;default:V=w}var H=w;w=V;try{return M()}finally{w=H}},t.unstable_requestPaint=function(){R=!0},t.unstable_runWithPriority=function(M,V){switch(M){case 1:case 2:case 3:case 4:case 5:break;default:M=3}var H=w;w=M;try{return V()}finally{w=H}},t.unstable_scheduleCallback=function(M,V,H){var oe=t.unstable_now();switch(typeof H=="object"&&H!==null?(H=H.delay,H=typeof H=="number"&&0<H?oe+H:oe):H=oe,M){case 1:var me=-1;break;case 2:me=250;break;case 5:me=1073741823;break;case 4:me=1e4;break;default:me=5e3}return me=H+me,M={id:x++,callback:V,priorityLevel:M,startTime:H,expirationTime:me,sortIndex:-1},H>oe?(M.sortIndex=H,a(p,M),r(m)===null&&M===r(p)&&(j?(E(C),C=-1):j=!0,F(L,H-oe))):(M.sortIndex=me,a(m,M),N||S||(N=!0,z||(z=!0,ie()))),M},t.unstable_shouldYield=Z,t.unstable_wrapCallback=function(M){var V=w;return function(){var H=w;w=V;try{return M.apply(this,arguments)}finally{w=H}}}})(Sh)),Sh}var zx;function m2(){return zx||(zx=1,wh.exports=h2()),wh.exports}var _h={exports:{}},on={};var Px;function p2(){if(Px)return on;Px=1;var t=km();function a(m){var p="https://react.dev/errors/"+m;if(1<arguments.length){p+="?args[]="+encodeURIComponent(arguments[1]);for(var x=2;x<arguments.length;x++)p+="&args[]="+encodeURIComponent(arguments[x])}return"Minified React error #"+m+"; visit "+p+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function r(){}var s={d:{f:r,r:function(){throw Error(a(522))},D:r,C:r,L:r,m:r,X:r,S:r,M:r},p:0,findDOMNode:null},o=Symbol.for("react.portal");function u(m,p,x){var y=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:o,key:y==null?null:""+y,children:m,containerInfo:p,implementation:x}}var d=t.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function f(m,p){if(m==="font")return"";if(typeof p=="string")return p==="use-credentials"?p:""}return on.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=s,on.createPortal=function(m,p){var x=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!p||p.nodeType!==1&&p.nodeType!==9&&p.nodeType!==11)throw Error(a(299));return u(m,p,null,x)},on.flushSync=function(m){var p=d.T,x=s.p;try{if(d.T=null,s.p=2,m)return m()}finally{d.T=p,s.p=x,s.d.f()}},on.preconnect=function(m,p){typeof m=="string"&&(p?(p=p.crossOrigin,p=typeof p=="string"?p==="use-credentials"?p:"":void 0):p=null,s.d.C(m,p))},on.prefetchDNS=function(m){typeof m=="string"&&s.d.D(m)},on.preinit=function(m,p){if(typeof m=="string"&&p&&typeof p.as=="string"){var x=p.as,y=f(x,p.crossOrigin),w=typeof p.integrity=="string"?p.integrity:void 0,S=typeof p.fetchPriority=="string"?p.fetchPriority:void 0;x==="style"?s.d.S(m,typeof p.precedence=="string"?p.precedence:void 0,{crossOrigin:y,integrity:w,fetchPriority:S}):x==="script"&&s.d.X(m,{crossOrigin:y,integrity:w,fetchPriority:S,nonce:typeof p.nonce=="string"?p.nonce:void 0})}},on.preinitModule=function(m,p){if(typeof m=="string")if(typeof p=="object"&&p!==null){if(p.as==null||p.as==="script"){var x=f(p.as,p.crossOrigin);s.d.M(m,{crossOrigin:x,integrity:typeof p.integrity=="string"?p.integrity:void 0,nonce:typeof p.nonce=="string"?p.nonce:void 0})}}else p==null&&s.d.M(m)},on.preload=function(m,p){if(typeof m=="string"&&typeof p=="object"&&p!==null&&typeof p.as=="string"){var x=p.as,y=f(x,p.crossOrigin);s.d.L(m,x,{crossOrigin:y,integrity:typeof p.integrity=="string"?p.integrity:void 0,nonce:typeof p.nonce=="string"?p.nonce:void 0,type:typeof p.type=="string"?p.type:void 0,fetchPriority:typeof p.fetchPriority=="string"?p.fetchPriority:void 0,referrerPolicy:typeof p.referrerPolicy=="string"?p.referrerPolicy:void 0,imageSrcSet:typeof p.imageSrcSet=="string"?p.imageSrcSet:void 0,imageSizes:typeof p.imageSizes=="string"?p.imageSizes:void 0,media:typeof p.media=="string"?p.media:void 0})}},on.preloadModule=function(m,p){if(typeof m=="string")if(p){var x=f(p.as,p.crossOrigin);s.d.m(m,{as:typeof p.as=="string"&&p.as!=="script"?p.as:void 0,crossOrigin:x,integrity:typeof p.integrity=="string"?p.integrity:void 0})}else s.d.m(m)},on.requestFormReset=function(m){s.d.r(m)},on.unstable_batchedUpdates=function(m,p){return m(p)},on.useFormState=function(m,p,x){return d.H.useFormState(m,p,x)},on.useFormStatus=function(){return d.H.useHostTransitionStatus()},on.version="19.2.3",on}var Ux;function _b(){if(Ux)return _h.exports;Ux=1;function t(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(a){console.error(a)}}return t(),_h.exports=p2(),_h.exports}var Hx;function g2(){if(Hx)return $o;Hx=1;var t=m2(),a=km(),r=_b();function s(e){var n="https://react.dev/errors/"+e;if(1<arguments.length){n+="?args[]="+encodeURIComponent(arguments[1]);for(var l=2;l<arguments.length;l++)n+="&args[]="+encodeURIComponent(arguments[l])}return"Minified React error #"+e+"; visit "+n+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function o(e){return!(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11)}function u(e){var n=e,l=e;if(e.alternate)for(;n.return;)n=n.return;else{e=n;do n=e,(n.flags&4098)!==0&&(l=n.return),e=n.return;while(e)}return n.tag===3?l:null}function d(e){if(e.tag===13){var n=e.memoizedState;if(n===null&&(e=e.alternate,e!==null&&(n=e.memoizedState)),n!==null)return n.dehydrated}return null}function f(e){if(e.tag===31){var n=e.memoizedState;if(n===null&&(e=e.alternate,e!==null&&(n=e.memoizedState)),n!==null)return n.dehydrated}return null}function m(e){if(u(e)!==e)throw Error(s(188))}function p(e){var n=e.alternate;if(!n){if(n=u(e),n===null)throw Error(s(188));return n!==e?null:e}for(var l=e,i=n;;){var h=l.return;if(h===null)break;var g=h.alternate;if(g===null){if(i=h.return,i!==null){l=i;continue}break}if(h.child===g.child){for(g=h.child;g;){if(g===l)return m(h),e;if(g===i)return m(h),n;g=g.sibling}throw Error(s(188))}if(l.return!==i.return)l=h,i=g;else{for(var b=!1,A=h.child;A;){if(A===l){b=!0,l=h,i=g;break}if(A===i){b=!0,i=h,l=g;break}A=A.sibling}if(!b){for(A=g.child;A;){if(A===l){b=!0,l=g,i=h;break}if(A===i){b=!0,i=g,l=h;break}A=A.sibling}if(!b)throw Error(s(189))}}if(l.alternate!==i)throw Error(s(190))}if(l.tag!==3)throw Error(s(188));return l.stateNode.current===l?e:n}function x(e){var n=e.tag;if(n===5||n===26||n===27||n===6)return e;for(e=e.child;e!==null;){if(n=x(e),n!==null)return n;e=e.sibling}return null}var y=Object.assign,w=Symbol.for("react.element"),S=Symbol.for("react.transitional.element"),N=Symbol.for("react.portal"),j=Symbol.for("react.fragment"),R=Symbol.for("react.strict_mode"),T=Symbol.for("react.profiler"),E=Symbol.for("react.consumer"),_=Symbol.for("react.context"),k=Symbol.for("react.forward_ref"),L=Symbol.for("react.suspense"),z=Symbol.for("react.suspense_list"),C=Symbol.for("react.memo"),U=Symbol.for("react.lazy"),K=Symbol.for("react.activity"),Z=Symbol.for("react.memo_cache_sentinel"),re=Symbol.iterator;function ie(e){return e===null||typeof e!="object"?null:(e=re&&e[re]||e["@@iterator"],typeof e=="function"?e:null)}var le=Symbol.for("react.client.reference");function P(e){if(e==null)return null;if(typeof e=="function")return e.$$typeof===le?null:e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case j:return"Fragment";case T:return"Profiler";case R:return"StrictMode";case L:return"Suspense";case z:return"SuspenseList";case K:return"Activity"}if(typeof e=="object")switch(e.$$typeof){case N:return"Portal";case _:return e.displayName||"Context";case E:return(e._context.displayName||"Context")+".Consumer";case k:var n=e.render;return e=e.displayName,e||(e=n.displayName||n.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case C:return n=e.displayName||null,n!==null?n:P(e.type)||"Memo";case U:n=e._payload,e=e._init;try{return P(e(n))}catch{}}return null}var F=Array.isArray,M=a.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,V=r.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,H={pending:!1,data:null,method:null,action:null},oe=[],me=-1;function O(e){return{current:e}}function D(e){0>me||(e.current=oe[me],oe[me]=null,me--)}function G(e,n){me++,oe[me]=e.current,e.current=n}var Q=O(null),ae=O(null),ve=O(null),I=O(null);function xe(e,n){switch(G(ve,n),G(ae,e),G(Q,null),n.nodeType){case 9:case 11:e=(e=n.documentElement)&&(e=e.namespaceURI)?Dy(e):0;break;default:if(e=n.tagName,n=n.namespaceURI)n=Dy(n),e=Ly(n,e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}D(Q),G(Q,e)}function be(){D(Q),D(ae),D(ve)}function Ce(e){e.memoizedState!==null&&G(I,e);var n=Q.current,l=Ly(n,e.type);n!==l&&(G(ae,e),G(Q,l))}function Fe(e){ae.current===e&&(D(Q),D(ae)),I.current===e&&(D(I),Lo._currentValue=H)}var Ue,_t;function At(e){if(Ue===void 0)try{throw Error()}catch(l){var n=l.stack.trim().match(/\n( *(at )?)/);Ue=n&&n[1]||"",_t=-1<l.stack.indexOf(`
|
|
10
|
+
<script type="module" crossorigin>function DN(t,a){for(var r=0;r<a.length;r++){const s=a[r];if(typeof s!="string"&&!Array.isArray(s)){for(const o in s)if(o!=="default"&&!(o in t)){const u=Object.getOwnPropertyDescriptor(s,o);u&&Object.defineProperty(t,o,u.get?u:{enumerable:!0,get:()=>s[o]})}}}return Object.freeze(Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}))}(function(){const a=document.createElement("link").relList;if(a&&a.supports&&a.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))s(o);new MutationObserver(o=>{for(const u of o)if(u.type==="childList")for(const d of u.addedNodes)d.tagName==="LINK"&&d.rel==="modulepreload"&&s(d)}).observe(document,{childList:!0,subtree:!0});function r(o){const u={};return o.integrity&&(u.integrity=o.integrity),o.referrerPolicy&&(u.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?u.credentials="include":o.crossOrigin==="anonymous"?u.credentials="omit":u.credentials="same-origin",u}function s(o){if(o.ep)return;o.ep=!0;const u=r(o);fetch(o.href,u)}})();function hb(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var gh={exports:{}},Ho={};var dx;function LN(){if(dx)return Ho;dx=1;var t=Symbol.for("react.transitional.element"),a=Symbol.for("react.fragment");function r(s,o,u){var d=null;if(u!==void 0&&(d=""+u),o.key!==void 0&&(d=""+o.key),"key"in o){u={};for(var f in o)f!=="key"&&(u[f]=o[f])}else u=o;return o=u.ref,{$$typeof:t,type:s,key:d,ref:o!==void 0?o:null,props:u}}return Ho.Fragment=a,Ho.jsx=r,Ho.jsxs=r,Ho}var fx;function zN(){return fx||(fx=1,gh.exports=LN()),gh.exports}var c=zN();const Ve=t=>typeof t=="string",Bo=()=>{let t,a;const r=new Promise((s,o)=>{t=s,a=o});return r.resolve=t,r.reject=a,r},hx=t=>t==null?"":""+t,PN=(t,a,r)=>{t.forEach(s=>{a[s]&&(r[s]=a[s])})},UN=/###/g,mx=t=>t&&t.indexOf("###")>-1?t.replace(UN,"."):t,px=t=>!t||Ve(t),ti=(t,a,r)=>{const s=Ve(a)?a.split("."):a;let o=0;for(;o<s.length-1;){if(px(t))return{};const u=mx(s[o]);!t[u]&&r&&(t[u]=new r),Object.prototype.hasOwnProperty.call(t,u)?t=t[u]:t={},++o}return px(t)?{}:{obj:t,k:mx(s[o])}},gx=(t,a,r)=>{const{obj:s,k:o}=ti(t,a,Object);if(s!==void 0||a.length===1){s[o]=r;return}let u=a[a.length-1],d=a.slice(0,a.length-1),f=ti(t,d,Object);for(;f.obj===void 0&&d.length;)u=`${d[d.length-1]}.${u}`,d=d.slice(0,d.length-1),f=ti(t,d,Object),f?.obj&&typeof f.obj[`${f.k}.${u}`]<"u"&&(f.obj=void 0);f.obj[`${f.k}.${u}`]=r},HN=(t,a,r,s)=>{const{obj:o,k:u}=ti(t,a,Object);o[u]=o[u]||[],o[u].push(r)},uu=(t,a)=>{const{obj:r,k:s}=ti(t,a);if(r&&Object.prototype.hasOwnProperty.call(r,s))return r[s]},BN=(t,a,r)=>{const s=uu(t,r);return s!==void 0?s:uu(a,r)},mb=(t,a,r)=>{for(const s in a)s!=="__proto__"&&s!=="constructor"&&(s in t?Ve(t[s])||t[s]instanceof String||Ve(a[s])||a[s]instanceof String?r&&(t[s]=a[s]):mb(t[s],a[s],r):t[s]=a[s]);return t},ms=t=>t.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&");var $N={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};const FN=t=>Ve(t)?t.replace(/[&<>"'\/]/g,a=>$N[a]):t;class IN{constructor(a){this.capacity=a,this.regExpMap=new Map,this.regExpQueue=[]}getRegExp(a){const r=this.regExpMap.get(a);if(r!==void 0)return r;const s=new RegExp(a);return this.regExpQueue.length===this.capacity&&this.regExpMap.delete(this.regExpQueue.shift()),this.regExpMap.set(a,s),this.regExpQueue.push(a),s}}const qN=[" ",",","?","!",";"],VN=new IN(20),GN=(t,a,r)=>{a=a||"",r=r||"";const s=qN.filter(d=>a.indexOf(d)<0&&r.indexOf(d)<0);if(s.length===0)return!0;const o=VN.getRegExp(`(${s.map(d=>d==="?"?"\\?":d).join("|")})`);let u=!o.test(t);if(!u){const d=t.indexOf(r);d>0&&!o.test(t.substring(0,d))&&(u=!0)}return u},Qh=(t,a,r=".")=>{if(!t)return;if(t[a])return Object.prototype.hasOwnProperty.call(t,a)?t[a]:void 0;const s=a.split(r);let o=t;for(let u=0;u<s.length;){if(!o||typeof o!="object")return;let d,f="";for(let m=u;m<s.length;++m)if(m!==u&&(f+=r),f+=s[m],d=o[f],d!==void 0){if(["string","number","boolean"].indexOf(typeof d)>-1&&m<s.length-1)continue;u+=m-u+1;break}o=d}return o},ii=t=>t?.replace("_","-"),KN={type:"logger",log(t){this.output("log",t)},warn(t){this.output("warn",t)},error(t){this.output("error",t)},output(t,a){console?.[t]?.apply?.(console,a)}};class du{constructor(a,r={}){this.init(a,r)}init(a,r={}){this.prefix=r.prefix||"i18next:",this.logger=a||KN,this.options=r,this.debug=r.debug}log(...a){return this.forward(a,"log","",!0)}warn(...a){return this.forward(a,"warn","",!0)}error(...a){return this.forward(a,"error","")}deprecate(...a){return this.forward(a,"warn","WARNING DEPRECATED: ",!0)}forward(a,r,s,o){return o&&!this.debug?null:(Ve(a[0])&&(a[0]=`${s}${this.prefix} ${a[0]}`),this.logger[r](a))}create(a){return new du(this.logger,{prefix:`${this.prefix}:${a}:`,...this.options})}clone(a){return a=a||this.options,a.prefix=a.prefix||this.prefix,new du(this.logger,a)}}var ya=new du;class Nu{constructor(){this.observers={}}on(a,r){return a.split(" ").forEach(s=>{this.observers[s]||(this.observers[s]=new Map);const o=this.observers[s].get(r)||0;this.observers[s].set(r,o+1)}),this}off(a,r){if(this.observers[a]){if(!r){delete this.observers[a];return}this.observers[a].delete(r)}}emit(a,...r){this.observers[a]&&Array.from(this.observers[a].entries()).forEach(([o,u])=>{for(let d=0;d<u;d++)o(...r)}),this.observers["*"]&&Array.from(this.observers["*"].entries()).forEach(([o,u])=>{for(let d=0;d<u;d++)o.apply(o,[a,...r])})}}class vx extends Nu{constructor(a,r={ns:["translation"],defaultNS:"translation"}){super(),this.data=a||{},this.options=r,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.options.ignoreJSONStructure===void 0&&(this.options.ignoreJSONStructure=!0)}addNamespaces(a){this.options.ns.indexOf(a)<0&&this.options.ns.push(a)}removeNamespaces(a){const r=this.options.ns.indexOf(a);r>-1&&this.options.ns.splice(r,1)}getResource(a,r,s,o={}){const u=o.keySeparator!==void 0?o.keySeparator:this.options.keySeparator,d=o.ignoreJSONStructure!==void 0?o.ignoreJSONStructure:this.options.ignoreJSONStructure;let f;a.indexOf(".")>-1?f=a.split("."):(f=[a,r],s&&(Array.isArray(s)?f.push(...s):Ve(s)&&u?f.push(...s.split(u)):f.push(s)));const m=uu(this.data,f);return!m&&!r&&!s&&a.indexOf(".")>-1&&(a=f[0],r=f[1],s=f.slice(2).join(".")),m||!d||!Ve(s)?m:Qh(this.data?.[a]?.[r],s,u)}addResource(a,r,s,o,u={silent:!1}){const d=u.keySeparator!==void 0?u.keySeparator:this.options.keySeparator;let f=[a,r];s&&(f=f.concat(d?s.split(d):s)),a.indexOf(".")>-1&&(f=a.split("."),o=r,r=f[1]),this.addNamespaces(r),gx(this.data,f,o),u.silent||this.emit("added",a,r,s,o)}addResources(a,r,s,o={silent:!1}){for(const u in s)(Ve(s[u])||Array.isArray(s[u]))&&this.addResource(a,r,u,s[u],{silent:!0});o.silent||this.emit("added",a,r,s)}addResourceBundle(a,r,s,o,u,d={silent:!1,skipCopy:!1}){let f=[a,r];a.indexOf(".")>-1&&(f=a.split("."),o=s,s=r,r=f[1]),this.addNamespaces(r);let m=uu(this.data,f)||{};d.skipCopy||(s=JSON.parse(JSON.stringify(s))),o?mb(m,s,u):m={...m,...s},gx(this.data,f,m),d.silent||this.emit("added",a,r,s)}removeResourceBundle(a,r){this.hasResourceBundle(a,r)&&delete this.data[a][r],this.removeNamespaces(r),this.emit("removed",a,r)}hasResourceBundle(a,r){return this.getResource(a,r)!==void 0}getResourceBundle(a,r){return r||(r=this.options.defaultNS),this.getResource(a,r)}getDataByLanguage(a){return this.data[a]}hasLanguageSomeTranslations(a){const r=this.getDataByLanguage(a);return!!(r&&Object.keys(r)||[]).find(o=>r[o]&&Object.keys(r[o]).length>0)}toJSON(){return this.data}}var pb={processors:{},addPostProcessor(t){this.processors[t.name]=t},handle(t,a,r,s,o){return t.forEach(u=>{a=this.processors[u]?.process(a,r,s,o)??a}),a}};const gb=Symbol("i18next/PATH_KEY");function YN(){const t=[],a=Object.create(null);let r;return a.get=(s,o)=>(r?.revoke?.(),o===gb?t:(t.push(o),r=Proxy.revocable(s,a),r.proxy)),Proxy.revocable(Object.create(null),a).proxy}function Zh(t,a){const{[gb]:r}=t(YN());return r.join(a?.keySeparator??".")}const yx={},vh=t=>!Ve(t)&&typeof t!="boolean"&&typeof t!="number";class fu extends Nu{constructor(a,r={}){super(),PN(["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat","utils"],a,this),this.options=r,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.logger=ya.create("translator")}changeLanguage(a){a&&(this.language=a)}exists(a,r={interpolation:{}}){const s={...r};if(a==null)return!1;const o=this.resolve(a,s);if(o?.res===void 0)return!1;const u=vh(o.res);return!(s.returnObjects===!1&&u)}extractFromKey(a,r){let s=r.nsSeparator!==void 0?r.nsSeparator:this.options.nsSeparator;s===void 0&&(s=":");const o=r.keySeparator!==void 0?r.keySeparator:this.options.keySeparator;let u=r.ns||this.options.defaultNS||[];const d=s&&a.indexOf(s)>-1,f=!this.options.userDefinedKeySeparator&&!r.keySeparator&&!this.options.userDefinedNsSeparator&&!r.nsSeparator&&!GN(a,s,o);if(d&&!f){const m=a.match(this.interpolator.nestingRegexp);if(m&&m.length>0)return{key:a,namespaces:Ve(u)?[u]:u};const p=a.split(s);(s!==o||s===o&&this.options.ns.indexOf(p[0])>-1)&&(u=p.shift()),a=p.join(o)}return{key:a,namespaces:Ve(u)?[u]:u}}translate(a,r,s){let o=typeof r=="object"?{...r}:r;if(typeof o!="object"&&this.options.overloadTranslationOptionHandler&&(o=this.options.overloadTranslationOptionHandler(arguments)),typeof o=="object"&&(o={...o}),o||(o={}),a==null)return"";typeof a=="function"&&(a=Zh(a,{...this.options,...o})),Array.isArray(a)||(a=[String(a)]);const u=o.returnDetails!==void 0?o.returnDetails:this.options.returnDetails,d=o.keySeparator!==void 0?o.keySeparator:this.options.keySeparator,{key:f,namespaces:m}=this.extractFromKey(a[a.length-1],o),p=m[m.length-1];let x=o.nsSeparator!==void 0?o.nsSeparator:this.options.nsSeparator;x===void 0&&(x=":");const y=o.lng||this.language,w=o.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if(y?.toLowerCase()==="cimode")return w?u?{res:`${p}${x}${f}`,usedKey:f,exactUsedKey:f,usedLng:y,usedNS:p,usedParams:this.getUsedParamsDetails(o)}:`${p}${x}${f}`:u?{res:f,usedKey:f,exactUsedKey:f,usedLng:y,usedNS:p,usedParams:this.getUsedParamsDetails(o)}:f;const S=this.resolve(a,o);let N=S?.res;const j=S?.usedKey||f,R=S?.exactUsedKey||f,T=["[object Number]","[object Function]","[object RegExp]"],E=o.joinArrays!==void 0?o.joinArrays:this.options.joinArrays,_=!this.i18nFormat||this.i18nFormat.handleAsObject,k=o.count!==void 0&&!Ve(o.count),L=fu.hasDefaultValue(o),z=k?this.pluralResolver.getSuffix(y,o.count,o):"",C=o.ordinal&&k?this.pluralResolver.getSuffix(y,o.count,{ordinal:!1}):"",U=k&&!o.ordinal&&o.count===0,K=U&&o[`defaultValue${this.options.pluralSeparator}zero`]||o[`defaultValue${z}`]||o[`defaultValue${C}`]||o.defaultValue;let Z=N;_&&!N&&L&&(Z=K);const re=vh(Z),ie=Object.prototype.toString.apply(Z);if(_&&Z&&re&&T.indexOf(ie)<0&&!(Ve(E)&&Array.isArray(Z))){if(!o.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn("accessing an object - but returnObjects options is not enabled!");const le=this.options.returnedObjectHandler?this.options.returnedObjectHandler(j,Z,{...o,ns:m}):`key '${f} (${this.language})' returned an object instead of string.`;return u?(S.res=le,S.usedParams=this.getUsedParamsDetails(o),S):le}if(d){const le=Array.isArray(Z),P=le?[]:{},F=le?R:j;for(const M in Z)if(Object.prototype.hasOwnProperty.call(Z,M)){const V=`${F}${d}${M}`;L&&!N?P[M]=this.translate(V,{...o,defaultValue:vh(K)?K[M]:void 0,joinArrays:!1,ns:m}):P[M]=this.translate(V,{...o,joinArrays:!1,ns:m}),P[M]===V&&(P[M]=Z[M])}N=P}}else if(_&&Ve(E)&&Array.isArray(N))N=N.join(E),N&&(N=this.extendTranslation(N,a,o,s));else{let le=!1,P=!1;!this.isValidLookup(N)&&L&&(le=!0,N=K),this.isValidLookup(N)||(P=!0,N=f);const M=(o.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&P?void 0:N,V=L&&K!==N&&this.options.updateMissing;if(P||le||V){if(this.logger.log(V?"updateKey":"missingKey",y,p,f,V?K:N),d){const O=this.resolve(f,{...o,keySeparator:!1});O&&O.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 H=[];const oe=this.languageUtils.getFallbackCodes(this.options.fallbackLng,o.lng||this.language);if(this.options.saveMissingTo==="fallback"&&oe&&oe[0])for(let O=0;O<oe.length;O++)H.push(oe[O]);else this.options.saveMissingTo==="all"?H=this.languageUtils.toResolveHierarchy(o.lng||this.language):H.push(o.lng||this.language);const me=(O,D,G)=>{const Q=L&&G!==N?G:M;this.options.missingKeyHandler?this.options.missingKeyHandler(O,p,D,Q,V,o):this.backendConnector?.saveMissing&&this.backendConnector.saveMissing(O,p,D,Q,V,o),this.emit("missingKey",O,p,D,N)};this.options.saveMissing&&(this.options.saveMissingPlurals&&k?H.forEach(O=>{const D=this.pluralResolver.getSuffixes(O,o);U&&o[`defaultValue${this.options.pluralSeparator}zero`]&&D.indexOf(`${this.options.pluralSeparator}zero`)<0&&D.push(`${this.options.pluralSeparator}zero`),D.forEach(G=>{me([O],f+G,o[`defaultValue${G}`]||K)})}):me(H,f,K))}N=this.extendTranslation(N,a,o,S,s),P&&N===f&&this.options.appendNamespaceToMissingKey&&(N=`${p}${x}${f}`),(P||le)&&this.options.parseMissingKeyHandler&&(N=this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?`${p}${x}${f}`:f,le?N:void 0,o))}return u?(S.res=N,S.usedParams=this.getUsedParamsDetails(o),S):N}extendTranslation(a,r,s,o,u){if(this.i18nFormat?.parse)a=this.i18nFormat.parse(a,{...this.options.interpolation.defaultVariables,...s},s.lng||this.language||o.usedLng,o.usedNS,o.usedKey,{resolved:o});else if(!s.skipInterpolation){s.interpolation&&this.interpolator.init({...s,interpolation:{...this.options.interpolation,...s.interpolation}});const m=Ve(a)&&(s?.interpolation?.skipOnVariables!==void 0?s.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables);let p;if(m){const y=a.match(this.interpolator.nestingRegexp);p=y&&y.length}let x=s.replace&&!Ve(s.replace)?s.replace:s;if(this.options.interpolation.defaultVariables&&(x={...this.options.interpolation.defaultVariables,...x}),a=this.interpolator.interpolate(a,x,s.lng||this.language||o.usedLng,s),m){const y=a.match(this.interpolator.nestingRegexp),w=y&&y.length;p<w&&(s.nest=!1)}!s.lng&&o&&o.res&&(s.lng=this.language||o.usedLng),s.nest!==!1&&(a=this.interpolator.nest(a,(...y)=>u?.[0]===y[0]&&!s.context?(this.logger.warn(`It seems you are nesting recursively key: ${y[0]} in key: ${r[0]}`),null):this.translate(...y,r),s)),s.interpolation&&this.interpolator.reset()}const d=s.postProcess||this.options.postProcess,f=Ve(d)?[d]:d;return a!=null&&f?.length&&s.applyPostProcessor!==!1&&(a=pb.handle(f,a,r,this.options&&this.options.postProcessPassResolved?{i18nResolved:{...o,usedParams:this.getUsedParamsDetails(s)},...s}:s,this)),a}resolve(a,r={}){let s,o,u,d,f;return Ve(a)&&(a=[a]),a.forEach(m=>{if(this.isValidLookup(s))return;const p=this.extractFromKey(m,r),x=p.key;o=x;let y=p.namespaces;this.options.fallbackNS&&(y=y.concat(this.options.fallbackNS));const w=r.count!==void 0&&!Ve(r.count),S=w&&!r.ordinal&&r.count===0,N=r.context!==void 0&&(Ve(r.context)||typeof r.context=="number")&&r.context!=="",j=r.lngs?r.lngs:this.languageUtils.toResolveHierarchy(r.lng||this.language,r.fallbackLng);y.forEach(R=>{this.isValidLookup(s)||(f=R,!yx[`${j[0]}-${R}`]&&this.utils?.hasLoadedNamespace&&!this.utils?.hasLoadedNamespace(f)&&(yx[`${j[0]}-${R}`]=!0,this.logger.warn(`key "${o}" for languages "${j.join(", ")}" won't get resolved as namespace "${f}" 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!!!")),j.forEach(T=>{if(this.isValidLookup(s))return;d=T;const E=[x];if(this.i18nFormat?.addLookupKeys)this.i18nFormat.addLookupKeys(E,x,T,R,r);else{let k;w&&(k=this.pluralResolver.getSuffix(T,r.count,r));const L=`${this.options.pluralSeparator}zero`,z=`${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;if(w&&(r.ordinal&&k.indexOf(z)===0&&E.push(x+k.replace(z,this.options.pluralSeparator)),E.push(x+k),S&&E.push(x+L)),N){const C=`${x}${this.options.contextSeparator||"_"}${r.context}`;E.push(C),w&&(r.ordinal&&k.indexOf(z)===0&&E.push(C+k.replace(z,this.options.pluralSeparator)),E.push(C+k),S&&E.push(C+L))}}let _;for(;_=E.pop();)this.isValidLookup(s)||(u=_,s=this.getResource(T,R,_,r))}))})}),{res:s,usedKey:o,exactUsedKey:u,usedLng:d,usedNS:f}}isValidLookup(a){return a!==void 0&&!(!this.options.returnNull&&a===null)&&!(!this.options.returnEmptyString&&a==="")}getResource(a,r,s,o={}){return this.i18nFormat?.getResource?this.i18nFormat.getResource(a,r,s,o):this.resourceStore.getResource(a,r,s,o)}getUsedParamsDetails(a={}){const r=["defaultValue","ordinal","context","replace","lng","lngs","fallbackLng","ns","keySeparator","nsSeparator","returnObjects","returnDetails","joinArrays","postProcess","interpolation"],s=a.replace&&!Ve(a.replace);let o=s?a.replace:a;if(s&&typeof a.count<"u"&&(o.count=a.count),this.options.interpolation.defaultVariables&&(o={...this.options.interpolation.defaultVariables,...o}),!s){o={...o};for(const u of r)delete o[u]}return o}static hasDefaultValue(a){const r="defaultValue";for(const s in a)if(Object.prototype.hasOwnProperty.call(a,s)&&r===s.substring(0,r.length)&&a[s]!==void 0)return!0;return!1}}class xx{constructor(a){this.options=a,this.supportedLngs=this.options.supportedLngs||!1,this.logger=ya.create("languageUtils")}getScriptPartFromCode(a){if(a=ii(a),!a||a.indexOf("-")<0)return null;const r=a.split("-");return r.length===2||(r.pop(),r[r.length-1].toLowerCase()==="x")?null:this.formatLanguageCode(r.join("-"))}getLanguagePartFromCode(a){if(a=ii(a),!a||a.indexOf("-")<0)return a;const r=a.split("-");return this.formatLanguageCode(r[0])}formatLanguageCode(a){if(Ve(a)&&a.indexOf("-")>-1){let r;try{r=Intl.getCanonicalLocales(a)[0]}catch{}return r&&this.options.lowerCaseLng&&(r=r.toLowerCase()),r||(this.options.lowerCaseLng?a.toLowerCase():a)}return this.options.cleanCode||this.options.lowerCaseLng?a.toLowerCase():a}isSupportedCode(a){return(this.options.load==="languageOnly"||this.options.nonExplicitSupportedLngs)&&(a=this.getLanguagePartFromCode(a)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.indexOf(a)>-1}getBestMatchFromCodes(a){if(!a)return null;let r;return a.forEach(s=>{if(r)return;const o=this.formatLanguageCode(s);(!this.options.supportedLngs||this.isSupportedCode(o))&&(r=o)}),!r&&this.options.supportedLngs&&a.forEach(s=>{if(r)return;const o=this.getScriptPartFromCode(s);if(this.isSupportedCode(o))return r=o;const u=this.getLanguagePartFromCode(s);if(this.isSupportedCode(u))return r=u;r=this.options.supportedLngs.find(d=>{if(d===u)return d;if(!(d.indexOf("-")<0&&u.indexOf("-")<0)&&(d.indexOf("-")>0&&u.indexOf("-")<0&&d.substring(0,d.indexOf("-"))===u||d.indexOf(u)===0&&u.length>1))return d})}),r||(r=this.getFallbackCodes(this.options.fallbackLng)[0]),r}getFallbackCodes(a,r){if(!a)return[];if(typeof a=="function"&&(a=a(r)),Ve(a)&&(a=[a]),Array.isArray(a))return a;if(!r)return a.default||[];let s=a[r];return s||(s=a[this.getScriptPartFromCode(r)]),s||(s=a[this.formatLanguageCode(r)]),s||(s=a[this.getLanguagePartFromCode(r)]),s||(s=a.default),s||[]}toResolveHierarchy(a,r){const s=this.getFallbackCodes((r===!1?[]:r)||this.options.fallbackLng||[],a),o=[],u=d=>{d&&(this.isSupportedCode(d)?o.push(d):this.logger.warn(`rejecting language code not found in supportedLngs: ${d}`))};return Ve(a)&&(a.indexOf("-")>-1||a.indexOf("_")>-1)?(this.options.load!=="languageOnly"&&u(this.formatLanguageCode(a)),this.options.load!=="languageOnly"&&this.options.load!=="currentOnly"&&u(this.getScriptPartFromCode(a)),this.options.load!=="currentOnly"&&u(this.getLanguagePartFromCode(a))):Ve(a)&&u(this.formatLanguageCode(a)),s.forEach(d=>{o.indexOf(d)<0&&u(this.formatLanguageCode(d))}),o}}const bx={zero:0,one:1,two:2,few:3,many:4,other:5},wx={select:t=>t===1?"one":"other",resolvedOptions:()=>({pluralCategories:["one","other"]})};class XN{constructor(a,r={}){this.languageUtils=a,this.options=r,this.logger=ya.create("pluralResolver"),this.pluralRulesCache={}}addRule(a,r){this.rules[a]=r}clearCache(){this.pluralRulesCache={}}getRule(a,r={}){const s=ii(a==="dev"?"en":a),o=r.ordinal?"ordinal":"cardinal",u=JSON.stringify({cleanedCode:s,type:o});if(u in this.pluralRulesCache)return this.pluralRulesCache[u];let d;try{d=new Intl.PluralRules(s,{type:o})}catch{if(!Intl)return this.logger.error("No Intl support, please use an Intl polyfill!"),wx;if(!a.match(/-|_/))return wx;const m=this.languageUtils.getLanguagePartFromCode(a);d=this.getRule(m,r)}return this.pluralRulesCache[u]=d,d}needsPlural(a,r={}){let s=this.getRule(a,r);return s||(s=this.getRule("dev",r)),s?.resolvedOptions().pluralCategories.length>1}getPluralFormsOfKey(a,r,s={}){return this.getSuffixes(a,s).map(o=>`${r}${o}`)}getSuffixes(a,r={}){let s=this.getRule(a,r);return s||(s=this.getRule("dev",r)),s?s.resolvedOptions().pluralCategories.sort((o,u)=>bx[o]-bx[u]).map(o=>`${this.options.prepend}${r.ordinal?`ordinal${this.options.prepend}`:""}${o}`):[]}getSuffix(a,r,s={}){const o=this.getRule(a,s);return o?`${this.options.prepend}${s.ordinal?`ordinal${this.options.prepend}`:""}${o.select(r)}`:(this.logger.warn(`no plural rule found for: ${a}`),this.getSuffix("dev",r,s))}}const Sx=(t,a,r,s=".",o=!0)=>{let u=BN(t,a,r);return!u&&o&&Ve(r)&&(u=Qh(t,r,s),u===void 0&&(u=Qh(a,r,s))),u},yh=t=>t.replace(/\$/g,"$$$$");class _x{constructor(a={}){this.logger=ya.create("interpolator"),this.options=a,this.format=a?.interpolation?.format||(r=>r),this.init(a)}init(a={}){a.interpolation||(a.interpolation={escapeValue:!0});const{escape:r,escapeValue:s,useRawValueToEscape:o,prefix:u,prefixEscaped:d,suffix:f,suffixEscaped:m,formatSeparator:p,unescapeSuffix:x,unescapePrefix:y,nestingPrefix:w,nestingPrefixEscaped:S,nestingSuffix:N,nestingSuffixEscaped:j,nestingOptionsSeparator:R,maxReplaces:T,alwaysFormat:E}=a.interpolation;this.escape=r!==void 0?r:FN,this.escapeValue=s!==void 0?s:!0,this.useRawValueToEscape=o!==void 0?o:!1,this.prefix=u?ms(u):d||"{{",this.suffix=f?ms(f):m||"}}",this.formatSeparator=p||",",this.unescapePrefix=x?"":y||"-",this.unescapeSuffix=this.unescapePrefix?"":x||"",this.nestingPrefix=w?ms(w):S||ms("$t("),this.nestingSuffix=N?ms(N):j||ms(")"),this.nestingOptionsSeparator=R||",",this.maxReplaces=T||1e3,this.alwaysFormat=E!==void 0?E:!1,this.resetRegExp()}reset(){this.options&&this.init(this.options)}resetRegExp(){const a=(r,s)=>r?.source===s?(r.lastIndex=0,r):new RegExp(s,"g");this.regexp=a(this.regexp,`${this.prefix}(.+?)${this.suffix}`),this.regexpUnescape=a(this.regexpUnescape,`${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`),this.nestingRegexp=a(this.nestingRegexp,`${this.nestingPrefix}((?:[^()"']+|"[^"]*"|'[^']*'|\\((?:[^()]|"[^"]*"|'[^']*')*\\))*?)${this.nestingSuffix}`)}interpolate(a,r,s,o){let u,d,f;const m=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{},p=S=>{if(S.indexOf(this.formatSeparator)<0){const T=Sx(r,m,S,this.options.keySeparator,this.options.ignoreJSONStructure);return this.alwaysFormat?this.format(T,void 0,s,{...o,...r,interpolationkey:S}):T}const N=S.split(this.formatSeparator),j=N.shift().trim(),R=N.join(this.formatSeparator).trim();return this.format(Sx(r,m,j,this.options.keySeparator,this.options.ignoreJSONStructure),R,s,{...o,...r,interpolationkey:j})};this.resetRegExp();const x=o?.missingInterpolationHandler||this.options.missingInterpolationHandler,y=o?.interpolation?.skipOnVariables!==void 0?o.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:S=>yh(S)},{regex:this.regexp,safeValue:S=>this.escapeValue?yh(this.escape(S)):yh(S)}].forEach(S=>{for(f=0;u=S.regex.exec(a);){const N=u[1].trim();if(d=p(N),d===void 0)if(typeof x=="function"){const R=x(a,u,o);d=Ve(R)?R:""}else if(o&&Object.prototype.hasOwnProperty.call(o,N))d="";else if(y){d=u[0];continue}else this.logger.warn(`missed to pass in variable ${N} for interpolating ${a}`),d="";else!Ve(d)&&!this.useRawValueToEscape&&(d=hx(d));const j=S.safeValue(d);if(a=a.replace(u[0],j),y?(S.regex.lastIndex+=d.length,S.regex.lastIndex-=u[0].length):S.regex.lastIndex=0,f++,f>=this.maxReplaces)break}}),a}nest(a,r,s={}){let o,u,d;const f=(m,p)=>{const x=this.nestingOptionsSeparator;if(m.indexOf(x)<0)return m;const y=m.split(new RegExp(`${x}[ ]*{`));let w=`{${y[1]}`;m=y[0],w=this.interpolate(w,d);const S=w.match(/'/g),N=w.match(/"/g);((S?.length??0)%2===0&&!N||N.length%2!==0)&&(w=w.replace(/'/g,'"'));try{d=JSON.parse(w),p&&(d={...p,...d})}catch(j){return this.logger.warn(`failed parsing options string in nesting for key ${m}`,j),`${m}${x}${w}`}return d.defaultValue&&d.defaultValue.indexOf(this.prefix)>-1&&delete d.defaultValue,m};for(;o=this.nestingRegexp.exec(a);){let m=[];d={...s},d=d.replace&&!Ve(d.replace)?d.replace:d,d.applyPostProcessor=!1,delete d.defaultValue;const p=/{.*}/.test(o[1])?o[1].lastIndexOf("}")+1:o[1].indexOf(this.formatSeparator);if(p!==-1&&(m=o[1].slice(p).split(this.formatSeparator).map(x=>x.trim()).filter(Boolean),o[1]=o[1].slice(0,p)),u=r(f.call(this,o[1].trim(),d),d),u&&o[0]===a&&!Ve(u))return u;Ve(u)||(u=hx(u)),u||(this.logger.warn(`missed to resolve ${o[1]} for nesting ${a}`),u=""),m.length&&(u=m.reduce((x,y)=>this.format(x,y,s.lng,{...s,interpolationkey:o[1].trim()}),u.trim())),a=a.replace(o[0],u),this.regexp.lastIndex=0}return a}}const QN=t=>{let a=t.toLowerCase().trim();const r={};if(t.indexOf("(")>-1){const s=t.split("(");a=s[0].toLowerCase().trim();const o=s[1].substring(0,s[1].length-1);a==="currency"&&o.indexOf(":")<0?r.currency||(r.currency=o.trim()):a==="relativetime"&&o.indexOf(":")<0?r.range||(r.range=o.trim()):o.split(";").forEach(d=>{if(d){const[f,...m]=d.split(":"),p=m.join(":").trim().replace(/^'+|'+$/g,""),x=f.trim();r[x]||(r[x]=p),p==="false"&&(r[x]=!1),p==="true"&&(r[x]=!0),isNaN(p)||(r[x]=parseInt(p,10))}})}return{formatName:a,formatOptions:r}},jx=t=>{const a={};return(r,s,o)=>{let u=o;o&&o.interpolationkey&&o.formatParams&&o.formatParams[o.interpolationkey]&&o[o.interpolationkey]&&(u={...u,[o.interpolationkey]:void 0});const d=s+JSON.stringify(u);let f=a[d];return f||(f=t(ii(s),o),a[d]=f),f(r)}},ZN=t=>(a,r,s)=>t(ii(r),s)(a);class JN{constructor(a={}){this.logger=ya.create("formatter"),this.options=a,this.init(a)}init(a,r={interpolation:{}}){this.formatSeparator=r.interpolation.formatSeparator||",";const s=r.cacheInBuiltFormats?jx:ZN;this.formats={number:s((o,u)=>{const d=new Intl.NumberFormat(o,{...u});return f=>d.format(f)}),currency:s((o,u)=>{const d=new Intl.NumberFormat(o,{...u,style:"currency"});return f=>d.format(f)}),datetime:s((o,u)=>{const d=new Intl.DateTimeFormat(o,{...u});return f=>d.format(f)}),relativetime:s((o,u)=>{const d=new Intl.RelativeTimeFormat(o,{...u});return f=>d.format(f,u.range||"day")}),list:s((o,u)=>{const d=new Intl.ListFormat(o,{...u});return f=>d.format(f)})}}add(a,r){this.formats[a.toLowerCase().trim()]=r}addCached(a,r){this.formats[a.toLowerCase().trim()]=jx(r)}format(a,r,s,o={}){const u=r.split(this.formatSeparator);if(u.length>1&&u[0].indexOf("(")>1&&u[0].indexOf(")")<0&&u.find(f=>f.indexOf(")")>-1)){const f=u.findIndex(m=>m.indexOf(")")>-1);u[0]=[u[0],...u.splice(1,f)].join(this.formatSeparator)}return u.reduce((f,m)=>{const{formatName:p,formatOptions:x}=QN(m);if(this.formats[p]){let y=f;try{const w=o?.formatParams?.[o.interpolationkey]||{},S=w.locale||w.lng||o.locale||o.lng||s;y=this.formats[p](f,S,{...x,...o,...w})}catch(w){this.logger.warn(w)}return y}else this.logger.warn(`there was no format function for ${p}`);return f},a)}}const WN=(t,a)=>{t.pending[a]!==void 0&&(delete t.pending[a],t.pendingCount--)};class eC extends Nu{constructor(a,r,s,o={}){super(),this.backend=a,this.store=r,this.services=s,this.languageUtils=s.languageUtils,this.options=o,this.logger=ya.create("backendConnector"),this.waitingReads=[],this.maxParallelReads=o.maxParallelReads||10,this.readingCalls=0,this.maxRetries=o.maxRetries>=0?o.maxRetries:5,this.retryTimeout=o.retryTimeout>=1?o.retryTimeout:350,this.state={},this.queue=[],this.backend?.init?.(s,o.backend,o)}queueLoad(a,r,s,o){const u={},d={},f={},m={};return a.forEach(p=>{let x=!0;r.forEach(y=>{const w=`${p}|${y}`;!s.reload&&this.store.hasResourceBundle(p,y)?this.state[w]=2:this.state[w]<0||(this.state[w]===1?d[w]===void 0&&(d[w]=!0):(this.state[w]=1,x=!1,d[w]===void 0&&(d[w]=!0),u[w]===void 0&&(u[w]=!0),m[y]===void 0&&(m[y]=!0)))}),x||(f[p]=!0)}),(Object.keys(u).length||Object.keys(d).length)&&this.queue.push({pending:d,pendingCount:Object.keys(d).length,loaded:{},errors:[],callback:o}),{toLoad:Object.keys(u),pending:Object.keys(d),toLoadLanguages:Object.keys(f),toLoadNamespaces:Object.keys(m)}}loaded(a,r,s){const o=a.split("|"),u=o[0],d=o[1];r&&this.emit("failedLoading",u,d,r),!r&&s&&this.store.addResourceBundle(u,d,s,void 0,void 0,{skipCopy:!0}),this.state[a]=r?-1:2,r&&s&&(this.state[a]=0);const f={};this.queue.forEach(m=>{HN(m.loaded,[u],d),WN(m,a),r&&m.errors.push(r),m.pendingCount===0&&!m.done&&(Object.keys(m.loaded).forEach(p=>{f[p]||(f[p]={});const x=m.loaded[p];x.length&&x.forEach(y=>{f[p][y]===void 0&&(f[p][y]=!0)})}),m.done=!0,m.errors.length?m.callback(m.errors):m.callback())}),this.emit("loaded",f),this.queue=this.queue.filter(m=>!m.done)}read(a,r,s,o=0,u=this.retryTimeout,d){if(!a.length)return d(null,{});if(this.readingCalls>=this.maxParallelReads){this.waitingReads.push({lng:a,ns:r,fcName:s,tried:o,wait:u,callback:d});return}this.readingCalls++;const f=(p,x)=>{if(this.readingCalls--,this.waitingReads.length>0){const y=this.waitingReads.shift();this.read(y.lng,y.ns,y.fcName,y.tried,y.wait,y.callback)}if(p&&x&&o<this.maxRetries){setTimeout(()=>{this.read.call(this,a,r,s,o+1,u*2,d)},u);return}d(p,x)},m=this.backend[s].bind(this.backend);if(m.length===2){try{const p=m(a,r);p&&typeof p.then=="function"?p.then(x=>f(null,x)).catch(f):f(null,p)}catch(p){f(p)}return}return m(a,r,f)}prepareLoading(a,r,s={},o){if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),o&&o();Ve(a)&&(a=this.languageUtils.toResolveHierarchy(a)),Ve(r)&&(r=[r]);const u=this.queueLoad(a,r,s,o);if(!u.toLoad.length)return u.pending.length||o(),null;u.toLoad.forEach(d=>{this.loadOne(d)})}load(a,r,s){this.prepareLoading(a,r,{},s)}reload(a,r,s){this.prepareLoading(a,r,{reload:!0},s)}loadOne(a,r=""){const s=a.split("|"),o=s[0],u=s[1];this.read(o,u,"read",void 0,void 0,(d,f)=>{d&&this.logger.warn(`${r}loading namespace ${u} for language ${o} failed`,d),!d&&f&&this.logger.log(`${r}loaded namespace ${u} for language ${o}`,f),this.loaded(a,d,f)})}saveMissing(a,r,s,o,u,d={},f=()=>{}){if(this.services?.utils?.hasLoadedNamespace&&!this.services?.utils?.hasLoadedNamespace(r)){this.logger.warn(`did not save key "${s}" as the namespace "${r}" 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(!(s==null||s==="")){if(this.backend?.create){const m={...d,isUpdate:u},p=this.backend.create.bind(this.backend);if(p.length<6)try{let x;p.length===5?x=p(a,r,s,o,m):x=p(a,r,s,o),x&&typeof x.then=="function"?x.then(y=>f(null,y)).catch(f):f(null,x)}catch(x){f(x)}else p(a,r,s,o,f,m)}!a||!a[0]||this.store.addResource(a[0],r,s,o)}}}const Nx=()=>({debug:!1,initAsync:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:"all",preload:!1,simplifyPluralSuffix:!0,keySeparator:".",nsSeparator:":",pluralSeparator:"_",contextSeparator:"_",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:t=>{let a={};if(typeof t[1]=="object"&&(a=t[1]),Ve(t[1])&&(a.defaultValue=t[1]),Ve(t[2])&&(a.tDescription=t[2]),typeof t[2]=="object"||typeof t[3]=="object"){const r=t[3]||t[2];Object.keys(r).forEach(s=>{a[s]=r[s]})}return a},interpolation:{escapeValue:!0,format:t=>t,prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",nestingOptionsSeparator:",",maxReplaces:1e3,skipOnVariables:!0},cacheInBuiltFormats:!0}),Cx=t=>(Ve(t.ns)&&(t.ns=[t.ns]),Ve(t.fallbackLng)&&(t.fallbackLng=[t.fallbackLng]),Ve(t.fallbackNS)&&(t.fallbackNS=[t.fallbackNS]),t.supportedLngs?.indexOf?.("cimode")<0&&(t.supportedLngs=t.supportedLngs.concat(["cimode"])),typeof t.initImmediate=="boolean"&&(t.initAsync=t.initImmediate),t),$c=()=>{},tC=t=>{Object.getOwnPropertyNames(Object.getPrototypeOf(t)).forEach(r=>{typeof t[r]=="function"&&(t[r]=t[r].bind(t))})};class ni extends Nu{constructor(a={},r){if(super(),this.options=Cx(a),this.services={},this.logger=ya,this.modules={external:[]},tC(this),r&&!this.isInitialized&&!a.isClone){if(!this.options.initAsync)return this.init(a,r),this;setTimeout(()=>{this.init(a,r)},0)}}init(a={},r){this.isInitializing=!0,typeof a=="function"&&(r=a,a={}),a.defaultNS==null&&a.ns&&(Ve(a.ns)?a.defaultNS=a.ns:a.ns.indexOf("translation")<0&&(a.defaultNS=a.ns[0]));const s=Nx();this.options={...s,...this.options,...Cx(a)},this.options.interpolation={...s.interpolation,...this.options.interpolation},a.keySeparator!==void 0&&(this.options.userDefinedKeySeparator=a.keySeparator),a.nsSeparator!==void 0&&(this.options.userDefinedNsSeparator=a.nsSeparator),typeof this.options.overloadTranslationOptionHandler!="function"&&(this.options.overloadTranslationOptionHandler=s.overloadTranslationOptionHandler);const o=p=>p?typeof p=="function"?new p:p:null;if(!this.options.isClone){this.modules.logger?ya.init(o(this.modules.logger),this.options):ya.init(null,this.options);let p;this.modules.formatter?p=this.modules.formatter:p=JN;const x=new xx(this.options);this.store=new vx(this.options.resources,this.options);const y=this.services;y.logger=ya,y.resourceStore=this.store,y.languageUtils=x,y.pluralResolver=new XN(x,{prepend:this.options.pluralSeparator,simplifyPluralSuffix:this.options.simplifyPluralSuffix}),this.options.interpolation.format&&this.options.interpolation.format!==s.interpolation.format&&this.logger.deprecate("init: you are still using the legacy format function, please use the new approach: https://www.i18next.com/translation-function/formatting"),p&&(!this.options.interpolation.format||this.options.interpolation.format===s.interpolation.format)&&(y.formatter=o(p),y.formatter.init&&y.formatter.init(y,this.options),this.options.interpolation.format=y.formatter.format.bind(y.formatter)),y.interpolator=new _x(this.options),y.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},y.backendConnector=new eC(o(this.modules.backend),y.resourceStore,y,this.options),y.backendConnector.on("*",(S,...N)=>{this.emit(S,...N)}),this.modules.languageDetector&&(y.languageDetector=o(this.modules.languageDetector),y.languageDetector.init&&y.languageDetector.init(y,this.options.detection,this.options)),this.modules.i18nFormat&&(y.i18nFormat=o(this.modules.i18nFormat),y.i18nFormat.init&&y.i18nFormat.init(this)),this.translator=new fu(this.services,this.options),this.translator.on("*",(S,...N)=>{this.emit(S,...N)}),this.modules.external.forEach(S=>{S.init&&S.init(this)})}if(this.format=this.options.interpolation.format,r||(r=$c),this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){const p=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);p.length>0&&p[0]!=="dev"&&(this.options.lng=p[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(p=>{this[p]=(...x)=>this.store[p](...x)}),["addResource","addResources","addResourceBundle","removeResourceBundle"].forEach(p=>{this[p]=(...x)=>(this.store[p](...x),this)});const f=Bo(),m=()=>{const p=(x,y)=>{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),f.resolve(y),r(x,y)};if(this.languages&&!this.isInitialized)return p(null,this.t.bind(this));this.changeLanguage(this.options.lng,p)};return this.options.resources||!this.options.initAsync?m():setTimeout(m,0),f}loadResources(a,r=$c){let s=r;const o=Ve(a)?a:this.language;if(typeof a=="function"&&(s=a),!this.options.resources||this.options.partialBundledLanguages){if(o?.toLowerCase()==="cimode"&&(!this.options.preload||this.options.preload.length===0))return s();const u=[],d=f=>{if(!f||f==="cimode")return;this.services.languageUtils.toResolveHierarchy(f).forEach(p=>{p!=="cimode"&&u.indexOf(p)<0&&u.push(p)})};o?d(o):this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach(m=>d(m)),this.options.preload?.forEach?.(f=>d(f)),this.services.backendConnector.load(u,this.options.ns,f=>{!f&&!this.resolvedLanguage&&this.language&&this.setResolvedLanguage(this.language),s(f)})}else s(null)}reloadResources(a,r,s){const o=Bo();return typeof a=="function"&&(s=a,a=void 0),typeof r=="function"&&(s=r,r=void 0),a||(a=this.languages),r||(r=this.options.ns),s||(s=$c),this.services.backendConnector.reload(a,r,u=>{o.resolve(),s(u)}),o}use(a){if(!a)throw new Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");if(!a.type)throw new Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");return a.type==="backend"&&(this.modules.backend=a),(a.type==="logger"||a.log&&a.warn&&a.error)&&(this.modules.logger=a),a.type==="languageDetector"&&(this.modules.languageDetector=a),a.type==="i18nFormat"&&(this.modules.i18nFormat=a),a.type==="postProcessor"&&pb.addPostProcessor(a),a.type==="formatter"&&(this.modules.formatter=a),a.type==="3rdParty"&&this.modules.external.push(a),this}setResolvedLanguage(a){if(!(!a||!this.languages)&&!(["cimode","dev"].indexOf(a)>-1)){for(let r=0;r<this.languages.length;r++){const s=this.languages[r];if(!(["cimode","dev"].indexOf(s)>-1)&&this.store.hasLanguageSomeTranslations(s)){this.resolvedLanguage=s;break}}!this.resolvedLanguage&&this.languages.indexOf(a)<0&&this.store.hasLanguageSomeTranslations(a)&&(this.resolvedLanguage=a,this.languages.unshift(a))}}changeLanguage(a,r){this.isLanguageChangingTo=a;const s=Bo();this.emit("languageChanging",a);const o=f=>{this.language=f,this.languages=this.services.languageUtils.toResolveHierarchy(f),this.resolvedLanguage=void 0,this.setResolvedLanguage(f)},u=(f,m)=>{m?this.isLanguageChangingTo===a&&(o(m),this.translator.changeLanguage(m),this.isLanguageChangingTo=void 0,this.emit("languageChanged",m),this.logger.log("languageChanged",m)):this.isLanguageChangingTo=void 0,s.resolve((...p)=>this.t(...p)),r&&r(f,(...p)=>this.t(...p))},d=f=>{!a&&!f&&this.services.languageDetector&&(f=[]);const m=Ve(f)?f:f&&f[0],p=this.store.hasLanguageSomeTranslations(m)?m:this.services.languageUtils.getBestMatchFromCodes(Ve(f)?[f]:f);p&&(this.language||o(p),this.translator.language||this.translator.changeLanguage(p),this.services.languageDetector?.cacheUserLanguage?.(p)),this.loadResources(p,x=>{u(x,p)})};return!a&&this.services.languageDetector&&!this.services.languageDetector.async?d(this.services.languageDetector.detect()):!a&&this.services.languageDetector&&this.services.languageDetector.async?this.services.languageDetector.detect.length===0?this.services.languageDetector.detect().then(d):this.services.languageDetector.detect(d):d(a),s}getFixedT(a,r,s){const o=(u,d,...f)=>{let m;typeof d!="object"?m=this.options.overloadTranslationOptionHandler([u,d].concat(f)):m={...d},m.lng=m.lng||o.lng,m.lngs=m.lngs||o.lngs,m.ns=m.ns||o.ns,m.keyPrefix!==""&&(m.keyPrefix=m.keyPrefix||s||o.keyPrefix);const p=this.options.keySeparator||".";let x;return m.keyPrefix&&Array.isArray(u)?x=u.map(y=>(typeof y=="function"&&(y=Zh(y,{...this.options,...d})),`${m.keyPrefix}${p}${y}`)):(typeof u=="function"&&(u=Zh(u,{...this.options,...d})),x=m.keyPrefix?`${m.keyPrefix}${p}${u}`:u),this.t(x,m)};return Ve(a)?o.lng=a:o.lngs=a,o.ns=r,o.keyPrefix=s,o}t(...a){return this.translator?.translate(...a)}exists(...a){return this.translator?.exists(...a)}setDefaultNamespace(a){this.options.defaultNS=a}hasLoadedNamespace(a,r={}){if(!this.isInitialized)return this.logger.warn("hasLoadedNamespace: i18next was not initialized",this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty",this.languages),!1;const s=r.lng||this.resolvedLanguage||this.languages[0],o=this.options?this.options.fallbackLng:!1,u=this.languages[this.languages.length-1];if(s.toLowerCase()==="cimode")return!0;const d=(f,m)=>{const p=this.services.backendConnector.state[`${f}|${m}`];return p===-1||p===0||p===2};if(r.precheck){const f=r.precheck(this,d);if(f!==void 0)return f}return!!(this.hasResourceBundle(s,a)||!this.services.backendConnector.backend||this.options.resources&&!this.options.partialBundledLanguages||d(s,a)&&(!o||d(u,a)))}loadNamespaces(a,r){const s=Bo();return this.options.ns?(Ve(a)&&(a=[a]),a.forEach(o=>{this.options.ns.indexOf(o)<0&&this.options.ns.push(o)}),this.loadResources(o=>{s.resolve(),r&&r(o)}),s):(r&&r(),Promise.resolve())}loadLanguages(a,r){const s=Bo();Ve(a)&&(a=[a]);const o=this.options.preload||[],u=a.filter(d=>o.indexOf(d)<0&&this.services.languageUtils.isSupportedCode(d));return u.length?(this.options.preload=o.concat(u),this.loadResources(d=>{s.resolve(),r&&r(d)}),s):(r&&r(),Promise.resolve())}dir(a){if(a||(a=this.resolvedLanguage||(this.languages?.length>0?this.languages[0]:this.language)),!a)return"rtl";try{const o=new Intl.Locale(a);if(o&&o.getTextInfo){const u=o.getTextInfo();if(u&&u.direction)return u.direction}}catch{}const r=["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"],s=this.services?.languageUtils||new xx(Nx());return a.toLowerCase().indexOf("-latn")>1?"ltr":r.indexOf(s.getLanguagePartFromCode(a))>-1||a.toLowerCase().indexOf("-arab")>1?"rtl":"ltr"}static createInstance(a={},r){const s=new ni(a,r);return s.createInstance=ni.createInstance,s}cloneInstance(a={},r=$c){const s=a.forkResourceStore;s&&delete a.forkResourceStore;const o={...this.options,...a,isClone:!0},u=new ni(o);if((a.debug!==void 0||a.prefix!==void 0)&&(u.logger=u.logger.clone(a)),["store","services","language"].forEach(f=>{u[f]=this[f]}),u.services={...this.services},u.services.utils={hasLoadedNamespace:u.hasLoadedNamespace.bind(u)},s){const f=Object.keys(this.store.data).reduce((m,p)=>(m[p]={...this.store.data[p]},m[p]=Object.keys(m[p]).reduce((x,y)=>(x[y]={...m[p][y]},x),m[p]),m),{});u.store=new vx(f,o),u.services.resourceStore=u.store}return a.interpolation&&(u.services.interpolator=new _x(o)),u.translator=new fu(u.services,o),u.translator.on("*",(f,...m)=>{u.emit(f,...m)}),u.init(o,r),u.translator.options=o,u.translator.backendConnector.services.utils={hasLoadedNamespace:u.hasLoadedNamespace.bind(u)},u}toJSON(){return{options:this.options,store:this.store,language:this.language,languages:this.languages,resolvedLanguage:this.resolvedLanguage}}}const pn=ni.createInstance();pn.createInstance;pn.dir;pn.init;pn.loadResources;pn.reloadResources;pn.use;pn.changeLanguage;pn.getFixedT;pn.t;pn.exists;pn.setDefaultNamespace;pn.hasLoadedNamespace;pn.loadNamespaces;pn.loadLanguages;var xh={exports:{}},Ge={};var Ex;function nC(){if(Ex)return Ge;Ex=1;var t=Symbol.for("react.transitional.element"),a=Symbol.for("react.portal"),r=Symbol.for("react.fragment"),s=Symbol.for("react.strict_mode"),o=Symbol.for("react.profiler"),u=Symbol.for("react.consumer"),d=Symbol.for("react.context"),f=Symbol.for("react.forward_ref"),m=Symbol.for("react.suspense"),p=Symbol.for("react.memo"),x=Symbol.for("react.lazy"),y=Symbol.for("react.activity"),w=Symbol.iterator;function S(O){return O===null||typeof O!="object"?null:(O=w&&O[w]||O["@@iterator"],typeof O=="function"?O:null)}var N={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},j=Object.assign,R={};function T(O,D,G){this.props=O,this.context=D,this.refs=R,this.updater=G||N}T.prototype.isReactComponent={},T.prototype.setState=function(O,D){if(typeof O!="object"&&typeof O!="function"&&O!=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,O,D,"setState")},T.prototype.forceUpdate=function(O){this.updater.enqueueForceUpdate(this,O,"forceUpdate")};function E(){}E.prototype=T.prototype;function _(O,D,G){this.props=O,this.context=D,this.refs=R,this.updater=G||N}var k=_.prototype=new E;k.constructor=_,j(k,T.prototype),k.isPureReactComponent=!0;var L=Array.isArray;function z(){}var C={H:null,A:null,T:null,S:null},U=Object.prototype.hasOwnProperty;function K(O,D,G){var Q=G.ref;return{$$typeof:t,type:O,key:D,ref:Q!==void 0?Q:null,props:G}}function Z(O,D){return K(O.type,D,O.props)}function re(O){return typeof O=="object"&&O!==null&&O.$$typeof===t}function ie(O){var D={"=":"=0",":":"=2"};return"$"+O.replace(/[=:]/g,function(G){return D[G]})}var le=/\/+/g;function P(O,D){return typeof O=="object"&&O!==null&&O.key!=null?ie(""+O.key):D.toString(36)}function F(O){switch(O.status){case"fulfilled":return O.value;case"rejected":throw O.reason;default:switch(typeof O.status=="string"?O.then(z,z):(O.status="pending",O.then(function(D){O.status==="pending"&&(O.status="fulfilled",O.value=D)},function(D){O.status==="pending"&&(O.status="rejected",O.reason=D)})),O.status){case"fulfilled":return O.value;case"rejected":throw O.reason}}throw O}function M(O,D,G,Q,ae){var ve=typeof O;(ve==="undefined"||ve==="boolean")&&(O=null);var I=!1;if(O===null)I=!0;else switch(ve){case"bigint":case"string":case"number":I=!0;break;case"object":switch(O.$$typeof){case t:case a:I=!0;break;case x:return I=O._init,M(I(O._payload),D,G,Q,ae)}}if(I)return ae=ae(O),I=Q===""?"."+P(O,0):Q,L(ae)?(G="",I!=null&&(G=I.replace(le,"$&/")+"/"),M(ae,D,G,"",function(Ce){return Ce})):ae!=null&&(re(ae)&&(ae=Z(ae,G+(ae.key==null||O&&O.key===ae.key?"":(""+ae.key).replace(le,"$&/")+"/")+I)),D.push(ae)),1;I=0;var xe=Q===""?".":Q+":";if(L(O))for(var be=0;be<O.length;be++)Q=O[be],ve=xe+P(Q,be),I+=M(Q,D,G,ve,ae);else if(be=S(O),typeof be=="function")for(O=be.call(O),be=0;!(Q=O.next()).done;)Q=Q.value,ve=xe+P(Q,be++),I+=M(Q,D,G,ve,ae);else if(ve==="object"){if(typeof O.then=="function")return M(F(O),D,G,Q,ae);throw D=String(O),Error("Objects are not valid as a React child (found: "+(D==="[object Object]"?"object with keys {"+Object.keys(O).join(", ")+"}":D)+"). If you meant to render a collection of children, use an array instead.")}return I}function V(O,D,G){if(O==null)return O;var Q=[],ae=0;return M(O,Q,"","",function(ve){return D.call(G,ve,ae++)}),Q}function H(O){if(O._status===-1){var D=O._result;D=D(),D.then(function(G){(O._status===0||O._status===-1)&&(O._status=1,O._result=G)},function(G){(O._status===0||O._status===-1)&&(O._status=2,O._result=G)}),O._status===-1&&(O._status=0,O._result=D)}if(O._status===1)return O._result.default;throw O._result}var oe=typeof reportError=="function"?reportError:function(O){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var D=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof O=="object"&&O!==null&&typeof O.message=="string"?String(O.message):String(O),error:O});if(!window.dispatchEvent(D))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",O);return}console.error(O)},me={map:V,forEach:function(O,D,G){V(O,function(){D.apply(this,arguments)},G)},count:function(O){var D=0;return V(O,function(){D++}),D},toArray:function(O){return V(O,function(D){return D})||[]},only:function(O){if(!re(O))throw Error("React.Children.only expected to receive a single React element child.");return O}};return Ge.Activity=y,Ge.Children=me,Ge.Component=T,Ge.Fragment=r,Ge.Profiler=o,Ge.PureComponent=_,Ge.StrictMode=s,Ge.Suspense=m,Ge.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=C,Ge.__COMPILER_RUNTIME={__proto__:null,c:function(O){return C.H.useMemoCache(O)}},Ge.cache=function(O){return function(){return O.apply(null,arguments)}},Ge.cacheSignal=function(){return null},Ge.cloneElement=function(O,D,G){if(O==null)throw Error("The argument must be a React element, but you passed "+O+".");var Q=j({},O.props),ae=O.key;if(D!=null)for(ve in D.key!==void 0&&(ae=""+D.key),D)!U.call(D,ve)||ve==="key"||ve==="__self"||ve==="__source"||ve==="ref"&&D.ref===void 0||(Q[ve]=D[ve]);var ve=arguments.length-2;if(ve===1)Q.children=G;else if(1<ve){for(var I=Array(ve),xe=0;xe<ve;xe++)I[xe]=arguments[xe+2];Q.children=I}return K(O.type,ae,Q)},Ge.createContext=function(O){return O={$$typeof:d,_currentValue:O,_currentValue2:O,_threadCount:0,Provider:null,Consumer:null},O.Provider=O,O.Consumer={$$typeof:u,_context:O},O},Ge.createElement=function(O,D,G){var Q,ae={},ve=null;if(D!=null)for(Q in D.key!==void 0&&(ve=""+D.key),D)U.call(D,Q)&&Q!=="key"&&Q!=="__self"&&Q!=="__source"&&(ae[Q]=D[Q]);var I=arguments.length-2;if(I===1)ae.children=G;else if(1<I){for(var xe=Array(I),be=0;be<I;be++)xe[be]=arguments[be+2];ae.children=xe}if(O&&O.defaultProps)for(Q in I=O.defaultProps,I)ae[Q]===void 0&&(ae[Q]=I[Q]);return K(O,ve,ae)},Ge.createRef=function(){return{current:null}},Ge.forwardRef=function(O){return{$$typeof:f,render:O}},Ge.isValidElement=re,Ge.lazy=function(O){return{$$typeof:x,_payload:{_status:-1,_result:O},_init:H}},Ge.memo=function(O,D){return{$$typeof:p,type:O,compare:D===void 0?null:D}},Ge.startTransition=function(O){var D=C.T,G={};C.T=G;try{var Q=O(),ae=C.S;ae!==null&&ae(G,Q),typeof Q=="object"&&Q!==null&&typeof Q.then=="function"&&Q.then(z,oe)}catch(ve){oe(ve)}finally{D!==null&&G.types!==null&&(D.types=G.types),C.T=D}},Ge.unstable_useCacheRefresh=function(){return C.H.useCacheRefresh()},Ge.use=function(O){return C.H.use(O)},Ge.useActionState=function(O,D,G){return C.H.useActionState(O,D,G)},Ge.useCallback=function(O,D){return C.H.useCallback(O,D)},Ge.useContext=function(O){return C.H.useContext(O)},Ge.useDebugValue=function(){},Ge.useDeferredValue=function(O,D){return C.H.useDeferredValue(O,D)},Ge.useEffect=function(O,D){return C.H.useEffect(O,D)},Ge.useEffectEvent=function(O){return C.H.useEffectEvent(O)},Ge.useId=function(){return C.H.useId()},Ge.useImperativeHandle=function(O,D,G){return C.H.useImperativeHandle(O,D,G)},Ge.useInsertionEffect=function(O,D){return C.H.useInsertionEffect(O,D)},Ge.useLayoutEffect=function(O,D){return C.H.useLayoutEffect(O,D)},Ge.useMemo=function(O,D){return C.H.useMemo(O,D)},Ge.useOptimistic=function(O,D){return C.H.useOptimistic(O,D)},Ge.useReducer=function(O,D,G){return C.H.useReducer(O,D,G)},Ge.useRef=function(O){return C.H.useRef(O)},Ge.useState=function(O){return C.H.useState(O)},Ge.useSyncExternalStore=function(O,D,G){return C.H.useSyncExternalStore(O,D,G)},Ge.useTransition=function(){return C.H.useTransition()},Ge.version="19.2.3",Ge}var Rx;function km(){return Rx||(Rx=1,xh.exports=nC()),xh.exports}var v=km();const gt=hb(v),Cu=DN({__proto__:null,default:gt},[v]),aC=(t,a,r,s)=>{const o=[r,{code:a,...s||{}}];if(t?.services?.logger?.forward)return t.services.logger.forward(o,"warn","react-i18next::",!0);Cl(o[0])&&(o[0]=`react-i18next:: ${o[0]}`),t?.services?.logger?.warn?t.services.logger.warn(...o):console?.warn&&console.warn(...o)},Tx={},Jh=(t,a,r,s)=>{Cl(r)&&Tx[r]||(Cl(r)&&(Tx[r]=new Date),aC(t,a,r,s))},vb=(t,a)=>()=>{if(t.isInitialized)a();else{const r=()=>{setTimeout(()=>{t.off("initialized",r)},0),a()};t.on("initialized",r)}},Wh=(t,a,r)=>{t.loadNamespaces(a,vb(t,r))},Ox=(t,a,r,s)=>{if(Cl(r)&&(r=[r]),t.options.preload&&t.options.preload.indexOf(a)>-1)return Wh(t,r,s);r.forEach(o=>{t.options.ns.indexOf(o)<0&&t.options.ns.push(o)}),t.loadLanguages(a,vb(t,s))},rC=(t,a,r={})=>!a.languages||!a.languages.length?(Jh(a,"NO_LANGUAGES","i18n.languages were undefined or empty",{languages:a.languages}),!0):a.hasLoadedNamespace(t,{lng:r.lng,precheck:(s,o)=>{if(r.bindI18n&&r.bindI18n.indexOf("languageChanging")>-1&&s.services.backendConnector.backend&&s.isLanguageChangingTo&&!o(s.isLanguageChangingTo,t))return!1}}),Cl=t=>typeof t=="string",lC=t=>typeof t=="object"&&t!==null,sC=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,oC={"&":"&","&":"&","<":"<","<":"<",">":">",">":">","'":"'","'":"'",""":'"',""":'"'," ":" "," ":" ","©":"©","©":"©","®":"®","®":"®","…":"…","…":"…","/":"/","/":"/"},iC=t=>oC[t],cC=t=>t.replace(sC,iC);let em={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transWrapTextNodes:"",transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0,unescape:cC};const uC=(t={})=>{em={...em,...t}},dC=()=>em;let yb;const fC=t=>{yb=t},hC=()=>yb,mC={type:"3rdParty",init(t){uC(t.options.react),fC(t)}},pC=v.createContext();class gC{constructor(){this.usedNamespaces={}}addUsedNamespaces(a){a.forEach(r=>{this.usedNamespaces[r]||(this.usedNamespaces[r]=!0)})}getUsedNamespaces(){return Object.keys(this.usedNamespaces)}}const vC=(t,a)=>{const r=v.useRef();return v.useEffect(()=>{r.current=t},[t,a]),r.current},xb=(t,a,r,s)=>t.getFixedT(a,r,s),yC=(t,a,r,s)=>v.useCallback(xb(t,a,r,s),[t,a,r,s]),hn=(t,a={})=>{const{i18n:r}=a,{i18n:s,defaultNS:o}=v.useContext(pC)||{},u=r||s||hC();if(u&&!u.reportNamespaces&&(u.reportNamespaces=new gC),!u){Jh(u,"NO_I18NEXT_INSTANCE","useTranslation: You will need to pass in an i18next instance by using initReactI18next");const k=(z,C)=>Cl(C)?C:lC(C)&&Cl(C.defaultValue)?C.defaultValue:Array.isArray(z)?z[z.length-1]:z,L=[k,{},!1];return L.t=k,L.i18n={},L.ready=!1,L}u.options.react?.wait&&Jh(u,"DEPRECATED_OPTION","useTranslation: It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.");const d={...dC(),...u.options.react,...a},{useSuspense:f,keyPrefix:m}=d;let p=o||u.options?.defaultNS;p=Cl(p)?[p]:p||["translation"],u.reportNamespaces.addUsedNamespaces?.(p);const x=(u.isInitialized||u.initializedStoreOnce)&&p.every(k=>rC(k,u,d)),y=yC(u,a.lng||null,d.nsMode==="fallback"?p:p[0],m),w=()=>y,S=()=>xb(u,a.lng||null,d.nsMode==="fallback"?p:p[0],m),[N,j]=v.useState(w);let R=p.join();a.lng&&(R=`${a.lng}${R}`);const T=vC(R),E=v.useRef(!0);v.useEffect(()=>{const{bindI18n:k,bindI18nStore:L}=d;E.current=!0,!x&&!f&&(a.lng?Ox(u,a.lng,p,()=>{E.current&&j(S)}):Wh(u,p,()=>{E.current&&j(S)})),x&&T&&T!==R&&E.current&&j(S);const z=()=>{E.current&&j(S)};return k&&u?.on(k,z),L&&u?.store.on(L,z),()=>{E.current=!1,u&&k&&k?.split(" ").forEach(C=>u.off(C,z)),L&&u&&L.split(" ").forEach(C=>u.store.off(C,z))}},[u,R]),v.useEffect(()=>{E.current&&x&&j(w)},[u,m,x]);const _=[N,u,x];if(_.t=N,_.i18n=u,_.ready=x,x||!x&&!f)return _;throw new Promise(k=>{a.lng?Ox(u,a.lng,p,()=>k()):Wh(u,p,()=>k())})},{slice:xC,forEach:bC}=[];function wC(t){return bC.call(xC.call(arguments,1),a=>{if(a)for(const r in a)t[r]===void 0&&(t[r]=a[r])}),t}function SC(t){return typeof t!="string"?!1:[/<\s*script.*?>/i,/<\s*\/\s*script\s*>/i,/<\s*img.*?on\w+\s*=/i,/<\s*\w+\s*on\w+\s*=.*?>/i,/javascript\s*:/i,/vbscript\s*:/i,/expression\s*\(/i,/eval\s*\(/i,/alert\s*\(/i,/document\.cookie/i,/document\.write\s*\(/i,/window\.location/i,/innerHTML/i].some(r=>r.test(t))}const Ax=/^[\u0009\u0020-\u007e\u0080-\u00ff]+$/,_C=function(t,a){const s=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{path:"/"},o=encodeURIComponent(a);let u=`${t}=${o}`;if(s.maxAge>0){const d=s.maxAge-0;if(Number.isNaN(d))throw new Error("maxAge should be a Number");u+=`; Max-Age=${Math.floor(d)}`}if(s.domain){if(!Ax.test(s.domain))throw new TypeError("option domain is invalid");u+=`; Domain=${s.domain}`}if(s.path){if(!Ax.test(s.path))throw new TypeError("option path is invalid");u+=`; Path=${s.path}`}if(s.expires){if(typeof s.expires.toUTCString!="function")throw new TypeError("option expires is invalid");u+=`; Expires=${s.expires.toUTCString()}`}if(s.httpOnly&&(u+="; HttpOnly"),s.secure&&(u+="; Secure"),s.sameSite)switch(typeof s.sameSite=="string"?s.sameSite.toLowerCase():s.sameSite){case!0:u+="; SameSite=Strict";break;case"lax":u+="; SameSite=Lax";break;case"strict":u+="; SameSite=Strict";break;case"none":u+="; SameSite=None";break;default:throw new TypeError("option sameSite is invalid")}return s.partitioned&&(u+="; Partitioned"),u},kx={create(t,a,r,s){let o=arguments.length>4&&arguments[4]!==void 0?arguments[4]:{path:"/",sameSite:"strict"};r&&(o.expires=new Date,o.expires.setTime(o.expires.getTime()+r*60*1e3)),s&&(o.domain=s),document.cookie=_C(t,a,o)},read(t){const a=`${t}=`,r=document.cookie.split(";");for(let s=0;s<r.length;s++){let o=r[s];for(;o.charAt(0)===" ";)o=o.substring(1,o.length);if(o.indexOf(a)===0)return o.substring(a.length,o.length)}return null},remove(t,a){this.create(t,"",-1,a)}};var jC={name:"cookie",lookup(t){let{lookupCookie:a}=t;if(a&&typeof document<"u")return kx.read(a)||void 0},cacheUserLanguage(t,a){let{lookupCookie:r,cookieMinutes:s,cookieDomain:o,cookieOptions:u}=a;r&&typeof document<"u"&&kx.create(r,t,s,o,u)}},NC={name:"querystring",lookup(t){let{lookupQuerystring:a}=t,r;if(typeof window<"u"){let{search:s}=window.location;!window.location.search&&window.location.hash?.indexOf("?")>-1&&(s=window.location.hash.substring(window.location.hash.indexOf("?")));const u=s.substring(1).split("&");for(let d=0;d<u.length;d++){const f=u[d].indexOf("=");f>0&&u[d].substring(0,f)===a&&(r=u[d].substring(f+1))}}return r}},CC={name:"hash",lookup(t){let{lookupHash:a,lookupFromHashIndex:r}=t,s;if(typeof window<"u"){const{hash:o}=window.location;if(o&&o.length>2){const u=o.substring(1);if(a){const d=u.split("&");for(let f=0;f<d.length;f++){const m=d[f].indexOf("=");m>0&&d[f].substring(0,m)===a&&(s=d[f].substring(m+1))}}if(s)return s;if(!s&&r>-1){const d=o.match(/\/([a-zA-Z-]*)/g);return Array.isArray(d)?d[typeof r=="number"?r:0]?.replace("/",""):void 0}}}return s}};let ps=null;const Mx=()=>{if(ps!==null)return ps;try{if(ps=typeof window<"u"&&window.localStorage!==null,!ps)return!1;const t="i18next.translate.boo";window.localStorage.setItem(t,"foo"),window.localStorage.removeItem(t)}catch{ps=!1}return ps};var EC={name:"localStorage",lookup(t){let{lookupLocalStorage:a}=t;if(a&&Mx())return window.localStorage.getItem(a)||void 0},cacheUserLanguage(t,a){let{lookupLocalStorage:r}=a;r&&Mx()&&window.localStorage.setItem(r,t)}};let gs=null;const Dx=()=>{if(gs!==null)return gs;try{if(gs=typeof window<"u"&&window.sessionStorage!==null,!gs)return!1;const t="i18next.translate.boo";window.sessionStorage.setItem(t,"foo"),window.sessionStorage.removeItem(t)}catch{gs=!1}return gs};var RC={name:"sessionStorage",lookup(t){let{lookupSessionStorage:a}=t;if(a&&Dx())return window.sessionStorage.getItem(a)||void 0},cacheUserLanguage(t,a){let{lookupSessionStorage:r}=a;r&&Dx()&&window.sessionStorage.setItem(r,t)}},TC={name:"navigator",lookup(t){const a=[];if(typeof navigator<"u"){const{languages:r,userLanguage:s,language:o}=navigator;if(r)for(let u=0;u<r.length;u++)a.push(r[u]);s&&a.push(s),o&&a.push(o)}return a.length>0?a:void 0}},OC={name:"htmlTag",lookup(t){let{htmlTag:a}=t,r;const s=a||(typeof document<"u"?document.documentElement:null);return s&&typeof s.getAttribute=="function"&&(r=s.getAttribute("lang")),r}},AC={name:"path",lookup(t){let{lookupFromPathIndex:a}=t;if(typeof window>"u")return;const r=window.location.pathname.match(/\/([a-zA-Z-]*)/g);return Array.isArray(r)?r[typeof a=="number"?a:0]?.replace("/",""):void 0}},kC={name:"subdomain",lookup(t){let{lookupFromSubdomainIndex:a}=t;const r=typeof a=="number"?a+1:1,s=typeof window<"u"&&window.location?.hostname?.match(/^(\w{2,5})\.(([a-z0-9-]{1,63}\.[a-z]{2,6})|localhost)/i);if(s)return s[r]}};let bb=!1;try{document.cookie,bb=!0}catch{}const wb=["querystring","cookie","localStorage","sessionStorage","navigator","htmlTag"];bb||wb.splice(1,1);const MC=()=>({order:wb,lookupQuerystring:"lng",lookupCookie:"i18next",lookupLocalStorage:"i18nextLng",lookupSessionStorage:"i18nextLng",caches:["localStorage"],excludeCacheFor:["cimode"],convertDetectedLanguage:t=>t});class Sb{constructor(a){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.type="languageDetector",this.detectors={},this.init(a,r)}init(){let a=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{languageUtils:{}},r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},s=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};this.services=a,this.options=wC(r,this.options||{},MC()),typeof this.options.convertDetectedLanguage=="string"&&this.options.convertDetectedLanguage.indexOf("15897")>-1&&(this.options.convertDetectedLanguage=o=>o.replace("-","_")),this.options.lookupFromUrlIndex&&(this.options.lookupFromPathIndex=this.options.lookupFromUrlIndex),this.i18nOptions=s,this.addDetector(jC),this.addDetector(NC),this.addDetector(EC),this.addDetector(RC),this.addDetector(TC),this.addDetector(OC),this.addDetector(AC),this.addDetector(kC),this.addDetector(CC)}addDetector(a){return this.detectors[a.name]=a,this}detect(){let a=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.options.order,r=[];return a.forEach(s=>{if(this.detectors[s]){let o=this.detectors[s].lookup(this.options);o&&typeof o=="string"&&(o=[o]),o&&(r=r.concat(o))}}),r=r.filter(s=>s!=null&&!SC(s)).map(s=>this.options.convertDetectedLanguage(s)),this.services&&this.services.languageUtils&&this.services.languageUtils.getBestMatchFromCodes?r:r.length>0?r[0]:null}cacheUserLanguage(a){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.options.caches;r&&(this.options.excludeCacheFor&&this.options.excludeCacheFor.indexOf(a)>-1||r.forEach(s=>{this.detectors[s]&&this.detectors[s].cacheUserLanguage(a,this.options)}))}}Sb.type="languageDetector";const DC={yes:"Yes",no:"No"},LC={title:"Claude Code Router",save:"Save",save_and_restart:"Save and Restart",cancel:"Cancel",edit:"Edit",remove:"Remove",delete:"Delete",settings:"Settings",selectFile:"Select File",config_saved_success:"Config saved successfully",config_saved_failed:"Failed to save config",config_saved_restart_success:"Config saved and service restarted successfully",config_saved_restart_failed:"Failed to save config and restart service",new_version_available:"New Version Available",update_description:"A new version is available. Please review the changelog and update to get the latest features and improvements.",no_changelog_available:"No changelog available",later:"Later",update_now:"Update Now",no_updates_available:"No updates available",update_check_failed:"Failed to check for updates",update_successful:"Update successful",update_failed:"Update failed",json_editor:"JSON Editor",log_viewer:"Log Viewer",presets:"Presets",advanced_router:"Advanced Router",language:"Language",check_updates:"Check for Updates",usage:"Usage Statistics"},zC={title:"Advanced Router",subtitle:"Configure advanced routing rules without cluttering the dashboard.",back:"Back",model_mappings:"Model Mappings",model_mappings_help:"Map Claude Code model selections such as opus, sonnet, or haiku to actual provider,model targets.",empty:"No model mappings configured yet. Add one to override how selected model families are routed.",source_model:"Source Model Key",target_model:"Target Model",source_placeholder:"e.g. opus, sonnet, haiku, claude-opus",add_mapping:"Add Mapping"},PC={title:"Sign in to your account",description:"Enter your API key to access the configuration panel",apiKey:"API Key",apiKeyPlaceholder:"Enter your API key",signIn:"Sign In",invalidApiKey:"Invalid API key",configError:"Configuration not loaded",validating:"Validating API key..."},UC={title:"General Settings",log:"Enable Logging",log_level:"Log Level",claude_path:"Claude Path",host:"Host",port:"Port",apikey:"API Key",timeout:"API Timeout (ms)",proxy_url:"Proxy URL",custom_router_path:"Custom Router Script Path",custom_router_path_placeholder:"Enter absolute path to custom router script file"},HC={title:"Custom Transformers",path:"Path",project:"Project",remove:"Remove",add:"Add Custom Transformer",edit:"Edit Custom Transformer",delete:"Delete Custom Transformer",delete_transformer_confirm:"Are you sure you want to delete this custom transformer?",parameters:"Parameters"},BC={title:"Providers",name:"Name",api_base_url:"API Full URL",api_key:"API Key",models:"Models",models_placeholder:"Enter model name and press Enter to add",add_model:"Add Model",select_models:"Select Models",remove:"Remove",add:"Add Provider",edit:"Edit Provider",delete:"Delete",cancel:"Cancel",delete_provider_confirm:"Are you sure you want to delete this provider?",test_connectivity:"Test Connectivity",testing:"Testing...",connection_successful:"Connection successful!",connection_failed:"Connection failed!",missing_credentials:"Missing API base URL or API key",fetch_available_models:"Fetch available models",fetching_models:"Fetching models...",fetch_models_failed:"Failed to fetch models",transformers:"Transformers",select_transformer:"Select Transformer",no_transformers:"No transformers available",provider_transformer:"Provider Transformer",model_transformers:"Model Transformers",transformer_parameters:"Transformer Parameters",add_parameter:"Add Parameter",parameter_name:"Parameter Name",parameter_value:"Parameter Value",selected_transformers:"Selected Transformers",import_from_template:"Import from template",no_templates_found:"No templates found",select_template:"Select a template...",api_key_required:"API Key is required",name_required:"Name is required",name_duplicate:"A provider with this name already exists",search:"Search providers...",quota_5h:"5-hour",quota_7d:"7-day",quota_balance:"Balance",quota_reset:"Reset: {{time}}",quota_token:"Quota Query Token",quota_token_placeholder:"Optional, enables automatic 5h/7d quota querying",quota_token_desc:"Some providers require a separate token/cookie to query quotas.",quota_token_tooltip:"Aliyun Coding Plan: Login to bailian.console.aliyun.com, copy the full Cookie header value from Network tab."},$C={title:"Router",default:"Default",background:"Background",think:"Think",longContext:"Long Context",longContextThreshold:"Context Threshold",extendedContext:"Extended Context (1M)",extendedContextThreshold:"Extended Threshold",enableExtendedContext:"Enable Extended Context (1M)",enableExtendedContextDesc:"Append [1m] to Claude Code model name for 1M context window support",webSearch:"Web Search",image:"Image",threshold:"Threshold",forceAgent:"Force Agent",forceUseImageAgent:"Force Use Image Agent",selectModel:"Select a model...",searchModel:"Search model...",noModelFound:"No model found.",family_routing:"Model Family Routing",family_routing_desc:"Route opus/sonnet/haiku model families to different providers and models",enabled:"Enabled",disabled:"Disabled",add_family:"Add Family",family_name:"Family Name",family_name_placeholder:"e.g. opus, sonnet, haiku",remove_family:"Remove Family",family_fallback_title:"Family Fallback"},FC={tabs:{general:"General",router:"Advanced Router",tools:"Tools",usage:"Usage"},language:"Language",token_speed:"Token Speed & TTFT Tracking",fallback_title:"Fallback Configuration",fallback_description:"When the primary model fails, try these fallback models in order.",tools:{json_editor:"JSON Editor",json_editor_desc:"Edit raw configuration JSON",log_viewer:"Log Viewer",log_viewer_desc:"View server request logs",usage_stats:"Usage Statistics",usage_stats_desc:"View request usage and performance metrics",check_updates:"Check for Updates",check_updates_desc:"Check and install new versions",presets:"Presets",presets_desc:"Manage configuration presets"}},IC={title:"JSON Editor",save:"Save",saving:"Saving...",cancel:"Cancel",save_failed:"Failed to save config",save_and_restart:"Save & Restart"},qC={title:"Status Line Configuration",enable:"Enable Status Line",theme:"Theme Style",theme_default:"Default",theme_powerline:"Powerline",modules:"Modules",module_type:"Type",module_icon:"Icon",module_text:"Text",module_color:"Color",module_background:"Background",module_text_description:"Enter display text, variables can be used:",module_color_description:"Select text color",module_background_description:"Select background color (optional)",module_script_path:"Script Path",module_script_path_description:"Enter the absolute path of the Node.js script file",add_module:"Add Module",remove_module:"Remove Module",delete_module:"Delete Module",preview:"Preview",components:"Components",properties:"Properties",workDir:"Working Directory",gitBranch:"Git Branch",model:"Model",usage:"Usage",speed:"Speed",contextCircle:"Context Usage",totalTokens:"Total Tokens",script:"Script",background_none:"None",color_black:"Black",color_red:"Red",color_green:"Green",color_yellow:"Yellow",color_blue:"Blue",color_magenta:"Magenta",color_cyan:"Cyan",color_white:"White",color_bright_black:"Bright Black",color_bright_red:"Bright Red",color_bright_green:"Bright Green",color_bright_yellow:"Bright Yellow",color_bright_blue:"Bright Blue",color_bright_magenta:"Bright Magenta",color_bright_cyan:"Bright Cyan",color_bright_white:"Bright White",font_placeholder:"Select Font",theme_placeholder:"Select Theme Style",icon_placeholder:"Paste icon or search by name...",icon_description:"Enter icon character, paste icon, or search icons (optional)",text_placeholder:"e.g.: {{workDirName}}",script_placeholder:"e.g.: /path/to/your/script.js",drag_hint:"Drag components here to configure",select_hint:"Select a component to configure",no_icons_found:"No icons found",no_icons_available:"No icons available",import_export:"Import/Export",import:"Import Config",export:"Export Config",download_template:"Download Template",import_export_help:"Export current configuration as a JSON file, or import configuration from a JSON file. You can also download a configuration template for reference.",export_success:"Configuration exported successfully",export_failed:"Failed to export configuration",import_success:"Configuration imported successfully",import_failed:"Failed to import configuration",invalid_config:"Invalid configuration file",template_download_success:"Template downloaded successfully",template_download_success_desc:"Configuration template has been downloaded to your device",template_download_failed:"Failed to download template"},VC={placeholder:"Select color...",title:"Color Picker",clear:"Clear",no_color_selected:"No color selected",custom_color:"Custom Color",apply:"Apply",hex_input_help:"Enter hex color value (e.g.: #FF0000)"},GC={title:"Log Viewer",close:"Close",download:"Download",clear:"Clear",auto_refresh_on:"Auto Refresh On",auto_refresh_off:"Auto Refresh Off",load_failed:"Failed to load logs",no_logs_available:"No logs available",logs_cleared:"Logs cleared successfully",clear_failed:"Failed to clear logs",logs_downloaded:"Logs downloaded successfully",back_to_files:"Back to Files",select_file:"Select a log file to view",no_log_files_available:"No log files available",load_files_failed:"Failed to load log files",group_by_req_id:"Group by Request ID",grouped_on:"Grouped",request_groups:"Request Groups",total_requests:"Total Requests",total_logs:"Total Logs",request:"Request",logs:"logs",first_log:"First Log",last_log:"Last Log",back_to_all_logs:"Back to All Logs",worker_error:"Worker error",worker_init_failed:"Failed to initialize worker",grouping_not_supported:"Log grouping not supported by server",back:"Back",col_time:"Time",col_level:"Level",col_request_id:"Request ID",col_message:"Message",col_model:"Model",detail_title:"Log Detail"},KC={title:"Presets",market_title:"Preset Market",market_description:"Browse and install presets from the community marketplace",no_presets:"No presets installed",no_presets_hint:"Install a preset to get started",search_placeholder:"Search presets by name, description, author, or keywords...",no_presets_found:"No presets found",no_presets_found_hint:"Try adjusting your search terms",loading:"Loading...",by:"by {{author}}",downloads:"{{count}} downloads",github_repository:"GitHub Repository",view_details:"View Details",install:"Install",installing:"Installing...",installed_label:"Installed",apply:"Apply Preset",applying:"Applying...",close:"Close",delete:"Delete",install_dialog_title:"Install Preset",install_dialog_description:"Install a preset from a GitHub repository",from_url:"From GitHub",preset_url:"Repository URL",preset_url_placeholder:"https://github.com/owner/repo",preset_name:"Preset Name (Optional)",preset_name_placeholder:"Auto-generated from repository",github_url_hint:"Enter GitHub repository URL (e.g., https://github.com/owner/repo)",detail_dialog_title:"Preset Details",required_information:"Required Information",delete_dialog_title:"Delete Preset",delete_dialog_description:'Are you sure you want to delete preset "{{name}}"? This action cannot be undone.',preset_installed:"Preset installed successfully",preset_install_failed:"Failed to install preset: {{error}}",preset_already_installed:"Preset already installed. Please delete it first if you want to reinstall.",preset_applied:"Preset applied successfully",preset_apply_failed:"Failed to apply preset: {{error}}",preset_deleted:"Preset deleted successfully",preset_delete_failed:"Failed to delete preset: {{error}}",load_presets_failed:"Failed to load presets",load_preset_details_failed:"Failed to load preset details",please_fill_field:"Please fill in {{field}}",load_market_failed:"Failed to load market presets",preset_installed_config_required:"Preset installed, please complete configuration",please_provide_file:"Please provide a preset directory",please_provide_url:"Please provide a valid GitHub repository URL",form:{field_required:"{{field}} is required",must_be_number:"{{field}} must be a number",must_be_at_least:"{{field}} must be at least {{min}}",must_be_at_most:"{{field}} must be at most {{max}}",format_invalid:"{{field}} format is invalid",select:"Select {{label}}",applying:"Applying...",apply:"Apply",cancel:"Cancel"}},YC={title:"Usage Statistics",total_requests:"Total Requests",total_input_tokens:"Input Tokens",total_output_tokens:"Output Tokens",total_tokens:"Total Tokens",cache_read:"Cache Hit",cache_creation:"Cache Create",avg_ttft:"Avg TTFT",avg_speed:"Avg Speed",success_rate:"Success Rate",daily_chart:"Daily Usage",provider_chart:"Provider Usage",model_chart:"Model Usage",records_tab:"Records",requests:"Requests",start_date:"Start Date",end_date:"End Date",provider:"Provider",model:"Model",scenario:"Scenario",route:"Route",all:"All",time:"Time",input_tokens:"Input",output_tokens:"Output",ttft:"TTFT",speed:"Speed",duration:"Duration",status:"Status",success:"Success",error:"Error",page:"Page",records:"records",no_data:"No usage data available",clear_confirm:"Are you sure you want to clear all usage data?"},XC={common:DC,app:LC,advanced_router:zC,login:PC,toplevel:UC,transformers:HC,providers:BC,router:$C,settings:FC,json_editor:IC,statusline:qC,color_picker:VC,log_viewer:GC,presets:KC,usage:YC},QC={yes:"是",no:"否"},ZC={title:"Claude Code Router",save:"保存",save_and_restart:"保存并重启",cancel:"取消",edit:"编辑",remove:"移除",delete:"删除",settings:"设置",selectFile:"选择文件",config_saved_success:"配置保存成功",config_saved_failed:"配置保存失败",config_saved_restart_success:"配置保存并服务重启成功",config_saved_restart_failed:"配置保存并服务重启失败",new_version_available:"有新版本可用",update_description:"发现新版本。请查看更新日志并更新以获取最新功能和改进。",no_changelog_available:"暂无更新日志",later:"稍后再说",update_now:"立即更新",no_updates_available:"当前已是最新版本",update_check_failed:"检查更新失败",update_successful:"更新成功",update_failed:"更新失败",json_editor:"JSON 编辑器",log_viewer:"日志查看器",presets:"预设",advanced_router:"高级路由",language:"语言",check_updates:"检查更新",usage:"用量统计"},JC={title:"高级路由",subtitle:"把进阶路由能力放在独立页面中,不打扰主面板的基础配置。",back:"返回",model_mappings:"模型映射",model_mappings_help:"把 Claude Code 选择的模型族,例如 opus、sonnet、haiku,映射到实际的 provider,model。",empty:"当前还没有配置模型映射。添加后即可覆盖模型选择到实际后端模型的路由方式。",source_model:"源模型键",target_model:"目标模型",source_placeholder:"例如:opus、sonnet、haiku、claude-opus",add_mapping:"添加映射"},WC={title:"登录到您的账户",description:"请输入您的API密钥以访问配置面板",apiKey:"API密钥",apiKeyPlaceholder:"请输入您的API密钥",signIn:"登录",invalidApiKey:"API密钥无效",configError:"配置未加载",validating:"正在验证API密钥..."},e2={title:"通用设置",log:"启用日志",log_level:"日志级别",claude_path:"Claude 路径",host:"主机",port:"端口",apikey:"API 密钥",timeout:"API 超时时间 (毫秒)",proxy_url:"代理地址",custom_router_path:"自定义路由脚本路径",custom_router_path_placeholder:"输入自定义路由脚本文件的绝对路径"},t2={title:"自定义转换器",path:"路径",project:"项目",remove:"移除",add:"添加自定义转换器",edit:"编辑自定义转换器",delete:"删除自定义转换器",delete_transformer_confirm:"您确定要删除此自定义转换器吗?",parameters:"参数"},n2={title:"供应商",name:"名称",api_base_url:"API 完整地址",api_key:"API 密钥",models:"模型",models_placeholder:"输入模型名称并按回车键添加",add_model:"添加模型",select_models:"选择模型",remove:"移除",add:"添加供应商",edit:"编辑供应商",delete:"删除",cancel:"取消",delete_provider_confirm:"您确定要删除此供应商吗?",test_connectivity:"测试连通性",testing:"测试中...",connection_successful:"连接成功!",connection_failed:"连接失败!",missing_credentials:"缺少 API 基础地址或 API 密钥",fetch_available_models:"获取可用模型",fetching_models:"获取模型中...",fetch_models_failed:"获取模型失败",transformers:"转换器",select_transformer:"选择转换器",no_transformers:"无可用转换器",provider_transformer:"供应商转换器",model_transformers:"模型转换器",transformer_parameters:"转换器参数",add_parameter:"添加参数",parameter_name:"参数名称",parameter_value:"参数值",selected_transformers:"已选转换器",import_from_template:"从模板导入",no_templates_found:"未找到模板",select_template:"选择一个模板...",api_key_required:"API 密钥为必填项",name_required:"名称为必填项",name_duplicate:"已存在同名供应商",search:"搜索供应商...",quota_5h:"5小时",quota_7d:"7天",quota_balance:"余额",quota_reset:"重置:{{time}}",quota_token:"限额查询 Token",quota_token_placeholder:"可选,填入后可自动查询5小时/7天限额",quota_token_desc:"部分供应商需要额外的 Token/Cookie 来查询限额。",quota_token_tooltip:"阿里云 Coding Plan:登录 bailian.console.aliyun.com,在 Network 复制 Cookie 请求头的完整 Cookie 值。"},a2={title:"路由",default:"默认",background:"后台",think:"思考",longContext:"长上下文",longContextThreshold:"上下文阈值",extendedContext:"扩展上下文 (1M)",extendedContextThreshold:"扩展阈值",enableExtendedContext:"启用扩展上下文 (1M)",enableExtendedContextDesc:"在 Claude Code 模型名后添加 [1m] 以支持 1M 上下文窗口",webSearch:"网络搜索",image:"图像",threshold:"触发阈值",forceAgent:"强制代理",forceUseImageAgent:"强制使用图像代理",selectModel:"选择一个模型...",searchModel:"搜索模型...",noModelFound:"未找到模型.",family_routing:"模型族路由",family_routing_desc:"将 opus/sonnet/haiku 模型族路由到不同的供应商和模型",enabled:"已启用",disabled:"已关闭",add_family:"添加模型族",family_name:"模型族名称",family_name_placeholder:"例如: opus, sonnet, haiku",remove_family:"移除模型族",family_fallback_title:"模型族备用配置"},r2={tabs:{general:"通用",router:"路由高级配置",tools:"工具",usage:"用量统计"},language:"语言",token_speed:"Token 速度与 TTFT 追踪",fallback_title:"备用配置",fallback_description:"当主模型请求失败时,按顺序尝试以下备用模型。",tools:{json_editor:"JSON 编辑器",json_editor_desc:"编辑原始配置 JSON",log_viewer:"日志查看器",log_viewer_desc:"查看服务请求日志",usage_stats:"用量统计",usage_stats_desc:"查看请求用量和性能指标",check_updates:"检查更新",check_updates_desc:"检查并安装新版本",presets:"预设管理",presets_desc:"管理配置预设"}},l2={title:"JSON 编辑器",save:"保存",saving:"保存中...",cancel:"取消",save_failed:"配置保存失败",save_and_restart:"保存并重启"},s2={title:"状态栏配置",enable:"启用状态栏",theme:"主题样式",theme_default:"默认",theme_powerline:"Powerline",modules:"模块",module_type:"类型",module_icon:"图标",module_text:"文本",module_color:"颜色",module_background:"背景",module_text_description:"输入显示文本,可使用变量:",module_color_description:"选择文字颜色",module_background_description:"选择背景颜色(可选)",module_script_path:"脚本路径",module_script_path_description:"输入Node.js脚本文件的绝对路径",add_module:"添加模块",remove_module:"移除模块",delete_module:"删除组件",preview:"预览",components:"组件",properties:"属性",workDir:"工作目录",gitBranch:"Git分支",model:"模型",usage:"使用情况",speed:"速度",contextCircle:"上下文用量",totalTokens:"总Token",script:"脚本",background_none:"无",color_black:"黑色",color_red:"红色",color_green:"绿色",color_yellow:"黄色",color_blue:"蓝色",color_magenta:"品红",color_cyan:"青色",color_white:"白色",color_bright_black:"亮黑色",color_bright_red:"亮红色",color_bright_green:"亮绿色",color_bright_yellow:"亮黄色",color_bright_blue:"亮蓝色",color_bright_magenta:"亮品红",color_bright_cyan:"亮青色",color_bright_white:"亮白色",font_placeholder:"选择字体",theme_placeholder:"选择主题样式",icon_placeholder:"粘贴图标或输入名称搜索...",icon_description:"输入图标字符、粘贴图标或搜索图标(可选)",text_placeholder:"例如: {{workDirName}}",script_placeholder:"例如: /path/to/your/script.js",drag_hint:"拖拽组件到此处进行配置",select_hint:"选择一个组件进行配置",no_icons_found:"未找到图标",no_icons_available:"暂无可用图标",import_export:"导入/导出",import:"导入配置",export:"导出配置",download_template:"下载模板",import_export_help:"导出当前配置为JSON文件,或从JSON文件导入配置。您也可以下载配置模板作为参考。",export_success:"配置导出成功",export_failed:"配置导出失败",import_success:"配置导入成功",import_failed:"配置导入失败",invalid_config:"无效的配置文件",template_download_success:"模板下载成功",template_download_success_desc:"配置模板已下载到您的设备",template_download_failed:"模板下载失败"},o2={placeholder:"选择颜色...",title:"颜色选择器",clear:"清除",no_color_selected:"未选择颜色",custom_color:"自定义颜色",apply:"应用",hex_input_help:"输入十六进制颜色值 (例如: #FF0000)"},i2={title:"日志查看器",close:"关闭",download:"下载",clear:"清除",auto_refresh_on:"自动刷新开启",auto_refresh_off:"自动刷新关闭",load_failed:"加载日志失败",no_logs_available:"暂无日志",logs_cleared:"日志清除成功",clear_failed:"清除日志失败",logs_downloaded:"日志下载成功",back_to_files:"返回文件列表",select_file:"选择要查看的日志文件",no_log_files_available:"暂无日志文件",load_files_failed:"加载日志文件失败",group_by_req_id:"按请求ID分组",grouped_on:"已分组",request_groups:"请求组",total_requests:"总请求数",total_logs:"总日志数",request:"请求",logs:"条日志",first_log:"首条日志",last_log:"末条日志",back_to_all_logs:"返回所有日志",worker_error:"Worker错误",worker_init_failed:"Worker初始化失败",grouping_not_supported:"服务器不支持日志分组",back:"返回",col_time:"时间",col_level:"级别",col_request_id:"请求ID",col_message:"消息",col_model:"模型",detail_title:"日志详情"},c2={title:"预设",market_title:"预设市场",market_description:"浏览并从社区市场安装预设",no_presets:"暂无已安装的预设",no_presets_hint:"安装一个预设以开始使用",search_placeholder:"按名称、描述、作者或关键词搜索预设...",no_presets_found:"未找到预设",no_presets_found_hint:"请尝试调整搜索条件",loading:"加载中...",by:"{{author}} 创作",downloads:"{{count}} 次下载",github_repository:"GitHub 仓库",view_details:"查看详情",install:"安装",installing:"安装中...",installed_label:"已安装",apply:"应用预设",applying:"应用中...",close:"关闭",delete:"删除",install_dialog_title:"安装预设",install_dialog_description:"从 GitHub 仓库安装预设",from_url:"从 GitHub",preset_url:"仓库 URL",preset_url_placeholder:"https://github.com/owner/repo",preset_name:"预设名称 (可选)",preset_name_placeholder:"从仓库自动生成",github_url_hint:"输入 GitHub 仓库 URL(例如:https://github.com/owner/repo)",detail_dialog_title:"预设详情",required_information:"必需信息",delete_dialog_title:"删除预设",delete_dialog_description:'您确定要删除预设 "{{name}}" 吗?此操作无法撤销。',preset_installed:"预设安装成功",preset_install_failed:"预设安装失败:{{error}}",preset_already_installed:"预设已经安装。如需重新安装,请先删除现有预设。",preset_applied:"预设应用成功",preset_apply_failed:"预设应用失败:{{error}}",preset_deleted:"预设删除成功",preset_delete_failed:"预设删除失败:{{error}}",load_presets_failed:"加载预设失败",load_preset_details_failed:"加载预设详情失败",please_fill_field:"请填写 {{field}}",load_market_failed:"加载市场预设失败",preset_installed_config_required:"预设已安装,请完成配置",please_provide_file:"请提供预设目录",please_provide_url:"请提供有效的 GitHub 仓库 URL",form:{field_required:"{{field}} 为必填项",must_be_number:"{{field}} 必须是数字",must_be_at_least:"{{field}} 至少为 {{min}}",must_be_at_most:"{{field}} 最多为 {{max}}",format_invalid:"{{field}} 格式无效",select:"选择 {{label}}",applying:"应用中...",apply:"应用",cancel:"取消"}},u2={title:"用量统计",total_requests:"总请求数",total_input_tokens:"输入 Token",total_output_tokens:"输出 Token",total_tokens:"总 Token",cache_read:"缓存命中",cache_creation:"缓存创建",avg_ttft:"平均 TTFT",avg_speed:"平均速度",success_rate:"成功率",daily_chart:"每日用量",provider_chart:"供应商用量",model_chart:"模型用量",records_tab:"记录列表",requests:"请求",start_date:"开始日期",end_date:"结束日期",provider:"供应商",model:"模型",scenario:"场景",route:"路由",all:"全部",time:"时间",input_tokens:"输入",output_tokens:"输出",ttft:"TTFT",speed:"速度",duration:"耗时",status:"状态",success:"成功",error:"错误",page:"第",records:"条记录",no_data:"暂无用量数据",clear_confirm:"确定要清除所有用量数据吗?"},d2={common:QC,app:ZC,advanced_router:JC,login:WC,toplevel:e2,transformers:t2,providers:n2,router:a2,settings:r2,json_editor:l2,statusline:s2,color_picker:o2,log_viewer:i2,presets:c2,usage:u2},f2={en:{translation:XC},zh:{translation:d2}};pn.use(Sb).use(mC).init({resources:f2,fallbackLng:"en",interpolation:{escapeValue:!1}});var bh={exports:{}},$o={},wh={exports:{}},Sh={};var Lx;function h2(){return Lx||(Lx=1,(function(t){function a(M,V){var H=M.length;M.push(V);e:for(;0<H;){var oe=H-1>>>1,me=M[oe];if(0<o(me,V))M[oe]=V,M[H]=me,H=oe;else break e}}function r(M){return M.length===0?null:M[0]}function s(M){if(M.length===0)return null;var V=M[0],H=M.pop();if(H!==V){M[0]=H;e:for(var oe=0,me=M.length,O=me>>>1;oe<O;){var D=2*(oe+1)-1,G=M[D],Q=D+1,ae=M[Q];if(0>o(G,H))Q<me&&0>o(ae,G)?(M[oe]=ae,M[Q]=H,oe=Q):(M[oe]=G,M[D]=H,oe=D);else if(Q<me&&0>o(ae,H))M[oe]=ae,M[Q]=H,oe=Q;else break e}}return V}function o(M,V){var H=M.sortIndex-V.sortIndex;return H!==0?H:M.id-V.id}if(t.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var u=performance;t.unstable_now=function(){return u.now()}}else{var d=Date,f=d.now();t.unstable_now=function(){return d.now()-f}}var m=[],p=[],x=1,y=null,w=3,S=!1,N=!1,j=!1,R=!1,T=typeof setTimeout=="function"?setTimeout:null,E=typeof clearTimeout=="function"?clearTimeout:null,_=typeof setImmediate<"u"?setImmediate:null;function k(M){for(var V=r(p);V!==null;){if(V.callback===null)s(p);else if(V.startTime<=M)s(p),V.sortIndex=V.expirationTime,a(m,V);else break;V=r(p)}}function L(M){if(j=!1,k(M),!N)if(r(m)!==null)N=!0,z||(z=!0,ie());else{var V=r(p);V!==null&&F(L,V.startTime-M)}}var z=!1,C=-1,U=5,K=-1;function Z(){return R?!0:!(t.unstable_now()-K<U)}function re(){if(R=!1,z){var M=t.unstable_now();K=M;var V=!0;try{e:{N=!1,j&&(j=!1,E(C),C=-1),S=!0;var H=w;try{t:{for(k(M),y=r(m);y!==null&&!(y.expirationTime>M&&Z());){var oe=y.callback;if(typeof oe=="function"){y.callback=null,w=y.priorityLevel;var me=oe(y.expirationTime<=M);if(M=t.unstable_now(),typeof me=="function"){y.callback=me,k(M),V=!0;break t}y===r(m)&&s(m),k(M)}else s(m);y=r(m)}if(y!==null)V=!0;else{var O=r(p);O!==null&&F(L,O.startTime-M),V=!1}}break e}finally{y=null,w=H,S=!1}V=void 0}}finally{V?ie():z=!1}}}var ie;if(typeof _=="function")ie=function(){_(re)};else if(typeof MessageChannel<"u"){var le=new MessageChannel,P=le.port2;le.port1.onmessage=re,ie=function(){P.postMessage(null)}}else ie=function(){T(re,0)};function F(M,V){C=T(function(){M(t.unstable_now())},V)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(M){M.callback=null},t.unstable_forceFrameRate=function(M){0>M||125<M?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):U=0<M?Math.floor(1e3/M):5},t.unstable_getCurrentPriorityLevel=function(){return w},t.unstable_next=function(M){switch(w){case 1:case 2:case 3:var V=3;break;default:V=w}var H=w;w=V;try{return M()}finally{w=H}},t.unstable_requestPaint=function(){R=!0},t.unstable_runWithPriority=function(M,V){switch(M){case 1:case 2:case 3:case 4:case 5:break;default:M=3}var H=w;w=M;try{return V()}finally{w=H}},t.unstable_scheduleCallback=function(M,V,H){var oe=t.unstable_now();switch(typeof H=="object"&&H!==null?(H=H.delay,H=typeof H=="number"&&0<H?oe+H:oe):H=oe,M){case 1:var me=-1;break;case 2:me=250;break;case 5:me=1073741823;break;case 4:me=1e4;break;default:me=5e3}return me=H+me,M={id:x++,callback:V,priorityLevel:M,startTime:H,expirationTime:me,sortIndex:-1},H>oe?(M.sortIndex=H,a(p,M),r(m)===null&&M===r(p)&&(j?(E(C),C=-1):j=!0,F(L,H-oe))):(M.sortIndex=me,a(m,M),N||S||(N=!0,z||(z=!0,ie()))),M},t.unstable_shouldYield=Z,t.unstable_wrapCallback=function(M){var V=w;return function(){var H=w;w=V;try{return M.apply(this,arguments)}finally{w=H}}}})(Sh)),Sh}var zx;function m2(){return zx||(zx=1,wh.exports=h2()),wh.exports}var _h={exports:{}},on={};var Px;function p2(){if(Px)return on;Px=1;var t=km();function a(m){var p="https://react.dev/errors/"+m;if(1<arguments.length){p+="?args[]="+encodeURIComponent(arguments[1]);for(var x=2;x<arguments.length;x++)p+="&args[]="+encodeURIComponent(arguments[x])}return"Minified React error #"+m+"; visit "+p+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function r(){}var s={d:{f:r,r:function(){throw Error(a(522))},D:r,C:r,L:r,m:r,X:r,S:r,M:r},p:0,findDOMNode:null},o=Symbol.for("react.portal");function u(m,p,x){var y=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:o,key:y==null?null:""+y,children:m,containerInfo:p,implementation:x}}var d=t.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function f(m,p){if(m==="font")return"";if(typeof p=="string")return p==="use-credentials"?p:""}return on.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=s,on.createPortal=function(m,p){var x=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!p||p.nodeType!==1&&p.nodeType!==9&&p.nodeType!==11)throw Error(a(299));return u(m,p,null,x)},on.flushSync=function(m){var p=d.T,x=s.p;try{if(d.T=null,s.p=2,m)return m()}finally{d.T=p,s.p=x,s.d.f()}},on.preconnect=function(m,p){typeof m=="string"&&(p?(p=p.crossOrigin,p=typeof p=="string"?p==="use-credentials"?p:"":void 0):p=null,s.d.C(m,p))},on.prefetchDNS=function(m){typeof m=="string"&&s.d.D(m)},on.preinit=function(m,p){if(typeof m=="string"&&p&&typeof p.as=="string"){var x=p.as,y=f(x,p.crossOrigin),w=typeof p.integrity=="string"?p.integrity:void 0,S=typeof p.fetchPriority=="string"?p.fetchPriority:void 0;x==="style"?s.d.S(m,typeof p.precedence=="string"?p.precedence:void 0,{crossOrigin:y,integrity:w,fetchPriority:S}):x==="script"&&s.d.X(m,{crossOrigin:y,integrity:w,fetchPriority:S,nonce:typeof p.nonce=="string"?p.nonce:void 0})}},on.preinitModule=function(m,p){if(typeof m=="string")if(typeof p=="object"&&p!==null){if(p.as==null||p.as==="script"){var x=f(p.as,p.crossOrigin);s.d.M(m,{crossOrigin:x,integrity:typeof p.integrity=="string"?p.integrity:void 0,nonce:typeof p.nonce=="string"?p.nonce:void 0})}}else p==null&&s.d.M(m)},on.preload=function(m,p){if(typeof m=="string"&&typeof p=="object"&&p!==null&&typeof p.as=="string"){var x=p.as,y=f(x,p.crossOrigin);s.d.L(m,x,{crossOrigin:y,integrity:typeof p.integrity=="string"?p.integrity:void 0,nonce:typeof p.nonce=="string"?p.nonce:void 0,type:typeof p.type=="string"?p.type:void 0,fetchPriority:typeof p.fetchPriority=="string"?p.fetchPriority:void 0,referrerPolicy:typeof p.referrerPolicy=="string"?p.referrerPolicy:void 0,imageSrcSet:typeof p.imageSrcSet=="string"?p.imageSrcSet:void 0,imageSizes:typeof p.imageSizes=="string"?p.imageSizes:void 0,media:typeof p.media=="string"?p.media:void 0})}},on.preloadModule=function(m,p){if(typeof m=="string")if(p){var x=f(p.as,p.crossOrigin);s.d.m(m,{as:typeof p.as=="string"&&p.as!=="script"?p.as:void 0,crossOrigin:x,integrity:typeof p.integrity=="string"?p.integrity:void 0})}else s.d.m(m)},on.requestFormReset=function(m){s.d.r(m)},on.unstable_batchedUpdates=function(m,p){return m(p)},on.useFormState=function(m,p,x){return d.H.useFormState(m,p,x)},on.useFormStatus=function(){return d.H.useHostTransitionStatus()},on.version="19.2.3",on}var Ux;function _b(){if(Ux)return _h.exports;Ux=1;function t(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(a){console.error(a)}}return t(),_h.exports=p2(),_h.exports}var Hx;function g2(){if(Hx)return $o;Hx=1;var t=m2(),a=km(),r=_b();function s(e){var n="https://react.dev/errors/"+e;if(1<arguments.length){n+="?args[]="+encodeURIComponent(arguments[1]);for(var l=2;l<arguments.length;l++)n+="&args[]="+encodeURIComponent(arguments[l])}return"Minified React error #"+e+"; visit "+n+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function o(e){return!(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11)}function u(e){var n=e,l=e;if(e.alternate)for(;n.return;)n=n.return;else{e=n;do n=e,(n.flags&4098)!==0&&(l=n.return),e=n.return;while(e)}return n.tag===3?l:null}function d(e){if(e.tag===13){var n=e.memoizedState;if(n===null&&(e=e.alternate,e!==null&&(n=e.memoizedState)),n!==null)return n.dehydrated}return null}function f(e){if(e.tag===31){var n=e.memoizedState;if(n===null&&(e=e.alternate,e!==null&&(n=e.memoizedState)),n!==null)return n.dehydrated}return null}function m(e){if(u(e)!==e)throw Error(s(188))}function p(e){var n=e.alternate;if(!n){if(n=u(e),n===null)throw Error(s(188));return n!==e?null:e}for(var l=e,i=n;;){var h=l.return;if(h===null)break;var g=h.alternate;if(g===null){if(i=h.return,i!==null){l=i;continue}break}if(h.child===g.child){for(g=h.child;g;){if(g===l)return m(h),e;if(g===i)return m(h),n;g=g.sibling}throw Error(s(188))}if(l.return!==i.return)l=h,i=g;else{for(var b=!1,A=h.child;A;){if(A===l){b=!0,l=h,i=g;break}if(A===i){b=!0,i=h,l=g;break}A=A.sibling}if(!b){for(A=g.child;A;){if(A===l){b=!0,l=g,i=h;break}if(A===i){b=!0,i=g,l=h;break}A=A.sibling}if(!b)throw Error(s(189))}}if(l.alternate!==i)throw Error(s(190))}if(l.tag!==3)throw Error(s(188));return l.stateNode.current===l?e:n}function x(e){var n=e.tag;if(n===5||n===26||n===27||n===6)return e;for(e=e.child;e!==null;){if(n=x(e),n!==null)return n;e=e.sibling}return null}var y=Object.assign,w=Symbol.for("react.element"),S=Symbol.for("react.transitional.element"),N=Symbol.for("react.portal"),j=Symbol.for("react.fragment"),R=Symbol.for("react.strict_mode"),T=Symbol.for("react.profiler"),E=Symbol.for("react.consumer"),_=Symbol.for("react.context"),k=Symbol.for("react.forward_ref"),L=Symbol.for("react.suspense"),z=Symbol.for("react.suspense_list"),C=Symbol.for("react.memo"),U=Symbol.for("react.lazy"),K=Symbol.for("react.activity"),Z=Symbol.for("react.memo_cache_sentinel"),re=Symbol.iterator;function ie(e){return e===null||typeof e!="object"?null:(e=re&&e[re]||e["@@iterator"],typeof e=="function"?e:null)}var le=Symbol.for("react.client.reference");function P(e){if(e==null)return null;if(typeof e=="function")return e.$$typeof===le?null:e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case j:return"Fragment";case T:return"Profiler";case R:return"StrictMode";case L:return"Suspense";case z:return"SuspenseList";case K:return"Activity"}if(typeof e=="object")switch(e.$$typeof){case N:return"Portal";case _:return e.displayName||"Context";case E:return(e._context.displayName||"Context")+".Consumer";case k:var n=e.render;return e=e.displayName,e||(e=n.displayName||n.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case C:return n=e.displayName||null,n!==null?n:P(e.type)||"Memo";case U:n=e._payload,e=e._init;try{return P(e(n))}catch{}}return null}var F=Array.isArray,M=a.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,V=r.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,H={pending:!1,data:null,method:null,action:null},oe=[],me=-1;function O(e){return{current:e}}function D(e){0>me||(e.current=oe[me],oe[me]=null,me--)}function G(e,n){me++,oe[me]=e.current,e.current=n}var Q=O(null),ae=O(null),ve=O(null),I=O(null);function xe(e,n){switch(G(ve,n),G(ae,e),G(Q,null),n.nodeType){case 9:case 11:e=(e=n.documentElement)&&(e=e.namespaceURI)?Dy(e):0;break;default:if(e=n.tagName,n=n.namespaceURI)n=Dy(n),e=Ly(n,e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}D(Q),G(Q,e)}function be(){D(Q),D(ae),D(ve)}function Ce(e){e.memoizedState!==null&&G(I,e);var n=Q.current,l=Ly(n,e.type);n!==l&&(G(ae,e),G(Q,l))}function Fe(e){ae.current===e&&(D(Q),D(ae)),I.current===e&&(D(I),Lo._currentValue=H)}var Ue,_t;function At(e){if(Ue===void 0)try{throw Error()}catch(l){var n=l.stack.trim().match(/\n( *(at )?)/);Ue=n&&n[1]||"",_t=-1<l.stack.indexOf(`
|
|
13
11
|
at`)?" (<anonymous>)":-1<l.stack.indexOf("@")?"@unknown:0:0":""}return`
|
|
14
12
|
`+Ue+e+_t}var Se=!1;function ze(e,n){if(!e||Se)return"";Se=!0;var l=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var i={DetermineComponentFrameRoot:function(){try{if(n){var de=function(){throw Error()};if(Object.defineProperty(de.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(de,[])}catch(ne){var ee=ne}Reflect.construct(e,[],de)}else{try{de.call()}catch(ne){ee=ne}e.call(de.prototype)}}else{try{throw Error()}catch(ne){ee=ne}(de=e())&&typeof de.catch=="function"&&de.catch(function(){})}}catch(ne){if(ne&&ee&&typeof ne.stack=="string")return[ne.stack,ee.stack]}return[null,null]}};i.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var h=Object.getOwnPropertyDescriptor(i.DetermineComponentFrameRoot,"name");h&&h.configurable&&Object.defineProperty(i.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var g=i.DetermineComponentFrameRoot(),b=g[0],A=g[1];if(b&&A){var $=b.split(`
|
|
15
13
|
`),W=A.split(`
|
|
@@ -64,7 +62,7 @@ Please change the parent <Route path="${E}"> to <Route path="${E==="/"?"*":`${E}
|
|
|
64
62
|
|
|
65
63
|
If you want to hide the \`${a.titleName}\`, you can wrap it with our VisuallyHidden component.
|
|
66
64
|
|
|
67
|
-
For more information, see https://radix-ui.com/primitives/docs/components/${a.docsSlug}`;return v.useEffect(()=>{t&&(document.getElementById(t)||console.error(r))},[r,t]),null},Dk="DialogDescriptionWarning",Lk=({contentRef:t,descriptionId:a})=>{const s=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${Z1(Dk).contentName}}.`;return v.useEffect(()=>{const o=t.current?.getAttribute("aria-describedby");a&&o&&(document.getElementById(a)||console.warn(s))},[s,t,a]),null},J1=U1,W1=$1,Zm=F1,Jm=I1,ew=V1,tw=K1,zk=X1;const xa=J1,Pk=W1,nw=v.forwardRef(({className:t,...a},r)=>c.jsx(Zm,{ref:r,className:Ke("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",t),...a}));nw.displayName=Zm.displayName;const ra=v.forwardRef(({className:t,children:a,...r},s)=>c.jsxs(Pk,{children:[c.jsx(nw,{}),c.jsxs(Jm,{ref:s,className:Ke("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-300 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg animate-scale-in",t),...r,children:[a,c.jsxs(zk,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground transition-all-ease hover:scale-110",children:[c.jsx(El,{className:"h-4 w-4"}),c.jsx("span",{className:"sr-only",children:"Close"})]})]})]}));ra.displayName=Jm.displayName;const la=({className:t,...a})=>c.jsx("div",{className:Ke("flex flex-col space-y-1.5 text-center sm:text-left",t),...a});la.displayName="DialogHeader";const Vr=({className:t,...a})=>c.jsx("div",{className:Ke("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",t),...a});Vr.displayName="DialogFooter";const sa=v.forwardRef(({className:t,...a},r)=>c.jsx(ew,{ref:r,className:Ke("text-lg font-semibold leading-none tracking-tight",t),...a}));sa.displayName=ew.displayName;const Rl=v.forwardRef(({className:t,...a},r)=>c.jsx(tw,{ref:r,className:Ke("text-sm text-muted-foreground",t),...a}));Rl.displayName=tw.displayName;function Uk(){const{t}=hn(),{config:a,setConfig:r}=Xr(),[s,o]=v.useState(null),[u,d]=v.useState(null),[f,m]=v.useState(null);if(!a)return c.jsxs(oa,{className:"flex h-full flex-col rounded-lg border shadow-sm",children:[c.jsx(ja,{className:"flex flex-row items-center justify-between border-b p-4",children:c.jsx(Na,{className:"text-lg",children:t("transformers.title")})}),c.jsx(ia,{className:"flex-grow flex items-center justify-center p-4",children:c.jsx("div",{className:"text-gray-500",children:"Loading transformers configuration..."})})]});const p=Array.isArray(a.transformers)?a.transformers:[],x=()=>{m({name:"",path:"",options:{}}),o(p.length)},y=R=>{const T=[...p];T.splice(R,1),r({...a,transformers:T}),d(null)},w=(R,T,E,_)=>{if(R<p.length){const k=[...p];_!==void 0?k[R].options[_]=E:k[R][T]=E,r({...a,transformers:k})}else if(f){const k={...f};_!==void 0?k.options[_]=E:k[T]=E,m(k)}},S=s!==null?s<p.length?p[s]:f:null,N=()=>{if(f&&s===p.length){const R=[...p,f];r({...a,transformers:R})}o(null),m(null)},j=()=>{o(null),m(null)};return c.jsxs(oa,{className:"flex h-full flex-col glass-card border-white/10 shadow-xl overflow-hidden",children:[c.jsxs(ja,{className:"flex flex-row items-center justify-between border-b border-white/10 bg-white/5 p-5",children:[c.jsxs(Na,{className:"text-xl font-bold tracking-tight text-foreground flex items-center gap-2",children:[t("transformers.title"),c.jsx("span",{className:"text-xs bg-primary/20 text-primary px-2 py-1 rounded-full font-bold ml-1",children:p.length})]}),c.jsxs(ye,{onClick:x,size:"sm",className:"h-9 px-4 rounded-xl",children:[c.jsx(Os,{className:"h-4 w-4 mr-1"}),t("transformers.add")]})]}),c.jsx(ia,{className:"flex-grow overflow-y-auto p-6 custom-scrollbar",children:c.jsx(oA,{transformers:p,onEdit:o,onRemove:d})}),c.jsx(xa,{open:s!==null,onOpenChange:j,children:c.jsxs(ra,{children:[c.jsx(la,{children:c.jsx(sa,{children:t("transformers.edit")})}),S&&s!==null&&c.jsxs("div",{className:"space-y-4 py-4 px-6 max-h-96 overflow-y-auto",children:[c.jsxs("div",{className:"space-y-2",children:[c.jsx(Ee,{htmlFor:"transformer-path",children:t("transformers.path")}),c.jsx(at,{id:"transformer-path",value:S.path||"",onChange:R=>w(s,"path",R.target.value)})]}),c.jsxs("div",{className:"space-y-2",children:[c.jsxs("div",{className:"flex items-center justify-between",children:[c.jsx(Ee,{children:t("transformers.parameters")}),c.jsx(ye,{variant:"outline",size:"sm",onClick:()=>{const R=S.options||{},T=`param${Object.keys(R).length+1}`;if(s!==null){const E={...R,[T]:""};if(s<p.length){const _=[...p];_[s].options=E,r({...a,transformers:_})}else f&&m({...f,options:E})}},children:c.jsx(Os,{className:"h-4 w-4"})})]}),Object.entries(S.options||{}).map(([R,T])=>c.jsxs("div",{className:"flex items-center gap-2",children:[c.jsx(at,{value:R,onChange:E=>{const k={...S.options||{}};if(delete k[R],k[E.target.value]=T,s!==null)if(s<p.length){const L=[...p];L[s].options=k,r({...a,transformers:L})}else f&&m({...f,options:k})},className:"flex-1"}),c.jsx(at,{value:T,onChange:E=>{s!==null&&w(s,"parameters",E.target.value,R)},className:"flex-1"}),c.jsx(ye,{variant:"outline",size:"icon",onClick:()=>{if(s!==null){const _={...S.options||{}};if(delete _[R],s<p.length){const k=[...p];k[s].options=_,r({...a,transformers:k})}else f&&m({...f,options:_})}},children:c.jsx(ca,{className:"h-4 w-4"})})]},R))]})]}),c.jsxs(Vr,{children:[c.jsx(ye,{variant:"outline",onClick:j,children:t("app.cancel")}),c.jsx(ye,{onClick:N,children:t("app.save")})]})]})}),c.jsx(xa,{open:u!==null,onOpenChange:()=>d(null),children:c.jsxs(ra,{children:[c.jsxs(la,{children:[c.jsx(sa,{children:t("transformers.delete")}),c.jsx(Rl,{children:t("transformers.delete_transformer_confirm")})]}),c.jsxs(Vr,{children:[c.jsx(ye,{variant:"outline",onClick:()=>d(null),children:t("app.cancel")}),c.jsx(ye,{variant:"destructive",onClick:()=>u!==null&&y(u),children:t("app.delete")})]})]})})]})}const Hk=Im("inline-flex items-center rounded-lg border px-2.5 py-0.5 text-[10px] font-bold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground shadow-sm shadow-primary/20",secondary:"border-white/5 bg-white/5 text-muted-foreground",destructive:"border-red-500/20 bg-red-500/10 text-red-500",outline:"border-white/10 text-foreground bg-white/5"}},defaultVariants:{variant:"default"}});function Gn({className:t,variant:a,...r}){return c.jsx("div",{className:Ke(Hk({variant:a}),t),...r})}function Bk(t,a){if(!a||a.length===0)return{status:"closed",hasFailure:!1};const r=a.filter(u=>u.provider===t);if(r.length===0)return{status:"closed",hasFailure:!1};const s=r.filter(u=>u.status==="open"),o=r.filter(u=>u.status==="half-open");return s.length>0?{status:"open",hasFailure:!0,lastError:s[0].lastError}:o.length>0?{status:"half-open",hasFailure:!0,lastError:o[0].lastError}:{status:"closed",hasFailure:!1}}function $k({status:t}){const a={closed:"bg-green-500",open:"bg-red-500","half-open":"bg-yellow-500",unknown:"bg-gray-400"},r={closed:"Healthy",open:"Failed","half-open":"Recovering",unknown:"Unknown"};return c.jsxs("div",{className:"flex items-center gap-1",children:[c.jsx("div",{className:`w-3 h-3 rounded-full ${a[t]} animate-pulse`,title:r[t]}),c.jsx("span",{className:"text-xs text-gray-500",children:r[t]})]})}function z0(t){try{const a=new Date(t);if(isNaN(a.getTime()))return t;const r=new Date,s=a.toDateString()===r.toDateString(),o=f=>String(f).padStart(2,"0"),u=o(a.getHours()),d=o(a.getMinutes());if(s)return`${u}:${d}`;{const f=o(a.getMonth()+1),m=o(a.getDate());return`${f}-${m} ${u}:${d}`}}catch{return t}}function P0({label:t,used:a,limit:r,resetTime:s,isBalance:o,currency:u,t:d}){if(r===void 0||!o&&r<=0)return null;if(o){const y=u==="CNY"?"¥":u==="USD"?"$":"",w=r-a;let S="bg-emerald-400",N="text-emerald-600";w<10?(S="bg-red-500",N="text-red-600"):w<50&&(S="bg-amber-400",N="text-amber-600");const j=Math.min(100,Math.max(0,w/50*100));return c.jsxs("div",{className:"flex items-center gap-2 text-xs text-muted-foreground/80",children:[c.jsx("span",{className:"w-12 shrink-0 font-medium",children:t}),c.jsx("div",{className:"flex-1 space-y-0.5",children:c.jsx("div",{className:"relative h-2 rounded-full bg-white/10 overflow-hidden",children:c.jsx("div",{className:`h-full rounded-full ${S} transition-all duration-300 shadow-[0_0_8px_rgba(var(--primary),0.3)]`,style:{width:`${j}%`}})})}),c.jsxs("div",{className:"flex flex-col items-end shrink-0 min-w-[70px]",children:[c.jsxs("span",{className:`text-right tabular-nums font-bold ${N}`,children:[y,w.toFixed(2)]}),s&&c.jsx("span",{className:"text-[9px] text-muted-foreground/50 leading-none mt-0.5",children:d("providers.quota_reset",{time:z0(s)})})]})]})}const f=Math.min(100,a/r*100),m=Math.max(2,f);let p="bg-emerald-500",x="text-emerald-500";return f>=90?(p="bg-red-500",x="text-red-500"):f>=70?(p="bg-amber-500",x="text-amber-500"):f>=40&&(p="bg-primary",x="text-primary"),c.jsxs("div",{className:"flex items-center gap-2 text-xs text-muted-foreground/80",children:[c.jsx("span",{className:"w-12 shrink-0 font-medium",children:t}),c.jsx("div",{className:"flex-1 h-2 bg-white/10 rounded-full overflow-hidden",children:c.jsx("div",{className:`h-full rounded-full ${p} transition-all duration-300 shadow-sm`,style:{width:`${m}%`}})}),c.jsxs("div",{className:"flex flex-col items-end shrink-0 min-w-[70px]",children:[c.jsx("span",{className:`text-right tabular-nums font-bold ${x}`,children:`${f.toFixed(1)}%`}),s&&c.jsx("span",{className:"text-[9px] text-muted-foreground/50 leading-none mt-0.5",children:d("providers.quota_reset",{time:z0(s)})})]})]})}function Fk({providers:t,healthStates:a,quotaUsages:r,onEdit:s,onRemove:o}){const{t:u}=hn();return!t||!Array.isArray(t)?c.jsx("div",{className:"space-y-4",children:c.jsx("div",{className:"flex items-center justify-center rounded-2xl border border-white/10 bg-white/5 p-12 text-muted-foreground animate-in",children:"No providers configured"})}):c.jsx("div",{className:"space-y-4",children:t.map((d,f)=>{if(!d)return null;const m=d.name||"Unnamed Provider",p=d.api_base_url||"No API URL",x=Array.isArray(d.models)?d.models:[],y=Bk(m,a),w=r?.find(S=>S.provider===m);return c.jsxs("div",{className:"flex items-start justify-between rounded-2xl border border-white/10 bg-white/5 p-5 transition-all hover:bg-white/10 hover:border-primary/30 group animate-in shadow-lg shadow-black/5 glass-card",children:[c.jsxs("div",{className:"flex-1 space-y-3",children:[c.jsxs("div",{className:"flex flex-col gap-1",children:[c.jsx("p",{className:"text-lg font-bold tracking-tight text-foreground",children:m}),c.jsx("p",{className:"text-xs font-medium text-muted-foreground/60 truncate max-w-md",children:p})]}),y.lastError&&c.jsx("div",{className:"p-2 px-3 bg-red-500/10 border border-red-500/20 rounded-lg text-[11px] text-red-500 font-medium truncate max-w-md",children:y.lastError}),w&&(w.limit5h!==void 0||w.limit7d!==void 0)&&c.jsxs("div",{className:"space-y-2 py-1 max-w-md",children:[c.jsx(P0,{label:w.type5h==="balance"?u("providers.quota_balance"):u("providers.quota_5h"),used:w.used5h,limit:w.limit5h,resetTime:w.limit5h?w.reset5h:void 0,isBalance:w.type5h==="balance",currency:w.currency,t:u}),c.jsx(P0,{label:w.type7d==="balance"?u("providers.quota_balance"):u("providers.quota_7d"),used:w.used7d,limit:w.limit7d,resetTime:w.limit7d?w.reset7d:void 0,isBalance:w.type7d==="balance",currency:w.currency,t:u})]}),c.jsx("div",{className:"flex flex-wrap gap-2 pt-1",children:x.map((S,N)=>c.jsx(Gn,{variant:"secondary",className:"px-2 py-0.5 rounded-lg bg-white/5 border-white/5 text-[10px] font-bold text-muted-foreground group-hover:text-foreground transition-colors",children:S||"Unnamed Model"},N))})]}),c.jsxs("div",{className:"ml-4 flex flex-col items-end gap-4",children:[c.jsx($k,{status:y.status}),c.jsxs("div",{className:"flex flex-col gap-2 opacity-0 group-hover:opacity-100 transition-opacity",children:[c.jsx(ye,{variant:"ghost",size:"icon",onClick:()=>s(f),className:"h-9 w-9 rounded-lg hover:bg-primary/20 hover:text-primary",children:c.jsx(_1,{className:"h-4 w-4"})}),c.jsx(ye,{variant:"destructive",size:"icon",onClick:()=>o(f),className:"h-9 w-9 rounded-lg opacity-80 hover:opacity-100",children:c.jsx(ca,{className:"h-4 w-4"})})]})]})]},f)})})}const Ik=["top","right","bottom","left"],Gr=Math.min,Mn=Math.max,vu=Math.round,Jc=Math.floor,Sa=t=>({x:t,y:t}),qk={left:"right",right:"left",bottom:"top",top:"bottom"},Vk={start:"end",end:"start"};function dm(t,a,r){return Mn(t,Gr(a,r))}function nr(t,a){return typeof t=="function"?t(a):t}function ar(t){return t.split("-")[0]}function qs(t){return t.split("-")[1]}function Wm(t){return t==="x"?"y":"x"}function ep(t){return t==="y"?"height":"width"}const Gk=new Set(["top","bottom"]);function ba(t){return Gk.has(ar(t))?"y":"x"}function tp(t){return Wm(ba(t))}function Kk(t,a,r){r===void 0&&(r=!1);const s=qs(t),o=tp(t),u=ep(o);let d=o==="x"?s===(r?"end":"start")?"right":"left":s==="start"?"bottom":"top";return a.reference[u]>a.floating[u]&&(d=yu(d)),[d,yu(d)]}function Yk(t){const a=yu(t);return[fm(t),a,fm(a)]}function fm(t){return t.replace(/start|end/g,a=>Vk[a])}const U0=["left","right"],H0=["right","left"],Xk=["top","bottom"],Qk=["bottom","top"];function Zk(t,a,r){switch(t){case"top":case"bottom":return r?a?H0:U0:a?U0:H0;case"left":case"right":return a?Xk:Qk;default:return[]}}function Jk(t,a,r,s){const o=qs(t);let u=Zk(ar(t),r==="start",s);return o&&(u=u.map(d=>d+"-"+o),a&&(u=u.concat(u.map(fm)))),u}function yu(t){return t.replace(/left|right|bottom|top/g,a=>qk[a])}function Wk(t){return{top:0,right:0,bottom:0,left:0,...t}}function aw(t){return typeof t!="number"?Wk(t):{top:t,right:t,bottom:t,left:t}}function xu(t){const{x:a,y:r,width:s,height:o}=t;return{width:s,height:o,top:r,left:a,right:a+s,bottom:r+o,x:a,y:r}}function B0(t,a,r){let{reference:s,floating:o}=t;const u=ba(a),d=tp(a),f=ep(d),m=ar(a),p=u==="y",x=s.x+s.width/2-o.width/2,y=s.y+s.height/2-o.height/2,w=s[f]/2-o[f]/2;let S;switch(m){case"top":S={x,y:s.y-o.height};break;case"bottom":S={x,y:s.y+s.height};break;case"right":S={x:s.x+s.width,y};break;case"left":S={x:s.x-o.width,y};break;default:S={x:s.x,y:s.y}}switch(qs(a)){case"start":S[d]-=w*(r&&p?-1:1);break;case"end":S[d]+=w*(r&&p?-1:1);break}return S}const eM=async(t,a,r)=>{const{placement:s="bottom",strategy:o="absolute",middleware:u=[],platform:d}=r,f=u.filter(Boolean),m=await(d.isRTL==null?void 0:d.isRTL(a));let p=await d.getElementRects({reference:t,floating:a,strategy:o}),{x,y}=B0(p,s,m),w=s,S={},N=0;for(let j=0;j<f.length;j++){const{name:R,fn:T}=f[j],{x:E,y:_,data:k,reset:L}=await T({x,y,initialPlacement:s,placement:w,strategy:o,middlewareData:S,rects:p,platform:d,elements:{reference:t,floating:a}});x=E??x,y=_??y,S={...S,[R]:{...S[R],...k}},L&&N<=50&&(N++,typeof L=="object"&&(L.placement&&(w=L.placement),L.rects&&(p=L.rects===!0?await d.getElementRects({reference:t,floating:a,strategy:o}):L.rects),{x,y}=B0(p,w,m)),j=-1)}return{x,y,placement:w,strategy:o,middlewareData:S}};async function di(t,a){var r;a===void 0&&(a={});const{x:s,y:o,platform:u,rects:d,elements:f,strategy:m}=t,{boundary:p="clippingAncestors",rootBoundary:x="viewport",elementContext:y="floating",altBoundary:w=!1,padding:S=0}=nr(a,t),N=aw(S),R=f[w?y==="floating"?"reference":"floating":y],T=xu(await u.getClippingRect({element:(r=await(u.isElement==null?void 0:u.isElement(R)))==null||r?R:R.contextElement||await(u.getDocumentElement==null?void 0:u.getDocumentElement(f.floating)),boundary:p,rootBoundary:x,strategy:m})),E=y==="floating"?{x:s,y:o,width:d.floating.width,height:d.floating.height}:d.reference,_=await(u.getOffsetParent==null?void 0:u.getOffsetParent(f.floating)),k=await(u.isElement==null?void 0:u.isElement(_))?await(u.getScale==null?void 0:u.getScale(_))||{x:1,y:1}:{x:1,y:1},L=xu(u.convertOffsetParentRelativeRectToViewportRelativeRect?await u.convertOffsetParentRelativeRectToViewportRelativeRect({elements:f,rect:E,offsetParent:_,strategy:m}):E);return{top:(T.top-L.top+N.top)/k.y,bottom:(L.bottom-T.bottom+N.bottom)/k.y,left:(T.left-L.left+N.left)/k.x,right:(L.right-T.right+N.right)/k.x}}const tM=t=>({name:"arrow",options:t,async fn(a){const{x:r,y:s,placement:o,rects:u,platform:d,elements:f,middlewareData:m}=a,{element:p,padding:x=0}=nr(t,a)||{};if(p==null)return{};const y=aw(x),w={x:r,y:s},S=tp(o),N=ep(S),j=await d.getDimensions(p),R=S==="y",T=R?"top":"left",E=R?"bottom":"right",_=R?"clientHeight":"clientWidth",k=u.reference[N]+u.reference[S]-w[S]-u.floating[N],L=w[S]-u.reference[S],z=await(d.getOffsetParent==null?void 0:d.getOffsetParent(p));let C=z?z[_]:0;(!C||!await(d.isElement==null?void 0:d.isElement(z)))&&(C=f.floating[_]||u.floating[N]);const U=k/2-L/2,K=C/2-j[N]/2-1,Z=Gr(y[T],K),re=Gr(y[E],K),ie=Z,le=C-j[N]-re,P=C/2-j[N]/2+U,F=dm(ie,P,le),M=!m.arrow&&qs(o)!=null&&P!==F&&u.reference[N]/2-(P<ie?Z:re)-j[N]/2<0,V=M?P<ie?P-ie:P-le:0;return{[S]:w[S]+V,data:{[S]:F,centerOffset:P-F-V,...M&&{alignmentOffset:V}},reset:M}}}),nM=function(t){return t===void 0&&(t={}),{name:"flip",options:t,async fn(a){var r,s;const{placement:o,middlewareData:u,rects:d,initialPlacement:f,platform:m,elements:p}=a,{mainAxis:x=!0,crossAxis:y=!0,fallbackPlacements:w,fallbackStrategy:S="bestFit",fallbackAxisSideDirection:N="none",flipAlignment:j=!0,...R}=nr(t,a);if((r=u.arrow)!=null&&r.alignmentOffset)return{};const T=ar(o),E=ba(f),_=ar(f)===f,k=await(m.isRTL==null?void 0:m.isRTL(p.floating)),L=w||(_||!j?[yu(f)]:Yk(f)),z=N!=="none";!w&&z&&L.push(...Jk(f,j,N,k));const C=[f,...L],U=await di(a,R),K=[];let Z=((s=u.flip)==null?void 0:s.overflows)||[];if(x&&K.push(U[T]),y){const P=Kk(o,d,k);K.push(U[P[0]],U[P[1]])}if(Z=[...Z,{placement:o,overflows:K}],!K.every(P=>P<=0)){var re,ie;const P=(((re=u.flip)==null?void 0:re.index)||0)+1,F=C[P];if(F&&(!(y==="alignment"?E!==ba(F):!1)||Z.every(H=>ba(H.placement)===E?H.overflows[0]>0:!0)))return{data:{index:P,overflows:Z},reset:{placement:F}};let M=(ie=Z.filter(V=>V.overflows[0]<=0).sort((V,H)=>V.overflows[1]-H.overflows[1])[0])==null?void 0:ie.placement;if(!M)switch(S){case"bestFit":{var le;const V=(le=Z.filter(H=>{if(z){const oe=ba(H.placement);return oe===E||oe==="y"}return!0}).map(H=>[H.placement,H.overflows.filter(oe=>oe>0).reduce((oe,me)=>oe+me,0)]).sort((H,oe)=>H[1]-oe[1])[0])==null?void 0:le[0];V&&(M=V);break}case"initialPlacement":M=f;break}if(o!==M)return{reset:{placement:M}}}return{}}}};function $0(t,a){return{top:t.top-a.height,right:t.right-a.width,bottom:t.bottom-a.height,left:t.left-a.width}}function F0(t){return Ik.some(a=>t[a]>=0)}const aM=function(t){return t===void 0&&(t={}),{name:"hide",options:t,async fn(a){const{rects:r}=a,{strategy:s="referenceHidden",...o}=nr(t,a);switch(s){case"referenceHidden":{const u=await di(a,{...o,elementContext:"reference"}),d=$0(u,r.reference);return{data:{referenceHiddenOffsets:d,referenceHidden:F0(d)}}}case"escaped":{const u=await di(a,{...o,altBoundary:!0}),d=$0(u,r.floating);return{data:{escapedOffsets:d,escaped:F0(d)}}}default:return{}}}}},rw=new Set(["left","top"]);async function rM(t,a){const{placement:r,platform:s,elements:o}=t,u=await(s.isRTL==null?void 0:s.isRTL(o.floating)),d=ar(r),f=qs(r),m=ba(r)==="y",p=rw.has(d)?-1:1,x=u&&m?-1:1,y=nr(a,t);let{mainAxis:w,crossAxis:S,alignmentAxis:N}=typeof y=="number"?{mainAxis:y,crossAxis:0,alignmentAxis:null}:{mainAxis:y.mainAxis||0,crossAxis:y.crossAxis||0,alignmentAxis:y.alignmentAxis};return f&&typeof N=="number"&&(S=f==="end"?N*-1:N),m?{x:S*x,y:w*p}:{x:w*p,y:S*x}}const lM=function(t){return t===void 0&&(t=0),{name:"offset",options:t,async fn(a){var r,s;const{x:o,y:u,placement:d,middlewareData:f}=a,m=await rM(a,t);return d===((r=f.offset)==null?void 0:r.placement)&&(s=f.arrow)!=null&&s.alignmentOffset?{}:{x:o+m.x,y:u+m.y,data:{...m,placement:d}}}}},sM=function(t){return t===void 0&&(t={}),{name:"shift",options:t,async fn(a){const{x:r,y:s,placement:o}=a,{mainAxis:u=!0,crossAxis:d=!1,limiter:f={fn:R=>{let{x:T,y:E}=R;return{x:T,y:E}}},...m}=nr(t,a),p={x:r,y:s},x=await di(a,m),y=ba(ar(o)),w=Wm(y);let S=p[w],N=p[y];if(u){const R=w==="y"?"top":"left",T=w==="y"?"bottom":"right",E=S+x[R],_=S-x[T];S=dm(E,S,_)}if(d){const R=y==="y"?"top":"left",T=y==="y"?"bottom":"right",E=N+x[R],_=N-x[T];N=dm(E,N,_)}const j=f.fn({...a,[w]:S,[y]:N});return{...j,data:{x:j.x-r,y:j.y-s,enabled:{[w]:u,[y]:d}}}}}},oM=function(t){return t===void 0&&(t={}),{options:t,fn(a){const{x:r,y:s,placement:o,rects:u,middlewareData:d}=a,{offset:f=0,mainAxis:m=!0,crossAxis:p=!0}=nr(t,a),x={x:r,y:s},y=ba(o),w=Wm(y);let S=x[w],N=x[y];const j=nr(f,a),R=typeof j=="number"?{mainAxis:j,crossAxis:0}:{mainAxis:0,crossAxis:0,...j};if(m){const _=w==="y"?"height":"width",k=u.reference[w]-u.floating[_]+R.mainAxis,L=u.reference[w]+u.reference[_]-R.mainAxis;S<k?S=k:S>L&&(S=L)}if(p){var T,E;const _=w==="y"?"width":"height",k=rw.has(ar(o)),L=u.reference[y]-u.floating[_]+(k&&((T=d.offset)==null?void 0:T[y])||0)+(k?0:R.crossAxis),z=u.reference[y]+u.reference[_]+(k?0:((E=d.offset)==null?void 0:E[y])||0)-(k?R.crossAxis:0);N<L?N=L:N>z&&(N=z)}return{[w]:S,[y]:N}}}},iM=function(t){return t===void 0&&(t={}),{name:"size",options:t,async fn(a){var r,s;const{placement:o,rects:u,platform:d,elements:f}=a,{apply:m=()=>{},...p}=nr(t,a),x=await di(a,p),y=ar(o),w=qs(o),S=ba(o)==="y",{width:N,height:j}=u.floating;let R,T;y==="top"||y==="bottom"?(R=y,T=w===(await(d.isRTL==null?void 0:d.isRTL(f.floating))?"start":"end")?"left":"right"):(T=y,R=w==="end"?"top":"bottom");const E=j-x.top-x.bottom,_=N-x.left-x.right,k=Gr(j-x[R],E),L=Gr(N-x[T],_),z=!a.middlewareData.shift;let C=k,U=L;if((r=a.middlewareData.shift)!=null&&r.enabled.x&&(U=_),(s=a.middlewareData.shift)!=null&&s.enabled.y&&(C=E),z&&!w){const Z=Mn(x.left,0),re=Mn(x.right,0),ie=Mn(x.top,0),le=Mn(x.bottom,0);S?U=N-2*(Z!==0||re!==0?Z+re:Mn(x.left,x.right)):C=j-2*(ie!==0||le!==0?ie+le:Mn(x.top,x.bottom))}await m({...a,availableWidth:U,availableHeight:C});const K=await d.getDimensions(f.floating);return N!==K.width||j!==K.height?{reset:{rects:!0}}:{}}}};function Hu(){return typeof window<"u"}function Vs(t){return lw(t)?(t.nodeName||"").toLowerCase():"#document"}function Dn(t){var a;return(t==null||(a=t.ownerDocument)==null?void 0:a.defaultView)||window}function Ta(t){var a;return(a=(lw(t)?t.ownerDocument:t.document)||window.document)==null?void 0:a.documentElement}function lw(t){return Hu()?t instanceof Node||t instanceof Dn(t).Node:!1}function ua(t){return Hu()?t instanceof Element||t instanceof Dn(t).Element:!1}function Ca(t){return Hu()?t instanceof HTMLElement||t instanceof Dn(t).HTMLElement:!1}function I0(t){return!Hu()||typeof ShadowRoot>"u"?!1:t instanceof ShadowRoot||t instanceof Dn(t).ShadowRoot}const cM=new Set(["inline","contents"]);function bi(t){const{overflow:a,overflowX:r,overflowY:s,display:o}=da(t);return/auto|scroll|overlay|hidden|clip/.test(a+s+r)&&!cM.has(o)}const uM=new Set(["table","td","th"]);function dM(t){return uM.has(Vs(t))}const fM=[":popover-open",":modal"];function Bu(t){return fM.some(a=>{try{return t.matches(a)}catch{return!1}})}const hM=["transform","translate","scale","rotate","perspective"],mM=["transform","translate","scale","rotate","perspective","filter"],pM=["paint","layout","strict","content"];function np(t){const a=ap(),r=ua(t)?da(t):t;return hM.some(s=>r[s]?r[s]!=="none":!1)||(r.containerType?r.containerType!=="normal":!1)||!a&&(r.backdropFilter?r.backdropFilter!=="none":!1)||!a&&(r.filter?r.filter!=="none":!1)||mM.some(s=>(r.willChange||"").includes(s))||pM.some(s=>(r.contain||"").includes(s))}function gM(t){let a=Kr(t);for(;Ca(a)&&!Ls(a);){if(np(a))return a;if(Bu(a))return null;a=Kr(a)}return null}function ap(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}const vM=new Set(["html","body","#document"]);function Ls(t){return vM.has(Vs(t))}function da(t){return Dn(t).getComputedStyle(t)}function $u(t){return ua(t)?{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}:{scrollLeft:t.scrollX,scrollTop:t.scrollY}}function Kr(t){if(Vs(t)==="html")return t;const a=t.assignedSlot||t.parentNode||I0(t)&&t.host||Ta(t);return I0(a)?a.host:a}function sw(t){const a=Kr(t);return Ls(a)?t.ownerDocument?t.ownerDocument.body:t.body:Ca(a)&&bi(a)?a:sw(a)}function fi(t,a,r){var s;a===void 0&&(a=[]),r===void 0&&(r=!0);const o=sw(t),u=o===((s=t.ownerDocument)==null?void 0:s.body),d=Dn(o);if(u){const f=hm(d);return a.concat(d,d.visualViewport||[],bi(o)?o:[],f&&r?fi(f):[])}return a.concat(o,fi(o,[],r))}function hm(t){return t.parent&&Object.getPrototypeOf(t.parent)?t.frameElement:null}function ow(t){const a=da(t);let r=parseFloat(a.width)||0,s=parseFloat(a.height)||0;const o=Ca(t),u=o?t.offsetWidth:r,d=o?t.offsetHeight:s,f=vu(r)!==u||vu(s)!==d;return f&&(r=u,s=d),{width:r,height:s,$:f}}function rp(t){return ua(t)?t:t.contextElement}function ks(t){const a=rp(t);if(!Ca(a))return Sa(1);const r=a.getBoundingClientRect(),{width:s,height:o,$:u}=ow(a);let d=(u?vu(r.width):r.width)/s,f=(u?vu(r.height):r.height)/o;return(!d||!Number.isFinite(d))&&(d=1),(!f||!Number.isFinite(f))&&(f=1),{x:d,y:f}}const yM=Sa(0);function iw(t){const a=Dn(t);return!ap()||!a.visualViewport?yM:{x:a.visualViewport.offsetLeft,y:a.visualViewport.offsetTop}}function xM(t,a,r){return a===void 0&&(a=!1),!r||a&&r!==Dn(t)?!1:a}function Ol(t,a,r,s){a===void 0&&(a=!1),r===void 0&&(r=!1);const o=t.getBoundingClientRect(),u=rp(t);let d=Sa(1);a&&(s?ua(s)&&(d=ks(s)):d=ks(t));const f=xM(u,r,s)?iw(u):Sa(0);let m=(o.left+f.x)/d.x,p=(o.top+f.y)/d.y,x=o.width/d.x,y=o.height/d.y;if(u){const w=Dn(u),S=s&&ua(s)?Dn(s):s;let N=w,j=hm(N);for(;j&&s&&S!==N;){const R=ks(j),T=j.getBoundingClientRect(),E=da(j),_=T.left+(j.clientLeft+parseFloat(E.paddingLeft))*R.x,k=T.top+(j.clientTop+parseFloat(E.paddingTop))*R.y;m*=R.x,p*=R.y,x*=R.x,y*=R.y,m+=_,p+=k,N=Dn(j),j=hm(N)}}return xu({width:x,height:y,x:m,y:p})}function Fu(t,a){const r=$u(t).scrollLeft;return a?a.left+r:Ol(Ta(t)).left+r}function cw(t,a){const r=t.getBoundingClientRect(),s=r.left+a.scrollLeft-Fu(t,r),o=r.top+a.scrollTop;return{x:s,y:o}}function bM(t){let{elements:a,rect:r,offsetParent:s,strategy:o}=t;const u=o==="fixed",d=Ta(s),f=a?Bu(a.floating):!1;if(s===d||f&&u)return r;let m={scrollLeft:0,scrollTop:0},p=Sa(1);const x=Sa(0),y=Ca(s);if((y||!y&&!u)&&((Vs(s)!=="body"||bi(d))&&(m=$u(s)),Ca(s))){const S=Ol(s);p=ks(s),x.x=S.x+s.clientLeft,x.y=S.y+s.clientTop}const w=d&&!y&&!u?cw(d,m):Sa(0);return{width:r.width*p.x,height:r.height*p.y,x:r.x*p.x-m.scrollLeft*p.x+x.x+w.x,y:r.y*p.y-m.scrollTop*p.y+x.y+w.y}}function wM(t){return Array.from(t.getClientRects())}function SM(t){const a=Ta(t),r=$u(t),s=t.ownerDocument.body,o=Mn(a.scrollWidth,a.clientWidth,s.scrollWidth,s.clientWidth),u=Mn(a.scrollHeight,a.clientHeight,s.scrollHeight,s.clientHeight);let d=-r.scrollLeft+Fu(t);const f=-r.scrollTop;return da(s).direction==="rtl"&&(d+=Mn(a.clientWidth,s.clientWidth)-o),{width:o,height:u,x:d,y:f}}const q0=25;function _M(t,a){const r=Dn(t),s=Ta(t),o=r.visualViewport;let u=s.clientWidth,d=s.clientHeight,f=0,m=0;if(o){u=o.width,d=o.height;const x=ap();(!x||x&&a==="fixed")&&(f=o.offsetLeft,m=o.offsetTop)}const p=Fu(s);if(p<=0){const x=s.ownerDocument,y=x.body,w=getComputedStyle(y),S=x.compatMode==="CSS1Compat"&&parseFloat(w.marginLeft)+parseFloat(w.marginRight)||0,N=Math.abs(s.clientWidth-y.clientWidth-S);N<=q0&&(u-=N)}else p<=q0&&(u+=p);return{width:u,height:d,x:f,y:m}}const jM=new Set(["absolute","fixed"]);function NM(t,a){const r=Ol(t,!0,a==="fixed"),s=r.top+t.clientTop,o=r.left+t.clientLeft,u=Ca(t)?ks(t):Sa(1),d=t.clientWidth*u.x,f=t.clientHeight*u.y,m=o*u.x,p=s*u.y;return{width:d,height:f,x:m,y:p}}function V0(t,a,r){let s;if(a==="viewport")s=_M(t,r);else if(a==="document")s=SM(Ta(t));else if(ua(a))s=NM(a,r);else{const o=iw(t);s={x:a.x-o.x,y:a.y-o.y,width:a.width,height:a.height}}return xu(s)}function uw(t,a){const r=Kr(t);return r===a||!ua(r)||Ls(r)?!1:da(r).position==="fixed"||uw(r,a)}function CM(t,a){const r=a.get(t);if(r)return r;let s=fi(t,[],!1).filter(f=>ua(f)&&Vs(f)!=="body"),o=null;const u=da(t).position==="fixed";let d=u?Kr(t):t;for(;ua(d)&&!Ls(d);){const f=da(d),m=np(d);!m&&f.position==="fixed"&&(o=null),(u?!m&&!o:!m&&f.position==="static"&&!!o&&jM.has(o.position)||bi(d)&&!m&&uw(t,d))?s=s.filter(x=>x!==d):o=f,d=Kr(d)}return a.set(t,s),s}function EM(t){let{element:a,boundary:r,rootBoundary:s,strategy:o}=t;const d=[...r==="clippingAncestors"?Bu(a)?[]:CM(a,this._c):[].concat(r),s],f=d[0],m=d.reduce((p,x)=>{const y=V0(a,x,o);return p.top=Mn(y.top,p.top),p.right=Gr(y.right,p.right),p.bottom=Gr(y.bottom,p.bottom),p.left=Mn(y.left,p.left),p},V0(a,f,o));return{width:m.right-m.left,height:m.bottom-m.top,x:m.left,y:m.top}}function RM(t){const{width:a,height:r}=ow(t);return{width:a,height:r}}function TM(t,a,r){const s=Ca(a),o=Ta(a),u=r==="fixed",d=Ol(t,!0,u,a);let f={scrollLeft:0,scrollTop:0};const m=Sa(0);function p(){m.x=Fu(o)}if(s||!s&&!u)if((Vs(a)!=="body"||bi(o))&&(f=$u(a)),s){const S=Ol(a,!0,u,a);m.x=S.x+a.clientLeft,m.y=S.y+a.clientTop}else o&&p();u&&!s&&o&&p();const x=o&&!s&&!u?cw(o,f):Sa(0),y=d.left+f.scrollLeft-m.x-x.x,w=d.top+f.scrollTop-m.y-x.y;return{x:y,y:w,width:d.width,height:d.height}}function Bh(t){return da(t).position==="static"}function G0(t,a){if(!Ca(t)||da(t).position==="fixed")return null;if(a)return a(t);let r=t.offsetParent;return Ta(t)===r&&(r=r.ownerDocument.body),r}function dw(t,a){const r=Dn(t);if(Bu(t))return r;if(!Ca(t)){let o=Kr(t);for(;o&&!Ls(o);){if(ua(o)&&!Bh(o))return o;o=Kr(o)}return r}let s=G0(t,a);for(;s&&dM(s)&&Bh(s);)s=G0(s,a);return s&&Ls(s)&&Bh(s)&&!np(s)?r:s||gM(t)||r}const OM=async function(t){const a=this.getOffsetParent||dw,r=this.getDimensions,s=await r(t.floating);return{reference:TM(t.reference,await a(t.floating),t.strategy),floating:{x:0,y:0,width:s.width,height:s.height}}};function AM(t){return da(t).direction==="rtl"}const kM={convertOffsetParentRelativeRectToViewportRelativeRect:bM,getDocumentElement:Ta,getClippingRect:EM,getOffsetParent:dw,getElementRects:OM,getClientRects:wM,getDimensions:RM,getScale:ks,isElement:ua,isRTL:AM};function fw(t,a){return t.x===a.x&&t.y===a.y&&t.width===a.width&&t.height===a.height}function MM(t,a){let r=null,s;const o=Ta(t);function u(){var f;clearTimeout(s),(f=r)==null||f.disconnect(),r=null}function d(f,m){f===void 0&&(f=!1),m===void 0&&(m=1),u();const p=t.getBoundingClientRect(),{left:x,top:y,width:w,height:S}=p;if(f||a(),!w||!S)return;const N=Jc(y),j=Jc(o.clientWidth-(x+w)),R=Jc(o.clientHeight-(y+S)),T=Jc(x),_={rootMargin:-N+"px "+-j+"px "+-R+"px "+-T+"px",threshold:Mn(0,Gr(1,m))||1};let k=!0;function L(z){const C=z[0].intersectionRatio;if(C!==m){if(!k)return d();C?d(!1,C):s=setTimeout(()=>{d(!1,1e-7)},1e3)}C===1&&!fw(p,t.getBoundingClientRect())&&d(),k=!1}try{r=new IntersectionObserver(L,{..._,root:o.ownerDocument})}catch{r=new IntersectionObserver(L,_)}r.observe(t)}return d(!0),u}function DM(t,a,r,s){s===void 0&&(s={});const{ancestorScroll:o=!0,ancestorResize:u=!0,elementResize:d=typeof ResizeObserver=="function",layoutShift:f=typeof IntersectionObserver=="function",animationFrame:m=!1}=s,p=rp(t),x=o||u?[...p?fi(p):[],...fi(a)]:[];x.forEach(T=>{o&&T.addEventListener("scroll",r,{passive:!0}),u&&T.addEventListener("resize",r)});const y=p&&f?MM(p,r):null;let w=-1,S=null;d&&(S=new ResizeObserver(T=>{let[E]=T;E&&E.target===p&&S&&(S.unobserve(a),cancelAnimationFrame(w),w=requestAnimationFrame(()=>{var _;(_=S)==null||_.observe(a)})),r()}),p&&!m&&S.observe(p),S.observe(a));let N,j=m?Ol(t):null;m&&R();function R(){const T=Ol(t);j&&!fw(j,T)&&r(),j=T,N=requestAnimationFrame(R)}return r(),()=>{var T;x.forEach(E=>{o&&E.removeEventListener("scroll",r),u&&E.removeEventListener("resize",r)}),y?.(),(T=S)==null||T.disconnect(),S=null,m&&cancelAnimationFrame(N)}}const LM=lM,zM=sM,PM=nM,UM=iM,HM=aM,K0=tM,BM=oM,$M=(t,a,r)=>{const s=new Map,o={platform:kM,...r},u={...o.platform,_c:s};return eM(t,a,{...o,platform:u})};var FM=typeof document<"u",IM=function(){},iu=FM?v.useLayoutEffect:IM;function bu(t,a){if(t===a)return!0;if(typeof t!=typeof a)return!1;if(typeof t=="function"&&t.toString()===a.toString())return!0;let r,s,o;if(t&&a&&typeof t=="object"){if(Array.isArray(t)){if(r=t.length,r!==a.length)return!1;for(s=r;s--!==0;)if(!bu(t[s],a[s]))return!1;return!0}if(o=Object.keys(t),r=o.length,r!==Object.keys(a).length)return!1;for(s=r;s--!==0;)if(!{}.hasOwnProperty.call(a,o[s]))return!1;for(s=r;s--!==0;){const u=o[s];if(!(u==="_owner"&&t.$$typeof)&&!bu(t[u],a[u]))return!1}return!0}return t!==t&&a!==a}function hw(t){return typeof window>"u"?1:(t.ownerDocument.defaultView||window).devicePixelRatio||1}function Y0(t,a){const r=hw(t);return Math.round(a*r)/r}function $h(t){const a=v.useRef(t);return iu(()=>{a.current=t}),a}function qM(t){t===void 0&&(t={});const{placement:a="bottom",strategy:r="absolute",middleware:s=[],platform:o,elements:{reference:u,floating:d}={},transform:f=!0,whileElementsMounted:m,open:p}=t,[x,y]=v.useState({x:0,y:0,strategy:r,placement:a,middlewareData:{},isPositioned:!1}),[w,S]=v.useState(s);bu(w,s)||S(s);const[N,j]=v.useState(null),[R,T]=v.useState(null),E=v.useCallback(H=>{H!==z.current&&(z.current=H,j(H))},[]),_=v.useCallback(H=>{H!==C.current&&(C.current=H,T(H))},[]),k=u||N,L=d||R,z=v.useRef(null),C=v.useRef(null),U=v.useRef(x),K=m!=null,Z=$h(m),re=$h(o),ie=$h(p),le=v.useCallback(()=>{if(!z.current||!C.current)return;const H={placement:a,strategy:r,middleware:w};re.current&&(H.platform=re.current),$M(z.current,C.current,H).then(oe=>{const me={...oe,isPositioned:ie.current!==!1};P.current&&!bu(U.current,me)&&(U.current=me,Hs.flushSync(()=>{y(me)}))})},[w,a,r,re,ie]);iu(()=>{p===!1&&U.current.isPositioned&&(U.current.isPositioned=!1,y(H=>({...H,isPositioned:!1})))},[p]);const P=v.useRef(!1);iu(()=>(P.current=!0,()=>{P.current=!1}),[]),iu(()=>{if(k&&(z.current=k),L&&(C.current=L),k&&L){if(Z.current)return Z.current(k,L,le);le()}},[k,L,le,Z,K]);const F=v.useMemo(()=>({reference:z,floating:C,setReference:E,setFloating:_}),[E,_]),M=v.useMemo(()=>({reference:k,floating:L}),[k,L]),V=v.useMemo(()=>{const H={position:r,left:0,top:0};if(!M.floating)return H;const oe=Y0(M.floating,x.x),me=Y0(M.floating,x.y);return f?{...H,transform:"translate("+oe+"px, "+me+"px)",...hw(M.floating)>=1.5&&{willChange:"transform"}}:{position:r,left:oe,top:me}},[r,f,M.floating,x.x,x.y]);return v.useMemo(()=>({...x,update:le,refs:F,elements:M,floatingStyles:V}),[x,le,F,M,V])}const VM=t=>{function a(r){return{}.hasOwnProperty.call(r,"current")}return{name:"arrow",options:t,fn(r){const{element:s,padding:o}=typeof t=="function"?t(r):t;return s&&a(s)?s.current!=null?K0({element:s.current,padding:o}).fn(r):{}:s?K0({element:s,padding:o}).fn(r):{}}}},GM=(t,a)=>({...LM(t),options:[t,a]}),KM=(t,a)=>({...zM(t),options:[t,a]}),YM=(t,a)=>({...BM(t),options:[t,a]}),XM=(t,a)=>({...PM(t),options:[t,a]}),QM=(t,a)=>({...UM(t),options:[t,a]}),ZM=(t,a)=>({...HM(t),options:[t,a]}),JM=(t,a)=>({...VM(t),options:[t,a]});var WM="Arrow",mw=v.forwardRef((t,a)=>{const{children:r,width:s=10,height:o=5,...u}=t;return c.jsx(We.svg,{...u,ref:a,width:s,height:o,viewBox:"0 0 30 10",preserveAspectRatio:"none",children:t.asChild?r:c.jsx("polygon",{points:"0,0 30,0 15,10"})})});mw.displayName=WM;var eD=mw;function lp(t){const[a,r]=v.useState(void 0);return fn(()=>{if(t){r({width:t.offsetWidth,height:t.offsetHeight});const s=new ResizeObserver(o=>{if(!Array.isArray(o)||!o.length)return;const u=o[0];let d,f;if("borderBoxSize"in u){const m=u.borderBoxSize,p=Array.isArray(m)?m[0]:m;d=p.inlineSize,f=p.blockSize}else d=t.offsetWidth,f=t.offsetHeight;r({width:d,height:f})});return s.observe(t,{box:"border-box"}),()=>s.unobserve(t)}else r(void 0)},[t]),a}var sp="Popper",[pw,Gs]=Ra(sp),[tD,gw]=pw(sp),vw=t=>{const{__scopePopper:a,children:r}=t,[s,o]=v.useState(null);return c.jsx(tD,{scope:a,anchor:s,onAnchorChange:o,children:r})};vw.displayName=sp;var yw="PopperAnchor",xw=v.forwardRef((t,a)=>{const{__scopePopper:r,virtualRef:s,...o}=t,u=gw(yw,r),d=v.useRef(null),f=bt(a,d),m=v.useRef(null);return v.useEffect(()=>{const p=m.current;m.current=s?.current||d.current,p!==m.current&&u.onAnchorChange(m.current)}),s?null:c.jsx(We.div,{...o,ref:f})});xw.displayName=yw;var op="PopperContent",[nD,aD]=pw(op),bw=v.forwardRef((t,a)=>{const{__scopePopper:r,side:s="bottom",sideOffset:o=0,align:u="center",alignOffset:d=0,arrowPadding:f=0,avoidCollisions:m=!0,collisionBoundary:p=[],collisionPadding:x=0,sticky:y="partial",hideWhenDetached:w=!1,updatePositionStrategy:S="optimized",onPlaced:N,...j}=t,R=gw(op,r),[T,E]=v.useState(null),_=bt(a,I=>E(I)),[k,L]=v.useState(null),z=lp(k),C=z?.width??0,U=z?.height??0,K=s+(u!=="center"?"-"+u:""),Z=typeof x=="number"?x:{top:0,right:0,bottom:0,left:0,...x},re=Array.isArray(p)?p:[p],ie=re.length>0,le={padding:Z,boundary:re.filter(lD),altBoundary:ie},{refs:P,floatingStyles:F,placement:M,isPositioned:V,middlewareData:H}=qM({strategy:"fixed",placement:K,whileElementsMounted:(...I)=>DM(...I,{animationFrame:S==="always"}),elements:{reference:R.anchor},middleware:[GM({mainAxis:o+U,alignmentAxis:d}),m&&KM({mainAxis:!0,crossAxis:!1,limiter:y==="partial"?YM():void 0,...le}),m&&XM({...le}),QM({...le,apply:({elements:I,rects:xe,availableWidth:be,availableHeight:Ce})=>{const{width:Fe,height:Ue}=xe.reference,_t=I.floating.style;_t.setProperty("--radix-popper-available-width",`${be}px`),_t.setProperty("--radix-popper-available-height",`${Ce}px`),_t.setProperty("--radix-popper-anchor-width",`${Fe}px`),_t.setProperty("--radix-popper-anchor-height",`${Ue}px`)}}),k&&JM({element:k,padding:f}),sD({arrowWidth:C,arrowHeight:U}),w&&ZM({strategy:"referenceHidden",...le})]}),[oe,me]=_w(M),O=qr(N);fn(()=>{V&&O?.()},[V,O]);const D=H.arrow?.x,G=H.arrow?.y,Q=H.arrow?.centerOffset!==0,[ae,ve]=v.useState();return fn(()=>{T&&ve(window.getComputedStyle(T).zIndex)},[T]),c.jsx("div",{ref:P.setFloating,"data-radix-popper-content-wrapper":"",style:{...F,transform:V?F.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:ae,"--radix-popper-transform-origin":[H.transformOrigin?.x,H.transformOrigin?.y].join(" "),...H.hide?.referenceHidden&&{visibility:"hidden",pointerEvents:"none"}},dir:t.dir,children:c.jsx(nD,{scope:r,placedSide:oe,onArrowChange:L,arrowX:D,arrowY:G,shouldHideArrow:Q,children:c.jsx(We.div,{"data-side":oe,"data-align":me,...j,ref:_,style:{...j.style,animation:V?void 0:"none"}})})})});bw.displayName=op;var ww="PopperArrow",rD={top:"bottom",right:"left",bottom:"top",left:"right"},Sw=v.forwardRef(function(a,r){const{__scopePopper:s,...o}=a,u=aD(ww,s),d=rD[u.placedSide];return c.jsx("span",{ref:u.onArrowChange,style:{position:"absolute",left:u.arrowX,top:u.arrowY,[d]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[u.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[u.placedSide],visibility:u.shouldHideArrow?"hidden":void 0},children:c.jsx(eD,{...o,ref:r,style:{...o.style,display:"block"}})})});Sw.displayName=ww;function lD(t){return t!==null}var sD=t=>({name:"transformOrigin",options:t,fn(a){const{placement:r,rects:s,middlewareData:o}=a,d=o.arrow?.centerOffset!==0,f=d?0:t.arrowWidth,m=d?0:t.arrowHeight,[p,x]=_w(r),y={start:"0%",center:"50%",end:"100%"}[x],w=(o.arrow?.x??0)+f/2,S=(o.arrow?.y??0)+m/2;let N="",j="";return p==="bottom"?(N=d?y:`${w}px`,j=`${-m}px`):p==="top"?(N=d?y:`${w}px`,j=`${s.floating.height+m}px`):p==="right"?(N=`${-m}px`,j=d?y:`${S}px`):p==="left"&&(N=`${s.floating.width+m}px`,j=d?y:`${S}px`),{data:{x:N,y:j}}}});function _w(t){const[a,r="center"]=t.split("-");return[a,r]}var ip=vw,Iu=xw,cp=bw,up=Sw,jw=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"}),oD="VisuallyHidden",Nw=v.forwardRef((t,a)=>c.jsx(We.span,{...t,ref:a,style:{...jw,...t.style}}));Nw.displayName=oD;var iD=Nw,[qu]=Ra("Tooltip",[Gs]),Vu=Gs(),Cw="TooltipProvider",cD=700,mm="tooltip.open",[uD,dp]=qu(Cw),Ew=t=>{const{__scopeTooltip:a,delayDuration:r=cD,skipDelayDuration:s=300,disableHoverableContent:o=!1,children:u}=t,d=v.useRef(!0),f=v.useRef(!1),m=v.useRef(0);return v.useEffect(()=>{const p=m.current;return()=>window.clearTimeout(p)},[]),c.jsx(uD,{scope:a,isOpenDelayedRef:d,delayDuration:r,onOpen:v.useCallback(()=>{window.clearTimeout(m.current),d.current=!1},[]),onClose:v.useCallback(()=>{window.clearTimeout(m.current),m.current=window.setTimeout(()=>d.current=!0,s)},[s]),isPointerInTransitRef:f,onPointerInTransitChange:v.useCallback(p=>{f.current=p},[]),disableHoverableContent:o,children:u})};Ew.displayName=Cw;var hi="Tooltip",[dD,Gu]=qu(hi),Rw=t=>{const{__scopeTooltip:a,children:r,open:s,defaultOpen:o,onOpenChange:u,disableHoverableContent:d,delayDuration:f}=t,m=dp(hi,t.__scopeTooltip),p=Vu(a),[x,y]=v.useState(null),w=dn(),S=v.useRef(0),N=d??m.disableHoverableContent,j=f??m.delayDuration,R=v.useRef(!1),[T,E]=tr({prop:s,defaultProp:o??!1,onChange:C=>{C?(m.onOpen(),document.dispatchEvent(new CustomEvent(mm))):m.onClose(),u?.(C)},caller:hi}),_=v.useMemo(()=>T?R.current?"delayed-open":"instant-open":"closed",[T]),k=v.useCallback(()=>{window.clearTimeout(S.current),S.current=0,R.current=!1,E(!0)},[E]),L=v.useCallback(()=>{window.clearTimeout(S.current),S.current=0,E(!1)},[E]),z=v.useCallback(()=>{window.clearTimeout(S.current),S.current=window.setTimeout(()=>{R.current=!0,E(!0),S.current=0},j)},[j,E]);return v.useEffect(()=>()=>{S.current&&(window.clearTimeout(S.current),S.current=0)},[]),c.jsx(ip,{...p,children:c.jsx(dD,{scope:a,contentId:w,open:T,stateAttribute:_,trigger:x,onTriggerChange:y,onTriggerEnter:v.useCallback(()=>{m.isOpenDelayedRef.current?z():k()},[m.isOpenDelayedRef,z,k]),onTriggerLeave:v.useCallback(()=>{N?L():(window.clearTimeout(S.current),S.current=0)},[L,N]),onOpen:k,onClose:L,disableHoverableContent:N,children:r})})};Rw.displayName=hi;var pm="TooltipTrigger",Tw=v.forwardRef((t,a)=>{const{__scopeTooltip:r,...s}=t,o=Gu(pm,r),u=dp(pm,r),d=Vu(r),f=v.useRef(null),m=bt(a,f,o.onTriggerChange),p=v.useRef(!1),x=v.useRef(!1),y=v.useCallback(()=>p.current=!1,[]);return v.useEffect(()=>()=>document.removeEventListener("pointerup",y),[y]),c.jsx(Iu,{asChild:!0,...d,children:c.jsx(We.button,{"aria-describedby":o.open?o.contentId:void 0,"data-state":o.stateAttribute,...s,ref:m,onPointerMove:Ie(t.onPointerMove,w=>{w.pointerType!=="touch"&&!x.current&&!u.isPointerInTransitRef.current&&(o.onTriggerEnter(),x.current=!0)}),onPointerLeave:Ie(t.onPointerLeave,()=>{o.onTriggerLeave(),x.current=!1}),onPointerDown:Ie(t.onPointerDown,()=>{o.open&&o.onClose(),p.current=!0,document.addEventListener("pointerup",y,{once:!0})}),onFocus:Ie(t.onFocus,()=>{p.current||o.onOpen()}),onBlur:Ie(t.onBlur,o.onClose),onClick:Ie(t.onClick,o.onClose)})})});Tw.displayName=pm;var fD="TooltipPortal",[mL,hD]=qu(fD,{forceMount:void 0}),zs="TooltipContent",Ow=v.forwardRef((t,a)=>{const r=hD(zs,t.__scopeTooltip),{forceMount:s=r.forceMount,side:o="top",...u}=t,d=Gu(zs,t.__scopeTooltip);return c.jsx(ir,{present:s||d.open,children:d.disableHoverableContent?c.jsx(Aw,{side:o,...u,ref:a}):c.jsx(mD,{side:o,...u,ref:a})})}),mD=v.forwardRef((t,a)=>{const r=Gu(zs,t.__scopeTooltip),s=dp(zs,t.__scopeTooltip),o=v.useRef(null),u=bt(a,o),[d,f]=v.useState(null),{trigger:m,onClose:p}=r,x=o.current,{onPointerInTransitChange:y}=s,w=v.useCallback(()=>{f(null),y(!1)},[y]),S=v.useCallback((N,j)=>{const R=N.currentTarget,T={x:N.clientX,y:N.clientY},E=xD(T,R.getBoundingClientRect()),_=bD(T,E),k=wD(j.getBoundingClientRect()),L=_D([..._,...k]);f(L),y(!0)},[y]);return v.useEffect(()=>()=>w(),[w]),v.useEffect(()=>{if(m&&x){const N=R=>S(R,x),j=R=>S(R,m);return m.addEventListener("pointerleave",N),x.addEventListener("pointerleave",j),()=>{m.removeEventListener("pointerleave",N),x.removeEventListener("pointerleave",j)}}},[m,x,S,w]),v.useEffect(()=>{if(d){const N=j=>{const R=j.target,T={x:j.clientX,y:j.clientY},E=m?.contains(R)||x?.contains(R),_=!SD(T,d);E?w():_&&(w(),p())};return document.addEventListener("pointermove",N),()=>document.removeEventListener("pointermove",N)}},[m,x,d,p,w]),c.jsx(Aw,{...t,ref:u})}),[pD,gD]=qu(hi,{isInside:!1}),vD=gA("TooltipContent"),Aw=v.forwardRef((t,a)=>{const{__scopeTooltip:r,children:s,"aria-label":o,onEscapeKeyDown:u,onPointerDownOutside:d,...f}=t,m=Gu(zs,r),p=Vu(r),{onClose:x}=m;return v.useEffect(()=>(document.addEventListener(mm,x),()=>document.removeEventListener(mm,x)),[x]),v.useEffect(()=>{if(m.trigger){const y=w=>{w.target?.contains(m.trigger)&&x()};return window.addEventListener("scroll",y,{capture:!0}),()=>window.removeEventListener("scroll",y,{capture:!0})}},[m.trigger,x]),c.jsx(xi,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:u,onPointerDownOutside:d,onFocusOutside:y=>y.preventDefault(),onDismiss:x,children:c.jsxs(cp,{"data-state":m.stateAttribute,...p,...f,ref:a,style:{...f.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:[c.jsx(vD,{children:s}),c.jsx(pD,{scope:r,isInside:!0,children:c.jsx(iD,{id:m.contentId,role:"tooltip",children:o||s})})]})})});Ow.displayName=zs;var kw="TooltipArrow",yD=v.forwardRef((t,a)=>{const{__scopeTooltip:r,...s}=t,o=Vu(r);return gD(kw,r).isInside?null:c.jsx(up,{...o,...s,ref:a})});yD.displayName=kw;function xD(t,a){const r=Math.abs(a.top-t.y),s=Math.abs(a.bottom-t.y),o=Math.abs(a.right-t.x),u=Math.abs(a.left-t.x);switch(Math.min(r,s,o,u)){case u:return"left";case o:return"right";case r:return"top";case s:return"bottom";default:throw new Error("unreachable")}}function bD(t,a,r=5){const s=[];switch(a){case"top":s.push({x:t.x-r,y:t.y+r},{x:t.x+r,y:t.y+r});break;case"bottom":s.push({x:t.x-r,y:t.y-r},{x:t.x+r,y:t.y-r});break;case"left":s.push({x:t.x+r,y:t.y-r},{x:t.x+r,y:t.y+r});break;case"right":s.push({x:t.x-r,y:t.y-r},{x:t.x-r,y:t.y+r});break}return s}function wD(t){const{top:a,right:r,bottom:s,left:o}=t;return[{x:o,y:a},{x:r,y:a},{x:r,y:s},{x:o,y:s}]}function SD(t,a){const{x:r,y:s}=t;let o=!1;for(let u=0,d=a.length-1;u<a.length;d=u++){const f=a[u],m=a[d],p=f.x,x=f.y,y=m.x,w=m.y;x>s!=w>s&&r<(y-p)*(s-x)/(w-x)+p&&(o=!o)}return o}function _D(t){const a=t.slice();return a.sort((r,s)=>r.x<s.x?-1:r.x>s.x?1:r.y<s.y?-1:r.y>s.y?1:0),jD(a)}function jD(t){if(t.length<=1)return t.slice();const a=[];for(let s=0;s<t.length;s++){const o=t[s];for(;a.length>=2;){const u=a[a.length-1],d=a[a.length-2];if((u.x-d.x)*(o.y-d.y)>=(u.y-d.y)*(o.x-d.x))a.pop();else break}a.push(o)}a.pop();const r=[];for(let s=t.length-1;s>=0;s--){const o=t[s];for(;r.length>=2;){const u=r[r.length-1],d=r[r.length-2];if((u.x-d.x)*(o.y-d.y)>=(u.y-d.y)*(o.x-d.x))r.pop();else break}r.push(o)}return r.pop(),a.length===1&&r.length===1&&a[0].x===r[0].x&&a[0].y===r[0].y?a:a.concat(r)}var ND=Ew,CD=Rw,ED=Tw,Mw=Ow;const wu=ND,ri=CD,li=ED,Ms=v.forwardRef(({className:t,sideOffset:a=4,...r},s)=>c.jsx(Mw,{ref:s,sideOffset:a,className:Ke("z-50 overflow-hidden rounded-md bg-gray-900 px-3 py-1.5 text-xs text-white animate-in fade-in-0 zoom-in-95","data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95","data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2","data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",t),...r}));Ms.displayName=Mw.displayName;var X0=1,RD=.9,TD=.8,OD=.17,Fh=.1,Ih=.999,AD=.9999,kD=.99,MD=/[\\\/_+.#"@\[\(\{&]/,DD=/[\\\/_+.#"@\[\(\{&]/g,LD=/[\s-]/,Dw=/[\s-]/g;function gm(t,a,r,s,o,u,d){if(u===a.length)return o===t.length?X0:kD;var f=`${o},${u}`;if(d[f]!==void 0)return d[f];for(var m=s.charAt(u),p=r.indexOf(m,o),x=0,y,w,S,N;p>=0;)y=gm(t,a,r,s,p+1,u+1,d),y>x&&(p===o?y*=X0:MD.test(t.charAt(p-1))?(y*=TD,S=t.slice(o,p-1).match(DD),S&&o>0&&(y*=Math.pow(Ih,S.length))):LD.test(t.charAt(p-1))?(y*=RD,N=t.slice(o,p-1).match(Dw),N&&o>0&&(y*=Math.pow(Ih,N.length))):(y*=OD,o>0&&(y*=Math.pow(Ih,p-o))),t.charAt(p)!==a.charAt(u)&&(y*=AD)),(y<Fh&&r.charAt(p-1)===s.charAt(u+1)||s.charAt(u+1)===s.charAt(u)&&r.charAt(p-1)!==s.charAt(u))&&(w=gm(t,a,r,s,p+1,u+2,d),w*Fh>y&&(y=w*Fh)),y>x&&(x=y),p=r.indexOf(m,p+1);return d[f]=x,x}function Q0(t){return t.toLowerCase().replace(Dw," ")}function zD(t,a,r){return t=r&&r.length>0?`${t+" "+r.join(" ")}`:t,gm(t,a,Q0(t),Q0(a),0,0,{})}var Go='[cmdk-group=""]',qh='[cmdk-group-items=""]',PD='[cmdk-group-heading=""]',Lw='[cmdk-item=""]',Z0=`${Lw}:not([aria-disabled="true"])`,vm="cmdk-item-select",_s="data-value",UD=(t,a,r)=>zD(t,a,r),zw=v.createContext(void 0),wi=()=>v.useContext(zw),Pw=v.createContext(void 0),fp=()=>v.useContext(Pw),Uw=v.createContext(void 0),Hw=v.forwardRef((t,a)=>{let r=js(()=>{var D,G;return{search:"",value:(G=(D=t.value)!=null?D:t.defaultValue)!=null?G:"",selectedItemId:void 0,filtered:{count:0,items:new Map,groups:new Set}}}),s=js(()=>new Set),o=js(()=>new Map),u=js(()=>new Map),d=js(()=>new Set),f=Bw(t),{label:m,children:p,value:x,onValueChange:y,filter:w,shouldFilter:S,loop:N,disablePointerSelection:j=!1,vimBindings:R=!0,...T}=t,E=dn(),_=dn(),k=dn(),L=v.useRef(null),z=XD();Al(()=>{if(x!==void 0){let D=x.trim();r.current.value=D,C.emit()}},[x]),Al(()=>{z(6,le)},[]);let C=v.useMemo(()=>({subscribe:D=>(d.current.add(D),()=>d.current.delete(D)),snapshot:()=>r.current,setState:(D,G,Q)=>{var ae,ve,I,xe;if(!Object.is(r.current[D],G)){if(r.current[D]=G,D==="search")ie(),Z(),z(1,re);else if(D==="value"){if(document.activeElement.hasAttribute("cmdk-input")||document.activeElement.hasAttribute("cmdk-root")){let be=document.getElementById(k);be?be.focus():(ae=document.getElementById(E))==null||ae.focus()}if(z(7,()=>{var be;r.current.selectedItemId=(be=P())==null?void 0:be.id,C.emit()}),Q||z(5,le),((ve=f.current)==null?void 0:ve.value)!==void 0){let be=G??"";(xe=(I=f.current).onValueChange)==null||xe.call(I,be);return}}C.emit()}},emit:()=>{d.current.forEach(D=>D())}}),[]),U=v.useMemo(()=>({value:(D,G,Q)=>{var ae;G!==((ae=u.current.get(D))==null?void 0:ae.value)&&(u.current.set(D,{value:G,keywords:Q}),r.current.filtered.items.set(D,K(G,Q)),z(2,()=>{Z(),C.emit()}))},item:(D,G)=>(s.current.add(D),G&&(o.current.has(G)?o.current.get(G).add(D):o.current.set(G,new Set([D]))),z(3,()=>{ie(),Z(),r.current.value||re(),C.emit()}),()=>{u.current.delete(D),s.current.delete(D),r.current.filtered.items.delete(D);let Q=P();z(4,()=>{ie(),Q?.getAttribute("id")===D&&re(),C.emit()})}),group:D=>(o.current.has(D)||o.current.set(D,new Set),()=>{u.current.delete(D),o.current.delete(D)}),filter:()=>f.current.shouldFilter,label:m||t["aria-label"],getDisablePointerSelection:()=>f.current.disablePointerSelection,listId:E,inputId:k,labelId:_,listInnerRef:L}),[]);function K(D,G){var Q,ae;let ve=(ae=(Q=f.current)==null?void 0:Q.filter)!=null?ae:UD;return D?ve(D,r.current.search,G):0}function Z(){if(!r.current.search||f.current.shouldFilter===!1)return;let D=r.current.filtered.items,G=[];r.current.filtered.groups.forEach(ae=>{let ve=o.current.get(ae),I=0;ve.forEach(xe=>{let be=D.get(xe);I=Math.max(be,I)}),G.push([ae,I])});let Q=L.current;F().sort((ae,ve)=>{var I,xe;let be=ae.getAttribute("id"),Ce=ve.getAttribute("id");return((I=D.get(Ce))!=null?I:0)-((xe=D.get(be))!=null?xe:0)}).forEach(ae=>{let ve=ae.closest(qh);ve?ve.appendChild(ae.parentElement===ve?ae:ae.closest(`${qh} > *`)):Q.appendChild(ae.parentElement===Q?ae:ae.closest(`${qh} > *`))}),G.sort((ae,ve)=>ve[1]-ae[1]).forEach(ae=>{var ve;let I=(ve=L.current)==null?void 0:ve.querySelector(`${Go}[${_s}="${encodeURIComponent(ae[0])}"]`);I?.parentElement.appendChild(I)})}function re(){let D=F().find(Q=>Q.getAttribute("aria-disabled")!=="true"),G=D?.getAttribute(_s);C.setState("value",G||void 0)}function ie(){var D,G,Q,ae;if(!r.current.search||f.current.shouldFilter===!1){r.current.filtered.count=s.current.size;return}r.current.filtered.groups=new Set;let ve=0;for(let I of s.current){let xe=(G=(D=u.current.get(I))==null?void 0:D.value)!=null?G:"",be=(ae=(Q=u.current.get(I))==null?void 0:Q.keywords)!=null?ae:[],Ce=K(xe,be);r.current.filtered.items.set(I,Ce),Ce>0&&ve++}for(let[I,xe]of o.current)for(let be of xe)if(r.current.filtered.items.get(be)>0){r.current.filtered.groups.add(I);break}r.current.filtered.count=ve}function le(){var D,G,Q;let ae=P();ae&&(((D=ae.parentElement)==null?void 0:D.firstChild)===ae&&((Q=(G=ae.closest(Go))==null?void 0:G.querySelector(PD))==null||Q.scrollIntoView({block:"nearest"})),ae.scrollIntoView({block:"nearest"}))}function P(){var D;return(D=L.current)==null?void 0:D.querySelector(`${Lw}[aria-selected="true"]`)}function F(){var D;return Array.from(((D=L.current)==null?void 0:D.querySelectorAll(Z0))||[])}function M(D){let G=F()[D];G&&C.setState("value",G.getAttribute(_s))}function V(D){var G;let Q=P(),ae=F(),ve=ae.findIndex(xe=>xe===Q),I=ae[ve+D];(G=f.current)!=null&&G.loop&&(I=ve+D<0?ae[ae.length-1]:ve+D===ae.length?ae[0]:ae[ve+D]),I&&C.setState("value",I.getAttribute(_s))}function H(D){let G=P(),Q=G?.closest(Go),ae;for(;Q&&!ae;)Q=D>0?KD(Q,Go):YD(Q,Go),ae=Q?.querySelector(Z0);ae?C.setState("value",ae.getAttribute(_s)):V(D)}let oe=()=>M(F().length-1),me=D=>{D.preventDefault(),D.metaKey?oe():D.altKey?H(1):V(1)},O=D=>{D.preventDefault(),D.metaKey?M(0):D.altKey?H(-1):V(-1)};return v.createElement(or.div,{ref:a,tabIndex:-1,...T,"cmdk-root":"",onKeyDown:D=>{var G;(G=T.onKeyDown)==null||G.call(T,D);let Q=D.nativeEvent.isComposing||D.keyCode===229;if(!(D.defaultPrevented||Q))switch(D.key){case"n":case"j":{R&&D.ctrlKey&&me(D);break}case"ArrowDown":{me(D);break}case"p":case"k":{R&&D.ctrlKey&&O(D);break}case"ArrowUp":{O(D);break}case"Home":{D.preventDefault(),M(0);break}case"End":{D.preventDefault(),oe();break}case"Enter":{D.preventDefault();let ae=P();if(ae){let ve=new Event(vm);ae.dispatchEvent(ve)}}}}},v.createElement("label",{"cmdk-label":"",htmlFor:U.inputId,id:U.labelId,style:ZD},m),Ku(t,D=>v.createElement(Pw.Provider,{value:C},v.createElement(zw.Provider,{value:U},D))))}),HD=v.forwardRef((t,a)=>{var r,s;let o=dn(),u=v.useRef(null),d=v.useContext(Uw),f=wi(),m=Bw(t),p=(s=(r=m.current)==null?void 0:r.forceMount)!=null?s:d?.forceMount;Al(()=>{if(!p)return f.item(o,d?.id)},[p]);let x=$w(o,u,[t.value,t.children,u],t.keywords),y=fp(),w=Yr(z=>z.value&&z.value===x.current),S=Yr(z=>p||f.filter()===!1?!0:z.search?z.filtered.items.get(o)>0:!0);v.useEffect(()=>{let z=u.current;if(!(!z||t.disabled))return z.addEventListener(vm,N),()=>z.removeEventListener(vm,N)},[S,t.onSelect,t.disabled]);function N(){var z,C;j(),(C=(z=m.current).onSelect)==null||C.call(z,x.current)}function j(){y.setState("value",x.current,!0)}if(!S)return null;let{disabled:R,value:T,onSelect:E,forceMount:_,keywords:k,...L}=t;return v.createElement(or.div,{ref:Fr(u,a),...L,id:o,"cmdk-item":"",role:"option","aria-disabled":!!R,"aria-selected":!!w,"data-disabled":!!R,"data-selected":!!w,onPointerMove:R||f.getDisablePointerSelection()?void 0:j,onClick:R?void 0:N},t.children)}),BD=v.forwardRef((t,a)=>{let{heading:r,children:s,forceMount:o,...u}=t,d=dn(),f=v.useRef(null),m=v.useRef(null),p=dn(),x=wi(),y=Yr(S=>o||x.filter()===!1?!0:S.search?S.filtered.groups.has(d):!0);Al(()=>x.group(d),[]),$w(d,f,[t.value,t.heading,m]);let w=v.useMemo(()=>({id:d,forceMount:o}),[o]);return v.createElement(or.div,{ref:Fr(f,a),...u,"cmdk-group":"",role:"presentation",hidden:y?void 0:!0},r&&v.createElement("div",{ref:m,"cmdk-group-heading":"","aria-hidden":!0,id:p},r),Ku(t,S=>v.createElement("div",{"cmdk-group-items":"",role:"group","aria-labelledby":r?p:void 0},v.createElement(Uw.Provider,{value:w},S))))}),$D=v.forwardRef((t,a)=>{let{alwaysRender:r,...s}=t,o=v.useRef(null),u=Yr(d=>!d.search);return!r&&!u?null:v.createElement(or.div,{ref:Fr(o,a),...s,"cmdk-separator":"",role:"separator"})}),FD=v.forwardRef((t,a)=>{let{onValueChange:r,...s}=t,o=t.value!=null,u=fp(),d=Yr(p=>p.search),f=Yr(p=>p.selectedItemId),m=wi();return v.useEffect(()=>{t.value!=null&&u.setState("search",t.value)},[t.value]),v.createElement(or.input,{ref:a,...s,"cmdk-input":"",autoComplete:"off",autoCorrect:"off",spellCheck:!1,"aria-autocomplete":"list",role:"combobox","aria-expanded":!0,"aria-controls":m.listId,"aria-labelledby":m.labelId,"aria-activedescendant":f,id:m.inputId,type:"text",value:o?t.value:d,onChange:p=>{o||u.setState("search",p.target.value),r?.(p.target.value)}})}),ID=v.forwardRef((t,a)=>{let{children:r,label:s="Suggestions",...o}=t,u=v.useRef(null),d=v.useRef(null),f=Yr(p=>p.selectedItemId),m=wi();return v.useEffect(()=>{if(d.current&&u.current){let p=d.current,x=u.current,y,w=new ResizeObserver(()=>{y=requestAnimationFrame(()=>{let S=p.offsetHeight;x.style.setProperty("--cmdk-list-height",S.toFixed(1)+"px")})});return w.observe(p),()=>{cancelAnimationFrame(y),w.unobserve(p)}}},[]),v.createElement(or.div,{ref:Fr(u,a),...o,"cmdk-list":"",role:"listbox",tabIndex:-1,"aria-activedescendant":f,"aria-label":s,id:m.listId},Ku(t,p=>v.createElement("div",{ref:Fr(d,m.listInnerRef),"cmdk-list-sizer":""},p)))}),qD=v.forwardRef((t,a)=>{let{open:r,onOpenChange:s,overlayClassName:o,contentClassName:u,container:d,...f}=t;return v.createElement(J1,{open:r,onOpenChange:s},v.createElement(W1,{container:d},v.createElement(Zm,{"cmdk-overlay":"",className:o}),v.createElement(Jm,{"aria-label":t.label,"cmdk-dialog":"",className:u},v.createElement(Hw,{ref:a,...f}))))}),VD=v.forwardRef((t,a)=>Yr(r=>r.filtered.count===0)?v.createElement(or.div,{ref:a,...t,"cmdk-empty":"",role:"presentation"}):null),GD=v.forwardRef((t,a)=>{let{progress:r,children:s,label:o="Loading...",...u}=t;return v.createElement(or.div,{ref:a,...u,"cmdk-loading":"",role:"progressbar","aria-valuenow":r,"aria-valuemin":0,"aria-valuemax":100,"aria-label":o},Ku(t,d=>v.createElement("div",{"aria-hidden":!0},d)))}),Ks=Object.assign(Hw,{List:ID,Item:HD,Input:FD,Group:BD,Separator:$D,Dialog:qD,Empty:VD,Loading:GD});function KD(t,a){let r=t.nextElementSibling;for(;r;){if(r.matches(a))return r;r=r.nextElementSibling}}function YD(t,a){let r=t.previousElementSibling;for(;r;){if(r.matches(a))return r;r=r.previousElementSibling}}function Bw(t){let a=v.useRef(t);return Al(()=>{a.current=t}),a}var Al=typeof window>"u"?v.useEffect:v.useLayoutEffect;function js(t){let a=v.useRef();return a.current===void 0&&(a.current=t()),a}function Yr(t){let a=fp(),r=()=>t(a.snapshot());return v.useSyncExternalStore(a.subscribe,r,r)}function $w(t,a,r,s=[]){let o=v.useRef(),u=wi();return Al(()=>{var d;let f=(()=>{var p;for(let x of r){if(typeof x=="string")return x.trim();if(typeof x=="object"&&"current"in x)return x.current?(p=x.current.textContent)==null?void 0:p.trim():o.current}})(),m=s.map(p=>p.trim());u.value(t,f,m),(d=a.current)==null||d.setAttribute(_s,f),o.current=f}),o}var XD=()=>{let[t,a]=v.useState(),r=js(()=>new Map);return Al(()=>{r.current.forEach(s=>s()),r.current=new Map},[t]),(s,o)=>{r.current.set(s,o),a({})}};function QD(t){let a=t.type;return typeof a=="function"?a(t.props):"render"in a?a.render(t.props):t}function Ku({asChild:t,children:a},r){return t&&v.isValidElement(a)?v.cloneElement(QD(a),{ref:a.ref},r(a.props.children)):r(a)}var ZD={position:"absolute",width:"1px",height:"1px",padding:"0",margin:"-1px",overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",borderWidth:"0"};function hp({className:t,...a}){return c.jsx(Ks,{"data-slot":"command",className:Ke("bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md",t),...a})}function mp({className:t,...a}){return c.jsxs("div",{"data-slot":"command-input-wrapper",className:"flex h-9 items-center gap-2 border-b px-3",children:[c.jsx(Vm,{className:"size-4 shrink-0 opacity-50"}),c.jsx(Ks.Input,{"data-slot":"command-input",className:Ke("placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50",t),...a})]})}function pp({className:t,...a}){return c.jsx(Ks.List,{"data-slot":"command-list",className:Ke("max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto",t),...a})}function gp({...t}){return c.jsx(Ks.Empty,{"data-slot":"command-empty",className:"py-6 text-center text-sm",...t})}function vp({className:t,...a}){return c.jsx(Ks.Group,{"data-slot":"command-group",className:Ke("text-foreground [&_[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium",t),...a})}function yp({className:t,...a}){return c.jsx(Ks.Item,{"data-slot":"command-item",className:Ke("data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),...a})}var Yu="Popover",[Fw]=Ra(Yu,[Gs]),Si=Gs(),[JD,Qr]=Fw(Yu),Iw=t=>{const{__scopePopover:a,children:r,open:s,defaultOpen:o,onOpenChange:u,modal:d=!1}=t,f=Si(a),m=v.useRef(null),[p,x]=v.useState(!1),[y,w]=tr({prop:s,defaultProp:o??!1,onChange:u,caller:Yu});return c.jsx(ip,{...f,children:c.jsx(JD,{scope:a,contentId:dn(),triggerRef:m,open:y,onOpenChange:w,onOpenToggle:v.useCallback(()=>w(S=>!S),[w]),hasCustomAnchor:p,onCustomAnchorAdd:v.useCallback(()=>x(!0),[]),onCustomAnchorRemove:v.useCallback(()=>x(!1),[]),modal:d,children:r})})};Iw.displayName=Yu;var qw="PopoverAnchor",WD=v.forwardRef((t,a)=>{const{__scopePopover:r,...s}=t,o=Qr(qw,r),u=Si(r),{onCustomAnchorAdd:d,onCustomAnchorRemove:f}=o;return v.useEffect(()=>(d(),()=>f()),[d,f]),c.jsx(Iu,{...u,...s,ref:a})});WD.displayName=qw;var Vw="PopoverTrigger",Gw=v.forwardRef((t,a)=>{const{__scopePopover:r,...s}=t,o=Qr(Vw,r),u=Si(r),d=bt(a,o.triggerRef),f=c.jsx(We.button,{type:"button","aria-haspopup":"dialog","aria-expanded":o.open,"aria-controls":o.contentId,"data-state":Zw(o.open),...s,ref:d,onClick:Ie(t.onClick,o.onOpenToggle)});return o.hasCustomAnchor?f:c.jsx(Iu,{asChild:!0,...u,children:f})});Gw.displayName=Vw;var xp="PopoverPortal",[e4,t4]=Fw(xp,{forceMount:void 0}),Kw=t=>{const{__scopePopover:a,forceMount:r,children:s,container:o}=t,u=Qr(xp,a);return c.jsx(e4,{scope:a,forceMount:r,children:c.jsx(ir,{present:r||u.open,children:c.jsx(Lu,{asChild:!0,container:o,children:s})})})};Kw.displayName=xp;var Ps="PopoverContent",Yw=v.forwardRef((t,a)=>{const r=t4(Ps,t.__scopePopover),{forceMount:s=r.forceMount,...o}=t,u=Qr(Ps,t.__scopePopover);return c.jsx(ir,{present:s||u.open,children:u.modal?c.jsx(a4,{...o,ref:a}):c.jsx(r4,{...o,ref:a})})});Yw.displayName=Ps;var n4=Ds("PopoverContent.RemoveScroll"),a4=v.forwardRef((t,a)=>{const r=Qr(Ps,t.__scopePopover),s=v.useRef(null),o=bt(a,s),u=v.useRef(!1);return v.useEffect(()=>{const d=s.current;if(d)return Km(d)},[]),c.jsx(Pu,{as:n4,allowPinchZoom:!0,children:c.jsx(Xw,{...t,ref:o,trapFocus:r.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:Ie(t.onCloseAutoFocus,d=>{d.preventDefault(),u.current||r.triggerRef.current?.focus()}),onPointerDownOutside:Ie(t.onPointerDownOutside,d=>{const f=d.detail.originalEvent,m=f.button===0&&f.ctrlKey===!0,p=f.button===2||m;u.current=p},{checkForDefaultPrevented:!1}),onFocusOutside:Ie(t.onFocusOutside,d=>d.preventDefault(),{checkForDefaultPrevented:!1})})})}),r4=v.forwardRef((t,a)=>{const r=Qr(Ps,t.__scopePopover),s=v.useRef(!1),o=v.useRef(!1);return c.jsx(Xw,{...t,ref:a,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:u=>{t.onCloseAutoFocus?.(u),u.defaultPrevented||(s.current||r.triggerRef.current?.focus(),u.preventDefault()),s.current=!1,o.current=!1},onInteractOutside:u=>{t.onInteractOutside?.(u),u.defaultPrevented||(s.current=!0,u.detail.originalEvent.type==="pointerdown"&&(o.current=!0));const d=u.target;r.triggerRef.current?.contains(d)&&u.preventDefault(),u.detail.originalEvent.type==="focusin"&&o.current&&u.preventDefault()}})}),Xw=v.forwardRef((t,a)=>{const{__scopePopover:r,trapFocus:s,onOpenAutoFocus:o,onCloseAutoFocus:u,disableOutsidePointerEvents:d,onEscapeKeyDown:f,onPointerDownOutside:m,onFocusOutside:p,onInteractOutside:x,...y}=t,w=Qr(Ps,r),S=Si(r);return Gm(),c.jsx(Du,{asChild:!0,loop:!0,trapped:s,onMountAutoFocus:o,onUnmountAutoFocus:u,children:c.jsx(xi,{asChild:!0,disableOutsidePointerEvents:d,onInteractOutside:x,onEscapeKeyDown:f,onPointerDownOutside:m,onFocusOutside:p,onDismiss:()=>w.onOpenChange(!1),children:c.jsx(cp,{"data-state":Zw(w.open),role:"dialog",id:w.contentId,...S,...y,ref:a,style:{...y.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)"}})})})}),Qw="PopoverClose",l4=v.forwardRef((t,a)=>{const{__scopePopover:r,...s}=t,o=Qr(Qw,r);return c.jsx(We.button,{type:"button",...s,ref:a,onClick:Ie(t.onClick,()=>o.onOpenChange(!1))})});l4.displayName=Qw;var s4="PopoverArrow",o4=v.forwardRef((t,a)=>{const{__scopePopover:r,...s}=t,o=Si(r);return c.jsx(up,{...o,...s,ref:a})});o4.displayName=s4;function Zw(t){return t?"open":"closed"}var i4=Iw,c4=Gw,u4=Kw,d4=Yw;function Xu({...t}){return c.jsx(i4,{"data-slot":"popover",...t})}function Qu({...t}){return c.jsx(c4,{"data-slot":"popover-trigger",...t})}function Zu({className:t,align:a="center",sideOffset:r=4,...s}){return c.jsx(u4,{children:c.jsx(d4,{"data-slot":"popover-content",align:a,sideOffset:r,className:Ke("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden animate-fade-in",t),...s})})}function Ot({options:t,value:a,onChange:r,placeholder:s="Select an option...",searchPlaceholder:o="Search...",emptyPlaceholder:u="No options found."}){const[d,f]=v.useState(!1),m=t.find(p=>p.value===a);return c.jsxs(Xu,{open:d,onOpenChange:f,children:[c.jsx(Qu,{asChild:!0,children:c.jsxs(ye,{variant:"outline",role:"combobox","aria-expanded":d,className:"w-full justify-between transition-all-ease hover:scale-[1.02] active:scale-[0.98]",children:[m?m.label:s,c.jsx(qm,{className:"ml-2 h-4 w-4 shrink-0 opacity-50 transition-transform duration-200 group-data-[state=open]:rotate-180"})]})}),c.jsx(Zu,{className:"w-[--radix-popover-trigger-width] p-0 animate-fade-in",children:c.jsxs(hp,{children:[c.jsx(mp,{placeholder:o}),c.jsxs(pp,{children:[c.jsx(gp,{children:u}),c.jsx(vp,{children:t.map(p=>c.jsxs(yp,{value:p.value,onSelect:x=>{r(x===a?"":x),f(!1)},className:"transition-all-ease hover:bg-accent hover:text-accent-foreground",children:[c.jsx(Fs,{className:Ke("mr-2 h-4 w-4 transition-opacity",a===p.value?"opacity-100":"opacity-0")}),p.label]},p.value))})]})]})})]})}const f4=v.forwardRef(({options:t,value:a,onChange:r,onEnter:s,searchPlaceholder:o="Search...",emptyPlaceholder:u="No options found.",inputPlaceholder:d="Type or select..."},f)=>{const[m,p]=v.useState(!1),[x,y]=v.useState(a||""),w=v.useRef(null);v.useImperativeHandle(f,()=>w.current),v.useEffect(()=>{y(a||"")},[a]);const S=T=>{const E=T.target.value;y(E),r(E)},N=T=>{T.key==="Enter"&&x.trim()&&s&&(s(x.trim()),y(""))},j=T=>{y(T),r(T),s&&(s(T),y("")),p(!1)},R=()=>x;return v.useImperativeHandle(f,()=>({...w.current,value:x,getCurrentValue:R,clearInput:()=>{y(""),r("")}})),c.jsxs("div",{className:"relative",children:[c.jsx(at,{ref:w,value:x,onChange:S,onKeyDown:N,placeholder:d,className:"pr-10"}),c.jsxs(Xu,{open:m,onOpenChange:p,children:[c.jsx(Qu,{asChild:!0,children:c.jsx(ye,{variant:"ghost",size:"sm",className:"absolute right-0 top-0 h-full px-3 py-2 hover:bg-transparent",children:c.jsx(qm,{className:"h-4 w-4 opacity-50"})})}),c.jsx(Zu,{className:"w-[--radix-popover-trigger-width] p-0 animate-fade-in",children:c.jsxs(hp,{children:[c.jsx(mp,{placeholder:o}),c.jsxs(pp,{children:[c.jsx(gp,{children:u}),c.jsx(vp,{children:t.map(T=>c.jsxs(yp,{value:T.value,onSelect:()=>j(T.value),className:"transition-all-ease hover:bg-accent hover:text-accent-foreground",children:[c.jsx(Fs,{className:Ke("mr-2 h-4 w-4 transition-opacity",a===T.value?"opacity-100":"opacity-0")}),T.label]},T.value))})]})]})})]})]})});function h4(){const{t}=hn(),{config:a,setConfig:r}=Xr(),[s,o]=v.useState(!1),[u,d]=v.useState(null),[f,m]=v.useState(null),[p,x]=v.useState({}),[y,w]=v.useState({}),[S,N]=v.useState({}),[j,R]=v.useState([]),[T,E]=v.useState(null),[_,k]=v.useState(!1),[L,z]=v.useState([]),[C,U]=v.useState({}),[K,Z]=v.useState(null),[re,ie]=v.useState(null),[le,P]=v.useState(""),[F,M]=v.useState([]),[V,H]=v.useState([]),oe=v.useRef(null);if(v.useEffect(()=>{(async()=>{try{const he=await fetch("https://pub-0dc3e1677e894f07bbea11b17a29e032.r2.dev/providers.json");if(he.ok){const pe=await he.json();z(pe||[])}else console.error("Failed to fetch provider templates")}catch(he){console.error("Failed to fetch provider templates:",he)}})()},[]),v.useEffect(()=>{(async()=>{try{const he=await Je.get("/transformers");R(he.transformers)}catch(he){console.error("Failed to fetch transformers:",he)}})()},[]),v.useEffect(()=>{const ce=async()=>{try{const pe=await Je.getProviderHealth();M(pe.states||[])}catch(pe){console.error("Failed to fetch provider health:",pe)}};ce();const he=setInterval(ce,3e4);return()=>clearInterval(he)},[]),v.useEffect(()=>{const ce=async()=>{try{const pe=await Je.getProviderQuota();H(pe.quotas||[])}catch(pe){console.error("Failed to fetch provider quota:",pe)}};ce();const he=setInterval(ce,3e4);return()=>clearInterval(he)},[]),!a)return c.jsxs(oa,{className:"flex h-full flex-col rounded-lg border shadow-sm",children:[c.jsx(ja,{className:"flex flex-row items-center justify-between border-b p-4",children:c.jsx(Na,{className:"text-lg",children:t("providers.title")})}),c.jsx(ia,{className:"flex-grow flex items-center justify-center p-4",children:c.jsx("div",{className:"text-gray-500",children:"Loading providers configuration..."})})]});const me=Array.isArray(a.Providers)?a.Providers:[],O=()=>{const ce={name:"",api_base_url:"",api_key:"",models:[]};d(a.Providers.length),E(ce),k(!0),U(he=>({...he,[a.Providers.length]:!1})),Z(null),ie(null)},D=ce=>{const he=me.indexOf(qt[ce]),pe=a.Providers[he];d(he),E(JSON.parse(JSON.stringify(pe))),k(!1),U(fe=>({...fe,[he]:!1})),Z(null),ie(null)},G=async()=>{if(!T)return;if(!T.name||T.name.trim()===""){ie(t("providers.name_required"));return}const ce=T.name.trim();if(a.Providers.some((pe,fe)=>!_&&fe===u?!1:pe.name.toLowerCase()===ce.toLowerCase())){ie(t("providers.name_duplicate"));return}if(!T.api_key||T.api_key.trim()===""){Z(t("providers.api_key_required"));return}if(Z(null),ie(null),u!==null&&T){const pe=[...a.Providers];_?pe.push(T):pe[u]=T;const fe={...a,Providers:pe};r(fe),o(!0);try{await Je.updateConfig(fe)}catch(Te){console.error("Failed to persist provider changes:",Te)}finally{o(!1)}}u!==null&&U(pe=>{const fe={...pe};return delete fe[u],fe}),d(null),E(null),k(!1)},Q=()=>{u!==null&&(x(ce=>{const he={...ce};return delete he[u],he}),U(ce=>{const he={...ce};return delete he[u],he})),d(null),E(null),k(!1),Z(null),ie(null)},ae=ce=>{m(ce)},ve=async ce=>{const he=me.indexOf(qt[ce]),pe=[...a.Providers];pe.splice(he,1);const fe={...a,Providers:pe};r(fe),m(null);try{await Je.updateConfig(fe)}catch(Te){console.error("Failed to persist provider removal:",Te)}},I=(ce,he,pe)=>{if(T){const fe={...T,[he]:pe};E(fe)}},xe=(ce,he)=>{if(!he||!T)return;const pe={...T};pe.transformer||(pe.transformer={use:[]}),pe.transformer.use=[...pe.transformer.use,he],E(pe)},be=(ce,he)=>{if(!T)return;const pe={...T};if(pe.transformer){const fe=[...pe.transformer.use];fe.splice(he,1),pe.transformer.use=fe,fe.length===0&&Object.keys(pe.transformer).length===1&&delete pe.transformer}E(pe)},Ce=(ce,he,pe)=>{if(!pe||!T)return;const fe={...T};fe.transformer||(fe.transformer={use:[]}),fe.transformer[he]||(fe.transformer[he]={use:[]}),fe.transformer[he].use=[...fe.transformer[he].use,pe],E(fe)},Fe=(ce,he,pe)=>{if(!T)return;const fe={...T};if(fe.transformer&&fe.transformer[he]){const Te=[...fe.transformer[he].use];Te.splice(pe,1),fe.transformer[he].use=Te,Te.length===0&&Object.keys(fe.transformer[he]).length===1&&delete fe.transformer[he]}E(fe)},Ue=(ce,he,pe,fe)=>{if(!T)return;const Te={...T};if(Te.transformer||(Te.transformer={use:[]}),Te.transformer.use&&Te.transformer.use.length>he){const $e=Te.transformer.use[he];if(Array.isArray($e)){const qe=[...$e];if(qe.length>1&&typeof qe[1]=="object"&&qe[1]!==null){const Zt={...qe[1],[pe]:fe};qe[1]=Zt}else if(qe.length>1){const lt={[pe]:fe};qe.splice(1,qe.length-1,lt)}else{const lt={[pe]:fe};qe.push(lt)}Te.transformer.use[he]=qe}else{const qe={[pe]:fe};Te.transformer.use[he]=[$e,qe]}}E(Te)},_t=(ce,he,pe)=>{if(!T)return;const fe={...T};if(!fe.transformer?.use||fe.transformer.use.length<=he)return;const Te=fe.transformer.use[he];if(Array.isArray(Te)&&Te.length>1){const $e=[...Te];if(typeof $e[1]=="object"&&$e[1]!==null){const qe={...$e[1]};delete qe[pe],Object.keys(qe).length===0?$e.splice(1,1):$e[1]=qe,fe.transformer.use[he]=$e,E(fe)}}},At=(ce,he,pe,fe,Te)=>{if(!T)return;const $e={...T};if($e.transformer||($e.transformer={use:[]}),$e.transformer[he]||($e.transformer[he]={use:[]}),$e.transformer[he].use&&$e.transformer[he].use.length>pe){const qe=$e.transformer[he].use[pe];if(Array.isArray(qe)){const lt=[...qe];if(lt.length>1&&typeof lt[1]=="object"&<[1]!==null){const Wr={...lt[1],[fe]:Te};lt[1]=Wr}else if(lt.length>1){const Zt={[fe]:Te};lt.splice(1,lt.length-1,Zt)}else{const Zt={[fe]:Te};lt.push(Zt)}$e.transformer[he].use[pe]=lt}else{const lt={[fe]:Te};$e.transformer[he].use[pe]=[qe,lt]}}E($e)},Se=(ce,he,pe,fe)=>{if(!T)return;const Te={...T};if(!Te.transformer?.[he]?.use||Te.transformer[he].use.length<=pe)return;const $e=Te.transformer[he].use[pe];if(Array.isArray($e)&&$e.length>1){const qe=[...$e];if(typeof qe[1]=="object"&&qe[1]!==null){const lt={...qe[1]};delete lt[fe],Object.keys(lt).length===0?qe.splice(1,1):qe[1]=lt,Te.transformer[he].use[pe]=qe,E(Te)}}},ze=(ce,he)=>{if(!he.trim()||!T)return;const pe={...T},fe=Array.isArray(pe.models)?[...pe.models]:[];fe.includes(he.trim())||(fe.push(he.trim()),pe.models=fe,E(pe))},Ze=ce=>{if(ce)try{const he=JSON.parse(ce);if(he){const pe=T?.name,fe=JSON.parse(JSON.stringify(he));!_&&pe&&(fe.name=pe),E(fe)}}catch(he){console.error("Failed to parse template",he)}},et=(ce,he)=>{if(!T)return;const pe={...T},fe=Array.isArray(pe.models)?[...pe.models]:[];he>=0&&he<fe.length&&(fe.splice(he,1),pe.models=fe,E(pe))},tt=T||(u!==null?me[u]:null),qt=me.filter(ce=>{if(!le)return!0;const he=le.toLowerCase();return ce.name&&ce.name.toLowerCase().includes(he)||ce.api_base_url&&ce.api_base_url.toLowerCase().includes(he)?!0:ce.models&&Array.isArray(ce.models)?ce.models.some(pe=>pe&&pe.toLowerCase().includes(he)):!1});return c.jsxs(oa,{className:"flex h-full flex-col glass-card border-white/10 shadow-xl overflow-hidden",children:[c.jsxs(ja,{className:"flex flex-col border-b border-white/10 bg-white/5 p-5 gap-4",children:[c.jsxs("div",{className:"flex flex-row items-center justify-between",children:[c.jsxs(Na,{className:"text-xl font-bold tracking-tight text-foreground flex items-center gap-2",children:[t("providers.title"),c.jsxs("span",{className:"text-xs bg-primary/20 text-primary px-2 py-1 rounded-full font-bold ml-1",children:[qt.length,"/",me.length]})]}),c.jsxs(ye,{onClick:O,size:"sm",className:"h-9 px-4 rounded-xl",children:[c.jsx(Os,{className:"h-4 w-4 mr-1"}),t("providers.add")]})]}),c.jsxs("div",{className:"flex items-center gap-2",children:[c.jsxs("div",{className:"relative flex-1 group",children:[c.jsx(Vm,{className:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground/60 group-focus-within:text-primary transition-colors"}),c.jsx(at,{placeholder:t("providers.search"),value:le,onChange:ce=>P(ce.target.value),className:"pl-9 bg-white/5 border-white/10 focus:bg-white/10 transition-all rounded-xl h-10"})]}),le&&c.jsx(ye,{variant:"ghost",size:"icon",onClick:()=>P(""),className:"h-10 w-10 rounded-xl hover:bg-white/10",children:c.jsx(S1,{className:"h-4 w-4"})})]})]}),c.jsx(ia,{className:"flex-grow overflow-y-auto p-6 custom-scrollbar",children:c.jsx(Fk,{providers:qt,healthStates:F,quotaUsages:V,onEdit:D,onRemove:ae})}),c.jsx(xa,{open:u!==null,onOpenChange:ce=>{ce||Q()},children:c.jsxs(ra,{className:"max-h-[80vh] flex flex-col sm:max-w-2xl",children:[c.jsx(la,{children:c.jsx(sa,{children:t("providers.edit")})}),tt&&u!==null&&c.jsxs("div",{className:"space-y-4 p-4 overflow-y-auto flex-grow",children:[L.length>0&&c.jsxs("div",{className:"space-y-2",children:[c.jsx(Ee,{children:t("providers.import_from_template")}),c.jsx(Ot,{options:L.map(ce=>({label:ce.name,value:JSON.stringify(ce)})),value:"",onChange:Ze,placeholder:t("providers.select_template"),emptyPlaceholder:t("providers.no_templates_found")})]}),c.jsxs("div",{className:"space-y-2",children:[c.jsx(Ee,{htmlFor:"name",children:t("providers.name")}),c.jsx(at,{id:"name",value:tt.name||"",onChange:ce=>{I(u,"name",ce.target.value),re&&ie(null)},className:re?"border-red-500":""}),re&&c.jsx("p",{className:"text-sm text-red-500",children:re})]}),c.jsxs("div",{className:"space-y-2",children:[c.jsx(Ee,{htmlFor:"api_base_url",children:t("providers.api_base_url")}),c.jsx(at,{id:"api_base_url",value:tt.api_base_url||"",onChange:ce=>I(u,"api_base_url",ce.target.value)})]}),c.jsxs("div",{className:"space-y-2",children:[c.jsx(Ee,{htmlFor:"api_key",children:t("providers.api_key")}),c.jsxs("div",{className:"relative",children:[c.jsx(at,{id:"api_key",type:C[u||0]?"text":"password",value:tt.api_key||"",onChange:ce=>I(u,"api_key",ce.target.value),className:K?"border-red-500":""}),c.jsx(ye,{type:"button",variant:"ghost",size:"icon",className:"absolute right-2 top-1/2 transform -translate-y-1/2 h-8 w-8",onClick:()=>{const ce=u||0;U(he=>({...he,[ce]:!he[ce]}))},children:C[u||0]?c.jsx(gO,{className:"h-4 w-4"}):c.jsx(yO,{className:"h-4 w-4"})})]}),K&&c.jsx("p",{className:"text-sm text-red-500",children:K})]}),tt.api_base_url&&/bigmodel\.cn|api\.z\.ai|dashscope\.aliyuncs\.com|kimi\.com|moonshot\.cn|minimaxi\.com|minimax\.io/i.test(tt.api_base_url)&&c.jsxs("div",{className:"space-y-2",children:[c.jsxs("div",{className:"flex items-center gap-1",children:[c.jsx(Ee,{htmlFor:"quota_token",children:t("providers.quota_token")}),c.jsx(wu,{children:c.jsxs(ri,{children:[c.jsx(li,{asChild:!0,children:c.jsx(iO,{className:"h-3.5 w-3.5 text-gray-400 cursor-help"})}),c.jsx(Ms,{side:"top",className:"max-w-xs text-xs",children:t("providers.quota_token_tooltip")})]})})]}),c.jsx(at,{id:"quota_token",type:"password",placeholder:t("providers.quota_token_placeholder"),value:tt.quota_token||"",onChange:ce=>I(u,"quota_token",ce.target.value)})]}),c.jsxs("div",{className:"space-y-2",children:[c.jsx(Ee,{htmlFor:"models",children:t("providers.models")}),c.jsxs("div",{className:"space-y-2",children:[c.jsxs("div",{className:"flex gap-2",children:[c.jsx("div",{className:"flex-1",children:p[u]?c.jsx(f4,{ref:oe,options:(tt.models||[]).map(ce=>({label:ce,value:ce})),value:"",onChange:()=>{},onEnter:ce=>{u!==null&&ze(u,ce)},inputPlaceholder:t("providers.models_placeholder")}):c.jsx(at,{id:"models",placeholder:t("providers.models_placeholder"),onKeyDown:ce=>{ce.key==="Enter"&&ce.currentTarget.value.trim()&&u!==null&&(ze(u,ce.currentTarget.value),ce.currentTarget.value="")}})}),c.jsx(ye,{onClick:()=>{if(p[u]&&oe.current){const ce=oe.current,he=ce.getCurrentValue();he&&he.trim()&&u!==null&&(ze(u,he.trim()),ce.clearInput())}else{const ce=document.getElementById("models");ce&&ce.value.trim()&&u!==null&&(ze(u,ce.value),ce.value="")}},children:t("providers.add_model")})]}),c.jsx("div",{className:"flex flex-wrap gap-2 pt-2",children:(tt.models||[]).map((ce,he)=>c.jsxs(Gn,{variant:"outline",className:"font-normal flex items-center gap-1",children:[ce,c.jsx("button",{type:"button",className:"ml-1 rounded-full hover:bg-gray-200",onClick:()=>u!==null&&et(u,he),children:c.jsx(El,{className:"h-3 w-3"})})]},he))})]})]}),c.jsxs("div",{className:"space-y-2",children:[c.jsx(Ee,{children:t("providers.provider_transformer")}),c.jsx("div",{className:"flex gap-2",children:c.jsx(Ot,{options:j.map(ce=>({label:ce.name,value:ce.name})),value:"",onChange:ce=>{u!==null&&xe(u,ce)},placeholder:t("providers.select_transformer"),emptyPlaceholder:t("providers.no_transformers")})}),tt.transformer?.use&&tt.transformer.use.length>0&&c.jsxs("div",{className:"space-y-2 mt-2",children:[c.jsx("div",{className:"text-sm font-medium text-gray-700",children:t("providers.selected_transformers")}),tt.transformer.use.map((ce,he)=>c.jsxs("div",{className:"border rounded-md p-3",children:[c.jsxs("div",{className:"flex gap-2 items-center mb-2",children:[c.jsx("div",{className:"flex-1 bg-gray-50 rounded p-2 text-sm",children:typeof ce=="string"?ce:Array.isArray(ce)?String(ce[0]):String(ce)}),c.jsx(ye,{variant:"outline",size:"icon",onClick:()=>{u!==null&&be(u,he)},children:c.jsx(ca,{className:"h-4 w-4"})})]}),c.jsxs("div",{className:"mt-2 pl-4 border-l-2 border-gray-200",children:[c.jsx(Ee,{className:"text-sm",children:t("providers.transformer_parameters")}),c.jsxs("div",{className:"space-y-2 mt-1",children:[c.jsxs("div",{className:"flex gap-2",children:[c.jsx(at,{placeholder:t("providers.parameter_name"),value:y[`provider-${u}-transformer-${he}`]?.name||"",onChange:pe=>{const fe=`provider-${u}-transformer-${he}`;w(Te=>({...Te,[fe]:{...Te[fe]||{name:"",value:""},name:pe.target.value}}))}}),c.jsx(at,{placeholder:t("providers.parameter_value"),value:y[`provider-${u}-transformer-${he}`]?.value||"",onChange:pe=>{const fe=`provider-${u}-transformer-${he}`;w(Te=>({...Te,[fe]:{...Te[fe]||{name:"",value:""},value:pe.target.value}}))}}),c.jsx(ye,{size:"sm",onClick:()=>{if(u!==null){const pe=`provider-${u}-transformer-${he}`,fe=y[pe];fe&&fe.name&&fe.value&&(Ue(u,he,fe.name,fe.value),w(Te=>({...Te,[pe]:{name:"",value:""}})))}},children:c.jsx(Os,{className:"h-4 w-4"})})]}),(()=>{if(!tt.transformer?.use||tt.transformer.use.length<=he)return null;const pe=tt.transformer.use[he];let fe={};return Array.isArray(pe)&&pe.length>1&&typeof pe[1]=="object"&&pe[1]!==null&&(fe=pe[1]),Object.keys(fe).length>0?c.jsx("div",{className:"space-y-1",children:Object.entries(fe).map(([Te,$e])=>c.jsxs("div",{className:"flex items-center justify-between bg-gray-50 rounded p-2",children:[c.jsxs("div",{className:"text-sm",children:[c.jsxs("span",{className:"font-medium",children:[Te,":"]})," ",String($e)]}),c.jsx(ye,{variant:"ghost",size:"sm",className:"h-6 w-6 p-0",onClick:()=>{u!==null&&_t(u,he,Te)},children:c.jsx(El,{className:"h-3 w-3"})})]},Te))}):null})()]})]})]},he))]})]}),tt.models&&tt.models.length>0&&c.jsxs("div",{className:"space-y-2",children:[c.jsx(Ee,{children:t("providers.model_transformers")}),c.jsx("div",{className:"space-y-3",children:(tt.models||[]).map((ce,he)=>c.jsxs("div",{className:"border rounded-md p-3",children:[c.jsx("div",{className:"font-medium text-sm mb-2",children:ce}),c.jsx("div",{className:"flex gap-2",children:c.jsx("div",{className:"flex-1 flex gap-2",children:c.jsx(Ot,{options:j.map(pe=>({label:pe.name,value:pe.name})),value:"",onChange:pe=>{u!==null&&Ce(u,ce,pe)},placeholder:t("providers.select_transformer"),emptyPlaceholder:t("providers.no_transformers")})})}),tt.transformer?.[ce]?.use&&tt.transformer[ce].use.length>0&&c.jsxs("div",{className:"space-y-2 mt-2",children:[c.jsx("div",{className:"text-sm font-medium text-gray-700",children:t("providers.selected_transformers")}),tt.transformer[ce].use.map((pe,fe)=>c.jsxs("div",{className:"border rounded-md p-3",children:[c.jsxs("div",{className:"flex gap-2 items-center mb-2",children:[c.jsx("div",{className:"flex-1 bg-gray-50 rounded p-2 text-sm",children:typeof pe=="string"?pe:Array.isArray(pe)?String(pe[0]):String(pe)}),c.jsx(ye,{variant:"outline",size:"icon",onClick:()=>{u!==null&&Fe(u,ce,fe)},children:c.jsx(ca,{className:"h-4 w-4"})})]}),c.jsxs("div",{className:"mt-2 pl-4 border-l-2 border-gray-200",children:[c.jsx(Ee,{className:"text-sm",children:t("providers.transformer_parameters")}),c.jsxs("div",{className:"space-y-2 mt-1",children:[c.jsxs("div",{className:"flex gap-2",children:[c.jsx(at,{placeholder:t("providers.parameter_name"),value:S[`model-${u}-${ce}-transformer-${fe}`]?.name||"",onChange:Te=>{const $e=`model-${u}-${ce}-transformer-${fe}`;N(qe=>({...qe,[$e]:{...qe[$e]||{name:"",value:""},name:Te.target.value}}))}}),c.jsx(at,{placeholder:t("providers.parameter_value"),value:S[`model-${u}-${ce}-transformer-${fe}`]?.value||"",onChange:Te=>{const $e=`model-${u}-${ce}-transformer-${fe}`;N(qe=>({...qe,[$e]:{...qe[$e]||{name:"",value:""},value:Te.target.value}}))}}),c.jsx(ye,{size:"sm",onClick:()=>{if(u!==null){const Te=`model-${u}-${ce}-transformer-${fe}`,$e=S[Te];$e&&$e.name&&$e.value&&(At(u,ce,fe,$e.name,$e.value),N(qe=>({...qe,[Te]:{name:"",value:""}})))}},children:c.jsx(Os,{className:"h-4 w-4"})})]}),(()=>{if(!tt.transformer?.[ce]?.use||tt.transformer[ce].use.length<=fe)return null;const Te=tt.transformer[ce].use[fe];let $e={};return Array.isArray(Te)&&Te.length>1&&typeof Te[1]=="object"&&Te[1]!==null&&($e=Te[1]),Object.keys($e).length>0?c.jsx("div",{className:"space-y-1",children:Object.entries($e).map(([qe,lt])=>c.jsxs("div",{className:"flex items-center justify-between bg-gray-50 rounded p-2",children:[c.jsxs("div",{className:"text-sm",children:[c.jsxs("span",{className:"font-medium",children:[qe,":"]})," ",String(lt)]}),c.jsx(ye,{variant:"ghost",size:"sm",className:"h-6 w-6 p-0",onClick:()=>{u!==null&&Se(u,ce,fe,qe)},children:c.jsx(El,{className:"h-3 w-3"})})]},qe))}):null})()]})]})]},fe))]})]},he))})]})]}),c.jsx("div",{className:"space-y-3 mt-auto",children:c.jsx("div",{className:"flex justify-end gap-2",children:c.jsx(ye,{onClick:G,disabled:s,children:s?"...":t("app.save")})})})]})}),c.jsx(xa,{open:f!==null,onOpenChange:()=>m(null),children:c.jsxs(ra,{children:[c.jsxs(la,{children:[c.jsx(sa,{children:t("providers.delete")}),c.jsx(Rl,{children:t("providers.delete_provider_confirm")})]}),c.jsxs(Vr,{children:[c.jsx(ye,{variant:"outline",onClick:()=>m(null),children:t("providers.cancel")}),c.jsx(ye,{variant:"destructive",onClick:()=>f!==null&&ve(f),children:t("providers.delete")})]})]})})]})}function bp(t){const a=v.useRef({value:t,previous:t});return v.useMemo(()=>(a.current.value!==t&&(a.current.previous=a.current.value,a.current.value=t),a.current.previous),[t])}var Ju="Switch",[m4]=Ra(Ju),[p4,g4]=m4(Ju),Jw=v.forwardRef((t,a)=>{const{__scopeSwitch:r,name:s,checked:o,defaultChecked:u,required:d,disabled:f,value:m="on",onCheckedChange:p,form:x,...y}=t,[w,S]=v.useState(null),N=bt(a,_=>S(_)),j=v.useRef(!1),R=w?x||!!w.closest("form"):!0,[T,E]=tr({prop:o,defaultProp:u??!1,onChange:p,caller:Ju});return c.jsxs(p4,{scope:r,checked:T,disabled:f,children:[c.jsx(We.button,{type:"button",role:"switch","aria-checked":T,"aria-required":d,"data-state":nS(T),"data-disabled":f?"":void 0,disabled:f,value:m,...y,ref:N,onClick:Ie(t.onClick,_=>{E(k=>!k),R&&(j.current=_.isPropagationStopped(),j.current||_.stopPropagation())})}),R&&c.jsx(tS,{control:w,bubbles:!j.current,name:s,value:m,checked:T,required:d,disabled:f,form:x,style:{transform:"translateX(-100%)"}})]})});Jw.displayName=Ju;var Ww="SwitchThumb",eS=v.forwardRef((t,a)=>{const{__scopeSwitch:r,...s}=t,o=g4(Ww,r);return c.jsx(We.span,{"data-state":nS(o.checked),"data-disabled":o.disabled?"":void 0,...s,ref:a})});eS.displayName=Ww;var v4="SwitchBubbleInput",tS=v.forwardRef(({__scopeSwitch:t,control:a,checked:r,bubbles:s=!0,...o},u)=>{const d=v.useRef(null),f=bt(d,u),m=bp(r),p=lp(a);return v.useEffect(()=>{const x=d.current;if(!x)return;const y=window.HTMLInputElement.prototype,S=Object.getOwnPropertyDescriptor(y,"checked").set;if(m!==r&&S){const N=new Event("click",{bubbles:s});S.call(x,r),x.dispatchEvent(N)}},[m,r,s]),c.jsx("input",{type:"checkbox","aria-hidden":!0,defaultChecked:r,...o,tabIndex:-1,ref:f,style:{...o.style,...p,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})});tS.displayName=v4;function nS(t){return t?"checked":"unchecked"}var aS=Jw,y4=eS;const Ja=v.forwardRef(({className:t,...a},r)=>c.jsx(aS,{className:Ke("peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-all-ease focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input",t),...a,ref:r,children:c.jsx(y4,{className:Ke("pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0 transition-all-ease")})}));Ja.displayName=aS.displayName;function x4(){const{t}=hn(),{config:a,setConfig:r}=Xr();if(!a)return c.jsxs(oa,{className:"flex h-full flex-col rounded-lg border shadow-sm",children:[c.jsx(ja,{className:"border-b p-4",children:c.jsx(Na,{className:"text-lg",children:t("router.title")})}),c.jsx(ia,{className:"flex-grow flex items-center justify-center p-4",children:c.jsx("div",{className:"text-gray-500",children:"Loading router configuration..."})})]});const s=a.Router||{default:"",think:"",longContext:"",longContextThreshold:6e4,webSearch:"",image:""},o=(m,p)=>{const y={...a.Router||{},[m]:p};r({...a,Router:y})},u=m=>{r({...a,forceUseImageAgent:m})},f=(Array.isArray(a.Providers)?a.Providers:[]).flatMap(m=>{if(!m)return[];const p=Array.isArray(m.models)?m.models:[],x=m.name||"Unknown Provider";return p.map(y=>({value:`${x},${y||"Unknown Model"}`,label:`${x}, ${y||"Unknown Model"}`}))});return c.jsxs(oa,{className:"flex h-full flex-col glass-card border-white/10 shadow-xl overflow-hidden",children:[c.jsx(ja,{className:"border-b border-white/10 bg-white/5 p-5",children:c.jsx(Na,{className:"text-xl font-bold tracking-tight text-foreground flex items-center gap-2",children:t("router.title")})}),c.jsxs(ia,{className:"flex-grow space-y-6 overflow-y-auto p-6 custom-scrollbar",children:[c.jsxs("div",{className:"space-y-3 animate-in",style:{animationDelay:"0.1s"},children:[c.jsx(Ee,{className:"text-sm font-bold ml-1 text-muted-foreground/80 uppercase tracking-wider",children:t("router.default")}),c.jsx(Ot,{options:f,value:s.default||"",onChange:m=>o("default",m),placeholder:t("router.selectModel"),searchPlaceholder:t("router.searchModel"),emptyPlaceholder:t("router.noModelFound")})]}),c.jsx("div",{className:"space-y-3 animate-in",style:{animationDelay:"0.2s"},children:c.jsxs("div",{className:"flex items-center gap-4",children:[c.jsxs("div",{className:"flex-1 space-y-3",children:[c.jsx(Ee,{className:"text-sm font-bold ml-1 text-muted-foreground/80 uppercase tracking-wider",children:t("router.longContext")}),c.jsx(Ot,{options:f,value:s.longContext||"",onChange:m=>o("longContext",m),placeholder:t("router.selectModel"),searchPlaceholder:t("router.searchModel"),emptyPlaceholder:t("router.noModelFound")})]}),c.jsxs("div",{className:"w-40 space-y-3",children:[c.jsx(Ee,{className:"text-sm font-bold ml-1 text-muted-foreground/80 uppercase tracking-wider",children:t("router.threshold")}),c.jsx(at,{type:"number",value:s.longContextThreshold||6e4,onChange:m=>o("longContextThreshold",parseInt(m.target.value)||6e4),className:"bg-input/50 border border-input text-center font-mono"})]})]})}),c.jsxs("div",{className:"p-4 rounded-2xl bg-white/5 border border-white/10 space-y-4 animate-in",style:{animationDelay:"0.3s"},children:[c.jsxs("div",{className:"flex items-center justify-between",children:[c.jsxs("div",{className:"flex flex-col gap-1",children:[c.jsx(Ee,{htmlFor:"enable-extended-context",className:"text-base font-bold",children:t("router.enableExtendedContext")}),c.jsx("span",{className:"text-xs text-muted-foreground/60 leading-tight",children:t("router.enableExtendedContextDesc")})]}),c.jsx(Ja,{id:"enable-extended-context",checked:s.enableExtendedContext??!1,onCheckedChange:m=>o("enableExtendedContext",m),className:"data-[state=checked]:bg-primary"})]}),s.enableExtendedContext&&c.jsxs("div",{className:"flex items-center gap-4 pt-2 animate-in",children:[c.jsxs("div",{className:"flex-1 space-y-3",children:[c.jsx(Ee,{className:"text-sm font-bold ml-1 text-muted-foreground/80 uppercase tracking-wider",children:t("router.extendedContext")}),c.jsx(Ot,{options:f,value:s.extendedContext||"",onChange:m=>o("extendedContext",m),placeholder:t("router.selectModel")})]}),c.jsxs("div",{className:"w-40 space-y-3",children:[c.jsx(Ee,{className:"text-sm font-bold ml-1 text-muted-foreground/80 uppercase tracking-wider",children:t("router.threshold")}),c.jsx(at,{type:"number",value:s.extendedContextThreshold||2e5,onChange:m=>o("extendedContextThreshold",parseInt(m.target.value)||2e5),className:"bg-input/50 border border-input text-center font-mono"})]})]})]}),c.jsxs("div",{className:"grid grid-cols-1 gap-6 pt-2",children:[c.jsxs("div",{className:"space-y-3 animate-in",style:{animationDelay:"0.4s"},children:[c.jsx(Ee,{className:"text-sm font-bold ml-1 text-muted-foreground/80 uppercase tracking-wider",children:t("router.think")}),c.jsx(Ot,{options:f,value:s.think||"",onChange:m=>o("think",m),placeholder:t("router.selectModel")})]}),c.jsxs("div",{className:"space-y-3 animate-in",style:{animationDelay:"0.5s"},children:[c.jsx(Ee,{className:"text-sm font-bold ml-1 text-muted-foreground/80 uppercase tracking-wider",children:t("router.webSearch")}),c.jsx(Ot,{options:f,value:s.webSearch||"",onChange:m=>o("webSearch",m),placeholder:t("router.selectModel")})]}),c.jsx("div",{className:"space-y-3 animate-in",style:{animationDelay:"0.6s"},children:c.jsxs("div",{className:"flex items-center gap-4",children:[c.jsxs("div",{className:"flex-1 space-y-3",children:[c.jsxs(Ee,{className:"text-sm font-bold ml-1 text-muted-foreground/80 uppercase tracking-wider",children:[t("router.image")," ",c.jsx("span",{className:"text-[10px] bg-primary/20 text-primary px-1.5 py-0.5 rounded-full ml-1",children:"BETA"})]}),c.jsx(Ot,{options:f,value:s.image||"",onChange:m=>o("image",m),placeholder:t("router.selectModel")})]}),c.jsxs("div",{className:"w-40 space-y-3",children:[c.jsx(Ee,{className:"text-sm font-bold ml-1 text-muted-foreground/80 uppercase tracking-wider",children:t("router.forceAgent")}),c.jsxs("select",{id:"forceUseImageAgent",value:a.forceUseImageAgent?"true":"false",onChange:m=>u(m.target.value==="true"),className:"w-full h-11 px-4 py-2 rounded-xl bg-input/50 border border-input text-foreground focus:outline-none focus:ring-2 focus:ring-primary/50 focus:border-primary/50 transition-all appearance-none cursor-pointer",children:[c.jsx("option",{value:"false",className:"bg-background",children:t("common.no")}),c.jsx("option",{value:"true",className:"bg-background",children:t("common.yes")})]})]})]})})]})]})]})}function J0(t,a){(a==null||a>t.length)&&(a=t.length);for(var r=0,s=Array(a);r<a;r++)s[r]=t[r];return s}function b4(t){if(Array.isArray(t))return t}function w4(t,a,r){return(a=R4(a))in t?Object.defineProperty(t,a,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[a]=r,t}function S4(t,a){var r=t==null?null:typeof Symbol<"u"&&t[Symbol.iterator]||t["@@iterator"];if(r!=null){var s,o,u,d,f=[],m=!0,p=!1;try{if(u=(r=r.call(t)).next,a!==0)for(;!(m=(s=u.call(r)).done)&&(f.push(s.value),f.length!==a);m=!0);}catch(x){p=!0,o=x}finally{try{if(!m&&r.return!=null&&(d=r.return(),Object(d)!==d))return}finally{if(p)throw o}}return f}}function _4(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
|
|
65
|
+
For more information, see https://radix-ui.com/primitives/docs/components/${a.docsSlug}`;return v.useEffect(()=>{t&&(document.getElementById(t)||console.error(r))},[r,t]),null},Dk="DialogDescriptionWarning",Lk=({contentRef:t,descriptionId:a})=>{const s=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${Z1(Dk).contentName}}.`;return v.useEffect(()=>{const o=t.current?.getAttribute("aria-describedby");a&&o&&(document.getElementById(a)||console.warn(s))},[s,t,a]),null},J1=U1,W1=$1,Zm=F1,Jm=I1,ew=V1,tw=K1,zk=X1;const xa=J1,Pk=W1,nw=v.forwardRef(({className:t,...a},r)=>c.jsx(Zm,{ref:r,className:Ke("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",t),...a}));nw.displayName=Zm.displayName;const ra=v.forwardRef(({className:t,children:a,...r},s)=>c.jsxs(Pk,{children:[c.jsx(nw,{}),c.jsxs(Jm,{ref:s,className:Ke("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-300 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg animate-scale-in",t),...r,children:[a,c.jsxs(zk,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground transition-all-ease hover:scale-110",children:[c.jsx(El,{className:"h-4 w-4"}),c.jsx("span",{className:"sr-only",children:"Close"})]})]})]}));ra.displayName=Jm.displayName;const la=({className:t,...a})=>c.jsx("div",{className:Ke("flex flex-col space-y-1.5 text-center sm:text-left",t),...a});la.displayName="DialogHeader";const Vr=({className:t,...a})=>c.jsx("div",{className:Ke("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",t),...a});Vr.displayName="DialogFooter";const sa=v.forwardRef(({className:t,...a},r)=>c.jsx(ew,{ref:r,className:Ke("text-lg font-semibold leading-none tracking-tight",t),...a}));sa.displayName=ew.displayName;const Rl=v.forwardRef(({className:t,...a},r)=>c.jsx(tw,{ref:r,className:Ke("text-sm text-muted-foreground",t),...a}));Rl.displayName=tw.displayName;function Uk(){const{t}=hn(),{config:a,setConfig:r}=Xr(),[s,o]=v.useState(null),[u,d]=v.useState(null),[f,m]=v.useState(null);if(!a)return c.jsxs(oa,{className:"flex h-full flex-col rounded-lg border shadow-sm",children:[c.jsx(ja,{className:"flex flex-row items-center justify-between border-b p-4",children:c.jsx(Na,{className:"text-lg",children:t("transformers.title")})}),c.jsx(ia,{className:"flex-grow flex items-center justify-center p-4",children:c.jsx("div",{className:"text-gray-500",children:"Loading transformers configuration..."})})]});const p=Array.isArray(a.transformers)?a.transformers:[],x=()=>{m({name:"",path:"",options:{}}),o(p.length)},y=R=>{const T=[...p];T.splice(R,1),r({...a,transformers:T}),d(null)},w=(R,T,E,_)=>{if(R<p.length){const k=[...p];_!==void 0?k[R].options[_]=E:k[R][T]=E,r({...a,transformers:k})}else if(f){const k={...f};_!==void 0?k.options[_]=E:k[T]=E,m(k)}},S=s!==null?s<p.length?p[s]:f:null,N=()=>{if(f&&s===p.length){const R=[...p,f];r({...a,transformers:R})}o(null),m(null)},j=()=>{o(null),m(null)};return c.jsxs(oa,{className:"flex h-full flex-col glass-card border-white/10 shadow-xl overflow-hidden",children:[c.jsxs(ja,{className:"flex flex-row items-center justify-between border-b border-white/10 bg-white/5 p-5",children:[c.jsxs(Na,{className:"text-xl font-bold tracking-tight text-foreground flex items-center gap-2",children:[t("transformers.title"),c.jsx("span",{className:"text-xs bg-primary/20 text-primary px-2 py-1 rounded-full font-bold ml-1",children:p.length})]}),c.jsxs(ye,{onClick:x,size:"sm",className:"h-9 px-4 rounded-xl",children:[c.jsx(Os,{className:"h-4 w-4 mr-1"}),t("transformers.add")]})]}),c.jsx(ia,{className:"flex-grow overflow-y-auto p-6 custom-scrollbar",children:c.jsx(oA,{transformers:p,onEdit:o,onRemove:d})}),c.jsx(xa,{open:s!==null,onOpenChange:j,children:c.jsxs(ra,{children:[c.jsx(la,{children:c.jsx(sa,{children:t("transformers.edit")})}),S&&s!==null&&c.jsxs("div",{className:"space-y-4 py-4 px-6 max-h-96 overflow-y-auto",children:[c.jsxs("div",{className:"space-y-2",children:[c.jsx(Ee,{htmlFor:"transformer-path",children:t("transformers.path")}),c.jsx(at,{id:"transformer-path",value:S.path||"",onChange:R=>w(s,"path",R.target.value)})]}),c.jsxs("div",{className:"space-y-2",children:[c.jsxs("div",{className:"flex items-center justify-between",children:[c.jsx(Ee,{children:t("transformers.parameters")}),c.jsx(ye,{variant:"outline",size:"sm",onClick:()=>{const R=S.options||{},T=`param${Object.keys(R).length+1}`;if(s!==null){const E={...R,[T]:""};if(s<p.length){const _=[...p];_[s].options=E,r({...a,transformers:_})}else f&&m({...f,options:E})}},children:c.jsx(Os,{className:"h-4 w-4"})})]}),Object.entries(S.options||{}).map(([R,T])=>c.jsxs("div",{className:"flex items-center gap-2",children:[c.jsx(at,{value:R,onChange:E=>{const k={...S.options||{}};if(delete k[R],k[E.target.value]=T,s!==null)if(s<p.length){const L=[...p];L[s].options=k,r({...a,transformers:L})}else f&&m({...f,options:k})},className:"flex-1"}),c.jsx(at,{value:T,onChange:E=>{s!==null&&w(s,"parameters",E.target.value,R)},className:"flex-1"}),c.jsx(ye,{variant:"outline",size:"icon",onClick:()=>{if(s!==null){const _={...S.options||{}};if(delete _[R],s<p.length){const k=[...p];k[s].options=_,r({...a,transformers:k})}else f&&m({...f,options:_})}},children:c.jsx(ca,{className:"h-4 w-4"})})]},R))]})]}),c.jsxs(Vr,{children:[c.jsx(ye,{variant:"outline",onClick:j,children:t("app.cancel")}),c.jsx(ye,{onClick:N,children:t("app.save")})]})]})}),c.jsx(xa,{open:u!==null,onOpenChange:()=>d(null),children:c.jsxs(ra,{children:[c.jsxs(la,{children:[c.jsx(sa,{children:t("transformers.delete")}),c.jsx(Rl,{children:t("transformers.delete_transformer_confirm")})]}),c.jsxs(Vr,{children:[c.jsx(ye,{variant:"outline",onClick:()=>d(null),children:t("app.cancel")}),c.jsx(ye,{variant:"destructive",onClick:()=>u!==null&&y(u),children:t("app.delete")})]})]})})]})}const Hk=Im("inline-flex items-center rounded-lg border px-2.5 py-0.5 text-[10px] font-bold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground shadow-sm shadow-primary/20",secondary:"border-white/5 bg-white/5 text-muted-foreground",destructive:"border-red-500/20 bg-red-500/10 text-red-500",outline:"border-white/10 text-foreground bg-white/5"}},defaultVariants:{variant:"default"}});function Gn({className:t,variant:a,...r}){return c.jsx("div",{className:Ke(Hk({variant:a}),t),...r})}function Bk(t,a){if(!a||a.length===0)return{status:"closed",hasFailure:!1};const r=a.filter(u=>u.provider===t);if(r.length===0)return{status:"closed",hasFailure:!1};const s=r.filter(u=>u.status==="open"),o=r.filter(u=>u.status==="half-open");return s.length>0?{status:"open",hasFailure:!0,lastError:s[0].lastError}:o.length>0?{status:"half-open",hasFailure:!0,lastError:o[0].lastError}:{status:"closed",hasFailure:!1}}function $k({status:t}){const a={closed:"bg-green-500",open:"bg-red-500","half-open":"bg-yellow-500",unknown:"bg-gray-400"},r={closed:"Healthy",open:"Failed","half-open":"Recovering",unknown:"Unknown"};return c.jsxs("div",{className:"flex items-center gap-1",children:[c.jsx("div",{className:`w-3 h-3 rounded-full ${a[t]} animate-pulse`,title:r[t]}),c.jsx("span",{className:"text-xs text-gray-500",children:r[t]})]})}function z0(t){try{const a=new Date(t);if(isNaN(a.getTime()))return t;const r=new Date,s=a.toDateString()===r.toDateString(),o=f=>String(f).padStart(2,"0"),u=o(a.getHours()),d=o(a.getMinutes());if(s)return`${u}:${d}`;{const f=o(a.getMonth()+1),m=o(a.getDate());return`${f}-${m} ${u}:${d}`}}catch{return t}}function P0({label:t,used:a,limit:r,resetTime:s,isBalance:o,currency:u,t:d}){if(r===void 0||!o&&r<=0)return null;if(o){const y=u==="CNY"?"¥":u==="USD"?"$":"",w=r-a;let S="bg-emerald-400",N="text-emerald-600";w<10?(S="bg-red-500",N="text-red-600"):w<50&&(S="bg-amber-400",N="text-amber-600");const j=Math.min(100,Math.max(0,w/50*100));return c.jsxs("div",{className:"flex items-center gap-2 text-xs text-muted-foreground/80",children:[c.jsx("span",{className:"w-12 shrink-0 font-medium",children:t}),c.jsx("div",{className:"flex-1 space-y-0.5",children:c.jsx("div",{className:"relative h-2 rounded-full bg-white/10 overflow-hidden",children:c.jsx("div",{className:`h-full rounded-full ${S} transition-all duration-300 shadow-[0_0_8px_rgba(var(--primary),0.3)]`,style:{width:`${j}%`}})})}),c.jsxs("div",{className:"flex flex-col items-end shrink-0 min-w-[70px]",children:[c.jsxs("span",{className:`text-right tabular-nums font-bold ${N}`,children:[y,w.toFixed(2)]}),s&&c.jsx("span",{className:"text-[9px] text-muted-foreground/50 leading-none mt-0.5",children:d("providers.quota_reset",{time:z0(s)})})]})]})}const f=Math.min(100,a/r*100),m=Math.max(2,f);let p="bg-emerald-500",x="text-emerald-500";return f>=90?(p="bg-red-500",x="text-red-500"):f>=70?(p="bg-amber-500",x="text-amber-500"):f>=40&&(p="bg-primary",x="text-primary"),c.jsxs("div",{className:"flex items-center gap-2 text-xs text-muted-foreground/80",children:[c.jsx("span",{className:"w-12 shrink-0 font-medium",children:t}),c.jsx("div",{className:"flex-1 h-2 bg-white/10 rounded-full overflow-hidden",children:c.jsx("div",{className:`h-full rounded-full ${p} transition-all duration-300 shadow-sm`,style:{width:`${m}%`}})}),c.jsxs("div",{className:"flex flex-col items-end shrink-0 min-w-[70px]",children:[c.jsx("span",{className:`text-right tabular-nums font-bold ${x}`,children:`${f.toFixed(1)}%`}),s&&c.jsx("span",{className:"text-[9px] text-muted-foreground/50 leading-none mt-0.5",children:d("providers.quota_reset",{time:z0(s)})})]})]})}function Fk({providers:t,healthStates:a,quotaUsages:r,onEdit:s,onRemove:o}){const{t:u}=hn();return!t||!Array.isArray(t)?c.jsx("div",{className:"space-y-4",children:c.jsx("div",{className:"flex items-center justify-center rounded-2xl border border-white/10 bg-white/5 p-12 text-muted-foreground animate-in",children:"No providers configured"})}):c.jsx("div",{className:"space-y-4",children:t.map((d,f)=>{if(!d)return null;const m=d.name||"Unnamed Provider",p=d.api_base_url||"No API URL",x=Array.isArray(d.models)?d.models:[],y=Bk(m,a),w=r?.find(S=>S.provider===m);return c.jsxs("div",{className:"flex items-start justify-between rounded-2xl border border-white/10 bg-white/5 p-5 transition-all hover:bg-white/10 hover:border-primary/30 group animate-in shadow-lg shadow-black/5 glass-card",children:[c.jsxs("div",{className:"flex-1 space-y-3",children:[c.jsxs("div",{className:"flex flex-col gap-1",children:[c.jsx("p",{className:"text-lg font-bold tracking-tight text-foreground",children:m}),c.jsx("p",{className:"text-xs font-medium text-muted-foreground/60 truncate max-w-md",children:p})]}),y.lastError&&c.jsx("div",{className:"p-2 px-3 bg-red-500/10 border border-red-500/20 rounded-lg text-[11px] text-red-500 font-medium truncate max-w-md",children:y.lastError}),w&&(w.limit5h!==void 0||w.limit7d!==void 0)&&c.jsxs("div",{className:"space-y-2 py-1 max-w-md",children:[c.jsx(P0,{label:w.type5h==="balance"?u("providers.quota_balance"):u("providers.quota_5h"),used:w.used5h,limit:w.limit5h,resetTime:w.limit5h?w.reset5h:void 0,isBalance:w.type5h==="balance",currency:w.currency,t:u}),c.jsx(P0,{label:w.type7d==="balance"?u("providers.quota_balance"):u("providers.quota_7d"),used:w.used7d,limit:w.limit7d,resetTime:w.limit7d?w.reset7d:void 0,isBalance:w.type7d==="balance",currency:w.currency,t:u})]}),c.jsx("div",{className:"flex flex-wrap gap-2 pt-1",children:x.map((S,N)=>c.jsx(Gn,{variant:"secondary",className:"px-2 py-0.5 rounded-lg bg-white/5 border-white/5 text-[10px] font-bold text-muted-foreground group-hover:text-foreground transition-colors",children:S||"Unnamed Model"},N))})]}),c.jsxs("div",{className:"ml-4 flex flex-col items-end gap-4",children:[c.jsx($k,{status:y.status}),c.jsxs("div",{className:"flex flex-col gap-2 opacity-0 group-hover:opacity-100 transition-opacity",children:[c.jsx(ye,{variant:"ghost",size:"icon",onClick:()=>s(f),className:"h-9 w-9 rounded-lg hover:bg-primary/20 hover:text-primary",children:c.jsx(_1,{className:"h-4 w-4"})}),c.jsx(ye,{variant:"destructive",size:"icon",onClick:()=>o(f),className:"h-9 w-9 rounded-lg opacity-80 hover:opacity-100",children:c.jsx(ca,{className:"h-4 w-4"})})]})]})]},f)})})}const Ik=["top","right","bottom","left"],Gr=Math.min,Mn=Math.max,vu=Math.round,Jc=Math.floor,Sa=t=>({x:t,y:t}),qk={left:"right",right:"left",bottom:"top",top:"bottom"},Vk={start:"end",end:"start"};function dm(t,a,r){return Mn(t,Gr(a,r))}function nr(t,a){return typeof t=="function"?t(a):t}function ar(t){return t.split("-")[0]}function qs(t){return t.split("-")[1]}function Wm(t){return t==="x"?"y":"x"}function ep(t){return t==="y"?"height":"width"}const Gk=new Set(["top","bottom"]);function ba(t){return Gk.has(ar(t))?"y":"x"}function tp(t){return Wm(ba(t))}function Kk(t,a,r){r===void 0&&(r=!1);const s=qs(t),o=tp(t),u=ep(o);let d=o==="x"?s===(r?"end":"start")?"right":"left":s==="start"?"bottom":"top";return a.reference[u]>a.floating[u]&&(d=yu(d)),[d,yu(d)]}function Yk(t){const a=yu(t);return[fm(t),a,fm(a)]}function fm(t){return t.replace(/start|end/g,a=>Vk[a])}const U0=["left","right"],H0=["right","left"],Xk=["top","bottom"],Qk=["bottom","top"];function Zk(t,a,r){switch(t){case"top":case"bottom":return r?a?H0:U0:a?U0:H0;case"left":case"right":return a?Xk:Qk;default:return[]}}function Jk(t,a,r,s){const o=qs(t);let u=Zk(ar(t),r==="start",s);return o&&(u=u.map(d=>d+"-"+o),a&&(u=u.concat(u.map(fm)))),u}function yu(t){return t.replace(/left|right|bottom|top/g,a=>qk[a])}function Wk(t){return{top:0,right:0,bottom:0,left:0,...t}}function aw(t){return typeof t!="number"?Wk(t):{top:t,right:t,bottom:t,left:t}}function xu(t){const{x:a,y:r,width:s,height:o}=t;return{width:s,height:o,top:r,left:a,right:a+s,bottom:r+o,x:a,y:r}}function B0(t,a,r){let{reference:s,floating:o}=t;const u=ba(a),d=tp(a),f=ep(d),m=ar(a),p=u==="y",x=s.x+s.width/2-o.width/2,y=s.y+s.height/2-o.height/2,w=s[f]/2-o[f]/2;let S;switch(m){case"top":S={x,y:s.y-o.height};break;case"bottom":S={x,y:s.y+s.height};break;case"right":S={x:s.x+s.width,y};break;case"left":S={x:s.x-o.width,y};break;default:S={x:s.x,y:s.y}}switch(qs(a)){case"start":S[d]-=w*(r&&p?-1:1);break;case"end":S[d]+=w*(r&&p?-1:1);break}return S}const eM=async(t,a,r)=>{const{placement:s="bottom",strategy:o="absolute",middleware:u=[],platform:d}=r,f=u.filter(Boolean),m=await(d.isRTL==null?void 0:d.isRTL(a));let p=await d.getElementRects({reference:t,floating:a,strategy:o}),{x,y}=B0(p,s,m),w=s,S={},N=0;for(let j=0;j<f.length;j++){const{name:R,fn:T}=f[j],{x:E,y:_,data:k,reset:L}=await T({x,y,initialPlacement:s,placement:w,strategy:o,middlewareData:S,rects:p,platform:d,elements:{reference:t,floating:a}});x=E??x,y=_??y,S={...S,[R]:{...S[R],...k}},L&&N<=50&&(N++,typeof L=="object"&&(L.placement&&(w=L.placement),L.rects&&(p=L.rects===!0?await d.getElementRects({reference:t,floating:a,strategy:o}):L.rects),{x,y}=B0(p,w,m)),j=-1)}return{x,y,placement:w,strategy:o,middlewareData:S}};async function di(t,a){var r;a===void 0&&(a={});const{x:s,y:o,platform:u,rects:d,elements:f,strategy:m}=t,{boundary:p="clippingAncestors",rootBoundary:x="viewport",elementContext:y="floating",altBoundary:w=!1,padding:S=0}=nr(a,t),N=aw(S),R=f[w?y==="floating"?"reference":"floating":y],T=xu(await u.getClippingRect({element:(r=await(u.isElement==null?void 0:u.isElement(R)))==null||r?R:R.contextElement||await(u.getDocumentElement==null?void 0:u.getDocumentElement(f.floating)),boundary:p,rootBoundary:x,strategy:m})),E=y==="floating"?{x:s,y:o,width:d.floating.width,height:d.floating.height}:d.reference,_=await(u.getOffsetParent==null?void 0:u.getOffsetParent(f.floating)),k=await(u.isElement==null?void 0:u.isElement(_))?await(u.getScale==null?void 0:u.getScale(_))||{x:1,y:1}:{x:1,y:1},L=xu(u.convertOffsetParentRelativeRectToViewportRelativeRect?await u.convertOffsetParentRelativeRectToViewportRelativeRect({elements:f,rect:E,offsetParent:_,strategy:m}):E);return{top:(T.top-L.top+N.top)/k.y,bottom:(L.bottom-T.bottom+N.bottom)/k.y,left:(T.left-L.left+N.left)/k.x,right:(L.right-T.right+N.right)/k.x}}const tM=t=>({name:"arrow",options:t,async fn(a){const{x:r,y:s,placement:o,rects:u,platform:d,elements:f,middlewareData:m}=a,{element:p,padding:x=0}=nr(t,a)||{};if(p==null)return{};const y=aw(x),w={x:r,y:s},S=tp(o),N=ep(S),j=await d.getDimensions(p),R=S==="y",T=R?"top":"left",E=R?"bottom":"right",_=R?"clientHeight":"clientWidth",k=u.reference[N]+u.reference[S]-w[S]-u.floating[N],L=w[S]-u.reference[S],z=await(d.getOffsetParent==null?void 0:d.getOffsetParent(p));let C=z?z[_]:0;(!C||!await(d.isElement==null?void 0:d.isElement(z)))&&(C=f.floating[_]||u.floating[N]);const U=k/2-L/2,K=C/2-j[N]/2-1,Z=Gr(y[T],K),re=Gr(y[E],K),ie=Z,le=C-j[N]-re,P=C/2-j[N]/2+U,F=dm(ie,P,le),M=!m.arrow&&qs(o)!=null&&P!==F&&u.reference[N]/2-(P<ie?Z:re)-j[N]/2<0,V=M?P<ie?P-ie:P-le:0;return{[S]:w[S]+V,data:{[S]:F,centerOffset:P-F-V,...M&&{alignmentOffset:V}},reset:M}}}),nM=function(t){return t===void 0&&(t={}),{name:"flip",options:t,async fn(a){var r,s;const{placement:o,middlewareData:u,rects:d,initialPlacement:f,platform:m,elements:p}=a,{mainAxis:x=!0,crossAxis:y=!0,fallbackPlacements:w,fallbackStrategy:S="bestFit",fallbackAxisSideDirection:N="none",flipAlignment:j=!0,...R}=nr(t,a);if((r=u.arrow)!=null&&r.alignmentOffset)return{};const T=ar(o),E=ba(f),_=ar(f)===f,k=await(m.isRTL==null?void 0:m.isRTL(p.floating)),L=w||(_||!j?[yu(f)]:Yk(f)),z=N!=="none";!w&&z&&L.push(...Jk(f,j,N,k));const C=[f,...L],U=await di(a,R),K=[];let Z=((s=u.flip)==null?void 0:s.overflows)||[];if(x&&K.push(U[T]),y){const P=Kk(o,d,k);K.push(U[P[0]],U[P[1]])}if(Z=[...Z,{placement:o,overflows:K}],!K.every(P=>P<=0)){var re,ie;const P=(((re=u.flip)==null?void 0:re.index)||0)+1,F=C[P];if(F&&(!(y==="alignment"?E!==ba(F):!1)||Z.every(H=>ba(H.placement)===E?H.overflows[0]>0:!0)))return{data:{index:P,overflows:Z},reset:{placement:F}};let M=(ie=Z.filter(V=>V.overflows[0]<=0).sort((V,H)=>V.overflows[1]-H.overflows[1])[0])==null?void 0:ie.placement;if(!M)switch(S){case"bestFit":{var le;const V=(le=Z.filter(H=>{if(z){const oe=ba(H.placement);return oe===E||oe==="y"}return!0}).map(H=>[H.placement,H.overflows.filter(oe=>oe>0).reduce((oe,me)=>oe+me,0)]).sort((H,oe)=>H[1]-oe[1])[0])==null?void 0:le[0];V&&(M=V);break}case"initialPlacement":M=f;break}if(o!==M)return{reset:{placement:M}}}return{}}}};function $0(t,a){return{top:t.top-a.height,right:t.right-a.width,bottom:t.bottom-a.height,left:t.left-a.width}}function F0(t){return Ik.some(a=>t[a]>=0)}const aM=function(t){return t===void 0&&(t={}),{name:"hide",options:t,async fn(a){const{rects:r}=a,{strategy:s="referenceHidden",...o}=nr(t,a);switch(s){case"referenceHidden":{const u=await di(a,{...o,elementContext:"reference"}),d=$0(u,r.reference);return{data:{referenceHiddenOffsets:d,referenceHidden:F0(d)}}}case"escaped":{const u=await di(a,{...o,altBoundary:!0}),d=$0(u,r.floating);return{data:{escapedOffsets:d,escaped:F0(d)}}}default:return{}}}}},rw=new Set(["left","top"]);async function rM(t,a){const{placement:r,platform:s,elements:o}=t,u=await(s.isRTL==null?void 0:s.isRTL(o.floating)),d=ar(r),f=qs(r),m=ba(r)==="y",p=rw.has(d)?-1:1,x=u&&m?-1:1,y=nr(a,t);let{mainAxis:w,crossAxis:S,alignmentAxis:N}=typeof y=="number"?{mainAxis:y,crossAxis:0,alignmentAxis:null}:{mainAxis:y.mainAxis||0,crossAxis:y.crossAxis||0,alignmentAxis:y.alignmentAxis};return f&&typeof N=="number"&&(S=f==="end"?N*-1:N),m?{x:S*x,y:w*p}:{x:w*p,y:S*x}}const lM=function(t){return t===void 0&&(t=0),{name:"offset",options:t,async fn(a){var r,s;const{x:o,y:u,placement:d,middlewareData:f}=a,m=await rM(a,t);return d===((r=f.offset)==null?void 0:r.placement)&&(s=f.arrow)!=null&&s.alignmentOffset?{}:{x:o+m.x,y:u+m.y,data:{...m,placement:d}}}}},sM=function(t){return t===void 0&&(t={}),{name:"shift",options:t,async fn(a){const{x:r,y:s,placement:o}=a,{mainAxis:u=!0,crossAxis:d=!1,limiter:f={fn:R=>{let{x:T,y:E}=R;return{x:T,y:E}}},...m}=nr(t,a),p={x:r,y:s},x=await di(a,m),y=ba(ar(o)),w=Wm(y);let S=p[w],N=p[y];if(u){const R=w==="y"?"top":"left",T=w==="y"?"bottom":"right",E=S+x[R],_=S-x[T];S=dm(E,S,_)}if(d){const R=y==="y"?"top":"left",T=y==="y"?"bottom":"right",E=N+x[R],_=N-x[T];N=dm(E,N,_)}const j=f.fn({...a,[w]:S,[y]:N});return{...j,data:{x:j.x-r,y:j.y-s,enabled:{[w]:u,[y]:d}}}}}},oM=function(t){return t===void 0&&(t={}),{options:t,fn(a){const{x:r,y:s,placement:o,rects:u,middlewareData:d}=a,{offset:f=0,mainAxis:m=!0,crossAxis:p=!0}=nr(t,a),x={x:r,y:s},y=ba(o),w=Wm(y);let S=x[w],N=x[y];const j=nr(f,a),R=typeof j=="number"?{mainAxis:j,crossAxis:0}:{mainAxis:0,crossAxis:0,...j};if(m){const _=w==="y"?"height":"width",k=u.reference[w]-u.floating[_]+R.mainAxis,L=u.reference[w]+u.reference[_]-R.mainAxis;S<k?S=k:S>L&&(S=L)}if(p){var T,E;const _=w==="y"?"width":"height",k=rw.has(ar(o)),L=u.reference[y]-u.floating[_]+(k&&((T=d.offset)==null?void 0:T[y])||0)+(k?0:R.crossAxis),z=u.reference[y]+u.reference[_]+(k?0:((E=d.offset)==null?void 0:E[y])||0)-(k?R.crossAxis:0);N<L?N=L:N>z&&(N=z)}return{[w]:S,[y]:N}}}},iM=function(t){return t===void 0&&(t={}),{name:"size",options:t,async fn(a){var r,s;const{placement:o,rects:u,platform:d,elements:f}=a,{apply:m=()=>{},...p}=nr(t,a),x=await di(a,p),y=ar(o),w=qs(o),S=ba(o)==="y",{width:N,height:j}=u.floating;let R,T;y==="top"||y==="bottom"?(R=y,T=w===(await(d.isRTL==null?void 0:d.isRTL(f.floating))?"start":"end")?"left":"right"):(T=y,R=w==="end"?"top":"bottom");const E=j-x.top-x.bottom,_=N-x.left-x.right,k=Gr(j-x[R],E),L=Gr(N-x[T],_),z=!a.middlewareData.shift;let C=k,U=L;if((r=a.middlewareData.shift)!=null&&r.enabled.x&&(U=_),(s=a.middlewareData.shift)!=null&&s.enabled.y&&(C=E),z&&!w){const Z=Mn(x.left,0),re=Mn(x.right,0),ie=Mn(x.top,0),le=Mn(x.bottom,0);S?U=N-2*(Z!==0||re!==0?Z+re:Mn(x.left,x.right)):C=j-2*(ie!==0||le!==0?ie+le:Mn(x.top,x.bottom))}await m({...a,availableWidth:U,availableHeight:C});const K=await d.getDimensions(f.floating);return N!==K.width||j!==K.height?{reset:{rects:!0}}:{}}}};function Hu(){return typeof window<"u"}function Vs(t){return lw(t)?(t.nodeName||"").toLowerCase():"#document"}function Dn(t){var a;return(t==null||(a=t.ownerDocument)==null?void 0:a.defaultView)||window}function Ta(t){var a;return(a=(lw(t)?t.ownerDocument:t.document)||window.document)==null?void 0:a.documentElement}function lw(t){return Hu()?t instanceof Node||t instanceof Dn(t).Node:!1}function ua(t){return Hu()?t instanceof Element||t instanceof Dn(t).Element:!1}function Ca(t){return Hu()?t instanceof HTMLElement||t instanceof Dn(t).HTMLElement:!1}function I0(t){return!Hu()||typeof ShadowRoot>"u"?!1:t instanceof ShadowRoot||t instanceof Dn(t).ShadowRoot}const cM=new Set(["inline","contents"]);function bi(t){const{overflow:a,overflowX:r,overflowY:s,display:o}=da(t);return/auto|scroll|overlay|hidden|clip/.test(a+s+r)&&!cM.has(o)}const uM=new Set(["table","td","th"]);function dM(t){return uM.has(Vs(t))}const fM=[":popover-open",":modal"];function Bu(t){return fM.some(a=>{try{return t.matches(a)}catch{return!1}})}const hM=["transform","translate","scale","rotate","perspective"],mM=["transform","translate","scale","rotate","perspective","filter"],pM=["paint","layout","strict","content"];function np(t){const a=ap(),r=ua(t)?da(t):t;return hM.some(s=>r[s]?r[s]!=="none":!1)||(r.containerType?r.containerType!=="normal":!1)||!a&&(r.backdropFilter?r.backdropFilter!=="none":!1)||!a&&(r.filter?r.filter!=="none":!1)||mM.some(s=>(r.willChange||"").includes(s))||pM.some(s=>(r.contain||"").includes(s))}function gM(t){let a=Kr(t);for(;Ca(a)&&!Ls(a);){if(np(a))return a;if(Bu(a))return null;a=Kr(a)}return null}function ap(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}const vM=new Set(["html","body","#document"]);function Ls(t){return vM.has(Vs(t))}function da(t){return Dn(t).getComputedStyle(t)}function $u(t){return ua(t)?{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}:{scrollLeft:t.scrollX,scrollTop:t.scrollY}}function Kr(t){if(Vs(t)==="html")return t;const a=t.assignedSlot||t.parentNode||I0(t)&&t.host||Ta(t);return I0(a)?a.host:a}function sw(t){const a=Kr(t);return Ls(a)?t.ownerDocument?t.ownerDocument.body:t.body:Ca(a)&&bi(a)?a:sw(a)}function fi(t,a,r){var s;a===void 0&&(a=[]),r===void 0&&(r=!0);const o=sw(t),u=o===((s=t.ownerDocument)==null?void 0:s.body),d=Dn(o);if(u){const f=hm(d);return a.concat(d,d.visualViewport||[],bi(o)?o:[],f&&r?fi(f):[])}return a.concat(o,fi(o,[],r))}function hm(t){return t.parent&&Object.getPrototypeOf(t.parent)?t.frameElement:null}function ow(t){const a=da(t);let r=parseFloat(a.width)||0,s=parseFloat(a.height)||0;const o=Ca(t),u=o?t.offsetWidth:r,d=o?t.offsetHeight:s,f=vu(r)!==u||vu(s)!==d;return f&&(r=u,s=d),{width:r,height:s,$:f}}function rp(t){return ua(t)?t:t.contextElement}function ks(t){const a=rp(t);if(!Ca(a))return Sa(1);const r=a.getBoundingClientRect(),{width:s,height:o,$:u}=ow(a);let d=(u?vu(r.width):r.width)/s,f=(u?vu(r.height):r.height)/o;return(!d||!Number.isFinite(d))&&(d=1),(!f||!Number.isFinite(f))&&(f=1),{x:d,y:f}}const yM=Sa(0);function iw(t){const a=Dn(t);return!ap()||!a.visualViewport?yM:{x:a.visualViewport.offsetLeft,y:a.visualViewport.offsetTop}}function xM(t,a,r){return a===void 0&&(a=!1),!r||a&&r!==Dn(t)?!1:a}function Ol(t,a,r,s){a===void 0&&(a=!1),r===void 0&&(r=!1);const o=t.getBoundingClientRect(),u=rp(t);let d=Sa(1);a&&(s?ua(s)&&(d=ks(s)):d=ks(t));const f=xM(u,r,s)?iw(u):Sa(0);let m=(o.left+f.x)/d.x,p=(o.top+f.y)/d.y,x=o.width/d.x,y=o.height/d.y;if(u){const w=Dn(u),S=s&&ua(s)?Dn(s):s;let N=w,j=hm(N);for(;j&&s&&S!==N;){const R=ks(j),T=j.getBoundingClientRect(),E=da(j),_=T.left+(j.clientLeft+parseFloat(E.paddingLeft))*R.x,k=T.top+(j.clientTop+parseFloat(E.paddingTop))*R.y;m*=R.x,p*=R.y,x*=R.x,y*=R.y,m+=_,p+=k,N=Dn(j),j=hm(N)}}return xu({width:x,height:y,x:m,y:p})}function Fu(t,a){const r=$u(t).scrollLeft;return a?a.left+r:Ol(Ta(t)).left+r}function cw(t,a){const r=t.getBoundingClientRect(),s=r.left+a.scrollLeft-Fu(t,r),o=r.top+a.scrollTop;return{x:s,y:o}}function bM(t){let{elements:a,rect:r,offsetParent:s,strategy:o}=t;const u=o==="fixed",d=Ta(s),f=a?Bu(a.floating):!1;if(s===d||f&&u)return r;let m={scrollLeft:0,scrollTop:0},p=Sa(1);const x=Sa(0),y=Ca(s);if((y||!y&&!u)&&((Vs(s)!=="body"||bi(d))&&(m=$u(s)),Ca(s))){const S=Ol(s);p=ks(s),x.x=S.x+s.clientLeft,x.y=S.y+s.clientTop}const w=d&&!y&&!u?cw(d,m):Sa(0);return{width:r.width*p.x,height:r.height*p.y,x:r.x*p.x-m.scrollLeft*p.x+x.x+w.x,y:r.y*p.y-m.scrollTop*p.y+x.y+w.y}}function wM(t){return Array.from(t.getClientRects())}function SM(t){const a=Ta(t),r=$u(t),s=t.ownerDocument.body,o=Mn(a.scrollWidth,a.clientWidth,s.scrollWidth,s.clientWidth),u=Mn(a.scrollHeight,a.clientHeight,s.scrollHeight,s.clientHeight);let d=-r.scrollLeft+Fu(t);const f=-r.scrollTop;return da(s).direction==="rtl"&&(d+=Mn(a.clientWidth,s.clientWidth)-o),{width:o,height:u,x:d,y:f}}const q0=25;function _M(t,a){const r=Dn(t),s=Ta(t),o=r.visualViewport;let u=s.clientWidth,d=s.clientHeight,f=0,m=0;if(o){u=o.width,d=o.height;const x=ap();(!x||x&&a==="fixed")&&(f=o.offsetLeft,m=o.offsetTop)}const p=Fu(s);if(p<=0){const x=s.ownerDocument,y=x.body,w=getComputedStyle(y),S=x.compatMode==="CSS1Compat"&&parseFloat(w.marginLeft)+parseFloat(w.marginRight)||0,N=Math.abs(s.clientWidth-y.clientWidth-S);N<=q0&&(u-=N)}else p<=q0&&(u+=p);return{width:u,height:d,x:f,y:m}}const jM=new Set(["absolute","fixed"]);function NM(t,a){const r=Ol(t,!0,a==="fixed"),s=r.top+t.clientTop,o=r.left+t.clientLeft,u=Ca(t)?ks(t):Sa(1),d=t.clientWidth*u.x,f=t.clientHeight*u.y,m=o*u.x,p=s*u.y;return{width:d,height:f,x:m,y:p}}function V0(t,a,r){let s;if(a==="viewport")s=_M(t,r);else if(a==="document")s=SM(Ta(t));else if(ua(a))s=NM(a,r);else{const o=iw(t);s={x:a.x-o.x,y:a.y-o.y,width:a.width,height:a.height}}return xu(s)}function uw(t,a){const r=Kr(t);return r===a||!ua(r)||Ls(r)?!1:da(r).position==="fixed"||uw(r,a)}function CM(t,a){const r=a.get(t);if(r)return r;let s=fi(t,[],!1).filter(f=>ua(f)&&Vs(f)!=="body"),o=null;const u=da(t).position==="fixed";let d=u?Kr(t):t;for(;ua(d)&&!Ls(d);){const f=da(d),m=np(d);!m&&f.position==="fixed"&&(o=null),(u?!m&&!o:!m&&f.position==="static"&&!!o&&jM.has(o.position)||bi(d)&&!m&&uw(t,d))?s=s.filter(x=>x!==d):o=f,d=Kr(d)}return a.set(t,s),s}function EM(t){let{element:a,boundary:r,rootBoundary:s,strategy:o}=t;const d=[...r==="clippingAncestors"?Bu(a)?[]:CM(a,this._c):[].concat(r),s],f=d[0],m=d.reduce((p,x)=>{const y=V0(a,x,o);return p.top=Mn(y.top,p.top),p.right=Gr(y.right,p.right),p.bottom=Gr(y.bottom,p.bottom),p.left=Mn(y.left,p.left),p},V0(a,f,o));return{width:m.right-m.left,height:m.bottom-m.top,x:m.left,y:m.top}}function RM(t){const{width:a,height:r}=ow(t);return{width:a,height:r}}function TM(t,a,r){const s=Ca(a),o=Ta(a),u=r==="fixed",d=Ol(t,!0,u,a);let f={scrollLeft:0,scrollTop:0};const m=Sa(0);function p(){m.x=Fu(o)}if(s||!s&&!u)if((Vs(a)!=="body"||bi(o))&&(f=$u(a)),s){const S=Ol(a,!0,u,a);m.x=S.x+a.clientLeft,m.y=S.y+a.clientTop}else o&&p();u&&!s&&o&&p();const x=o&&!s&&!u?cw(o,f):Sa(0),y=d.left+f.scrollLeft-m.x-x.x,w=d.top+f.scrollTop-m.y-x.y;return{x:y,y:w,width:d.width,height:d.height}}function Bh(t){return da(t).position==="static"}function G0(t,a){if(!Ca(t)||da(t).position==="fixed")return null;if(a)return a(t);let r=t.offsetParent;return Ta(t)===r&&(r=r.ownerDocument.body),r}function dw(t,a){const r=Dn(t);if(Bu(t))return r;if(!Ca(t)){let o=Kr(t);for(;o&&!Ls(o);){if(ua(o)&&!Bh(o))return o;o=Kr(o)}return r}let s=G0(t,a);for(;s&&dM(s)&&Bh(s);)s=G0(s,a);return s&&Ls(s)&&Bh(s)&&!np(s)?r:s||gM(t)||r}const OM=async function(t){const a=this.getOffsetParent||dw,r=this.getDimensions,s=await r(t.floating);return{reference:TM(t.reference,await a(t.floating),t.strategy),floating:{x:0,y:0,width:s.width,height:s.height}}};function AM(t){return da(t).direction==="rtl"}const kM={convertOffsetParentRelativeRectToViewportRelativeRect:bM,getDocumentElement:Ta,getClippingRect:EM,getOffsetParent:dw,getElementRects:OM,getClientRects:wM,getDimensions:RM,getScale:ks,isElement:ua,isRTL:AM};function fw(t,a){return t.x===a.x&&t.y===a.y&&t.width===a.width&&t.height===a.height}function MM(t,a){let r=null,s;const o=Ta(t);function u(){var f;clearTimeout(s),(f=r)==null||f.disconnect(),r=null}function d(f,m){f===void 0&&(f=!1),m===void 0&&(m=1),u();const p=t.getBoundingClientRect(),{left:x,top:y,width:w,height:S}=p;if(f||a(),!w||!S)return;const N=Jc(y),j=Jc(o.clientWidth-(x+w)),R=Jc(o.clientHeight-(y+S)),T=Jc(x),_={rootMargin:-N+"px "+-j+"px "+-R+"px "+-T+"px",threshold:Mn(0,Gr(1,m))||1};let k=!0;function L(z){const C=z[0].intersectionRatio;if(C!==m){if(!k)return d();C?d(!1,C):s=setTimeout(()=>{d(!1,1e-7)},1e3)}C===1&&!fw(p,t.getBoundingClientRect())&&d(),k=!1}try{r=new IntersectionObserver(L,{..._,root:o.ownerDocument})}catch{r=new IntersectionObserver(L,_)}r.observe(t)}return d(!0),u}function DM(t,a,r,s){s===void 0&&(s={});const{ancestorScroll:o=!0,ancestorResize:u=!0,elementResize:d=typeof ResizeObserver=="function",layoutShift:f=typeof IntersectionObserver=="function",animationFrame:m=!1}=s,p=rp(t),x=o||u?[...p?fi(p):[],...fi(a)]:[];x.forEach(T=>{o&&T.addEventListener("scroll",r,{passive:!0}),u&&T.addEventListener("resize",r)});const y=p&&f?MM(p,r):null;let w=-1,S=null;d&&(S=new ResizeObserver(T=>{let[E]=T;E&&E.target===p&&S&&(S.unobserve(a),cancelAnimationFrame(w),w=requestAnimationFrame(()=>{var _;(_=S)==null||_.observe(a)})),r()}),p&&!m&&S.observe(p),S.observe(a));let N,j=m?Ol(t):null;m&&R();function R(){const T=Ol(t);j&&!fw(j,T)&&r(),j=T,N=requestAnimationFrame(R)}return r(),()=>{var T;x.forEach(E=>{o&&E.removeEventListener("scroll",r),u&&E.removeEventListener("resize",r)}),y?.(),(T=S)==null||T.disconnect(),S=null,m&&cancelAnimationFrame(N)}}const LM=lM,zM=sM,PM=nM,UM=iM,HM=aM,K0=tM,BM=oM,$M=(t,a,r)=>{const s=new Map,o={platform:kM,...r},u={...o.platform,_c:s};return eM(t,a,{...o,platform:u})};var FM=typeof document<"u",IM=function(){},iu=FM?v.useLayoutEffect:IM;function bu(t,a){if(t===a)return!0;if(typeof t!=typeof a)return!1;if(typeof t=="function"&&t.toString()===a.toString())return!0;let r,s,o;if(t&&a&&typeof t=="object"){if(Array.isArray(t)){if(r=t.length,r!==a.length)return!1;for(s=r;s--!==0;)if(!bu(t[s],a[s]))return!1;return!0}if(o=Object.keys(t),r=o.length,r!==Object.keys(a).length)return!1;for(s=r;s--!==0;)if(!{}.hasOwnProperty.call(a,o[s]))return!1;for(s=r;s--!==0;){const u=o[s];if(!(u==="_owner"&&t.$$typeof)&&!bu(t[u],a[u]))return!1}return!0}return t!==t&&a!==a}function hw(t){return typeof window>"u"?1:(t.ownerDocument.defaultView||window).devicePixelRatio||1}function Y0(t,a){const r=hw(t);return Math.round(a*r)/r}function $h(t){const a=v.useRef(t);return iu(()=>{a.current=t}),a}function qM(t){t===void 0&&(t={});const{placement:a="bottom",strategy:r="absolute",middleware:s=[],platform:o,elements:{reference:u,floating:d}={},transform:f=!0,whileElementsMounted:m,open:p}=t,[x,y]=v.useState({x:0,y:0,strategy:r,placement:a,middlewareData:{},isPositioned:!1}),[w,S]=v.useState(s);bu(w,s)||S(s);const[N,j]=v.useState(null),[R,T]=v.useState(null),E=v.useCallback(H=>{H!==z.current&&(z.current=H,j(H))},[]),_=v.useCallback(H=>{H!==C.current&&(C.current=H,T(H))},[]),k=u||N,L=d||R,z=v.useRef(null),C=v.useRef(null),U=v.useRef(x),K=m!=null,Z=$h(m),re=$h(o),ie=$h(p),le=v.useCallback(()=>{if(!z.current||!C.current)return;const H={placement:a,strategy:r,middleware:w};re.current&&(H.platform=re.current),$M(z.current,C.current,H).then(oe=>{const me={...oe,isPositioned:ie.current!==!1};P.current&&!bu(U.current,me)&&(U.current=me,Hs.flushSync(()=>{y(me)}))})},[w,a,r,re,ie]);iu(()=>{p===!1&&U.current.isPositioned&&(U.current.isPositioned=!1,y(H=>({...H,isPositioned:!1})))},[p]);const P=v.useRef(!1);iu(()=>(P.current=!0,()=>{P.current=!1}),[]),iu(()=>{if(k&&(z.current=k),L&&(C.current=L),k&&L){if(Z.current)return Z.current(k,L,le);le()}},[k,L,le,Z,K]);const F=v.useMemo(()=>({reference:z,floating:C,setReference:E,setFloating:_}),[E,_]),M=v.useMemo(()=>({reference:k,floating:L}),[k,L]),V=v.useMemo(()=>{const H={position:r,left:0,top:0};if(!M.floating)return H;const oe=Y0(M.floating,x.x),me=Y0(M.floating,x.y);return f?{...H,transform:"translate("+oe+"px, "+me+"px)",...hw(M.floating)>=1.5&&{willChange:"transform"}}:{position:r,left:oe,top:me}},[r,f,M.floating,x.x,x.y]);return v.useMemo(()=>({...x,update:le,refs:F,elements:M,floatingStyles:V}),[x,le,F,M,V])}const VM=t=>{function a(r){return{}.hasOwnProperty.call(r,"current")}return{name:"arrow",options:t,fn(r){const{element:s,padding:o}=typeof t=="function"?t(r):t;return s&&a(s)?s.current!=null?K0({element:s.current,padding:o}).fn(r):{}:s?K0({element:s,padding:o}).fn(r):{}}}},GM=(t,a)=>({...LM(t),options:[t,a]}),KM=(t,a)=>({...zM(t),options:[t,a]}),YM=(t,a)=>({...BM(t),options:[t,a]}),XM=(t,a)=>({...PM(t),options:[t,a]}),QM=(t,a)=>({...UM(t),options:[t,a]}),ZM=(t,a)=>({...HM(t),options:[t,a]}),JM=(t,a)=>({...VM(t),options:[t,a]});var WM="Arrow",mw=v.forwardRef((t,a)=>{const{children:r,width:s=10,height:o=5,...u}=t;return c.jsx(We.svg,{...u,ref:a,width:s,height:o,viewBox:"0 0 30 10",preserveAspectRatio:"none",children:t.asChild?r:c.jsx("polygon",{points:"0,0 30,0 15,10"})})});mw.displayName=WM;var eD=mw;function lp(t){const[a,r]=v.useState(void 0);return fn(()=>{if(t){r({width:t.offsetWidth,height:t.offsetHeight});const s=new ResizeObserver(o=>{if(!Array.isArray(o)||!o.length)return;const u=o[0];let d,f;if("borderBoxSize"in u){const m=u.borderBoxSize,p=Array.isArray(m)?m[0]:m;d=p.inlineSize,f=p.blockSize}else d=t.offsetWidth,f=t.offsetHeight;r({width:d,height:f})});return s.observe(t,{box:"border-box"}),()=>s.unobserve(t)}else r(void 0)},[t]),a}var sp="Popper",[pw,Gs]=Ra(sp),[tD,gw]=pw(sp),vw=t=>{const{__scopePopper:a,children:r}=t,[s,o]=v.useState(null);return c.jsx(tD,{scope:a,anchor:s,onAnchorChange:o,children:r})};vw.displayName=sp;var yw="PopperAnchor",xw=v.forwardRef((t,a)=>{const{__scopePopper:r,virtualRef:s,...o}=t,u=gw(yw,r),d=v.useRef(null),f=bt(a,d),m=v.useRef(null);return v.useEffect(()=>{const p=m.current;m.current=s?.current||d.current,p!==m.current&&u.onAnchorChange(m.current)}),s?null:c.jsx(We.div,{...o,ref:f})});xw.displayName=yw;var op="PopperContent",[nD,aD]=pw(op),bw=v.forwardRef((t,a)=>{const{__scopePopper:r,side:s="bottom",sideOffset:o=0,align:u="center",alignOffset:d=0,arrowPadding:f=0,avoidCollisions:m=!0,collisionBoundary:p=[],collisionPadding:x=0,sticky:y="partial",hideWhenDetached:w=!1,updatePositionStrategy:S="optimized",onPlaced:N,...j}=t,R=gw(op,r),[T,E]=v.useState(null),_=bt(a,I=>E(I)),[k,L]=v.useState(null),z=lp(k),C=z?.width??0,U=z?.height??0,K=s+(u!=="center"?"-"+u:""),Z=typeof x=="number"?x:{top:0,right:0,bottom:0,left:0,...x},re=Array.isArray(p)?p:[p],ie=re.length>0,le={padding:Z,boundary:re.filter(lD),altBoundary:ie},{refs:P,floatingStyles:F,placement:M,isPositioned:V,middlewareData:H}=qM({strategy:"fixed",placement:K,whileElementsMounted:(...I)=>DM(...I,{animationFrame:S==="always"}),elements:{reference:R.anchor},middleware:[GM({mainAxis:o+U,alignmentAxis:d}),m&&KM({mainAxis:!0,crossAxis:!1,limiter:y==="partial"?YM():void 0,...le}),m&&XM({...le}),QM({...le,apply:({elements:I,rects:xe,availableWidth:be,availableHeight:Ce})=>{const{width:Fe,height:Ue}=xe.reference,_t=I.floating.style;_t.setProperty("--radix-popper-available-width",`${be}px`),_t.setProperty("--radix-popper-available-height",`${Ce}px`),_t.setProperty("--radix-popper-anchor-width",`${Fe}px`),_t.setProperty("--radix-popper-anchor-height",`${Ue}px`)}}),k&&JM({element:k,padding:f}),sD({arrowWidth:C,arrowHeight:U}),w&&ZM({strategy:"referenceHidden",...le})]}),[oe,me]=_w(M),O=qr(N);fn(()=>{V&&O?.()},[V,O]);const D=H.arrow?.x,G=H.arrow?.y,Q=H.arrow?.centerOffset!==0,[ae,ve]=v.useState();return fn(()=>{T&&ve(window.getComputedStyle(T).zIndex)},[T]),c.jsx("div",{ref:P.setFloating,"data-radix-popper-content-wrapper":"",style:{...F,transform:V?F.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:ae,"--radix-popper-transform-origin":[H.transformOrigin?.x,H.transformOrigin?.y].join(" "),...H.hide?.referenceHidden&&{visibility:"hidden",pointerEvents:"none"}},dir:t.dir,children:c.jsx(nD,{scope:r,placedSide:oe,onArrowChange:L,arrowX:D,arrowY:G,shouldHideArrow:Q,children:c.jsx(We.div,{"data-side":oe,"data-align":me,...j,ref:_,style:{...j.style,animation:V?void 0:"none"}})})})});bw.displayName=op;var ww="PopperArrow",rD={top:"bottom",right:"left",bottom:"top",left:"right"},Sw=v.forwardRef(function(a,r){const{__scopePopper:s,...o}=a,u=aD(ww,s),d=rD[u.placedSide];return c.jsx("span",{ref:u.onArrowChange,style:{position:"absolute",left:u.arrowX,top:u.arrowY,[d]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[u.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[u.placedSide],visibility:u.shouldHideArrow?"hidden":void 0},children:c.jsx(eD,{...o,ref:r,style:{...o.style,display:"block"}})})});Sw.displayName=ww;function lD(t){return t!==null}var sD=t=>({name:"transformOrigin",options:t,fn(a){const{placement:r,rects:s,middlewareData:o}=a,d=o.arrow?.centerOffset!==0,f=d?0:t.arrowWidth,m=d?0:t.arrowHeight,[p,x]=_w(r),y={start:"0%",center:"50%",end:"100%"}[x],w=(o.arrow?.x??0)+f/2,S=(o.arrow?.y??0)+m/2;let N="",j="";return p==="bottom"?(N=d?y:`${w}px`,j=`${-m}px`):p==="top"?(N=d?y:`${w}px`,j=`${s.floating.height+m}px`):p==="right"?(N=`${-m}px`,j=d?y:`${S}px`):p==="left"&&(N=`${s.floating.width+m}px`,j=d?y:`${S}px`),{data:{x:N,y:j}}}});function _w(t){const[a,r="center"]=t.split("-");return[a,r]}var ip=vw,Iu=xw,cp=bw,up=Sw,jw=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"}),oD="VisuallyHidden",Nw=v.forwardRef((t,a)=>c.jsx(We.span,{...t,ref:a,style:{...jw,...t.style}}));Nw.displayName=oD;var iD=Nw,[qu]=Ra("Tooltip",[Gs]),Vu=Gs(),Cw="TooltipProvider",cD=700,mm="tooltip.open",[uD,dp]=qu(Cw),Ew=t=>{const{__scopeTooltip:a,delayDuration:r=cD,skipDelayDuration:s=300,disableHoverableContent:o=!1,children:u}=t,d=v.useRef(!0),f=v.useRef(!1),m=v.useRef(0);return v.useEffect(()=>{const p=m.current;return()=>window.clearTimeout(p)},[]),c.jsx(uD,{scope:a,isOpenDelayedRef:d,delayDuration:r,onOpen:v.useCallback(()=>{window.clearTimeout(m.current),d.current=!1},[]),onClose:v.useCallback(()=>{window.clearTimeout(m.current),m.current=window.setTimeout(()=>d.current=!0,s)},[s]),isPointerInTransitRef:f,onPointerInTransitChange:v.useCallback(p=>{f.current=p},[]),disableHoverableContent:o,children:u})};Ew.displayName=Cw;var hi="Tooltip",[dD,Gu]=qu(hi),Rw=t=>{const{__scopeTooltip:a,children:r,open:s,defaultOpen:o,onOpenChange:u,disableHoverableContent:d,delayDuration:f}=t,m=dp(hi,t.__scopeTooltip),p=Vu(a),[x,y]=v.useState(null),w=dn(),S=v.useRef(0),N=d??m.disableHoverableContent,j=f??m.delayDuration,R=v.useRef(!1),[T,E]=tr({prop:s,defaultProp:o??!1,onChange:C=>{C?(m.onOpen(),document.dispatchEvent(new CustomEvent(mm))):m.onClose(),u?.(C)},caller:hi}),_=v.useMemo(()=>T?R.current?"delayed-open":"instant-open":"closed",[T]),k=v.useCallback(()=>{window.clearTimeout(S.current),S.current=0,R.current=!1,E(!0)},[E]),L=v.useCallback(()=>{window.clearTimeout(S.current),S.current=0,E(!1)},[E]),z=v.useCallback(()=>{window.clearTimeout(S.current),S.current=window.setTimeout(()=>{R.current=!0,E(!0),S.current=0},j)},[j,E]);return v.useEffect(()=>()=>{S.current&&(window.clearTimeout(S.current),S.current=0)},[]),c.jsx(ip,{...p,children:c.jsx(dD,{scope:a,contentId:w,open:T,stateAttribute:_,trigger:x,onTriggerChange:y,onTriggerEnter:v.useCallback(()=>{m.isOpenDelayedRef.current?z():k()},[m.isOpenDelayedRef,z,k]),onTriggerLeave:v.useCallback(()=>{N?L():(window.clearTimeout(S.current),S.current=0)},[L,N]),onOpen:k,onClose:L,disableHoverableContent:N,children:r})})};Rw.displayName=hi;var pm="TooltipTrigger",Tw=v.forwardRef((t,a)=>{const{__scopeTooltip:r,...s}=t,o=Gu(pm,r),u=dp(pm,r),d=Vu(r),f=v.useRef(null),m=bt(a,f,o.onTriggerChange),p=v.useRef(!1),x=v.useRef(!1),y=v.useCallback(()=>p.current=!1,[]);return v.useEffect(()=>()=>document.removeEventListener("pointerup",y),[y]),c.jsx(Iu,{asChild:!0,...d,children:c.jsx(We.button,{"aria-describedby":o.open?o.contentId:void 0,"data-state":o.stateAttribute,...s,ref:m,onPointerMove:Ie(t.onPointerMove,w=>{w.pointerType!=="touch"&&!x.current&&!u.isPointerInTransitRef.current&&(o.onTriggerEnter(),x.current=!0)}),onPointerLeave:Ie(t.onPointerLeave,()=>{o.onTriggerLeave(),x.current=!1}),onPointerDown:Ie(t.onPointerDown,()=>{o.open&&o.onClose(),p.current=!0,document.addEventListener("pointerup",y,{once:!0})}),onFocus:Ie(t.onFocus,()=>{p.current||o.onOpen()}),onBlur:Ie(t.onBlur,o.onClose),onClick:Ie(t.onClick,o.onClose)})})});Tw.displayName=pm;var fD="TooltipPortal",[mL,hD]=qu(fD,{forceMount:void 0}),zs="TooltipContent",Ow=v.forwardRef((t,a)=>{const r=hD(zs,t.__scopeTooltip),{forceMount:s=r.forceMount,side:o="top",...u}=t,d=Gu(zs,t.__scopeTooltip);return c.jsx(ir,{present:s||d.open,children:d.disableHoverableContent?c.jsx(Aw,{side:o,...u,ref:a}):c.jsx(mD,{side:o,...u,ref:a})})}),mD=v.forwardRef((t,a)=>{const r=Gu(zs,t.__scopeTooltip),s=dp(zs,t.__scopeTooltip),o=v.useRef(null),u=bt(a,o),[d,f]=v.useState(null),{trigger:m,onClose:p}=r,x=o.current,{onPointerInTransitChange:y}=s,w=v.useCallback(()=>{f(null),y(!1)},[y]),S=v.useCallback((N,j)=>{const R=N.currentTarget,T={x:N.clientX,y:N.clientY},E=xD(T,R.getBoundingClientRect()),_=bD(T,E),k=wD(j.getBoundingClientRect()),L=_D([..._,...k]);f(L),y(!0)},[y]);return v.useEffect(()=>()=>w(),[w]),v.useEffect(()=>{if(m&&x){const N=R=>S(R,x),j=R=>S(R,m);return m.addEventListener("pointerleave",N),x.addEventListener("pointerleave",j),()=>{m.removeEventListener("pointerleave",N),x.removeEventListener("pointerleave",j)}}},[m,x,S,w]),v.useEffect(()=>{if(d){const N=j=>{const R=j.target,T={x:j.clientX,y:j.clientY},E=m?.contains(R)||x?.contains(R),_=!SD(T,d);E?w():_&&(w(),p())};return document.addEventListener("pointermove",N),()=>document.removeEventListener("pointermove",N)}},[m,x,d,p,w]),c.jsx(Aw,{...t,ref:u})}),[pD,gD]=qu(hi,{isInside:!1}),vD=gA("TooltipContent"),Aw=v.forwardRef((t,a)=>{const{__scopeTooltip:r,children:s,"aria-label":o,onEscapeKeyDown:u,onPointerDownOutside:d,...f}=t,m=Gu(zs,r),p=Vu(r),{onClose:x}=m;return v.useEffect(()=>(document.addEventListener(mm,x),()=>document.removeEventListener(mm,x)),[x]),v.useEffect(()=>{if(m.trigger){const y=w=>{w.target?.contains(m.trigger)&&x()};return window.addEventListener("scroll",y,{capture:!0}),()=>window.removeEventListener("scroll",y,{capture:!0})}},[m.trigger,x]),c.jsx(xi,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:u,onPointerDownOutside:d,onFocusOutside:y=>y.preventDefault(),onDismiss:x,children:c.jsxs(cp,{"data-state":m.stateAttribute,...p,...f,ref:a,style:{...f.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:[c.jsx(vD,{children:s}),c.jsx(pD,{scope:r,isInside:!0,children:c.jsx(iD,{id:m.contentId,role:"tooltip",children:o||s})})]})})});Ow.displayName=zs;var kw="TooltipArrow",yD=v.forwardRef((t,a)=>{const{__scopeTooltip:r,...s}=t,o=Vu(r);return gD(kw,r).isInside?null:c.jsx(up,{...o,...s,ref:a})});yD.displayName=kw;function xD(t,a){const r=Math.abs(a.top-t.y),s=Math.abs(a.bottom-t.y),o=Math.abs(a.right-t.x),u=Math.abs(a.left-t.x);switch(Math.min(r,s,o,u)){case u:return"left";case o:return"right";case r:return"top";case s:return"bottom";default:throw new Error("unreachable")}}function bD(t,a,r=5){const s=[];switch(a){case"top":s.push({x:t.x-r,y:t.y+r},{x:t.x+r,y:t.y+r});break;case"bottom":s.push({x:t.x-r,y:t.y-r},{x:t.x+r,y:t.y-r});break;case"left":s.push({x:t.x+r,y:t.y-r},{x:t.x+r,y:t.y+r});break;case"right":s.push({x:t.x-r,y:t.y-r},{x:t.x-r,y:t.y+r});break}return s}function wD(t){const{top:a,right:r,bottom:s,left:o}=t;return[{x:o,y:a},{x:r,y:a},{x:r,y:s},{x:o,y:s}]}function SD(t,a){const{x:r,y:s}=t;let o=!1;for(let u=0,d=a.length-1;u<a.length;d=u++){const f=a[u],m=a[d],p=f.x,x=f.y,y=m.x,w=m.y;x>s!=w>s&&r<(y-p)*(s-x)/(w-x)+p&&(o=!o)}return o}function _D(t){const a=t.slice();return a.sort((r,s)=>r.x<s.x?-1:r.x>s.x?1:r.y<s.y?-1:r.y>s.y?1:0),jD(a)}function jD(t){if(t.length<=1)return t.slice();const a=[];for(let s=0;s<t.length;s++){const o=t[s];for(;a.length>=2;){const u=a[a.length-1],d=a[a.length-2];if((u.x-d.x)*(o.y-d.y)>=(u.y-d.y)*(o.x-d.x))a.pop();else break}a.push(o)}a.pop();const r=[];for(let s=t.length-1;s>=0;s--){const o=t[s];for(;r.length>=2;){const u=r[r.length-1],d=r[r.length-2];if((u.x-d.x)*(o.y-d.y)>=(u.y-d.y)*(o.x-d.x))r.pop();else break}r.push(o)}return r.pop(),a.length===1&&r.length===1&&a[0].x===r[0].x&&a[0].y===r[0].y?a:a.concat(r)}var ND=Ew,CD=Rw,ED=Tw,Mw=Ow;const wu=ND,ri=CD,li=ED,Ms=v.forwardRef(({className:t,sideOffset:a=4,...r},s)=>c.jsx(Mw,{ref:s,sideOffset:a,className:Ke("z-50 overflow-hidden rounded-md bg-gray-900 px-3 py-1.5 text-xs text-white animate-in fade-in-0 zoom-in-95","data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95","data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2","data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",t),...r}));Ms.displayName=Mw.displayName;var X0=1,RD=.9,TD=.8,OD=.17,Fh=.1,Ih=.999,AD=.9999,kD=.99,MD=/[\\\/_+.#"@\[\(\{&]/,DD=/[\\\/_+.#"@\[\(\{&]/g,LD=/[\s-]/,Dw=/[\s-]/g;function gm(t,a,r,s,o,u,d){if(u===a.length)return o===t.length?X0:kD;var f=`${o},${u}`;if(d[f]!==void 0)return d[f];for(var m=s.charAt(u),p=r.indexOf(m,o),x=0,y,w,S,N;p>=0;)y=gm(t,a,r,s,p+1,u+1,d),y>x&&(p===o?y*=X0:MD.test(t.charAt(p-1))?(y*=TD,S=t.slice(o,p-1).match(DD),S&&o>0&&(y*=Math.pow(Ih,S.length))):LD.test(t.charAt(p-1))?(y*=RD,N=t.slice(o,p-1).match(Dw),N&&o>0&&(y*=Math.pow(Ih,N.length))):(y*=OD,o>0&&(y*=Math.pow(Ih,p-o))),t.charAt(p)!==a.charAt(u)&&(y*=AD)),(y<Fh&&r.charAt(p-1)===s.charAt(u+1)||s.charAt(u+1)===s.charAt(u)&&r.charAt(p-1)!==s.charAt(u))&&(w=gm(t,a,r,s,p+1,u+2,d),w*Fh>y&&(y=w*Fh)),y>x&&(x=y),p=r.indexOf(m,p+1);return d[f]=x,x}function Q0(t){return t.toLowerCase().replace(Dw," ")}function zD(t,a,r){return t=r&&r.length>0?`${t+" "+r.join(" ")}`:t,gm(t,a,Q0(t),Q0(a),0,0,{})}var Go='[cmdk-group=""]',qh='[cmdk-group-items=""]',PD='[cmdk-group-heading=""]',Lw='[cmdk-item=""]',Z0=`${Lw}:not([aria-disabled="true"])`,vm="cmdk-item-select",_s="data-value",UD=(t,a,r)=>zD(t,a,r),zw=v.createContext(void 0),wi=()=>v.useContext(zw),Pw=v.createContext(void 0),fp=()=>v.useContext(Pw),Uw=v.createContext(void 0),Hw=v.forwardRef((t,a)=>{let r=js(()=>{var D,G;return{search:"",value:(G=(D=t.value)!=null?D:t.defaultValue)!=null?G:"",selectedItemId:void 0,filtered:{count:0,items:new Map,groups:new Set}}}),s=js(()=>new Set),o=js(()=>new Map),u=js(()=>new Map),d=js(()=>new Set),f=Bw(t),{label:m,children:p,value:x,onValueChange:y,filter:w,shouldFilter:S,loop:N,disablePointerSelection:j=!1,vimBindings:R=!0,...T}=t,E=dn(),_=dn(),k=dn(),L=v.useRef(null),z=XD();Al(()=>{if(x!==void 0){let D=x.trim();r.current.value=D,C.emit()}},[x]),Al(()=>{z(6,le)},[]);let C=v.useMemo(()=>({subscribe:D=>(d.current.add(D),()=>d.current.delete(D)),snapshot:()=>r.current,setState:(D,G,Q)=>{var ae,ve,I,xe;if(!Object.is(r.current[D],G)){if(r.current[D]=G,D==="search")ie(),Z(),z(1,re);else if(D==="value"){if(document.activeElement.hasAttribute("cmdk-input")||document.activeElement.hasAttribute("cmdk-root")){let be=document.getElementById(k);be?be.focus():(ae=document.getElementById(E))==null||ae.focus()}if(z(7,()=>{var be;r.current.selectedItemId=(be=P())==null?void 0:be.id,C.emit()}),Q||z(5,le),((ve=f.current)==null?void 0:ve.value)!==void 0){let be=G??"";(xe=(I=f.current).onValueChange)==null||xe.call(I,be);return}}C.emit()}},emit:()=>{d.current.forEach(D=>D())}}),[]),U=v.useMemo(()=>({value:(D,G,Q)=>{var ae;G!==((ae=u.current.get(D))==null?void 0:ae.value)&&(u.current.set(D,{value:G,keywords:Q}),r.current.filtered.items.set(D,K(G,Q)),z(2,()=>{Z(),C.emit()}))},item:(D,G)=>(s.current.add(D),G&&(o.current.has(G)?o.current.get(G).add(D):o.current.set(G,new Set([D]))),z(3,()=>{ie(),Z(),r.current.value||re(),C.emit()}),()=>{u.current.delete(D),s.current.delete(D),r.current.filtered.items.delete(D);let Q=P();z(4,()=>{ie(),Q?.getAttribute("id")===D&&re(),C.emit()})}),group:D=>(o.current.has(D)||o.current.set(D,new Set),()=>{u.current.delete(D),o.current.delete(D)}),filter:()=>f.current.shouldFilter,label:m||t["aria-label"],getDisablePointerSelection:()=>f.current.disablePointerSelection,listId:E,inputId:k,labelId:_,listInnerRef:L}),[]);function K(D,G){var Q,ae;let ve=(ae=(Q=f.current)==null?void 0:Q.filter)!=null?ae:UD;return D?ve(D,r.current.search,G):0}function Z(){if(!r.current.search||f.current.shouldFilter===!1)return;let D=r.current.filtered.items,G=[];r.current.filtered.groups.forEach(ae=>{let ve=o.current.get(ae),I=0;ve.forEach(xe=>{let be=D.get(xe);I=Math.max(be,I)}),G.push([ae,I])});let Q=L.current;F().sort((ae,ve)=>{var I,xe;let be=ae.getAttribute("id"),Ce=ve.getAttribute("id");return((I=D.get(Ce))!=null?I:0)-((xe=D.get(be))!=null?xe:0)}).forEach(ae=>{let ve=ae.closest(qh);ve?ve.appendChild(ae.parentElement===ve?ae:ae.closest(`${qh} > *`)):Q.appendChild(ae.parentElement===Q?ae:ae.closest(`${qh} > *`))}),G.sort((ae,ve)=>ve[1]-ae[1]).forEach(ae=>{var ve;let I=(ve=L.current)==null?void 0:ve.querySelector(`${Go}[${_s}="${encodeURIComponent(ae[0])}"]`);I?.parentElement.appendChild(I)})}function re(){let D=F().find(Q=>Q.getAttribute("aria-disabled")!=="true"),G=D?.getAttribute(_s);C.setState("value",G||void 0)}function ie(){var D,G,Q,ae;if(!r.current.search||f.current.shouldFilter===!1){r.current.filtered.count=s.current.size;return}r.current.filtered.groups=new Set;let ve=0;for(let I of s.current){let xe=(G=(D=u.current.get(I))==null?void 0:D.value)!=null?G:"",be=(ae=(Q=u.current.get(I))==null?void 0:Q.keywords)!=null?ae:[],Ce=K(xe,be);r.current.filtered.items.set(I,Ce),Ce>0&&ve++}for(let[I,xe]of o.current)for(let be of xe)if(r.current.filtered.items.get(be)>0){r.current.filtered.groups.add(I);break}r.current.filtered.count=ve}function le(){var D,G,Q;let ae=P();ae&&(((D=ae.parentElement)==null?void 0:D.firstChild)===ae&&((Q=(G=ae.closest(Go))==null?void 0:G.querySelector(PD))==null||Q.scrollIntoView({block:"nearest"})),ae.scrollIntoView({block:"nearest"}))}function P(){var D;return(D=L.current)==null?void 0:D.querySelector(`${Lw}[aria-selected="true"]`)}function F(){var D;return Array.from(((D=L.current)==null?void 0:D.querySelectorAll(Z0))||[])}function M(D){let G=F()[D];G&&C.setState("value",G.getAttribute(_s))}function V(D){var G;let Q=P(),ae=F(),ve=ae.findIndex(xe=>xe===Q),I=ae[ve+D];(G=f.current)!=null&&G.loop&&(I=ve+D<0?ae[ae.length-1]:ve+D===ae.length?ae[0]:ae[ve+D]),I&&C.setState("value",I.getAttribute(_s))}function H(D){let G=P(),Q=G?.closest(Go),ae;for(;Q&&!ae;)Q=D>0?KD(Q,Go):YD(Q,Go),ae=Q?.querySelector(Z0);ae?C.setState("value",ae.getAttribute(_s)):V(D)}let oe=()=>M(F().length-1),me=D=>{D.preventDefault(),D.metaKey?oe():D.altKey?H(1):V(1)},O=D=>{D.preventDefault(),D.metaKey?M(0):D.altKey?H(-1):V(-1)};return v.createElement(or.div,{ref:a,tabIndex:-1,...T,"cmdk-root":"",onKeyDown:D=>{var G;(G=T.onKeyDown)==null||G.call(T,D);let Q=D.nativeEvent.isComposing||D.keyCode===229;if(!(D.defaultPrevented||Q))switch(D.key){case"n":case"j":{R&&D.ctrlKey&&me(D);break}case"ArrowDown":{me(D);break}case"p":case"k":{R&&D.ctrlKey&&O(D);break}case"ArrowUp":{O(D);break}case"Home":{D.preventDefault(),M(0);break}case"End":{D.preventDefault(),oe();break}case"Enter":{D.preventDefault();let ae=P();if(ae){let ve=new Event(vm);ae.dispatchEvent(ve)}}}}},v.createElement("label",{"cmdk-label":"",htmlFor:U.inputId,id:U.labelId,style:ZD},m),Ku(t,D=>v.createElement(Pw.Provider,{value:C},v.createElement(zw.Provider,{value:U},D))))}),HD=v.forwardRef((t,a)=>{var r,s;let o=dn(),u=v.useRef(null),d=v.useContext(Uw),f=wi(),m=Bw(t),p=(s=(r=m.current)==null?void 0:r.forceMount)!=null?s:d?.forceMount;Al(()=>{if(!p)return f.item(o,d?.id)},[p]);let x=$w(o,u,[t.value,t.children,u],t.keywords),y=fp(),w=Yr(z=>z.value&&z.value===x.current),S=Yr(z=>p||f.filter()===!1?!0:z.search?z.filtered.items.get(o)>0:!0);v.useEffect(()=>{let z=u.current;if(!(!z||t.disabled))return z.addEventListener(vm,N),()=>z.removeEventListener(vm,N)},[S,t.onSelect,t.disabled]);function N(){var z,C;j(),(C=(z=m.current).onSelect)==null||C.call(z,x.current)}function j(){y.setState("value",x.current,!0)}if(!S)return null;let{disabled:R,value:T,onSelect:E,forceMount:_,keywords:k,...L}=t;return v.createElement(or.div,{ref:Fr(u,a),...L,id:o,"cmdk-item":"",role:"option","aria-disabled":!!R,"aria-selected":!!w,"data-disabled":!!R,"data-selected":!!w,onPointerMove:R||f.getDisablePointerSelection()?void 0:j,onClick:R?void 0:N},t.children)}),BD=v.forwardRef((t,a)=>{let{heading:r,children:s,forceMount:o,...u}=t,d=dn(),f=v.useRef(null),m=v.useRef(null),p=dn(),x=wi(),y=Yr(S=>o||x.filter()===!1?!0:S.search?S.filtered.groups.has(d):!0);Al(()=>x.group(d),[]),$w(d,f,[t.value,t.heading,m]);let w=v.useMemo(()=>({id:d,forceMount:o}),[o]);return v.createElement(or.div,{ref:Fr(f,a),...u,"cmdk-group":"",role:"presentation",hidden:y?void 0:!0},r&&v.createElement("div",{ref:m,"cmdk-group-heading":"","aria-hidden":!0,id:p},r),Ku(t,S=>v.createElement("div",{"cmdk-group-items":"",role:"group","aria-labelledby":r?p:void 0},v.createElement(Uw.Provider,{value:w},S))))}),$D=v.forwardRef((t,a)=>{let{alwaysRender:r,...s}=t,o=v.useRef(null),u=Yr(d=>!d.search);return!r&&!u?null:v.createElement(or.div,{ref:Fr(o,a),...s,"cmdk-separator":"",role:"separator"})}),FD=v.forwardRef((t,a)=>{let{onValueChange:r,...s}=t,o=t.value!=null,u=fp(),d=Yr(p=>p.search),f=Yr(p=>p.selectedItemId),m=wi();return v.useEffect(()=>{t.value!=null&&u.setState("search",t.value)},[t.value]),v.createElement(or.input,{ref:a,...s,"cmdk-input":"",autoComplete:"off",autoCorrect:"off",spellCheck:!1,"aria-autocomplete":"list",role:"combobox","aria-expanded":!0,"aria-controls":m.listId,"aria-labelledby":m.labelId,"aria-activedescendant":f,id:m.inputId,type:"text",value:o?t.value:d,onChange:p=>{o||u.setState("search",p.target.value),r?.(p.target.value)}})}),ID=v.forwardRef((t,a)=>{let{children:r,label:s="Suggestions",...o}=t,u=v.useRef(null),d=v.useRef(null),f=Yr(p=>p.selectedItemId),m=wi();return v.useEffect(()=>{if(d.current&&u.current){let p=d.current,x=u.current,y,w=new ResizeObserver(()=>{y=requestAnimationFrame(()=>{let S=p.offsetHeight;x.style.setProperty("--cmdk-list-height",S.toFixed(1)+"px")})});return w.observe(p),()=>{cancelAnimationFrame(y),w.unobserve(p)}}},[]),v.createElement(or.div,{ref:Fr(u,a),...o,"cmdk-list":"",role:"listbox",tabIndex:-1,"aria-activedescendant":f,"aria-label":s,id:m.listId},Ku(t,p=>v.createElement("div",{ref:Fr(d,m.listInnerRef),"cmdk-list-sizer":""},p)))}),qD=v.forwardRef((t,a)=>{let{open:r,onOpenChange:s,overlayClassName:o,contentClassName:u,container:d,...f}=t;return v.createElement(J1,{open:r,onOpenChange:s},v.createElement(W1,{container:d},v.createElement(Zm,{"cmdk-overlay":"",className:o}),v.createElement(Jm,{"aria-label":t.label,"cmdk-dialog":"",className:u},v.createElement(Hw,{ref:a,...f}))))}),VD=v.forwardRef((t,a)=>Yr(r=>r.filtered.count===0)?v.createElement(or.div,{ref:a,...t,"cmdk-empty":"",role:"presentation"}):null),GD=v.forwardRef((t,a)=>{let{progress:r,children:s,label:o="Loading...",...u}=t;return v.createElement(or.div,{ref:a,...u,"cmdk-loading":"",role:"progressbar","aria-valuenow":r,"aria-valuemin":0,"aria-valuemax":100,"aria-label":o},Ku(t,d=>v.createElement("div",{"aria-hidden":!0},d)))}),Ks=Object.assign(Hw,{List:ID,Item:HD,Input:FD,Group:BD,Separator:$D,Dialog:qD,Empty:VD,Loading:GD});function KD(t,a){let r=t.nextElementSibling;for(;r;){if(r.matches(a))return r;r=r.nextElementSibling}}function YD(t,a){let r=t.previousElementSibling;for(;r;){if(r.matches(a))return r;r=r.previousElementSibling}}function Bw(t){let a=v.useRef(t);return Al(()=>{a.current=t}),a}var Al=typeof window>"u"?v.useEffect:v.useLayoutEffect;function js(t){let a=v.useRef();return a.current===void 0&&(a.current=t()),a}function Yr(t){let a=fp(),r=()=>t(a.snapshot());return v.useSyncExternalStore(a.subscribe,r,r)}function $w(t,a,r,s=[]){let o=v.useRef(),u=wi();return Al(()=>{var d;let f=(()=>{var p;for(let x of r){if(typeof x=="string")return x.trim();if(typeof x=="object"&&"current"in x)return x.current?(p=x.current.textContent)==null?void 0:p.trim():o.current}})(),m=s.map(p=>p.trim());u.value(t,f,m),(d=a.current)==null||d.setAttribute(_s,f),o.current=f}),o}var XD=()=>{let[t,a]=v.useState(),r=js(()=>new Map);return Al(()=>{r.current.forEach(s=>s()),r.current=new Map},[t]),(s,o)=>{r.current.set(s,o),a({})}};function QD(t){let a=t.type;return typeof a=="function"?a(t.props):"render"in a?a.render(t.props):t}function Ku({asChild:t,children:a},r){return t&&v.isValidElement(a)?v.cloneElement(QD(a),{ref:a.ref},r(a.props.children)):r(a)}var ZD={position:"absolute",width:"1px",height:"1px",padding:"0",margin:"-1px",overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",borderWidth:"0"};function hp({className:t,...a}){return c.jsx(Ks,{"data-slot":"command",className:Ke("bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md",t),...a})}function mp({className:t,...a}){return c.jsxs("div",{"data-slot":"command-input-wrapper",className:"flex h-9 items-center gap-2 border-b px-3",children:[c.jsx(Vm,{className:"size-4 shrink-0 opacity-50"}),c.jsx(Ks.Input,{"data-slot":"command-input",className:Ke("placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50",t),...a})]})}function pp({className:t,...a}){return c.jsx(Ks.List,{"data-slot":"command-list",className:Ke("max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto",t),...a})}function gp({...t}){return c.jsx(Ks.Empty,{"data-slot":"command-empty",className:"py-6 text-center text-sm",...t})}function vp({className:t,...a}){return c.jsx(Ks.Group,{"data-slot":"command-group",className:Ke("text-foreground [&_[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium",t),...a})}function yp({className:t,...a}){return c.jsx(Ks.Item,{"data-slot":"command-item",className:Ke("data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),...a})}var Yu="Popover",[Fw]=Ra(Yu,[Gs]),Si=Gs(),[JD,Qr]=Fw(Yu),Iw=t=>{const{__scopePopover:a,children:r,open:s,defaultOpen:o,onOpenChange:u,modal:d=!1}=t,f=Si(a),m=v.useRef(null),[p,x]=v.useState(!1),[y,w]=tr({prop:s,defaultProp:o??!1,onChange:u,caller:Yu});return c.jsx(ip,{...f,children:c.jsx(JD,{scope:a,contentId:dn(),triggerRef:m,open:y,onOpenChange:w,onOpenToggle:v.useCallback(()=>w(S=>!S),[w]),hasCustomAnchor:p,onCustomAnchorAdd:v.useCallback(()=>x(!0),[]),onCustomAnchorRemove:v.useCallback(()=>x(!1),[]),modal:d,children:r})})};Iw.displayName=Yu;var qw="PopoverAnchor",WD=v.forwardRef((t,a)=>{const{__scopePopover:r,...s}=t,o=Qr(qw,r),u=Si(r),{onCustomAnchorAdd:d,onCustomAnchorRemove:f}=o;return v.useEffect(()=>(d(),()=>f()),[d,f]),c.jsx(Iu,{...u,...s,ref:a})});WD.displayName=qw;var Vw="PopoverTrigger",Gw=v.forwardRef((t,a)=>{const{__scopePopover:r,...s}=t,o=Qr(Vw,r),u=Si(r),d=bt(a,o.triggerRef),f=c.jsx(We.button,{type:"button","aria-haspopup":"dialog","aria-expanded":o.open,"aria-controls":o.contentId,"data-state":Zw(o.open),...s,ref:d,onClick:Ie(t.onClick,o.onOpenToggle)});return o.hasCustomAnchor?f:c.jsx(Iu,{asChild:!0,...u,children:f})});Gw.displayName=Vw;var xp="PopoverPortal",[e4,t4]=Fw(xp,{forceMount:void 0}),Kw=t=>{const{__scopePopover:a,forceMount:r,children:s,container:o}=t,u=Qr(xp,a);return c.jsx(e4,{scope:a,forceMount:r,children:c.jsx(ir,{present:r||u.open,children:c.jsx(Lu,{asChild:!0,container:o,children:s})})})};Kw.displayName=xp;var Ps="PopoverContent",Yw=v.forwardRef((t,a)=>{const r=t4(Ps,t.__scopePopover),{forceMount:s=r.forceMount,...o}=t,u=Qr(Ps,t.__scopePopover);return c.jsx(ir,{present:s||u.open,children:u.modal?c.jsx(a4,{...o,ref:a}):c.jsx(r4,{...o,ref:a})})});Yw.displayName=Ps;var n4=Ds("PopoverContent.RemoveScroll"),a4=v.forwardRef((t,a)=>{const r=Qr(Ps,t.__scopePopover),s=v.useRef(null),o=bt(a,s),u=v.useRef(!1);return v.useEffect(()=>{const d=s.current;if(d)return Km(d)},[]),c.jsx(Pu,{as:n4,allowPinchZoom:!0,children:c.jsx(Xw,{...t,ref:o,trapFocus:r.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:Ie(t.onCloseAutoFocus,d=>{d.preventDefault(),u.current||r.triggerRef.current?.focus()}),onPointerDownOutside:Ie(t.onPointerDownOutside,d=>{const f=d.detail.originalEvent,m=f.button===0&&f.ctrlKey===!0,p=f.button===2||m;u.current=p},{checkForDefaultPrevented:!1}),onFocusOutside:Ie(t.onFocusOutside,d=>d.preventDefault(),{checkForDefaultPrevented:!1})})})}),r4=v.forwardRef((t,a)=>{const r=Qr(Ps,t.__scopePopover),s=v.useRef(!1),o=v.useRef(!1);return c.jsx(Xw,{...t,ref:a,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:u=>{t.onCloseAutoFocus?.(u),u.defaultPrevented||(s.current||r.triggerRef.current?.focus(),u.preventDefault()),s.current=!1,o.current=!1},onInteractOutside:u=>{t.onInteractOutside?.(u),u.defaultPrevented||(s.current=!0,u.detail.originalEvent.type==="pointerdown"&&(o.current=!0));const d=u.target;r.triggerRef.current?.contains(d)&&u.preventDefault(),u.detail.originalEvent.type==="focusin"&&o.current&&u.preventDefault()}})}),Xw=v.forwardRef((t,a)=>{const{__scopePopover:r,trapFocus:s,onOpenAutoFocus:o,onCloseAutoFocus:u,disableOutsidePointerEvents:d,onEscapeKeyDown:f,onPointerDownOutside:m,onFocusOutside:p,onInteractOutside:x,...y}=t,w=Qr(Ps,r),S=Si(r);return Gm(),c.jsx(Du,{asChild:!0,loop:!0,trapped:s,onMountAutoFocus:o,onUnmountAutoFocus:u,children:c.jsx(xi,{asChild:!0,disableOutsidePointerEvents:d,onInteractOutside:x,onEscapeKeyDown:f,onPointerDownOutside:m,onFocusOutside:p,onDismiss:()=>w.onOpenChange(!1),children:c.jsx(cp,{"data-state":Zw(w.open),role:"dialog",id:w.contentId,...S,...y,ref:a,style:{...y.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)"}})})})}),Qw="PopoverClose",l4=v.forwardRef((t,a)=>{const{__scopePopover:r,...s}=t,o=Qr(Qw,r);return c.jsx(We.button,{type:"button",...s,ref:a,onClick:Ie(t.onClick,()=>o.onOpenChange(!1))})});l4.displayName=Qw;var s4="PopoverArrow",o4=v.forwardRef((t,a)=>{const{__scopePopover:r,...s}=t,o=Si(r);return c.jsx(up,{...o,...s,ref:a})});o4.displayName=s4;function Zw(t){return t?"open":"closed"}var i4=Iw,c4=Gw,u4=Kw,d4=Yw;function Xu({...t}){return c.jsx(i4,{"data-slot":"popover",...t})}function Qu({...t}){return c.jsx(c4,{"data-slot":"popover-trigger",...t})}function Zu({className:t,align:a="center",sideOffset:r=4,...s}){return c.jsx(u4,{children:c.jsx(d4,{"data-slot":"popover-content",align:a,sideOffset:r,className:Ke("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden animate-fade-in",t),...s})})}function Ot({options:t,value:a,onChange:r,placeholder:s="Select an option...",searchPlaceholder:o="Search...",emptyPlaceholder:u="No options found."}){const[d,f]=v.useState(!1),m=t.find(p=>p.value===a);return c.jsxs(Xu,{open:d,onOpenChange:f,children:[c.jsx(Qu,{asChild:!0,children:c.jsxs(ye,{variant:"outline",role:"combobox","aria-expanded":d,className:"w-full justify-between transition-all-ease hover:scale-[1.02] active:scale-[0.98]",children:[m?m.label:s,c.jsx(qm,{className:"ml-2 h-4 w-4 shrink-0 opacity-50 transition-transform duration-200 group-data-[state=open]:rotate-180"})]})}),c.jsx(Zu,{className:"w-[--radix-popover-trigger-width] p-0 animate-fade-in",children:c.jsxs(hp,{children:[c.jsx(mp,{placeholder:o}),c.jsxs(pp,{children:[c.jsx(gp,{children:u}),c.jsx(vp,{children:t.map(p=>c.jsxs(yp,{value:p.value,onSelect:x=>{r(x===a?"":x),f(!1)},className:"transition-all-ease hover:bg-accent hover:text-accent-foreground",children:[c.jsx(Fs,{className:Ke("mr-2 h-4 w-4 transition-opacity",a===p.value?"opacity-100":"opacity-0")}),p.label]},p.value))})]})]})})]})}const f4=v.forwardRef(({options:t,value:a,onChange:r,onEnter:s,searchPlaceholder:o="Search...",emptyPlaceholder:u="No options found.",inputPlaceholder:d="Type or select..."},f)=>{const[m,p]=v.useState(!1),[x,y]=v.useState(a||""),w=v.useRef(null);v.useImperativeHandle(f,()=>w.current),v.useEffect(()=>{y(a||"")},[a]);const S=T=>{const E=T.target.value;y(E),r(E)},N=T=>{T.key==="Enter"&&x.trim()&&s&&(s(x.trim()),y(""))},j=T=>{y(T),r(T),s&&(s(T),y("")),p(!1)},R=()=>x;return v.useImperativeHandle(f,()=>({...w.current,value:x,getCurrentValue:R,clearInput:()=>{y(""),r("")}})),c.jsxs("div",{className:"relative",children:[c.jsx(at,{ref:w,value:x,onChange:S,onKeyDown:N,placeholder:d,className:"pr-10"}),c.jsxs(Xu,{open:m,onOpenChange:p,children:[c.jsx(Qu,{asChild:!0,children:c.jsx(ye,{variant:"ghost",size:"sm",className:"absolute right-0 top-0 h-full px-3 py-2 hover:bg-transparent",children:c.jsx(qm,{className:"h-4 w-4 opacity-50"})})}),c.jsx(Zu,{className:"w-[--radix-popover-trigger-width] p-0 animate-fade-in",children:c.jsxs(hp,{children:[c.jsx(mp,{placeholder:o}),c.jsxs(pp,{children:[c.jsx(gp,{children:u}),c.jsx(vp,{children:t.map(T=>c.jsxs(yp,{value:T.value,onSelect:()=>j(T.value),className:"transition-all-ease hover:bg-accent hover:text-accent-foreground",children:[c.jsx(Fs,{className:Ke("mr-2 h-4 w-4 transition-opacity",a===T.value?"opacity-100":"opacity-0")}),T.label]},T.value))})]})]})})]})]})});function h4(){const{t}=hn(),{config:a,setConfig:r}=Xr(),[s,o]=v.useState(!1),[u,d]=v.useState(null),[f,m]=v.useState(null),[p,x]=v.useState({}),[y,w]=v.useState({}),[S,N]=v.useState({}),[j,R]=v.useState([]),[T,E]=v.useState(null),[_,k]=v.useState(!1),[L,z]=v.useState([]),[C,U]=v.useState({}),[K,Z]=v.useState(null),[re,ie]=v.useState(null),[le,P]=v.useState(""),[F,M]=v.useState([]),[V,H]=v.useState([]),oe=v.useRef(null);if(v.useEffect(()=>{(async()=>{try{const he=await fetch("https://pub-0dc3e1677e894f07bbea11b17a29e032.r2.dev/providers.json");if(he.ok){const pe=await he.json();z(pe||[])}else console.error("Failed to fetch provider templates")}catch(he){console.error("Failed to fetch provider templates:",he)}})()},[]),v.useEffect(()=>{(async()=>{try{const he=await Je.get("/transformers");R(he.transformers)}catch(he){console.error("Failed to fetch transformers:",he)}})()},[]),v.useEffect(()=>{const ce=async()=>{try{const pe=await Je.getProviderHealth();M(pe.states||[])}catch(pe){console.error("Failed to fetch provider health:",pe)}};ce();const he=setInterval(ce,3e4);return()=>clearInterval(he)},[]),v.useEffect(()=>{const ce=async()=>{try{const pe=await Je.getProviderQuota();H(pe.quotas||[])}catch(pe){console.error("Failed to fetch provider quota:",pe)}};ce();const he=setInterval(ce,3e4);return()=>clearInterval(he)},[]),!a)return c.jsxs(oa,{className:"flex h-full flex-col rounded-lg border shadow-sm",children:[c.jsx(ja,{className:"flex flex-row items-center justify-between border-b p-4",children:c.jsx(Na,{className:"text-lg",children:t("providers.title")})}),c.jsx(ia,{className:"flex-grow flex items-center justify-center p-4",children:c.jsx("div",{className:"text-gray-500",children:"Loading providers configuration..."})})]});const me=Array.isArray(a.Providers)?a.Providers:[],O=()=>{const ce={name:"",api_base_url:"",api_key:"",models:[]};d(a.Providers.length),E(ce),k(!0),U(he=>({...he,[a.Providers.length]:!1})),Z(null),ie(null)},D=ce=>{const he=me.indexOf(qt[ce]),pe=a.Providers[he];d(he),E(JSON.parse(JSON.stringify(pe))),k(!1),U(fe=>({...fe,[he]:!1})),Z(null),ie(null)},G=async()=>{if(!T)return;if(!T.name||T.name.trim()===""){ie(t("providers.name_required"));return}const ce=T.name.trim();if(a.Providers.some((pe,fe)=>!_&&fe===u?!1:pe.name.toLowerCase()===ce.toLowerCase())){ie(t("providers.name_duplicate"));return}if(!T.api_key||T.api_key.trim()===""){Z(t("providers.api_key_required"));return}if(Z(null),ie(null),u!==null&&T){const pe=[...a.Providers];_?pe.push(T):pe[u]=T;const fe={...a,Providers:pe};r(fe),o(!0);try{await Je.updateConfig(fe)}catch(Te){console.error("Failed to persist provider changes:",Te)}finally{o(!1)}}u!==null&&U(pe=>{const fe={...pe};return delete fe[u],fe}),d(null),E(null),k(!1)},Q=()=>{u!==null&&(x(ce=>{const he={...ce};return delete he[u],he}),U(ce=>{const he={...ce};return delete he[u],he})),d(null),E(null),k(!1),Z(null),ie(null)},ae=ce=>{m(ce)},ve=async ce=>{const he=me.indexOf(qt[ce]),pe=[...a.Providers];pe.splice(he,1);const fe={...a,Providers:pe};r(fe),m(null);try{await Je.updateConfig(fe)}catch(Te){console.error("Failed to persist provider removal:",Te)}},I=(ce,he,pe)=>{if(T){const fe={...T,[he]:pe};E(fe)}},xe=(ce,he)=>{if(!he||!T)return;const pe={...T};pe.transformer||(pe.transformer={use:[]}),pe.transformer.use=[...pe.transformer.use,he],E(pe)},be=(ce,he)=>{if(!T)return;const pe={...T};if(pe.transformer){const fe=[...pe.transformer.use];fe.splice(he,1),pe.transformer.use=fe,fe.length===0&&Object.keys(pe.transformer).length===1&&delete pe.transformer}E(pe)},Ce=(ce,he,pe)=>{if(!pe||!T)return;const fe={...T};fe.transformer||(fe.transformer={use:[]}),fe.transformer[he]||(fe.transformer[he]={use:[]}),fe.transformer[he].use=[...fe.transformer[he].use,pe],E(fe)},Fe=(ce,he,pe)=>{if(!T)return;const fe={...T};if(fe.transformer&&fe.transformer[he]){const Te=[...fe.transformer[he].use];Te.splice(pe,1),fe.transformer[he].use=Te,Te.length===0&&Object.keys(fe.transformer[he]).length===1&&delete fe.transformer[he]}E(fe)},Ue=(ce,he,pe,fe)=>{if(!T)return;const Te={...T};if(Te.transformer||(Te.transformer={use:[]}),Te.transformer.use&&Te.transformer.use.length>he){const $e=Te.transformer.use[he];if(Array.isArray($e)){const qe=[...$e];if(qe.length>1&&typeof qe[1]=="object"&&qe[1]!==null){const Zt={...qe[1],[pe]:fe};qe[1]=Zt}else if(qe.length>1){const lt={[pe]:fe};qe.splice(1,qe.length-1,lt)}else{const lt={[pe]:fe};qe.push(lt)}Te.transformer.use[he]=qe}else{const qe={[pe]:fe};Te.transformer.use[he]=[$e,qe]}}E(Te)},_t=(ce,he,pe)=>{if(!T)return;const fe={...T};if(!fe.transformer?.use||fe.transformer.use.length<=he)return;const Te=fe.transformer.use[he];if(Array.isArray(Te)&&Te.length>1){const $e=[...Te];if(typeof $e[1]=="object"&&$e[1]!==null){const qe={...$e[1]};delete qe[pe],Object.keys(qe).length===0?$e.splice(1,1):$e[1]=qe,fe.transformer.use[he]=$e,E(fe)}}},At=(ce,he,pe,fe,Te)=>{if(!T)return;const $e={...T};if($e.transformer||($e.transformer={use:[]}),$e.transformer[he]||($e.transformer[he]={use:[]}),$e.transformer[he].use&&$e.transformer[he].use.length>pe){const qe=$e.transformer[he].use[pe];if(Array.isArray(qe)){const lt=[...qe];if(lt.length>1&&typeof lt[1]=="object"&<[1]!==null){const Wr={...lt[1],[fe]:Te};lt[1]=Wr}else if(lt.length>1){const Zt={[fe]:Te};lt.splice(1,lt.length-1,Zt)}else{const Zt={[fe]:Te};lt.push(Zt)}$e.transformer[he].use[pe]=lt}else{const lt={[fe]:Te};$e.transformer[he].use[pe]=[qe,lt]}}E($e)},Se=(ce,he,pe,fe)=>{if(!T)return;const Te={...T};if(!Te.transformer?.[he]?.use||Te.transformer[he].use.length<=pe)return;const $e=Te.transformer[he].use[pe];if(Array.isArray($e)&&$e.length>1){const qe=[...$e];if(typeof qe[1]=="object"&&qe[1]!==null){const lt={...qe[1]};delete lt[fe],Object.keys(lt).length===0?qe.splice(1,1):qe[1]=lt,Te.transformer[he].use[pe]=qe,E(Te)}}},ze=(ce,he)=>{if(!he.trim()||!T)return;const pe={...T},fe=Array.isArray(pe.models)?[...pe.models]:[];fe.includes(he.trim())||(fe.push(he.trim()),pe.models=fe,E(pe))},Ze=ce=>{if(ce)try{const he=JSON.parse(ce);if(he){const pe=T?.name,fe=JSON.parse(JSON.stringify(he));!_&&pe&&(fe.name=pe),E(fe)}}catch(he){console.error("Failed to parse template",he)}},et=(ce,he)=>{if(!T)return;const pe={...T},fe=Array.isArray(pe.models)?[...pe.models]:[];he>=0&&he<fe.length&&(fe.splice(he,1),pe.models=fe,E(pe))},tt=T||(u!==null?me[u]:null),qt=me.filter(ce=>{if(!le)return!0;const he=le.toLowerCase();return ce.name&&ce.name.toLowerCase().includes(he)||ce.api_base_url&&ce.api_base_url.toLowerCase().includes(he)?!0:ce.models&&Array.isArray(ce.models)?ce.models.some(pe=>pe&&pe.toLowerCase().includes(he)):!1});return c.jsxs(oa,{className:"flex h-full flex-col glass-card border-white/10 shadow-xl overflow-hidden",children:[c.jsxs(ja,{className:"flex flex-col border-b border-white/10 bg-white/5 p-5 gap-4",children:[c.jsxs("div",{className:"flex flex-row items-center justify-between",children:[c.jsxs(Na,{className:"text-xl font-bold tracking-tight text-foreground flex items-center gap-2",children:[t("providers.title"),c.jsxs("span",{className:"text-xs bg-primary/20 text-primary px-2 py-1 rounded-full font-bold ml-1",children:[qt.length,"/",me.length]})]}),c.jsxs(ye,{onClick:O,size:"sm",className:"h-9 px-4 rounded-xl",children:[c.jsx(Os,{className:"h-4 w-4 mr-1"}),t("providers.add")]})]}),c.jsxs("div",{className:"flex items-center gap-2",children:[c.jsxs("div",{className:"relative flex-1 group",children:[c.jsx(Vm,{className:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground/60 group-focus-within:text-primary transition-colors"}),c.jsx(at,{placeholder:t("providers.search"),value:le,onChange:ce=>P(ce.target.value),className:"pl-9 bg-white/5 border-white/10 focus:bg-white/10 transition-all rounded-xl h-10"})]}),le&&c.jsx(ye,{variant:"ghost",size:"icon",onClick:()=>P(""),className:"h-10 w-10 rounded-xl hover:bg-white/10",children:c.jsx(S1,{className:"h-4 w-4"})})]})]}),c.jsx(ia,{className:"flex-grow overflow-y-auto p-6 custom-scrollbar",children:c.jsx(Fk,{providers:qt,healthStates:F,quotaUsages:V,onEdit:D,onRemove:ae})}),c.jsx(xa,{open:u!==null,onOpenChange:ce=>{ce||Q()},children:c.jsxs(ra,{className:"max-h-[80vh] flex flex-col sm:max-w-2xl",children:[c.jsx(la,{children:c.jsx(sa,{children:t("providers.edit")})}),tt&&u!==null&&c.jsxs("div",{className:"space-y-4 p-4 overflow-y-auto flex-grow",children:[L.length>0&&c.jsxs("div",{className:"space-y-2",children:[c.jsx(Ee,{children:t("providers.import_from_template")}),c.jsx(Ot,{options:L.map(ce=>({label:ce.name,value:JSON.stringify(ce)})),value:"",onChange:Ze,placeholder:t("providers.select_template"),emptyPlaceholder:t("providers.no_templates_found")})]}),c.jsxs("div",{className:"space-y-2",children:[c.jsx(Ee,{htmlFor:"name",children:t("providers.name")}),c.jsx(at,{id:"name",value:tt.name||"",onChange:ce=>{I(u,"name",ce.target.value),re&&ie(null)},className:re?"border-red-500":""}),re&&c.jsx("p",{className:"text-sm text-red-500",children:re})]}),c.jsxs("div",{className:"space-y-2",children:[c.jsx(Ee,{htmlFor:"api_base_url",children:t("providers.api_base_url")}),c.jsx(at,{id:"api_base_url",value:tt.api_base_url||"",onChange:ce=>I(u,"api_base_url",ce.target.value)})]}),c.jsxs("div",{className:"space-y-2",children:[c.jsx(Ee,{htmlFor:"api_key",children:t("providers.api_key")}),c.jsxs("div",{className:"relative",children:[c.jsx(at,{id:"api_key",type:C[u||0]?"text":"password",value:tt.api_key||"",onChange:ce=>I(u,"api_key",ce.target.value),className:K?"border-red-500":""}),c.jsx(ye,{type:"button",variant:"ghost",size:"icon",className:"absolute right-2 top-1/2 transform -translate-y-1/2 h-8 w-8",onClick:()=>{const ce=u||0;U(he=>({...he,[ce]:!he[ce]}))},children:C[u||0]?c.jsx(gO,{className:"h-4 w-4"}):c.jsx(yO,{className:"h-4 w-4"})})]}),K&&c.jsx("p",{className:"text-sm text-red-500",children:K})]}),tt.api_base_url&&/dashscope\.aliyuncs\.com/i.test(tt.api_base_url)&&c.jsxs("div",{className:"space-y-2",children:[c.jsxs("div",{className:"flex items-center gap-1",children:[c.jsx(Ee,{htmlFor:"quota_token",children:t("providers.quota_token")}),c.jsx(wu,{children:c.jsxs(ri,{children:[c.jsx(li,{asChild:!0,children:c.jsx(iO,{className:"h-3.5 w-3.5 text-gray-400 cursor-help"})}),c.jsx(Ms,{side:"top",className:"max-w-xs text-xs",children:t("providers.quota_token_tooltip")})]})})]}),c.jsx(at,{id:"quota_token",type:"password",placeholder:t("providers.quota_token_placeholder"),value:tt.quota_token||"",onChange:ce=>I(u,"quota_token",ce.target.value)})]}),c.jsxs("div",{className:"space-y-2",children:[c.jsx(Ee,{htmlFor:"models",children:t("providers.models")}),c.jsxs("div",{className:"space-y-2",children:[c.jsxs("div",{className:"flex gap-2",children:[c.jsx("div",{className:"flex-1",children:p[u]?c.jsx(f4,{ref:oe,options:(tt.models||[]).map(ce=>({label:ce,value:ce})),value:"",onChange:()=>{},onEnter:ce=>{u!==null&&ze(u,ce)},inputPlaceholder:t("providers.models_placeholder")}):c.jsx(at,{id:"models",placeholder:t("providers.models_placeholder"),onKeyDown:ce=>{ce.key==="Enter"&&ce.currentTarget.value.trim()&&u!==null&&(ze(u,ce.currentTarget.value),ce.currentTarget.value="")}})}),c.jsx(ye,{onClick:()=>{if(p[u]&&oe.current){const ce=oe.current,he=ce.getCurrentValue();he&&he.trim()&&u!==null&&(ze(u,he.trim()),ce.clearInput())}else{const ce=document.getElementById("models");ce&&ce.value.trim()&&u!==null&&(ze(u,ce.value),ce.value="")}},children:t("providers.add_model")})]}),c.jsx("div",{className:"flex flex-wrap gap-2 pt-2",children:(tt.models||[]).map((ce,he)=>c.jsxs(Gn,{variant:"outline",className:"font-normal flex items-center gap-1",children:[ce,c.jsx("button",{type:"button",className:"ml-1 rounded-full hover:bg-gray-200",onClick:()=>u!==null&&et(u,he),children:c.jsx(El,{className:"h-3 w-3"})})]},he))})]})]}),c.jsxs("div",{className:"space-y-2",children:[c.jsx(Ee,{children:t("providers.provider_transformer")}),c.jsx("div",{className:"flex gap-2",children:c.jsx(Ot,{options:j.map(ce=>({label:ce.name,value:ce.name})),value:"",onChange:ce=>{u!==null&&xe(u,ce)},placeholder:t("providers.select_transformer"),emptyPlaceholder:t("providers.no_transformers")})}),tt.transformer?.use&&tt.transformer.use.length>0&&c.jsxs("div",{className:"space-y-2 mt-2",children:[c.jsx("div",{className:"text-sm font-medium text-gray-700",children:t("providers.selected_transformers")}),tt.transformer.use.map((ce,he)=>c.jsxs("div",{className:"border rounded-md p-3",children:[c.jsxs("div",{className:"flex gap-2 items-center mb-2",children:[c.jsx("div",{className:"flex-1 bg-gray-50 rounded p-2 text-sm",children:typeof ce=="string"?ce:Array.isArray(ce)?String(ce[0]):String(ce)}),c.jsx(ye,{variant:"outline",size:"icon",onClick:()=>{u!==null&&be(u,he)},children:c.jsx(ca,{className:"h-4 w-4"})})]}),c.jsxs("div",{className:"mt-2 pl-4 border-l-2 border-gray-200",children:[c.jsx(Ee,{className:"text-sm",children:t("providers.transformer_parameters")}),c.jsxs("div",{className:"space-y-2 mt-1",children:[c.jsxs("div",{className:"flex gap-2",children:[c.jsx(at,{placeholder:t("providers.parameter_name"),value:y[`provider-${u}-transformer-${he}`]?.name||"",onChange:pe=>{const fe=`provider-${u}-transformer-${he}`;w(Te=>({...Te,[fe]:{...Te[fe]||{name:"",value:""},name:pe.target.value}}))}}),c.jsx(at,{placeholder:t("providers.parameter_value"),value:y[`provider-${u}-transformer-${he}`]?.value||"",onChange:pe=>{const fe=`provider-${u}-transformer-${he}`;w(Te=>({...Te,[fe]:{...Te[fe]||{name:"",value:""},value:pe.target.value}}))}}),c.jsx(ye,{size:"sm",onClick:()=>{if(u!==null){const pe=`provider-${u}-transformer-${he}`,fe=y[pe];fe&&fe.name&&fe.value&&(Ue(u,he,fe.name,fe.value),w(Te=>({...Te,[pe]:{name:"",value:""}})))}},children:c.jsx(Os,{className:"h-4 w-4"})})]}),(()=>{if(!tt.transformer?.use||tt.transformer.use.length<=he)return null;const pe=tt.transformer.use[he];let fe={};return Array.isArray(pe)&&pe.length>1&&typeof pe[1]=="object"&&pe[1]!==null&&(fe=pe[1]),Object.keys(fe).length>0?c.jsx("div",{className:"space-y-1",children:Object.entries(fe).map(([Te,$e])=>c.jsxs("div",{className:"flex items-center justify-between bg-gray-50 rounded p-2",children:[c.jsxs("div",{className:"text-sm",children:[c.jsxs("span",{className:"font-medium",children:[Te,":"]})," ",String($e)]}),c.jsx(ye,{variant:"ghost",size:"sm",className:"h-6 w-6 p-0",onClick:()=>{u!==null&&_t(u,he,Te)},children:c.jsx(El,{className:"h-3 w-3"})})]},Te))}):null})()]})]})]},he))]})]}),tt.models&&tt.models.length>0&&c.jsxs("div",{className:"space-y-2",children:[c.jsx(Ee,{children:t("providers.model_transformers")}),c.jsx("div",{className:"space-y-3",children:(tt.models||[]).map((ce,he)=>c.jsxs("div",{className:"border rounded-md p-3",children:[c.jsx("div",{className:"font-medium text-sm mb-2",children:ce}),c.jsx("div",{className:"flex gap-2",children:c.jsx("div",{className:"flex-1 flex gap-2",children:c.jsx(Ot,{options:j.map(pe=>({label:pe.name,value:pe.name})),value:"",onChange:pe=>{u!==null&&Ce(u,ce,pe)},placeholder:t("providers.select_transformer"),emptyPlaceholder:t("providers.no_transformers")})})}),tt.transformer?.[ce]?.use&&tt.transformer[ce].use.length>0&&c.jsxs("div",{className:"space-y-2 mt-2",children:[c.jsx("div",{className:"text-sm font-medium text-gray-700",children:t("providers.selected_transformers")}),tt.transformer[ce].use.map((pe,fe)=>c.jsxs("div",{className:"border rounded-md p-3",children:[c.jsxs("div",{className:"flex gap-2 items-center mb-2",children:[c.jsx("div",{className:"flex-1 bg-gray-50 rounded p-2 text-sm",children:typeof pe=="string"?pe:Array.isArray(pe)?String(pe[0]):String(pe)}),c.jsx(ye,{variant:"outline",size:"icon",onClick:()=>{u!==null&&Fe(u,ce,fe)},children:c.jsx(ca,{className:"h-4 w-4"})})]}),c.jsxs("div",{className:"mt-2 pl-4 border-l-2 border-gray-200",children:[c.jsx(Ee,{className:"text-sm",children:t("providers.transformer_parameters")}),c.jsxs("div",{className:"space-y-2 mt-1",children:[c.jsxs("div",{className:"flex gap-2",children:[c.jsx(at,{placeholder:t("providers.parameter_name"),value:S[`model-${u}-${ce}-transformer-${fe}`]?.name||"",onChange:Te=>{const $e=`model-${u}-${ce}-transformer-${fe}`;N(qe=>({...qe,[$e]:{...qe[$e]||{name:"",value:""},name:Te.target.value}}))}}),c.jsx(at,{placeholder:t("providers.parameter_value"),value:S[`model-${u}-${ce}-transformer-${fe}`]?.value||"",onChange:Te=>{const $e=`model-${u}-${ce}-transformer-${fe}`;N(qe=>({...qe,[$e]:{...qe[$e]||{name:"",value:""},value:Te.target.value}}))}}),c.jsx(ye,{size:"sm",onClick:()=>{if(u!==null){const Te=`model-${u}-${ce}-transformer-${fe}`,$e=S[Te];$e&&$e.name&&$e.value&&(At(u,ce,fe,$e.name,$e.value),N(qe=>({...qe,[Te]:{name:"",value:""}})))}},children:c.jsx(Os,{className:"h-4 w-4"})})]}),(()=>{if(!tt.transformer?.[ce]?.use||tt.transformer[ce].use.length<=fe)return null;const Te=tt.transformer[ce].use[fe];let $e={};return Array.isArray(Te)&&Te.length>1&&typeof Te[1]=="object"&&Te[1]!==null&&($e=Te[1]),Object.keys($e).length>0?c.jsx("div",{className:"space-y-1",children:Object.entries($e).map(([qe,lt])=>c.jsxs("div",{className:"flex items-center justify-between bg-gray-50 rounded p-2",children:[c.jsxs("div",{className:"text-sm",children:[c.jsxs("span",{className:"font-medium",children:[qe,":"]})," ",String(lt)]}),c.jsx(ye,{variant:"ghost",size:"sm",className:"h-6 w-6 p-0",onClick:()=>{u!==null&&Se(u,ce,fe,qe)},children:c.jsx(El,{className:"h-3 w-3"})})]},qe))}):null})()]})]})]},fe))]})]},he))})]})]}),c.jsx("div",{className:"space-y-3 mt-auto",children:c.jsx("div",{className:"flex justify-end gap-2",children:c.jsx(ye,{onClick:G,disabled:s,children:s?"...":t("app.save")})})})]})}),c.jsx(xa,{open:f!==null,onOpenChange:()=>m(null),children:c.jsxs(ra,{children:[c.jsxs(la,{children:[c.jsx(sa,{children:t("providers.delete")}),c.jsx(Rl,{children:t("providers.delete_provider_confirm")})]}),c.jsxs(Vr,{children:[c.jsx(ye,{variant:"outline",onClick:()=>m(null),children:t("providers.cancel")}),c.jsx(ye,{variant:"destructive",onClick:()=>f!==null&&ve(f),children:t("providers.delete")})]})]})})]})}function bp(t){const a=v.useRef({value:t,previous:t});return v.useMemo(()=>(a.current.value!==t&&(a.current.previous=a.current.value,a.current.value=t),a.current.previous),[t])}var Ju="Switch",[m4]=Ra(Ju),[p4,g4]=m4(Ju),Jw=v.forwardRef((t,a)=>{const{__scopeSwitch:r,name:s,checked:o,defaultChecked:u,required:d,disabled:f,value:m="on",onCheckedChange:p,form:x,...y}=t,[w,S]=v.useState(null),N=bt(a,_=>S(_)),j=v.useRef(!1),R=w?x||!!w.closest("form"):!0,[T,E]=tr({prop:o,defaultProp:u??!1,onChange:p,caller:Ju});return c.jsxs(p4,{scope:r,checked:T,disabled:f,children:[c.jsx(We.button,{type:"button",role:"switch","aria-checked":T,"aria-required":d,"data-state":nS(T),"data-disabled":f?"":void 0,disabled:f,value:m,...y,ref:N,onClick:Ie(t.onClick,_=>{E(k=>!k),R&&(j.current=_.isPropagationStopped(),j.current||_.stopPropagation())})}),R&&c.jsx(tS,{control:w,bubbles:!j.current,name:s,value:m,checked:T,required:d,disabled:f,form:x,style:{transform:"translateX(-100%)"}})]})});Jw.displayName=Ju;var Ww="SwitchThumb",eS=v.forwardRef((t,a)=>{const{__scopeSwitch:r,...s}=t,o=g4(Ww,r);return c.jsx(We.span,{"data-state":nS(o.checked),"data-disabled":o.disabled?"":void 0,...s,ref:a})});eS.displayName=Ww;var v4="SwitchBubbleInput",tS=v.forwardRef(({__scopeSwitch:t,control:a,checked:r,bubbles:s=!0,...o},u)=>{const d=v.useRef(null),f=bt(d,u),m=bp(r),p=lp(a);return v.useEffect(()=>{const x=d.current;if(!x)return;const y=window.HTMLInputElement.prototype,S=Object.getOwnPropertyDescriptor(y,"checked").set;if(m!==r&&S){const N=new Event("click",{bubbles:s});S.call(x,r),x.dispatchEvent(N)}},[m,r,s]),c.jsx("input",{type:"checkbox","aria-hidden":!0,defaultChecked:r,...o,tabIndex:-1,ref:f,style:{...o.style,...p,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})});tS.displayName=v4;function nS(t){return t?"checked":"unchecked"}var aS=Jw,y4=eS;const Ja=v.forwardRef(({className:t,...a},r)=>c.jsx(aS,{className:Ke("peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-all-ease focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input",t),...a,ref:r,children:c.jsx(y4,{className:Ke("pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0 transition-all-ease")})}));Ja.displayName=aS.displayName;function x4(){const{t}=hn(),{config:a,setConfig:r}=Xr();if(!a)return c.jsxs(oa,{className:"flex h-full flex-col rounded-lg border shadow-sm",children:[c.jsx(ja,{className:"border-b p-4",children:c.jsx(Na,{className:"text-lg",children:t("router.title")})}),c.jsx(ia,{className:"flex-grow flex items-center justify-center p-4",children:c.jsx("div",{className:"text-gray-500",children:"Loading router configuration..."})})]});const s=a.Router||{default:"",think:"",longContext:"",longContextThreshold:6e4,webSearch:"",image:""},o=(m,p)=>{const y={...a.Router||{},[m]:p};r({...a,Router:y})},u=m=>{r({...a,forceUseImageAgent:m})},f=(Array.isArray(a.Providers)?a.Providers:[]).flatMap(m=>{if(!m)return[];const p=Array.isArray(m.models)?m.models:[],x=m.name||"Unknown Provider";return p.map(y=>({value:`${x},${y||"Unknown Model"}`,label:`${x}, ${y||"Unknown Model"}`}))});return c.jsxs(oa,{className:"flex h-full flex-col glass-card border-white/10 shadow-xl overflow-hidden",children:[c.jsx(ja,{className:"border-b border-white/10 bg-white/5 p-5",children:c.jsx(Na,{className:"text-xl font-bold tracking-tight text-foreground flex items-center gap-2",children:t("router.title")})}),c.jsxs(ia,{className:"flex-grow space-y-6 overflow-y-auto p-6 custom-scrollbar",children:[c.jsxs("div",{className:"space-y-3 animate-in",style:{animationDelay:"0.1s"},children:[c.jsx(Ee,{className:"text-sm font-bold ml-1 text-muted-foreground/80 uppercase tracking-wider",children:t("router.default")}),c.jsx(Ot,{options:f,value:s.default||"",onChange:m=>o("default",m),placeholder:t("router.selectModel"),searchPlaceholder:t("router.searchModel"),emptyPlaceholder:t("router.noModelFound")})]}),c.jsx("div",{className:"space-y-3 animate-in",style:{animationDelay:"0.2s"},children:c.jsxs("div",{className:"flex items-center gap-4",children:[c.jsxs("div",{className:"flex-1 space-y-3",children:[c.jsx(Ee,{className:"text-sm font-bold ml-1 text-muted-foreground/80 uppercase tracking-wider",children:t("router.longContext")}),c.jsx(Ot,{options:f,value:s.longContext||"",onChange:m=>o("longContext",m),placeholder:t("router.selectModel"),searchPlaceholder:t("router.searchModel"),emptyPlaceholder:t("router.noModelFound")})]}),c.jsxs("div",{className:"w-40 space-y-3",children:[c.jsx(Ee,{className:"text-sm font-bold ml-1 text-muted-foreground/80 uppercase tracking-wider",children:t("router.threshold")}),c.jsx(at,{type:"number",value:s.longContextThreshold||6e4,onChange:m=>o("longContextThreshold",parseInt(m.target.value)||6e4),className:"bg-input/50 border border-input text-center font-mono"})]})]})}),c.jsxs("div",{className:"p-4 rounded-2xl bg-white/5 border border-white/10 space-y-4 animate-in",style:{animationDelay:"0.3s"},children:[c.jsxs("div",{className:"flex items-center justify-between",children:[c.jsxs("div",{className:"flex flex-col gap-1",children:[c.jsx(Ee,{htmlFor:"enable-extended-context",className:"text-base font-bold",children:t("router.enableExtendedContext")}),c.jsx("span",{className:"text-xs text-muted-foreground/60 leading-tight",children:t("router.enableExtendedContextDesc")})]}),c.jsx(Ja,{id:"enable-extended-context",checked:s.enableExtendedContext??!1,onCheckedChange:m=>o("enableExtendedContext",m),className:"data-[state=checked]:bg-primary"})]}),s.enableExtendedContext&&c.jsxs("div",{className:"flex items-center gap-4 pt-2 animate-in",children:[c.jsxs("div",{className:"flex-1 space-y-3",children:[c.jsx(Ee,{className:"text-sm font-bold ml-1 text-muted-foreground/80 uppercase tracking-wider",children:t("router.extendedContext")}),c.jsx(Ot,{options:f,value:s.extendedContext||"",onChange:m=>o("extendedContext",m),placeholder:t("router.selectModel")})]}),c.jsxs("div",{className:"w-40 space-y-3",children:[c.jsx(Ee,{className:"text-sm font-bold ml-1 text-muted-foreground/80 uppercase tracking-wider",children:t("router.threshold")}),c.jsx(at,{type:"number",value:s.extendedContextThreshold||2e5,onChange:m=>o("extendedContextThreshold",parseInt(m.target.value)||2e5),className:"bg-input/50 border border-input text-center font-mono"})]})]})]}),c.jsxs("div",{className:"grid grid-cols-1 gap-6 pt-2",children:[c.jsxs("div",{className:"space-y-3 animate-in",style:{animationDelay:"0.4s"},children:[c.jsx(Ee,{className:"text-sm font-bold ml-1 text-muted-foreground/80 uppercase tracking-wider",children:t("router.think")}),c.jsx(Ot,{options:f,value:s.think||"",onChange:m=>o("think",m),placeholder:t("router.selectModel")})]}),c.jsxs("div",{className:"space-y-3 animate-in",style:{animationDelay:"0.5s"},children:[c.jsx(Ee,{className:"text-sm font-bold ml-1 text-muted-foreground/80 uppercase tracking-wider",children:t("router.webSearch")}),c.jsx(Ot,{options:f,value:s.webSearch||"",onChange:m=>o("webSearch",m),placeholder:t("router.selectModel")})]}),c.jsx("div",{className:"space-y-3 animate-in",style:{animationDelay:"0.6s"},children:c.jsxs("div",{className:"flex items-center gap-4",children:[c.jsxs("div",{className:"flex-1 space-y-3",children:[c.jsxs(Ee,{className:"text-sm font-bold ml-1 text-muted-foreground/80 uppercase tracking-wider",children:[t("router.image")," ",c.jsx("span",{className:"text-[10px] bg-primary/20 text-primary px-1.5 py-0.5 rounded-full ml-1",children:"BETA"})]}),c.jsx(Ot,{options:f,value:s.image||"",onChange:m=>o("image",m),placeholder:t("router.selectModel")})]}),c.jsxs("div",{className:"w-40 space-y-3",children:[c.jsx(Ee,{className:"text-sm font-bold ml-1 text-muted-foreground/80 uppercase tracking-wider",children:t("router.forceAgent")}),c.jsxs("select",{id:"forceUseImageAgent",value:a.forceUseImageAgent?"true":"false",onChange:m=>u(m.target.value==="true"),className:"w-full h-11 px-4 py-2 rounded-xl bg-input/50 border border-input text-foreground focus:outline-none focus:ring-2 focus:ring-primary/50 focus:border-primary/50 transition-all appearance-none cursor-pointer",children:[c.jsx("option",{value:"false",className:"bg-background",children:t("common.no")}),c.jsx("option",{value:"true",className:"bg-background",children:t("common.yes")})]})]})]})})]})]})]})}function J0(t,a){(a==null||a>t.length)&&(a=t.length);for(var r=0,s=Array(a);r<a;r++)s[r]=t[r];return s}function b4(t){if(Array.isArray(t))return t}function w4(t,a,r){return(a=R4(a))in t?Object.defineProperty(t,a,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[a]=r,t}function S4(t,a){var r=t==null?null:typeof Symbol<"u"&&t[Symbol.iterator]||t["@@iterator"];if(r!=null){var s,o,u,d,f=[],m=!0,p=!1;try{if(u=(r=r.call(t)).next,a!==0)for(;!(m=(s=u.call(r)).done)&&(f.push(s.value),f.length!==a);m=!0);}catch(x){p=!0,o=x}finally{try{if(!m&&r.return!=null&&(d=r.return(),Object(d)!==d))return}finally{if(p)throw o}}return f}}function _4(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
|
|
68
66
|
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function W0(t,a){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);a&&(s=s.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),r.push.apply(r,s)}return r}function eb(t){for(var a=1;a<arguments.length;a++){var r=arguments[a]!=null?arguments[a]:{};a%2?W0(Object(r),!0).forEach(function(s){w4(t,s,r[s])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):W0(Object(r)).forEach(function(s){Object.defineProperty(t,s,Object.getOwnPropertyDescriptor(r,s))})}return t}function j4(t,a){if(t==null)return{};var r,s,o=N4(t,a);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(t);for(s=0;s<u.length;s++)r=u[s],a.indexOf(r)===-1&&{}.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}function N4(t,a){if(t==null)return{};var r={};for(var s in t)if({}.hasOwnProperty.call(t,s)){if(a.indexOf(s)!==-1)continue;r[s]=t[s]}return r}function C4(t,a){return b4(t)||S4(t,a)||T4(t,a)||_4()}function E4(t,a){if(typeof t!="object"||!t)return t;var r=t[Symbol.toPrimitive];if(r!==void 0){var s=r.call(t,a);if(typeof s!="object")return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return(a==="string"?String:Number)(t)}function R4(t){var a=E4(t,"string");return typeof a=="symbol"?a:a+""}function T4(t,a){if(t){if(typeof t=="string")return J0(t,a);var r={}.toString.call(t).slice(8,-1);return r==="Object"&&t.constructor&&(r=t.constructor.name),r==="Map"||r==="Set"?Array.from(t):r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?J0(t,a):void 0}}function O4(t,a,r){return a in t?Object.defineProperty(t,a,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[a]=r,t}function tb(t,a){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);a&&(s=s.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),r.push.apply(r,s)}return r}function nb(t){for(var a=1;a<arguments.length;a++){var r=arguments[a]!=null?arguments[a]:{};a%2?tb(Object(r),!0).forEach(function(s){O4(t,s,r[s])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):tb(Object(r)).forEach(function(s){Object.defineProperty(t,s,Object.getOwnPropertyDescriptor(r,s))})}return t}function A4(){for(var t=arguments.length,a=new Array(t),r=0;r<t;r++)a[r]=arguments[r];return function(s){return a.reduceRight(function(o,u){return u(o)},s)}}function Qo(t){return function a(){for(var r=this,s=arguments.length,o=new Array(s),u=0;u<s;u++)o[u]=arguments[u];return o.length>=t.length?t.apply(this,o):function(){for(var d=arguments.length,f=new Array(d),m=0;m<d;m++)f[m]=arguments[m];return a.apply(r,[].concat(o,f))}}}function Su(t){return{}.toString.call(t).includes("Object")}function k4(t){return!Object.keys(t).length}function mi(t){return typeof t=="function"}function M4(t,a){return Object.prototype.hasOwnProperty.call(t,a)}function D4(t,a){return Su(a)||Br("changeType"),Object.keys(a).some(function(r){return!M4(t,r)})&&Br("changeField"),a}function L4(t){mi(t)||Br("selectorType")}function z4(t){mi(t)||Su(t)||Br("handlerType"),Su(t)&&Object.values(t).some(function(a){return!mi(a)})&&Br("handlersType")}function P4(t){t||Br("initialIsRequired"),Su(t)||Br("initialType"),k4(t)&&Br("initialContent")}function U4(t,a){throw new Error(t[a]||t.default)}var H4={initialIsRequired:"initial state is required",initialType:"initial state should be an object",initialContent:"initial state shouldn't be an empty object",handlerType:"handler should be an object or a function",handlersType:"all handlers should be a functions",selectorType:"selector should be a function",changeType:"provided value of changes should be an object",changeField:'it seams you want to change a field in the state which is not specified in the "initial" state',default:"an unknown error accured in `state-local` package"},Br=Qo(U4)(H4),Wc={changes:D4,selector:L4,handler:z4,initial:P4};function B4(t){var a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};Wc.initial(t),Wc.handler(a);var r={current:t},s=Qo(I4)(r,a),o=Qo(F4)(r),u=Qo(Wc.changes)(t),d=Qo($4)(r);function f(){var p=arguments.length>0&&arguments[0]!==void 0?arguments[0]:function(x){return x};return Wc.selector(p),p(r.current)}function m(p){A4(s,o,u,d)(p)}return[f,m]}function $4(t,a){return mi(a)?a(t.current):a}function F4(t,a){return t.current=nb(nb({},t.current),a),a}function I4(t,a,r){return mi(a)?a(t.current):Object.keys(r).forEach(function(s){var o;return(o=a[s])===null||o===void 0?void 0:o.call(a,t.current[s])}),r}var q4={create:B4},V4={paths:{vs:"https://cdn.jsdelivr.net/npm/monaco-editor@0.55.1/min/vs"}};function G4(t){return function a(){for(var r=this,s=arguments.length,o=new Array(s),u=0;u<s;u++)o[u]=arguments[u];return o.length>=t.length?t.apply(this,o):function(){for(var d=arguments.length,f=new Array(d),m=0;m<d;m++)f[m]=arguments[m];return a.apply(r,[].concat(o,f))}}}function K4(t){return{}.toString.call(t).includes("Object")}function Y4(t){return t||ab("configIsRequired"),K4(t)||ab("configType"),t.urls?(X4(),{paths:{vs:t.urls.monacoBase}}):t}function X4(){console.warn(rS.deprecation)}function Q4(t,a){throw new Error(t[a]||t.default)}var rS={configIsRequired:"the configuration object is required",configType:"the configuration object should be an object",default:"an unknown error accured in `@monaco-editor/loader` package",deprecation:`Deprecation warning!
|
|
69
67
|
You are using deprecated way of configuration.
|
|
70
68
|
|