const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/LoginPage-CC-g_E4O.js","assets/query-feqHqB4N.js","assets/react-vendor-DgfcBpad.js","assets/apiError-yd81FyPK.js","assets/i18n-CX8ld9wa.js","assets/Field-5qgeVl0e.js","assets/InfoTip-CzgsqsrL.js","assets/PasswordField-Bvpefg7L.js","assets/TextField-DM9L0797.js","assets/AuthShell-C49GV6Af.js","assets/LanguageSelect-ZNqXd-77.js","assets/Select-D1kjc6m9.js","assets/arrow-left-DiEnnZuE.js","assets/echarts-LgZN4Ggg.js","assets/ForgotPasswordPage-_zBr3S0f.js","assets/ResetPasswordPage-CcbhJW54.js","assets/arrow-right-CrLZqMFv.js","assets/LandingPage-BHA4lj5r.js","assets/channels-B_8V2_rB.js","assets/ws-fIP6gHwn.js","assets/HomePage-Iyew7w8p.js","assets/EmptyState-CZ9ZfAZ0.js","assets/Table-Cm0BhDd9.js","assets/arrow-down-5HclZwfS.js","assets/DateRangePicker-BJgI4MNx.js","assets/PageHeader-IREqbuZe.js","assets/Stat-DMMtIgsF.js","assets/phone-DvMlNyUP.js","assets/chevron-left-B0sARTo-.js","assets/SectionHeader-CmIb8BQT.js","assets/transferReasonKinds-BiWmgFfi.js","assets/SegmentedControl-CYmCfyX_.js","assets/AgentsPage-U6JDpNS4.js","assets/agents-BY-nCF4o.js","assets/pencil-B9RHo4fS.js","assets/copy-BZytTn7I.js","assets/trash-2-D9MJ3_gO.js","assets/Dialog-CHijPXoD.js","assets/Skeleton-DuxSWbfH.js","assets/Toolbar-Bx0z1qjL.js","assets/plus-DUTlBXzv.js","assets/AgentDetailPage-e4oVu8qC.js","assets/knowledge-BDFdZwvW.js","assets/Switch-CewPkN0r.js","assets/Textarea-DqaiRDjz.js","assets/refresh-cw-OIm8dg5M.js","assets/search-BTohijsF.js","assets/loader-circle-BgtzEpOd.js","assets/play-BDiZdkhq.js","assets/DocumentManager-siKMTpMN.js","assets/Pagination-COoOcIE1.js","assets/Drawer-CMDpJktd.js","assets/globe-DSW6NtWM.js","assets/upload-BDz04v_u.js","assets/CreateKnowledgeBaseModal-zoMOhWMD.js","assets/toolGroups-CnAJR2p5.js","assets/Checkbox-BUVogDKf.js","assets/telephony-DT6uy5wZ.js","assets/ActionBar-Z0DrPbp0.js","assets/AgentTestPage-CKv18oge.js","assets/ChatPanel-CkRMsO2_.js","assets/send-CEz7Wb7C.js","assets/Bubble-DZB-nqbp.js","assets/chevron-up-BwgnMDXg.js","assets/star-DXD4Lmsq.js","assets/circle-x-BAcwLmhh.js","assets/markdown-BBhPom2z.js","assets/ToolsPage-BcflU-RO.js","assets/HistoryPage-CocySq_l.js","assets/conversations-DSL8U66H.js","assets/ChannelIcon-D-cp22IX.js","assets/ConversationDetailPage-CAyE34Qu.js","assets/SimulatorPage-BL-ydFlA.js","assets/SentimentPage-rxhRh6dE.js","assets/analytics-BZeOCuKa.js","assets/sentiment-ye8Ubzlz.js","assets/KnowledgeBasesPage-kVRZVTds.js","assets/KnowledgeBaseDetailPage-BFnkV3h5.js","assets/GuestLinksPage-BrSayGZT.js","assets/ActivityLogPage-htcbzcev.js","assets/PlatformHealthPage-D2r6QmFA.js","assets/PackagesPage-DL7Ux0xH.js","assets/platform-CR2KrV8g.js","assets/ApiKeysPage-DQRCIH5x.js","assets/SipSettingsPage-BAW-HWgS.js","assets/PushPanel-DhCbW-JH.js","assets/NotificationSettingsPage-DmzYD6F4.js","assets/ChannelsPage-CtfxpNat.js","assets/InboxConsolePage-Uc8QzyKD.js","assets/relativeTime-CjvArvaQ.js","assets/UsersPage-BLPYgoi7.js","assets/RolesPage-DzxIJL6n.js","assets/VoicemailsPage-D8ioEJXW.js","assets/OrganizationsPage-B8mm5rLj.js","assets/PlatformGuardrailsPage-CL3zaBUi.js","assets/InboundNumbersPage-CnVwW7P0.js","assets/AgentBehaviourTip-ByD3bH-9.js","assets/SipExtensionsPage-GJ0fkIh2.js","assets/ExtensionDirectoryPage-CjD8Yl_V.js","assets/ProfilePage-C2YwLAal.js"])))=>i.map(i=>d[i]); var JS=Object.defineProperty;var uy=n=>{throw TypeError(n)};var WS=(n,o,r)=>o in n?JS(n,o,{enumerable:!0,configurable:!0,writable:!0,value:r}):n[o]=r;var gd=(n,o,r)=>WS(n,typeof o!="symbol"?o+"":o,r),dy=(n,o,r)=>o.has(n)||uy("Cannot "+r);var xt=(n,o,r)=>(dy(n,o,"read from private field"),r?r.call(n):o.get(n)),fy=(n,o,r)=>o.has(n)?uy("Cannot add the same private member more than once"):o instanceof WeakSet?o.add(n):o.set(n,r),yd=(n,o,r,s)=>(dy(n,o,"write to private field"),s?s.call(n,r):o.set(n,r),r);import{j as p,u as Ab,c as e_,b as t_,Q as n_,a as a_}from"./query-feqHqB4N.js";import{e as o_,f as i_,g as r_,R as ii,d as v,a as hi,r as bf,h as s_,L as Dl,u as Dr,i as l_,O as Cb,N as xr,c as c_,b as Ee,B as u_}from"./react-vendor-DgfcBpad.js";import{b as Ma,i as d_,u as ht,a as f_}from"./i18n-CX8ld9wa.js";import{_ as ka,a as Rb,b as h_}from"./echarts-LgZN4Ggg.js";(function(){const o=document.createElement("link").relList;if(o&&o.supports&&o.supports("modulepreload"))return;for(const c of document.querySelectorAll('link[rel="modulepreload"]'))s(c);new MutationObserver(c=>{for(const d of c)if(d.type==="childList")for(const f of d.addedNodes)f.tagName==="LINK"&&f.rel==="modulepreload"&&s(f)}).observe(document,{childList:!0,subtree:!0});function r(c){const d={};return c.integrity&&(d.integrity=c.integrity),c.referrerPolicy&&(d.referrerPolicy=c.referrerPolicy),c.crossOrigin==="use-credentials"?d.credentials="include":c.crossOrigin==="anonymous"?d.credentials="omit":d.credentials="same-origin",d}function s(c){if(c.ep)return;c.ep=!0;const d=r(c);fetch(c.href,d)}})();var bd={exports:{}},gr={},vd={exports:{}},wd={};/** * @license React * scheduler.production.js * * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */var hy;function m_(){return hy||(hy=1,(function(n){function o(P,F){var X=P.length;P.push(F);e:for(;0>>1,Y=P[Z];if(0>>1;Zc(ne,X))Rec(Ue,ne)?(P[Z]=Ue,P[Re]=X,Z=Re):(P[Z]=ne,P[ge]=X,Z=ge);else if(Rec(Ue,X))P[Z]=Ue,P[Re]=X,Z=Re;else break e}}return F}function c(P,F){var X=P.sortIndex-F.sortIndex;return X!==0?X:P.id-F.id}if(n.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var d=performance;n.unstable_now=function(){return d.now()}}else{var f=Date,h=f.now();n.unstable_now=function(){return f.now()-h}}var g=[],y=[],w=1,b=null,S=3,E=!1,A=!1,_=!1,T=!1,R=typeof setTimeout=="function"?setTimeout:null,D=typeof clearTimeout=="function"?clearTimeout:null,N=typeof setImmediate<"u"?setImmediate:null;function M(P){for(var F=r(y);F!==null;){if(F.callback===null)s(y);else if(F.startTime<=P)s(y),F.sortIndex=F.expirationTime,o(g,F);else break;F=r(y)}}function I(P){if(_=!1,M(P),!A)if(r(g)!==null)A=!0,K||(K=!0,Q());else{var F=r(y);F!==null&&be(I,F.startTime-P)}}var K=!1,$=-1,W=5,J=-1;function oe(){return T?!0:!(n.unstable_now()-JP&&oe());){var Z=b.callback;if(typeof Z=="function"){b.callback=null,S=b.priorityLevel;var Y=Z(b.expirationTime<=P);if(P=n.unstable_now(),typeof Y=="function"){b.callback=Y,M(P),F=!0;break t}b===r(g)&&s(g),M(P)}else s(g);b=r(g)}if(b!==null)F=!0;else{var ce=r(y);ce!==null&&be(I,ce.startTime-P),F=!1}}break e}finally{b=null,S=X,E=!1}F=void 0}}finally{F?Q():K=!1}}}var Q;if(typeof N=="function")Q=function(){N(se)};else if(typeof MessageChannel<"u"){var ue=new MessageChannel,ie=ue.port2;ue.port1.onmessage=se,Q=function(){ie.postMessage(null)}}else Q=function(){R(se,0)};function be(P,F){$=R(function(){P(n.unstable_now())},F)}n.unstable_IdlePriority=5,n.unstable_ImmediatePriority=1,n.unstable_LowPriority=4,n.unstable_NormalPriority=3,n.unstable_Profiling=null,n.unstable_UserBlockingPriority=2,n.unstable_cancelCallback=function(P){P.callback=null},n.unstable_forceFrameRate=function(P){0>P||125Z?(P.sortIndex=X,o(y,P),r(g)===null&&P===r(y)&&(_?(D($),$=-1):_=!0,be(I,X-Z))):(P.sortIndex=Y,o(g,P),A||E||(A=!0,K||(K=!0,Q()))),P},n.unstable_shouldYield=oe,n.unstable_wrapCallback=function(P){var F=S;return function(){var X=S;S=F;try{return P.apply(this,arguments)}finally{S=X}}}})(wd)),wd}var my;function p_(){return my||(my=1,vd.exports=m_()),vd.exports}/** * @license React * react-dom-client.production.js * * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */var py;function g_(){if(py)return gr;py=1;var n=p_(),o=o_(),r=i_();function s(e){var t="https://react.dev/errors/"+e;if(1Y||(e.current=Z[Y],Z[Y]=null,Y--)}function ne(e,t){Y++,Z[Y]=e.current,e.current=t}var Re=ce(null),Ue=ce(null),mt=ce(null),Fe=ce(null);function ye(e,t){switch(ne(mt,t),ne(Ue,e),ne(Re,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?Ng(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=Ng(t),e=Lg(t,e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}ge(Re),ne(Re,e)}function rt(){ge(Re),ge(Ue),ge(mt)}function Qe(e){e.memoizedState!==null&&ne(Fe,e);var t=Re.current,a=Lg(t,e.type);t!==a&&(ne(Ue,e),ne(Re,a))}function _t(e){Ue.current===e&&(ge(Re),ge(Ue)),Fe.current===e&&(ge(Fe),fr._currentValue=X)}var Cn,Ha;function wt(e){if(Cn===void 0)try{throw Error()}catch(a){var t=a.stack.trim().match(/\n( *(at )?)/);Cn=t&&t[1]||"",Ha=-1)":-1l||C[i]!==z[l]){var V=` `+C[i].replace(" at new "," at ");return e.displayName&&V.includes("")&&(V=V.replace("",e.displayName)),V}while(1<=i&&0<=l);break}}}finally{mo=!1,Error.prepareStackTrace=a}return(a=e?e.displayName||e.name:"")?wt(a):""}function Br(e,t){switch(e.tag){case 26:case 27:case 5:return wt(e.type);case 16:return wt("Lazy");case 13:return e.child!==t&&t!==null?wt("Suspense Fallback"):wt("Suspense");case 19:return wt("SuspenseList");case 0:case 15:return Ba(e.type,!1);case 11:return Ba(e.type.render,!1);case 1:return Ba(e.type,!0);case 31:return wt("Activity");default:return""}}function Ir(e){try{var t="",a=null;do t+=Br(e,a),a=e,e=e.return;while(e);return t}catch(i){return` Error generating stack: `+i.message+` `+i.stack}}var xi=Object.prototype.hasOwnProperty,Si=n.unstable_scheduleCallback,_i=n.unstable_cancelCallback,po=n.unstable_shouldYield,Dw=n.unstable_requestPaint,Ht=n.unstable_now,Mw=n.unstable_getCurrentPriorityLevel,dh=n.unstable_ImmediatePriority,fh=n.unstable_UserBlockingPriority,Vr=n.unstable_NormalPriority,Nw=n.unstable_LowPriority,hh=n.unstable_IdlePriority,Lw=n.log,jw=n.unstable_setDisableYieldValue,Ti=null,Bt=null;function aa(e){if(typeof Lw=="function"&&jw(e),Bt&&typeof Bt.setStrictMode=="function")try{Bt.setStrictMode(Ti,e)}catch{}}var It=Math.clz32?Math.clz32:Uw,zw=Math.log,Pw=Math.LN2;function Uw(e){return e>>>=0,e===0?32:31-(zw(e)/Pw|0)|0}var qr=256,Gr=262144,Kr=4194304;function Ia(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function Fr(e,t,a){var i=e.pendingLanes;if(i===0)return 0;var l=0,u=e.suspendedLanes,m=e.pingedLanes;e=e.warmLanes;var x=i&134217727;return x!==0?(i=x&~u,i!==0?l=Ia(i):(m&=x,m!==0?l=Ia(m):a||(a=x&~e,a!==0&&(l=Ia(a))))):(x=i&~u,x!==0?l=Ia(x):m!==0?l=Ia(m):a||(a=i&~e,a!==0&&(l=Ia(a)))),l===0?0:t!==0&&t!==l&&(t&u)===0&&(u=l&-l,a=t&-t,u>=a||u===32&&(a&4194048)!==0)?t:l}function Ei(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function Hw(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function mh(){var e=Kr;return Kr<<=1,(Kr&62914560)===0&&(Kr=4194304),e}function oc(e){for(var t=[],a=0;31>a;a++)t.push(e);return t}function Ai(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function Bw(e,t,a,i,l,u){var m=e.pendingLanes;e.pendingLanes=a,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=a,e.entangledLanes&=a,e.errorRecoveryDisabledLanes&=a,e.shellSuspendCounter=0;var x=e.entanglements,C=e.expirationTimes,z=e.hiddenUpdates;for(a=m&~a;0"u")return null;try{return e.activeElement||e.body}catch{return e.body}}var Fw=/[\n"\\]/g;function Zt(e){return e.replace(Fw,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function uc(e,t,a,i,l,u,m,x){e.name="",m!=null&&typeof m!="function"&&typeof m!="symbol"&&typeof m!="boolean"?e.type=m:e.removeAttribute("type"),t!=null?m==="number"?(t===0&&e.value===""||e.value!=t)&&(e.value=""+Qt(t)):e.value!==""+Qt(t)&&(e.value=""+Qt(t)):m!=="submit"&&m!=="reset"||e.removeAttribute("value"),t!=null?dc(e,m,Qt(t)):a!=null?dc(e,m,Qt(a)):i!=null&&e.removeAttribute("value"),l==null&&u!=null&&(e.defaultChecked=!!u),l!=null&&(e.checked=l&&typeof l!="function"&&typeof l!="symbol"),x!=null&&typeof x!="function"&&typeof x!="symbol"&&typeof x!="boolean"?e.name=""+Qt(x):e.removeAttribute("name")}function Ch(e,t,a,i,l,u,m,x){if(u!=null&&typeof u!="function"&&typeof u!="symbol"&&typeof u!="boolean"&&(e.type=u),t!=null||a!=null){if(!(u!=="submit"&&u!=="reset"||t!=null)){cc(e);return}a=a!=null?""+Qt(a):"",t=t!=null?""+Qt(t):a,x||t===e.value||(e.value=t),e.defaultValue=t}i=i??l,i=typeof i!="function"&&typeof i!="symbol"&&!!i,e.checked=x?e.checked:!!i,e.defaultChecked=!!i,m!=null&&typeof m!="function"&&typeof m!="symbol"&&typeof m!="boolean"&&(e.name=m),cc(e)}function dc(e,t,a){t==="number"&&$r(e.ownerDocument)===e||e.defaultValue===""+a||(e.defaultValue=""+a)}function xo(e,t,a,i){if(e=e.options,t){t={};for(var l=0;l"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),gc=!1;if(kn)try{var ki={};Object.defineProperty(ki,"passive",{get:function(){gc=!0}}),window.addEventListener("test",ki,ki),window.removeEventListener("test",ki,ki)}catch{gc=!1}var ia=null,yc=null,Zr=null;function Lh(){if(Zr)return Zr;var e,t=yc,a=t.length,i,l="value"in ia?ia.value:ia.textContent,u=l.length;for(e=0;e=Ni),Bh=" ",Ih=!1;function Vh(e,t){switch(e){case"keyup":return wx.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function qh(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Eo=!1;function Sx(e,t){switch(e){case"compositionend":return qh(t);case"keypress":return t.which!==32?null:(Ih=!0,Bh);case"textInput":return e=t.data,e===Bh&&Ih?null:e;default:return null}}function _x(e,t){if(Eo)return e==="compositionend"||!Sc&&Vh(e,t)?(e=Lh(),Zr=yc=ia=null,Eo=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:a,offset:t-e};e=i}e:{for(;a;){if(a.nextSibling){a=a.nextSibling;break e}a=a.parentNode}a=void 0}a=Zh(a)}}function Wh(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Wh(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function em(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=$r(e.document);t instanceof e.HTMLIFrameElement;){try{var a=typeof t.contentWindow.location.href=="string"}catch{a=!1}if(a)e=t.contentWindow;else break;t=$r(e.document)}return t}function Ec(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}var Dx=kn&&"documentMode"in document&&11>=document.documentMode,Ao=null,Ac=null,Pi=null,Cc=!1;function tm(e,t,a){var i=a.window===a?a.document:a.nodeType===9?a:a.ownerDocument;Cc||Ao==null||Ao!==$r(i)||(i=Ao,"selectionStart"in i&&Ec(i)?i={start:i.selectionStart,end:i.selectionEnd}:(i=(i.ownerDocument&&i.ownerDocument.defaultView||window).getSelection(),i={anchorNode:i.anchorNode,anchorOffset:i.anchorOffset,focusNode:i.focusNode,focusOffset:i.focusOffset}),Pi&&zi(Pi,i)||(Pi=i,i=Gs(Ac,"onSelect"),0>=m,l-=m,yn=1<<32-It(t)+l|a<me?(Se=ae,ae=null):Se=ae.sibling;var ke=U(k,ae,j[me],q);if(ke===null){ae===null&&(ae=Se);break}e&&ae&&ke.alternate===null&&t(k,ae),O=u(ke,O,me),Oe===null?re=ke:Oe.sibling=ke,Oe=ke,ae=Se}if(me===j.length)return a(k,ae),Te&&Mn(k,me),re;if(ae===null){for(;meme?(Se=ae,ae=null):Se=ae.sibling;var Ca=U(k,ae,ke.value,q);if(Ca===null){ae===null&&(ae=Se);break}e&&ae&&Ca.alternate===null&&t(k,ae),O=u(Ca,O,me),Oe===null?re=Ca:Oe.sibling=Ca,Oe=Ca,ae=Se}if(ke.done)return a(k,ae),Te&&Mn(k,me),re;if(ae===null){for(;!ke.done;me++,ke=j.next())ke=G(k,ke.value,q),ke!==null&&(O=u(ke,O,me),Oe===null?re=ke:Oe.sibling=ke,Oe=ke);return Te&&Mn(k,me),re}for(ae=i(ae);!ke.done;me++,ke=j.next())ke=B(ae,k,me,ke.value,q),ke!==null&&(e&&ke.alternate!==null&&ae.delete(ke.key===null?me:ke.key),O=u(ke,O,me),Oe===null?re=ke:Oe.sibling=ke,Oe=ke);return e&&ae.forEach(function(ZS){return t(k,ZS)}),Te&&Mn(k,me),re}function Pe(k,O,j,q){if(typeof j=="object"&&j!==null&&j.type===_&&j.key===null&&(j=j.props.children),typeof j=="object"&&j!==null){switch(j.$$typeof){case E:e:{for(var re=j.key;O!==null;){if(O.key===re){if(re=j.type,re===_){if(O.tag===7){a(k,O.sibling),q=l(O,j.props.children),q.return=k,k=q;break e}}else if(O.elementType===re||typeof re=="object"&&re!==null&&re.$$typeof===W&&Ja(re)===O.type){a(k,O.sibling),q=l(O,j.props),qi(q,j),q.return=k,k=q;break e}a(k,O);break}else t(k,O);O=O.sibling}j.type===_?(q=Ya(j.props.children,k.mode,q,j.key),q.return=k,k=q):(q=ss(j.type,j.key,j.props,null,k.mode,q),qi(q,j),q.return=k,k=q)}return m(k);case A:e:{for(re=j.key;O!==null;){if(O.key===re)if(O.tag===4&&O.stateNode.containerInfo===j.containerInfo&&O.stateNode.implementation===j.implementation){a(k,O.sibling),q=l(O,j.children||[]),q.return=k,k=q;break e}else{a(k,O);break}else t(k,O);O=O.sibling}q=Lc(j,k.mode,q),q.return=k,k=q}return m(k);case W:return j=Ja(j),Pe(k,O,j,q)}if(be(j))return ee(k,O,j,q);if(Q(j)){if(re=Q(j),typeof re!="function")throw Error(s(150));return j=re.call(j),le(k,O,j,q)}if(typeof j.then=="function")return Pe(k,O,ms(j),q);if(j.$$typeof===N)return Pe(k,O,us(k,j),q);ps(k,j)}return typeof j=="string"&&j!==""||typeof j=="number"||typeof j=="bigint"?(j=""+j,O!==null&&O.tag===6?(a(k,O.sibling),q=l(O,j),q.return=k,k=q):(a(k,O),q=Nc(j,k.mode,q),q.return=k,k=q),m(k)):a(k,O)}return function(k,O,j,q){try{Vi=0;var re=Pe(k,O,j,q);return Po=null,re}catch(ae){if(ae===zo||ae===fs)throw ae;var Oe=qt(29,ae,null,k.mode);return Oe.lanes=q,Oe.return=k,Oe}finally{}}}var eo=Tm(!0),Em=Tm(!1),ua=!1;function Fc(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Yc(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function da(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function fa(e,t,a){var i=e.updateQueue;if(i===null)return null;if(i=i.shared,(De&2)!==0){var l=i.pending;return l===null?t.next=t:(t.next=l.next,l.next=t),i.pending=t,t=rs(e),lm(e,null,a),t}return is(e,i,t,a),rs(e)}function Gi(e,t,a){if(t=t.updateQueue,t!==null&&(t=t.shared,(a&4194048)!==0)){var i=t.lanes;i&=e.pendingLanes,a|=i,t.lanes=a,gh(e,a)}}function Xc(e,t){var a=e.updateQueue,i=e.alternate;if(i!==null&&(i=i.updateQueue,a===i)){var l=null,u=null;if(a=a.firstBaseUpdate,a!==null){do{var m={lane:a.lane,tag:a.tag,payload:a.payload,callback:null,next:null};u===null?l=u=m:u=u.next=m,a=a.next}while(a!==null);u===null?l=u=t:u=u.next=t}else l=u=t;a={baseState:i.baseState,firstBaseUpdate:l,lastBaseUpdate:u,shared:i.shared,callbacks:i.callbacks},e.updateQueue=a;return}e=a.lastBaseUpdate,e===null?a.firstBaseUpdate=t:e.next=t,a.lastBaseUpdate=t}var $c=!1;function Ki(){if($c){var e=jo;if(e!==null)throw e}}function Fi(e,t,a,i){$c=!1;var l=e.updateQueue;ua=!1;var u=l.firstBaseUpdate,m=l.lastBaseUpdate,x=l.shared.pending;if(x!==null){l.shared.pending=null;var C=x,z=C.next;C.next=null,m===null?u=z:m.next=z,m=C;var V=e.alternate;V!==null&&(V=V.updateQueue,x=V.lastBaseUpdate,x!==m&&(x===null?V.firstBaseUpdate=z:x.next=z,V.lastBaseUpdate=C))}if(u!==null){var G=l.baseState;m=0,V=z=C=null,x=u;do{var U=x.lane&-536870913,B=U!==x.lane;if(B?(xe&U)===U:(i&U)===U){U!==0&&U===Lo&&($c=!0),V!==null&&(V=V.next={lane:0,tag:x.tag,payload:x.payload,callback:null,next:null});e:{var ee=e,le=x;U=t;var Pe=a;switch(le.tag){case 1:if(ee=le.payload,typeof ee=="function"){G=ee.call(Pe,G,U);break e}G=ee;break e;case 3:ee.flags=ee.flags&-65537|128;case 0:if(ee=le.payload,U=typeof ee=="function"?ee.call(Pe,G,U):ee,U==null)break e;G=b({},G,U);break e;case 2:ua=!0}}U=x.callback,U!==null&&(e.flags|=64,B&&(e.flags|=8192),B=l.callbacks,B===null?l.callbacks=[U]:B.push(U))}else B={lane:U,tag:x.tag,payload:x.payload,callback:x.callback,next:null},V===null?(z=V=B,C=G):V=V.next=B,m|=U;if(x=x.next,x===null){if(x=l.shared.pending,x===null)break;B=x,x=B.next,B.next=null,l.lastBaseUpdate=B,l.shared.pending=null}}while(!0);V===null&&(C=G),l.baseState=C,l.firstBaseUpdate=z,l.lastBaseUpdate=V,u===null&&(l.shared.lanes=0),ya|=m,e.lanes=m,e.memoizedState=G}}function Am(e,t){if(typeof e!="function")throw Error(s(191,e));e.call(t)}function Cm(e,t){var a=e.callbacks;if(a!==null)for(e.callbacks=null,e=0;eu?u:8;var m=P.T,x={};P.T=x,mu(e,!1,t,a);try{var C=l(),z=P.S;if(z!==null&&z(x,C),C!==null&&typeof C=="object"&&typeof C.then=="function"){var V=Bx(C,i);$i(e,t,V,Xt(e))}else $i(e,t,i,Xt(e))}catch(G){$i(e,t,{then:function(){},status:"rejected",reason:G},Xt())}finally{F.p=u,m!==null&&x.types!==null&&(m.types=x.types),P.T=m}}function Fx(){}function fu(e,t,a,i){if(e.tag!==5)throw Error(s(476));var l=ip(e).queue;op(e,l,t,X,a===null?Fx:function(){return rp(e),a(i)})}function ip(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:X,baseState:X,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:zn,lastRenderedState:X},next:null};var a={};return t.next={memoizedState:a,baseState:a,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:zn,lastRenderedState:a},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function rp(e){var t=ip(e);t.next===null&&(t=e.alternate.memoizedState),$i(e,t.next.queue,{},Xt())}function hu(){return yt(fr)}function sp(){return Je().memoizedState}function lp(){return Je().memoizedState}function Yx(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var a=Xt();e=da(a);var i=fa(t,e,a);i!==null&&(Nt(i,t,a),Gi(i,t,a)),t={cache:Vc()},e.payload=t;return}t=t.return}}function Xx(e,t,a){var i=Xt();a={lane:i,revertLane:0,gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null},Es(e)?up(t,a):(a=Dc(e,t,a,i),a!==null&&(Nt(a,e,i),dp(a,t,i)))}function cp(e,t,a){var i=Xt();$i(e,t,a,i)}function $i(e,t,a,i){var l={lane:i,revertLane:0,gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null};if(Es(e))up(t,l);else{var u=e.alternate;if(e.lanes===0&&(u===null||u.lanes===0)&&(u=t.lastRenderedReducer,u!==null))try{var m=t.lastRenderedState,x=u(m,a);if(l.hasEagerState=!0,l.eagerState=x,Vt(x,m))return is(e,t,l,0),He===null&&os(),!1}catch{}finally{}if(a=Dc(e,t,l,i),a!==null)return Nt(a,e,i),dp(a,t,i),!0}return!1}function mu(e,t,a,i){if(i={lane:2,revertLane:Fu(),gesture:null,action:i,hasEagerState:!1,eagerState:null,next:null},Es(e)){if(t)throw Error(s(479))}else t=Dc(e,a,i,2),t!==null&&Nt(t,e,2)}function Es(e){var t=e.alternate;return e===he||t!==null&&t===he}function up(e,t){Ho=bs=!0;var a=e.pending;a===null?t.next=t:(t.next=a.next,a.next=t),e.pending=t}function dp(e,t,a){if((a&4194048)!==0){var i=t.lanes;i&=e.pendingLanes,a|=i,t.lanes=a,gh(e,a)}}var Qi={readContext:yt,use:xs,useCallback:Ye,useContext:Ye,useEffect:Ye,useImperativeHandle:Ye,useLayoutEffect:Ye,useInsertionEffect:Ye,useMemo:Ye,useReducer:Ye,useRef:Ye,useState:Ye,useDebugValue:Ye,useDeferredValue:Ye,useTransition:Ye,useSyncExternalStore:Ye,useId:Ye,useHostTransitionStatus:Ye,useFormState:Ye,useActionState:Ye,useOptimistic:Ye,useMemoCache:Ye,useCacheRefresh:Ye};Qi.useEffectEvent=Ye;var fp={readContext:yt,use:xs,useCallback:function(e,t){return Tt().memoizedState=[e,t===void 0?null:t],e},useContext:yt,useEffect:$m,useImperativeHandle:function(e,t,a){a=a!=null?a.concat([e]):null,_s(4194308,4,Wm.bind(null,t,e),a)},useLayoutEffect:function(e,t){return _s(4194308,4,e,t)},useInsertionEffect:function(e,t){_s(4,2,e,t)},useMemo:function(e,t){var a=Tt();t=t===void 0?null:t;var i=e();if(to){aa(!0);try{e()}finally{aa(!1)}}return a.memoizedState=[i,t],i},useReducer:function(e,t,a){var i=Tt();if(a!==void 0){var l=a(t);if(to){aa(!0);try{a(t)}finally{aa(!1)}}}else l=t;return i.memoizedState=i.baseState=l,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:l},i.queue=e,e=e.dispatch=Xx.bind(null,he,e),[i.memoizedState,e]},useRef:function(e){var t=Tt();return e={current:e},t.memoizedState=e},useState:function(e){e=su(e);var t=e.queue,a=cp.bind(null,he,t);return t.dispatch=a,[e.memoizedState,a]},useDebugValue:uu,useDeferredValue:function(e,t){var a=Tt();return du(a,e,t)},useTransition:function(){var e=su(!1);return e=op.bind(null,he,e.queue,!0,!1),Tt().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,a){var i=he,l=Tt();if(Te){if(a===void 0)throw Error(s(407));a=a()}else{if(a=t(),He===null)throw Error(s(349));(xe&127)!==0||Nm(i,t,a)}l.memoizedState=a;var u={value:a,getSnapshot:t};return l.queue=u,$m(jm.bind(null,i,u,e),[e]),i.flags|=2048,Io(9,{destroy:void 0},Lm.bind(null,i,u,a,t),null),a},useId:function(){var e=Tt(),t=He.identifierPrefix;if(Te){var a=bn,i=yn;a=(i&~(1<<32-It(i)-1)).toString(32)+a,t="_"+t+"R_"+a,a=vs++,0<\/script>",u=u.removeChild(u.firstChild);break;case"select":u=typeof i.is=="string"?m.createElement("select",{is:i.is}):m.createElement("select"),i.multiple?u.multiple=!0:i.size&&(u.size=i.size);break;default:u=typeof i.is=="string"?m.createElement(l,{is:i.is}):m.createElement(l)}}u[pt]=t,u[Ct]=i;e:for(m=t.child;m!==null;){if(m.tag===5||m.tag===6)u.appendChild(m.stateNode);else if(m.tag!==4&&m.tag!==27&&m.child!==null){m.child.return=m,m=m.child;continue}if(m===t)break e;for(;m.sibling===null;){if(m.return===null||m.return===t)break e;m=m.return}m.sibling.return=m.return,m=m.sibling}t.stateNode=u;e:switch(vt(u,l,i),l){case"button":case"input":case"select":case"textarea":i=!!i.autoFocus;break e;case"img":i=!0;break e;default:i=!1}i&&Un(t)}}return Ie(t),Ru(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,a),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==i&&Un(t);else{if(typeof i!="string"&&t.stateNode===null)throw Error(s(166));if(e=mt.current,Mo(t)){if(e=t.stateNode,a=t.memoizedProps,i=null,l=gt,l!==null)switch(l.tag){case 27:case 5:i=l.memoizedProps}e[pt]=t,e=!!(e.nodeValue===a||i!==null&&i.suppressHydrationWarning===!0||Dg(e.nodeValue,a)),e||la(t,!0)}else e=Ks(e).createTextNode(i),e[pt]=t,t.stateNode=e}return Ie(t),null;case 31:if(a=t.memoizedState,e===null||e.memoizedState!==null){if(i=Mo(t),a!==null){if(e===null){if(!i)throw Error(s(318));if(e=t.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(s(557));e[pt]=t}else Xa(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;Ie(t),e=!1}else a=Uc(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=a),e=!0;if(!e)return t.flags&256?(Kt(t),t):(Kt(t),null);if((t.flags&128)!==0)throw Error(s(558))}return Ie(t),null;case 13:if(i=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(l=Mo(t),i!==null&&i.dehydrated!==null){if(e===null){if(!l)throw Error(s(318));if(l=t.memoizedState,l=l!==null?l.dehydrated:null,!l)throw Error(s(317));l[pt]=t}else Xa(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;Ie(t),l=!1}else l=Uc(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=l),l=!0;if(!l)return t.flags&256?(Kt(t),t):(Kt(t),null)}return Kt(t),(t.flags&128)!==0?(t.lanes=a,t):(a=i!==null,e=e!==null&&e.memoizedState!==null,a&&(i=t.child,l=null,i.alternate!==null&&i.alternate.memoizedState!==null&&i.alternate.memoizedState.cachePool!==null&&(l=i.alternate.memoizedState.cachePool.pool),u=null,i.memoizedState!==null&&i.memoizedState.cachePool!==null&&(u=i.memoizedState.cachePool.pool),u!==l&&(i.flags|=2048)),a!==e&&a&&(t.child.flags|=8192),ks(t,t.updateQueue),Ie(t),null);case 4:return rt(),e===null&&Qu(t.stateNode.containerInfo),Ie(t),null;case 10:return Ln(t.type),Ie(t),null;case 19:if(ge(Ze),i=t.memoizedState,i===null)return Ie(t),null;if(l=(t.flags&128)!==0,u=i.rendering,u===null)if(l)Ji(i,!1);else{if(Xe!==0||e!==null&&(e.flags&128)!==0)for(e=t.child;e!==null;){if(u=ys(e),u!==null){for(t.flags|=128,Ji(i,!1),e=u.updateQueue,t.updateQueue=e,ks(t,e),t.subtreeFlags=0,e=a,a=t.child;a!==null;)cm(a,e),a=a.sibling;return ne(Ze,Ze.current&1|2),Te&&Mn(t,i.treeForkCount),t.child}e=e.sibling}i.tail!==null&&Ht()>js&&(t.flags|=128,l=!0,Ji(i,!1),t.lanes=4194304)}else{if(!l)if(e=ys(u),e!==null){if(t.flags|=128,l=!0,e=e.updateQueue,t.updateQueue=e,ks(t,e),Ji(i,!0),i.tail===null&&i.tailMode==="hidden"&&!u.alternate&&!Te)return Ie(t),null}else 2*Ht()-i.renderingStartTime>js&&a!==536870912&&(t.flags|=128,l=!0,Ji(i,!1),t.lanes=4194304);i.isBackwards?(u.sibling=t.child,t.child=u):(e=i.last,e!==null?e.sibling=u:t.child=u,i.last=u)}return i.tail!==null?(e=i.tail,i.rendering=e,i.tail=e.sibling,i.renderingStartTime=Ht(),e.sibling=null,a=Ze.current,ne(Ze,l?a&1|2:a&1),Te&&Mn(t,i.treeForkCount),e):(Ie(t),null);case 22:case 23:return Kt(t),Zc(),i=t.memoizedState!==null,e!==null?e.memoizedState!==null!==i&&(t.flags|=8192):i&&(t.flags|=8192),i?(a&536870912)!==0&&(t.flags&128)===0&&(Ie(t),t.subtreeFlags&6&&(t.flags|=8192)):Ie(t),a=t.updateQueue,a!==null&&ks(t,a.retryQueue),a=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(a=e.memoizedState.cachePool.pool),i=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(i=t.memoizedState.cachePool.pool),i!==a&&(t.flags|=2048),e!==null&&ge(Za),null;case 24:return a=null,e!==null&&(a=e.memoizedState.cache),t.memoizedState.cache!==a&&(t.flags|=2048),Ln(We),Ie(t),null;case 25:return null;case 30:return null}throw Error(s(156,t.tag))}function Wx(e,t){switch(zc(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Ln(We),rt(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return _t(t),null;case 31:if(t.memoizedState!==null){if(Kt(t),t.alternate===null)throw Error(s(340));Xa()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(Kt(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(s(340));Xa()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return ge(Ze),null;case 4:return rt(),null;case 10:return Ln(t.type),null;case 22:case 23:return Kt(t),Zc(),e!==null&&ge(Za),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return Ln(We),null;case 25:return null;default:return null}}function zp(e,t){switch(zc(t),t.tag){case 3:Ln(We),rt();break;case 26:case 27:case 5:_t(t);break;case 4:rt();break;case 31:t.memoizedState!==null&&Kt(t);break;case 13:Kt(t);break;case 19:ge(Ze);break;case 10:Ln(t.type);break;case 22:case 23:Kt(t),Zc(),e!==null&&ge(Za);break;case 24:Ln(We)}}function Wi(e,t){try{var a=t.updateQueue,i=a!==null?a.lastEffect:null;if(i!==null){var l=i.next;a=l;do{if((a.tag&e)===e){i=void 0;var u=a.create,m=a.inst;i=u(),m.destroy=i}a=a.next}while(a!==l)}}catch(x){Le(t,t.return,x)}}function pa(e,t,a){try{var i=t.updateQueue,l=i!==null?i.lastEffect:null;if(l!==null){var u=l.next;i=u;do{if((i.tag&e)===e){var m=i.inst,x=m.destroy;if(x!==void 0){m.destroy=void 0,l=t;var C=a,z=x;try{z()}catch(V){Le(l,C,V)}}}i=i.next}while(i!==u)}}catch(V){Le(t,t.return,V)}}function Pp(e){var t=e.updateQueue;if(t!==null){var a=e.stateNode;try{Cm(t,a)}catch(i){Le(e,e.return,i)}}}function Up(e,t,a){a.props=no(e.type,e.memoizedProps),a.state=e.memoizedState;try{a.componentWillUnmount()}catch(i){Le(e,t,i)}}function er(e,t){try{var a=e.ref;if(a!==null){switch(e.tag){case 26:case 27:case 5:var i=e.stateNode;break;case 30:i=e.stateNode;break;default:i=e.stateNode}typeof a=="function"?e.refCleanup=a(i):a.current=i}}catch(l){Le(e,t,l)}}function vn(e,t){var a=e.ref,i=e.refCleanup;if(a!==null)if(typeof i=="function")try{i()}catch(l){Le(e,t,l)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof a=="function")try{a(null)}catch(l){Le(e,t,l)}else a.current=null}function Hp(e){var t=e.type,a=e.memoizedProps,i=e.stateNode;try{e:switch(t){case"button":case"input":case"select":case"textarea":a.autoFocus&&i.focus();break e;case"img":a.src?i.src=a.src:a.srcSet&&(i.srcset=a.srcSet)}}catch(l){Le(e,e.return,l)}}function Ou(e,t,a){try{var i=e.stateNode;xS(i,e.type,a,t),i[Ct]=t}catch(l){Le(e,e.return,l)}}function Bp(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&Sa(e.type)||e.tag===4}function ku(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||Bp(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.tag===27&&Sa(e.type)||e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Du(e,t,a){var i=e.tag;if(i===5||i===6)e=e.stateNode,t?(a.nodeType===9?a.body:a.nodeName==="HTML"?a.ownerDocument.body:a).insertBefore(e,t):(t=a.nodeType===9?a.body:a.nodeName==="HTML"?a.ownerDocument.body:a,t.appendChild(e),a=a._reactRootContainer,a!=null||t.onclick!==null||(t.onclick=On));else if(i!==4&&(i===27&&Sa(e.type)&&(a=e.stateNode,t=null),e=e.child,e!==null))for(Du(e,t,a),e=e.sibling;e!==null;)Du(e,t,a),e=e.sibling}function Ds(e,t,a){var i=e.tag;if(i===5||i===6)e=e.stateNode,t?a.insertBefore(e,t):a.appendChild(e);else if(i!==4&&(i===27&&Sa(e.type)&&(a=e.stateNode),e=e.child,e!==null))for(Ds(e,t,a),e=e.sibling;e!==null;)Ds(e,t,a),e=e.sibling}function Ip(e){var t=e.stateNode,a=e.memoizedProps;try{for(var i=e.type,l=t.attributes;l.length;)t.removeAttributeNode(l[0]);vt(t,i,a),t[pt]=e,t[Ct]=a}catch(u){Le(e,e.return,u)}}var Hn=!1,nt=!1,Mu=!1,Vp=typeof WeakSet=="function"?WeakSet:Set,ut=null;function eS(e,t){if(e=e.containerInfo,Wu=Js,e=em(e),Ec(e)){if("selectionStart"in e)var a={start:e.selectionStart,end:e.selectionEnd};else e:{a=(a=e.ownerDocument)&&a.defaultView||window;var i=a.getSelection&&a.getSelection();if(i&&i.rangeCount!==0){a=i.anchorNode;var l=i.anchorOffset,u=i.focusNode;i=i.focusOffset;try{a.nodeType,u.nodeType}catch{a=null;break e}var m=0,x=-1,C=-1,z=0,V=0,G=e,U=null;t:for(;;){for(var B;G!==a||l!==0&&G.nodeType!==3||(x=m+l),G!==u||i!==0&&G.nodeType!==3||(C=m+i),G.nodeType===3&&(m+=G.nodeValue.length),(B=G.firstChild)!==null;)U=G,G=B;for(;;){if(G===e)break t;if(U===a&&++z===l&&(x=m),U===u&&++V===i&&(C=m),(B=G.nextSibling)!==null)break;G=U,U=G.parentNode}G=B}a=x===-1||C===-1?null:{start:x,end:C}}else a=null}a=a||{start:0,end:0}}else a=null;for(ed={focusedElem:e,selectionRange:a},Js=!1,ut=t;ut!==null;)if(t=ut,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,ut=e;else for(;ut!==null;){switch(t=ut,u=t.alternate,e=t.flags,t.tag){case 0:if((e&4)!==0&&(e=t.updateQueue,e=e!==null?e.events:null,e!==null))for(a=0;a title"))),vt(u,i,a),u[pt]=e,ct(u),i=u;break e;case"link":var m=Xg("link","href",l).get(i+(a.href||""));if(m){for(var x=0;xPe&&(m=Pe,Pe=le,le=m);var k=Jh(x,le),O=Jh(x,Pe);if(k&&O&&(B.rangeCount!==1||B.anchorNode!==k.node||B.anchorOffset!==k.offset||B.focusNode!==O.node||B.focusOffset!==O.offset)){var j=G.createRange();j.setStart(k.node,k.offset),B.removeAllRanges(),le>Pe?(B.addRange(j),B.extend(O.node,O.offset)):(j.setEnd(O.node,O.offset),B.addRange(j))}}}}for(G=[],B=x;B=B.parentNode;)B.nodeType===1&&G.push({element:B,left:B.scrollLeft,top:B.scrollTop});for(typeof x.focus=="function"&&x.focus(),x=0;xa?32:a,P.T=null,a=Hu,Hu=null;var u=va,m=Gn;if(st=0,Fo=va=null,Gn=0,(De&6)!==0)throw Error(s(331));var x=De;if(De|=4,Wp(u.current),Qp(u,u.current,m,a),De=x,rr(0,!1),Bt&&typeof Bt.onPostCommitFiberRoot=="function")try{Bt.onPostCommitFiberRoot(Ti,u)}catch{}return!0}finally{F.p=l,P.T=i,yg(e,t)}}function vg(e,t,a){t=Wt(a,t),t=bu(e.stateNode,t,2),e=fa(e,t,2),e!==null&&(Ai(e,2),wn(e))}function Le(e,t,a){if(e.tag===3)vg(e,e,a);else for(;t!==null;){if(t.tag===3){vg(t,e,a);break}else if(t.tag===1){var i=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof i.componentDidCatch=="function"&&(ba===null||!ba.has(i))){e=Wt(a,e),a=wp(2),i=fa(t,a,2),i!==null&&(xp(a,i,t,e),Ai(i,2),wn(i));break}}t=t.return}}function qu(e,t,a){var i=e.pingCache;if(i===null){i=e.pingCache=new aS;var l=new Set;i.set(t,l)}else l=i.get(t),l===void 0&&(l=new Set,i.set(t,l));l.has(a)||(ju=!0,l.add(a),e=lS.bind(null,e,t,a),t.then(e,e))}function lS(e,t,a){var i=e.pingCache;i!==null&&i.delete(t),e.pingedLanes|=e.suspendedLanes&a,e.warmLanes&=~a,He===e&&(xe&a)===a&&(Xe===4||Xe===3&&(xe&62914560)===xe&&300>Ht()-Ls?(De&2)===0&&Yo(e,0):zu|=a,Ko===xe&&(Ko=0)),wn(e)}function wg(e,t){t===0&&(t=mh()),e=Fa(e,t),e!==null&&(Ai(e,t),wn(e))}function cS(e){var t=e.memoizedState,a=0;t!==null&&(a=t.retryLane),wg(e,a)}function uS(e,t){var a=0;switch(e.tag){case 31:case 13:var i=e.stateNode,l=e.memoizedState;l!==null&&(a=l.retryLane);break;case 19:i=e.stateNode;break;case 22:i=e.stateNode._retryCache;break;default:throw Error(s(314))}i!==null&&i.delete(t),wg(e,a)}function dS(e,t){return Si(e,t)}var Is=null,$o=null,Gu=!1,Vs=!1,Ku=!1,xa=0;function wn(e){e!==$o&&e.next===null&&($o===null?Is=$o=e:$o=$o.next=e),Vs=!0,Gu||(Gu=!0,hS())}function rr(e,t){if(!Ku&&Vs){Ku=!0;do for(var a=!1,i=Is;i!==null;){if(e!==0){var l=i.pendingLanes;if(l===0)var u=0;else{var m=i.suspendedLanes,x=i.pingedLanes;u=(1<<31-It(42|e)+1)-1,u&=l&~(m&~x),u=u&201326741?u&201326741|1:u?u|2:0}u!==0&&(a=!0,Tg(i,u))}else u=xe,u=Fr(i,i===He?u:0,i.cancelPendingCommit!==null||i.timeoutHandle!==-1),(u&3)===0||Ei(i,u)||(a=!0,Tg(i,u));i=i.next}while(a);Ku=!1}}function fS(){xg()}function xg(){Vs=Gu=!1;var e=0;xa!==0&&_S()&&(e=xa);for(var t=Ht(),a=null,i=Is;i!==null;){var l=i.next,u=Sg(i,t);u===0?(i.next=null,a===null?Is=l:a.next=l,l===null&&($o=a)):(a=i,(e!==0||(u&3)!==0)&&(Vs=!0)),i=l}st!==0&&st!==5||rr(e),xa!==0&&(xa=0)}function Sg(e,t){for(var a=e.suspendedLanes,i=e.pingedLanes,l=e.expirationTimes,u=e.pendingLanes&-62914561;0x)break;var V=C.transferSize,G=C.initiatorType;V&&Mg(G)&&(C=C.responseEnd,m+=V*(C"u"?null:document;function Gg(e,t,a){var i=Qo;if(i&&typeof t=="string"&&t){var l=Zt(t);l='link[rel="'+e+'"][href="'+l+'"]',typeof a=="string"&&(l+='[crossorigin="'+a+'"]'),qg.has(l)||(qg.add(l),e={rel:e,crossOrigin:a,href:t},i.querySelector(l)===null&&(t=i.createElement("link"),vt(t,"link",e),ct(t),i.head.appendChild(t)))}}function MS(e){Kn.D(e),Gg("dns-prefetch",e,null)}function NS(e,t){Kn.C(e,t),Gg("preconnect",e,t)}function LS(e,t,a){Kn.L(e,t,a);var i=Qo;if(i&&e&&t){var l='link[rel="preload"][as="'+Zt(t)+'"]';t==="image"&&a&&a.imageSrcSet?(l+='[imagesrcset="'+Zt(a.imageSrcSet)+'"]',typeof a.imageSizes=="string"&&(l+='[imagesizes="'+Zt(a.imageSizes)+'"]')):l+='[href="'+Zt(e)+'"]';var u=l;switch(t){case"style":u=Zo(e);break;case"script":u=Jo(e)}rn.has(u)||(e=b({rel:"preload",href:t==="image"&&a&&a.imageSrcSet?void 0:e,as:t},a),rn.set(u,e),i.querySelector(l)!==null||t==="style"&&i.querySelector(ur(u))||t==="script"&&i.querySelector(dr(u))||(t=i.createElement("link"),vt(t,"link",e),ct(t),i.head.appendChild(t)))}}function jS(e,t){Kn.m(e,t);var a=Qo;if(a&&e){var i=t&&typeof t.as=="string"?t.as:"script",l='link[rel="modulepreload"][as="'+Zt(i)+'"][href="'+Zt(e)+'"]',u=l;switch(i){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":u=Jo(e)}if(!rn.has(u)&&(e=b({rel:"modulepreload",href:e},t),rn.set(u,e),a.querySelector(l)===null)){switch(i){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(a.querySelector(dr(u)))return}i=a.createElement("link"),vt(i,"link",e),ct(i),a.head.appendChild(i)}}}function zS(e,t,a){Kn.S(e,t,a);var i=Qo;if(i&&e){var l=vo(i).hoistableStyles,u=Zo(e);t=t||"default";var m=l.get(u);if(!m){var x={loading:0,preload:null};if(m=i.querySelector(ur(u)))x.loading=5;else{e=b({rel:"stylesheet",href:e,"data-precedence":t},a),(a=rn.get(u))&&sd(e,a);var C=m=i.createElement("link");ct(C),vt(C,"link",e),C._p=new Promise(function(z,V){C.onload=z,C.onerror=V}),C.addEventListener("load",function(){x.loading|=1}),C.addEventListener("error",function(){x.loading|=2}),x.loading|=4,Ys(m,t,i)}m={type:"stylesheet",instance:m,count:1,state:x},l.set(u,m)}}}function PS(e,t){Kn.X(e,t);var a=Qo;if(a&&e){var i=vo(a).hoistableScripts,l=Jo(e),u=i.get(l);u||(u=a.querySelector(dr(l)),u||(e=b({src:e,async:!0},t),(t=rn.get(l))&&ld(e,t),u=a.createElement("script"),ct(u),vt(u,"link",e),a.head.appendChild(u)),u={type:"script",instance:u,count:1,state:null},i.set(l,u))}}function US(e,t){Kn.M(e,t);var a=Qo;if(a&&e){var i=vo(a).hoistableScripts,l=Jo(e),u=i.get(l);u||(u=a.querySelector(dr(l)),u||(e=b({src:e,async:!0,type:"module"},t),(t=rn.get(l))&&ld(e,t),u=a.createElement("script"),ct(u),vt(u,"link",e),a.head.appendChild(u)),u={type:"script",instance:u,count:1,state:null},i.set(l,u))}}function Kg(e,t,a,i){var l=(l=mt.current)?Fs(l):null;if(!l)throw Error(s(446));switch(e){case"meta":case"title":return null;case"style":return typeof a.precedence=="string"&&typeof a.href=="string"?(t=Zo(a.href),a=vo(l).hoistableStyles,i=a.get(t),i||(i={type:"style",instance:null,count:0,state:null},a.set(t,i)),i):{type:"void",instance:null,count:0,state:null};case"link":if(a.rel==="stylesheet"&&typeof a.href=="string"&&typeof a.precedence=="string"){e=Zo(a.href);var u=vo(l).hoistableStyles,m=u.get(e);if(m||(l=l.ownerDocument||l,m={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},u.set(e,m),(u=l.querySelector(ur(e)))&&!u._p&&(m.instance=u,m.state.loading=5),rn.has(e)||(a={rel:"preload",as:"style",href:a.href,crossOrigin:a.crossOrigin,integrity:a.integrity,media:a.media,hrefLang:a.hrefLang,referrerPolicy:a.referrerPolicy},rn.set(e,a),u||HS(l,e,a,m.state))),t&&i===null)throw Error(s(528,""));return m}if(t&&i!==null)throw Error(s(529,""));return null;case"script":return t=a.async,a=a.src,typeof a=="string"&&t&&typeof t!="function"&&typeof t!="symbol"?(t=Jo(a),a=vo(l).hoistableScripts,i=a.get(t),i||(i={type:"script",instance:null,count:0,state:null},a.set(t,i)),i):{type:"void",instance:null,count:0,state:null};default:throw Error(s(444,e))}}function Zo(e){return'href="'+Zt(e)+'"'}function ur(e){return'link[rel="stylesheet"]['+e+"]"}function Fg(e){return b({},e,{"data-precedence":e.precedence,precedence:null})}function HS(e,t,a,i){e.querySelector('link[rel="preload"][as="style"]['+t+"]")?i.loading=1:(t=e.createElement("link"),i.preload=t,t.addEventListener("load",function(){return i.loading|=1}),t.addEventListener("error",function(){return i.loading|=2}),vt(t,"link",a),ct(t),e.head.appendChild(t))}function Jo(e){return'[src="'+Zt(e)+'"]'}function dr(e){return"script[async]"+e}function Yg(e,t,a){if(t.count++,t.instance===null)switch(t.type){case"style":var i=e.querySelector('style[data-href~="'+Zt(a.href)+'"]');if(i)return t.instance=i,ct(i),i;var l=b({},a,{"data-href":a.href,"data-precedence":a.precedence,href:null,precedence:null});return i=(e.ownerDocument||e).createElement("style"),ct(i),vt(i,"style",l),Ys(i,a.precedence,e),t.instance=i;case"stylesheet":l=Zo(a.href);var u=e.querySelector(ur(l));if(u)return t.state.loading|=4,t.instance=u,ct(u),u;i=Fg(a),(l=rn.get(l))&&sd(i,l),u=(e.ownerDocument||e).createElement("link"),ct(u);var m=u;return m._p=new Promise(function(x,C){m.onload=x,m.onerror=C}),vt(u,"link",i),t.state.loading|=4,Ys(u,a.precedence,e),t.instance=u;case"script":return u=Jo(a.src),(l=e.querySelector(dr(u)))?(t.instance=l,ct(l),l):(i=a,(l=rn.get(u))&&(i=b({},a),ld(i,l)),e=e.ownerDocument||e,l=e.createElement("script"),ct(l),vt(l,"link",i),e.head.appendChild(l),t.instance=l);case"void":return null;default:throw Error(s(443,t.type))}else t.type==="stylesheet"&&(t.state.loading&4)===0&&(i=t.instance,t.state.loading|=4,Ys(i,a.precedence,e));return t.instance}function Ys(e,t,a){for(var i=a.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),l=i.length?i[i.length-1]:null,u=l,m=0;m title"):null)}function BS(e,t,a){if(a===1||t.itemProp!=null)return!1;switch(e){case"meta":case"title":return!0;case"style":if(typeof t.precedence!="string"||typeof t.href!="string"||t.href==="")break;return!0;case"link":if(typeof t.rel!="string"||typeof t.href!="string"||t.href===""||t.onLoad||t.onError)break;switch(t.rel){case"stylesheet":return e=t.disabled,typeof t.precedence=="string"&&e==null;default:return!0}case"script":if(t.async&&typeof t.async!="function"&&typeof t.async!="symbol"&&!t.onLoad&&!t.onError&&t.src&&typeof t.src=="string")return!0}return!1}function Qg(e){return!(e.type==="stylesheet"&&(e.state.loading&3)===0)}function IS(e,t,a,i){if(a.type==="stylesheet"&&(typeof i.media!="string"||matchMedia(i.media).matches!==!1)&&(a.state.loading&4)===0){if(a.instance===null){var l=Zo(i.href),u=t.querySelector(ur(l));if(u){t=u._p,t!==null&&typeof t=="object"&&typeof t.then=="function"&&(e.count++,e=$s.bind(e),t.then(e,e)),a.state.loading|=4,a.instance=u,ct(u);return}u=t.ownerDocument||t,i=Fg(i),(l=rn.get(l))&&sd(i,l),u=u.createElement("link"),ct(u);var m=u;m._p=new Promise(function(x,C){m.onload=x,m.onerror=C}),vt(u,"link",i),a.instance=u}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(a,t),(t=a.state.preload)&&(a.state.loading&3)===0&&(e.count++,a=$s.bind(e),t.addEventListener("load",a),t.addEventListener("error",a))}}var cd=0;function VS(e,t){return e.stylesheets&&e.count===0&&Zs(e,e.stylesheets),0cd?50:800)+t);return e.unsuspend=a,function(){e.unsuspend=null,clearTimeout(i),clearTimeout(l)}}:null}function $s(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Zs(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var Qs=null;function Zs(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,Qs=new Map,t.forEach(qS,e),Qs=null,$s.call(e))}function qS(e,t){if(!(t.state.loading&4)){var a=Qs.get(e);if(a)var i=a.get(null);else{a=new Map,Qs.set(e,a);for(var l=e.querySelectorAll("link[data-precedence],style[data-precedence]"),u=0;u"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(o){console.error(o)}}return n(),bd.exports=g_(),bd.exports}var b_=y_();const v_=r_(b_),w_="modulepreload",x_=function(n){return"/"+n},yy={},H=function(o,r,s){let c=Promise.resolve();if(r&&r.length>0){let f=function(y){return Promise.all(y.map(w=>Promise.resolve(w).then(b=>({status:"fulfilled",value:b}),b=>({status:"rejected",reason:b}))))};document.getElementsByTagName("link");const h=document.querySelector("meta[property=csp-nonce]"),g=(h==null?void 0:h.nonce)||(h==null?void 0:h.getAttribute("nonce"));c=f(r.map(y=>{if(y=x_(y),y in yy)return;yy[y]=!0;const w=y.endsWith(".css"),b=w?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${y}"]${b}`))return;const S=document.createElement("link");if(S.rel=w?"stylesheet":w_,w||(S.as="script"),S.crossOrigin="",S.href=y,g&&S.setAttribute("nonce",g),document.head.appendChild(S),w)return new Promise((E,A)=>{S.addEventListener("load",E),S.addEventListener("error",()=>A(new Error(`Unable to preload CSS for ${y}`)))})}))}function d(f){const h=new Event("vite:preloadError",{cancelable:!0});if(h.payload=f,window.dispatchEvent(h),!h.defaultPrevented)throw f}return c.then(f=>{for(const h of f||[])h.status==="rejected"&&d(h.reason);return o().catch(d)})};function Ob(n,o){return function(){return n.apply(o,arguments)}}const{toString:S_}=Object.prototype,{getPrototypeOf:Ml}=Object,{iterator:Nl,toStringTag:kb}=Symbol,Ll=(n=>o=>{const r=S_.call(o);return n[r]||(n[r]=r.slice(8,-1).toLowerCase())})(Object.create(null)),pn=n=>(n=n.toLowerCase(),o=>Ll(o)===n),jl=n=>o=>typeof o===n,{isArray:mi}=Array,ui=jl("undefined");function Mr(n){return n!==null&&!ui(n)&&n.constructor!==null&&!ui(n.constructor)&&Lt(n.constructor.isBuffer)&&n.constructor.isBuffer(n)}const Db=pn("ArrayBuffer");function __(n){let o;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?o=ArrayBuffer.isView(n):o=n&&n.buffer&&Db(n.buffer),o}const T_=jl("string"),Lt=jl("function"),Mb=jl("number"),Nr=n=>n!==null&&typeof n=="object",E_=n=>n===!0||n===!1,gl=n=>{if(Ll(n)!=="object")return!1;const o=Ml(n);return(o===null||o===Object.prototype||Object.getPrototypeOf(o)===null)&&!(kb in n)&&!(Nl in n)},A_=n=>{if(!Nr(n)||Mr(n))return!1;try{return Object.keys(n).length===0&&Object.getPrototypeOf(n)===Object.prototype}catch{return!1}},C_=pn("Date"),R_=pn("File"),O_=n=>!!(n&&typeof n.uri<"u"),k_=n=>n&&typeof n.getParts<"u",D_=pn("Blob"),M_=pn("FileList"),N_=n=>Nr(n)&&Lt(n.pipe);function L_(){return typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{}}const by=L_(),vy=typeof by.FormData<"u"?by.FormData:void 0,j_=n=>{if(!n)return!1;if(vy&&n instanceof vy)return!0;const o=Ml(n);if(!o||o===Object.prototype||!Lt(n.append))return!1;const r=Ll(n);return r==="formdata"||r==="object"&&Lt(n.toString)&&n.toString()==="[object FormData]"},z_=pn("URLSearchParams"),[P_,U_,H_,B_]=["ReadableStream","Request","Response","Headers"].map(pn),I_=n=>n.trim?n.trim():n.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function Lr(n,o,{allOwnKeys:r=!1}={}){if(n===null||typeof n>"u")return;let s,c;if(typeof n!="object"&&(n=[n]),mi(n))for(s=0,c=n.length;s0;)if(c=r[s],o===c.toLowerCase())return c;return null}const ro=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,Lb=n=>!ui(n)&&n!==ro;function Hd(...n){const{caseless:o,skipUndefined:r}=Lb(this)&&this||{},s={},c=(d,f)=>{if(f==="__proto__"||f==="constructor"||f==="prototype")return;const h=o&&Nb(s,f)||f,g=Bd(s,h)?s[h]:void 0;gl(g)&&gl(d)?s[h]=Hd(g,d):gl(d)?s[h]=Hd({},d):mi(d)?s[h]=d.slice():(!r||!ui(d))&&(s[h]=d)};for(let d=0,f=n.length;d(Lr(o,(c,d)=>{r&&Lt(c)?Object.defineProperty(n,d,{__proto__:null,value:Ob(c,r),writable:!0,enumerable:!0,configurable:!0}):Object.defineProperty(n,d,{__proto__:null,value:c,writable:!0,enumerable:!0,configurable:!0})},{allOwnKeys:s}),n),q_=n=>(n.charCodeAt(0)===65279&&(n=n.slice(1)),n),G_=(n,o,r,s)=>{n.prototype=Object.create(o.prototype,s),Object.defineProperty(n.prototype,"constructor",{__proto__:null,value:n,writable:!0,enumerable:!1,configurable:!0}),Object.defineProperty(n,"super",{__proto__:null,value:o.prototype}),r&&Object.assign(n.prototype,r)},K_=(n,o,r,s)=>{let c,d,f;const h={};if(o=o||{},n==null)return o;do{for(c=Object.getOwnPropertyNames(n),d=c.length;d-- >0;)f=c[d],(!s||s(f,n,o))&&!h[f]&&(o[f]=n[f],h[f]=!0);n=r!==!1&&Ml(n)}while(n&&(!r||r(n,o))&&n!==Object.prototype);return o},F_=(n,o,r)=>{n=String(n),(r===void 0||r>n.length)&&(r=n.length),r-=o.length;const s=n.indexOf(o,r);return s!==-1&&s===r},Y_=n=>{if(!n)return null;if(mi(n))return n;let o=n.length;if(!Mb(o))return null;const r=new Array(o);for(;o-- >0;)r[o]=n[o];return r},X_=(n=>o=>n&&o instanceof n)(typeof Uint8Array<"u"&&Ml(Uint8Array)),$_=(n,o)=>{const s=(n&&n[Nl]).call(n);let c;for(;(c=s.next())&&!c.done;){const d=c.value;o.call(n,d[0],d[1])}},Q_=(n,o)=>{let r;const s=[];for(;(r=n.exec(o))!==null;)s.push(r);return s},Z_=pn("HTMLFormElement"),J_=n=>n.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(r,s,c){return s.toUpperCase()+c}),Bd=(({hasOwnProperty:n})=>(o,r)=>n.call(o,r))(Object.prototype),W_=pn("RegExp"),jb=(n,o)=>{const r=Object.getOwnPropertyDescriptors(n),s={};Lr(r,(c,d)=>{let f;(f=o(c,d,n))!==!1&&(s[d]=f||c)}),Object.defineProperties(n,s)},e1=n=>{jb(n,(o,r)=>{if(Lt(n)&&["arguments","caller","callee"].includes(r))return!1;const s=n[r];if(Lt(s)){if(o.enumerable=!1,"writable"in o){o.writable=!1;return}o.set||(o.set=()=>{throw Error("Can not rewrite read-only method '"+r+"'")})}})},t1=(n,o)=>{const r={},s=c=>{c.forEach(d=>{r[d]=!0})};return mi(n)?s(n):s(String(n).split(o)),r},n1=()=>{},a1=(n,o)=>n!=null&&Number.isFinite(n=+n)?n:o;function o1(n){return!!(n&&Lt(n.append)&&n[kb]==="FormData"&&n[Nl])}const i1=n=>{const o=new WeakSet,r=s=>{if(Nr(s)){if(o.has(s))return;if(Mr(s))return s;if(!("toJSON"in s)){o.add(s);const c=mi(s)?[]:{};return Lr(s,(d,f)=>{const h=r(d);!ui(h)&&(c[f]=h)}),o.delete(s),c}}return s};return r(n)},r1=pn("AsyncFunction"),s1=n=>n&&(Nr(n)||Lt(n))&&Lt(n.then)&&Lt(n.catch),zb=((n,o)=>n?setImmediate:o?((r,s)=>(ro.addEventListener("message",({source:c,data:d})=>{c===ro&&d===r&&s.length&&s.shift()()},!1),c=>{s.push(c),ro.postMessage(r,"*")}))(`axios@${Math.random()}`,[]):r=>setTimeout(r))(typeof setImmediate=="function",Lt(ro.postMessage)),l1=typeof queueMicrotask<"u"?queueMicrotask.bind(ro):typeof process<"u"&&process.nextTick||zb,c1=n=>n!=null&&Lt(n[Nl]),L={isArray:mi,isArrayBuffer:Db,isBuffer:Mr,isFormData:j_,isArrayBufferView:__,isString:T_,isNumber:Mb,isBoolean:E_,isObject:Nr,isPlainObject:gl,isEmptyObject:A_,isReadableStream:P_,isRequest:U_,isResponse:H_,isHeaders:B_,isUndefined:ui,isDate:C_,isFile:R_,isReactNativeBlob:O_,isReactNative:k_,isBlob:D_,isRegExp:W_,isFunction:Lt,isStream:N_,isURLSearchParams:z_,isTypedArray:X_,isFileList:M_,forEach:Lr,merge:Hd,extend:V_,trim:I_,stripBOM:q_,inherits:G_,toFlatObject:K_,kindOf:Ll,kindOfTest:pn,endsWith:F_,toArray:Y_,forEachEntry:$_,matchAll:Q_,isHTMLForm:Z_,hasOwnProperty:Bd,hasOwnProp:Bd,reduceDescriptors:jb,freezeMethods:e1,toObjectSet:t1,toCamelCase:J_,noop:n1,toFiniteNumber:a1,findKey:Nb,global:ro,isContextDefined:Lb,isSpecCompliantForm:o1,toJSONObject:i1,isAsyncFn:r1,isThenable:s1,setImmediate:zb,asap:l1,isIterable:c1},u1=L.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),d1=n=>{const o={};let r,s,c;return n&&n.split(` `).forEach(function(f){c=f.indexOf(":"),r=f.substring(0,c).trim().toLowerCase(),s=f.substring(c+1).trim(),!(!r||o[r]&&u1[r])&&(r==="set-cookie"?o[r]?o[r].push(s):o[r]=[s]:o[r]=o[r]?o[r]+", "+s:s)}),o};function f1(n){let o=0,r=n.length;for(;oo;){const s=n.charCodeAt(r-1);if(s!==9&&s!==32)break;r-=1}return o===0&&r===n.length?n:n.slice(o,r)}const h1=new RegExp("[\\u0000-\\u0008\\u000a-\\u001f\\u007f]+","g"),m1=new RegExp("[^\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+","g");function vf(n,o){return L.isArray(n)?n.map(r=>vf(r,o)):f1(String(n).replace(o,""))}const p1=n=>vf(n,h1),g1=n=>vf(n,m1);function Pb(n){const o=Object.create(null);return L.forEach(n.toJSON(),(r,s)=>{o[s]=g1(r)}),o}const wy=Symbol("internals");function yr(n){return n&&String(n).trim().toLowerCase()}function yl(n){return n===!1||n==null?n:L.isArray(n)?n.map(yl):p1(String(n))}function y1(n){const o=Object.create(null),r=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let s;for(;s=r.exec(n);)o[s[1]]=s[2];return o}const b1=n=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(n.trim());function xd(n,o,r,s,c){if(L.isFunction(s))return s.call(this,o,r);if(c&&(o=r),!!L.isString(o)){if(L.isString(s))return o.indexOf(s)!==-1;if(L.isRegExp(s))return s.test(o)}}function v1(n){return n.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(o,r,s)=>r.toUpperCase()+s)}function w1(n,o){const r=L.toCamelCase(" "+o);["get","set","has"].forEach(s=>{Object.defineProperty(n,s+r,{__proto__:null,value:function(c,d,f){return this[s].call(this,o,c,d,f)},configurable:!0})})}let At=class{constructor(o){o&&this.set(o)}set(o,r,s){const c=this;function d(h,g,y){const w=yr(g);if(!w)throw new Error("header name must be a non-empty string");const b=L.findKey(c,w);(!b||c[b]===void 0||y===!0||y===void 0&&c[b]!==!1)&&(c[b||g]=yl(h))}const f=(h,g)=>L.forEach(h,(y,w)=>d(y,w,g));if(L.isPlainObject(o)||o instanceof this.constructor)f(o,r);else if(L.isString(o)&&(o=o.trim())&&!b1(o))f(d1(o),r);else if(L.isObject(o)&&L.isIterable(o)){let h={},g,y;for(const w of o){if(!L.isArray(w))throw TypeError("Object iterator must return a key-value pair");h[y=w[0]]=(g=h[y])?L.isArray(g)?[...g,w[1]]:[g,w[1]]:w[1]}f(h,r)}else o!=null&&d(r,o,s);return this}get(o,r){if(o=yr(o),o){const s=L.findKey(this,o);if(s){const c=this[s];if(!r)return c;if(r===!0)return y1(c);if(L.isFunction(r))return r.call(this,c,s);if(L.isRegExp(r))return r.exec(c);throw new TypeError("parser must be boolean|regexp|function")}}}has(o,r){if(o=yr(o),o){const s=L.findKey(this,o);return!!(s&&this[s]!==void 0&&(!r||xd(this,this[s],s,r)))}return!1}delete(o,r){const s=this;let c=!1;function d(f){if(f=yr(f),f){const h=L.findKey(s,f);h&&(!r||xd(s,s[h],h,r))&&(delete s[h],c=!0)}}return L.isArray(o)?o.forEach(d):d(o),c}clear(o){const r=Object.keys(this);let s=r.length,c=!1;for(;s--;){const d=r[s];(!o||xd(this,this[d],d,o,!0))&&(delete this[d],c=!0)}return c}normalize(o){const r=this,s={};return L.forEach(this,(c,d)=>{const f=L.findKey(s,d);if(f){r[f]=yl(c),delete r[d];return}const h=o?v1(d):String(d).trim();h!==d&&delete r[d],r[h]=yl(c),s[h]=!0}),this}concat(...o){return this.constructor.concat(this,...o)}toJSON(o){const r=Object.create(null);return L.forEach(this,(s,c)=>{s!=null&&s!==!1&&(r[c]=o&&L.isArray(s)?s.join(", "):s)}),r}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([o,r])=>o+": "+r).join(` `)}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(o){return o instanceof this?o:new this(o)}static concat(o,...r){const s=new this(o);return r.forEach(c=>s.set(c)),s}static accessor(o){const s=(this[wy]=this[wy]={accessors:{}}).accessors,c=this.prototype;function d(f){const h=yr(f);s[h]||(w1(c,f),s[h]=!0)}return L.isArray(o)?o.forEach(d):d(o),this}};At.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);L.reduceDescriptors(At.prototype,({value:n},o)=>{let r=o[0].toUpperCase()+o.slice(1);return{get:()=>n,set(s){this[r]=s}}});L.freezeMethods(At);const x1="[REDACTED ****]";function S1(n){if(L.hasOwnProp(n,"toJSON"))return!0;let o=Object.getPrototypeOf(n);for(;o&&o!==Object.prototype;){if(L.hasOwnProp(o,"toJSON"))return!0;o=Object.getPrototypeOf(o)}return!1}function _1(n,o){const r=new Set(o.map(d=>String(d).toLowerCase())),s=[],c=d=>{if(d===null||typeof d!="object"||L.isBuffer(d))return d;if(s.indexOf(d)!==-1)return;d instanceof At&&(d=d.toJSON()),s.push(d);let f;if(L.isArray(d))f=[],d.forEach((h,g)=>{const y=c(h);L.isUndefined(y)||(f[g]=y)});else{if(!L.isPlainObject(d)&&S1(d))return s.pop(),d;f=Object.create(null);for(const[h,g]of Object.entries(d)){const y=r.has(h.toLowerCase())?x1:c(g);L.isUndefined(y)||(f[h]=y)}}return s.pop(),f};return c(n)}let te=class Ub extends Error{static from(o,r,s,c,d,f){const h=new Ub(o.message,r||o.code,s,c,d);return h.cause=o,h.name=o.name,o.status!=null&&h.status==null&&(h.status=o.status),f&&Object.assign(h,f),h}constructor(o,r,s,c,d){super(o),Object.defineProperty(this,"message",{__proto__:null,value:o,enumerable:!0,writable:!0,configurable:!0}),this.name="AxiosError",this.isAxiosError=!0,r&&(this.code=r),s&&(this.config=s),c&&(this.request=c),d&&(this.response=d,this.status=d.status)}toJSON(){const o=this.config,r=o&&L.hasOwnProp(o,"redact")?o.redact:void 0,s=L.isArray(r)&&r.length>0?_1(o,r):L.toJSONObject(o);return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:s,code:this.code,status:this.status}}};te.ERR_BAD_OPTION_VALUE="ERR_BAD_OPTION_VALUE";te.ERR_BAD_OPTION="ERR_BAD_OPTION";te.ECONNABORTED="ECONNABORTED";te.ETIMEDOUT="ETIMEDOUT";te.ECONNREFUSED="ECONNREFUSED";te.ERR_NETWORK="ERR_NETWORK";te.ERR_FR_TOO_MANY_REDIRECTS="ERR_FR_TOO_MANY_REDIRECTS";te.ERR_DEPRECATED="ERR_DEPRECATED";te.ERR_BAD_RESPONSE="ERR_BAD_RESPONSE";te.ERR_BAD_REQUEST="ERR_BAD_REQUEST";te.ERR_CANCELED="ERR_CANCELED";te.ERR_NOT_SUPPORT="ERR_NOT_SUPPORT";te.ERR_INVALID_URL="ERR_INVALID_URL";te.ERR_FORM_DATA_DEPTH_EXCEEDED="ERR_FORM_DATA_DEPTH_EXCEEDED";const T1=null;function Id(n){return L.isPlainObject(n)||L.isArray(n)}function Hb(n){return L.endsWith(n,"[]")?n.slice(0,-2):n}function Sd(n,o,r){return n?n.concat(o).map(function(c,d){return c=Hb(c),!r&&d?"["+c+"]":c}).join(r?".":""):o}function E1(n){return L.isArray(n)&&!n.some(Id)}const A1=L.toFlatObject(L,{},null,function(o){return/^is[A-Z]/.test(o)});function zl(n,o,r){if(!L.isObject(n))throw new TypeError("target must be an object");o=o||new FormData,r=L.toFlatObject(r,{metaTokens:!0,dots:!1,indexes:!1},!1,function(T,R){return!L.isUndefined(R[T])});const s=r.metaTokens,c=r.visitor||b,d=r.dots,f=r.indexes,h=r.Blob||typeof Blob<"u"&&Blob,g=r.maxDepth===void 0?100:r.maxDepth,y=h&&L.isSpecCompliantForm(o);if(!L.isFunction(c))throw new TypeError("visitor must be a function");function w(_){if(_===null)return"";if(L.isDate(_))return _.toISOString();if(L.isBoolean(_))return _.toString();if(!y&&L.isBlob(_))throw new te("Blob is not supported. Use a Buffer instead.");return L.isArrayBuffer(_)||L.isTypedArray(_)?y&&typeof Blob=="function"?new Blob([_]):Buffer.from(_):_}function b(_,T,R){let D=_;if(L.isReactNative(o)&&L.isReactNativeBlob(_))return o.append(Sd(R,T,d),w(_)),!1;if(_&&!R&&typeof _=="object"){if(L.endsWith(T,"{}"))T=s?T:T.slice(0,-2),_=JSON.stringify(_);else if(L.isArray(_)&&E1(_)||(L.isFileList(_)||L.endsWith(T,"[]"))&&(D=L.toArray(_)))return T=Hb(T),D.forEach(function(M,I){!(L.isUndefined(M)||M===null)&&o.append(f===!0?Sd([T],I,d):f===null?T:T+"[]",w(M))}),!1}return Id(_)?!0:(o.append(Sd(R,T,d),w(_)),!1)}const S=[],E=Object.assign(A1,{defaultVisitor:b,convertValue:w,isVisitable:Id});function A(_,T,R=0){if(!L.isUndefined(_)){if(R>g)throw new te("Object is too deeply nested ("+R+" levels). Max depth: "+g,te.ERR_FORM_DATA_DEPTH_EXCEEDED);if(S.indexOf(_)!==-1)throw Error("Circular reference detected in "+T.join("."));S.push(_),L.forEach(_,function(N,M){(!(L.isUndefined(N)||N===null)&&c.call(o,N,L.isString(M)?M.trim():M,T,E))===!0&&A(N,T?T.concat(M):[M],R+1)}),S.pop()}}if(!L.isObject(n))throw new TypeError("data must be an object");return A(n),o}function xy(n){const o={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"};return encodeURIComponent(n).replace(/[!'()~]|%20/g,function(s){return o[s]})}function wf(n,o){this._pairs=[],n&&zl(n,this,o)}const Bb=wf.prototype;Bb.append=function(o,r){this._pairs.push([o,r])};Bb.toString=function(o){const r=o?function(s){return o.call(this,s,xy)}:xy;return this._pairs.map(function(c){return r(c[0])+"="+r(c[1])},"").join("&")};function C1(n){return encodeURIComponent(n).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+")}function Ib(n,o,r){if(!o)return n;const s=r&&r.encode||C1,c=L.isFunction(r)?{serialize:r}:r,d=c&&c.serialize;let f;if(d?f=d(o,c):f=L.isURLSearchParams(o)?o.toString():new wf(o,c).toString(s),f){const h=n.indexOf("#");h!==-1&&(n=n.slice(0,h)),n+=(n.indexOf("?")===-1?"?":"&")+f}return n}class Sy{constructor(){this.handlers=[]}use(o,r,s){return this.handlers.push({fulfilled:o,rejected:r,synchronous:s?s.synchronous:!1,runWhen:s?s.runWhen:null}),this.handlers.length-1}eject(o){this.handlers[o]&&(this.handlers[o]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(o){L.forEach(this.handlers,function(s){s!==null&&o(s)})}}const xf={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1,legacyInterceptorReqResOrdering:!0},R1=typeof URLSearchParams<"u"?URLSearchParams:wf,O1=typeof FormData<"u"?FormData:null,k1=typeof Blob<"u"?Blob:null,D1={isBrowser:!0,classes:{URLSearchParams:R1,FormData:O1,Blob:k1},protocols:["http","https","file","blob","url","data"]},Sf=typeof window<"u"&&typeof document<"u",Vd=typeof navigator=="object"&&navigator||void 0,M1=Sf&&(!Vd||["ReactNative","NativeScript","NS"].indexOf(Vd.product)<0),N1=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",L1=Sf&&window.location.href||"http://localhost",j1=Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:Sf,hasStandardBrowserEnv:M1,hasStandardBrowserWebWorkerEnv:N1,navigator:Vd,origin:L1},Symbol.toStringTag,{value:"Module"})),St={...j1,...D1};function z1(n,o){return zl(n,new St.classes.URLSearchParams,{visitor:function(r,s,c,d){return St.isNode&&L.isBuffer(r)?(this.append(s,r.toString("base64")),!1):d.defaultVisitor.apply(this,arguments)},...o})}function P1(n){return L.matchAll(/\w+|\[(\w*)]/g,n).map(o=>o[0]==="[]"?"":o[1]||o[0])}function U1(n){const o={},r=Object.keys(n);let s;const c=r.length;let d;for(s=0;s=r.length;return f=!f&&L.isArray(c)?c.length:f,g?(L.hasOwnProp(c,f)?c[f]=L.isArray(c[f])?c[f].concat(s):[c[f],s]:c[f]=s,!h):((!L.hasOwnProp(c,f)||!L.isObject(c[f]))&&(c[f]=[]),o(r,s,c[f],d)&&L.isArray(c[f])&&(c[f]=U1(c[f])),!h)}if(L.isFormData(n)&&L.isFunction(n.entries)){const r={};return L.forEachEntry(n,(s,c)=>{o(P1(s),c,r,0)}),r}return null}const ei=(n,o)=>n!=null&&L.hasOwnProp(n,o)?n[o]:void 0;function H1(n,o,r){if(L.isString(n))try{return(o||JSON.parse)(n),L.trim(n)}catch(s){if(s.name!=="SyntaxError")throw s}return(r||JSON.stringify)(n)}const jr={transitional:xf,adapter:["xhr","http","fetch"],transformRequest:[function(o,r){const s=r.getContentType()||"",c=s.indexOf("application/json")>-1,d=L.isObject(o);if(d&&L.isHTMLForm(o)&&(o=new FormData(o)),L.isFormData(o))return c?JSON.stringify(Vb(o)):o;if(L.isArrayBuffer(o)||L.isBuffer(o)||L.isStream(o)||L.isFile(o)||L.isBlob(o)||L.isReadableStream(o))return o;if(L.isArrayBufferView(o))return o.buffer;if(L.isURLSearchParams(o))return r.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),o.toString();let h;if(d){const g=ei(this,"formSerializer");if(s.indexOf("application/x-www-form-urlencoded")>-1)return z1(o,g).toString();if((h=L.isFileList(o))||s.indexOf("multipart/form-data")>-1){const y=ei(this,"env"),w=y&&y.FormData;return zl(h?{"files[]":o}:o,w&&new w,g)}}return d||c?(r.setContentType("application/json",!1),H1(o)):o}],transformResponse:[function(o){const r=ei(this,"transitional")||jr.transitional,s=r&&r.forcedJSONParsing,c=ei(this,"responseType"),d=c==="json";if(L.isResponse(o)||L.isReadableStream(o))return o;if(o&&L.isString(o)&&(s&&!c||d)){const h=!(r&&r.silentJSONParsing)&&d;try{return JSON.parse(o,ei(this,"parseReviver"))}catch(g){if(h)throw g.name==="SyntaxError"?te.from(g,te.ERR_BAD_RESPONSE,this,null,ei(this,"response")):g}}return o}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:St.classes.FormData,Blob:St.classes.Blob},validateStatus:function(o){return o>=200&&o<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};L.forEach(["delete","get","head","post","put","patch","query"],n=>{jr.headers[n]={}});function _d(n,o){const r=this||jr,s=o||r,c=At.from(s.headers);let d=s.data;return L.forEach(n,function(h){d=h.call(r,d,c.normalize(),o?o.status:void 0)}),c.normalize(),d}function qb(n){return!!(n&&n.__CANCEL__)}let zr=class extends te{constructor(o,r,s){super(o??"canceled",te.ERR_CANCELED,r,s),this.name="CanceledError",this.__CANCEL__=!0}};function Gb(n,o,r){const s=r.config.validateStatus;!r.status||!s||s(r.status)?n(r):o(new te("Request failed with status code "+r.status,r.status>=400&&r.status<500?te.ERR_BAD_REQUEST:te.ERR_BAD_RESPONSE,r.config,r.request,r))}function B1(n){const o=/^([-+\w]{1,25}):(?:\/\/)?/.exec(n);return o&&o[1]||""}function I1(n,o){n=n||10;const r=new Array(n),s=new Array(n);let c=0,d=0,f;return o=o!==void 0?o:1e3,function(g){const y=Date.now(),w=s[d];f||(f=y),r[c]=g,s[c]=y;let b=d,S=0;for(;b!==c;)S+=r[b++],b=b%n;if(c=(c+1)%n,c===d&&(d=(d+1)%n),y-f{r=w,c=null,d&&(clearTimeout(d),d=null),n(...y)};return[(...y)=>{const w=Date.now(),b=w-r;b>=s?f(y,w):(c=y,d||(d=setTimeout(()=>{d=null,f(c)},s-b)))},()=>c&&f(c)]}const _l=(n,o,r=3)=>{let s=0;const c=I1(50,250);return V1(d=>{if(!d||typeof d.loaded!="number")return;const f=d.loaded,h=d.lengthComputable?d.total:void 0,g=h!=null?Math.min(f,h):f,y=Math.max(0,g-s),w=c(y);s=Math.max(s,g);const b={loaded:g,total:h,progress:h?g/h:void 0,bytes:y,rate:w||void 0,estimated:w&&h?(h-g)/w:void 0,event:d,lengthComputable:h!=null,[o?"download":"upload"]:!0};n(b)},r)},_y=(n,o)=>{const r=n!=null;return[s=>o[0]({lengthComputable:r,total:n,loaded:s}),o[1]]},Ty=n=>(...o)=>L.asap(()=>n(...o)),q1=St.hasStandardBrowserEnv?((n,o)=>r=>(r=new URL(r,St.origin),n.protocol===r.protocol&&n.host===r.host&&(o||n.port===r.port)))(new URL(St.origin),St.navigator&&/(msie|trident)/i.test(St.navigator.userAgent)):()=>!0,G1=St.hasStandardBrowserEnv?{write(n,o,r,s,c,d,f){if(typeof document>"u")return;const h=[`${n}=${encodeURIComponent(o)}`];L.isNumber(r)&&h.push(`expires=${new Date(r).toUTCString()}`),L.isString(s)&&h.push(`path=${s}`),L.isString(c)&&h.push(`domain=${c}`),d===!0&&h.push("secure"),L.isString(f)&&h.push(`SameSite=${f}`),document.cookie=h.join("; ")},read(n){if(typeof document>"u")return null;const o=document.cookie.split(";");for(let r=0;rn instanceof At?{...n}:n;function lo(n,o){o=o||{};const r=Object.create(null);Object.defineProperty(r,"hasOwnProperty",{__proto__:null,value:Object.prototype.hasOwnProperty,enumerable:!1,writable:!0,configurable:!0});function s(y,w,b,S){return L.isPlainObject(y)&&L.isPlainObject(w)?L.merge.call({caseless:S},y,w):L.isPlainObject(w)?L.merge({},w):L.isArray(w)?w.slice():w}function c(y,w,b,S){if(L.isUndefined(w)){if(!L.isUndefined(y))return s(void 0,y,b,S)}else return s(y,w,b,S)}function d(y,w){if(!L.isUndefined(w))return s(void 0,w)}function f(y,w){if(L.isUndefined(w)){if(!L.isUndefined(y))return s(void 0,y)}else return s(void 0,w)}function h(y,w,b){if(L.hasOwnProp(o,b))return s(y,w);if(L.hasOwnProp(n,b))return s(void 0,y)}const g={url:d,method:d,data:d,baseURL:f,transformRequest:f,transformResponse:f,paramsSerializer:f,timeout:f,timeoutMessage:f,withCredentials:f,withXSRFToken:f,adapter:f,responseType:f,xsrfCookieName:f,xsrfHeaderName:f,onUploadProgress:f,onDownloadProgress:f,decompress:f,maxContentLength:f,maxBodyLength:f,beforeRedirect:f,transport:f,httpAgent:f,httpsAgent:f,cancelToken:f,socketPath:f,allowedSocketPaths:f,responseEncoding:f,validateStatus:h,headers:(y,w,b)=>c(Ey(y),Ey(w),b,!0)};return L.forEach(Object.keys({...n,...o}),function(w){if(w==="__proto__"||w==="constructor"||w==="prototype")return;const b=L.hasOwnProp(g,w)?g[w]:c,S=L.hasOwnProp(n,w)?n[w]:void 0,E=L.hasOwnProp(o,w)?o[w]:void 0,A=b(S,E,w);L.isUndefined(A)&&b!==h||(r[w]=A)}),r}const Y1=["content-type","content-length"];function X1(n,o,r){if(r!=="content-only"){n.set(o);return}Object.entries(o).forEach(([s,c])=>{Y1.includes(s.toLowerCase())&&n.set(s,c)})}const $1=n=>encodeURIComponent(n).replace(/%([0-9A-F]{2})/gi,(o,r)=>String.fromCharCode(parseInt(r,16))),Fb=n=>{const o=lo({},n),r=S=>L.hasOwnProp(o,S)?o[S]:void 0,s=r("data");let c=r("withXSRFToken");const d=r("xsrfHeaderName"),f=r("xsrfCookieName");let h=r("headers");const g=r("auth"),y=r("baseURL"),w=r("allowAbsoluteUrls"),b=r("url");if(o.headers=h=At.from(h),o.url=Ib(Kb(y,b,w),n.params,n.paramsSerializer),g&&h.set("Authorization","Basic "+btoa((g.username||"")+":"+(g.password?$1(g.password):""))),L.isFormData(s)&&(St.hasStandardBrowserEnv||St.hasStandardBrowserWebWorkerEnv?h.setContentType(void 0):L.isFunction(s.getHeaders)&&X1(h,s.getHeaders(),r("formDataHeaderPolicy"))),St.hasStandardBrowserEnv&&(L.isFunction(c)&&(c=c(o)),c===!0||c==null&&q1(o.url))){const E=d&&f&&G1.read(f);E&&h.set(d,E)}return o},Q1=typeof XMLHttpRequest<"u",Z1=Q1&&function(n){return new Promise(function(r,s){const c=Fb(n);let d=c.data;const f=At.from(c.headers).normalize();let{responseType:h,onUploadProgress:g,onDownloadProgress:y}=c,w,b,S,E,A;function _(){E&&E(),A&&A(),c.cancelToken&&c.cancelToken.unsubscribe(w),c.signal&&c.signal.removeEventListener("abort",w)}let T=new XMLHttpRequest;T.open(c.method.toUpperCase(),c.url,!0),T.timeout=c.timeout;function R(){if(!T)return;const N=At.from("getAllResponseHeaders"in T&&T.getAllResponseHeaders()),I={data:!h||h==="text"||h==="json"?T.responseText:T.response,status:T.status,statusText:T.statusText,headers:N,config:n,request:T};Gb(function($){r($),_()},function($){s($),_()},I),T=null}"onloadend"in T?T.onloadend=R:T.onreadystatechange=function(){!T||T.readyState!==4||T.status===0&&!(T.responseURL&&T.responseURL.startsWith("file:"))||setTimeout(R)},T.onabort=function(){T&&(s(new te("Request aborted",te.ECONNABORTED,n,T)),_(),T=null)},T.onerror=function(M){const I=M&&M.message?M.message:"Network Error",K=new te(I,te.ERR_NETWORK,n,T);K.event=M||null,s(K),_(),T=null},T.ontimeout=function(){let M=c.timeout?"timeout of "+c.timeout+"ms exceeded":"timeout exceeded";const I=c.transitional||xf;c.timeoutErrorMessage&&(M=c.timeoutErrorMessage),s(new te(M,I.clarifyTimeoutError?te.ETIMEDOUT:te.ECONNABORTED,n,T)),_(),T=null},d===void 0&&f.setContentType(null),"setRequestHeader"in T&&L.forEach(Pb(f),function(M,I){T.setRequestHeader(I,M)}),L.isUndefined(c.withCredentials)||(T.withCredentials=!!c.withCredentials),h&&h!=="json"&&(T.responseType=c.responseType),y&&([S,A]=_l(y,!0),T.addEventListener("progress",S)),g&&T.upload&&([b,E]=_l(g),T.upload.addEventListener("progress",b),T.upload.addEventListener("loadend",E)),(c.cancelToken||c.signal)&&(w=N=>{T&&(s(!N||N.type?new zr(null,n,T):N),T.abort(),_(),T=null)},c.cancelToken&&c.cancelToken.subscribe(w),c.signal&&(c.signal.aborted?w():c.signal.addEventListener("abort",w)));const D=B1(c.url);if(D&&!St.protocols.includes(D)){s(new te("Unsupported protocol "+D+":",te.ERR_BAD_REQUEST,n));return}T.send(d||null)})},J1=(n,o)=>{if(n=n?n.filter(Boolean):[],!o&&!n.length)return;const r=new AbortController;let s=!1;const c=function(g){if(!s){s=!0,f();const y=g instanceof Error?g:this.reason;r.abort(y instanceof te?y:new zr(y instanceof Error?y.message:y))}};let d=o&&setTimeout(()=>{d=null,c(new te(`timeout of ${o}ms exceeded`,te.ETIMEDOUT))},o);const f=()=>{n&&(d&&clearTimeout(d),d=null,n.forEach(g=>{g.unsubscribe?g.unsubscribe(c):g.removeEventListener("abort",c)}),n=null)};n.forEach(g=>g.addEventListener("abort",c));const{signal:h}=r;return h.unsubscribe=()=>L.asap(f),h},W1=function*(n,o){let r=n.byteLength;if(r{const c=eT(n,o);let d=0,f,h=g=>{f||(f=!0,s&&s(g))};return new ReadableStream({async pull(g){try{const{done:y,value:w}=await c.next();if(y){h(),g.close();return}let b=w.byteLength;if(r){let S=d+=b;r(S)}g.enqueue(new Uint8Array(w))}catch(y){throw h(y),y}},cancel(g){return h(g),c.return()}},{highWaterMark:2})};function nT(n){if(!n||typeof n!="string"||!n.startsWith("data:"))return 0;const o=n.indexOf(",");if(o<0)return 0;const r=n.slice(5,o),s=n.slice(o+1);if(/;base64/i.test(r)){let f=s.length;const h=s.length;for(let E=0;E=48&&A<=57||A>=65&&A<=70||A>=97&&A<=102)&&(_>=48&&_<=57||_>=65&&_<=70||_>=97&&_<=102)&&(f-=2,E+=2)}let g=0,y=h-1;const w=E=>E>=2&&s.charCodeAt(E-2)===37&&s.charCodeAt(E-1)===51&&(s.charCodeAt(E)===68||s.charCodeAt(E)===100);y>=0&&(s.charCodeAt(y)===61?(g++,y--):w(y)&&(g++,y-=3)),g===1&&y>=0&&(s.charCodeAt(y)===61||w(y))&&g++;const S=Math.floor(f/4)*3-(g||0);return S>0?S:0}if(typeof Buffer<"u"&&typeof Buffer.byteLength=="function")return Buffer.byteLength(s,"utf8");let d=0;for(let f=0,h=s.length;f=55296&&g<=56319&&f+1=56320&&y<=57343?(d+=4,f++):d+=3}else d+=3}return d}const _f="1.16.1",Cy=64*1024,{isFunction:il}=L,Ry=(n,...o)=>{try{return!!n(...o)}catch{return!1}},aT=n=>{const o=L.global!==void 0&&L.global!==null?L.global:globalThis,{ReadableStream:r,TextEncoder:s}=o;n=L.merge.call({skipUndefined:!0},{Request:o.Request,Response:o.Response},n);const{fetch:c,Request:d,Response:f}=n,h=c?il(c):typeof fetch=="function",g=il(d),y=il(f);if(!h)return!1;const w=h&&il(r),b=h&&(typeof s=="function"?(R=>D=>R.encode(D))(new s):async R=>new Uint8Array(await new d(R).arrayBuffer())),S=g&&w&&Ry(()=>{let R=!1;const D=new d(St.origin,{body:new r,method:"POST",get duplex(){return R=!0,"half"}}),N=D.headers.has("Content-Type");return D.body!=null&&D.body.cancel(),R&&!N}),E=y&&w&&Ry(()=>L.isReadableStream(new f("").body)),A={stream:E&&(R=>R.body)};h&&["text","arrayBuffer","blob","formData","stream"].forEach(R=>{!A[R]&&(A[R]=(D,N)=>{let M=D&&D[R];if(M)return M.call(D);throw new te(`Response type '${R}' is not supported`,te.ERR_NOT_SUPPORT,N)})});const _=async R=>{if(R==null)return 0;if(L.isBlob(R))return R.size;if(L.isSpecCompliantForm(R))return(await new d(St.origin,{method:"POST",body:R}).arrayBuffer()).byteLength;if(L.isArrayBufferView(R)||L.isArrayBuffer(R))return R.byteLength;if(L.isURLSearchParams(R)&&(R=R+""),L.isString(R))return(await b(R)).byteLength},T=async(R,D)=>{const N=L.toFiniteNumber(R.getContentLength());return N??_(D)};return async R=>{let{url:D,method:N,data:M,signal:I,cancelToken:K,timeout:$,onDownloadProgress:W,onUploadProgress:J,responseType:oe,headers:se,withCredentials:Q="same-origin",fetchOptions:ue,maxContentLength:ie,maxBodyLength:be}=Fb(R);const P=L.isNumber(ie)&&ie>-1,F=L.isNumber(be)&&be>-1;let X=c||fetch;oe=oe?(oe+"").toLowerCase():"text";let Z=J1([I,K&&K.toAbortSignal()],$),Y=null;const ce=Z&&Z.unsubscribe&&(()=>{Z.unsubscribe()});let ge;try{if(P&&typeof D=="string"&&D.startsWith("data:")&&nT(D)>ie)throw new te("maxContentLength size of "+ie+" exceeded",te.ERR_BAD_RESPONSE,R,Y);if(F&&N!=="get"&&N!=="head"){const ye=await T(se,M);if(typeof ye=="number"&&isFinite(ye)&&ye>be)throw new te("Request body larger than maxBodyLength limit",te.ERR_BAD_REQUEST,R,Y)}if(J&&S&&N!=="get"&&N!=="head"&&(ge=await T(se,M))!==0){let ye=new d(D,{method:"POST",body:M,duplex:"half"}),rt;if(L.isFormData(M)&&(rt=ye.headers.get("content-type"))&&se.setContentType(rt),ye.body){const[Qe,_t]=_y(ge,_l(Ty(J)));M=Ay(ye.body,Cy,Qe,_t)}}L.isString(Q)||(Q=Q?"include":"omit");const ne=g&&"credentials"in d.prototype;if(L.isFormData(M)){const ye=se.getContentType();ye&&/^multipart\/form-data/i.test(ye)&&!/boundary=/i.test(ye)&&se.delete("content-type")}se.set("User-Agent","axios/"+_f,!1);const Re={...ue,signal:Z,method:N.toUpperCase(),headers:Pb(se.normalize()),body:M,duplex:"half",credentials:ne?Q:void 0};Y=g&&new d(D,Re);let Ue=await(g?X(Y,ue):X(D,Re));if(P){const ye=L.toFiniteNumber(Ue.headers.get("content-length"));if(ye!=null&&ye>ie)throw new te("maxContentLength size of "+ie+" exceeded",te.ERR_BAD_RESPONSE,R,Y)}const mt=E&&(oe==="stream"||oe==="response");if(E&&Ue.body&&(W||P||mt&&ce)){const ye={};["status","statusText","headers"].forEach(wt=>{ye[wt]=Ue[wt]});const rt=L.toFiniteNumber(Ue.headers.get("content-length")),[Qe,_t]=W&&_y(rt,_l(Ty(W),!0))||[];let Cn=0;const Ha=wt=>{if(P&&(Cn=wt,Cn>ie))throw new te("maxContentLength size of "+ie+" exceeded",te.ERR_BAD_RESPONSE,R,Y);Qe&&Qe(wt)};Ue=new f(Ay(Ue.body,Cy,Ha,()=>{_t&&_t(),ce&&ce()}),ye)}oe=oe||"text";let Fe=await A[L.findKey(A,oe)||"text"](Ue,R);if(P&&!E&&!mt){let ye;if(Fe!=null&&(typeof Fe.byteLength=="number"?ye=Fe.byteLength:typeof Fe.size=="number"?ye=Fe.size:typeof Fe=="string"&&(ye=typeof s=="function"?new s().encode(Fe).byteLength:Fe.length)),typeof ye=="number"&&ye>ie)throw new te("maxContentLength size of "+ie+" exceeded",te.ERR_BAD_RESPONSE,R,Y)}return!mt&&ce&&ce(),await new Promise((ye,rt)=>{Gb(ye,rt,{data:Fe,headers:At.from(Ue.headers),status:Ue.status,statusText:Ue.statusText,config:R,request:Y})})}catch(ne){if(ce&&ce(),Z&&Z.aborted&&Z.reason instanceof te){const Re=Z.reason;throw Re.config=R,Y&&(Re.request=Y),ne!==Re&&(Re.cause=ne),Re}throw ne&&ne.name==="TypeError"&&/Load failed|fetch/i.test(ne.message)?Object.assign(new te("Network Error",te.ERR_NETWORK,R,Y,ne&&ne.response),{cause:ne.cause||ne}):te.from(ne,ne&&ne.code,R,Y,ne&&ne.response)}}},oT=new Map,Yb=n=>{let o=n&&n.env||{};const{fetch:r,Request:s,Response:c}=o,d=[s,c,r];let f=d.length,h=f,g,y,w=oT;for(;h--;)g=d[h],y=w.get(g),y===void 0&&w.set(g,y=h?new Map:aT(o)),w=y;return y};Yb();const Tf={http:T1,xhr:Z1,fetch:{get:Yb}};L.forEach(Tf,(n,o)=>{if(n){try{Object.defineProperty(n,"name",{__proto__:null,value:o})}catch{}Object.defineProperty(n,"adapterName",{__proto__:null,value:o})}});const Oy=n=>`- ${n}`,iT=n=>L.isFunction(n)||n===null||n===!1;function rT(n,o){n=L.isArray(n)?n:[n];const{length:r}=n;let s,c;const d={};for(let f=0;f`adapter ${g} `+(y===!1?"is not supported by the environment":"is not available in the build"));let h=r?f.length>1?`since : `+f.map(Oy).join(` `):" "+Oy(f[0]):"as no adapter specified";throw new te("There is no suitable adapter to dispatch the request "+h,"ERR_NOT_SUPPORT")}return c}const Xb={getAdapter:rT,adapters:Tf};function Td(n){if(n.cancelToken&&n.cancelToken.throwIfRequested(),n.signal&&n.signal.aborted)throw new zr(null,n)}function ky(n){return Td(n),n.headers=At.from(n.headers),n.data=_d.call(n,n.transformRequest),["post","put","patch"].indexOf(n.method)!==-1&&n.headers.setContentType("application/x-www-form-urlencoded",!1),Xb.getAdapter(n.adapter||jr.adapter,n)(n).then(function(s){Td(n),n.response=s;try{s.data=_d.call(n,n.transformResponse,s)}finally{delete n.response}return s.headers=At.from(s.headers),s},function(s){if(!qb(s)&&(Td(n),s&&s.response)){n.response=s.response;try{s.response.data=_d.call(n,n.transformResponse,s.response)}finally{delete n.response}s.response.headers=At.from(s.response.headers)}return Promise.reject(s)})}const Pl={};["object","boolean","number","function","string","symbol"].forEach((n,o)=>{Pl[n]=function(s){return typeof s===n||"a"+(o<1?"n ":" ")+n}});const Dy={};Pl.transitional=function(o,r,s){function c(d,f){return"[Axios v"+_f+"] Transitional option '"+d+"'"+f+(s?". "+s:"")}return(d,f,h)=>{if(o===!1)throw new te(c(f," has been removed"+(r?" in "+r:"")),te.ERR_DEPRECATED);return r&&!Dy[f]&&(Dy[f]=!0,console.warn(c(f," has been deprecated since v"+r+" and will be removed in the near future"))),o?o(d,f,h):!0}};Pl.spelling=function(o){return(r,s)=>(console.warn(`${s} is likely a misspelling of ${o}`),!0)};function sT(n,o,r){if(typeof n!="object")throw new te("options must be an object",te.ERR_BAD_OPTION_VALUE);const s=Object.keys(n);let c=s.length;for(;c-- >0;){const d=s[c],f=Object.prototype.hasOwnProperty.call(o,d)?o[d]:void 0;if(f){const h=n[d],g=h===void 0||f(h,d,n);if(g!==!0)throw new te("option "+d+" must be "+g,te.ERR_BAD_OPTION_VALUE);continue}if(r!==!0)throw new te("Unknown option "+d,te.ERR_BAD_OPTION)}}const bl={assertOptions:sT,validators:Pl},sn=bl.validators;let so=class{constructor(o){this.defaults=o||{},this.interceptors={request:new Sy,response:new Sy}}async request(o,r){try{return await this._request(o,r)}catch(s){if(s instanceof Error){let c={};Error.captureStackTrace?Error.captureStackTrace(c):c=new Error;const d=(()=>{if(!c.stack)return"";const f=c.stack.indexOf(` `);return f===-1?"":c.stack.slice(f+1)})();try{if(!s.stack)s.stack=d;else if(d){const f=d.indexOf(` `),h=f===-1?-1:d.indexOf(` `,f+1),g=h===-1?"":d.slice(h+1);String(s.stack).endsWith(g)||(s.stack+=` `+d)}}catch{}}throw s}}_request(o,r){typeof o=="string"?(r=r||{},r.url=o):r=o||{},r=lo(this.defaults,r);const{transitional:s,paramsSerializer:c,headers:d}=r;s!==void 0&&bl.assertOptions(s,{silentJSONParsing:sn.transitional(sn.boolean),forcedJSONParsing:sn.transitional(sn.boolean),clarifyTimeoutError:sn.transitional(sn.boolean),legacyInterceptorReqResOrdering:sn.transitional(sn.boolean)},!1),c!=null&&(L.isFunction(c)?r.paramsSerializer={serialize:c}:bl.assertOptions(c,{encode:sn.function,serialize:sn.function},!0)),r.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?r.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:r.allowAbsoluteUrls=!0),bl.assertOptions(r,{baseUrl:sn.spelling("baseURL"),withXsrfToken:sn.spelling("withXSRFToken")},!0),r.method=(r.method||this.defaults.method||"get").toLowerCase();let f=d&&L.merge(d.common,d[r.method]);d&&L.forEach(["delete","get","head","post","put","patch","query","common"],A=>{delete d[A]}),r.headers=At.concat(f,d);const h=[];let g=!0;this.interceptors.request.forEach(function(_){if(typeof _.runWhen=="function"&&_.runWhen(r)===!1)return;g=g&&_.synchronous;const T=r.transitional||xf;T&&T.legacyInterceptorReqResOrdering?h.unshift(_.fulfilled,_.rejected):h.push(_.fulfilled,_.rejected)});const y=[];this.interceptors.response.forEach(function(_){y.push(_.fulfilled,_.rejected)});let w,b=0,S;if(!g){const A=[ky.bind(this),void 0];for(A.unshift(...h),A.push(...y),S=A.length,w=Promise.resolve(r);b{if(!s._listeners)return;let d=s._listeners.length;for(;d-- >0;)s._listeners[d](c);s._listeners=null}),this.promise.then=c=>{let d;const f=new Promise(h=>{s.subscribe(h),d=h}).then(c);return f.cancel=function(){s.unsubscribe(d)},f},o(function(d,f,h){s.reason||(s.reason=new zr(d,f,h),r(s.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(o){if(this.reason){o(this.reason);return}this._listeners?this._listeners.push(o):this._listeners=[o]}unsubscribe(o){if(!this._listeners)return;const r=this._listeners.indexOf(o);r!==-1&&this._listeners.splice(r,1)}toAbortSignal(){const o=new AbortController,r=s=>{o.abort(s)};return this.subscribe(r),o.signal.unsubscribe=()=>this.unsubscribe(r),o.signal}static source(){let o;return{token:new $b(function(c){o=c}),cancel:o}}};function cT(n){return function(r){return n.apply(null,r)}}function uT(n){return L.isObject(n)&&n.isAxiosError===!0}const qd={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(qd).forEach(([n,o])=>{qd[o]=n});function Qb(n){const o=new so(n),r=Ob(so.prototype.request,o);return L.extend(r,so.prototype,o,{allOwnKeys:!0}),L.extend(r,o,null,{allOwnKeys:!0}),r.create=function(c){return Qb(lo(n,c))},r}const $e=Qb(jr);$e.Axios=so;$e.CanceledError=zr;$e.CancelToken=lT;$e.isCancel=qb;$e.VERSION=_f;$e.toFormData=zl;$e.AxiosError=te;$e.Cancel=$e.CanceledError;$e.all=function(o){return Promise.all(o)};$e.spread=cT;$e.isAxiosError=uT;$e.mergeConfig=lo;$e.AxiosHeaders=At;$e.formToJSON=n=>Vb(L.isHTMLForm(n)?new FormData(n):n);$e.getAdapter=Xb.getAdapter;$e.HttpStatusCode=qd;$e.default=$e;const{Axios:Z3,AxiosError:J3,CanceledError:W3,isCancel:eP,CancelToken:tP,VERSION:nP,all:aP,Cancel:oP,isAxiosError:iP,spread:rP,toFormData:sP,AxiosHeaders:lP,HttpStatusCode:cP,formToJSON:uP,getAdapter:dP,mergeConfig:fP,create:hP}=$e,Zb=[{code:"en",name:"English",native:"English",rtl:!1,agent:!0},{code:"ar",name:"Arabic",native:"العربية",rtl:!0,agent:!0},{code:"fr",name:"French",native:"Français",rtl:!1,agent:!0},{code:"es",name:"Spanish",native:"Español",rtl:!1,agent:!0},{code:"pt",name:"Portuguese",native:"Português",rtl:!1,agent:!0},{code:"de",name:"German",native:"Deutsch",rtl:!1,agent:!0},{code:"it",name:"Italian",native:"Italiano",rtl:!1,agent:!1}],Gd=Zb.filter(n=>n.agent),Ul=Zb;function dT(n){var o;return((o=Gd.find(r=>r.code===n))==null?void 0:o.name)??n}function mP(n,o){const r=n??Gd.map(c=>c.code),s=[{value:"",labelKey:"language.auto",notAllowed:!1}];n===null&&s.push({value:"multi",labelKey:"language.multi",notAllowed:!1});for(const c of Gd)r.includes(c.code)&&s.push({value:c.code,language:c.code,notAllowed:!1});if(!s.some(c=>c.value===o)){const c=o;s.push(o==="multi"?{value:c,labelKey:"language.multiShort",notAllowed:!0}:{value:c,language:o,notAllowed:!0})}return s}const fT={apply:"Apply",cancel:"Cancel",close:"Close",create:"Create",delete:"Delete",dismiss:"Dismiss",edit:"Edit",hidePassword:"Hide password",moreInfo:"More info",reloadPage:"Reload page",save:"Save",saveChanges:"Save changes",send:"Send",showPassword:"Show password",signIn:"Sign in",tryAgain:"Try again"},hT={edit:"Edit agent",test:"Test agent"},mT={poweredBy:"Powered by {{name}}"},pT={call:"Call",chat:"Chat",email:"Email",instagram:"Instagram",messenger:"Messenger",phone:"Phone",sms:"SMS",staff:"Staff",telegram:"Telegram",voice:"Voice",voicemail:"Voicemail",webChat:"Web chat",whatsapp:"WhatsApp"},gT={conversations_one:"{{count, number}} conversation",conversations_other:"{{count, number}} conversations",failed_one:"{{count, number}} failed",failed_other:"{{count, number}} failed"},yT={areas:{application:"in the application"},body:"The rest of the app is still working. Try again, or reload the page — and tell us what you were doing so we can fix it.",titleIn:"Something went wrong {{area}}."},bT={cannotReachServer:"Cannot reach backend.",generic:"Something went wrong.",loadFailed:"Failed to load: {{error}}",toolsLoadFailed:"Failed to load tools: {{error}}"},vT={actions:"Actions",agent:"Agent",channel:"Channel",confirmNewPassword:"Confirm new password",description:"Description",email:"Email",guest:"Guest",name:"Name",newPassword:"New password",password:"Password",phoneE164:"Phone (E.164)",pickAgent:"— pick an agent —",role:"Role",sentiment:"Sentiment",slug:"Slug",status:"Status"},wT={allChannels:"All channels",byChannel:"Filter by channel"},xT={label:"Language"},ST={latency:"latency",ttft:"ttft",tokens:"tokens",cost:"cost",tokensInOut:"{{input}} in · {{output}} out"},_T={nextPage:"Next page",page:"Page {{page, number}}",pageOf:"Page {{page, number}} of {{total, number}}",previousPage:"Previous page"},TT={label:"Dashboard range",trigger:"{{label}}: {{range}}",presets:{last24h:"Last 24 hours",last7d:"Last 7 days",last30d:"Last 30 days",thisMonth:"This month",lastMonth:"Last month",thisQuarter:"This quarter",lastQuarter:"Last quarter",thisYear:"This year",lastYear:"Last year"},weekOf:"Week of {{date}}",tooLong_one:"At most {{count, number}} day.",tooLong_other:"At most {{count, number}} days."},ET={admin:"Admin",assign:{admin:"Admin (company)",superAdmin:"Super Admin (platform)",user:"User (company)"},superAdmin:"Super Admin",unknown:"Unknown",user:"User"},AT={negative:"Negative",neutral:"Neutral",positive:"Positive"},CT={active:"Active",deleting:"Deleting…",disabled:"Disabled",enabled:"Enabled",loading:"Loading…",saving:"Saving…",soon:"Soon",unavailable:"Unavailable"},RT={justNow:"just now",ago:"{{time}} ago"},OT={label:"Two-factor auth",enabled:"Enabled",notEnrolled:"Not enrolled"},kT={ms:"{{value, number}}ms",seconds:"{{value, number}}s"},DT="VIP",MT={actions:fT,agentActions:hT,brand:mT,channels:pT,counts:gT,errorBoundary:yT,errors:bT,fields:vT,filters:wT,language:xT,metrics:ST,pagination:_T,range:TT,roles:ET,sentiment:AT,states:CT,time:RT,twoFactor:OT,units:kT,vip:DT},NT={applications:{label:"Applications"},agents:{label:"AI Agents"},admin:{label:"Admin"},orgConfig:{label:"Org Configuration"},superAdmin:{label:"Platform"}},LT={home:{label:"Home"},profile:{label:"Profile"},inbox:{label:"Inbox",blurb:"Live channel conversations — watch the AI reply, take over any thread, hand it back."},voicemails:{label:"Voicemails",blurb:"Caller messages — AI-captured + classic recordings. Triage and call back."},sentiment:{label:"Sentiment",blurb:"How guests feel across calls, chats & voicemails — with the evidence behind every score."},agents:{label:"Agents",blurb:"Create, configure, and version your AI agents."},knowledge:{label:"Knowledge Bases",blurb:"Documents and scraped pages your agents can cite — PDF, DOCX, TXT, MD."},guestLinks:{label:"Guest Links",blurb:"Menus, price lists and maps your agents can email to a guest who asks."},demo:{label:"Playground",blurb:"Try your agents live — browser mic, your phone (Twilio), or dial-in."},history:{label:"History",blurb:"Browse your past conversations and transcripts."},users:{label:"Users",blurb:"Manage user accounts and role assignments in this organization."},roles:{label:"Roles",blurb:"Reference for the role hierarchy + who's assigned to each tier."},inboundNumbers:{label:"Inbound Numbers",blurb:"Map Twilio numbers to agents — answer mode or voicemail mode."},channels:{label:"Channels",blurb:"Connect Telegram, WhatsApp, SMS, Email, Messenger & Instagram to an agent."},sipExtensions:{label:"AI Extension Routing",blurb:"Map PBX extensions to agents — the SIP twin of inbound numbers."},extensionDirectory:{label:"Extension Directory",blurb:"Every extension on the property — rooms, staff, IVR. Drives call transfers and JazzMS provisioning."},notificationSettings:{label:"Notifications",blurb:"Email sender identity (AWS SES) for guest confirmations + delivery log."},sipSettings:{label:"SIP Settings",blurb:"Connect to the FreeSWITCH / JazzMS PBX, then set up this company's property and gateway on it."},orgs:{label:"Organizations",blurb:"Brand identity, theme, package and TigerTMS iLink setup per customer org."},apiKeys:{label:"API Keys",blurb:"Encrypted provider credentials — the shared platform keys every org inherits, plus per-organization overrides set through the org switcher."},tools:{label:"Tools",blurb:"The platform tool catalog — built-ins, external HTTP tools and MCP connectors. Orgs get the subset their allow-list grants."},packages:{label:"Packages",blurb:"Sellable plans + add-ons — price, bundled features, usage allowances. Assigned to orgs."},platformHealth:{label:"Platform Health",blurb:"Spend, cost per call, provider failures and turn latency across every org — the super-admin view of the voice system."},platformGuardrails:{label:"Platform guardrails",blurb:"The rules every agent follows on every surface. Outranks each property's and each agent's own prompt."},activity:{label:"Activity Log",blurb:"Who logged in and who created, edited, or deleted things — across every org. Accountability + audit trail."}},jT={brandHome:"{{brand}} home",collapse:"Collapse",collapseSidebar:"Collapse sidebar",expandSidebar:"Expand sidebar"},zT={label:"Main",comingSoon:"{{page}} — coming soon"},PT={title:"Navigation",open:"Open navigation",close:"Close navigation"},UT={label:"Breadcrumb",account:"Account"},HT={trigger:"Account menu",logOut:"Log out",version:"{{brand}} v{{version}}"},BT={title:"Switch organization",select:"Select organization",noneFocused:"No organization is focused, so anything you set up has no company to belong to. Pick one to start.",ungrouped:"Ungrouped",default:"default",inactive:"inactive",active:"Active",switchFailed:"Switch failed — try again"},IT={reconnecting:"Reconnecting…",droppedHint:"A live connection dropped. Retrying automatically — no need to reload."},VT={modules:NT,pages:LT,sidebar:jT,sidebarNav:zT,mobileNav:PT,breadcrumb:UT,userMenu:HT,orgSwitcher:BT,connection:IT},qT={backToSignIn:"Back to sign in",intro:"Enter your account email and we'll send you a link to choose a new password.",sent:{body:"If an account exists for , a reset link is on its way. It expires in about an hour — check spam if it doesn't show up.",title:"Check your inbox"},submit:"Send reset link",title:"Reset your password",unavailable:{body:"This site has no email sender configured, so we can't send you a reset link. Ask your administrator to set a new password for you from the Users page, then sign in with it.",title:"Self-service reset isn't set up here"}},GT={backToBrand:"Back to {{brand}}",resetPassword:"Reset password",title:"Sign in"},KT={done:{action:"Go to sign in",body:"You've been signed out everywhere. Sign in with your new password (your authenticator code still applies).",title:"Password updated"},incomplete:{action:"Request a new link",body:"Open the reset link from your email again, or request a new one.",title:"This link isn't complete"},mismatch:"Passwords do not match.",requestNew:"Link expired? Request a new one",submit:"Set new password",title:"Choose a new password"},FT={restoring:"Restoring your session…"},YT={backHome:"Back to {{brand}} home"},XT={codeDescription:"From your authenticator app",codeLabel:"6-digit code",sessionExpired:"This sign-in session has expired. Start over and sign in again.",setup:{intro:"Scan this QR code with an authenticator app (Google Authenticator, Authy, 1Password…), then enter the 6-digit code it shows.",manualKey:"Can't scan? Enter the key manually",submit:"Activate and sign in",title:"Set up two-factor authentication"},startOver:"Start over",verify:{intro:"Enter the 6-digit code from your authenticator app.",submit:"Verify and sign in",title:"Two-factor authentication"}},$T={forgot:qT,login:GT,reset:KT,session:FT,shell:YT,twoFactor:XT},QT={backend:"Backend",built:"built {{date}}",checking:"Checking…",drift:"This page (frontend {{frontend}}) and the backend ({{backend}}) are running different builds — hard-refresh, or the deploy may be mid-rollout.",frontend:"Frontend",title:"About",version:"v{{version}}"},ZT={joined:"Joined",title:"Account",twoFactorSetupHint:"You'll be walked through authenticator-app setup at your next sign-in if your organization requires it."},JT={current:"Current password",mismatch:"New password and confirmation don't match.",submit:"Change password",submitting:"Changing…",success:"Password changed. Logging you out…",title:"Change password"},WT="Your account and security settings.",eE={description:"The language {{brand}} is shown in. It follows you on every device you sign in to."},tE={about:QT,account:ZT,changePassword:JT,description:WT,language:eE},nE={greeting:"Welcome back, {{name}}",greetingNoName:"Welcome",runDemoCall:"Run a demo call",kpisUnavailable:"Your KPI summary couldn't be loaded for this window."},aE={calls:"Calls",callMinutes:"Call minutes",handledByAi:"Handled by AI",transfers:"Transfers",sentiment:"Sentiment",bookings:"Bookings"},oE={calls:{hint:"avg {{duration}} per call",tip:"Conversations your AI took in this window — voice calls and chat sessions combined — and the average recorded call length (minutes:seconds)."},callMinutes:{hint_one:"{{count, number}} AI minute",hint_other:"{{count, number}} AI minutes",tip:"Total talk time of recorded calls in this window. AI minutes is the speech the vendors transcribed, the figure minute packages are metered on."},handled:{tip:"Calls the AI resolved end to end, with no transfer, voicemail or hang-up."},transferred:{label:"Transferred to staff",tip:"Calls handed to a human — front desk, a staff extension or an external number."},voicemails:{label:"Voicemails",tip:"Calls that ended in a voicemail for your team to pick up."},missed:{label:"Missed",hint:"abandoned or failed",tip:"Calls where the caller hung up before a resolution, plus calls that failed on our side."},sentiment:{label:"Guest sentiment",tip:"Average sentiment score across scored conversations in this window (-1 negative to +1 positive)."},shareOf_one:"{{percent}} of {{count, number}} call",shareOf_other:"{{percent}} of {{count, number}} calls",noOutcomes:"no call outcomes yet"},iE={label:"Dashboard scope",org:"This hotel",group:"Whole group",groupTitle:"Whole group: {{group}}",groupSubtitle_one:"{{group}} · {{count, number}} hotel",groupSubtitle_other:"{{group}} · {{count, number}} hotels"},rE={title:"Calls and minutes by day",unavailable:"Call volume couldn't be loaded for this window.",empty:{title:"No calls yet",description:"Call volume will appear here once calls come in for this window."}},sE={title:"Outcomes",unavailable:"Outcomes couldn't be loaded for this window.",empty:{title:"No outcomes yet",description:"The outcome breakdown will appear here once calls complete."},since:"Outcomes recorded since",kinds:{handled:"Handled",transferred:"Transferred",voicemail:"Voicemail",abandoned:"Abandoned",error:"Error"},tooltip:"{{name}}: {{value}} ({{percent}})"},lE={title:"Calls by hour of day",unavailable:"Call times couldn't be loaded for this window.",empty:{title:"No call times yet",description:"Once calls are recorded, this shows when guests call, on your hotel's clock."}},cE={title:"Sentiment trend",unavailable:"Sentiment trend couldn't be loaded for this window.",empty:{title:"No sentiment data yet",description:"The sentiment trend will appear here once calls are scored."},avg:"Avg sentiment",negativeShare:"Negative share"},uE={title:"Concurrent calls",unavailable:"Concurrency couldn't be loaded for this window.",empty:{title:"No concurrency data yet",description:"Peak simultaneous calls per day will appear here once calls are recorded."},axis:"Calls at once",series:"Peak concurrent",cap:"Cap {{cap, number}}",live_one:"{{count, number}} in progress now",live_other:"{{count, number}} in progress now",noCap:"no cap",ofCap:"of {{cap, number}}",peak:"peak {{peak, number}}",peakAt:"peak {{peak, number}} ({{when}})"},dE={title:"AI booking actions",unavailable:"Reservation activity couldn't be loaded for this window.",empty:{title:"No bookings yet",description:"Bookings and cancellations the AI makes through the PMS will appear here."},booked:{label:"Booked",hint:"{{voice, number}} by voice · {{chat, number}} by chat",tip:"Reservations the AI created in the PMS in this window."},changed:{label:"Changed",tip:"Existing reservations the AI modified (dates, guests, room)."},cancelled:{label:"Cancelled",tip:"Reservations the AI cancelled on a guest's request."},availability:{label:"Availability checks",hint:"{{percent}} became a booking",tip:"How often the AI looked up availability. The hint is the share of checks that ended in a booking."},failed:{label:"Failed",tip:"Booking actions the PMS rejected or that errored — the guest was not served."},description:"Bookings, changes and cancellations the AI made in calls and chats, counted as it made them.",rows:{rooms:"Rooms",tables:"Restaurant tables"},rooms:{booked:{label:"Rooms booked",tip:"Room bookings the AI made in the hotel system in this period."},changed:{label:"Room changes",tip:"Existing room bookings the AI changed: dates, guests or room."},cancelled:{label:"Room cancellations",tip:"Room bookings the AI cancelled because a guest asked."},availability:{label:"Checks for free rooms",tip:"How often the AI looked for free rooms, and how many of those checks ended in a booking."},failed:{label:"Room bookings that failed",tip:"Room booking attempts the hotel system refused or that went wrong. The guest did not get what they asked for."},empty:{title:"No room bookings yet",description:"Room bookings the AI makes or cancels in calls and chats will show here."}},tables:{booked:{label:"Tables booked",tip:"Restaurant table bookings the AI made in this period."},changed:{label:"Table changes",tip:"Existing table bookings the AI changed: time, date or party size."},cancelled:{label:"Table cancellations",tip:"Table bookings the AI cancelled because a guest asked."},checks:{label:"Checks for free tables",tip:"How often the AI looked for a free table."},failed:{label:"Table bookings that failed",tip:"Table booking attempts the restaurant system refused or that went wrong. The guest did not get what they asked for."},empty:{title:"No table bookings yet",description:"Table bookings the AI makes or cancels in calls and chats will show here."}}},fE={title:"Hotels in this group",unavailable:"The per-hotel breakdown couldn't be loaded for this window.",empty:{title:"No hotels",description:"This group has no active hotels."},columns:{hotel:"Hotel",talkMinutes:"Talk minutes",peakAtOnce:"Peak at once"},current:"Current",open:"Open {{name}}'s dashboard"},hE={title:"Tools",unavailable:"Tool activity couldn't be loaded for this window.",empty:{title:"No tool calls yet",description:"Tools the AI calls on guests' behalf will be listed here once it uses one."},callCount_one:"{{count, number}} call",callCount_other:"{{count, number}} calls",columns:{tool:"Tool",calls:"Calls",failures:"Failures",success:"Success",p50:"p50",p95:"p95"}},mE={title:"Agents",unavailable:"Agent activity couldn't be loaded for this window.",empty:{title:"No agent activity",description:"No agent took a call in this window."},columns:{agent:"Agent"}},pE={title:"Transfer reasons",unavailable:"Transfer reasons couldn't be loaded for this window.",empty:{title:"No transfers",description:"No call was transferred to a human in this window."},columns:{reason:"Reason",target:"Target",count:"Count"},unattributed:"Unattributed"},gE={title:"Voicemail SLA",unavailable:"Voicemail SLA couldn't be loaded for this window.",new:"New",listened:"Listened",resolved:"Resolved",avgTimeToHandle:"Avg time to handle",minutes:"{{value}}m"},yE={title:"What the AI did for the hotel",subtitle:"Counted by the hotel's own system, so it can differ from AI booking actions.",differsTip:"AI booking actions counts what the AI did in its own calls and chats, the moment it did it. This card counts what the hotel's system credits to the AI's iLink login, checked every hour. So it can include bookings made with that login outside a conversation, and miss very recent ones.",updated:"Updated {{when}} · refreshes hourly",unavailable:{title:"Unavailable",description:"These numbers couldn't be loaded for this period."},hotelsWithoutFigures:"No up-to-date numbers yet for: {{hotels}}.",notPermitted:"iLink did not accept this hotel's login or site code for these numbers, or does not offer them for this hotel yet. Check the site code on the iLink card, and ask TigerTMS to allow activity figures for the login.",noFigures:{title:"No numbers for this period yet",description:"Nothing is stored for this period. If it is being loaded, a note below says so."},unreadable:"Couldn't be read just now",about:{summary_one:"About these numbers ({{count, number}} note)",summary_other:"About these numbers ({{count, number}} notes)",period:"From the hotel's last check, which covered {{from}} to {{to}}."},notices:{missingDays_one:"Figures are missing for {{missing, number}} of {{count, number}} day; the totals are for the days we have.",missingDays_other:"Figures are missing for {{missing, number}} of {{count, number}} days; the totals are for the days we have.",stale:"Recent figures were last updated {{when}}.",refreshing:"Older figures are being loaded; check back in a few minutes.",outOfHoursPending:"Out-of-hours figures are being refreshed for the new desk hours.",guestActivityNotCounted:"Activity from the guest app is not counted in these figures yet."},tax:{includesTax:"incl. tax",beforeTax:"before tax",unknown:"tax not stated"},change:{same:"same as the period before",up:"+{{percent}} on the period before",down:"−{{percent}} on the period before"},money:{label:"Money from stays",noneValue:"None yet",noneHint:"No stays with a price in this period",tip:"The room price as booked for guests who arrived, not the final bill.",future:"{{amount}} more booked for future stays",lost:"{{amount}} cancelled",estimate:"includes {{amount}} estimated from quotes"},return:{label:"Return on plan cost",tip:"Money from stays against what the hotel pays for the same days. Shown to admins only.",noPrice:"No plan price for {{hotels}}",ratioHint_one:"{{delivered}} from stays against {{cost}} paid for this {{count, number}} day",ratioHint_other:"{{delivered}} from stays against {{cost}} paid for these {{count, number}} days",sideBySideHint:"{{delivered}} from stays against {{cost}} paid; different currencies, so no ratio",nothingYet:"nothing yet"},rooms:{label:"Rooms booked",tip:"Every room booking the AI made, including any later cancelled.",nights_one:"{{count, number}} night in total",nights_other:"{{count, number}} nights in total",stayed_one:"{{count, number}} stayed",stayed_other:"{{count, number}} stayed",upcoming_one:"{{count, number}} still to arrive",upcoming_other:"{{count, number}} still to arrive",noneLost:"none cancelled or didn't turn up",lost_one:"{{count, number}} cancelled or didn't turn up",lost_other:"{{count, number}} cancelled or didn't turn up",notSeenArriving_one:"{{count, number}} past the arrival date with no check-in",notSeenArriving_other:"{{count, number}} past the arrival date with no check-in",summary:"Room bookings: {{summary}}"},tables:{label:"Restaurant tables booked",tip:"Table bookings the AI made, as booked. Changes made at the restaurant afterwards are not tracked yet.",people_one:"for {{count, number}} person",people_other:"for {{count, number}} people",cancelled_one:"{{count, number}} cancelled",cancelled_other:"{{count, number}} cancelled"},issues:{label:"Guest issues logged",tip:"Guest requests, repairs and lost items the AI passed to the hotel's systems.",requests_one:"{{count, number}} request",requests_other:"{{count, number}} requests",complaints_one:"incl. {{count, number}} complaint",complaints_other:"incl. {{count, number}} complaints",repairs_one:"{{count, number}} repair",repairs_other:"{{count, number}} repairs",lostItems_one:"{{count, number}} lost item",lostItems_other:"{{count, number}} lost items"},deskClosed:{label:"While the desk was closed",hint:"of bookings and requests came in then",tip:"Bookings and requests made outside the hotel's front-desk hours."}},bE={hero:nE,metrics:aE,kpis:oE,scope:iE,callsByDay:rE,outcomes:sE,callsByHour:lE,sentiment:cE,concurrency:uE,reservations:dE,group:fE,tools:hE,agents:mE,transfers:pE,voicemail:gE,ilinkActivity:yE},vE={features:"Features",integrations:"Integrations"},wE={eyebrow:"AI agents for hospitality",headline:"The AI front desk that never sleeps.",signInToConsole:"Sign in to the console",seeFeatures:"See features"},xE={arrivalsToday:"Arrivals today",inHouse:"In-house",guestMood:"Guest mood",liveConversations:"Live conversations",active_one:"{{count, number}} active",active_other:"{{count, number}} active",lateCheckIn:"Asking about late check-in",booking:"Booking a deluxe king",noisyAc:"Reporting a noisy AC"},SE={coverage:{label:"24/7 coverage",detail:"Every call answered, day or night"},multilingual:{label:"Multilingual",detail:"English, Arabic, and 30+ more"},fastSetup:{label:"Live in days",detail:"No phone trees, no scripts"},pms:{label:"Works with your PMS",detail:"No rip-and-replace"}},_E={eyebrow:"One agent, every channel",body:"The same AI — same memory of the guest — answers wherever they reach you. Connect a channel in a click; no extra build."},TE={eyebrow:"What you get",title:"A front desk that scales without the headcount.",sub:"Voice, social messaging, PMS integration, and sentiment — built together so your team focuses on the guest in front of them instead of the phone ringing on the desk.",calls:{title:"Picks up every call — instantly",body:"No hold music, no missed bookings, no after-hours voicemail to chase down. Conversational AI handles peak rushes and the 2 AM call the same way: warm, accurate, and on-brand."},omnichannel:{title:"One agent across WhatsApp, SMS & social",body:"Voice, web chat, WhatsApp, SMS, Telegram, Messenger, Instagram, and email — answered by the same AI, with the same memory of the guest. One personality to refine, every inbox covered."},inbox:{title:"Every conversation where your team can see it",body:"The live inbox, the voicemail queue, and the full conversation history in one place. Staff take over any AI thread, then hand it back."},ilink:{body:"Connect TigerTMS iLink to give your AI access to reservations, room status, and guest services supported by your property."},sentiment:{title:"Knows how every guest feels",body:"Sentiment analysis scores every call, chat, and voicemail — with the exact words behind each score, so you can verify the AI and catch an unhappy VIP before they hit TripAdvisor. Feeds the GM dashboard alongside calls and cost."}},EE={eyebrow:"Property integration",title:"Connected through TigerTMS iLink",sub:"Reservations and guest services through your property's TigerTMS iLink connection. Available operations depend on your property's configuration.",live:"Live"},AE={title:"Ready to hear the AI take a call?",body:"Sign in with the demo credentials your account manager shared and place a test call in under five minutes.",talkToSales:"Talk to sales"},CE={copyright:"© {{year}} {{owner}}. All rights reserved."},RE={nav:vE,hero:wE,preview:xE,trust:SE,channels:_E,features:TE,integrations:EE,cta:AE,footer:CE},OE="Live channel conversations. The AI handles them on autopilot — take over any thread to reply yourself, then hand it back.",kE="Select a conversation to view it.",DE={ai:"AI",human:"Human",you:"You"},ME={open:"Needs human",pending:"AI handling",resolved:"Resolved"},NE={now:"now",today:"Today",yesterday:"Yesterday"},LE={searchPlaceholder:"Search conversations…",searchLabel:"Search conversations",filters:{all:"All",open:"Needs human",pending:"AI handling",resolved:"Resolved"},mine:"Mine",noMatches:"No conversations match your filters.",empty:"No conversations yet.",unread:"Unread",sentiment:"Sentiment: {{label}}",noMessages:"No messages yet",previewYou:"You: {{text}}",previewAi:"AI: {{text}}"},jE={loading:"Loading conversation…",back:"Back to list",resumeAi:"Resume AI",takeOver:"Take over",resolve:"Resolve",details:"Conversation details"},zE={assign:"Assign",unassigned:"Unassigned",assignTo:"Assign to",noStaff:"No staff found.",unassign:"Unassign"},PE={empty:"No messages yet.",latest:"Latest",retryTitle:"Send failed — retry",retry:"failed · retry",sending:"Sending",sent:"Sent"},UE={takesOver:"Replying takes over from the AI on this thread.",placeholder:"Type a reply… (Enter to send, Shift+Enter for a new line)",label:"Reply"},HE={title:"Details",close:"Close details",conversation:"Conversation",owner:"Owner",assignee:"Assignee",started:"Started",guestProfile:"Guest profile",room:"Room",phone:"Phone",pastConversations:"Past conversations",lastSeen:"Last seen",preferences:"Preferences",noGuest:"No guest matched. Phone-based channels (WhatsApp, SMS) link automatically when the number is on file."},BE={description:OE,selectConversation:kE,who:DE,status:ME,time:NE,list:LE,thread:jE,assign:zE,messages:PE,composer:UE,rail:HE},IE="Past chats and calls. Drill in to see every message and tool call.",VE="Past chats and calls. Drill in to see every message, tool call, and cost.",qE={user:"User",session:"Session",messages:"Messages",started:"Started",lastActivity:"Last activity"},GE={searchPlaceholder:"Search session or user…",searchLabel:"Search conversations",allAgents:"All agents",allChannels:"All",fromDate:"From date",toDate:"To date",rangeSeparator:"to",clear:"Clear",clearTitle:"Clear all filters"},KE={empty:"No conversations match these filters."},FE={back:"Back to history",title:"Conversation",messages:"Messages ({{count, number}})",empty:"No messages in this conversation."},YE={tokens:"Tokens",avgTtft:"Avg TTFT",ttftTip:"Time to first token — SLO target is under 800ms.",assistantTurns:"Assistant turns",toolCalls:"Tool calls",sumLatency:"Sum latency",kbChunks:"KB chunks",overSearches_one:"over {{count, number}} search",overSearches_other:"over {{count, number}} searches",totalCost:"Total cost",stt:"STT",tts:"TTS",llm:"LLM",voiceModel:"Voice model",notTracked:"not tracked",audio:"{{seconds}}s audio",chars_one:"{{count, number}} char",chars_other:"{{count, number}} chars",tokensIn_one:"{{count, number}} tok in",tokensIn_other:"{{count, number}} tok in",costPerMin:"Cost / min",perMin:"{{cost}}/min",callLength:"{{seconds}}s call"},XE={roles:{user:"user",assistant:"assistant",tool:"tool",system:"system"},showRaw:"Show prompt (L1–L4 + final) & metadata",hideRaw:"Hide prompt & metadata",metadata:"metadata"},$E={unnamed:"tool"},QE={heading:"What the model received",l1:{label:"L1 · Platform",owner:"guardrails, brand, channel style, tools, NONE SHALL PASS"},l2:{label:"L2 · Organisation",owner:"Organizations page"},l3:{label:"L3 · Agent",owner:"Agent builder"},l4:{label:"L4 · Runtime",owner:"caller, guest history, knowledge base, clock"},final:{label:"Final prompt sent to the model",owner:"L1–L4 combined, in order — includes the knowledge-base chunks"},notRecorded:"not recorded",empty:"empty",size:"{{chars, number}} chars ≈ {{tokens, number}} tokens",nothing:"(this section contributed nothing to this turn)",copy:"Copy {{label}}"},ZE={title:"Knowledge",failed:"retrieval failed",noChunks:"no chunks retrieved",chunks_one:"{{count, number}} chunk",chunks_other:"{{count, number}} chunks",hybrid:"hybrid",top:"top {{score}}",kb:"KB {{name}}",floor:"floor {{score}}",candidates:"{{dense, number}} vector + {{lexical, number}} text candidates",noKb:"No knowledge base was attached to this agent.",emptyQuery:"The turn carried no text to search with.",belowFloor:"Nothing in the knowledge base scored above the {{floor}} floor, so the agent answered without it.",noMatch:"Nothing matched, so the agent answered without the knowledge base.",bothLegs:"both legs · #{{dense, number}} vector, #{{lexical, number}} text",vectorLeg:"vector #{{rank, number}}",textLeg:"text #{{rank, number}}",chunk:"Chunk {{n, number}}",scoreKinds:{cosine:"similarity",lexical:"text match",none:"unscored"},similarityAria:"similarity {{score}}",truncated:"(preview truncated)"},JE={show:"Show trace",hide:"Hide trace",loading:"Loading trace…",notRecorded:"No trace was recorded for this call — it ran before traces existed, or was never dispatched.",empty:"This call logged nothing and made no vendor requests.",truncated:"More happened than was kept — the trace was cut off here.",noResponse:"no response",noCredential:"no credential",requestHeaders:"Request headers",requestBody:"Request body",responseHeaders:"Response headers",responseBody:"Response body",exception:"Exception"},WE={description:IE,descriptionWithCost:VE,fields:qE,filters:GE,table:KE,detail:FE,summary:YE,message:XE,tools:$E,prompt:QE,rag:ZE,trace:JE},eA="Messages from callers — either taken conversationally by an AI agent (after a failed transfer or by request) or recorded classic-style. Work the queue: listen, call back, resolve.",tA="{{count, number}} voicemail",nA="{{count, number}} voicemails",aA={title:"No voicemails match your filters",description:"When a caller leaves a message — either after a failed transfer, or because they asked to — it will land here."},oA={needsFollowUp:{label:"Needs follow-up",tip:"Voicemails still open — anything not yet marked resolved, so the team knows it needs attention."},new:{label:"New",tip:"Voicemails no one has listened to or acted on yet."},urgent:{label:"Urgent (4-5)",tip:"Voicemails the AI rated urgency 4 or 5, judged from the caller's words and tone."},total:{label:"Total",tip:"Every voicemail in your queue, regardless of status — AI-captured messages and recorded ones."}},iA={searchPlaceholder:"Search caller or transcript…",searchLabel:"Search caller or transcript",source:{label:"Source",all:"All",aiCapture:"AI captured",recording:"Recording"},status:{label:"Filter by status",all:"All statuses",new:"New",listened:"Listened",calledBack:"Called back",resolved:"Resolved"},urgency:{label:"Minimum urgency",any:"Any urgency",medium:"Urgency 3+ (medium)",high:"Urgency 4+ (high)",emergency:"Urgency 5 (emergency)"}},rA={aiCapture:"AI conversational capture",twilioRecord:"Recording"},sA={new:"New (needs attention)",listened:"Listened (awaiting follow-up)",calledBack:"Called back",resolved:"Resolved"},lA={unknownCaller:"Unknown caller",urgency:"Urgency {{level, number}}",urgencyOf:"Urgency {{level, number}}/5",transcriptionPending:"Transcription pending — Twilio runs it async; refresh in a few seconds.",noTranscript:"No transcript captured.",audio:"Original caller audio",audioAiCapture:"Original caller audio (AI conversational capture)",markListened:"Mark listened",calledBack:"Called back",resolve:"Resolve",reopen:"Reopen",reopenTitle:"Move back to the active queue"},cA={description:eA,count_one:tA,count_other:nA,empty:aA,kpis:oA,filters:iA,source:rA,status:sA,card:lA},uA="Sentiment Analysis",dA="How guests feel across calls, chats & voicemails — with the evidence behind every score. Last 30 days.",fA="Escalations",hA="Unverified",mA={positive:{tip:"The share (and count) of AI-scored conversations rated as positive."},neutral:{tip:"The share (and count) of AI-scored conversations rated as neutral."},negative:{tip:"The share (and count) of AI-scored conversations rated as negative."},vipsAtRisk:{label:"VIPs at risk",hint:"unhappy VIPs",tip:"Conversations with VIP guests that were scored negative — your highest-priority guests who may need attention."},escalations:{hint:"likely to churn",tip:"Conversations the AI flagged as likely to churn or to demand a manager."},unverified:{hint:"need review",tip:"Scored conversations that a human reviewer has not yet confirmed."}},pA={searchPlaceholder:"Search room / phone…",searchLabel:"Search room or phone",calls:"Calls",bySentiment:"Filter by sentiment",allSentiment:"All sentiment",vipsOnly:"VIPs only"},gA={empty:{title:"No conversations match these filters",description:"Widen the date range or clear a filter to see scored conversations."},customer:"Customer",reason:"AI said why",when:"When",escalationLikely:"Escalation likely"},yA={conversation:"Conversation",rescore:"Re-score with AI",openConversation:"Open full conversation",transcript:"Transcript — evidence highlighted",wasAiRight:"Was the AI right?",lastReviewedBy:"Last reviewed by ",needsHuman:"Needs a human",reason:"“{{reason}}”",trajectory:{improved:"Improved",deteriorated:"Deteriorated"}},bA={empty:"No transcript."},vA={verdict:"Verdict",aiCorrect:"AI correct",aiWrong:"AI wrong",ambiguous:"Ambiguous",status:{verified:"Verified",flagged:"Flagged"},correction:{label:"What should it have been?",description:"Recorded as ground truth and used to measure the scorer.",groupLabel:"Correct sentiment"},note:{placeholder:"Optional note — what did the AI miss or get right?",label:"Review note"},save:"Save verdict"},wA={joy:"Joy",delight:"Delight",gratitude:"Gratitude",satisfaction:"Satisfaction",neutral:"Neutral",confusion:"Confusion",disappointment:"Disappointment",frustration:"Frustration",anger:"Anger",distress:"Distress"},xA={title:uA,description:dA,escalations:fA,unverified:hA,kpis:mA,filters:pA,table:gA,drawer:yA,transcript:bA,verify:vA,emotions:wA},SA="session {{id}}",_A="Error:",TA="from {{agent}}",EA={backToChat:"Back to chat",voiceTip:"Tip: hold the button or the spacebar while speaking.",aborted:"[aborted]",specialist:"the specialist"},AA={handedOffTitle:"Chat started with {{from}}, handed off to {{to}}",voiceBadge:"voice",call:"Call",callTitle:"Open a live voice call with this agent",inputVoice:"Voice",inputText:"Text",inputTitle:"Toggle between text input and push-to-talk voice",newChat:"New chat"},CA={emptyTitle:"Test {{agent}}",emptyVoice:"Hold the mic button (or spacebar) while speaking. Release to send. The agent will reply out loud.",emptyText:"Send a message to start. Tool calls (if any) appear inline. Each assistant response shows latency and tokens.",emptyTextWithCost:"Send a message to start. Tool calls (if any) appear inline. Each assistant response shows latency, tokens, and cost.",speaking:"speaking…",newSession:"New session"},RA={thinking:"Thinking…",total:"total",ttftWarn:"SLO target <800ms — see CODING_STANDARDS §4"},OA={placeholder:"Type a message… (Enter to send · Shift+Enter for newline)",stop:"Stop"},kA={noArgs:"no args",input:"Input",error:"Error",result:"Result"},DA={label:"handoff",to:"Handed off to {{agent}}"},MA={call:"Call ended.",byAgent:"Call ended by agent.",transferred:"Transferred to a human."},NA={hold:"Hold to talk",recording:"Recording — release",transcribing:"Transcribing…",title:"Hold mouse button or Spacebar to talk",micDenied:"Mic access denied or unavailable: {{detail}}",micFailed:"Mic access failed",noSpeech:"No speech detected. Hold the button while speaking.",transcriptionFailedDetail:"Transcription failed: {{detail}}",transcriptionFailed:"Transcription failed"},LA={title:"Call · {{agent}}",handedOffTitle:"Call started with {{from}}, handed off to {{to}}",state:{idle:"Not connected",live:"Live",ended:"Ended"},guestTitle:"Caller resolved from PBX/dialer — agent has been briefed on this guest",guestRoom:"room {{room}}",start:"Start call",restart:"Restart call",end:"End call",connecting:"Connecting…",recording:"Recording",speakHint:"Just speak — turns end on natural pause",micNoMic:"Mic peak {{level}} — no mic",micQuiet:"Mic peak {{level}} — quiet",micSpeech:"Mic peak {{level}} — speech",connectingTo:"Connecting to {{agent}}…",openingLine:"Opening the voice line — the agent will speak first.",emptyTitle:"Call {{agent}}",emptyBody:"Click {{action}} to open a live voice line. Audio streams continuously; the agent replies out loud when you pause. Tools (like booking lookups) execute server-side automatically.",micHint:"Mic isn't picking up sound — check browser permission or system input device.",thinking:"agent thinking…",listening:"Listening… speak naturally and pause when done.",connectTimeout:"Call didn't connect within 10 seconds. Check the network / provider credentials and try again.",turnMeta:"turn {{id}} · {{status}}",turnStatus:{thinking:"thinking",done:"done",skipped:"skipped",error:"error",cancelled:"cancelled"},tts:"tts {{latency}}",skipped:"skipped — {{reason}}",skippedBusy:"skipped — previous turn still in progress",interrupted:"interrupted — the caller spoke over this reply"},jA={http:"HTTP {{status}}",noBody:"Response had no body",sttFailed:"STT failed: {{status}}",ttsFailed:"TTS failed: {{status}}",notAuthenticated:"Not authenticated",sessionExpired:"Your session has expired — please sign in again",websocket:"WebSocket error",websocketConnect:"WebSocket connect failed"},zA={searchPlaceholder_one:"Search {{count, number}} agent…",searchPlaceholder_other:"Search {{count, number}} agents…",searchLabel:"Search agents",empty:"No active agents. Create one to start.",noMatch:"No agent matches “{{query}}”.",voice:"Voice",chatOnly:"Chat only"},PA={title:"Caller",anonymous:"Anonymous",anonymousTitle:"Place the call with no guest identity — agent runs anonymously",lookupLabel:"Live PMS lookup (iLink)",lookupDescription:"Resolves the room + guest live from the PMS and greets by name in their language. Leave blank to call anonymously.",lookupPlaceholder:"Call as extension… e.g. 1003",usingExtension:"Using live extension ."},UA={title:"How do you want to demo?",description:"Pick a transport. Browser mic is the quick option; phone transports give you the real call experience.",label:"Transport",phoneUnavailable:"Phone transport not available for chat channel",browser:{label:"Browser mic",sub:"WebSocket; no phone needed"},outbound:{label:"Twilio calls me",sub:"Rings your phone, bridges the agent"},inbound:{label:"I'll dial in",sub:"Dial the agent's Twilio number from any phone"}},HA={loading:"Looking up the agent's inbound number…",noNumberTitle:"No inbound number configured for this agent.",noNumberBody:'Go to {{page}} and map a Twilio number to . Then dial that number from any phone to demo. Or switch to "{{option}}" — that route works without an InboundNumber row.',dialThis:"Dial this from any phone",howItWorks:"Twilio receives the call, hits the platform's webhook, and opens the media stream to , which answers through its package's speech-to-text, LLM and text-to-speech models."},BA={phoneLabel:"Your phone number (E.164)",phoneInvalid:"Must be E.164 — starts with + and the country code (e.g. +96178868973).",selfDialTitle:"That's the Twilio outbound number itself",selfDialBody:"(). Type your own phone number here — Twilio will dial you and bridge the agent. Dialing the outbound number from itself loops back into the same agent and won't demo anything useful.",placing:"Placing call…",callMe:"Call me and connect {{agent}}",queuedTitle:"Twilio call queued.",queuedBody:"SID: {{sid}} · status: {{status}}. Pick up when your phone rings.",failedTitle:"Couldn't place the call.",whatToDo:"What to do —",twilioDetails:"Twilio response details",footnote:"Twilio dials your number from your org's configured outbound number and bridges in once you pick up. Destination country must be allowed in your Twilio Geo Permissions — if the call doesn't ring, check Twilio Console, Geo Permissions.",footnoteWithNumber:"Twilio dials your number from your org's configured outbound number () and bridges in once you pick up. Destination country must be allowed in your Twilio Geo Permissions — if the call doesn't ring, check Twilio Console, Geo Permissions.",hints:{geoPermissions:"This destination country is blocked by your Twilio Geo Permissions. Enable it at twilio.com/console under Voice, Geographic Permissions, then retry.",invalidTo:"Twilio thinks the number isn't dialable. Double-check the E.164 format and country code.",invalidFrom:"The 'From' number isn't a valid Twilio phone number in this account. Check TWILIO_FROM_NUMBER in the backend env.",unauthenticated:"Twilio rejected the request as unauthenticated. Verify TWILIO_ACCOUNT_SID + TWILIO_AUTH_TOKEN.",tollFraud:"Twilio flagged this as potential toll fraud. Check the Voice Dialing Geographic Permissions for the destination."}},IA={title:"Demo AI Agents",description:"Try any agent end-to-end. Pick the agent, optionally call as a live PMS extension, choose voice or chat, and the agent greets by name from word one. Use the transport selector below to demo via your browser mic, have Twilio call your phone, or dial in from any phone / SIP extension.",pickAgent:"Pick an agent on the left to start the session.",voiceUnavailable:"Voice isn't available for this agent.",voiceUnavailableHelp:"Your company's package doesn't include voice (speech-to-text and text-to-speech). Use the chat channel above, or ask a platform administrator to assign a package with voice."},VA={version:"v{{version}}"},qA={session:SA,errorLabel:_A,fromAgent:TA,panel:EA,header:AA,transcript:CA,message:RA,input:OA,tool:kA,handoff:DA,ended:MA,recorder:NA,call:LA,errors:jA,picker:zA,caller:PA,transport:UA,dialIn:HA,outbound:BA,simulator:IA,test:VA},GA="v{{version}}",KA=", ",FA={duplicate:"Duplicate",cloning:"Cloning…"},YA={kind:"Agent type",systemPrompt:"Agent prompt",temperature:"Temperature",maxTokens:"Max tokens",sttLanguage:"STT language",voiceId:"Voice ID",knowledgeBase:"Knowledge base",firstMessage:"First message",toolAckPhrase:"Tool acknowledgment",toolWaitPhrase:"Still-working line",voiceStability:"Voice stability",voiceSimilarityBoost:"Voice similarity boost",voiceStyle:"Voice style"},XA={assistant:{label:"Assistant (normal)",hint:"The default. A normal chat/voice agent — pick this unless this agent is the phone front door."},voice:{label:"Voice agent",hint:"A normal agent tuned for voice calls (still not the front door)."},aiIvr:{label:"AI IVR agent (front door)",hint:"Only for the orchestrator: the first agent a caller reaches, which greets them and routes to the right agent or a human. Just a label — it doesn't change how the agent runs."}},$A={description:"Named assistants with prompts, knowledge and voice settings.",add:"Add agent",shown:"{{shown, number}} of {{total, number}}",searchPlaceholder:"Search by name, slug, or owner…",searchLabel:"Search agents",empty:{title:"No agents yet",description:"Create the first one to start configuring prompts, knowledge and voice."},noMatch:{title:"No agents match your search",description:"Try a different name, slug, or owner."},columns:{owner:"Owner",mode:"Mode",version:"Version",updated:"Updated"},versionCell:"v{{version}}",mode:{voice:"Voice",text:"Text"},test:"Test",testTitle:"Text-chat sandbox for this agent",actionsFor:"Actions for {{name}}",deleteTitle:"Delete agent",deleteBody:"Delete ? It's removed from the list, but its conversation history is kept. An agent connected to a channel (e.g. a phone number) can't be deleted until you detach it."},QA={newTitle:"New agent",duplicateTitle:"Clone this agent (prompt, voice, tools, transfer reasons) into a new editable copy",demo:"Demo",demoTitle:"Try this agent live — browser mic, your phone (Twilio), or dial-in number",create:"Create agent",toast:{saved:"Saved — version history updated",savedAs:"Saved as v{{version}} — version history updated",restored:"Restored — version history updated",restoredAs:"Restored — saved as v{{version}} — version history updated"},warningsTitle:"Saved — but this agent will not work as configured",tools:{title:"Tools",description:"Attach tools this agent can call. The catalog includes external HTTP tools (you configure the endpoint) and built-in tools (dispatched server-side by — look for the badge). Toggle enabled to keep an attachment but mute it. Only tools enabled for this agent's organization are listed.",manageCatalog:"Manage the full catalog in the Tools page."}},ZA={none:"No tools are available to this agent's organization yet. Ask your platform administrator to enable tools for your organization.",noneSuperAdmin:"No tools are available to this agent's organization yet. Create some on the Tools page or allow them on the Organizations page.",core:"Core · no tick needed",coreTitle:"Core tools — no tick needed. Each row says whether the model is sent it.",onCount:"{{on, number}}/{{total, number}} on",needsSetup:"Needs setup",selectAll:"Select all",removeAll:"Remove all",addTransferReason:"Add a transfer reason to turn this on.",addGuestLink:"Add a guest link to turn this on.",attach:"Attach {{tool}}",detach:"Detach {{tool}}",attached:"Attached + enabled",notAttached:"Not attached",alsoSent:"Also sent automatically:",guestOnly:"(guest lines only)",staffOnly:"(staff chat only)",effectiveFailed:"Couldn't check which tools the model is sent: {{error}}",setupEmail:"Set up email on the Notifications page.",setupEmailToTurnOn:"Set up email on the Notifications page to turn this on.",setupEmailAskAdmin:"Ask your platform administrator to set up email for your organization."},JA={title:"Transfer reasons",description:"Define when and where this agent escalates to a human. Each reason injects its condition + prologue into the agent's system prompt and gives the LLM a {{tool}} tool keyed by {{param}}.",add:"Add transfer reason",empty:"No transfer reasons yet. Add one to enable human handoff for this agent.",confirmDelete:'Delete transfer reason "{{name}}"?',edit:"Edit transfer reason",delete:"Delete transfer reason",slug:"slug: {{slug}}",when:"When",sayFirst:"Say first",quoted:'"{{text}}"',toAgent:"agent {{slug}}",toChat:"chat ",notConfigured:"(not configured)",kinds:{agent:{label:"AI agent",note:"In-session swap — the call switches to the target agent, carrying the conversation."},sip:{label:"SIP",note:"Live — Twilio Media Streams redirects the call to {{verb}}. Requires an Elastic SIP Trunk between Twilio and your PBX."},phone:{label:"Phone (PSTN)",note:"Live — Twilio dials the E.164 number via PSTN; destination must be allowed in your Twilio Geographic Permissions."},telegram:{note:"Live — posts to a Telegram chat with the conversation summary."},whatsapp:{note:"Pending Meta Cloud BSP integration."},sms:{note:"Pending — same Twilio account as PSTN voice."}},status:{live:"Live",pending:"Pending",inSession:"In-session"},form:{editTitle:"Edit {{name}}",namePlaceholder:"Front Desk Transfer",slugLabel:"Slug (LLM-facing)",slugHint:"The {{param}} the model passes to {{tool}}. Auto-derived from name if left blank.",kind:"Kind",conditionLabel:"When to use (condition)",conditionHint:"Plain English. Injected into the agent's system prompt — the LLM reads this to decide when to fire.",prologueLabel:"Prologue (what the assistant says before transferring)",prologueHint:"Spoken/written verbatim by the agent right before invoking the tool. Keep it warm and short.",position:"Position"},destination:{agentTitle:"Hand off to agent",agentNote:"in-session swap; connects on voice once the SIP media plane lands",targetAgent:"Target agent",targetAgentHint:"The call switches to this agent in place, carrying the conversation so the guest doesn't repeat themselves.",telegramTitle:"Telegram destination",botToken:"Bot token",botTokenKeep:"Bot token (leave blank to keep existing)",botTokenHint:"From {{bot}}. Stored encrypted; never echoed back in API responses.",chatId:"Chat ID",chatIdHint:"The chat (group, channel, or DM) the bot will post the summary to. Use @username for public channels or a numeric id ({{example}} for groups).",chatIdPlaceholder:"{{id}} or {{handle}}",whatsappTitle:"WhatsApp destination",whatsappNote:"pending Meta Cloud BSP integration",recipient:"Recipient (E.164)",sipTitle:"SIP destination",sipNote:"pick a registered extension (preferred) so numbers live in one place",extension:"Registered extension",extensionHint:"Maintained on the Extensions page. The agent routes here by intent; the number is resolved from the registry — no hand-typed or stale extensions.",noExtension:"— none (use custom URI below) —",sipUri:"Custom SIP URI (advanced)",sipUriHint:"For an off-registry destination. Ignored when a registered extension is picked above.",pstnTitle:"PSTN destination",pstnNote:"Twilio dials this E.164 over PSTN; destination must be allowed in Twilio Geographic Permissions",smsTitle:"SMS destination",smsNote:"pending Twilio SMS integration",contextTitle:"Handoff context",carryContext:"Carry the conversation so the next agent/human doesn't make the guest repeat themselves",speakSummary:"Speak a short summary to the human before connecting",textSummary:"Send the summary as text (screen-pop)"}},WA={title:"Version history",description_one:"The last {{count, number}} configuration of this agent. Open a version to see its settings, or restore an older one — restoring is recorded as a new version, so nothing is lost. Attached tools and transfer reasons are not part of version history and are left unchanged.",description_other:"The last {{count, number}} configurations of this agent. Open a version to see its settings, or restore an older one — restoring is recorded as a new version, so nothing is lost. Attached tools and transfer reasons are not part of version history and are left unchanged.",current:"Current",by:"· by ",changed:"changed:",changedMark:"changed",initial:"initial version",restore:"Restore",restoring:"Restoring…",restoreTitle:"Restore the agent to its v{{version}} configuration (saved as a new version)",yes:"yes",no:"no"},e2={identity:{title:"Identity",namePlaceholder:"Concierge",nameMakesSlug:"The agent's permanent slug is made from this name, with a number added if another agent already uses it.",descriptionPlaceholder:"What this agent does",kindHint:"What role this agent plays. 'AI IVR agent' is the front-door orchestrator that greets callers, understands what they need, and routes to the right agent or a human. It doesn't change how the agent runs — just how the call-routing surfaces treat it."},prompts:{title:"Prompts",hint:"This agent's job: its persona, how it should answer, and the rules for using its tools. The platform guardrails and the property's own instructions are applied automatically on top of this — don't restate them here.",placeholder:"You are a helpful hotel concierge…",tokens_one:"≈ {{count, number}} token",tokens_other:"≈ {{count, number}} tokens"},tuning:{title:"Response tuning",temperatureHint:"0 = deterministic (same input, same output), 2 = very random. 0.7 is the balanced default. Lower for tasks where consistency matters (booking lookups); higher for creative tasks.",maxTokensLabel:"Max tokens (optional)",maxTokensHint:"Cap on the model's response length. Leave blank for the default (4096). Caps cost but truncates long responses.",maxTokensPlaceholder:"auto"},voice:{title:"Voice",sttHint:"Locks the STT stream's language. 'Multi' covers en+es+fr+pt+de+… with native code-switching (NOT Arabic). Pick 'Arabic' for an Arabic-only agent. Auto follows the guest record.",sttHintRestricted:"Locks the STT stream's language to one this organization allows. Auto follows the guest record — a guest whose language isn't allowed is served in the organization's default language.",voiceLabel:"Voice",voiceHint:"The speaker this agent uses, picked from its voice vendor's own library — press play to hear each one before you commit to it. The stored value is the vendor's own identifier, and you can still type one the library doesn't list. Blank uses the vendor's default voice.",voiceIdHint:"Pick a voice below, or paste a voice id your voice vendor issued. Left blank — or set to an id this agent's voice can't use — calls use the voice model's default voice.",voiceIdPlaceholder:"blank = vendor default",firstMessageHint:"What the agent says the moment the call connects, in its TTS voice. New agents start with the AI and call-recording notice. {{hotel}} is replaced with your hotel's name; {{guest}} and {{room}} with the guest's first name and room number when the caller is recognized. Leave blank to wait for the caller to speak first.",firstMessagePlaceholder:"Hi {{guest}}! How can I help you with room {{room}}?",toolAckHint:"Spoken the instant the agent starts a tool call (booking lookup, table booking…) so the caller hears an acknowledgment instead of dead air. Used once per turn, and only if the agent isn't already talking. Leave blank for silence. Write it in the agent's language.",toolAckPlaceholder:"One moment while I check that for you.",toolWaitHint:"For chained tools (check availability, price it, book it), which leave the caller waiting a second time in the same turn. Repeating the acknowledgment above would sound like a stuck record, so this covers the follow-up — and only when the line has actually gone quiet, so quick lookups stay silent. Leave blank for silence.",toolWaitPlaceholder:"Still working on that — one moment.",stability:"Stability",stabilityHint:"0.0 = expressive but variable. 1.0 = monotone but consistent. Default 0.50.",similarity:"Similarity boost",similarityHint:"How closely to match the source voice. Default 0.75.",style:"Style",styleHint:"Emotive exaggeration. 0.0 = neutral, higher = more theatrical. Default 0.00."},knowledge:{title:"Knowledge (RAG)",description:"Attach a knowledge base — the agent retrieves the most relevant chunks on every turn and cites the source filename in its answer.",all:"All KBs",attached:"Attached KB",none:"(none — answer from the agent prompt only)",docs_one:"{{count, number}} doc",docs_other:"{{count, number}} docs",chunks_one:"{{count, number}} chunk",chunks_other:"{{count, number}} chunks",emptyKb:"empty",inactive:"inactive",new:"New KB",saveToPersist:"Save the agent to persist this KB attachment.",openFull:"Open full view",noneExist:"No knowledge bases exist yet. Create your first one to attach it here.",pick:"Pick a KB above to manage its documents here, or create a new one.",suggestedName:"{{agent}} KB"}},t2={auto:"Auto (from guest)",multi:"Multi (en + es + fr + pt + de + …)",multiShort:"Multi",notAllowed:"{{language}} (not allowed for this organization)"},n2={refresh:"Refresh voice library",loading:"Loading the voice library…",loadFailed:"Could not load this agent's voice library.",searchPlaceholder_one:"Search {{count, number}} voice — name, language, tone…",searchPlaceholder_other:"Search {{count, number}} voices — name, language, tone…",searchLabel:"Search voices",play:"Play {{name}}",stop:"Stop {{name}}",selected:"Selected",noMatch:"No voice matches “{{query}}”.",gender:{female:"female",male:"male",neutral:"neutral"},preview:{failed:"Could not play that voice.",failedDetail:"Could not play that voice — {{detail}}",blockedGesture:"The browser blocked playback — press play again.",blockedPolicy:"Blocked by this page's security policy: {{source}} is not allowed by {{directive}}.",network:"The sample could not be downloaded.",decode:"The sample downloaded but is not decodable audio.",refused:"The sample was refused — blocked by a security policy, or unreachable.",aborted:"The sample was interrupted."}},a2={version:GA,listSeparator:KA,actions:FA,fields:YA,kinds:XA,list:$A,detail:QA,tools:ZA,transfer:JA,versions:WA,form:e2,language:t2,voices:n2},o2="New knowledge base",i2='Delete ""?',r2={documents_one:"{{count, number}} document",documents_other:"{{count, number}} documents",chunks_one:"{{count, number}} chunk",chunks_other:"{{count, number}} chunks"},s2={bytes:"{{size}} B",kb:"{{size}} KB",mb:"{{size}} MB"},l2={document:{pending:"Pending",extracting:"Extracting",chunking:"Chunking",embedding:"Embedding",ready:"Ready",error:"Error"},scrape:{queued:"Queued",discovering:"Discovering pages",extracting:"Extracting content",embedding:"Embedding",done:"Done",error:"Error"}},c2={title:"Knowledge",description:"Upload PDF, DOCX, TXT, or MD files — or import a whole website with the built-in crawler — into a knowledge base, then attach the KB to an agent. At chat time the agent retrieves the most relevant chunks and answers from them. Click a KB name below to open it and add content.",emptyTitle:"No knowledge bases yet",emptyDescription:"Create your first KB to start grounding an agent in your hotel's policies, menu, FAQ — anything you want it to know. Inside, you can upload files (PDF · DOCX · TXT · MD) or import a whole website with the built-in crawler.",createOne:"Create one",documents:"Documents",chunks:"Chunks",updated:"Updated",inactive:"inactive",deleteBody:"This deletes the knowledge base, including {{documents}} and {{chunks}}. Any agent using this KB will fall back to its agent prompt only. This cannot be undone."},u2={invalidId:"Invalid knowledge base id.",back:"All knowledge bases",noDescription:"No description yet.",org:"org: {{slug}}",edit:"Edit details"},d2={namePlaceholder:"e.g. Hotel FAQ",descriptionOptional:"Description (optional)",descriptionPlaceholder:"What's in this knowledge base? Helps you remember when you have many."},f2={title:"Edit knowledge base",deleteKb:"Delete this knowledge base",active:"Active",confirmTitle:"Delete the entire knowledge base?",confirmBody:"All documents and chunks will be removed. Any agent using this KB falls back to its agent prompt.",no:"No",yesDelete:"Yes, delete"},h2={title:"Documents",total:"{{count, number}} total",emptyTitle:"No documents yet",emptyDescription:"Drop a file above to get started.",type:"Type",size:"Size",chunks:"Chunks",view:"View this document's chunks",reprocess:"Reprocess (re-chunk and re-embed the saved text)",nothingToReprocess:"Nothing saved to reprocess — upload the file again",deleteBody_one:"Removes the document and its {{count, number}} chunk from this knowledge base. The original file isn't recoverable.",deleteBody_other:"Removes the document and its {{count, number}} chunks from this knowledge base. The original file isn't recoverable."},m2={noChunks:"This document has no chunks yet, so agents can't answer from it.",showingFirst_one:"Showing the first {{shown, number}} of {{count, number}} chunk.",showingFirst_other:"Showing the first {{shown, number}} of {{count, number}} chunks.",chunk:"Chunk {{n, number}}",tokens_one:"{{count, number}} token",tokens_other:"{{count, number}} tokens"},p2={drop:"Drop files here or browse",hint:"PDF · DOCX · TXT · MD · max {{limit}} per file",tooLarge:'"{{name}}" is {{size}} — over the {{limit}} limit.',unsupported:'"{{name}}" is not a supported type (pdf/txt/md/docx).',uploaded:"uploaded",queued:"queued…"},g2={title:"Import from website",description:"Paste a hotel's URL — we crawl, extract content, and add each page as a document.",urlLabel:"Website URL",rendererLabel:"Renderer",rendererHint:"Auto: HTML first, browser fallback. Browser: forces Playwright for JS sites. HTTP: faster, skips JS.",renderer:{auto:"Auto",http:"HTTP only",browser:"Browser (JS)"},maxPages:"Max pages to crawl",start:"Scrape",usedBrowser:"A page on this site needed headless browser rendering",js:"JS",pagesAdded_one:"{{added, number}} of {{count, number}} page added",pagesAdded_other:"{{added, number}} of {{count, number}} pages added",showPages:"Show pages",hidePages:"Hide pages",outcome:{ok:"Added",thin:"Too little text",blocked:"Refused",blockedHttp:"Refused (HTTP {{status}})",fetchFailed:"Couldn't fetch",error:"Couldn't save",skipped:"Skipped"}},y2={newKb:o2,confirmDeleteTitle:i2,counts:r2,size:s2,status:l2,list:c2,detail:u2,create:d2,edit:f2,documents:h2,drawer:m2,upload:p2,scrape:g2},b2={description:"Pages your agents may email to a guest who asks. An agent sends only what's on this list, to an address the guest gives and confirms, and adds no words of its own. Tick 'Email a guest link' on an agent to use them.",add:"Add link",emptyTitle:"No guest links yet",emptyDescription:"Add a page a guest might ask for, such as a menu, a price list or directions. Then tick 'Email a guest link' on an agent.",addFirst:"Add your first link"},v2={link:"Link"},w2={activeFor:"Active: {{name}}",editFor:"Edit {{name}}",deleteFor:"Delete {{name}}"},x2={editTitle:"Edit link",nameDescription:"What a guest would ask for, e.g. Dinner menu",linkDescription:"Must start with {{scheme}}. Guests receive exactly this address."},S2={page:b2,fields:v2,row:w2,delete:{title:'Delete ""?',body:"Agents stop offering it from their next reply. Emails already sent are not affected."},form:x2},_2="Edit ",T2={method:"Method",url:"URL",timeout:"Timeout (seconds)"},E2={active:"Active",disabled:"Disabled"},A2={title:"Tools",description:"The platform catalog — built-in tools dispatched by (grouped below) and external HTTP integrations you add. Each organization gets every tool unless its Organizations page narrows it to an allow-list; agents attach them, by group, on their edit page.",addTool:"Add tool",emptyTitle:"No tools yet",emptyDescription:"Add an external HTTP tool to give your agents a custom integration — call the hotel PMS, a delivery service, a CRM, anything reachable over HTTP.",deleteTitle:"Delete tool",deleteBody:"Delete ? Agents using it will lose this capability."},C2={guestVerification:"{{brand}} — Guest Verification",guestLinks:"{{brand}} — Guest Links",ilinkRooms:"TigerTMS iLink — Room Reservations",ilinkTables:"TigerTMS iLink — Table Bookings",ilinkTaxis:"TigerTMS iLink — Taxi Bookings",ilinkGuestServices:"TigerTMS iLink — Guest Services",custom:"Custom",connectors:"Connectors",callControl:"Call Control",voicemail:"Voicemail"},R2={builtIn:"Built-in",builtInTitle:"Built-in tool — dispatched server-side, no HTTP endpoint.",aiIvr:"AI IVR",aiIvrTitle:"AI IVR — bridges the property's legacy IVR API. Per-org credentials resolved automatically at call time.",mcpTitle:"MCP — discovered from a connector. Managed on the connector, not editable here.",brandMethodTitle:"Server-side dispatch — no HTTP",ivr:"IVR",ivrMethodTitle:"Legacy property IVR bridge (HTTP GET, XML response)",mcpMethodTitle:"Dispatched over the connector's MCP protocol (JSON-RPC)"},O2={empty:'No tools yet. Click "{{action}}" to create the first one.',internalHandler:"internal handler · ",orgBase:"(org base)",connectorTool:"connector tool · ",managedOnConnector:"managed on connector"},k2={builtinNotice:"Built-in tool — its logic and input schema are defined in code (handler ), so there are no HTTP settings to edit. You can still change what the model sees and when it fires: name, description, steps, confirmation and active.",namePlaceholder:"Look up guest",slugLabel:"Slug (LLM-facing name)",slugHint:"The exact name the model uses when deciding to call this tool. Use snake_case (e.g. {{example}}). Locked after creation — change tool name, not slug.",descriptionLabel:"Description (LLM-facing)",descriptionHint:"The model reads this to decide WHETHER to call this tool. Be explicit about WHEN to use it. For HOW to use it, use the Steps section below.",descriptionPlaceholder:"Tell the model when to use this tool.",timeoutHint:"Hard cap on tool HTTP call duration. 10s is a sane default.",requiresConfirmation:"Requires confirmation",requiresConfirmationTip:"Human-in-the-loop gate: the agent must read the action back to the guest and get an explicit yes before this tool actually runs. Use for anything that writes, cancels, or moves money.",errors:{returnsJson:"Returns must be valid JSON (or leave blank).",examplesJson:"Examples must be valid JSON (or leave blank).",examplesArray:"Examples must be a JSON array of {{shape}} objects.",fieldJson:"{{field}} must be valid JSON.",fieldJsonOrBlank:"{{field}} must be valid JSON (or leave blank)."}},D2={urlTemplate:"URL template",urlTemplateHint:"The HTTP endpoint to call. Use {{placeholder}} to substitute fields from tool inputs. Backend uses {{dockerHost}} to reach your host machine.",defaultHeaders:"Default headers (JSON)",defaultHeadersHint:"Headers sent on every call. Use for static auth tokens. Sensitive values are plaintext for now — Phase 5b will move them to encrypted ApiKey storage.",parametersSchema:"Parameters schema (JSON Schema)",parametersSchemaHint:"JSON Schema describing the LLM-facing inputs. Keep this FLAT and clean — wrapping for the actual API goes in Body template below.",bodyTemplate:"Body template (optional)",bodyTemplateHint:"Optional. Wrap LLM args before sending. Placeholders: {{args}} - the LLM's whole inputs dict, {{callId}} - the LLM tool-use id, {{field}} - one input field. Example (JazzTicketing nested shape): {{example}}",bodyTemplatePlaceholder:"Leave blank to send LLM inputs directly. Or: {{example}}"},M2={label:"Steps (how the LLM should use this tool)",tip:"Ordered guidance injected into the system prompt at chat time. Use this for procedural steps like 'collect room number', 'classify request', 'apply defaults'. The model's tool description tells it WHEN; these steps tell it HOW.",add:"Add step",empty:"No steps yet. The LLM will rely on description + JSON schema only.",titlePlaceholder:"Step title (e.g. Classify Request)",detailPlaceholder:"What the model should do at this step…",remove:"Remove step {{number, number}}"},N2={returnsLabel:"Returns (what the tool sends back)",returnsDescription:"JSON Schema for the result. The agent reads this to tell success from failure, and to carry a value into the next call — it can't pass a {{field}} it doesn't know exists. Describe each key.",returnsSample:"Pass to {{tool}} if the guest adds detail.",returnsNone:"No output documented — the agent will guess whether the call worked.",returnsDocumented_one:"{{documented, number}} of {{count, number}} returned field described.",returnsDocumented_other:"{{documented, number}} of {{count, number}} returned fields described.",examplesLabel:"Examples",examplesDescription:"Worked call/result pairs. A schema says what is allowed; an example says what is meant — which is where 'it worked twice and got the third one wrong' lives. Include one failure case.",examplesSample:"Read the error — do not tell the guest it worked.",examplesNone:"No examples — the agent has only the schema to go on.",examplesCount_one:"{{count, number}} example. The first {{sent, number}} are sent to the model.",examplesCount_other:"{{count, number}} examples. The first {{sent, number}} are sent to the model."},L2={title:"Connectors (MCP)",description:"Connect a Model Context Protocol server and the platform discovers its tools automatically — no hand-defining endpoints. Discovered tools appear in the catalog below and can be attached to any agent.",add:"Add connector",loadFailed:"Failed to load connectors: {{error}}",emptyTitle:"No connectors yet",emptyDescription:"Add an MCP server (GitHub, Stripe, an internal service, …) to give your agents its tools in one step.",syncFailed:"Sync failed: {{error}}",unknownError:"unknown error",deleteTitle:"Delete connector",deleteBody_one:"Delete ? Its {{count, number}} discovered tool will be removed and any agent using them will lose that capability.",deleteBody_other:"Delete ? Its {{count, number}} discovered tools will be removed and any agent using them will lose that capability."},j2={connector:"Connector",tools:"Tools",lastSync:"Last sync",shared:"Shared",sharedTitle:"Platform-shared connector (visible to every org).",auth:"Auth",authTitle:"Auth configured",syncing:"Syncing…",refresh:"Refresh tools",ok:"OK",okTitle:"Last discovery succeeded",error:"Error",syncFailed:"Sync failed",notSynced:"Not synced"},z2={addTitle:"Add MCP connector",description:"Point at a Model Context Protocol server (Streamable HTTP). On save we connect and discover its tools — they appear under Connectors and can be attached to any agent.",saveSync:"Save & sync",addDiscover:"Add & discover",slugHint:"Short identifier, unique per owner. Used to namespace the discovered tool names ({{pattern}}). Locked after creation.",owner:"Owner",ownerHint:"Shared connectors are available to every organization (subject to its tool allow-list). An organization's own connector is available only to it — and always, whatever its allow-list.",ownerShared:"Shared — every organization",serverUrl:"Server URL",serverUrlHint:"The MCP server's Streamable HTTP endpoint. JSON-RPC requests are POSTed here.",descriptionLabel:"Description (optional)",descriptionPlaceholder:"What this connector is for.",authHeaders:"Auth headers (JSON)",authHeadersHint:"Auth headers sent on every call to the MCP server, as JSON. Most servers use a bearer token: {{example}} Stored encrypted — never shown again. Leave blank to keep the current auth when editing.",authSetPlaceholder:"Auth is set. Leave blank to keep it, or paste new headers to replace.",authHeadersInvalid:"Auth headers must be valid JSON (or leave blank).",timeoutHint:"Hard cap on each MCP call. 30s is a sane default for discovery + tool calls."},P2={on:"On",onDetail:"Sent to the model on every conversation.",onGuestOnly:"On · guest lines only",onStaffOnly:"On · staff chat only",sentGuestOnly:"Sent on guest lines only",sentStaffOnly:"Sent on staff chat only",guestOnlyDetail:"Sent only on phone calls and messaging channels.",staffOnlyDetail:"Sent only on staff chat, the Playground and the browser voice tester.",auto:"Added automatically",autoGuestOnly:"Added automatically · guest lines only",autoStaffOnly:"Added automatically · staff chat only",autoDetail:"Not ticked, but sent: another tool on this agent needs it first (for example to verify the guest). Sent on every conversation.",autoGuestOnlyDetail:"Not ticked, but sent: another tool on this agent needs it first (for example to verify the guest). Sent only on phone calls and messaging channels; not on staff chat, the Playground and the browser voice tester, where that check doesn't apply.",autoStaffOnlyDetail:"Not ticked, but sent: another tool on this agent needs it first (for example to verify the guest). Sent only on staff chat, the Playground and the browser voice tester; not on phone calls and messaging channels, where that check doesn't apply.",noTransferReasons:"Off · no transfer reasons",noTransferReasonsDetail:"Not sent to the model: this agent has no enabled transfer reason, so there is nowhere to transfer to. Add one under Transfer reasons.",notCallable:"Not sent to the model",notCallableDetail:"Ticked, but not sent: the tool can't run right now (for example its connector is inactive).",noGuestLinks:"Off · no guest links",noGuestLinksDetail:"Not sent to the model: this organization has no active guest links, so there is nothing to email. Add one under AI Agents → Guest Links.",emailNotSetUp:"Off · email not set up",emailNotSetUpDetail:"Not sent to the model: this organization has no email sender, so the agent won't offer to email anything until one is set up.",noSender:"Can't send codes · set up email",noSenderDetail:"This organization has no email or SMS sender, so no code can go out and guests can't be verified before a booking change.",noEmailSender:"SMS only · set up email",noEmailSenderDetail:"Codes can only be texted, and only to guests found by their own phone number. Web chat and bookings looked up by confirmation number need an email sender."},U2={editTitle:_2,fields:T2,toolState:E2,page:A2,groups:C2,kinds:R2,table:O2,form:k2,http:D2,steps:M2,contract:N2,mcp:L2,mcpTable:j2,mcpForm:z2,delivery:P2},H2={title:"Access",full:"Full access — everything their role allows",noPages:"No pages available to grant.",reach_one:"Can access {{count, number}} hotel",reach_other:"Can access {{count, number}} hotels",reachViaGroups_one:"Can access {{count, number}} hotel ({{via, number}} via groups)",reachViaGroups_other:"Can access {{count, number}} hotels ({{via, number}} via groups)",groups:{title:"Groups",description:"Every hotel in the group, including hotels added to it later.",empty:"No groups yet.",hotelCount_one:"{{count, number}} hotel",hotelCount_other:"{{count, number}} hotels"},hotels:{title:"Extra hotels",description:"Single hotels this user can act in and switch to, on top of their company and groups. Their role above applies in each.",empty:"No other hotels to add."}},B2={title:"Configure how this agent behaves",open:"Open agent"},I2={title:"Inbound numbers",description:`Map each Twilio number to an AI agent. Point Twilio's "A call comes in" webhook at and the rest is configured here. How the agent actually talks — tools, transfers, voicemail — lives on the Agent page.`,add:"Add number",fields:{number:"Number",mode:"Mode",label:"Label"},modes:{answer:"Live agent",voicemail:"Voicemail"},table:{emptyTitle:"No inbound numbers yet",emptyDescription:'Click "{{action}}" to wire your first Twilio number to an agent.',on:"On",off:"Off"},form:{editTitle:"Edit number",labelPlaceholder:"Front desk main line",modeAnswer:"Live agent (always answer)",modeVoicemail:"Voicemail (always record)",greeting:"Spoken greeting",greetingHint:"Optional — Twilio {{verb}} before the agent answers.",greetingPlaceholder:"Hi! Connecting you to our AI assistant.",voicemailPrompt:"Voicemail prompt",voicemailPromptPlaceholder:"Please leave a message after the beep.",activeHint:'Inactive numbers hang up with "this number is not configured".',behaviourDetail:"First message, transfer reasons (when it escalates to a human), voicemail capture, and tools all live on the agent.",deleteConfirm:"Delete {{number}}?"}},V2={description:" has three role tiers, strictly nested — every privilege a lower role has is also available to a higher one. The same role map drives which pages a user sees. To change someone's role, edit them on the Users page.",hierarchy:"Hierarchy — the top tier has every right below it",loadFailed:"Couldn't load users, so the assignment lists below are empty — {{error}}",footnote:"Capabilities come from the live navigation catalog — they are what each role actually sees in the app, not a separate documentation list, so they cannot drift out of sync.",personaValue:"DB persona value",typical:"Typical:",canSee_one:"Can see {{count, number}} page",canSee_other:"Can see {{count, number}} pages",assigned:"Assigned ({{total}})",noneAssigned:"No one assigned yet.",more_one:"+{{count, number}} more",more_other:"+{{count, number}} more",showFewer:"Show fewer",tiers:{superAdmin:{short:"Platform operator",blurb:"Internal team. Sees and acts across EVERY company. Manages packages, API keys, organization branding, messaging channels, SIP / PBX telephony, and cross-company diagnostics. Not a hotel staff member.",examples:"Platform team — support, onboarding, engineering"},admin:{short:"Company admin",blurb:"Manages one company. Everything a User does, plus the Admin tab — the team, roles, and inbound numbers. Cannot see other companies or platform-level settings.",examples:"Hotel IT / ops manager, account principal"},user:{short:"Company user",blurb:"Works across their whole company: sees, edits and deletes every AI agent, knowledge base and conversation, and uses Home and every app (Inbox, Voicemails, Sentiment, Playground, History). Cannot manage the team, roles or inbound numbers.",examples:"Hotel staff — front desk, reservations, guest services"}}},q2={accountSid:"Account SID",notSet:"Not set",config:{title:"Twilio account",description:"Credentials for this organization (Account SID, Auth Token, default caller-ID). Used to verify inbound webhooks and place outbound calls. The auth token is encrypted and never shown again.",configure:"Configure",configured:"Configured",summary:"SID · from ",fromNumber:"Default from-number (E.164)",authToken:"Auth Token",keepToken:"Leave blank to keep the current one.",tokenUnchanged:"•••••••• (unchanged)",tokenPlaceholder:"Twilio Auth Token"},health:{badge:"Twilio: {{status}}",details:"Click for details",title:"Twilio status",accountStatus:"Account status",fromNumber:"From number",publicHostname:"Public hostname",noHostname:"(none — using request host)",credentials:"Credentials",accepted:"Accepted",rejected:"Rejected",error:"Error",webhook:"Webhook",reachable:"Reachable",unreachable:"Unreachable",states:{checking:"checking…",unreachable:"unreachable",notConfigured:"not configured",authFailed:"auth failed",error:"error",webhookDown:"webhook down",connected:"connected"},accountStatuses:{active:"active",trial:"trial",suspended:"suspended",closed:"closed"}}},G2={description:"Manage accounts and group membership.",add:"Add user",company:"Company",count_one:"{{count, number}} user",count_other:"{{count, number}} users",deleteTitle:"Delete user",deleteBody:"Delete ? This can't be undone.",table:{loadFailed:"Failed to load users: {{error}}",emptyTitle:"No users yet",emptyDescription:"Add the first account to give someone access.",user:"User",extraHotels:"Extra hotels: {{names}}",everyHotelIn:"Every hotel in {{group}}",cannotDeleteSelf:"You can't delete yourself"},form:{create:"Create user",editTitle:"Edit ",firstName:"First name",lastName:"Last name",noCompany:"— none (full access) —",selectCompany:"Select a company…",activeCanLogIn:"Active (can log in)",reset2fa:"Reset 2FA",resetting2fa:"Resetting…",reset2faConfirm:"Reset two-factor auth for {{email}}? They are signed out everywhere and will re-enroll with a new QR code at their next login."}},K2={access:H2,agentTip:B2,inbound:I2,roles:V2,twilio:q2,users:G2},F2={title:"Organizations",description:"Each row is a brand surface — name, colors, copy, package and integrations. The default is what new visitors see. Add a row for every white-label customer."},Y2={title:"Brands",default:"Default",inactive:"Inactive",makeDefault:"Make {{name}} the default",emptyTitle:"Select an organization",emptyDescription:"Pick a brand from the list to edit its identity, colors, package, integrations and policies."},X2={saved:"Saved.",ilinkNotSaved:"Organization saved, but iLink was not: {{error}}",choosePackage:"Choose a package for this organization.",deleteConfirm:"Delete {{name}}? This cannot be undone — make sure no Twilio inbound number depends on it.",deleteTitle:"Delete this organization",deleteDefaultTitle:"Can't delete the default org — promote another first.",reset:"Reset"},$2={title:"Landing page preview",description:"Updates as you type — saved values apply globally after Save.",welcome:"Welcome",namePlaceholder:"Brand",descriptionPlaceholder:"Your hero description appears here.",assistant:"Assistant: {{name}}"},Q2={title:"Identity",longName:"Long name",heroSuffix:"Hero suffix",heroSuffixHint:"e.g. Intelligence / Console",poweredBy:"Powered by",publicHost:"Public host",publicHostDescription:"Hostname for this brand's outbound links (e.g. the reservation confirmation payment link). No scheme or trailing slash. Leave blank to use the platform default.",tagline:"Tagline",heroDescription:"Hero description"},Z2={title:"Group",description:"A label for sorting. Members can switch between the organizations in their group; data, agents and prompts stay per organization.",none:"None (ungrouped)"},J2={manage:"Manage groups",title:"Groups",description:"Labels for sorting organizations. Members of one organization in a group can switch to the others; data, agents and prompts stay per organization.",done:"Done",emptyTitle:"No groups yet",emptyDescription:"Create one below, then file organizations under it from their editor.",orgCount_one:"{{count, number}} org",orgCount_other:"{{count, number}} orgs",newName:"New name for {{name}}",rename:"Rename {{name}}",delete:"Delete {{name}}",deleteConfirm_one:'Delete group "{{name}}"? Its {{count, number}} organization will become ungrouped.',deleteConfirm_other:'Delete group "{{name}}"? Its {{count, number}} organizations will become ungrouped.',newGroup:"New group",slug:"Slug: {{slug}}",slugDerived:"The slug is derived from the name.",namePlaceholder:"Harbour Collection"},W2={title:"New organization",description:"Slug and name now; branding, colors and policies in the editor afterwards.",packageDescription:"The tier this organization sits on. It can be switched later, never removed.",loadingPackages:"Loading packages…",noPackages:"No packages yet — create one first",packageOption:"{{name}} ({{price}}/mo)",groupDescription:"Optional — file this organization under a group."},eC={title:"Theme colors",description:"Applied to the public landing page and the console's brand accents for this org.",picker:"Color picker: {{color}}",colors:{primary:"Primary",accent:"Accent",overlay:"Overlay",success:"Success",text:"Text",muted:"Muted",border:"Border",surface:"Surface"}},tC={title:"Concurrent calls",description:"How many voice calls this organization can have up at once.",packageLimit:"Package limit: {{limit}}",limit_one:"{{count, number}} concurrent call",limit_other:"{{count, number}} concurrent calls",unlimited:"unlimited",override:"Override the package limit",overrideDescription:"Off: this organization follows its package. On: the number below replaces the package limit — higher or lower. Calls past the limit hear a busy message. The platform capacity limit still applies.",field:"Concurrent calls for this organization",fieldDescription:"Set 0 for no organization limit.",invalid:"Enter a whole number, 0 or more, or turn the override off."},nC={title:"Tools",description:"Which tools this organization's agents may attach and call.",restrict:"Restrict to an allow-list",restrictDescription:"Off: every tool in the catalog is available. On: only the tools ticked below — plus {{coreGroups}}, which every agent always has, and this organization's own connectors. Agents keep attachments to a tool you untick, but can't use it until it's allowed again.",allowed:"{{allowed, number}}/{{total, number}} allowed",clear:"Clear",allowAll:"Allow all",ownConnector:"Own connector",ownConnectorTitle:"This organization's own connector — always available to it.",allow:"Allow {{name}}"},aC={title:"Languages",description:"Which languages this organization's agents may speak.",restrict:"Restrict to specific languages",restrictDescription:"Off: agents can use every language, including auto-detect. On: agents speak only the languages ticked below. Callers in any other language are answered in the default (the first ticked language), and auto-detect is turned off.",default:"Default language: {{language}}",noneTicked:"Tick at least one language, or turn the restriction off."},oC={title:"In-app assistant",name:"Assistant name",agentSlug:"Assistant agent slug",timezone:"Timezone (IANA)",timezoneDescription:'The AI agent reads this when answering time-relative questions ("is breakfast on?", "what time tomorrow?"). Use an IANA name like {{example}}.',timezonePlaceholder:"e.g. {{example}}"},iC={active:"Active",activeDescription:"Inactive orgs are hidden from the active-org resolver."},rC={title:"Property AI instructions",label:"Property prompt",description:"Tone, phrasing preferences, and what this property will or will not commit to.",placeholder:"e.g. Address guests by surname. Never promise early check-in before 14:00.",steer:"For how this property answers and what it may commit to. Amenities, opening hours and menus belong in the knowledge base instead — those are looked up per question and cited in the reply, rather than being paid for on every message.",budget:"≈ {{tokens, number}} / {{budget, number}} tokens"},sC={title:"Security",requireTotp:"Require two-factor authentication (authenticator app)",requireTotpDescription:"Members must confirm a 6-digit code at login; the first sign-in walks them through a QR-code setup. Turning this off only skips enrollment for users without 2FA — anyone already enrolled keeps being asked for their code. Lost device? Reset the user's 2FA from the Users page."},lC={description:"Guest-services middleware for this property — wake-up calls, maintenance tickets, lost & found, DND, housekeeping requests and the room bill — and, when switched on, room and table bookings on its behalf. Its tools still have to be allowed for this org (Tools, below) and attached to an agent on the agent's page.",testConnection:"Test connection",testTitle:"Sign in to iLink with the saved credentials",testDisabledTitle:"Save first to enable connection testing",connected:"Connected.",connectionFailed:"Connection failed:",testFailed:"Test request failed:",health:{notTestedTitle:"Not yet tested.",notTested:"Save your credentials, then run a connection test to verify.",connected:"Connected to site · last checked ",failed:"Last connection check failed · "},fields:{baseUrl:"Base URL",baseUrlDescription:"No trailing slash and no {{suffix}} suffix — the client appends the API paths itself.",siteCode:"Site code",siteCodeDescription:"The property code sent on every iLink call (e.g. vignette2, or 002). Changing this points every guest-services tool at a different property.",apiUser:"API user",apiUserDescription:"The iLink API account username. Use an account that nothing else signs in with: the activity figures on Home count everything this account creates at the property.",apiPassword:"API password",apiPasswordDescription:"Leave blank to keep the saved password. Changing it also clears the cached token, so the new credential takes effect immediately.",token:"Long-term API token (optional)",tokenDescription:"Issued in iLink Web and valid for months, so we stop signing in every 30 minutes. Paste a new one to replace the saved token; leave blank to keep it. The user name and password are still needed.",tokenRejected:"iLink turned this token down, so we've gone back to signing in with the user name and password — everything still works. To get the speed back, ask TigerTMS for a new long-term token and paste it above.",demoExtensions:"Demo extensions",demoExtensionsDescription:"Fallback only. A real in-house call already carries the room's extension as its caller ID, and that is what gets looked up. These are used when a call arrives without one (an outside number, a withheld caller ID) so demos still personalize. Comma-separated, e.g. 1003, 1004, 1005.",activeDescription:"AI agents can call iLink on behalf of this org.",useForBooking:"Use iLink for bookings",useForBookingDescription:"Availability, bookings, changes, cancellations, check-in/out and arrivals go through iLink. Turning it back off restores the previous setup; tools explicitly assigned to iLink keep using it."},secret:{configured:"Configured — leave blank to keep",saved:"Saved"},validation:{baseUrl:"iLink: base URL is required.",siteCode:"iLink: site code is required.",apiUser:"iLink: API user is required."},booking:{notChecked:"We haven't checked what this property can do yet. It's read automatically the first time the assistant makes a booking through iLink.",notSetUpTitle:"This property isn't set up for bookings yet.",notSetUp:"Bookings will keep using the existing connection until it is, so nothing will break — but nothing will change either. Ask TigerTMS to enable bookings for site .",noSiteCode:"(no site code set)",offered:"Going through iLink: .",missing_one:"Still using the existing connection: — this property doesn't offer it through iLink.",missing_other:"Still using the existing connection: — this property doesn't offer them through iLink.",operations:{roomAvailability:"Check availability",listRates:"List room rates",createBooking:"Take a booking",modifyBooking:"Change dates",cancelBooking:"Cancel a booking",expressCheckin:"Check a guest in",checkOutBooking:"Check a guest out",listArrivals:"Today's arrivals",findReservation:"Find a booking",tableAvailability:"Check table availability",createTableBooking:"Take a table booking",modifyTableBooking:"Change a table booking",cancelTableBooking:"Cancel a table booking",findTableBooking:"Find a table booking",listTableBookings:"Today's table bookings"}}},cC={opens:{label:"Front desk opens",description:"Hotel time. Set both times to see on Home how much the AI handled while the desk was closed. Leave both empty to skip it."},closes:{label:"Front desk closes",description:"Hotel time. If it is earlier than the opening time, the desk is open overnight."},errors:{bothOrNeither:"Set both the opening and the closing time, or neither.",same:"Opening and closing time cannot be the same."}},uC={title:"Hotel's plan price",description:"What this hotel actually pays, in its own currency. Home compares it with the money from stays. The hotel's admins can see it; only platform admins can change it.",monthly:{label:"Monthly price this hotel pays",description:"Empty = not set; Home then asks for it instead of showing a return."},currency:{label:"Currency",fromSite:"Leave empty to use the hotel's currency ({{currency}}, from iLink).",noSite:"Three-letter code, e.g. GBP. Run Test connection on the iLink card to read the hotel's own currency."}},dC={title:"Organization type",description:"Platform analytics count clients, sales demos and internal test orgs separately, so demo calls and cost never inflate client numbers.",types:{client:"Client",demo:"Demo",internal:"Internal"},hints:{client:"A paying customer — counted in client numbers.",demo:"Used by sales for demos — its cost counts as sales cost.",internal:"Our own testing — its cost counts as engineering cost."}},fC={page:F2,list:Y2,editor:X2,preview:$2,identity:Q2,group:Z2,groups:J2,newOrg:W2,theme:eC,package:{title:"Package",description:"The one tier this org sits on — required. Its models and modules follow the tier.",price:"{{price}}/mo",priceMonthly:"{{price}}/mo",defaultModels:"Default models (from tier)",slots:{llm:"LLM",stt:"Transcriber",tts:"Voice"},noPackage:"No package yet — pick one above before saving.",modelsNote:"Every agent in this org runs on these models.",features:"Effective features",noFeatures:"No features yet — assign a package above.",featureNames:{aiVoice:"AI Voice",aiChat:"AI Chat",analytics:"Analytics",sentiment:"Sentiment Analysis"}},concurrency:tC,toolAccess:nC,languages:aC,assistant:oC,status:iC,propertyPrompt:rC,security:sC,ilink:lC,deskHours:cC,planPrice:uC,orgType:dC},hC={title:"Packages",description:"Tiers an org can sit on — a name, a price, and the AI models it runs. Assign them to orgs in Organizations.",add:"Add package",default:"Default",unlimited:"Unlimited",makeDefault:"Make {{name}} the default package",edit:"Edit {{name}}",delete:"Delete {{name}}",emptyTitle:"No packages yet",emptyDescription:"Create a tier with a price and default models, then assign it to organizations.",columns:{package:"Package",price:"Price / mo",concurrentCalls:"Concurrent calls / org",models:"Models",orgs:"Orgs"},slots:{llm:"LLM",stt:"STT",tts:"TTS"},deleteTitle:"Delete package",deleteBody:"Delete ?",deleteDefault:"This is the platform default package. Make another package the default first.",deleteAssigned_one:"This tier is assigned to {{count, number}} organization. Move that organization to another tier first.",deleteAssigned_other:"This tier is assigned to {{count, number}} organizations. Move those orgs to another tier first.",form:{editTitle:"Edit ",namePlaceholder:"Premium",price:"Price / mo ($)",concurrentCalls:"Concurrent calls per organization",concurrentCallsDescription:"Maximum simultaneous voice calls for each organization on this package. Set 0 for no package limit. The platform capacity limit still applies.",models:"Models",modelsDescription:"The LLM / transcriber / voice an org on this tier runs on — every agent in that org uses them.",llm:"LLM",stt:"Transcriber (STT)",tts:"Voice (TTS)",none:"None"}},mC={title:"API keys",description:"Encrypted vendor credentials, managed here for every organization. Keys can be added for Anthropic, Gemini, LiveKit, Deepgram, ElevenLabs and Inworld. Plaintext is never returned after creation. A key's scope is the organizations it serves — one, several, or , the fallback every company inherits when it has no key of its own.",add:"Add key",count_one:"{{count, number}} key",count_other:"{{count, number}} keys",shared:"Shared · platform",sharedTitle:"Shared platform key — every org falls back to it.",emptyTitle:"No API keys yet",emptyDescription:"Add one to start calling providers.",columns:{label:"Label",scope:"Scope",provider:"Provider",key:"Key",createdBy:"Created by",created:"Created"},providerTypes:{llm:"LLM",stt:"STT",tts:"TTS",embedding:"Embeddings"},status:{active:"Active",disabled:"Disabled"},enable:"Enable",disable:"Disable",deleteTitle:"Delete API key",deleteBody:"Delete