diff --git "a/assets/index-YMvdcJxd.js" "b/assets/index-YMvdcJxd.js" new file mode 100644--- /dev/null +++ "b/assets/index-YMvdcJxd.js" @@ -0,0 +1,938 @@ +var Yp=Object.defineProperty;var Xp=(e,t,n)=>t in e?Yp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var R=(e,t,n)=>Xp(e,typeof t!="symbol"?t+"":t,n);(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const a of document.querySelectorAll('link[rel="modulepreload"]'))r(a);new MutationObserver(a=>{for(const l of a)if(l.type==="childList")for(const o of l.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&r(o)}).observe(document,{childList:!0,subtree:!0});function n(a){const l={};return a.integrity&&(l.integrity=a.integrity),a.referrerPolicy&&(l.referrerPolicy=a.referrerPolicy),a.crossOrigin==="use-credentials"?l.credentials="include":a.crossOrigin==="anonymous"?l.credentials="omit":l.credentials="same-origin",l}function r(a){if(a.ep)return;a.ep=!0;const l=n(a);fetch(a.href,l)}})();function Uc(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Wc={exports:{}},Nl={},Vc={exports:{}},U={};/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var sa=Symbol.for("react.element"),Kp=Symbol.for("react.portal"),Qp=Symbol.for("react.fragment"),Jp=Symbol.for("react.strict_mode"),qp=Symbol.for("react.profiler"),em=Symbol.for("react.provider"),tm=Symbol.for("react.context"),nm=Symbol.for("react.forward_ref"),rm=Symbol.for("react.suspense"),am=Symbol.for("react.memo"),lm=Symbol.for("react.lazy"),$s=Symbol.iterator;function om(e){return e===null||typeof e!="object"?null:(e=$s&&e[$s]||e["@@iterator"],typeof e=="function"?e:null)}var Bc={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},$c=Object.assign,Hc={};function sr(e,t,n){this.props=e,this.context=t,this.refs=Hc,this.updater=n||Bc}sr.prototype.isReactComponent={};sr.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")};sr.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function Gc(){}Gc.prototype=sr.prototype;function ji(e,t,n){this.props=e,this.context=t,this.refs=Hc,this.updater=n||Bc}var Di=ji.prototype=new Gc;Di.constructor=ji;$c(Di,sr.prototype);Di.isPureReactComponent=!0;var Hs=Array.isArray,Zc=Object.prototype.hasOwnProperty,Ui={current:null},Yc={key:!0,ref:!0,__self:!0,__source:!0};function Xc(e,t,n){var r,a={},l=null,o=null;if(t!=null)for(r in t.ref!==void 0&&(o=t.ref),t.key!==void 0&&(l=""+t.key),t)Zc.call(t,r)&&!Yc.hasOwnProperty(r)&&(a[r]=t[r]);var i=arguments.length-2;if(i===1)a.children=n;else if(1>>1,ie=N[Q];if(0>>1;Qa(Mn,F))sna(ga,Mn)?(N[Q]=ga,N[sn]=F,Q=sn):(N[Q]=Mn,N[it]=F,Q=it);else if(sna(ga,F))N[Q]=ga,N[sn]=F,Q=sn;else break e}}return A}function a(N,A){var F=N.sortIndex-A.sortIndex;return F!==0?F:N.id-A.id}if(typeof performance=="object"&&typeof performance.now=="function"){var l=performance;e.unstable_now=function(){return l.now()}}else{var o=Date,i=o.now();e.unstable_now=function(){return o.now()-i}}var s=[],u=[],f=1,c=null,m=3,y=!1,w=!1,x=!1,b=typeof setTimeout=="function"?setTimeout:null,p=typeof clearTimeout=="function"?clearTimeout:null,d=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function h(N){for(var A=n(u);A!==null;){if(A.callback===null)r(u);else if(A.startTime<=N)r(u),A.sortIndex=A.expirationTime,t(s,A);else break;A=n(u)}}function k(N){if(x=!1,h(N),!w)if(n(s)!==null)w=!0,_(C);else{var A=n(u);A!==null&&I(k,A.startTime-N)}}function C(N,A){w=!1,x&&(x=!1,p(L),L=-1),y=!0;var F=m;try{for(h(A),c=n(s);c!==null&&(!(c.expirationTime>A)||N&&!we());){var Q=c.callback;if(typeof Q=="function"){c.callback=null,m=c.priorityLevel;var ie=Q(c.expirationTime<=A);A=e.unstable_now(),typeof ie=="function"?c.callback=ie:c===n(s)&&r(s),h(A)}else r(s);c=n(s)}if(c!==null)var on=!0;else{var it=n(u);it!==null&&I(k,it.startTime-A),on=!1}return on}finally{c=null,m=F,y=!1}}var M=!1,O=null,L=-1,G=5,j=-1;function we(){return!(e.unstable_now()-jN||125Q?(N.sortIndex=F,t(u,N),n(s)===null&&N===n(u)&&(x?(p(L),L=-1):x=!0,I(k,F-Q))):(N.sortIndex=ie,t(s,N),w||y||(w=!0,_(C))),N},e.unstable_shouldYield=we,e.unstable_wrapCallback=function(N){var A=m;return function(){var F=m;m=A;try{return N.apply(this,arguments)}finally{m=F}}}})(tf);ef.exports=tf;var vm=ef.exports;/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var ym=ee,De=vm;function E(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),To=Object.prototype.hasOwnProperty,wm=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,Zs={},Ys={};function xm(e){return To.call(Ys,e)?!0:To.call(Zs,e)?!1:wm.test(e)?Ys[e]=!0:(Zs[e]=!0,!1)}function km(e,t,n,r){if(n!==null&&n.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return r?!1:n!==null?!n.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function Sm(e,t,n,r){if(t===null||typeof t>"u"||km(e,t,n,r))return!0;if(r)return!1;if(n!==null)switch(n.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function _e(e,t,n,r,a,l,o){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=r,this.attributeNamespace=a,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=l,this.removeEmptyString=o}var ye={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){ye[e]=new _e(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];ye[t]=new _e(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){ye[e]=new _e(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){ye[e]=new _e(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){ye[e]=new _e(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){ye[e]=new _e(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){ye[e]=new _e(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){ye[e]=new _e(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){ye[e]=new _e(e,5,!1,e.toLowerCase(),null,!1,!1)});var Vi=/[\-:]([a-z])/g;function Bi(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(Vi,Bi);ye[t]=new _e(t,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(Vi,Bi);ye[t]=new _e(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(Vi,Bi);ye[t]=new _e(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){ye[e]=new _e(e,1,!1,e.toLowerCase(),null,!1,!1)});ye.xlinkHref=new _e("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){ye[e]=new _e(e,1,!1,e.toLowerCase(),null,!0,!0)});function $i(e,t,n,r){var a=ye.hasOwnProperty(t)?ye[t]:null;(a!==null?a.type!==0:r||!(2i||a[o]!==l[i]){var s=` +`+a[o].replace(" at new "," at ");return e.displayName&&s.includes("")&&(s=s.replace("",e.displayName)),s}while(1<=o&&0<=i);break}}}finally{Yl=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?Cr(e):""}function Em(e){switch(e.tag){case 5:return Cr(e.type);case 16:return Cr("Lazy");case 13:return Cr("Suspense");case 19:return Cr("SuspenseList");case 0:case 2:case 15:return e=Xl(e.type,!1),e;case 11:return e=Xl(e.type.render,!1),e;case 1:return e=Xl(e.type,!0),e;default:return""}}function Lo(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case In:return"Fragment";case Ln:return"Portal";case Mo:return"Profiler";case Hi:return"StrictMode";case Oo:return"Suspense";case Po:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case af:return(e.displayName||"Context")+".Consumer";case rf:return(e._context.displayName||"Context")+".Provider";case Gi:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case Zi:return t=e.displayName||null,t!==null?t:Lo(e.type)||"Memo";case Rt:t=e._payload,e=e._init;try{return Lo(e(t))}catch{}}return null}function Cm(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return Lo(t);case 8:return t===Hi?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function Qt(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function of(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function Nm(e){var t=of(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var a=n.get,l=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return a.call(this)},set:function(o){r=""+o,l.call(this,o)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(o){r=""+o},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function wa(e){e._valueTracker||(e._valueTracker=Nm(e))}function sf(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=of(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function Qa(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function Io(e,t){var n=t.checked;return re({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function Ks(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=Qt(t.value!=null?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function uf(e,t){t=t.checked,t!=null&&$i(e,"checked",t,!1)}function Ao(e,t){uf(e,t);var n=Qt(t.value),r=t.type;if(n!=null)r==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(r==="submit"||r==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?zo(e,t.type,n):t.hasOwnProperty("defaultValue")&&zo(e,t.type,Qt(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function Qs(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!(r!=="submit"&&r!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function zo(e,t,n){(t!=="number"||Qa(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var Nr=Array.isArray;function Gn(e,t,n,r){if(e=e.options,t){t={};for(var a=0;a"+t.valueOf().toString()+"",t=xa.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function Br(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var Or={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},bm=["Webkit","ms","Moz","O"];Object.keys(Or).forEach(function(e){bm.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),Or[t]=Or[e]})});function pf(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||Or.hasOwnProperty(e)&&Or[e]?(""+t).trim():t+"px"}function mf(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf("--")===0,a=pf(n,t[n],r);n==="float"&&(n="cssFloat"),r?e.setProperty(n,a):e[n]=a}}var _m=re({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function jo(e,t){if(t){if(_m[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(E(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(E(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(E(61))}if(t.style!=null&&typeof t.style!="object")throw Error(E(62))}}function Do(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var Uo=null;function Yi(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var Wo=null,Zn=null,Yn=null;function eu(e){if(e=fa(e)){if(typeof Wo!="function")throw Error(E(280));var t=e.stateNode;t&&(t=Ol(t),Wo(e.stateNode,e.type,t))}}function hf(e){Zn?Yn?Yn.push(e):Yn=[e]:Zn=e}function gf(){if(Zn){var e=Zn,t=Yn;if(Yn=Zn=null,eu(e),t)for(e=0;e>>=0,e===0?32:31-(jm(e)/Dm|0)|0}var ka=64,Sa=4194304;function br(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function tl(e,t){var n=e.pendingLanes;if(n===0)return 0;var r=0,a=e.suspendedLanes,l=e.pingedLanes,o=n&268435455;if(o!==0){var i=o&~a;i!==0?r=br(i):(l&=o,l!==0&&(r=br(l)))}else o=n&~a,o!==0?r=br(o):l!==0&&(r=br(l));if(r===0)return 0;if(t!==0&&t!==r&&!(t&a)&&(a=r&-r,l=t&-t,a>=l||a===16&&(l&4194240)!==0))return t;if(r&4&&(r|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=r;0n;n++)t.push(e);return t}function ua(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-rt(t),e[t]=n}function Bm(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0=Lr),uu=" ",cu=!1;function Rf(e,t){switch(e){case"keyup":return vh.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Ff(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var An=!1;function wh(e,t){switch(e){case"compositionend":return Ff(t);case"keypress":return t.which!==32?null:(cu=!0,uu);case"textInput":return e=t.data,e===uu&&cu?null:e;default:return null}}function xh(e,t){if(An)return e==="compositionend"||!ns&&Rf(e,t)?(e=Af(),Da=qi=Ut=null,An=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=mu(n)}}function Wf(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Wf(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Vf(){for(var e=window,t=Qa();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=Qa(e.document)}return t}function rs(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function Mh(e){var t=Vf(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&Wf(n.ownerDocument.documentElement,n)){if(r!==null&&rs(n)){if(t=r.start,e=r.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var a=n.textContent.length,l=Math.min(r.start,a);r=r.end===void 0?l:Math.min(r.end,a),!e.extend&&l>r&&(a=r,r=l,l=a),a=hu(n,l);var o=hu(n,r);a&&o&&(e.rangeCount!==1||e.anchorNode!==a.node||e.anchorOffset!==a.offset||e.focusNode!==o.node||e.focusOffset!==o.offset)&&(t=t.createRange(),t.setStart(a.node,a.offset),e.removeAllRanges(),l>r?(e.addRange(t),e.extend(o.node,o.offset)):(t.setEnd(o.node,o.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,zn=null,Zo=null,Ar=null,Yo=!1;function gu(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Yo||zn==null||zn!==Qa(r)||(r=zn,"selectionStart"in r&&rs(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),Ar&&Xr(Ar,r)||(Ar=r,r=al(Zo,"onSelect"),0jn||(e.current=ei[jn],ei[jn]=null,jn--)}function H(e,t){jn++,ei[jn]=e.current,e.current=t}var Jt={},Ee=rn(Jt),Oe=rn(!1),xn=Jt;function er(e,t){var n=e.type.contextTypes;if(!n)return Jt;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var a={},l;for(l in n)a[l]=t[l];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=a),a}function Pe(e){return e=e.childContextTypes,e!=null}function ol(){X(Oe),X(Ee)}function Eu(e,t,n){if(Ee.current!==Jt)throw Error(E(168));H(Ee,t),H(Oe,n)}function Qf(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var a in r)if(!(a in t))throw Error(E(108,Cm(e)||"Unknown",a));return re({},n,r)}function il(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Jt,xn=Ee.current,H(Ee,e),H(Oe,Oe.current),!0}function Cu(e,t,n){var r=e.stateNode;if(!r)throw Error(E(169));n?(e=Qf(e,t,xn),r.__reactInternalMemoizedMergedChildContext=e,X(Oe),X(Ee),H(Ee,e)):X(Oe),H(Oe,n)}var xt=null,Pl=!1,uo=!1;function Jf(e){xt===null?xt=[e]:xt.push(e)}function Wh(e){Pl=!0,Jf(e)}function an(){if(!uo&&xt!==null){uo=!0;var e=0,t=$;try{var n=xt;for($=1;e>=o,a-=o,kt=1<<32-rt(t)+a|n<L?(G=O,O=null):G=O.sibling;var j=m(p,O,h[L],k);if(j===null){O===null&&(O=G);break}e&&O&&j.alternate===null&&t(p,O),d=l(j,d,L),M===null?C=j:M.sibling=j,M=j,O=G}if(L===h.length)return n(p,O),J&&cn(p,L),C;if(O===null){for(;LL?(G=O,O=null):G=O.sibling;var we=m(p,O,j.value,k);if(we===null){O===null&&(O=G);break}e&&O&&we.alternate===null&&t(p,O),d=l(we,d,L),M===null?C=we:M.sibling=we,M=we,O=G}if(j.done)return n(p,O),J&&cn(p,L),C;if(O===null){for(;!j.done;L++,j=h.next())j=c(p,j.value,k),j!==null&&(d=l(j,d,L),M===null?C=j:M.sibling=j,M=j);return J&&cn(p,L),C}for(O=r(p,O);!j.done;L++,j=h.next())j=y(O,p,L,j.value,k),j!==null&&(e&&j.alternate!==null&&O.delete(j.key===null?L:j.key),d=l(j,d,L),M===null?C=j:M.sibling=j,M=j);return e&&O.forEach(function(ot){return t(p,ot)}),J&&cn(p,L),C}function b(p,d,h,k){if(typeof h=="object"&&h!==null&&h.type===In&&h.key===null&&(h=h.props.children),typeof h=="object"&&h!==null){switch(h.$$typeof){case ya:e:{for(var C=h.key,M=d;M!==null;){if(M.key===C){if(C=h.type,C===In){if(M.tag===7){n(p,M.sibling),d=a(M,h.props.children),d.return=p,p=d;break e}}else if(M.elementType===C||typeof C=="object"&&C!==null&&C.$$typeof===Rt&&_u(C)===M.type){n(p,M.sibling),d=a(M,h.props),d.ref=yr(p,M,h),d.return=p,p=d;break e}n(p,M);break}else t(p,M);M=M.sibling}h.type===In?(d=vn(h.props.children,p.mode,k,h.key),d.return=p,p=d):(k=Za(h.type,h.key,h.props,null,p.mode,k),k.ref=yr(p,d,h),k.return=p,p=k)}return o(p);case Ln:e:{for(M=h.key;d!==null;){if(d.key===M)if(d.tag===4&&d.stateNode.containerInfo===h.containerInfo&&d.stateNode.implementation===h.implementation){n(p,d.sibling),d=a(d,h.children||[]),d.return=p,p=d;break e}else{n(p,d);break}else t(p,d);d=d.sibling}d=yo(h,p.mode,k),d.return=p,p=d}return o(p);case Rt:return M=h._init,b(p,d,M(h._payload),k)}if(Nr(h))return w(p,d,h,k);if(pr(h))return x(p,d,h,k);Ma(p,h)}return typeof h=="string"&&h!==""||typeof h=="number"?(h=""+h,d!==null&&d.tag===6?(n(p,d.sibling),d=a(d,h),d.return=p,p=d):(n(p,d),d=vo(h,p.mode,k),d.return=p,p=d),o(p)):n(p,d)}return b}var nr=nd(!0),rd=nd(!1),cl=rn(null),fl=null,Wn=null,is=null;function ss(){is=Wn=fl=null}function us(e){var t=cl.current;X(cl),e._currentValue=t}function ri(e,t,n){for(;e!==null;){var r=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,r!==null&&(r.childLanes|=t)):r!==null&&(r.childLanes&t)!==t&&(r.childLanes|=t),e===n)break;e=e.return}}function Kn(e,t){fl=e,is=Wn=null,e=e.dependencies,e!==null&&e.firstContext!==null&&(e.lanes&t&&(Me=!0),e.firstContext=null)}function Ye(e){var t=e._currentValue;if(is!==e)if(e={context:e,memoizedValue:t,next:null},Wn===null){if(fl===null)throw Error(E(308));Wn=e,fl.dependencies={lanes:0,firstContext:e}}else Wn=Wn.next=e;return t}var mn=null;function cs(e){mn===null?mn=[e]:mn.push(e)}function ad(e,t,n,r){var a=t.interleaved;return a===null?(n.next=n,cs(t)):(n.next=a.next,a.next=n),t.interleaved=n,_t(e,r)}function _t(e,t){e.lanes|=t;var n=e.alternate;for(n!==null&&(n.lanes|=t),n=e,e=e.return;e!==null;)e.childLanes|=t,n=e.alternate,n!==null&&(n.childLanes|=t),n=e,e=e.return;return n.tag===3?n.stateNode:null}var Ft=!1;function fs(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function ld(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function Ct(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function Zt(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,B&2){var a=r.pending;return a===null?t.next=t:(t.next=a.next,a.next=t),r.pending=t,_t(e,n)}return a=r.interleaved,a===null?(t.next=t,cs(r)):(t.next=a.next,a.next=t),r.interleaved=t,_t(e,n)}function Wa(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,(n&4194240)!==0)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,Ki(e,n)}}function Tu(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var a=null,l=null;if(n=n.firstBaseUpdate,n!==null){do{var o={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};l===null?a=l=o:l=l.next=o,n=n.next}while(n!==null);l===null?a=l=t:l=l.next=t}else a=l=t;n={baseState:r.baseState,firstBaseUpdate:a,lastBaseUpdate:l,shared:r.shared,effects:r.effects},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function dl(e,t,n,r){var a=e.updateQueue;Ft=!1;var l=a.firstBaseUpdate,o=a.lastBaseUpdate,i=a.shared.pending;if(i!==null){a.shared.pending=null;var s=i,u=s.next;s.next=null,o===null?l=u:o.next=u,o=s;var f=e.alternate;f!==null&&(f=f.updateQueue,i=f.lastBaseUpdate,i!==o&&(i===null?f.firstBaseUpdate=u:i.next=u,f.lastBaseUpdate=s))}if(l!==null){var c=a.baseState;o=0,f=u=s=null,i=l;do{var m=i.lane,y=i.eventTime;if((r&m)===m){f!==null&&(f=f.next={eventTime:y,lane:0,tag:i.tag,payload:i.payload,callback:i.callback,next:null});e:{var w=e,x=i;switch(m=t,y=n,x.tag){case 1:if(w=x.payload,typeof w=="function"){c=w.call(y,c,m);break e}c=w;break e;case 3:w.flags=w.flags&-65537|128;case 0:if(w=x.payload,m=typeof w=="function"?w.call(y,c,m):w,m==null)break e;c=re({},c,m);break e;case 2:Ft=!0}}i.callback!==null&&i.lane!==0&&(e.flags|=64,m=a.effects,m===null?a.effects=[i]:m.push(i))}else y={eventTime:y,lane:m,tag:i.tag,payload:i.payload,callback:i.callback,next:null},f===null?(u=f=y,s=c):f=f.next=y,o|=m;if(i=i.next,i===null){if(i=a.shared.pending,i===null)break;m=i,i=m.next,m.next=null,a.lastBaseUpdate=m,a.shared.pending=null}}while(!0);if(f===null&&(s=c),a.baseState=s,a.firstBaseUpdate=u,a.lastBaseUpdate=f,t=a.shared.interleaved,t!==null){a=t;do o|=a.lane,a=a.next;while(a!==t)}else l===null&&(a.shared.lanes=0);En|=o,e.lanes=o,e.memoizedState=c}}function Mu(e,t,n){if(e=t.effects,t.effects=null,e!==null)for(t=0;tn?n:4,e(!0);var r=fo.transition;fo.transition={};try{e(!1),t()}finally{$=n,fo.transition=r}}function Sd(){return Xe().memoizedState}function Hh(e,t,n){var r=Xt(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},Ed(e))Cd(t,n);else if(n=ad(e,t,n,r),n!==null){var a=Ne();at(n,e,r,a),Nd(n,t,r)}}function Gh(e,t,n){var r=Xt(e),a={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(Ed(e))Cd(t,a);else{var l=e.alternate;if(e.lanes===0&&(l===null||l.lanes===0)&&(l=t.lastRenderedReducer,l!==null))try{var o=t.lastRenderedState,i=l(o,n);if(a.hasEagerState=!0,a.eagerState=i,lt(i,o)){var s=t.interleaved;s===null?(a.next=a,cs(t)):(a.next=s.next,s.next=a),t.interleaved=a;return}}catch{}finally{}n=ad(e,t,a,r),n!==null&&(a=Ne(),at(n,e,r,a),Nd(n,t,r))}}function Ed(e){var t=e.alternate;return e===ne||t!==null&&t===ne}function Cd(e,t){zr=ml=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Nd(e,t,n){if(n&4194240){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,Ki(e,n)}}var hl={readContext:Ye,useCallback:xe,useContext:xe,useEffect:xe,useImperativeHandle:xe,useInsertionEffect:xe,useLayoutEffect:xe,useMemo:xe,useReducer:xe,useRef:xe,useState:xe,useDebugValue:xe,useDeferredValue:xe,useTransition:xe,useMutableSource:xe,useSyncExternalStore:xe,useId:xe,unstable_isNewReconciler:!1},Zh={readContext:Ye,useCallback:function(e,t){return ut().memoizedState=[e,t===void 0?null:t],e},useContext:Ye,useEffect:Pu,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,Ba(4194308,4,vd.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Ba(4194308,4,e,t)},useInsertionEffect:function(e,t){return Ba(4,2,e,t)},useMemo:function(e,t){var n=ut();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=ut();return t=n!==void 0?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=Hh.bind(null,ne,e),[r.memoizedState,e]},useRef:function(e){var t=ut();return e={current:e},t.memoizedState=e},useState:Ou,useDebugValue:ws,useDeferredValue:function(e){return ut().memoizedState=e},useTransition:function(){var e=Ou(!1),t=e[0];return e=$h.bind(null,e[1]),ut().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=ne,a=ut();if(J){if(n===void 0)throw Error(E(407));n=n()}else{if(n=t(),he===null)throw Error(E(349));Sn&30||ud(r,t,n)}a.memoizedState=n;var l={value:n,getSnapshot:t};return a.queue=l,Pu(fd.bind(null,r,l,e),[e]),r.flags|=2048,ra(9,cd.bind(null,r,l,n,t),void 0,null),n},useId:function(){var e=ut(),t=he.identifierPrefix;if(J){var n=St,r=kt;n=(r&~(1<<32-rt(r)-1)).toString(32)+n,t=":"+t+"R"+n,n=ta++,0<\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=o.createElement(n,{is:r.is}):(e=o.createElement(n),n==="select"&&(o=e,r.multiple?o.multiple=!0:r.size&&(o.size=r.size))):e=o.createElementNS(e,n),e[ft]=t,e[Jr]=r,zd(e,t,!1,!1),t.stateNode=e;e:{switch(o=Do(n,r),n){case"dialog":Z("cancel",e),Z("close",e),a=r;break;case"iframe":case"object":case"embed":Z("load",e),a=r;break;case"video":case"audio":for(a=0;a<_r.length;a++)Z(_r[a],e);a=r;break;case"source":Z("error",e),a=r;break;case"img":case"image":case"link":Z("error",e),Z("load",e),a=r;break;case"details":Z("toggle",e),a=r;break;case"input":Ks(e,r),a=Io(e,r),Z("invalid",e);break;case"option":a=r;break;case"select":e._wrapperState={wasMultiple:!!r.multiple},a=re({},r,{value:void 0}),Z("invalid",e);break;case"textarea":Js(e,r),a=Ro(e,r),Z("invalid",e);break;default:a=r}jo(n,a),i=a;for(l in i)if(i.hasOwnProperty(l)){var s=i[l];l==="style"?mf(e,s):l==="dangerouslySetInnerHTML"?(s=s?s.__html:void 0,s!=null&&df(e,s)):l==="children"?typeof s=="string"?(n!=="textarea"||s!=="")&&Br(e,s):typeof s=="number"&&Br(e,""+s):l!=="suppressContentEditableWarning"&&l!=="suppressHydrationWarning"&&l!=="autoFocus"&&(Vr.hasOwnProperty(l)?s!=null&&l==="onScroll"&&Z("scroll",e):s!=null&&$i(e,l,s,o))}switch(n){case"input":wa(e),Qs(e,r,!1);break;case"textarea":wa(e),qs(e);break;case"option":r.value!=null&&e.setAttribute("value",""+Qt(r.value));break;case"select":e.multiple=!!r.multiple,l=r.value,l!=null?Gn(e,!!r.multiple,l,!1):r.defaultValue!=null&&Gn(e,!!r.multiple,r.defaultValue,!0);break;default:typeof a.onClick=="function"&&(e.onclick=ll)}switch(n){case"button":case"input":case"select":case"textarea":r=!!r.autoFocus;break e;case"img":r=!0;break e;default:r=!1}}r&&(t.flags|=4)}t.ref!==null&&(t.flags|=512,t.flags|=2097152)}return ke(t),null;case 6:if(e&&t.stateNode!=null)Fd(e,t,e.memoizedProps,r);else{if(typeof r!="string"&&t.stateNode===null)throw Error(E(166));if(n=hn(ea.current),hn(gt.current),Ta(t)){if(r=t.stateNode,n=t.memoizedProps,r[ft]=t,(l=r.nodeValue!==n)&&(e=Re,e!==null))switch(e.tag){case 3:_a(r.nodeValue,n,(e.mode&1)!==0);break;case 5:e.memoizedProps.suppressHydrationWarning!==!0&&_a(r.nodeValue,n,(e.mode&1)!==0)}l&&(t.flags|=4)}else r=(n.nodeType===9?n:n.ownerDocument).createTextNode(r),r[ft]=t,t.stateNode=r}return ke(t),null;case 13:if(X(te),r=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(J&&ze!==null&&t.mode&1&&!(t.flags&128))td(),tr(),t.flags|=98560,l=!1;else if(l=Ta(t),r!==null&&r.dehydrated!==null){if(e===null){if(!l)throw Error(E(318));if(l=t.memoizedState,l=l!==null?l.dehydrated:null,!l)throw Error(E(317));l[ft]=t}else tr(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;ke(t),l=!1}else nt!==null&&(wi(nt),nt=null),l=!0;if(!l)return t.flags&65536?t:null}return t.flags&128?(t.lanes=n,t):(r=r!==null,r!==(e!==null&&e.memoizedState!==null)&&r&&(t.child.flags|=8192,t.mode&1&&(e===null||te.current&1?de===0&&(de=3):bs())),t.updateQueue!==null&&(t.flags|=4),ke(t),null);case 4:return rr(),fi(e,t),e===null&&Kr(t.stateNode.containerInfo),ke(t),null;case 10:return us(t.type._context),ke(t),null;case 17:return Pe(t.type)&&ol(),ke(t),null;case 19:if(X(te),l=t.memoizedState,l===null)return ke(t),null;if(r=(t.flags&128)!==0,o=l.rendering,o===null)if(r)wr(l,!1);else{if(de!==0||e!==null&&e.flags&128)for(e=t.child;e!==null;){if(o=pl(e),o!==null){for(t.flags|=128,wr(l,!1),r=o.updateQueue,r!==null&&(t.updateQueue=r,t.flags|=4),t.subtreeFlags=0,r=n,n=t.child;n!==null;)l=n,e=r,l.flags&=14680066,o=l.alternate,o===null?(l.childLanes=0,l.lanes=e,l.child=null,l.subtreeFlags=0,l.memoizedProps=null,l.memoizedState=null,l.updateQueue=null,l.dependencies=null,l.stateNode=null):(l.childLanes=o.childLanes,l.lanes=o.lanes,l.child=o.child,l.subtreeFlags=0,l.deletions=null,l.memoizedProps=o.memoizedProps,l.memoizedState=o.memoizedState,l.updateQueue=o.updateQueue,l.type=o.type,e=o.dependencies,l.dependencies=e===null?null:{lanes:e.lanes,firstContext:e.firstContext}),n=n.sibling;return H(te,te.current&1|2),t.child}e=e.sibling}l.tail!==null&&ue()>lr&&(t.flags|=128,r=!0,wr(l,!1),t.lanes=4194304)}else{if(!r)if(e=pl(o),e!==null){if(t.flags|=128,r=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),wr(l,!0),l.tail===null&&l.tailMode==="hidden"&&!o.alternate&&!J)return ke(t),null}else 2*ue()-l.renderingStartTime>lr&&n!==1073741824&&(t.flags|=128,r=!0,wr(l,!1),t.lanes=4194304);l.isBackwards?(o.sibling=t.child,t.child=o):(n=l.last,n!==null?n.sibling=o:t.child=o,l.last=o)}return l.tail!==null?(t=l.tail,l.rendering=t,l.tail=t.sibling,l.renderingStartTime=ue(),t.sibling=null,n=te.current,H(te,r?n&1|2:n&1),t):(ke(t),null);case 22:case 23:return Ns(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&t.mode&1?Ie&1073741824&&(ke(t),t.subtreeFlags&6&&(t.flags|=8192)):ke(t),null;case 24:return null;case 25:return null}throw Error(E(156,t.tag))}function tg(e,t){switch(ls(t),t.tag){case 1:return Pe(t.type)&&ol(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return rr(),X(Oe),X(Ee),ms(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return ps(t),null;case 13:if(X(te),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(E(340));tr()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return X(te),null;case 4:return rr(),null;case 10:return us(t.type._context),null;case 22:case 23:return Ns(),null;case 24:return null;default:return null}}var Pa=!1,Se=!1,ng=typeof WeakSet=="function"?WeakSet:Set,T=null;function Vn(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){oe(e,t,r)}else n.current=null}function di(e,t,n){try{n()}catch(r){oe(e,t,r)}}var Vu=!1;function rg(e,t){if(Xo=nl,e=Vf(),rs(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var a=r.anchorOffset,l=r.focusNode;r=r.focusOffset;try{n.nodeType,l.nodeType}catch{n=null;break e}var o=0,i=-1,s=-1,u=0,f=0,c=e,m=null;t:for(;;){for(var y;c!==n||a!==0&&c.nodeType!==3||(i=o+a),c!==l||r!==0&&c.nodeType!==3||(s=o+r),c.nodeType===3&&(o+=c.nodeValue.length),(y=c.firstChild)!==null;)m=c,c=y;for(;;){if(c===e)break t;if(m===n&&++u===a&&(i=o),m===l&&++f===r&&(s=o),(y=c.nextSibling)!==null)break;c=m,m=c.parentNode}c=y}n=i===-1||s===-1?null:{start:i,end:s}}else n=null}n=n||{start:0,end:0}}else n=null;for(Ko={focusedElem:e,selectionRange:n},nl=!1,T=t;T!==null;)if(t=T,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,T=e;else for(;T!==null;){t=T;try{var w=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(w!==null){var x=w.memoizedProps,b=w.memoizedState,p=t.stateNode,d=p.getSnapshotBeforeUpdate(t.elementType===t.type?x:qe(t.type,x),b);p.__reactInternalSnapshotBeforeUpdate=d}break;case 3:var h=t.stateNode.containerInfo;h.nodeType===1?h.textContent="":h.nodeType===9&&h.documentElement&&h.removeChild(h.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(E(163))}}catch(k){oe(t,t.return,k)}if(e=t.sibling,e!==null){e.return=t.return,T=e;break}T=t.return}return w=Vu,Vu=!1,w}function Rr(e,t,n){var r=t.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var a=r=r.next;do{if((a.tag&e)===e){var l=a.destroy;a.destroy=void 0,l!==void 0&&di(t,n,l)}a=a.next}while(a!==r)}}function Al(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function pi(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function jd(e){var t=e.alternate;t!==null&&(e.alternate=null,jd(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[ft],delete t[Jr],delete t[qo],delete t[Dh],delete t[Uh])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function Dd(e){return e.tag===5||e.tag===3||e.tag===4}function Bu(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||Dd(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function mi(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=ll));else if(r!==4&&(e=e.child,e!==null))for(mi(e,t,n),e=e.sibling;e!==null;)mi(e,t,n),e=e.sibling}function hi(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(hi(e,t,n),e=e.sibling;e!==null;)hi(e,t,n),e=e.sibling}var ge=null,tt=!1;function At(e,t,n){for(n=n.child;n!==null;)Ud(e,t,n),n=n.sibling}function Ud(e,t,n){if(ht&&typeof ht.onCommitFiberUnmount=="function")try{ht.onCommitFiberUnmount(bl,n)}catch{}switch(n.tag){case 5:Se||Vn(n,t);case 6:var r=ge,a=tt;ge=null,At(e,t,n),ge=r,tt=a,ge!==null&&(tt?(e=ge,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):ge.removeChild(n.stateNode));break;case 18:ge!==null&&(tt?(e=ge,n=n.stateNode,e.nodeType===8?so(e.parentNode,n):e.nodeType===1&&so(e,n),Zr(e)):so(ge,n.stateNode));break;case 4:r=ge,a=tt,ge=n.stateNode.containerInfo,tt=!0,At(e,t,n),ge=r,tt=a;break;case 0:case 11:case 14:case 15:if(!Se&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){a=r=r.next;do{var l=a,o=l.destroy;l=l.tag,o!==void 0&&(l&2||l&4)&&di(n,t,o),a=a.next}while(a!==r)}At(e,t,n);break;case 1:if(!Se&&(Vn(n,t),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(i){oe(n,t,i)}At(e,t,n);break;case 21:At(e,t,n);break;case 22:n.mode&1?(Se=(r=Se)||n.memoizedState!==null,At(e,t,n),Se=r):At(e,t,n);break;default:At(e,t,n)}}function $u(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new ng),t.forEach(function(r){var a=dg.bind(null,e,r);n.has(r)||(n.add(r),r.then(a,a))})}}function Ke(e,t){var n=t.deletions;if(n!==null)for(var r=0;ra&&(a=o),r&=~l}if(r=a,r=ue()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*lg(r/1960))-r,10e?16:e,Wt===null)var r=!1;else{if(e=Wt,Wt=null,yl=0,B&6)throw Error(E(331));var a=B;for(B|=4,T=e.current;T!==null;){var l=T,o=l.child;if(T.flags&16){var i=l.deletions;if(i!==null){for(var s=0;sue()-Es?gn(e,0):Ss|=n),Le(e,t)}function Yd(e,t){t===0&&(e.mode&1?(t=Sa,Sa<<=1,!(Sa&130023424)&&(Sa=4194304)):t=1);var n=Ne();e=_t(e,t),e!==null&&(ua(e,t,n),Le(e,n))}function fg(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),Yd(e,n)}function dg(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,a=e.memoizedState;a!==null&&(n=a.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(E(314))}r!==null&&r.delete(t),Yd(e,n)}var Xd;Xd=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||Oe.current)Me=!0;else{if(!(e.lanes&n)&&!(t.flags&128))return Me=!1,qh(e,t,n);Me=!!(e.flags&131072)}else Me=!1,J&&t.flags&1048576&&qf(t,ul,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;$a(e,t),e=t.pendingProps;var a=er(t,Ee.current);Kn(t,n),a=gs(null,t,r,e,a,n);var l=vs();return t.flags|=1,typeof a=="object"&&a!==null&&typeof a.render=="function"&&a.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,Pe(r)?(l=!0,il(t)):l=!1,t.memoizedState=a.state!==null&&a.state!==void 0?a.state:null,fs(t),a.updater=Il,t.stateNode=a,a._reactInternals=t,li(t,r,e,n),t=si(null,t,r,!0,l,n)):(t.tag=0,J&&l&&as(t),Ce(null,t,a,n),t=t.child),t;case 16:r=t.elementType;e:{switch($a(e,t),e=t.pendingProps,a=r._init,r=a(r._payload),t.type=r,a=t.tag=mg(r),e=qe(r,e),a){case 0:t=ii(null,t,r,e,n);break e;case 1:t=Du(null,t,r,e,n);break e;case 11:t=Fu(null,t,r,e,n);break e;case 14:t=ju(null,t,r,qe(r.type,e),n);break e}throw Error(E(306,r,""))}return t;case 0:return r=t.type,a=t.pendingProps,a=t.elementType===r?a:qe(r,a),ii(e,t,r,a,n);case 1:return r=t.type,a=t.pendingProps,a=t.elementType===r?a:qe(r,a),Du(e,t,r,a,n);case 3:e:{if(Ld(t),e===null)throw Error(E(387));r=t.pendingProps,l=t.memoizedState,a=l.element,ld(e,t),dl(t,r,null,n);var o=t.memoizedState;if(r=o.element,l.isDehydrated)if(l={element:r,isDehydrated:!1,cache:o.cache,pendingSuspenseBoundaries:o.pendingSuspenseBoundaries,transitions:o.transitions},t.updateQueue.baseState=l,t.memoizedState=l,t.flags&256){a=ar(Error(E(423)),t),t=Uu(e,t,r,n,a);break e}else if(r!==a){a=ar(Error(E(424)),t),t=Uu(e,t,r,n,a);break e}else for(ze=Gt(t.stateNode.containerInfo.firstChild),Re=t,J=!0,nt=null,n=rd(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(tr(),r===a){t=Tt(e,t,n);break e}Ce(e,t,r,n)}t=t.child}return t;case 5:return od(t),e===null&&ni(t),r=t.type,a=t.pendingProps,l=e!==null?e.memoizedProps:null,o=a.children,Qo(r,a)?o=null:l!==null&&Qo(r,l)&&(t.flags|=32),Pd(e,t),Ce(e,t,o,n),t.child;case 6:return e===null&&ni(t),null;case 13:return Id(e,t,n);case 4:return ds(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=nr(t,null,r,n):Ce(e,t,r,n),t.child;case 11:return r=t.type,a=t.pendingProps,a=t.elementType===r?a:qe(r,a),Fu(e,t,r,a,n);case 7:return Ce(e,t,t.pendingProps,n),t.child;case 8:return Ce(e,t,t.pendingProps.children,n),t.child;case 12:return Ce(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,a=t.pendingProps,l=t.memoizedProps,o=a.value,H(cl,r._currentValue),r._currentValue=o,l!==null)if(lt(l.value,o)){if(l.children===a.children&&!Oe.current){t=Tt(e,t,n);break e}}else for(l=t.child,l!==null&&(l.return=t);l!==null;){var i=l.dependencies;if(i!==null){o=l.child;for(var s=i.firstContext;s!==null;){if(s.context===r){if(l.tag===1){s=Ct(-1,n&-n),s.tag=2;var u=l.updateQueue;if(u!==null){u=u.shared;var f=u.pending;f===null?s.next=s:(s.next=f.next,f.next=s),u.pending=s}}l.lanes|=n,s=l.alternate,s!==null&&(s.lanes|=n),ri(l.return,n,t),i.lanes|=n;break}s=s.next}}else if(l.tag===10)o=l.type===t.type?null:l.child;else if(l.tag===18){if(o=l.return,o===null)throw Error(E(341));o.lanes|=n,i=o.alternate,i!==null&&(i.lanes|=n),ri(o,n,t),o=l.sibling}else o=l.child;if(o!==null)o.return=l;else for(o=l;o!==null;){if(o===t){o=null;break}if(l=o.sibling,l!==null){l.return=o.return,o=l;break}o=o.return}l=o}Ce(e,t,a.children,n),t=t.child}return t;case 9:return a=t.type,r=t.pendingProps.children,Kn(t,n),a=Ye(a),r=r(a),t.flags|=1,Ce(e,t,r,n),t.child;case 14:return r=t.type,a=qe(r,t.pendingProps),a=qe(r.type,a),ju(e,t,r,a,n);case 15:return Md(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,a=t.pendingProps,a=t.elementType===r?a:qe(r,a),$a(e,t),t.tag=1,Pe(r)?(e=!0,il(t)):e=!1,Kn(t,n),bd(t,r,a),li(t,r,a,n),si(null,t,r,!0,e,n);case 19:return Ad(e,t,n);case 22:return Od(e,t,n)}throw Error(E(156,t.tag))};function Kd(e,t){return Ef(e,t)}function pg(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Ge(e,t,n,r){return new pg(e,t,n,r)}function _s(e){return e=e.prototype,!(!e||!e.isReactComponent)}function mg(e){if(typeof e=="function")return _s(e)?1:0;if(e!=null){if(e=e.$$typeof,e===Gi)return 11;if(e===Zi)return 14}return 2}function Kt(e,t){var n=e.alternate;return n===null?(n=Ge(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Za(e,t,n,r,a,l){var o=2;if(r=e,typeof e=="function")_s(e)&&(o=1);else if(typeof e=="string")o=5;else e:switch(e){case In:return vn(n.children,a,l,t);case Hi:o=8,a|=8;break;case Mo:return e=Ge(12,n,t,a|2),e.elementType=Mo,e.lanes=l,e;case Oo:return e=Ge(13,n,t,a),e.elementType=Oo,e.lanes=l,e;case Po:return e=Ge(19,n,t,a),e.elementType=Po,e.lanes=l,e;case lf:return Rl(n,a,l,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case rf:o=10;break e;case af:o=9;break e;case Gi:o=11;break e;case Zi:o=14;break e;case Rt:o=16,r=null;break e}throw Error(E(130,e==null?e:typeof e,""))}return t=Ge(o,n,t,a),t.elementType=e,t.type=r,t.lanes=l,t}function vn(e,t,n,r){return e=Ge(7,e,r,t),e.lanes=n,e}function Rl(e,t,n,r){return e=Ge(22,e,r,t),e.elementType=lf,e.lanes=n,e.stateNode={isHidden:!1},e}function vo(e,t,n){return e=Ge(6,e,null,t),e.lanes=n,e}function yo(e,t,n){return t=Ge(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function hg(e,t,n,r,a){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Ql(0),this.expirationTimes=Ql(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Ql(0),this.identifierPrefix=r,this.onRecoverableError=a,this.mutableSourceEagerHydrationData=null}function Ts(e,t,n,r,a,l,o,i,s){return e=new hg(e,t,n,i,s),t===1?(t=1,l===!0&&(t|=8)):t=0,l=Ge(3,null,null,t),e.current=l,l.stateNode=e,l.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},fs(l),e}function gg(e,t,n){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(ep)}catch(e){console.error(e)}}ep(),qc.exports=Ue;var kg=qc.exports,Ju=kg;_o.createRoot=Ju.createRoot,_o.hydrateRoot=Ju.hydrateRoot;var v=Object.freeze({Text:"Text",NumericLiteral:"NumericLiteral",BooleanLiteral:"BooleanLiteral",StringLiteral:"StringLiteral",Identifier:"Identifier",Equals:"Equals",OpenParen:"OpenParen",CloseParen:"CloseParen",OpenStatement:"OpenStatement",CloseStatement:"CloseStatement",OpenExpression:"OpenExpression",CloseExpression:"CloseExpression",OpenSquareBracket:"OpenSquareBracket",CloseSquareBracket:"CloseSquareBracket",OpenCurlyBracket:"OpenCurlyBracket",CloseCurlyBracket:"CloseCurlyBracket",Comma:"Comma",Dot:"Dot",Colon:"Colon",Pipe:"Pipe",CallOperator:"CallOperator",AdditiveBinaryOperator:"AdditiveBinaryOperator",MultiplicativeBinaryOperator:"MultiplicativeBinaryOperator",ComparisonBinaryOperator:"ComparisonBinaryOperator",UnaryOperator:"UnaryOperator",Set:"Set",If:"If",For:"For",In:"In",Is:"Is",NotIn:"NotIn",Else:"Else",EndIf:"EndIf",ElseIf:"ElseIf",EndFor:"EndFor",And:"And",Or:"Or",Not:"UnaryOperator"}),qu=Object.freeze({set:v.Set,for:v.For,in:v.In,is:v.Is,if:v.If,else:v.Else,endif:v.EndIf,elif:v.ElseIf,endfor:v.EndFor,and:v.And,or:v.Or,not:v.Not,"not in":v.NotIn,true:v.BooleanLiteral,false:v.BooleanLiteral}),un=class{constructor(e,t){this.value=e,this.type=t}};function ec(e){return/\w/.test(e)}function wo(e){return/[0-9]/.test(e)}var Sg=[["{%",v.OpenStatement],["%}",v.CloseStatement],["{{",v.OpenExpression],["}}",v.CloseExpression],["(",v.OpenParen],[")",v.CloseParen],["{",v.OpenCurlyBracket],["}",v.CloseCurlyBracket],["[",v.OpenSquareBracket],["]",v.CloseSquareBracket],[",",v.Comma],[".",v.Dot],[":",v.Colon],["|",v.Pipe],["<=",v.ComparisonBinaryOperator],[">=",v.ComparisonBinaryOperator],["==",v.ComparisonBinaryOperator],["!=",v.ComparisonBinaryOperator],["<",v.ComparisonBinaryOperator],[">",v.ComparisonBinaryOperator],["+",v.AdditiveBinaryOperator],["-",v.AdditiveBinaryOperator],["*",v.MultiplicativeBinaryOperator],["/",v.MultiplicativeBinaryOperator],["%",v.MultiplicativeBinaryOperator],["=",v.Equals]],Eg=new Map([["n",` +`],["t"," "],["r","\r"],["b","\b"],["f","\f"],["v","\v"],["'","'"],['"','"'],["\\","\\"]]);function Cg(e,t={}){return e.endsWith(` +`)&&(e=e.slice(0,-1)),e=e.replace(/{#.*?#}/gs,"{##}"),t.lstrip_blocks&&(e=e.replace(/^[ \t]*({[#%])/gm,"$1")),t.trim_blocks&&(e=e.replace(/([#%]})\n/g,"$1")),e.replace(/{##}/g,"").replace(/-%}\s*/g,"%}").replace(/\s*{%-/g,"{%").replace(/-}}\s*/g,"}}").replace(/\s*{{-/g,"{{")}function Ng(e,t={}){var o,i,s;const n=[],r=Cg(e,t);let a=0;const l=u=>{let f="";for(;u(r[a]);){if(r[a]==="\\"){if(++a,a>=r.length)throw new SyntaxError("Unexpected end of input");const c=r[a++],m=Eg.get(c);if(m===void 0)throw new SyntaxError(`Unexpected escaped character: ${c}`);f+=m;continue}if(f+=r[a++],a>=r.length)throw new SyntaxError("Unexpected end of input")}return f};e:for(;a0){n.push(new un(c,v.Text));continue}}l(c=>/\s/.test(c));const f=r[a];if(f==="-"||f==="+"){const c=(i=n.at(-1))==null?void 0:i.type;if(c===v.Text||c===void 0)throw new SyntaxError(`Unexpected character: ${f}`);switch(c){case v.Identifier:case v.NumericLiteral:case v.BooleanLiteral:case v.StringLiteral:case v.CloseParen:case v.CloseSquareBracket:break;default:{++a;const m=l(wo);n.push(new un(`${f}${m}`,m.length>0?v.NumericLiteral:v.UnaryOperator));continue}}}for(const[c,m]of Sg)if(r.slice(a,a+c.length)===c){n.push(new un(c,m)),a+=c.length;continue e}if(f==="'"||f==='"'){++a;const c=l(m=>m!==f);n.push(new un(c,v.StringLiteral)),++a;continue}if(wo(f)){const c=l(wo);n.push(new un(c,v.NumericLiteral));continue}if(ec(f)){const c=l(ec),m=Object.hasOwn(qu,c)?qu[c]:v.Identifier;m===v.In&&((s=n.at(-1))==null?void 0:s.type)===v.Not?(n.pop(),n.push(new un("not in",v.NotIn))):n.push(new un(c,m));continue}throw new SyntaxError(`Unexpected character: ${f}`)}return n}var pa=class{constructor(){R(this,"type","Statement")}},bg=class extends pa{constructor(t){super();R(this,"type","Program");this.body=t}},tc=class extends pa{constructor(t,n,r){super();R(this,"type","If");this.test=t,this.body=n,this.alternate=r}},_g=class extends pa{constructor(t,n,r){super();R(this,"type","For");this.loopvar=t,this.iterable=n,this.body=r}},Tg=class extends pa{constructor(t,n){super();R(this,"type","Set");this.assignee=t,this.value=n}},yt=class extends pa{constructor(){super(...arguments);R(this,"type","Expression")}},Mg=class extends yt{constructor(t,n,r){super();R(this,"type","MemberExpression");this.object=t,this.property=n,this.computed=r}},Og=class extends yt{constructor(t,n){super();R(this,"type","CallExpression");this.callee=t,this.args=n}},Pn=class extends yt{constructor(t){super();R(this,"type","Identifier");this.value=t}},fr=class extends yt{constructor(t){super();R(this,"type","Literal");this.value=t}},Pg=class extends fr{constructor(){super(...arguments);R(this,"type","NumericLiteral")}},nc=class extends fr{constructor(){super(...arguments);R(this,"type","StringLiteral")}},rc=class extends fr{constructor(){super(...arguments);R(this,"type","BooleanLiteral")}},Lg=class extends fr{constructor(){super(...arguments);R(this,"type","ArrayLiteral")}},ac=class extends fr{constructor(){super(...arguments);R(this,"type","TupleLiteral")}},Ig=class extends fr{constructor(){super(...arguments);R(this,"type","ObjectLiteral")}},kr=class extends yt{constructor(t,n,r){super();R(this,"type","BinaryExpression");this.operator=t,this.left=n,this.right=r}},Ag=class extends yt{constructor(t,n){super();R(this,"type","FilterExpression");this.operand=t,this.filter=n}},zg=class extends yt{constructor(t,n,r){super();R(this,"type","TestExpression");this.operand=t,this.negate=n,this.test=r}},Rg=class extends yt{constructor(t,n){super();R(this,"type","UnaryExpression");this.operator=t,this.argument=n}},Fg=class extends yt{constructor(t=void 0,n=void 0,r=void 0){super();R(this,"type","SliceExpression");this.start=t,this.stop=n,this.step=r}},jg=class extends yt{constructor(t,n){super();R(this,"type","KeywordArgumentExpression");this.key=t,this.value=n}};function Dg(e){const t=new bg([]);let n=0;function r(S,_){const I=e[n++];if(!I||I.type!==S)throw new Error(`Parser Error: ${_}. ${I.type} !== ${S}.`);return I}function a(){switch(e[n].type){case v.Text:return i();case v.OpenStatement:return s();case v.OpenExpression:return u();default:throw new SyntaxError(`Unexpected token type: ${e[n].type}`)}}function l(...S){return n+S.length<=e.length&&S.some((_,I)=>_!==e[n+I].type)}function o(...S){return n+S.length<=e.length&&S.every((_,I)=>_===e[n+I].type)}function i(){return new nc(r(v.Text,"Expected text token").value)}function s(){r(v.OpenStatement,"Expected opening statement token");let S;switch(e[n].type){case v.Set:++n,S=f(),r(v.CloseStatement,"Expected closing statement token");break;case v.If:++n,S=c(),r(v.OpenStatement,"Expected {% token"),r(v.EndIf,"Expected endif token"),r(v.CloseStatement,"Expected %} token");break;case v.For:++n,S=y(),r(v.OpenStatement,"Expected {% token"),r(v.EndFor,"Expected endfor token"),r(v.CloseStatement,"Expected %} token");break;default:throw new SyntaxError(`Unknown statement type: ${e[n].type}`)}return S}function u(){r(v.OpenExpression,"Expected opening expression token");const S=w();return r(v.CloseExpression,"Expected closing expression token"),S}function f(){const S=w();if(o(v.Equals)){++n;const _=f();return new Tg(S,_)}return S}function c(){var N,A,F,Q,ie,on,it,Mn;const S=w();r(v.CloseStatement,"Expected closing statement token");const _=[],I=[];for(;!(((N=e[n])==null?void 0:N.type)===v.OpenStatement&&(((A=e[n+1])==null?void 0:A.type)===v.ElseIf||((F=e[n+1])==null?void 0:F.type)===v.Else||((Q=e[n+1])==null?void 0:Q.type)===v.EndIf));)_.push(a());if(((ie=e[n])==null?void 0:ie.type)===v.OpenStatement&&((on=e[n+1])==null?void 0:on.type)!==v.EndIf)if(++n,o(v.ElseIf))r(v.ElseIf,"Expected elseif token"),I.push(c());else for(r(v.Else,"Expected else token"),r(v.CloseStatement,"Expected closing statement token");!(((it=e[n])==null?void 0:it.type)===v.OpenStatement&&((Mn=e[n+1])==null?void 0:Mn.type)===v.EndIf);)I.push(a());return new tc(S,_,I)}function m(S=!1){const _=S?V:w,I=[_()],N=o(v.Comma);for(;N&&(++n,I.push(_()),!!o(v.Comma)););return N?new ac(I):I[0]}function y(){const S=m(!0);if(!(S instanceof Pn||S instanceof ac))throw new SyntaxError(`Expected identifier/tuple for the loop variable, got ${S.type} instead`);r(v.In,"Expected `in` keyword following loop variable");const _=w();r(v.CloseStatement,"Expected closing statement token");const I=[];for(;l(v.OpenStatement,v.EndFor);)I.push(a());return new _g(S,_,I)}function w(){return x()}function x(){const S=b();if(o(v.If)){++n;const _=b();r(v.Else,"Expected else token");const I=b();return new tc(_,[S],[I])}return S}function b(){let S=p();for(;o(v.Or);){const _=e[n];++n;const I=p();S=new kr(_,S,I)}return S}function p(){let S=d();for(;o(v.And);){const _=e[n];++n;const I=d();S=new kr(_,S,I)}return S}function d(){let S;for(;o(v.Not);){const _=e[n];++n;const I=d();S=new Rg(_,I)}return S??h()}function h(){let S=k();for(;o(v.ComparisonBinaryOperator)||o(v.In)||o(v.NotIn);){const _=e[n];++n;const I=k();S=new kr(_,S,I)}return S}function k(){let S=we();for(;o(v.AdditiveBinaryOperator);){const _=e[n];++n;const I=we();S=new kr(_,S,I)}return S}function C(){const S=j();return o(v.OpenParen)?M(S):S}function M(S){let _=new Og(S,O());return o(v.OpenParen)&&(_=M(_)),_}function O(){r(v.OpenParen,"Expected opening parenthesis for arguments list");const S=L();return r(v.CloseParen,"Expected closing parenthesis for arguments list"),S}function L(){const S=[];for(;!o(v.CloseParen);){let _=w();if(o(v.Equals)){if(++n,!(_ instanceof Pn))throw new SyntaxError("Expected identifier for keyword argument");const I=w();_=new jg(_,I)}S.push(_),o(v.Comma)&&++n}return S}function G(){const S=[];let _=!1;for(;!o(v.CloseSquareBracket);)o(v.Colon)?(S.push(void 0),++n,_=!0):(S.push(w()),o(v.Colon)&&(++n,_=!0));if(S.length===0)throw new SyntaxError("Expected at least one argument for member/slice expression");if(_){if(S.length>3)throw new SyntaxError("Expected 0-3 arguments for slice expression");return new Fg(...S)}return S[0]}function j(){let S=V();for(;o(v.Dot)||o(v.OpenSquareBracket);){const _=e[n];++n;let I;const N=_.type!==v.Dot;if(N)I=G(),r(v.CloseSquareBracket,"Expected closing square bracket");else if(I=V(),I.type!=="Identifier")throw new SyntaxError("Expected identifier following dot operator");S=new Mg(S,I,N)}return S}function we(){let S=ot();for(;o(v.MultiplicativeBinaryOperator);){const _=e[n];++n;const I=ot();S=new kr(_,S,I)}return S}function ot(){let S=z();for(;o(v.Is);){++n;const _=o(v.Not);_&&++n;let I=V();if(I instanceof rc&&(I=new Pn(I.value.toString())),!(I instanceof Pn))throw new SyntaxError("Expected identifier for the test");S=new zg(S,_,I)}return S}function z(){let S=C();for(;o(v.Pipe);){++n;let _=V();if(!(_ instanceof Pn))throw new SyntaxError("Expected identifier for the filter");o(v.OpenParen)&&(_=M(_)),S=new Ag(S,_)}return S}function V(){const S=e[n];switch(S.type){case v.NumericLiteral:return++n,new Pg(Number(S.value));case v.StringLiteral:return++n,new nc(S.value);case v.BooleanLiteral:return++n,new rc(S.value==="true");case v.Identifier:return++n,new Pn(S.value);case v.OpenParen:{++n;const _=m();if(e[n].type!==v.CloseParen)throw new SyntaxError(`Expected closing parenthesis, got ${e[n].type} instead`);return++n,_}case v.OpenSquareBracket:{++n;const _=[];for(;!o(v.CloseSquareBracket);)_.push(w()),o(v.Comma)&&++n;return++n,new Lg(_)}case v.OpenCurlyBracket:{++n;const _=new Map;for(;!o(v.CloseCurlyBracket);){const I=w();r(v.Colon,"Expected colon between key and value in object literal");const N=w();_.set(I,N),o(v.Comma)&&++n}return++n,new Ig(_)}default:throw new SyntaxError(`Unexpected token: ${S.type}`)}}for(;n=0?(t=(t??(t=0))<0?Math.max(e.length+t,0):Math.min(t,e.length),n=(n??(n=e.length))<0?Math.max(e.length+n,0):Math.min(n,e.length)):(t=(t??(t=e.length-1))<0?Math.max(e.length+t,-1):Math.min(t,e.length-1),n=(n??(n=-1))<-1?Math.max(e.length+n,-1):Math.min(n,e.length-1));const l=[];for(let o=t;a*ot.toUpperCase())}var Lt=class{constructor(e=void 0){R(this,"type","RuntimeValue");R(this,"value");R(this,"builtins",new Map);this.value=e}__bool__(){return new se(!!this.value)}},Y=class extends Lt{constructor(){super(...arguments);R(this,"type","NumericValue")}},W=class extends Lt{constructor(){super(...arguments);R(this,"type","StringValue");R(this,"builtins",new Map([["upper",new Et(()=>new W(this.value.toUpperCase()))],["lower",new Et(()=>new W(this.value.toLowerCase()))],["strip",new Et(()=>new W(this.value.trim()))],["title",new Et(()=>new W(tp(this.value)))],["length",new Y(this.value.length)]]))}},se=class extends Lt{constructor(){super(...arguments);R(this,"type","BooleanValue")}},et=class extends Lt{constructor(){super(...arguments);R(this,"type","ObjectValue");R(this,"builtins",new Map([["get",new Et(([t,n])=>{if(!(t instanceof W))throw new Error(`Object key must be a string: got ${t.type}`);return this.value.get(t.value)??n??new Dr})],["items",new Et(()=>new ae(Array.from(this.value.entries()).map(([t,n])=>new ae([new W(t),n]))))]]))}__bool__(){return new se(this.value.size>0)}},ae=class extends Lt{constructor(){super(...arguments);R(this,"type","ArrayValue");R(this,"builtins",new Map([["length",new Y(this.value.length)]]))}__bool__(){return new se(this.value.length>0)}},Wg=class extends ae{constructor(){super(...arguments);R(this,"type","TupleValue")}},Et=class extends Lt{constructor(){super(...arguments);R(this,"type","FunctionValue")}},Dr=class extends Lt{constructor(){super(...arguments);R(this,"type","NullValue")}},Qe=class extends Lt{constructor(){super(...arguments);R(this,"type","UndefinedValue")}},xi=class{constructor(e){R(this,"variables",new Map([["namespace",new Et(e=>{if(e.length===0)return new et(new Map);if(e.length!==1||!(e[0]instanceof et))throw new Error("`namespace` expects either zero arguments or a single object argument");return e[0]})]]));R(this,"tests",new Map([["boolean",e=>e.type==="BooleanValue"],["callable",e=>e instanceof Et],["odd",e=>{if(e.type!=="NumericValue")throw new Error(`Cannot apply test "odd" to type: ${e.type}`);return e.value%2!==0}],["even",e=>{if(e.type!=="NumericValue")throw new Error(`Cannot apply test "even" to type: ${e.type}`);return e.value%2===0}],["false",e=>e.type==="BooleanValue"&&!e.value],["true",e=>e.type==="BooleanValue"&&e.value],["number",e=>e.type==="NumericValue"],["integer",e=>e.type==="NumericValue"&&Number.isInteger(e.value)],["iterable",e=>e instanceof ae||e instanceof W],["lower",e=>{const t=e.value;return e.type==="StringValue"&&t===t.toLowerCase()}],["upper",e=>{const t=e.value;return e.type==="StringValue"&&t===t.toUpperCase()}],["none",e=>e.type==="NullValue"],["defined",e=>e.type!=="UndefinedValue"],["undefined",e=>e.type==="UndefinedValue"],["equalto",(e,t)=>e.value===t.value]]));this.parent=e}set(e,t){return this.declareVariable(e,Ya(t))}declareVariable(e,t){if(this.variables.has(e))throw new SyntaxError(`Variable already declared: ${e}`);return this.variables.set(e,t),t}setVariable(e,t){return this.variables.set(e,t),t}resolve(e){if(this.variables.has(e))return this;if(this.parent)return this.parent.resolve(e);throw new Error(`Unknown variable: ${e}`)}lookupVariable(e){try{return this.resolve(e).variables.get(e)??new Qe}catch{return new Qe}}},Vg=class{constructor(e){R(this,"global");this.global=e??new xi}run(e){return this.evaluate(e,this.global)}evaluateBinaryExpression(e,t){const n=this.evaluate(e.left,t);switch(e.operator.value){case"and":return n.__bool__().value?this.evaluate(e.right,t):n;case"or":return n.__bool__().value?n:this.evaluate(e.right,t)}const r=this.evaluate(e.right,t);switch(e.operator.value){case"==":return new se(n.value==r.value);case"!=":return new se(n.value!=r.value)}if(n instanceof Qe||r instanceof Qe)throw new Error("Cannot perform operation on undefined values");if(n instanceof Dr||r instanceof Dr)throw new Error("Cannot perform operation on null values");if(n instanceof Y&&r instanceof Y)switch(e.operator.value){case"+":return new Y(n.value+r.value);case"-":return new Y(n.value-r.value);case"*":return new Y(n.value*r.value);case"/":return new Y(n.value/r.value);case"%":return new Y(n.value%r.value);case"<":return new se(n.value":return new se(n.value>r.value);case">=":return new se(n.value>=r.value);case"<=":return new se(n.value<=r.value)}else if(n instanceof ae&&r instanceof ae)switch(e.operator.value){case"+":return new ae(n.value.concat(r.value))}else if(r instanceof ae){const a=r.value.find(l=>l.value===n.value)!==void 0;switch(e.operator.value){case"in":return new se(a);case"not in":return new se(!a)}}if(n instanceof W||r instanceof W)switch(e.operator.value){case"+":return new W(n.value.toString()+r.value.toString())}if(n instanceof W&&r instanceof W)switch(e.operator.value){case"in":return new se(r.value.includes(n.value));case"not in":return new se(!r.value.includes(n.value))}if(n instanceof W&&r instanceof et)switch(e.operator.value){case"in":return new se(r.value.has(n.value));case"not in":return new se(!r.value.has(n.value))}throw new SyntaxError(`Unknown operator "${e.operator.value}" between ${n.type} and ${r.type}`)}evaluateFilterExpression(e,t){const n=this.evaluate(e.operand,t);if(e.filter.type==="Identifier"){const r=e.filter;if(n instanceof ae)switch(r.value){case"list":return n;case"first":return n.value[0];case"last":return n.value[n.value.length-1];case"length":return new Y(n.value.length);case"reverse":return new ae(n.value.reverse());case"sort":return new ae(n.value.sort((a,l)=>{if(a.type!==l.type)throw new Error(`Cannot compare different types: ${a.type} and ${l.type}`);switch(a.type){case"NumericValue":return a.value-l.value;case"StringValue":return a.value.localeCompare(l.value);default:throw new Error(`Cannot compare type: ${a.type}`)}}));default:throw new Error(`Unknown ArrayValue filter: ${r.value}`)}else if(n instanceof W)switch(r.value){case"length":return new Y(n.value.length);case"upper":return new W(n.value.toUpperCase());case"lower":return new W(n.value.toLowerCase());case"title":return new W(tp(n.value));case"capitalize":return new W(n.value.charAt(0).toUpperCase()+n.value.slice(1));case"trim":return new W(n.value.trim());default:throw new Error(`Unknown StringValue filter: ${r.value}`)}else if(n instanceof Y)switch(r.value){case"abs":return new Y(Math.abs(n.value));default:throw new Error(`Unknown NumericValue filter: ${r.value}`)}else if(n instanceof et)switch(r.value){case"items":return new ae(Array.from(n.value.entries()).map(([a,l])=>new ae([new W(a),l])));case"length":return new Y(n.value.size);default:throw new Error(`Unknown ObjectValue filter: ${r.value}`)}throw new Error(`Cannot apply filter "${r.value}" to type: ${n.type}`)}else if(e.filter.type==="CallExpression"){const r=e.filter;if(r.callee.type!=="Identifier")throw new Error(`Unknown filter: ${r.callee.type}`);const a=r.callee.value;if(n instanceof ae){switch(a){case"selectattr":{if(n.value.some(f=>!(f instanceof et)))throw new Error("`selectattr` can only be applied to array of objects");if(r.args.some(f=>f.type!=="StringLiteral"))throw new Error("arguments of `selectattr` must be strings");const[l,o,i]=r.args.map(f=>this.evaluate(f,t));let s;if(o){const f=t.tests.get(o.value);if(!f)throw new Error(`Unknown test: ${o.value}`);s=f}else s=(...f)=>f[0].__bool__().value;const u=n.value.filter(f=>{const c=f.value.get(l.value);return c?s(c,i):!1});return new ae(u)}}throw new Error(`Unknown ArrayValue filter: ${a}`)}else throw new Error(`Cannot apply filter "${a}" to type: ${n.type}`)}throw new Error(`Unknown filter: ${e.filter.type}`)}evaluateTestExpression(e,t){const n=this.evaluate(e.operand,t),r=t.tests.get(e.test.value);if(!r)throw new Error(`Unknown test: ${e.test.value}`);const a=r(n);return new se(e.negate?!a:a)}evaluateUnaryExpression(e,t){const n=this.evaluate(e.argument,t);switch(e.operator.value){case"not":return new se(!n.value);default:throw new SyntaxError(`Unknown operator: ${e.operator.value}`)}}evalProgram(e,t){return this.evaluateBlock(e.body,t)}evaluateBlock(e,t){let n="";for(const r of e){const a=this.evaluate(r,t);a.type!=="NullValue"&&a.type!=="UndefinedValue"&&(n+=a.value)}return new W(n)}evaluateIdentifier(e,t){return t.lookupVariable(e.value)}evaluateCallExpression(e,t){const n=[],r=new Map;for(const l of e.args)if(l.type==="KeywordArgumentExpression"){const o=l;r.set(o.key.value,this.evaluate(o.value,t))}else n.push(this.evaluate(l,t));r.size>0&&n.push(new et(r));const a=this.evaluate(e.callee,t);if(a.type!=="FunctionValue")throw new Error(`Cannot call something that is not a function: got ${a.type}`);return a.value(n,t)}evaluateSliceExpression(e,t,n){if(!(e instanceof ae||e instanceof W))throw new Error("Slice object must be an array or string");const r=this.evaluate(t.start,n),a=this.evaluate(t.stop,n),l=this.evaluate(t.step,n);if(!(r instanceof Y||r instanceof Qe))throw new Error("Slice start must be numeric or undefined");if(!(a instanceof Y||a instanceof Qe))throw new Error("Slice stop must be numeric or undefined");if(!(l instanceof Y||l instanceof Qe))throw new Error("Slice step must be numeric or undefined");return e instanceof ae?new ae(lc(e.value,r.value,a.value,l.value)):new W(lc(Array.from(e.value),r.value,a.value,l.value).join(""))}evaluateMemberExpression(e,t){const n=this.evaluate(e.object,t);let r;if(e.computed){if(e.property.type==="SliceExpression")return this.evaluateSliceExpression(n,e.property,t);r=this.evaluate(e.property,t)}else r=new W(e.property.value);let a;if(n instanceof et){if(!(r instanceof W))throw new Error(`Cannot access property with non-string: got ${r.type}`);a=n.value.get(r.value)??n.builtins.get(r.value)}else if(n instanceof ae||n instanceof W)if(r instanceof Y)a=n.value.at(r.value),n instanceof W&&(a=new W(n.value.at(r.value)));else if(r instanceof W)a=n.builtins.get(r.value);else throw new Error(`Cannot access property with non-string/non-number: got ${r.type}`);else{if(!(r instanceof W))throw new Error(`Cannot access property with non-string: got ${r.type}`);a=n.builtins.get(r.value)}return a instanceof Lt?a:new Qe}evaluateSet(e,t){const n=this.evaluate(e.value,t);if(e.assignee.type==="Identifier"){const r=e.assignee.value;t.setVariable(r,n)}else if(e.assignee.type==="MemberExpression"){const r=e.assignee,a=this.evaluate(r.object,t);if(!(a instanceof et))throw new Error("Cannot assign to member of non-object");if(r.property.type!=="Identifier")throw new Error("Cannot assign to member with non-identifier property");a.value.set(r.property.value,n)}else throw new Error(`Invalid LHS inside assignment expression: ${JSON.stringify(e.assignee)}`);return new Dr}evaluateIf(e,t){const n=this.evaluate(e.test,t);return this.evaluateBlock(n.__bool__().value?e.body:e.alternate,t)}evaluateFor(e,t){const n=new xi(t),r=this.evaluate(e.iterable,n);if(!(r instanceof ae))throw new Error(`Expected iterable type in for loop: got ${r.type}`);let a="";for(let l=0;l0?r.value[l-1]:new Qe],["nextitem",lf.value.length?"few":"many"} items to unpack`);for(let c=0;cthis.evaluate(n,t)));case"TupleLiteral":return new Wg(e.value.map(n=>this.evaluate(n,t)));case"ObjectLiteral":{const n=new Map;for(const[r,a]of e.value){const l=this.evaluate(r,t);if(!(l instanceof W))throw new Error(`Object keys must be strings: got ${l.type}`);n.set(l.value,this.evaluate(a,t))}return new et(n)}case"Identifier":return this.evaluateIdentifier(e,t);case"CallExpression":return this.evaluateCallExpression(e,t);case"MemberExpression":return this.evaluateMemberExpression(e,t);case"UnaryExpression":return this.evaluateUnaryExpression(e,t);case"BinaryExpression":return this.evaluateBinaryExpression(e,t);case"FilterExpression":return this.evaluateFilterExpression(e,t);case"TestExpression":return this.evaluateTestExpression(e,t);default:throw new SyntaxError(`Unknown node type: ${e.type}`)}}};function Ya(e){switch(typeof e){case"number":return new Y(e);case"string":return new W(e);case"boolean":return new se(e);case"object":return e===null?new Dr:Array.isArray(e)?new ae(e.map(Ya)):new et(new Map(Object.entries(e).map(([t,n])=>[t,Ya(n)])));case"function":return new Et((t,n)=>{const r=e(...t.map(a=>a.value))??null;return Ya(r)});default:throw new Error(`Cannot convert to runtime value: ${e}`)}}var Bg=class{constructor(e){R(this,"parsed");const t=Ng(e,{lstrip_blocks:!0,trim_blocks:!0});this.parsed=Dg(t)}render(e){const t=new xi;t.set("false",!1),t.set("true",!0),t.set("raise_exception",a=>{throw new Error(a)}),t.set("range",Ug);for(const[a,l]of Object.entries(e))t.set(a,l);return new Vg(t).run(this.parsed).value}},me=(e=>(e[e.GUIDE=0]="GUIDE",e[e.CHAT=1]="CHAT",e[e.MODEL=2]="MODEL",e))(me||{}),le=(e=>(e[e.NOT_DOWNLOADED=0]="NOT_DOWNLOADED",e[e.DOWNLOADING=1]="DOWNLOADING",e[e.READY=2]="READY",e[e.LOADING=3]="LOADING",e[e.LOADED=4]="LOADED",e))(le||{});const $g=""+new URL("wllama-COgDXShc.js",import.meta.url).href,Hg=""+new URL("wllama-DtxF20un.wasm",import.meta.url).href,Gg=""+new URL("wllama-DMDqdxXh.js",import.meta.url).href,Zg=""+new URL("wllama-DDYrFPjS.wasm",import.meta.url).href,Yg="data:text/javascript;base64,InVzZSBzdHJpY3QiO3ZhciBNb2R1bGU9e307dmFyIEVOVklST05NRU5UX0lTX05PREU9dHlwZW9mIHByb2Nlc3M9PSJvYmplY3QiJiZ0eXBlb2YgcHJvY2Vzcy52ZXJzaW9ucz09Im9iamVjdCImJnR5cGVvZiBwcm9jZXNzLnZlcnNpb25zLm5vZGU9PSJzdHJpbmciO2lmKEVOVklST05NRU5UX0lTX05PREUpe2NvbnN0e2NyZWF0ZVJlcXVpcmU6Y3JlYXRlUmVxdWlyZX09YXdhaXQgaW1wb3J0KCJtb2R1bGUiKTt2YXIgcmVxdWlyZT1jcmVhdGVSZXF1aXJlKGltcG9ydC5tZXRhLnVybCk7dmFyIG5vZGVXb3JrZXJUaHJlYWRzPXJlcXVpcmUoIndvcmtlcl90aHJlYWRzIik7dmFyIHBhcmVudFBvcnQ9bm9kZVdvcmtlclRocmVhZHMucGFyZW50UG9ydDtwYXJlbnRQb3J0Lm9uKCJtZXNzYWdlIixkYXRhPT5vbm1lc3NhZ2Uoe2RhdGE6ZGF0YX0pKTt2YXIgZnM9cmVxdWlyZSgiZnMiKTt2YXIgdm09cmVxdWlyZSgidm0iKTtPYmplY3QuYXNzaWduKGdsb2JhbCx7c2VsZjpnbG9iYWwscmVxdWlyZTpyZXF1aXJlLE1vZHVsZTpNb2R1bGUsbG9jYXRpb246e2hyZWY6dHlwZW9mIF9fZmlsZW5hbWUhPT0idW5kZWZpbmVkIj9fX2ZpbGVuYW1lOmltcG9ydC5tZXRhLnVybH0sV29ya2VyOm5vZGVXb3JrZXJUaHJlYWRzLldvcmtlcixpbXBvcnRTY3JpcHRzOmY9PnZtLnJ1bkluVGhpc0NvbnRleHQoZnMucmVhZEZpbGVTeW5jKGYsInV0ZjgiKSx7ZmlsZW5hbWU6Zn0pLHBvc3RNZXNzYWdlOm1zZz0+cGFyZW50UG9ydC5wb3N0TWVzc2FnZShtc2cpLHBlcmZvcm1hbmNlOmdsb2JhbC5wZXJmb3JtYW5jZXx8e25vdzpEYXRlLm5vd319KX12YXIgaW5pdGlhbGl6ZWRKUz1mYWxzZTtmdW5jdGlvbiB0aHJlYWRQcmludEVyciguLi5hcmdzKXt2YXIgdGV4dD1hcmdzLmpvaW4oIiAiKTtpZihFTlZJUk9OTUVOVF9JU19OT0RFKXtmcy53cml0ZVN5bmMoMix0ZXh0KyJcbiIpO3JldHVybn1jb25zb2xlLmVycm9yKHRleHQpfWZ1bmN0aW9uIHRocmVhZEFsZXJ0KC4uLmFyZ3Mpe3ZhciB0ZXh0PWFyZ3Muam9pbigiICIpO3Bvc3RNZXNzYWdlKHtjbWQ6ImFsZXJ0Iix0ZXh0OnRleHQsdGhyZWFkSWQ6TW9kdWxlWyJfcHRocmVhZF9zZWxmIl0oKX0pfXZhciBlcnI9dGhyZWFkUHJpbnRFcnI7c2VsZi5hbGVydD10aHJlYWRBbGVydDtNb2R1bGVbImluc3RhbnRpYXRlV2FzbSJdPShpbmZvLHJlY2VpdmVJbnN0YW5jZSk9Pnt2YXIgbW9kdWxlPU1vZHVsZVsid2FzbU1vZHVsZSJdO01vZHVsZVsid2FzbU1vZHVsZSJdPW51bGw7dmFyIGluc3RhbmNlPW5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUsaW5mbyk7cmV0dXJuIHJlY2VpdmVJbnN0YW5jZShpbnN0YW5jZSl9O3NlbGYub251bmhhbmRsZWRyZWplY3Rpb249ZT0+e3Rocm93IGUucmVhc29ufHxlfTtmdW5jdGlvbiBoYW5kbGVNZXNzYWdlKGUpe3RyeXtpZihlLmRhdGEuY21kPT09ImxvYWQiKXtsZXQgbWVzc2FnZVF1ZXVlPVtdO3NlbGYub25tZXNzYWdlPWU9Pm1lc3NhZ2VRdWV1ZS5wdXNoKGUpO3NlbGYuc3RhcnRXb3JrZXI9aW5zdGFuY2U9PntNb2R1bGU9aW5zdGFuY2U7cG9zdE1lc3NhZ2UoeyJjbWQiOiJsb2FkZWQifSk7Zm9yKGxldCBtc2cgb2YgbWVzc2FnZVF1ZXVlKXtoYW5kbGVNZXNzYWdlKG1zZyl9c2VsZi5vbm1lc3NhZ2U9aGFuZGxlTWVzc2FnZX07TW9kdWxlWyJ3YXNtTW9kdWxlIl09ZS5kYXRhLndhc21Nb2R1bGU7Zm9yKGNvbnN0IGhhbmRsZXIgb2YgZS5kYXRhLmhhbmRsZXJzKXtNb2R1bGVbaGFuZGxlcl09KC4uLmFyZ3MpPT57cG9zdE1lc3NhZ2Uoe2NtZDoiY2FsbEhhbmRsZXIiLGhhbmRsZXI6aGFuZGxlcixhcmdzOmFyZ3N9KX19TW9kdWxlWyJ3YXNtTWVtb3J5Il09ZS5kYXRhLndhc21NZW1vcnk7TW9kdWxlWyJidWZmZXIiXT1Nb2R1bGVbIndhc21NZW1vcnkiXS5idWZmZXI7TW9kdWxlWyJFTlZJUk9OTUVOVF9JU19QVEhSRUFEIl09dHJ1ZTsoZS5kYXRhLnVybE9yQmxvYj9pbXBvcnQoZS5kYXRhLnVybE9yQmxvYik6aW1wb3J0KCIuL3dsbGFtYS5qcyIpKS50aGVuKGV4cG9ydHM9PmV4cG9ydHMuZGVmYXVsdChNb2R1bGUpKX1lbHNlIGlmKGUuZGF0YS5jbWQ9PT0icnVuIil7TW9kdWxlWyJfX2Vtc2NyaXB0ZW5fdGhyZWFkX2luaXQiXShlLmRhdGEucHRocmVhZF9wdHIsMCwwLDEpO01vZHVsZVsiX19lbXNjcmlwdGVuX3RocmVhZF9tYWlsYm94X2F3YWl0Il0oZS5kYXRhLnB0aHJlYWRfcHRyKTtNb2R1bGVbImVzdGFibGlzaFN0YWNrU3BhY2UiXSgpO01vZHVsZVsiUFRocmVhZCJdLnJlY2VpdmVPYmplY3RUcmFuc2ZlcihlLmRhdGEpO01vZHVsZVsiUFRocmVhZCJdLnRocmVhZEluaXRUTFMoKTtpZighaW5pdGlhbGl6ZWRKUyl7aW5pdGlhbGl6ZWRKUz10cnVlfXRyeXtNb2R1bGVbImludm9rZUVudHJ5UG9pbnQiXShlLmRhdGEuc3RhcnRfcm91dGluZSxlLmRhdGEuYXJnKX1jYXRjaChleCl7aWYoZXghPSJ1bndpbmQiKXt0aHJvdyBleH19fWVsc2UgaWYoZS5kYXRhLmNtZD09PSJjYW5jZWwiKXtpZihNb2R1bGVbIl9wdGhyZWFkX3NlbGYiXSgpKXtNb2R1bGVbIl9fZW1zY3JpcHRlbl90aHJlYWRfZXhpdCJdKC0xKX19ZWxzZSBpZihlLmRhdGEudGFyZ2V0PT09InNldGltbWVkaWF0ZSIpe31lbHNlIGlmKGUuZGF0YS5jbWQ9PT0iY2hlY2tNYWlsYm94Iil7aWYoaW5pdGlhbGl6ZWRKUyl7TW9kdWxlWyJjaGVja01haWxib3giXSgpfX1lbHNlIGlmKGUuZGF0YS5jbWQpe2Vycihgd29ya2VyLmpzIHJlY2VpdmVkIHVua25vd24gY29tbWFuZCAke2UuZGF0YS5jbWR9YCk7ZXJyKGUuZGF0YSl9fWNhdGNoKGV4KXtNb2R1bGVbIl9fZW1zY3JpcHRlbl90aHJlYWRfY3Jhc2hlZCJdPy4oKTt0aHJvdyBleH19c2VsZi5vbm1lc3NhZ2U9aGFuZGxlTWVzc2FnZTsK",np={"single-thread/wllama.js":$g,"single-thread/wllama.wasm":Hg,"multi-thread/wllama.js":Gg,"multi-thread/wllama.wasm":Zg,"multi-thread/wllama.worker.mjs":Yg},rp=2*1024*1024*1024,Xg=[{url:"https://huggingface.co/ngxson/wllama-split-models/resolve/main/qwen2-1_5b-instruct-q4_k_m-00001-of-00004.gguf",size:986046272},{url:"https://huggingface.co/ngxson/wllama-split-models/resolve/main/gemma-2-2b-it-abliterated-Q4_K_M-00001-of-00004.gguf",size:1708583264},{url:"https://huggingface.co/ngxson/wllama-split-models/resolve/main/neuralreyna-mini-1.8b-v0.3.q4_k_m-00001-of-00005.gguf",size:1217753472},{url:"https://huggingface.co/ngxson/wllama-split-models/resolve/main/Phi-3.1-mini-128k-instruct-Q3_K_M-00001-of-00008.gguf",size:1955478176},{url:"https://huggingface.co/ngxson/wllama-split-models/resolve/main/meta-llama-3.1-8b-instruct-abliterated.Q2_K-00001-of-00014.gguf",size:3179133600},{url:"https://huggingface.co/ngxson/wllama-split-models/resolve/main/Meta-Llama-3.1-8B-Instruct-Q2_K-00001-of-00014.gguf",size:3179138048}],ap={nThreads:-1,nContext:4096,nPredict:4096,nBatch:128,temperature:.2},Kg=`{% for message in messages %}{{'<|im_start|>' + message['role'] + ' +' + message['content'] + '<|im_end|>' + ' +'}}{% endfor %}{% if add_generation_prompt %}{{ '<|im_start|>assistant +' }}{% endif %}`,Qg=e=>ee.useEffect(()=>{e()},[]),Be={save(e,t){localStorage.setItem(e,JSON.stringify(t))},load(e,t){return localStorage[e]?JSON.parse(localStorage[e]):t}},Jg=()=>Be.load("welcome",!0)?me.GUIDE:me.MODEL,qg=async(e,t)=>new Bg(e.getChatTemplate()??Kg).render({messages:t,bos_token:await e.detokenize([e.getBOS()]),eos_token:await e.detokenize([e.getEOS()]),add_generation_prompt:!0}),e0=e=>{const t=["B","KB","MB","GB","TB","PB","EB","ZB","YB"];let n=e,r=0;for(;n>=1024&&r{const[t,n]=ee.useState(Be.load("conversations",{})),r=ee.useMemo(()=>Object.values(t).sort((f,c)=>{const m=f.messages[f.messages.length-1];return c.messages[c.messages.length-1].id-m.id}),[t]),a=f=>{n(c=>{const m=f(c);return Be.save("conversations",m),m})},l=f=>{const c={id:Date.now(),messages:[f]};return a(m=>({...m,[c.id]:c})),c},o=f=>{a(c=>{const m={...c};return delete m[f],m})},i=(f,c)=>{a(m=>{if(m[f]){const y={...m},w=y[f];return y[f].messages=[...w.messages,c],y}else return m})},s=(f,c,m)=>{a(y=>{if(y[f]){const w={...y},b=w[f].messages.map(p=>p.id===c?{...p,content:m}:p);return w[f].messages=b,w}else return y})},u=f=>t[f];return g.jsx(lp.Provider,{value:{conversations:r,newConversation:l,deleteConversation:o,addMessageToConversation:i,getConversationById:u,editMessageInConversation:s},children:e})},op=()=>ee.useContext(lp),n0=e=>{const t=e.reduce((r,a)=>r+a.length,0),n=new Uint8Array(t);n.set(e[0],0);for(let r=1;rr0.decode(e),a0=e=>{e.every(n=>!!n.name)&&e.sort((r,a)=>r.name.localeCompare(a.name))},Sr=e=>new URL(e,document.baseURI).href,xo=(e,t)=>Array(Math.max(t-String(e).length+1,0)).join("0")+e,l0=()=>(async e=>{try{return typeof MessageChannel<"u"&&new MessageChannel().port1.postMessage(new SharedArrayBuffer(1)),WebAssembly.validate(e)}catch{return!1}})(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,4,1,3,1,1,10,11,1,9,0,65,0,254,16,2,0,26,11])),o0=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,8,1,6,0,6,64,25,11,11])),i0=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11])),s0=async()=>{if(!await o0())throw new Error("WebAssembly runtime does not support exception handling");if(!await i0())throw new Error("WebAssembly runtime does not support SIMD")},u0=()=>Ls()||!!navigator.userAgent.match(/Version\/([0-9\._]+).*Safari/),Ls=()=>!!navigator.userAgent.match(/Version\/([0-9\._]+).*Mobile.*Safari.*/),c0=` +const fsNameToFile = {}; // map Name => File +const fsIdToFile = {}; // map ID => File +let currFileId = 0; + +// Patch and redirect memfs calls to wllama +const patchMEMFS = () => { + const m = wModule; + // save functions + m.MEMFS.stream_ops._read = m.MEMFS.stream_ops.read; + m.MEMFS.stream_ops._write = m.MEMFS.stream_ops.write; + m.MEMFS.stream_ops._llseek = m.MEMFS.stream_ops.llseek; + m.MEMFS.stream_ops._allocate = m.MEMFS.stream_ops.allocate; + m.MEMFS.stream_ops._mmap = m.MEMFS.stream_ops.mmap; + m.MEMFS.stream_ops._msync = m.MEMFS.stream_ops.msync; + + const patchStream = (stream) => { + const name = stream.node.name; + if (fsNameToFile[name]) { + const f = fsNameToFile[name]; + stream.node.contents = m.HEAPU8.subarray(f.ptr, f.ptr + f.size); + stream.node.usedBytes = f.size; + } + }; + + // replace "read" functions + m.MEMFS.stream_ops.read = function (stream, buffer, offset, length, position) { + patchStream(stream); + return m.MEMFS.stream_ops._read(stream, buffer, offset, length, position); + }; + m.MEMFS.ops_table.file.stream.read = m.MEMFS.stream_ops.read; + + // replace "llseek" functions + m.MEMFS.stream_ops.llseek = function (stream, offset, whence) { + patchStream(stream); + return m.MEMFS.stream_ops._llseek(stream, offset, whence); + }; + m.MEMFS.ops_table.file.stream.llseek = m.MEMFS.stream_ops.llseek; + + // replace "mmap" functions + m.MEMFS.stream_ops.mmap = function (stream, length, position, prot, flags) { + patchStream(stream); + const name = stream.node.name; + if (fsNameToFile[name]) { + const f = fsNameToFile[name]; + return { + ptr: f.ptr + position, + allocated: false, + }; + } else { + return m.MEMFS.stream_ops._mmap(stream, length, position, prot, flags); + } + }; + m.MEMFS.ops_table.file.stream.mmap = m.MEMFS.stream_ops.mmap; + + // mount FS + m.FS.mkdir('/models'); + m.FS.mount(m.MEMFS, { root: '.' }, '/models'); +}; + +// Allocate a new file in wllama heapfs, returns file ID +const heapfsAlloc = (name, size) => { + if (size < 1) { + throw new Error('File size must be bigger than 0'); + } + const m = wModule; + const ptr = m.mmapAlloc(size); + const file = { + ptr: ptr, + size: size, + id: currFileId++, + }; + fsIdToFile[file.id] = file; + fsNameToFile[name] = file; + return file.id; +}; + +// Add new file to wllama heapfs, return number of written bytes +const heapfsWrite = (id, buffer, offset) => { + const m = wModule; + if (fsIdToFile[id]) { + const { ptr, size } = fsIdToFile[id]; + const afterWriteByte = offset + buffer.byteLength; + if (afterWriteByte > size) { + throw new Error(\`File ID \${id} write out of bound, afterWriteByte = \${afterWriteByte} while size = \${size}\`); + } + m.HEAPU8.set(buffer, ptr + offset); + return buffer.byteLength; + } else { + throw new Error(\`File ID \${id} not found in heapfs\`); + } +}; +`,f0=` +// send message back to main thread +const msg = (data) => postMessage(data); + +// Convert CPP log into JS log +const cppLogToJSLog = (line) => { + const matched = line.match(/@@(DEBUG|INFO|WARN|ERROR)@@(.*)/); + return !!matched + ? { + level: (matched[1] === 'INFO' ? 'debug' : matched[1]).toLowerCase(), + text: matched[2], + } + : { level: 'log', text: line }; +}; + +// Get module config that forwards stdout/err to main thread +const getWModuleConfig = (pathConfig, pthreadPoolSize) => { + if (!pathConfig['wllama.js']) { + throw new Error('"wllama.js" is missing in pathConfig'); + } + return { + noInitialRun: true, + print: function (text) { + if (arguments.length > 1) text = Array.prototype.slice.call(arguments).join(' '); + msg({ verb: 'console.log', args: [text] }); + }, + printErr: function (text) { + if (arguments.length > 1) text = Array.prototype.slice.call(arguments).join(' '); + const logLine = cppLogToJSLog(text); + msg({ verb: 'console.' + logLine.level, args: [logLine.text] }); + }, + locateFile: function (filename, basePath) { + const p = pathConfig[filename]; + const truncate = (str) => str.length > 128 ? \`\${str.substr(0, 128)}...\` : str; + msg({ verb: 'console.debug', args: [\`Loading "\${filename}" from "\${truncate(p)}"\`] }); + return p; + }, + mainScriptUrlOrBlob: pathConfig['wllama.js'], + pthreadPoolSize, + wasmMemory: pthreadPoolSize > 1 ? getWasmMemory() : null, + onAbort: function (text) { + msg({ verb: 'signal.abort', args: [text] }); + }, + }; +}; + +// Get the memory to be used by wasm. (Only used in multi-thread mode) +// Because we have a weird OOM issue on iOS, we need to try some values +// See: https://github.com/emscripten-core/emscripten/issues/19144 +// https://github.com/godotengine/godot/issues/70621 +const getWasmMemory = () => { + let minBytes = 128 * 1024 * 1024; + let maxBytes = 4096 * 1024 * 1024; + let stepBytes = 128 * 1024 * 1024; + while (maxBytes > minBytes) { + try { + const wasmMemory = new WebAssembly.Memory({ + initial: minBytes / 65536, + maximum: maxBytes / 65536, + shared: true, + }); + return wasmMemory; + } catch (e) { + maxBytes -= stepBytes; + continue; // retry + } + } + throw new Error('Cannot allocate WebAssembly.Memory'); +}; +`,d0=` +// Start the main llama.cpp +let wModule; +let wllamaStart; +let wllamaAction; +let wllamaExit; +let wllamaDebug; + +${f0} + +${c0} + +const callWrapper = (name, ret, args) => { + const fn = wModule.cwrap(name, ret, args); + return async (action, req) => { + let result; + try { + if (args.length === 2) { + result = await fn(action, req); + } else { + result = fn(); + } + } catch (ex) { + console.error(ex); + throw ex; + } + return result; + }; +} + +onmessage = async (e) => { + if (!e.data) return; + const { verb, args, callbackId } = e.data; + + if (!callbackId) { + msg({ verb: 'console.error', args: ['callbackId is required', e.data] }); + return; + } + + if (verb === 'module.init') { + const argPathConfig = args[0]; + const argPThreadPoolSize = args[1]; + try { + const Module = ModuleWrapper(); + wModule = await Module(getWModuleConfig( + argPathConfig, + argPThreadPoolSize, + )); + + // init FS + patchMEMFS(); + + // init cwrap + wllamaStart = callWrapper('wllama_start' , 'string', []); + wllamaAction = callWrapper('wllama_action', 'string', ['string', 'string']); + wllamaExit = callWrapper('wllama_exit' , 'string', []); + wllamaDebug = callWrapper('wllama_debug' , 'string', []); + msg({ callbackId, result: null }); + + } catch (err) { + msg({ callbackId, err }); + } + return; + } + + if (verb === 'fs.alloc') { + const argFilename = args[0]; + const argSize = args[1]; + try { + // create blank file + const emptyBuffer = new ArrayBuffer(0); + wModule['FS_createDataFile']('/models', argFilename, emptyBuffer, true, true, true); + // alloc data on heap + const fileId = heapfsAlloc(argFilename, argSize); + msg({ callbackId, result: { fileId } }); + } catch (err) { + msg({ callbackId, err }); + } + return; + } + + if (verb === 'fs.write') { + const argFileId = args[0]; + const argBuffer = args[1]; + const argOffset = args[2]; + try { + const writtenBytes = heapfsWrite(argFileId, argBuffer, argOffset); + msg({ callbackId, result: { writtenBytes } }); + } catch (err) { + msg({ callbackId, err }); + } + return; + } + + if (verb === 'wllama.start') { + try { + const result = await wllamaStart(); + msg({ callbackId, result }); + } catch (err) { + msg({ callbackId, err }); + } + return; + } + + if (verb === 'wllama.action') { + const argAction = args[0]; + const argBody = args[1]; + try { + const result = await wllamaAction(argAction, argBody); + msg({ callbackId, result }); + } catch (err) { + msg({ callbackId, err }); + } + return; + } + + if (verb === 'wllama.exit') { + try { + const result = await wllamaExit(); + msg({ callbackId, result }); + } catch (err) { + msg({ callbackId, err }); + } + return; + } + + if (verb === 'wllama.debug') { + try { + const result = await wllamaDebug(); + msg({ callbackId, result }); + } catch (err) { + msg({ callbackId, err }); + } + return; + } +}; +`;class p0{constructor(t,n=1,r,a){this.taskQueue=[],this.taskId=1,this.resultQueue=[],this.busy=!1,this.pathConfig=t,this.nbThread=n,this.multiThread=n>1,this.logger=a,this.suppressNativeLog=r}async moduleInit(t){if(!this.pathConfig["wllama.js"])throw new Error('"single-thread/wllama.js" or "multi-thread/wllama.js" is missing from pathConfig');let r=(await import(this.pathConfig["wllama.js"])).default.toString();r=r.replace(/import\.meta/g,"importMeta");const a=["const importMeta = {}",`function ModuleWrapper() { + const _scriptDir = ${JSON.stringify(window.location.href)}; + return ${r}; + }`,d0].join(`; + +`),l=window.URL.createObjectURL(new Blob([a],{type:"text/javascript"}));this.worker=new Worker(l),this.worker.onmessage=this.onRecvMsg.bind(this),this.worker.onerror=this.logger.error;const o=await this.pushTask({verb:"module.init",args:[this.pathConfig,this.nbThread],callbackId:this.taskId++}),i=[];for(const s of t){const u=await this.fileAlloc(s.name,s.blob.size);i.push({id:u,...s})}return await Promise.all(i.map(s=>this.fileWrite(s.id,s.blob))),o}async wllamaStart(){const t=await this.pushTask({verb:"wllama.start",args:[],callbackId:this.taskId++});return this.parseResult(t)}async wllamaAction(t,n){const r=await this.pushTask({verb:"wllama.action",args:[t,JSON.stringify(n)],callbackId:this.taskId++});return this.parseResult(r)}async wllamaExit(){if(this.worker){const t=await this.pushTask({verb:"wllama.exit",args:[],callbackId:this.taskId++});this.parseResult(t),this.worker.terminate()}}async wllamaDebug(){const t=await this.pushTask({verb:"wllama.debug",args:[],callbackId:this.taskId++});return JSON.parse(t)}async fileAlloc(t,n){return(await this.pushTask({verb:"fs.alloc",args:[t,n],callbackId:this.taskId++})).fileId}async fileWrite(t,n){const r=n.stream().getReader();let a=0;for(;;){const{done:l,value:o}=await r.read();if(l)break;const i=o.byteLength;await this.pushTask({verb:"fs.write",args:[t,o,a],callbackId:this.taskId++},[o.buffer]),a+=i}}parseResult(t){const n=JSON.parse(t);if(n&&n.__exception)throw new Error(n.__exception);return n}pushTask(t,n){return new Promise((r,a)=>{this.taskQueue.push({resolve:r,reject:a,param:t,buffers:n}),this.runTaskLoop()})}async runTaskLoop(){if(!this.busy){for(this.busy=!0;;){const t=this.taskQueue.shift();if(!t)break;this.resultQueue.push(t),this.worker.postMessage(t.param,Ls()?void 0:{transfer:t.buffers??[]})}this.busy=!1}}onRecvMsg(t){if(!t.data)return;const{verb:n,args:r}=t.data;if(n&&n.startsWith("console.")){if(this.suppressNativeLog)return;n.endsWith("debug")&&this.logger.debug(...r),n.endsWith("log")&&this.logger.log(...r),n.endsWith("warn")&&this.logger.warn(...r),n.endsWith("error")&&this.logger.error(...r);return}else n==="signal.abort"&&this.abort(r[0]);const{callbackId:a,result:l,err:o}=t.data;if(a){const i=this.resultQueue.findIndex(s=>s.param.callbackId===a);if(i!==-1){const s=this.resultQueue.splice(i,1)[0];o?s.reject(o):s.resolve(l)}else this.logger.error(`Cannot find waiting task with callbackId = ${a}`)}}abort(t){for(;this.resultQueue.length>0;){const n=this.resultQueue.pop();if(!n)break;n.reject(new Error(`Received abort signal from llama.cpp; Message: ${t||"(empty)"}`))}}}const Er="__metadata__",ip="polyfill_for_older_version",Ae={async getNameFromURL(e){return await Wl(e,"")},async write(e,t,n){return Ae._writeMetadata(e,n),await ic(e,t)},async open(e){return await sc(e)},async getSize(e){return await m0(e)},async getMetadata(e){const t=await sc(e,Er),n=await Ae.getSize(e);if(!t)return n>0?{etag:ip,originalSize:n,originalURL:""}:null;try{return await new Response(t).json()}catch{return null}},async list(){const e=await la(),t=[],n={};for await(let[r,a]of e.entries())if(a.kind==="file"&&r.startsWith(Er)){const l=(await a.getFile()).stream(),o=await new Response(l).json().catch(i=>null);n[r.replace(Er,"")]=o}for await(let[r,a]of e.entries())a.kind==="file"&&!r.startsWith(Er)&&t.push({name:r,size:await a.getFile().then(l=>l.size),metadata:n[r]||{originalSize:(await a.getFile()).size,originalURL:"",etag:""}});return t},async clear(){await Ae.deleteMany(()=>!0)},async delete(e){const t=await Ae.getNameFromURL(e);await Ae.deleteMany(n=>n.name===e||n.name===t)},async deleteMany(e){const t=await la(),n=await Ae.list();for(const r of n)e(r)&&t.removeEntry(r.name)},async _writeMetadata(e,t){const n=new Blob([JSON.stringify(t)],{type:"text/plain"});await ic(e,n.stream(),Er)}};async function ic(e,t,n=""){try{const r=await la(),a=await Wl(e,n),l=u0()?await g0(a):await r.getFileHandle(a,{create:!0}).then(i=>i.createWritable());await l.truncate(0);const o=t.getReader();for(;;){const{done:i,value:s}=await o.read();if(i)break;await l.write(s)}await l.close()}catch(r){console.error("opfsWrite",r)}}async function sc(e,t=""){try{const n=await la(),r=await Wl(e,t);return(await(await n.getFileHandle(r)).getFile()).stream()}catch{return null}}async function m0(e,t=""){try{const n=await la(),r=await Wl(e,t);return(await(await n.getFileHandle(r)).getFile()).size}catch{return-1}}async function Wl(e,t){const n=await crypto.subtle.digest("SHA-1",new TextEncoder().encode(e)),a=Array.from(new Uint8Array(n)).map(l=>l.toString(16).padStart(2,"0")).join("");return`${t}${a}_${e.split("/").pop()}`}async function la(){return await(await navigator.storage.getDirectory()).getDirectoryHandle("cache",{create:!0})}const h0=` +const msg = (data) => postMessage(data); +let accessHandle; + +onmessage = async (e) => { + try { + if (!e.data) return; + const { + open, // name of file to open + value, // value to be written + done, // indicates when to close the file + } = e.data; + + if (open) { + const opfsRoot = await navigator.storage.getDirectory(); + const cacheDir = await opfsRoot.getDirectoryHandle('cache', { create: true }); + const fileHandler = await cacheDir.getFileHandle(open, { create: true }); + accessHandle = await fileHandler.createSyncAccessHandle(); + accessHandle.truncate(0); // clear file content + return msg({ ok: true }); + + } else if (value) { + accessHandle.write(value); + return msg({ ok: true }); + + } else if (done) { + accessHandle.flush(); + accessHandle.close(); + return msg({ ok: true }); + } + + throw new Error('OPFS Worker: Invalid state'); + } catch (err) { + return msg({ err }); + } +}; +`;async function g0(e){const t=window.URL.createObjectURL(new Blob([h0],{type:"text/javascript"})),n=new Worker(t);let r,a;n.onmessage=o=>{o.data.ok?r(null):o.data.err&&a(o.data.err)};const l=o=>new Promise((i,s)=>{r=i,a=s,n.postMessage(o,Ls()?void 0:{transfer:o.value?[o.value.buffer]:[]})});return await l({open:e}),{truncate:async()=>{},write:o=>l({value:o}),close:async()=>{await l({done:!0}),n.terminate()}}}class kl extends Blob{constructor(t,n,r,a,l,o){if(super([]),this.contentType="",n!==0)throw new Error("start range must be 0");this.url=t,this.start=n,this.end=r,this.contentType="",this.full=a,this.fetch=l,this.cachedStream=o.cachedStream,this.progressCallback=o.progressCallback,this.startSignal=o.startSignal,this.etag=o.etag,this.noTEE=o.noTEE}static async create(t,n){var c,m,y,w;const r=(n==null?void 0:n.fetch)??fetch,a=t;let l;try{const x=await r(t,{method:"HEAD"});l={originalURL:t,originalSize:Number(x.headers.get("content-length")),etag:(x.headers.get("etag")||"").replace(/[^A-Za-z0-9]/g,"")}}catch(x){if(n.allowOffline){const b=await Ae.getMetadata(a);if(b)l=b;else throw new Error("Network error, cannot find requested model in cache for using offline")}else throw x}const o=await Ae.getSize(a),i=await Ae.getMetadata(a),s=(n==null?void 0:n.useCache)===!1,u=(i==null?void 0:i.etag)===ip;if(u&&await Ae._writeMetadata(a,l),(u||i&&l.etag===i.etag&&l.originalSize===o)&&!s){(c=n==null?void 0:n.logger)==null||c.debug(`Using cached file ${a}`);const x=await Ae.open(a);return((n==null?void 0:n.startSignal)??Promise.resolve()).then(()=>{var b;(b=n==null?void 0:n.progressCallback)==null||b.call(n,{loaded:o,total:o})}),new kl(t,0,l.originalSize,!0,r,{cachedStream:x,progressCallback:()=>{},etag:l.etag,noTEE:n.noTEE})}else return l.originalSize!==o&&((m=n==null?void 0:n.logger)==null||m.debug(`Cache file is present, but size mismatch (cache = ${o} bytes, remote = ${l.originalSize} bytes)`)),i&&l.etag!==i.etag&&((y=n==null?void 0:n.logger)==null||y.debug(`Cache file is present, but ETag mismatch (cache = "${i.etag}", remote = "${l.etag}")`)),(w=n==null?void 0:n.logger)==null||w.debug(`NOT using cache for ${a}`),new kl(t,0,l.originalSize,!0,r,{progressCallback:(n==null?void 0:n.progressCallback)??(()=>{}),startSignal:n==null?void 0:n.startSignal,etag:l.etag,noTEE:n.noTEE})}get size(){return this.end-this.start}get type(){return this.contentType}slice(){throw new Error("Unsupported operation")}async arrayBuffer(){throw new Error("Unsupported operation")}async text(){throw new Error("Unsupported operation")}stream(){if(this.cachedStream)return this.cachedStream;const t=this;let n=0;const r=new TransformStream({transform(a,l){t.noTEE||l.enqueue(a),n+=a.byteLength,t.progressCallback({loaded:n,total:t.size})},flush(a){t.progressCallback({loaded:t.size,total:t.size})}});return(async()=>(this.startSignal&&await this.startSignal,this.fetchRange().then(a=>{const[l,o]=a.body.tee();l.pipeThrough(r),Ae.write(this.url,o,{originalSize:this.end,originalURL:this.url,etag:this.etag})}).catch(a=>r.writable.abort(a.message))))(),r.readable}fetchRange(){const t=this.fetch;return this.full?t(this.url):t(this.url,{headers:{Range:`bytes=${this.start}-${this.end-1}`}})}}class uc{constructor(t,n,r,a){this.totalBytes=0,this.tasks=n.map(l=>{const o={url:l,state:0,loaded:0};return o.signalStart=new Promise(i=>o.fireStart=i),o.signalEnd=new Promise(i=>o.fireEnd=i),o}),this.logger=t,this.maxParallel=r,this.progressCallback=a.progressCallback,this.useCache=a.useCache,this.allowOffline=a.allowOffline,this.noTEE=!!a.noTEE}async run(){await Promise.all(this.tasks.map(async t=>{t.blob=await kl.create(t.url,{logger:this.logger,useCache:this.useCache,startSignal:t.signalStart,allowOffline:this.allowOffline,noTEE:this.noTEE,progressCallback:({loaded:n})=>{t.loaded=n,this.updateProgress(t)}})})),this.totalBytes=this.tasks.reduce((t,n)=>t+n.blob.size,0);for(let t=0;tt.blob)}updateProgress(t){var r;const n={loaded:this.tasks.reduce((a,l)=>a+l.loaded,0),total:this.totalBytes};(r=this.progressCallback)==null||r.call(this,n),t.loaded===t.blob.size&&(t.state=2,t.fireEnd())}async dispatcher(){for(;;){const t=this.tasks.find(n=>n.state===0);if(!t)return;t.state=1,t.fireStart(),await t.signalEnd}}}class sp{constructor(t,n={}){if(this.cacheManager=Ae,this.proxy=null,this.useMultiThread=!1,this.useEmbeddings=!1,this.bosToken=-1,this.eosToken=-1,this.eotToken=-1,this.addBosToken=!1,this.addEosToken=!1,this.samplingConfig={},this.hasEncoder=!1,this.decoderStartToken=-1,s0(),!t)throw new Error("AssetsPathConfig is required");this.pathConfig=t,this.config=n}logger(){return this.config.logger??console}checkModelLoaded(){if(!this.isModelLoaded())throw new Error("loadModel() is not yet called")}isModelLoaded(){return!!this.proxy&&!!this.metadata}getBOS(){return this.bosToken}getEOS(){return this.eosToken}getEOT(){return this.eotToken}getDecoderStartToken(){return this.decoderStartToken}getModelMetadata(){return this.checkModelLoaded(),this.metadata}isMultithread(){return this.checkModelLoaded(),this.useMultiThread}isEncoderDecoderArchitecture(){return this.checkModelLoaded(),this.hasEncoder}mustAddBosToken(){return this.checkModelLoaded(),this.addBosToken}mustAddEosToken(){return this.checkModelLoaded(),this.addEosToken}getChatTemplate(){return this.checkModelLoaded(),this.chatTemplate??null}parseModelUrl(t){if(Array.isArray(t))return t;const n=/(?.*)-(?\d{5})-of-(?\d{5})\.gguf$/,r=t.match(n);if(!r||!r.groups||Object.keys(r.groups).length!==3)return[t];const{baseURL:a,total:l}=r.groups;return Array.from({length:Number(l)},(i,s)=>(s+1).toString().padStart(5,"0")).map(i=>`${a}-${i}-of-${l}.gguf`)}async downloadModel(t,n={}){if(t.length===0)throw new Error("modelUrl must be an URL or a list of URLs (in the correct order)");if(n.useCache===!1)throw new Error("useCache must not be false");const a=await new uc(this.logger(),this.parseModelUrl(t),n.parallelDownloads??3,{progressCallback:n.progressCallback,useCache:!0,allowOffline:!!n.allowOffline,noTEE:!0}).run();await Promise.all(a.map(async l=>{const o=l.stream().getReader();for(;;){const{done:i}=await o.read();if(i)return}}))}async loadModelFromUrl(t,n={}){if(t.length===0)throw new Error("modelUrl must be an URL or a list of URLs (in the correct order)");const r=n.useCache===!1,l=await new uc(this.logger(),this.parseModelUrl(t),n.parallelDownloads??3,{progressCallback:n.progressCallback,useCache:!r,allowOffline:!!n.allowOffline}).run();return await this.loadModel(l,n)}async loadModel(t,n={}){const r=[...t];if(r.some(m=>m.size===0))throw new Error("Input model (or splits) must be non-empty Blob or File");a0(r);const a=r.length>1;if(this.proxy)throw new Error("Module is already initialized");const l=await l0();l||this.logger().warn("Multi-threads are not supported in this environment, falling back to single-thread");const o=!!this.pathConfig["multi-thread/wllama.js"]&&!!this.pathConfig["multi-thread/wllama.wasm"]&&!!this.pathConfig["multi-thread/wllama.worker.mjs"];o||this.logger().warn('Missing paths to "wllama.js", "wllama.wasm" or "wllama.worker.mjs", falling back to single-thread');const i=Math.floor((navigator.hardwareConcurrency||1)/2),s=n.n_threads??i;this.useMultiThread=l&&o&&s>1;const u=this.useMultiThread?{"wllama.js":Sr(this.pathConfig["multi-thread/wllama.js"]),"wllama.wasm":Sr(this.pathConfig["multi-thread/wllama.wasm"]),"wllama.worker.mjs":Sr(this.pathConfig["multi-thread/wllama.worker.mjs"])}:{"wllama.js":Sr(this.pathConfig["single-thread/wllama.js"]),"wllama.wasm":Sr(this.pathConfig["single-thread/wllama.wasm"])};this.proxy=new p0(u,this.useMultiThread?s:1,this.config.suppressNativeLog??!1,this.logger()),await this.proxy.moduleInit(r.map((m,y)=>({name:a?`model-${xo(y+1,5)}-of-${xo(r.length,5)}.gguf`:"model.gguf",blob:m})));const f=await this.proxy.wllamaStart();if(!f.success)throw new Error(`Error while calling start function, result = ${f}`);const c=await this.proxy.wllamaAction("load",{...n,use_mmap:!0,use_mlock:!0,seed:n.seed||Math.floor(Math.random()*1e5),n_ctx:n.n_ctx||1024,n_threads:this.useMultiThread?s:1,model_path:a?`/models/model-00001-of-${xo(r.length,5)}.gguf`:"/models/model.gguf"});this.bosToken=c.token_bos,this.eosToken=c.token_eos,this.eotToken=c.token_eot,this.useEmbeddings=!!n.embeddings,this.metadata={hparams:{nVocab:c.n_vocab,nCtxTrain:c.n_ctx_train,nEmbd:c.n_embd,nLayer:c.n_layer},meta:c.metadata},this.hasEncoder=!!c.has_encoder,this.decoderStartToken=c.token_decoder_start,this.addBosToken=c.add_bos_token,this.addEosToken=c.add_eos_token,this.chatTemplate=c.metadata["tokenizer.chat_template"],this.logger().debug({loadResult:c})}async createEmbedding(t,n={}){this.checkModelLoaded();const r={skipBOS:!1,skipEOS:!1,...n};await this.samplingInit(this.samplingConfig),await this.kvClear();const a=await this.tokenize(t);return this.bosToken&&!r.skipBOS&&a.unshift(this.bosToken),this.eosToken&&!r.skipEOS&&a.push(this.eosToken),await this.embeddings(a)}async createCompletion(t,n){this.checkModelLoaded(),this.samplingConfig=n.sampling??{},await this.samplingInit(this.samplingConfig),await this.kvClear();const r=[this.eosToken,this.eotToken,...n.stopTokens??[]],a=await this.tokenize(t,!0);this.addBosToken&&a[0]!==this.bosToken&&a.unshift(this.bosToken),await this.samplingAccept(a),this.isEncoderDecoderArchitecture()?(await this.encode(a),await this.decode([this.getDecoderStartToken()],{})):await this.decode(a,{});let l=new Uint8Array,o=!1;const i=()=>{o=!0};for(let s=0;s<(n.nPredict??1/0);s++){const u=await this.samplingSample();if(r.includes(u.token)||(l=n0([l,u.piece]),n.onNewToken&&n.onNewToken(u.token,u.piece,oc(l),{abortSignal:i}),o))break;await this.samplingAccept([u.token]),await this.decode([u.token],{})}return oc(l)}async samplingInit(t,n=[]){if(this.checkModelLoaded(),this.samplingConfig=t,!(await this.proxy.wllamaAction("sampling_init",{...t,tokens:n})).success)throw new Error("Failed to initialize sampling")}async getVocab(){return this.checkModelLoaded(),(await this.proxy.wllamaAction("get_vocab",{})).vocab.map(n=>new Uint8Array(n))}async lookupToken(t){this.checkModelLoaded();const n=await this.proxy.wllamaAction("lookup_token",{piece:t});return n.success?n.token:-1}async tokenize(t,n=!0){return this.checkModelLoaded(),(await this.proxy.wllamaAction("tokenize",n?{text:t,special:!0}:{text:t})).tokens}async detokenize(t){this.checkModelLoaded();const n=await this.proxy.wllamaAction("detokenize",{tokens:t});return new Uint8Array(n.buffer)}async decode(t,n){if(this.checkModelLoaded(),this.useEmbeddings)throw new Error("embeddings is enabled. Use wllama.setOptions({ embeddings: false }) to disable it.");const r={tokens:t};n.skipLogits&&(r.skip_logits=!0);const a=await this.proxy.wllamaAction("decode",r);if(a.error)throw new Error(a.error);if(a.success)return{nPast:a.n_past};throw new Error("Cannot decode, unknown error")}async encode(t,n){if(this.checkModelLoaded(),!this.hasEncoder)throw new Error("This model does not use encoder-decoder architecture.");if(this.useEmbeddings)throw new Error("embeddings is enabled. Use wllama.setOptions({ embeddings: false }) to disable it.");const r={tokens:t},a=await this.proxy.wllamaAction("encode",r);if(a.error)throw new Error(a.error);if(a.success)return{nPast:a.n_past};throw new Error("Cannot encode, unknown error")}async samplingSample(){this.checkModelLoaded();const t=await this.proxy.wllamaAction("sampling_sample",{});return{piece:new Uint8Array(t.piece),token:t.token}}async samplingAccept(t){if(this.checkModelLoaded(),!(await this.proxy.wllamaAction("sampling_accept",{tokens:t})).success)throw new Error("samplingAccept unknown error")}async getLogits(t=40){return this.checkModelLoaded(),(await this.proxy.wllamaAction("get_logits",{top_k:t})).logits.map(([a,l])=>({token:a,p:l}))}async embeddings(t){if(this.checkModelLoaded(),!this.useEmbeddings)throw new Error("embeddings is disabled. Use wllama.setOptions({ embeddings: true }) to enable it.");const n=await this.proxy.wllamaAction("embeddings",{tokens:t});if(n.error)throw new Error(n.error);if(n.success)return n.embeddings;throw new Error("embeddings unknown error")}async kvRemove(t,n){if(this.checkModelLoaded(),!(await this.proxy.wllamaAction("kv_remove",{n_keep:t,n_discard:n})).success)throw new Error("kvRemove unknown error")}async kvClear(){if(this.checkModelLoaded(),!(await this.proxy.wllamaAction("kv_clear",{})).success)throw new Error("kvClear unknown error")}async sessionSave(t){return this.checkModelLoaded(),await this.proxy.wllamaAction("session_save",{session_path:t})}async sessionLoad(t){this.checkModelLoaded();const n=await this.proxy.wllamaAction("session_load",{session_path:t});if(n.error)throw new Error(n.error);if(!n.success)throw new Error("sessionLoad unknown error")}async setOptions(t){this.checkModelLoaded(),await this.proxy.wllamaAction("set_options",t),this.useEmbeddings=t.embeddings}async exit(){var t;await((t=this.proxy)==null?void 0:t.wllamaExit())}async _getDebugInfo(){return this.checkModelLoaded(),await this.proxy.wllamaDebug()}}const v0=new Uint8Array([71,71,85,70]);async function y0(e){const t=e.replace(/\?.*/,""),n=await fetch(t,{headers:{Range:`bytes=0-${2*1024*1024}`}});if(n.ok){const r=await n.arrayBuffer();if(!w0(new Uint8Array(r.slice(0,4)),v0))throw new Error("Not a valid gguf file: not starting with GGUF magic number")}else throw new Error(`Fetch error with status code = ${n.status}`);return{url:t,size:await x0(t),userAdded:!0}}const w0=(e,t)=>{for(let n=0;n{const t=k0(e),n=await Promise.all(t.map(async r=>{const a=await fetch(r,{method:"HEAD"});if(a.ok){const l=a.headers.get("Content-Length");return l?parseInt(l):0}else throw new Error(`Fetch error with status code = ${a.status}`)}));if(n.some(r=>r>=rp))throw new Error('GGUF file is too big (max. 2GB per file). Please split the file into smaller shards (learn more in "Guide")');return S0(n)},k0=e=>{const t=/(?.*)-(?\d{5})-of-(?\d{5})\.gguf$/,n=e.match(t);if(!n||!n.groups||Object.keys(n.groups).length!==3)return[e];const{baseURL:r,total:a}=n.groups;return Array.from({length:Number(a)},(o,i)=>(i+1).toString().padStart(5,"0")).map(o=>`${r}-${o}-of-${a}.gguf`)},S0=e=>e.reduce((t,n)=>t+n,0);window._exportModelList=function(){const t=Be.load("custom_models",[]).map(n=>(delete n.userAdded,n));console.log(JSON.stringify(t,null,2))};const up=ee.createContext({});let Je=new sp(np),Aa=!1;const cc=()=>{Je=new sp(np)},fc=async()=>{const e=(await Je.cacheManager.list()).filter(r=>r.size===r.metadata.originalSize),t=new Set(e.map(r=>r.metadata.originalURL));return[...Xg,...Be.load("custom_models",[])].map(r=>{var a;return{...r,name:((a=r.url.split("/").pop())==null?void 0:a.replace(/-\d{5}-of-\d{5}/,"").replace(".gguf",""))??"(unknown)",state:t.has(r.url)?le.READY:le.NOT_DOWNLOADED,downloadPercent:0}})},E0=({children:e})=>{const[t,n]=ee.useState(!1),[r,a]=ee.useState(-1),[l,o]=ee.useState(Jg()),[i,s]=ee.useState([]),[u,f]=ee.useState(!1),[c,m]=ee.useState(Be.load("params",ap));Qg(async()=>{s(await fc())});const y=ee.useMemo(()=>i.some(z=>z.state===le.DOWNLOADING),[i]),w=ee.useMemo(()=>u||i.some(z=>z.state===le.LOADING),[i,u]),x=ee.useMemo(()=>i.find(z=>z.state===le.LOADED),[i]),b=z=>s(V=>V.map(S=>S.url===z.url?z:S)),p=async()=>{s(await fc())},d=async z=>{if(!(y||x||w)){b({...z,state:le.DOWNLOADING,downloadPercent:0});try{await Je.downloadModel(z.url,{progressCallback(V){b({...z,state:le.DOWNLOADING,downloadPercent:V.loaded/V.total})}}),b({...z,state:le.READY,downloadPercent:0})}catch(V){alert((V==null?void 0:V.message)||"unknown error while downloading model")}}},h=async z=>{const V=await Je.cacheManager.getNameFromURL(z.url);await Je.cacheManager.delete(V),await p()},k=async()=>{await Je.cacheManager.deleteMany(()=>!0),await p()},C=async z=>{if(!(y||x||w)){if(z.userAdded&&await d(z),await Je.cacheManager.getSize(z.url)<=0)throw new Error("Model is not in cache");b({...z,state:le.LOADING,downloadPercent:0});try{await Je.loadModelFromUrl(z.url,{n_threads:c.nThreads>0?c.nThreads:void 0,n_ctx:c.nContext,n_batch:c.nBatch}),b({...z,state:le.LOADED,downloadPercent:0})}catch(V){cc(),alert(`Failed to load model: ${V.message??"Unknown error"}`),b({...z,state:le.READY,downloadPercent:0})}}},M=async()=>{x&&(await Je.exit(),cc(),b({...x,state:le.READY,downloadPercent:0}))},O=async(z,V)=>{if(y||!x||w)return;n(!0),Aa=!1;const S=await Je.createCompletion(z,{nPredict:c.nPredict,sampling:{temp:c.temperature},onNewToken(_,I,N,A){V(N),Aa&&A.abortSignal()}});V(S),Aa=!1,n(!1)},L=()=>{Aa=!0},G=(z,V)=>{o(z),a(V??-1),z===me.MODEL&&Be.save("welcome",!1)},j=z=>{Be.save("params",z),m(z)},we=async z=>{f(!0);try{const V=await y0(z);if(i.some(_=>_.url===V.url))throw new Error("Model with the same URL already exist");const S=Be.load("custom_models",[]);Be.save("custom_models",[...S,V]),await p()}catch(V){throw f(!1),V}f(!1)},ot=async z=>{f(!0),await h(z);const V=Be.load("custom_models",[]);Be.save("custom_models",V.filter(S=>S.url!==z.url)),await p(),f(!1)};return g.jsx(up.Provider,{value:{models:i,isDownloading:y,isLoadingModel:w,downloadModel:d,removeModel:h,removeAllModels:k,currModel:x,loadModel:C,unloadModel:M,currParams:c,setParams:j,createCompletion:O,stopCompletion:L,isGenerating:t,currentConvId:r,navigateTo:G,currScreen:l,getWllamaInstance:()=>Je,addCustomModel:we,removeCustomModel:ot},children:e})},ln=()=>ee.useContext(up),dc=()=>{};let Is={},cp={},fp=null,dp={mark:dc,measure:dc};try{typeof window<"u"&&(Is=window),typeof document<"u"&&(cp=document),typeof MutationObserver<"u"&&(fp=MutationObserver),typeof performance<"u"&&(dp=performance)}catch{}const{userAgent:pc=""}=Is.navigator||{},qt=Is,K=cp,mc=fp,za=dp;qt.document;const It=!!K.documentElement&&!!K.head&&typeof K.addEventListener=="function"&&typeof K.createElement=="function",pp=~pc.indexOf("MSIE")||~pc.indexOf("Trident/");var q="classic",mp="duotone",Fe="sharp",je="sharp-duotone",C0=[q,mp,Fe,je],N0={classic:{900:"fas",400:"far",normal:"far",300:"fal",100:"fat"},sharp:{900:"fass",400:"fasr",300:"fasl",100:"fast"},"sharp-duotone":{900:"fasds"}},hc={kit:{fak:"kit","fa-kit":"kit"},"kit-duotone":{fakd:"kit-duotone","fa-kit-duotone":"kit-duotone"}},b0=["kit"],_0=/fa(s|r|l|t|d|b|k|kd|ss|sr|sl|st|sds)?[\-\ ]/,T0=/Font ?Awesome ?([56 ]*)(Solid|Regular|Light|Thin|Duotone|Brands|Free|Pro|Sharp Duotone|Sharp|Kit)?.*/i,M0={"Font Awesome 5 Free":{900:"fas",400:"far"},"Font Awesome 5 Pro":{900:"fas",400:"far",normal:"far",300:"fal"},"Font Awesome 5 Brands":{400:"fab",normal:"fab"},"Font Awesome 5 Duotone":{900:"fad"}},O0={"Font Awesome 6 Free":{900:"fas",400:"far"},"Font Awesome 6 Pro":{900:"fas",400:"far",normal:"far",300:"fal",100:"fat"},"Font Awesome 6 Brands":{400:"fab",normal:"fab"},"Font Awesome 6 Duotone":{900:"fad"},"Font Awesome 6 Sharp":{900:"fass",400:"fasr",normal:"fasr",300:"fasl",100:"fast"},"Font Awesome 6 Sharp Duotone":{900:"fasds"}},P0={classic:{"fa-brands":"fab","fa-duotone":"fad","fa-light":"fal","fa-regular":"far","fa-solid":"fas","fa-thin":"fat"},sharp:{"fa-solid":"fass","fa-regular":"fasr","fa-light":"fasl","fa-thin":"fast"},"sharp-duotone":{"fa-solid":"fasds"}},L0={classic:["fas","far","fal","fat"],sharp:["fass","fasr","fasl","fast"],"sharp-duotone":["fasds"]},I0={classic:{fab:"fa-brands",fad:"fa-duotone",fal:"fa-light",far:"fa-regular",fas:"fa-solid",fat:"fa-thin"},sharp:{fass:"fa-solid",fasr:"fa-regular",fasl:"fa-light",fast:"fa-thin"},"sharp-duotone":{fasds:"fa-solid"}},A0={classic:{solid:"fas",regular:"far",light:"fal",thin:"fat",duotone:"fad",brands:"fab"},sharp:{solid:"fass",regular:"fasr",light:"fasl",thin:"fast"},"sharp-duotone":{solid:"fasds"}},hp={classic:{fa:"solid",fas:"solid","fa-solid":"solid",far:"regular","fa-regular":"regular",fal:"light","fa-light":"light",fat:"thin","fa-thin":"thin",fad:"duotone","fa-duotone":"duotone",fab:"brands","fa-brands":"brands"},sharp:{fa:"solid",fass:"solid","fa-solid":"solid",fasr:"regular","fa-regular":"regular",fasl:"light","fa-light":"light",fast:"thin","fa-thin":"thin"},"sharp-duotone":{fa:"solid",fasds:"solid","fa-solid":"solid"}},z0=["solid","regular","light","thin","duotone","brands"],gp=[1,2,3,4,5,6,7,8,9,10],R0=gp.concat([11,12,13,14,15,16,17,18,19,20]),Tr={GROUP:"duotone-group",SWAP_OPACITY:"swap-opacity",PRIMARY:"primary",SECONDARY:"secondary"},F0=[...Object.keys(L0),...z0,"2xs","xs","sm","lg","xl","2xl","beat","border","fade","beat-fade","bounce","flip-both","flip-horizontal","flip-vertical","flip","fw","inverse","layers-counter","layers-text","layers","li","pull-left","pull-right","pulse","rotate-180","rotate-270","rotate-90","rotate-by","shake","spin-pulse","spin-reverse","spin","stack-1x","stack-2x","stack","ul",Tr.GROUP,Tr.SWAP_OPACITY,Tr.PRIMARY,Tr.SECONDARY].concat(gp.map(e=>"".concat(e,"x"))).concat(R0.map(e=>"w-".concat(e))),j0={"Font Awesome Kit":{400:"fak",normal:"fak"},"Font Awesome Kit Duotone":{400:"fakd",normal:"fakd"}},D0={kit:{"fa-kit":"fak"},"kit-duotone":{"fa-kit-duotone":"fakd"}},U0={kit:{fak:"fa-kit"},"kit-duotone":{fakd:"fa-kit-duotone"}},gc={kit:{kit:"fak"},"kit-duotone":{"kit-duotone":"fakd"}};const Mt="___FONT_AWESOME___",ki=16,vp="fa",yp="svg-inline--fa",Nn="data-fa-i2svg",Si="data-fa-pseudo-element",W0="data-fa-pseudo-element-pending",As="data-prefix",zs="data-icon",vc="fontawesome-i2svg",V0="async",B0=["HTML","HEAD","STYLE","SCRIPT"],wp=(()=>{try{return!0}catch{return!1}})(),xp=[q,Fe,je];function ma(e){return new Proxy(e,{get(t,n){return n in t?t[n]:t[q]}})}const kp={...hp};kp[q]={...hp[q],...hc.kit,...hc["kit-duotone"]};const yn=ma(kp),Ei={...A0};Ei[q]={...Ei[q],...gc.kit,...gc["kit-duotone"]};const oa=ma(Ei),Ci={...I0};Ci[q]={...Ci[q],...U0.kit};const wn=ma(Ci),Ni={...P0};Ni[q]={...Ni[q],...D0.kit};const $0=ma(Ni),H0=_0,Sp="fa-layers-text",G0=T0,Z0={...N0};ma(Z0);const Y0=["class","data-prefix","data-icon","data-fa-transform","data-fa-mask"],ko=Tr,or=new Set;Object.keys(oa[q]).map(or.add.bind(or));Object.keys(oa[Fe]).map(or.add.bind(or));Object.keys(oa[je]).map(or.add.bind(or));const X0=[...b0,...F0],Ur=qt.FontAwesomeConfig||{};function K0(e){var t=K.querySelector("script["+e+"]");if(t)return t.getAttribute(e)}function Q0(e){return e===""?!0:e==="false"?!1:e==="true"?!0:e}K&&typeof K.querySelector=="function"&&[["data-family-prefix","familyPrefix"],["data-css-prefix","cssPrefix"],["data-family-default","familyDefault"],["data-style-default","styleDefault"],["data-replacement-class","replacementClass"],["data-auto-replace-svg","autoReplaceSvg"],["data-auto-add-css","autoAddCss"],["data-auto-a11y","autoA11y"],["data-search-pseudo-elements","searchPseudoElements"],["data-observe-mutations","observeMutations"],["data-mutate-approach","mutateApproach"],["data-keep-original-source","keepOriginalSource"],["data-measure-performance","measurePerformance"],["data-show-missing-icons","showMissingIcons"]].forEach(t=>{let[n,r]=t;const a=Q0(K0(n));a!=null&&(Ur[r]=a)});const Ep={styleDefault:"solid",familyDefault:"classic",cssPrefix:vp,replacementClass:yp,autoReplaceSvg:!0,autoAddCss:!0,autoA11y:!0,searchPseudoElements:!1,observeMutations:!0,mutateApproach:"async",keepOriginalSource:!0,measurePerformance:!1,showMissingIcons:!0};Ur.familyPrefix&&(Ur.cssPrefix=Ur.familyPrefix);const ir={...Ep,...Ur};ir.autoReplaceSvg||(ir.observeMutations=!1);const P={};Object.keys(Ep).forEach(e=>{Object.defineProperty(P,e,{enumerable:!0,set:function(t){ir[e]=t,Wr.forEach(n=>n(P))},get:function(){return ir[e]}})});Object.defineProperty(P,"familyPrefix",{enumerable:!0,set:function(e){ir.cssPrefix=e,Wr.forEach(t=>t(P))},get:function(){return ir.cssPrefix}});qt.FontAwesomeConfig=P;const Wr=[];function J0(e){return Wr.push(e),()=>{Wr.splice(Wr.indexOf(e),1)}}const zt=ki,dt={size:16,x:0,y:0,rotate:0,flipX:!1,flipY:!1};function q0(e){if(!e||!It)return;const t=K.createElement("style");t.setAttribute("type","text/css"),t.innerHTML=e;const n=K.head.childNodes;let r=null;for(let a=n.length-1;a>-1;a--){const l=n[a],o=(l.tagName||"").toUpperCase();["STYLE","LINK"].indexOf(o)>-1&&(r=l)}return K.head.insertBefore(t,r),e}const e1="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";function ia(){let e=12,t="";for(;e-- >0;)t+=e1[Math.random()*62|0];return t}function dr(e){const t=[];for(let n=(e||[]).length>>>0;n--;)t[n]=e[n];return t}function Rs(e){return e.classList?dr(e.classList):(e.getAttribute("class")||"").split(" ").filter(t=>t)}function Cp(e){return"".concat(e).replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">")}function t1(e){return Object.keys(e||{}).reduce((t,n)=>t+"".concat(n,'="').concat(Cp(e[n]),'" '),"").trim()}function Vl(e){return Object.keys(e||{}).reduce((t,n)=>t+"".concat(n,": ").concat(e[n].trim(),";"),"")}function Fs(e){return e.size!==dt.size||e.x!==dt.x||e.y!==dt.y||e.rotate!==dt.rotate||e.flipX||e.flipY}function n1(e){let{transform:t,containerWidth:n,iconWidth:r}=e;const a={transform:"translate(".concat(n/2," 256)")},l="translate(".concat(t.x*32,", ").concat(t.y*32,") "),o="scale(".concat(t.size/16*(t.flipX?-1:1),", ").concat(t.size/16*(t.flipY?-1:1),") "),i="rotate(".concat(t.rotate," 0 0)"),s={transform:"".concat(l," ").concat(o," ").concat(i)},u={transform:"translate(".concat(r/2*-1," -256)")};return{outer:a,inner:s,path:u}}function r1(e){let{transform:t,width:n=ki,height:r=ki,startCentered:a=!1}=e,l="";return a&&pp?l+="translate(".concat(t.x/zt-n/2,"em, ").concat(t.y/zt-r/2,"em) "):a?l+="translate(calc(-50% + ".concat(t.x/zt,"em), calc(-50% + ").concat(t.y/zt,"em)) "):l+="translate(".concat(t.x/zt,"em, ").concat(t.y/zt,"em) "),l+="scale(".concat(t.size/zt*(t.flipX?-1:1),", ").concat(t.size/zt*(t.flipY?-1:1),") "),l+="rotate(".concat(t.rotate,"deg) "),l}var a1=`:root, :host { + --fa-font-solid: normal 900 1em/1 "Font Awesome 6 Free"; + --fa-font-regular: normal 400 1em/1 "Font Awesome 6 Free"; + --fa-font-light: normal 300 1em/1 "Font Awesome 6 Pro"; + --fa-font-thin: normal 100 1em/1 "Font Awesome 6 Pro"; + --fa-font-duotone: normal 900 1em/1 "Font Awesome 6 Duotone"; + --fa-font-brands: normal 400 1em/1 "Font Awesome 6 Brands"; + --fa-font-sharp-solid: normal 900 1em/1 "Font Awesome 6 Sharp"; + --fa-font-sharp-regular: normal 400 1em/1 "Font Awesome 6 Sharp"; + --fa-font-sharp-light: normal 300 1em/1 "Font Awesome 6 Sharp"; + --fa-font-sharp-thin: normal 100 1em/1 "Font Awesome 6 Sharp"; + --fa-font-sharp-duotone-solid: normal 900 1em/1 "Font Awesome 6 Sharp Duotone"; +} + +svg:not(:root).svg-inline--fa, svg:not(:host).svg-inline--fa { + overflow: visible; + box-sizing: content-box; +} + +.svg-inline--fa { + display: var(--fa-display, inline-block); + height: 1em; + overflow: visible; + vertical-align: -0.125em; +} +.svg-inline--fa.fa-2xs { + vertical-align: 0.1em; +} +.svg-inline--fa.fa-xs { + vertical-align: 0em; +} +.svg-inline--fa.fa-sm { + vertical-align: -0.0714285705em; +} +.svg-inline--fa.fa-lg { + vertical-align: -0.2em; +} +.svg-inline--fa.fa-xl { + vertical-align: -0.25em; +} +.svg-inline--fa.fa-2xl { + vertical-align: -0.3125em; +} +.svg-inline--fa.fa-pull-left { + margin-right: var(--fa-pull-margin, 0.3em); + width: auto; +} +.svg-inline--fa.fa-pull-right { + margin-left: var(--fa-pull-margin, 0.3em); + width: auto; +} +.svg-inline--fa.fa-li { + width: var(--fa-li-width, 2em); + top: 0.25em; +} +.svg-inline--fa.fa-fw { + width: var(--fa-fw-width, 1.25em); +} + +.fa-layers svg.svg-inline--fa { + bottom: 0; + left: 0; + margin: auto; + position: absolute; + right: 0; + top: 0; +} + +.fa-layers-counter, .fa-layers-text { + display: inline-block; + position: absolute; + text-align: center; +} + +.fa-layers { + display: inline-block; + height: 1em; + position: relative; + text-align: center; + vertical-align: -0.125em; + width: 1em; +} +.fa-layers svg.svg-inline--fa { + transform-origin: center center; +} + +.fa-layers-text { + left: 50%; + top: 50%; + transform: translate(-50%, -50%); + transform-origin: center center; +} + +.fa-layers-counter { + background-color: var(--fa-counter-background-color, #ff253a); + border-radius: var(--fa-counter-border-radius, 1em); + box-sizing: border-box; + color: var(--fa-inverse, #fff); + line-height: var(--fa-counter-line-height, 1); + max-width: var(--fa-counter-max-width, 5em); + min-width: var(--fa-counter-min-width, 1.5em); + overflow: hidden; + padding: var(--fa-counter-padding, 0.25em 0.5em); + right: var(--fa-right, 0); + text-overflow: ellipsis; + top: var(--fa-top, 0); + transform: scale(var(--fa-counter-scale, 0.25)); + transform-origin: top right; +} + +.fa-layers-bottom-right { + bottom: var(--fa-bottom, 0); + right: var(--fa-right, 0); + top: auto; + transform: scale(var(--fa-layers-scale, 0.25)); + transform-origin: bottom right; +} + +.fa-layers-bottom-left { + bottom: var(--fa-bottom, 0); + left: var(--fa-left, 0); + right: auto; + top: auto; + transform: scale(var(--fa-layers-scale, 0.25)); + transform-origin: bottom left; +} + +.fa-layers-top-right { + top: var(--fa-top, 0); + right: var(--fa-right, 0); + transform: scale(var(--fa-layers-scale, 0.25)); + transform-origin: top right; +} + +.fa-layers-top-left { + left: var(--fa-left, 0); + right: auto; + top: var(--fa-top, 0); + transform: scale(var(--fa-layers-scale, 0.25)); + transform-origin: top left; +} + +.fa-1x { + font-size: 1em; +} + +.fa-2x { + font-size: 2em; +} + +.fa-3x { + font-size: 3em; +} + +.fa-4x { + font-size: 4em; +} + +.fa-5x { + font-size: 5em; +} + +.fa-6x { + font-size: 6em; +} + +.fa-7x { + font-size: 7em; +} + +.fa-8x { + font-size: 8em; +} + +.fa-9x { + font-size: 9em; +} + +.fa-10x { + font-size: 10em; +} + +.fa-2xs { + font-size: 0.625em; + line-height: 0.1em; + vertical-align: 0.225em; +} + +.fa-xs { + font-size: 0.75em; + line-height: 0.0833333337em; + vertical-align: 0.125em; +} + +.fa-sm { + font-size: 0.875em; + line-height: 0.0714285718em; + vertical-align: 0.0535714295em; +} + +.fa-lg { + font-size: 1.25em; + line-height: 0.05em; + vertical-align: -0.075em; +} + +.fa-xl { + font-size: 1.5em; + line-height: 0.0416666682em; + vertical-align: -0.125em; +} + +.fa-2xl { + font-size: 2em; + line-height: 0.03125em; + vertical-align: -0.1875em; +} + +.fa-fw { + text-align: center; + width: 1.25em; +} + +.fa-ul { + list-style-type: none; + margin-left: var(--fa-li-margin, 2.5em); + padding-left: 0; +} +.fa-ul > li { + position: relative; +} + +.fa-li { + left: calc(-1 * var(--fa-li-width, 2em)); + position: absolute; + text-align: center; + width: var(--fa-li-width, 2em); + line-height: inherit; +} + +.fa-border { + border-color: var(--fa-border-color, #eee); + border-radius: var(--fa-border-radius, 0.1em); + border-style: var(--fa-border-style, solid); + border-width: var(--fa-border-width, 0.08em); + padding: var(--fa-border-padding, 0.2em 0.25em 0.15em); +} + +.fa-pull-left { + float: left; + margin-right: var(--fa-pull-margin, 0.3em); +} + +.fa-pull-right { + float: right; + margin-left: var(--fa-pull-margin, 0.3em); +} + +.fa-beat { + animation-name: fa-beat; + animation-delay: var(--fa-animation-delay, 0s); + animation-direction: var(--fa-animation-direction, normal); + animation-duration: var(--fa-animation-duration, 1s); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-timing-function: var(--fa-animation-timing, ease-in-out); +} + +.fa-bounce { + animation-name: fa-bounce; + animation-delay: var(--fa-animation-delay, 0s); + animation-direction: var(--fa-animation-direction, normal); + animation-duration: var(--fa-animation-duration, 1s); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); +} + +.fa-fade { + animation-name: fa-fade; + animation-delay: var(--fa-animation-delay, 0s); + animation-direction: var(--fa-animation-direction, normal); + animation-duration: var(--fa-animation-duration, 1s); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); +} + +.fa-beat-fade { + animation-name: fa-beat-fade; + animation-delay: var(--fa-animation-delay, 0s); + animation-direction: var(--fa-animation-direction, normal); + animation-duration: var(--fa-animation-duration, 1s); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); +} + +.fa-flip { + animation-name: fa-flip; + animation-delay: var(--fa-animation-delay, 0s); + animation-direction: var(--fa-animation-direction, normal); + animation-duration: var(--fa-animation-duration, 1s); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-timing-function: var(--fa-animation-timing, ease-in-out); +} + +.fa-shake { + animation-name: fa-shake; + animation-delay: var(--fa-animation-delay, 0s); + animation-direction: var(--fa-animation-direction, normal); + animation-duration: var(--fa-animation-duration, 1s); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-timing-function: var(--fa-animation-timing, linear); +} + +.fa-spin { + animation-name: fa-spin; + animation-delay: var(--fa-animation-delay, 0s); + animation-direction: var(--fa-animation-direction, normal); + animation-duration: var(--fa-animation-duration, 2s); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-timing-function: var(--fa-animation-timing, linear); +} + +.fa-spin-reverse { + --fa-animation-direction: reverse; +} + +.fa-pulse, +.fa-spin-pulse { + animation-name: fa-spin; + animation-direction: var(--fa-animation-direction, normal); + animation-duration: var(--fa-animation-duration, 1s); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-timing-function: var(--fa-animation-timing, steps(8)); +} + +@media (prefers-reduced-motion: reduce) { + .fa-beat, +.fa-bounce, +.fa-fade, +.fa-beat-fade, +.fa-flip, +.fa-pulse, +.fa-shake, +.fa-spin, +.fa-spin-pulse { + animation-delay: -1ms; + animation-duration: 1ms; + animation-iteration-count: 1; + transition-delay: 0s; + transition-duration: 0s; + } +} +@keyframes fa-beat { + 0%, 90% { + transform: scale(1); + } + 45% { + transform: scale(var(--fa-beat-scale, 1.25)); + } +} +@keyframes fa-bounce { + 0% { + transform: scale(1, 1) translateY(0); + } + 10% { + transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); + } + 30% { + transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); + } + 50% { + transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); + } + 57% { + transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); + } + 64% { + transform: scale(1, 1) translateY(0); + } + 100% { + transform: scale(1, 1) translateY(0); + } +} +@keyframes fa-fade { + 50% { + opacity: var(--fa-fade-opacity, 0.4); + } +} +@keyframes fa-beat-fade { + 0%, 100% { + opacity: var(--fa-beat-fade-opacity, 0.4); + transform: scale(1); + } + 50% { + opacity: 1; + transform: scale(var(--fa-beat-fade-scale, 1.125)); + } +} +@keyframes fa-flip { + 50% { + transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); + } +} +@keyframes fa-shake { + 0% { + transform: rotate(-15deg); + } + 4% { + transform: rotate(15deg); + } + 8%, 24% { + transform: rotate(-18deg); + } + 12%, 28% { + transform: rotate(18deg); + } + 16% { + transform: rotate(-22deg); + } + 20% { + transform: rotate(22deg); + } + 32% { + transform: rotate(-12deg); + } + 36% { + transform: rotate(12deg); + } + 40%, 100% { + transform: rotate(0deg); + } +} +@keyframes fa-spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} +.fa-rotate-90 { + transform: rotate(90deg); +} + +.fa-rotate-180 { + transform: rotate(180deg); +} + +.fa-rotate-270 { + transform: rotate(270deg); +} + +.fa-flip-horizontal { + transform: scale(-1, 1); +} + +.fa-flip-vertical { + transform: scale(1, -1); +} + +.fa-flip-both, +.fa-flip-horizontal.fa-flip-vertical { + transform: scale(-1, -1); +} + +.fa-rotate-by { + transform: rotate(var(--fa-rotate-angle, 0)); +} + +.fa-stack { + display: inline-block; + vertical-align: middle; + height: 2em; + position: relative; + width: 2.5em; +} + +.fa-stack-1x, +.fa-stack-2x { + bottom: 0; + left: 0; + margin: auto; + position: absolute; + right: 0; + top: 0; + z-index: var(--fa-stack-z-index, auto); +} + +.svg-inline--fa.fa-stack-1x { + height: 1em; + width: 1.25em; +} +.svg-inline--fa.fa-stack-2x { + height: 2em; + width: 2.5em; +} + +.fa-inverse { + color: var(--fa-inverse, #fff); +} + +.sr-only, +.fa-sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; +} + +.sr-only-focusable:not(:focus), +.fa-sr-only-focusable:not(:focus) { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; +} + +.svg-inline--fa .fa-primary { + fill: var(--fa-primary-color, currentColor); + opacity: var(--fa-primary-opacity, 1); +} + +.svg-inline--fa .fa-secondary { + fill: var(--fa-secondary-color, currentColor); + opacity: var(--fa-secondary-opacity, 0.4); +} + +.svg-inline--fa.fa-swap-opacity .fa-primary { + opacity: var(--fa-secondary-opacity, 0.4); +} + +.svg-inline--fa.fa-swap-opacity .fa-secondary { + opacity: var(--fa-primary-opacity, 1); +} + +.svg-inline--fa mask .fa-primary, +.svg-inline--fa mask .fa-secondary { + fill: black; +} + +.fad.fa-inverse, +.fa-duotone.fa-inverse { + color: var(--fa-inverse, #fff); +}`;function Np(){const e=vp,t=yp,n=P.cssPrefix,r=P.replacementClass;let a=a1;if(n!==e||r!==t){const l=new RegExp("\\.".concat(e,"\\-"),"g"),o=new RegExp("\\--".concat(e,"\\-"),"g"),i=new RegExp("\\.".concat(t),"g");a=a.replace(l,".".concat(n,"-")).replace(o,"--".concat(n,"-")).replace(i,".".concat(r))}return a}let yc=!1;function So(){P.autoAddCss&&!yc&&(q0(Np()),yc=!0)}var l1={mixout(){return{dom:{css:Np,insertCss:So}}},hooks(){return{beforeDOMElementCreation(){So()},beforeI2svg(){So()}}}};const Ot=qt||{};Ot[Mt]||(Ot[Mt]={});Ot[Mt].styles||(Ot[Mt].styles={});Ot[Mt].hooks||(Ot[Mt].hooks={});Ot[Mt].shims||(Ot[Mt].shims=[]);var pt=Ot[Mt];const bp=[],_p=function(){K.removeEventListener("DOMContentLoaded",_p),Sl=1,bp.map(e=>e())};let Sl=!1;It&&(Sl=(K.documentElement.doScroll?/^loaded|^c/:/^loaded|^i|^c/).test(K.readyState),Sl||K.addEventListener("DOMContentLoaded",_p));function o1(e){It&&(Sl?setTimeout(e,0):bp.push(e))}function ha(e){const{tag:t,attributes:n={},children:r=[]}=e;return typeof e=="string"?Cp(e):"<".concat(t," ").concat(t1(n),">").concat(r.map(ha).join(""),"")}function wc(e,t,n){if(e&&e[t]&&e[t][n])return{prefix:t,iconName:n,icon:e[t][n]}}var Eo=function(t,n,r,a){var l=Object.keys(t),o=l.length,i=n,s,u,f;for(r===void 0?(s=1,f=t[l[0]]):(s=0,f=r);s=55296&&a<=56319&&n=55296&&r<=56319&&n>t+1&&(a=e.charCodeAt(t+1),a>=56320&&a<=57343)?(r-55296)*1024+a-56320+65536:r}function xc(e){return Object.keys(e).reduce((t,n)=>{const r=e[n];return!!r.icon?t[r.iconName]=r.icon:t[n]=r,t},{})}function _i(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};const{skipHooks:r=!1}=n,a=xc(t);typeof pt.hooks.addPack=="function"&&!r?pt.hooks.addPack(e,xc(t)):pt.styles[e]={...pt.styles[e]||{},...a},e==="fas"&&_i("fa",t)}const{styles:dn,shims:u1}=pt,c1={[q]:Object.values(wn[q]),[Fe]:Object.values(wn[Fe]),[je]:Object.values(wn[je])};let js=null,Tp={},Mp={},Op={},Pp={},Lp={};const f1={[q]:Object.keys(yn[q]),[Fe]:Object.keys(yn[Fe]),[je]:Object.keys(yn[je])};function d1(e){return~X0.indexOf(e)}function p1(e,t){const n=t.split("-"),r=n[0],a=n.slice(1).join("-");return r===e&&a!==""&&!d1(a)?a:null}const Ip=()=>{const e=r=>Eo(dn,(a,l,o)=>(a[o]=Eo(l,r,{}),a),{});Tp=e((r,a,l)=>(a[3]&&(r[a[3]]=l),a[2]&&a[2].filter(i=>typeof i=="number").forEach(i=>{r[i.toString(16)]=l}),r)),Mp=e((r,a,l)=>(r[l]=l,a[2]&&a[2].filter(i=>typeof i=="string").forEach(i=>{r[i]=l}),r)),Lp=e((r,a,l)=>{const o=a[2];return r[l]=l,o.forEach(i=>{r[i]=l}),r});const t="far"in dn||P.autoFetchSvg,n=Eo(u1,(r,a)=>{const l=a[0];let o=a[1];const i=a[2];return o==="far"&&!t&&(o="fas"),typeof l=="string"&&(r.names[l]={prefix:o,iconName:i}),typeof l=="number"&&(r.unicodes[l.toString(16)]={prefix:o,iconName:i}),r},{names:{},unicodes:{}});Op=n.names,Pp=n.unicodes,js=Bl(P.styleDefault,{family:P.familyDefault})};J0(e=>{js=Bl(e.styleDefault,{family:P.familyDefault})});Ip();function Ds(e,t){return(Tp[e]||{})[t]}function m1(e,t){return(Mp[e]||{})[t]}function Vt(e,t){return(Lp[e]||{})[t]}function Ap(e){return Op[e]||{prefix:null,iconName:null}}function h1(e){const t=Pp[e],n=Ds("fas",e);return t||(n?{prefix:"fas",iconName:n}:null)||{prefix:null,iconName:null}}function en(){return js}const Us=()=>({prefix:null,iconName:null,rest:[]});function Bl(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const{family:n=q}=t,r=yn[n][e],a=oa[n][e]||oa[n][r],l=e in pt.styles?e:null;return a||l||null}const g1={[q]:Object.keys(wn[q]),[Fe]:Object.keys(wn[Fe]),[je]:Object.keys(wn[je])};function $l(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const{skipLookups:n=!1}=t,r={[q]:"".concat(P.cssPrefix,"-").concat(q),[Fe]:"".concat(P.cssPrefix,"-").concat(Fe),[je]:"".concat(P.cssPrefix,"-").concat(je)};let a=null,l=q;const o=C0.filter(s=>s!==mp);o.forEach(s=>{(e.includes(r[s])||e.some(u=>g1[s].includes(u)))&&(l=s)});const i=e.reduce((s,u)=>{const f=p1(P.cssPrefix,u);if(dn[u]?(u=c1[l].includes(u)?$0[l][u]:u,a=u,s.prefix=u):f1[l].indexOf(u)>-1?(a=u,s.prefix=Bl(u,{family:l})):f?s.iconName=f:u!==P.replacementClass&&!o.some(c=>u===r[c])&&s.rest.push(u),!n&&s.prefix&&s.iconName){const c=a==="fa"?Ap(s.iconName):{},m=Vt(s.prefix,s.iconName);c.prefix&&(a=null),s.iconName=c.iconName||m||s.iconName,s.prefix=c.prefix||s.prefix,s.prefix==="far"&&!dn.far&&dn.fas&&!P.autoFetchSvg&&(s.prefix="fas")}return s},Us());return(e.includes("fa-brands")||e.includes("fab"))&&(i.prefix="fab"),(e.includes("fa-duotone")||e.includes("fad"))&&(i.prefix="fad"),!i.prefix&&l===Fe&&(dn.fass||P.autoFetchSvg)&&(i.prefix="fass",i.iconName=Vt(i.prefix,i.iconName)||i.iconName),!i.prefix&&l===je&&(dn.fasds||P.autoFetchSvg)&&(i.prefix="fasds",i.iconName=Vt(i.prefix,i.iconName)||i.iconName),(i.prefix==="fa"||a==="fa")&&(i.prefix=en()||"fas"),i}class v1{constructor(){this.definitions={}}add(){for(var t=arguments.length,n=new Array(t),r=0;r{this.definitions[l]={...this.definitions[l]||{},...a[l]},_i(l,a[l]);const o=wn[q][l];o&&_i(o,a[l]),Ip()})}reset(){this.definitions={}}_pullDefinitions(t,n){const r=n.prefix&&n.iconName&&n.icon?{0:n}:n;return Object.keys(r).map(a=>{const{prefix:l,iconName:o,icon:i}=r[a],s=i[2];t[l]||(t[l]={}),s.length>0&&s.forEach(u=>{typeof u=="string"&&(t[l][u]=i)}),t[l][o]=i}),t}}let kc=[],$n={};const Jn={},y1=Object.keys(Jn);function w1(e,t){let{mixoutsTo:n}=t;return kc=e,$n={},Object.keys(Jn).forEach(r=>{y1.indexOf(r)===-1&&delete Jn[r]}),kc.forEach(r=>{const a=r.mixout?r.mixout():{};if(Object.keys(a).forEach(l=>{typeof a[l]=="function"&&(n[l]=a[l]),typeof a[l]=="object"&&Object.keys(a[l]).forEach(o=>{n[l]||(n[l]={}),n[l][o]=a[l][o]})}),r.hooks){const l=r.hooks();Object.keys(l).forEach(o=>{$n[o]||($n[o]=[]),$n[o].push(l[o])})}r.provides&&r.provides(Jn)}),n}function Ti(e,t){for(var n=arguments.length,r=new Array(n>2?n-2:0),a=2;a{t=o.apply(null,[t,...r])}),t}function bn(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r{l.apply(null,n)})}function tn(){const e=arguments[0],t=Array.prototype.slice.call(arguments,1);return Jn[e]?Jn[e].apply(null,t):void 0}function Mi(e){e.prefix==="fa"&&(e.prefix="fas");let{iconName:t}=e;const n=e.prefix||en();if(t)return t=Vt(n,t)||t,wc(zp.definitions,n,t)||wc(pt.styles,n,t)}const zp=new v1,x1=()=>{P.autoReplaceSvg=!1,P.observeMutations=!1,bn("noAuto")},k1={i2svg:function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return It?(bn("beforeI2svg",e),tn("pseudoElements2svg",e),tn("i2svg",e)):Promise.reject(new Error("Operation requires a DOM of some kind."))},watch:function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{autoReplaceSvgRoot:t}=e;P.autoReplaceSvg===!1&&(P.autoReplaceSvg=!0),P.observeMutations=!0,o1(()=>{E1({autoReplaceSvgRoot:t}),bn("watch",e)})}},S1={icon:e=>{if(e===null)return null;if(typeof e=="object"&&e.prefix&&e.iconName)return{prefix:e.prefix,iconName:Vt(e.prefix,e.iconName)||e.iconName};if(Array.isArray(e)&&e.length===2){const t=e[1].indexOf("fa-")===0?e[1].slice(3):e[1],n=Bl(e[0]);return{prefix:n,iconName:Vt(n,t)||t}}if(typeof e=="string"&&(e.indexOf("".concat(P.cssPrefix,"-"))>-1||e.match(H0))){const t=$l(e.split(" "),{skipLookups:!0});return{prefix:t.prefix||en(),iconName:Vt(t.prefix,t.iconName)||t.iconName}}if(typeof e=="string"){const t=en();return{prefix:t,iconName:Vt(t,e)||e}}}},Ve={noAuto:x1,config:P,dom:k1,parse:S1,library:zp,findIconDefinition:Mi,toHtml:ha},E1=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{autoReplaceSvgRoot:t=K}=e;(Object.keys(pt.styles).length>0||P.autoFetchSvg)&&It&&P.autoReplaceSvg&&Ve.dom.i2svg({node:t})};function Hl(e,t){return Object.defineProperty(e,"abstract",{get:t}),Object.defineProperty(e,"html",{get:function(){return e.abstract.map(n=>ha(n))}}),Object.defineProperty(e,"node",{get:function(){if(!It)return;const n=K.createElement("div");return n.innerHTML=e.html,n.children}}),e}function C1(e){let{children:t,main:n,mask:r,attributes:a,styles:l,transform:o}=e;if(Fs(o)&&n.found&&!r.found){const{width:i,height:s}=n,u={x:i/s/2,y:.5};a.style=Vl({...l,"transform-origin":"".concat(u.x+o.x/16,"em ").concat(u.y+o.y/16,"em")})}return[{tag:"svg",attributes:a,children:t}]}function N1(e){let{prefix:t,iconName:n,children:r,attributes:a,symbol:l}=e;const o=l===!0?"".concat(t,"-").concat(P.cssPrefix,"-").concat(n):l;return[{tag:"svg",attributes:{style:"display: none;"},children:[{tag:"symbol",attributes:{...a,id:o},children:r}]}]}function Ws(e){const{icons:{main:t,mask:n},prefix:r,iconName:a,transform:l,symbol:o,title:i,maskId:s,titleId:u,extra:f,watchable:c=!1}=e,{width:m,height:y}=n.found?n:t,w=r==="fak",x=[P.replacementClass,a?"".concat(P.cssPrefix,"-").concat(a):""].filter(C=>f.classes.indexOf(C)===-1).filter(C=>C!==""||!!C).concat(f.classes).join(" ");let b={children:[],attributes:{...f.attributes,"data-prefix":r,"data-icon":a,class:x,role:f.attributes.role||"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 ".concat(m," ").concat(y)}};const p=w&&!~f.classes.indexOf("fa-fw")?{width:"".concat(m/y*16*.0625,"em")}:{};c&&(b.attributes[Nn]=""),i&&(b.children.push({tag:"title",attributes:{id:b.attributes["aria-labelledby"]||"title-".concat(u||ia())},children:[i]}),delete b.attributes.title);const d={...b,prefix:r,iconName:a,main:t,mask:n,maskId:s,transform:l,symbol:o,styles:{...p,...f.styles}},{children:h,attributes:k}=n.found&&t.found?tn("generateAbstractMask",d)||{children:[],attributes:{}}:tn("generateAbstractIcon",d)||{children:[],attributes:{}};return d.children=h,d.attributes=k,o?N1(d):C1(d)}function Sc(e){const{content:t,width:n,height:r,transform:a,title:l,extra:o,watchable:i=!1}=e,s={...o.attributes,...l?{title:l}:{},class:o.classes.join(" ")};i&&(s[Nn]="");const u={...o.styles};Fs(a)&&(u.transform=r1({transform:a,startCentered:!0,width:n,height:r}),u["-webkit-transform"]=u.transform);const f=Vl(u);f.length>0&&(s.style=f);const c=[];return c.push({tag:"span",attributes:s,children:[t]}),l&&c.push({tag:"span",attributes:{class:"sr-only"},children:[l]}),c}function b1(e){const{content:t,title:n,extra:r}=e,a={...r.attributes,...n?{title:n}:{},class:r.classes.join(" ")},l=Vl(r.styles);l.length>0&&(a.style=l);const o=[];return o.push({tag:"span",attributes:a,children:[t]}),n&&o.push({tag:"span",attributes:{class:"sr-only"},children:[n]}),o}const{styles:Co}=pt;function Oi(e){const t=e[0],n=e[1],[r]=e.slice(4);let a=null;return Array.isArray(r)?a={tag:"g",attributes:{class:"".concat(P.cssPrefix,"-").concat(ko.GROUP)},children:[{tag:"path",attributes:{class:"".concat(P.cssPrefix,"-").concat(ko.SECONDARY),fill:"currentColor",d:r[0]}},{tag:"path",attributes:{class:"".concat(P.cssPrefix,"-").concat(ko.PRIMARY),fill:"currentColor",d:r[1]}}]}:a={tag:"path",attributes:{fill:"currentColor",d:r}},{found:!0,width:t,height:n,icon:a}}const _1={found:!1,width:512,height:512};function T1(e,t){!wp&&!P.showMissingIcons&&e&&console.error('Icon with name "'.concat(e,'" and prefix "').concat(t,'" is missing.'))}function Pi(e,t){let n=t;return t==="fa"&&P.styleDefault!==null&&(t=en()),new Promise((r,a)=>{if(n==="fa"){const l=Ap(e)||{};e=l.iconName||e,t=l.prefix||t}if(e&&t&&Co[t]&&Co[t][e]){const l=Co[t][e];return r(Oi(l))}T1(e,t),r({..._1,icon:P.showMissingIcons&&e?tn("missingIconAbstract")||{}:{}})})}const Ec=()=>{},Li=P.measurePerformance&&za&&za.mark&&za.measure?za:{mark:Ec,measure:Ec},Mr='FA "6.6.0"',M1=e=>(Li.mark("".concat(Mr," ").concat(e," begins")),()=>Rp(e)),Rp=e=>{Li.mark("".concat(Mr," ").concat(e," ends")),Li.measure("".concat(Mr," ").concat(e),"".concat(Mr," ").concat(e," begins"),"".concat(Mr," ").concat(e," ends"))};var Vs={begin:M1,end:Rp};const Xa=()=>{};function Cc(e){return typeof(e.getAttribute?e.getAttribute(Nn):null)=="string"}function O1(e){const t=e.getAttribute?e.getAttribute(As):null,n=e.getAttribute?e.getAttribute(zs):null;return t&&n}function P1(e){return e&&e.classList&&e.classList.contains&&e.classList.contains(P.replacementClass)}function L1(){return P.autoReplaceSvg===!0?Ka.replace:Ka[P.autoReplaceSvg]||Ka.replace}function I1(e){return K.createElementNS("http://www.w3.org/2000/svg",e)}function A1(e){return K.createElement(e)}function Fp(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const{ceFn:n=e.tag==="svg"?I1:A1}=t;if(typeof e=="string")return K.createTextNode(e);const r=n(e.tag);return Object.keys(e.attributes||[]).forEach(function(l){r.setAttribute(l,e.attributes[l])}),(e.children||[]).forEach(function(l){r.appendChild(Fp(l,{ceFn:n}))}),r}function z1(e){let t=" ".concat(e.outerHTML," ");return t="".concat(t,"Font Awesome fontawesome.com "),t}const Ka={replace:function(e){const t=e[0];if(t.parentNode)if(e[1].forEach(n=>{t.parentNode.insertBefore(Fp(n),t)}),t.getAttribute(Nn)===null&&P.keepOriginalSource){let n=K.createComment(z1(t));t.parentNode.replaceChild(n,t)}else t.remove()},nest:function(e){const t=e[0],n=e[1];if(~Rs(t).indexOf(P.replacementClass))return Ka.replace(e);const r=new RegExp("".concat(P.cssPrefix,"-.*"));if(delete n[0].attributes.id,n[0].attributes.class){const l=n[0].attributes.class.split(" ").reduce((o,i)=>(i===P.replacementClass||i.match(r)?o.toSvg.push(i):o.toNode.push(i),o),{toNode:[],toSvg:[]});n[0].attributes.class=l.toSvg.join(" "),l.toNode.length===0?t.removeAttribute("class"):t.setAttribute("class",l.toNode.join(" "))}const a=n.map(l=>ha(l)).join(` +`);t.setAttribute(Nn,""),t.innerHTML=a}};function Nc(e){e()}function jp(e,t){const n=typeof t=="function"?t:Xa;if(e.length===0)n();else{let r=Nc;P.mutateApproach===V0&&(r=qt.requestAnimationFrame||Nc),r(()=>{const a=L1(),l=Vs.begin("mutate");e.map(a),l(),n()})}}let Bs=!1;function Dp(){Bs=!0}function Ii(){Bs=!1}let El=null;function bc(e){if(!mc||!P.observeMutations)return;const{treeCallback:t=Xa,nodeCallback:n=Xa,pseudoElementsCallback:r=Xa,observeMutationsRoot:a=K}=e;El=new mc(l=>{if(Bs)return;const o=en();dr(l).forEach(i=>{if(i.type==="childList"&&i.addedNodes.length>0&&!Cc(i.addedNodes[0])&&(P.searchPseudoElements&&r(i.target),t(i.target)),i.type==="attributes"&&i.target.parentNode&&P.searchPseudoElements&&r(i.target.parentNode),i.type==="attributes"&&Cc(i.target)&&~Y0.indexOf(i.attributeName))if(i.attributeName==="class"&&O1(i.target)){const{prefix:s,iconName:u}=$l(Rs(i.target));i.target.setAttribute(As,s||o),u&&i.target.setAttribute(zs,u)}else P1(i.target)&&n(i.target)})}),It&&El.observe(a,{childList:!0,attributes:!0,characterData:!0,subtree:!0})}function R1(){El&&El.disconnect()}function F1(e){const t=e.getAttribute("style");let n=[];return t&&(n=t.split(";").reduce((r,a)=>{const l=a.split(":"),o=l[0],i=l.slice(1);return o&&i.length>0&&(r[o]=i.join(":").trim()),r},{})),n}function j1(e){const t=e.getAttribute("data-prefix"),n=e.getAttribute("data-icon"),r=e.innerText!==void 0?e.innerText.trim():"";let a=$l(Rs(e));return a.prefix||(a.prefix=en()),t&&n&&(a.prefix=t,a.iconName=n),a.iconName&&a.prefix||(a.prefix&&r.length>0&&(a.iconName=m1(a.prefix,e.innerText)||Ds(a.prefix,bi(e.innerText))),!a.iconName&&P.autoFetchSvg&&e.firstChild&&e.firstChild.nodeType===Node.TEXT_NODE&&(a.iconName=e.firstChild.data)),a}function D1(e){const t=dr(e.attributes).reduce((a,l)=>(a.name!=="class"&&a.name!=="style"&&(a[l.name]=l.value),a),{}),n=e.getAttribute("title"),r=e.getAttribute("data-fa-title-id");return P.autoA11y&&(n?t["aria-labelledby"]="".concat(P.replacementClass,"-title-").concat(r||ia()):(t["aria-hidden"]="true",t.focusable="false")),t}function U1(){return{iconName:null,title:null,titleId:null,prefix:null,transform:dt,symbol:!1,mask:{iconName:null,prefix:null,rest:[]},maskId:null,extra:{classes:[],styles:{},attributes:{}}}}function _c(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{styleParser:!0};const{iconName:n,prefix:r,rest:a}=j1(e),l=D1(e),o=Ti("parseNodeAttributes",{},e);let i=t.styleParser?F1(e):[];return{iconName:n,title:e.getAttribute("title"),titleId:e.getAttribute("data-fa-title-id"),prefix:r,transform:dt,mask:{iconName:null,prefix:null,rest:[]},maskId:null,symbol:!1,extra:{classes:a,styles:i,attributes:l},...o}}const{styles:W1}=pt;function Up(e){const t=P.autoReplaceSvg==="nest"?_c(e,{styleParser:!1}):_c(e);return~t.extra.classes.indexOf(Sp)?tn("generateLayersText",e,t):tn("generateSvgReplacementMutation",e,t)}let vt=new Set;xp.map(e=>{vt.add("fa-".concat(e))});Object.keys(yn[q]).map(vt.add.bind(vt));Object.keys(yn[Fe]).map(vt.add.bind(vt));Object.keys(yn[je]).map(vt.add.bind(vt));vt=[...vt];function Tc(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;if(!It)return Promise.resolve();const n=K.documentElement.classList,r=f=>n.add("".concat(vc,"-").concat(f)),a=f=>n.remove("".concat(vc,"-").concat(f)),l=P.autoFetchSvg?vt:xp.map(f=>"fa-".concat(f)).concat(Object.keys(W1));l.includes("fa")||l.push("fa");const o=[".".concat(Sp,":not([").concat(Nn,"])")].concat(l.map(f=>".".concat(f,":not([").concat(Nn,"])"))).join(", ");if(o.length===0)return Promise.resolve();let i=[];try{i=dr(e.querySelectorAll(o))}catch{}if(i.length>0)r("pending"),a("complete");else return Promise.resolve();const s=Vs.begin("onTree"),u=i.reduce((f,c)=>{try{const m=Up(c);m&&f.push(m)}catch(m){wp||m.name==="MissingIcon"&&console.error(m)}return f},[]);return new Promise((f,c)=>{Promise.all(u).then(m=>{jp(m,()=>{r("active"),r("complete"),a("pending"),typeof t=="function"&&t(),s(),f()})}).catch(m=>{s(),c(m)})})}function V1(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;Up(e).then(n=>{n&&jp([n],t)})}function B1(e){return function(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const r=(t||{}).icon?t:Mi(t||{});let{mask:a}=n;return a&&(a=(a||{}).icon?a:Mi(a||{})),e(r,{...n,mask:a})}}const $1=function(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const{transform:n=dt,symbol:r=!1,mask:a=null,maskId:l=null,title:o=null,titleId:i=null,classes:s=[],attributes:u={},styles:f={}}=t;if(!e)return;const{prefix:c,iconName:m,icon:y}=e;return Hl({type:"icon",...e},()=>(bn("beforeDOMElementCreation",{iconDefinition:e,params:t}),P.autoA11y&&(o?u["aria-labelledby"]="".concat(P.replacementClass,"-title-").concat(i||ia()):(u["aria-hidden"]="true",u.focusable="false")),Ws({icons:{main:Oi(y),mask:a?Oi(a.icon):{found:!1,width:null,height:null,icon:{}}},prefix:c,iconName:m,transform:{...dt,...n},symbol:r,title:o,maskId:l,titleId:i,extra:{attributes:u,styles:f,classes:s}})))};var H1={mixout(){return{icon:B1($1)}},hooks(){return{mutationObserverCallbacks(e){return e.treeCallback=Tc,e.nodeCallback=V1,e}}},provides(e){e.i2svg=function(t){const{node:n=K,callback:r=()=>{}}=t;return Tc(n,r)},e.generateSvgReplacementMutation=function(t,n){const{iconName:r,title:a,titleId:l,prefix:o,transform:i,symbol:s,mask:u,maskId:f,extra:c}=n;return new Promise((m,y)=>{Promise.all([Pi(r,o),u.iconName?Pi(u.iconName,u.prefix):Promise.resolve({found:!1,width:512,height:512,icon:{}})]).then(w=>{let[x,b]=w;m([t,Ws({icons:{main:x,mask:b},prefix:o,iconName:r,transform:i,symbol:s,maskId:f,title:a,titleId:l,extra:c,watchable:!0})])}).catch(y)})},e.generateAbstractIcon=function(t){let{children:n,attributes:r,main:a,transform:l,styles:o}=t;const i=Vl(o);i.length>0&&(r.style=i);let s;return Fs(l)&&(s=tn("generateAbstractTransformGrouping",{main:a,transform:l,containerWidth:a.width,iconWidth:a.width})),n.push(s||a.icon),{children:n,attributes:r}}}},G1={mixout(){return{layer(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const{classes:n=[]}=t;return Hl({type:"layer"},()=>{bn("beforeDOMElementCreation",{assembler:e,params:t});let r=[];return e(a=>{Array.isArray(a)?a.map(l=>{r=r.concat(l.abstract)}):r=r.concat(a.abstract)}),[{tag:"span",attributes:{class:["".concat(P.cssPrefix,"-layers"),...n].join(" ")},children:r}]})}}}},Z1={mixout(){return{counter(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const{title:n=null,classes:r=[],attributes:a={},styles:l={}}=t;return Hl({type:"counter",content:e},()=>(bn("beforeDOMElementCreation",{content:e,params:t}),b1({content:e.toString(),title:n,extra:{attributes:a,styles:l,classes:["".concat(P.cssPrefix,"-layers-counter"),...r]}})))}}}},Y1={mixout(){return{text(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const{transform:n=dt,title:r=null,classes:a=[],attributes:l={},styles:o={}}=t;return Hl({type:"text",content:e},()=>(bn("beforeDOMElementCreation",{content:e,params:t}),Sc({content:e,transform:{...dt,...n},title:r,extra:{attributes:l,styles:o,classes:["".concat(P.cssPrefix,"-layers-text"),...a]}})))}}},provides(e){e.generateLayersText=function(t,n){const{title:r,transform:a,extra:l}=n;let o=null,i=null;if(pp){const s=parseInt(getComputedStyle(t).fontSize,10),u=t.getBoundingClientRect();o=u.width/s,i=u.height/s}return P.autoA11y&&!r&&(l.attributes["aria-hidden"]="true"),Promise.resolve([t,Sc({content:t.innerHTML,width:o,height:i,transform:a,title:r,extra:l,watchable:!0})])}}};const X1=new RegExp('"',"ug"),Mc=[1105920,1112319],Oc={FontAwesome:{normal:"fas",400:"fas"},...O0,...M0,...j0},Ai=Object.keys(Oc).reduce((e,t)=>(e[t.toLowerCase()]=Oc[t],e),{}),K1=Object.keys(Ai).reduce((e,t)=>{const n=Ai[t];return e[t]=n[900]||[...Object.entries(n)][0][1],e},{});function Q1(e){const t=e.replace(X1,""),n=s1(t,0),r=n>=Mc[0]&&n<=Mc[1],a=t.length===2?t[0]===t[1]:!1;return{value:bi(a?t[0]:t),isSecondary:r||a}}function J1(e,t){const n=e.replace(/^['"]|['"]$/g,"").toLowerCase(),r=parseInt(t),a=isNaN(r)?"normal":r;return(Ai[n]||{})[a]||K1[n]}function Pc(e,t){const n="".concat(W0).concat(t.replace(":","-"));return new Promise((r,a)=>{if(e.getAttribute(n)!==null)return r();const o=dr(e.children).filter(m=>m.getAttribute(Si)===t)[0],i=qt.getComputedStyle(e,t),s=i.getPropertyValue("font-family"),u=s.match(G0),f=i.getPropertyValue("font-weight"),c=i.getPropertyValue("content");if(o&&!u)return e.removeChild(o),r();if(u&&c!=="none"&&c!==""){const m=i.getPropertyValue("content");let y=J1(s,f);const{value:w,isSecondary:x}=Q1(m),b=u[0].startsWith("FontAwesome");let p=Ds(y,w),d=p;if(b){const h=h1(w);h.iconName&&h.prefix&&(p=h.iconName,y=h.prefix)}if(p&&!x&&(!o||o.getAttribute(As)!==y||o.getAttribute(zs)!==d)){e.setAttribute(n,d),o&&e.removeChild(o);const h=U1(),{extra:k}=h;k.attributes[Si]=t,Pi(p,y).then(C=>{const M=Ws({...h,icons:{main:C,mask:Us()},prefix:y,iconName:d,extra:k,watchable:!0}),O=K.createElementNS("http://www.w3.org/2000/svg","svg");t==="::before"?e.insertBefore(O,e.firstChild):e.appendChild(O),O.outerHTML=M.map(L=>ha(L)).join(` +`),e.removeAttribute(n),r()}).catch(a)}else r()}else r()})}function q1(e){return Promise.all([Pc(e,"::before"),Pc(e,"::after")])}function ev(e){return e.parentNode!==document.head&&!~B0.indexOf(e.tagName.toUpperCase())&&!e.getAttribute(Si)&&(!e.parentNode||e.parentNode.tagName!=="svg")}function Lc(e){if(It)return new Promise((t,n)=>{const r=dr(e.querySelectorAll("*")).filter(ev).map(q1),a=Vs.begin("searchPseudoElements");Dp(),Promise.all(r).then(()=>{a(),Ii(),t()}).catch(()=>{a(),Ii(),n()})})}var tv={hooks(){return{mutationObserverCallbacks(e){return e.pseudoElementsCallback=Lc,e}}},provides(e){e.pseudoElements2svg=function(t){const{node:n=K}=t;P.searchPseudoElements&&Lc(n)}}};let Ic=!1;var nv={mixout(){return{dom:{unwatch(){Dp(),Ic=!0}}}},hooks(){return{bootstrap(){bc(Ti("mutationObserverCallbacks",{}))},noAuto(){R1()},watch(e){const{observeMutationsRoot:t}=e;Ic?Ii():bc(Ti("mutationObserverCallbacks",{observeMutationsRoot:t}))}}}};const Ac=e=>{let t={size:16,x:0,y:0,flipX:!1,flipY:!1,rotate:0};return e.toLowerCase().split(" ").reduce((n,r)=>{const a=r.toLowerCase().split("-"),l=a[0];let o=a.slice(1).join("-");if(l&&o==="h")return n.flipX=!0,n;if(l&&o==="v")return n.flipY=!0,n;if(o=parseFloat(o),isNaN(o))return n;switch(l){case"grow":n.size=n.size+o;break;case"shrink":n.size=n.size-o;break;case"left":n.x=n.x-o;break;case"right":n.x=n.x+o;break;case"up":n.y=n.y-o;break;case"down":n.y=n.y+o;break;case"rotate":n.rotate=n.rotate+o;break}return n},t)};var rv={mixout(){return{parse:{transform:e=>Ac(e)}}},hooks(){return{parseNodeAttributes(e,t){const n=t.getAttribute("data-fa-transform");return n&&(e.transform=Ac(n)),e}}},provides(e){e.generateAbstractTransformGrouping=function(t){let{main:n,transform:r,containerWidth:a,iconWidth:l}=t;const o={transform:"translate(".concat(a/2," 256)")},i="translate(".concat(r.x*32,", ").concat(r.y*32,") "),s="scale(".concat(r.size/16*(r.flipX?-1:1),", ").concat(r.size/16*(r.flipY?-1:1),") "),u="rotate(".concat(r.rotate," 0 0)"),f={transform:"".concat(i," ").concat(s," ").concat(u)},c={transform:"translate(".concat(l/2*-1," -256)")},m={outer:o,inner:f,path:c};return{tag:"g",attributes:{...m.outer},children:[{tag:"g",attributes:{...m.inner},children:[{tag:n.icon.tag,children:n.icon.children,attributes:{...n.icon.attributes,...m.path}}]}]}}}};const No={x:0,y:0,width:"100%",height:"100%"};function zc(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return e.attributes&&(e.attributes.fill||t)&&(e.attributes.fill="black"),e}function av(e){return e.tag==="g"?e.children:[e]}var lv={hooks(){return{parseNodeAttributes(e,t){const n=t.getAttribute("data-fa-mask"),r=n?$l(n.split(" ").map(a=>a.trim())):Us();return r.prefix||(r.prefix=en()),e.mask=r,e.maskId=t.getAttribute("data-fa-mask-id"),e}}},provides(e){e.generateAbstractMask=function(t){let{children:n,attributes:r,main:a,mask:l,maskId:o,transform:i}=t;const{width:s,icon:u}=a,{width:f,icon:c}=l,m=n1({transform:i,containerWidth:f,iconWidth:s}),y={tag:"rect",attributes:{...No,fill:"white"}},w=u.children?{children:u.children.map(zc)}:{},x={tag:"g",attributes:{...m.inner},children:[zc({tag:u.tag,attributes:{...u.attributes,...m.path},...w})]},b={tag:"g",attributes:{...m.outer},children:[x]},p="mask-".concat(o||ia()),d="clip-".concat(o||ia()),h={tag:"mask",attributes:{...No,id:p,maskUnits:"userSpaceOnUse",maskContentUnits:"userSpaceOnUse"},children:[y,b]},k={tag:"defs",children:[{tag:"clipPath",attributes:{id:d},children:av(c)},h]};return n.push(k,{tag:"rect",attributes:{fill:"currentColor","clip-path":"url(#".concat(d,")"),mask:"url(#".concat(p,")"),...No}}),{children:n,attributes:r}}}},ov={provides(e){let t=!1;qt.matchMedia&&(t=qt.matchMedia("(prefers-reduced-motion: reduce)").matches),e.missingIconAbstract=function(){const n=[],r={fill:"currentColor"},a={attributeType:"XML",repeatCount:"indefinite",dur:"2s"};n.push({tag:"path",attributes:{...r,d:"M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z"}});const l={...a,attributeName:"opacity"},o={tag:"circle",attributes:{...r,cx:"256",cy:"364",r:"28"},children:[]};return t||o.children.push({tag:"animate",attributes:{...a,attributeName:"r",values:"28;14;28;28;14;28;"}},{tag:"animate",attributes:{...l,values:"1;0;1;1;0;1;"}}),n.push(o),n.push({tag:"path",attributes:{...r,opacity:"1",d:"M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z"},children:t?[]:[{tag:"animate",attributes:{...l,values:"1;0;0;0;0;1;"}}]}),t||n.push({tag:"path",attributes:{...r,opacity:"0",d:"M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z"},children:[{tag:"animate",attributes:{...l,values:"0;0;1;1;0;0;"}}]}),{tag:"g",attributes:{class:"missing"},children:n}}}},iv={hooks(){return{parseNodeAttributes(e,t){const n=t.getAttribute("data-fa-symbol"),r=n===null?!1:n===""?!0:n;return e.symbol=r,e}}}},sv=[l1,H1,G1,Z1,Y1,tv,nv,rv,lv,ov,iv];w1(sv,{mixoutsTo:Ve});Ve.noAuto;Ve.config;Ve.library;Ve.dom;const zi=Ve.parse;Ve.findIconDefinition;Ve.toHtml;const uv=Ve.icon;Ve.layer;Ve.text;Ve.counter;var Wp={exports:{}},cv="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED",fv=cv,dv=fv;function Vp(){}function Bp(){}Bp.resetWarningCache=Vp;var pv=function(){function e(r,a,l,o,i,s){if(s!==dv){var u=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw u.name="Invariant Violation",u}}e.isRequired=e;function t(){return e}var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:Bp,resetWarningCache:Vp};return n.PropTypes=n,n};Wp.exports=pv();var mv=Wp.exports;const D=Uc(mv);function Rc(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable})),n.push.apply(n,r)}return n}function ct(e){for(var t=1;t=0)&&(n[a]=e[a]);return n}function gv(e,t){if(e==null)return{};var n=hv(e,t),r,a;if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function Ri(e){return vv(e)||yv(e)||wv(e)||xv()}function vv(e){if(Array.isArray(e))return Fi(e)}function yv(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function wv(e,t){if(e){if(typeof e=="string")return Fi(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(n==="Object"&&e.constructor&&(n=e.constructor.name),n==="Map"||n==="Set")return Array.from(e);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Fi(e,t)}}function Fi(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n2&&arguments[2]!==void 0?arguments[2]:{};if(typeof t=="string")return t;var r=(t.children||[]).map(function(s){return Hp(e,s)}),a=Object.keys(t.attributes||{}).reduce(function(s,u){var f=t.attributes[u];switch(u){case"class":s.attrs.className=f,delete t.attributes.class;break;case"style":s.attrs.style=Nv(f);break;default:u.indexOf("aria-")===0||u.indexOf("data-")===0?s.attrs[u.toLowerCase()]=f:s.attrs[$p(u)]=f}return s},{attrs:{}}),l=n.style,o=l===void 0?{}:l,i=gv(n,Ev);return a.attrs.style=ct(ct({},a.attrs.style),o),e.apply(void 0,[t.tag,ct(ct({},a.attrs),i)].concat(Ri(r)))}var Gp=!1;try{Gp=!0}catch{}function bv(){if(!Gp&&console&&typeof console.error=="function"){var e;(e=console).error.apply(e,arguments)}}function Fc(e){if(e&&Cl(e)==="object"&&e.prefix&&e.iconName&&e.icon)return e;if(zi.icon)return zi.icon(e);if(e===null)return null;if(e&&Cl(e)==="object"&&e.prefix&&e.iconName)return e;if(Array.isArray(e)&&e.length===2)return{prefix:e[0],iconName:e[1]};if(typeof e=="string")return{prefix:"fas",iconName:e}}function bo(e,t){return Array.isArray(t)&&t.length>0||!Array.isArray(t)&&t?Hn({},e,t):{}}var jc={border:!1,className:"",mask:null,maskId:null,fixedWidth:!1,inverse:!1,flip:!1,icon:null,listItem:!1,pull:null,pulse:!1,rotation:null,size:null,spin:!1,spinPulse:!1,spinReverse:!1,beat:!1,fade:!1,beatFade:!1,bounce:!1,shake:!1,symbol:!1,title:"",titleId:null,transform:null,swapOpacity:!1},mt=Qc.forwardRef(function(e,t){var n=ct(ct({},jc),e),r=n.icon,a=n.mask,l=n.symbol,o=n.className,i=n.title,s=n.titleId,u=n.maskId,f=Fc(r),c=bo("classes",[].concat(Ri(kv(n)),Ri((o||"").split(" ")))),m=bo("transform",typeof n.transform=="string"?zi.transform(n.transform):n.transform),y=bo("mask",Fc(a)),w=uv(f,ct(ct(ct(ct({},c),m),y),{},{symbol:l,title:i,titleId:s,maskId:u}));if(!w)return bv("Could not find icon",f),null;var x=w.abstract,b={ref:t};return Object.keys(n).forEach(function(p){jc.hasOwnProperty(p)||(b[p]=n[p])}),_v(x[0],b)});mt.displayName="FontAwesomeIcon";mt.propTypes={beat:D.bool,border:D.bool,beatFade:D.bool,bounce:D.bool,className:D.string,fade:D.bool,flash:D.bool,mask:D.oneOfType([D.object,D.array,D.string]),maskId:D.string,fixedWidth:D.bool,inverse:D.bool,flip:D.oneOf([!0,!1,"horizontal","vertical","both"]),icon:D.oneOfType([D.object,D.array,D.string]),listItem:D.bool,pull:D.oneOf(["right","left"]),pulse:D.bool,rotation:D.oneOf([0,90,180,270]),shake:D.bool,size:D.oneOf(["2xs","xs","sm","lg","xl","2xl","1x","2x","3x","4x","5x","6x","7x","8x","9x","10x"]),spin:D.bool,spinPulse:D.bool,spinReverse:D.bool,symbol:D.oneOfType([D.bool,D.string]),title:D.string,titleId:D.string,transform:D.oneOfType([D.string,D.object]),swapOpacity:D.bool};var _v=Hp.bind(null,Qc.createElement);const Tv={prefix:"fas",iconName:"trash-can",icon:[448,512,[61460,"trash-alt"],"f2ed","M135.2 17.7C140.6 6.8 151.7 0 163.8 0L284.2 0c12.1 0 23.2 6.8 28.6 17.7L320 32l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 96C14.3 96 0 81.7 0 64S14.3 32 32 32l96 0 7.2-14.3zM32 128l384 0 0 320c0 35.3-28.7 64-64 64L96 512c-35.3 0-64-28.7-64-64l0-320zm96 64c-8.8 0-16 7.2-16 16l0 224c0 8.8 7.2 16 16 16s16-7.2 16-16l0-224c0-8.8-7.2-16-16-16zm96 0c-8.8 0-16 7.2-16 16l0 224c0 8.8 7.2 16 16 16s16-7.2 16-16l0-224c0-8.8-7.2-16-16-16zm96 0c-8.8 0-16 7.2-16 16l0 224c0 8.8 7.2 16 16 16s16-7.2 16-16l0-224c0-8.8-7.2-16-16-16z"]},Zp=Tv,Mv={prefix:"fas",iconName:"arrow-up-right-from-square",icon:[512,512,["external-link"],"f08e","M320 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l82.7 0L201.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L448 109.3l0 82.7c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160c0-17.7-14.3-32-32-32L320 0zM80 32C35.8 32 0 67.8 0 112L0 432c0 44.2 35.8 80 80 80l320 0c44.2 0 80-35.8 80-80l0-112c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 112c0 8.8-7.2 16-16 16L80 448c-8.8 0-16-7.2-16-16l0-320c0-8.8 7.2-16 16-16l112 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L80 32z"]},Ov={prefix:"fas",iconName:"circle-question",icon:[512,512,[62108,"question-circle"],"f059","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM169.8 165.3c7.9-22.3 29.1-37.3 52.8-37.3l58.3 0c34.9 0 63.1 28.3 63.1 63.1c0 22.6-12.1 43.5-31.7 54.8L280 264.4c-.2 13-10.9 23.6-24 23.6c-13.3 0-24-10.7-24-24l0-13.5c0-8.6 4.6-16.5 12.1-20.8l44.3-25.4c4.7-2.7 7.6-7.7 7.6-13.1c0-8.4-6.8-15.1-15.1-15.1l-58.3 0c-3.4 0-6.4 2.1-7.5 5.3l-.4 1.2c-4.4 12.5-18.2 19-30.6 14.6s-19-18.2-14.6-30.6l.4-1.2zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z"]},Pv=Ov,Lv={prefix:"fas",iconName:"stop",icon:[384,512,[9209],"f04d","M0 128C0 92.7 28.7 64 64 64H320c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128z"]},Iv={prefix:"fas",iconName:"xmark",icon:[384,512,[128473,10005,10006,10060,215,"close","multiply","remove","times"],"f00d","M342.6 150.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 210.7 86.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L146.7 256 41.4 361.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192 301.3 297.4 406.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L237.3 256 342.6 150.6z"]},Av={prefix:"fas",iconName:"triangle-exclamation",icon:[512,512,[9888,"exclamation-triangle","warning"],"f071","M256 32c14.2 0 27.3 7.5 34.5 19.8l216 368c7.3 12.4 7.3 27.7 .2 40.1S486.3 480 472 480L40 480c-14.3 0-27.6-7.7-34.7-20.1s-7-27.8 .2-40.1l216-368C228.7 39.5 241.8 32 256 32zm0 128c-13.3 0-24 10.7-24 24l0 112c0 13.3 10.7 24 24 24s24-10.7 24-24l0-112c0-13.3-10.7-24-24-24zm32 224a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z"]},zv=Av,Rv={prefix:"fas",iconName:"brain",icon:[512,512,[129504],"f5dc","M184 0c30.9 0 56 25.1 56 56l0 400c0 30.9-25.1 56-56 56c-28.9 0-52.7-21.9-55.7-50.1c-5.2 1.4-10.7 2.1-16.3 2.1c-35.3 0-64-28.7-64-64c0-7.4 1.3-14.6 3.6-21.2C21.4 367.4 0 338.2 0 304c0-31.9 18.7-59.5 45.8-72.3C37.1 220.8 32 207 32 192c0-30.7 21.6-56.3 50.4-62.6C80.8 123.9 80 118 80 112c0-29.9 20.6-55.1 48.3-62.1C131.3 21.9 155.1 0 184 0zM328 0c28.9 0 52.6 21.9 55.7 49.9c27.8 7 48.3 32.1 48.3 62.1c0 6-.8 11.9-2.4 17.4c28.8 6.2 50.4 31.9 50.4 62.6c0 15-5.1 28.8-13.8 39.7C493.3 244.5 512 272.1 512 304c0 34.2-21.4 63.4-51.6 74.8c2.3 6.6 3.6 13.8 3.6 21.2c0 35.3-28.7 64-64 64c-5.6 0-11.1-.7-16.3-2.1c-3 28.2-26.8 50.1-55.7 50.1c-30.9 0-56-25.1-56-56l0-400c0-30.9 25.1-56 56-56z"]};function Fv(){const[e,t]=ee.useState(""),{currentConvId:n,isGenerating:r,createCompletion:a,navigateTo:l,currModel:o,getWllamaInstance:i,stopCompletion:s}=ln(),{getConversationById:u,addMessageToConversation:f,editMessageInConversation:c,newConversation:m}=op(),y=u(n),w=async()=>{if(r)return;const x=(y==null?void 0:y.messages)??[],b=e;t("");const p={id:Date.now(),content:b,role:"user"},d={id:Date.now()+1,content:"",role:"assistant"};let h=y==null?void 0:y.id;if(h?(f(h,p),f(h,d)):(h=m(p).id,l(me.CHAT,h),f(h,d)),!o)throw new Error("currModel is null");const k=await qg(i(),[...x,p]);console.log({formattedChat:k}),await a(k,C=>{c(h,d.id,C)})};return g.jsxs("div",{className:"w-[40rem] max-w-full h-full px-4 flex flex-col",children:[g.jsxs("div",{className:"chat-messages grow overflow-auto",children:[g.jsx("div",{className:"h-10"}),y?g.jsx(g.Fragment,{children:y.messages.map(x=>x.role==="user"?g.jsx("div",{className:"chat chat-end",children:g.jsx("div",{className:"chat-bubble",children:x.content})},x.id):g.jsx("div",{className:"chat chat-start",children:g.jsxs("div",{className:"chat-bubble bg-base-100 text-base-content",children:[x.content.length===0&&r&&g.jsx("span",{className:"loading loading-spinner"}),x.content]})},x.id))}):g.jsx("div",{className:"pt-24 text-center text-xl",children:"Ask me something 👋"})]}),g.jsxs("div",{className:"flex flex-col input-message py-4",children:[r&&g.jsx("div",{className:"text-center",children:g.jsxs("button",{className:"btn btn-outline btn-sm mb-4",onClick:s,children:[g.jsx(mt,{icon:Lv}),"Stop generation"]})}),o&&g.jsx("textarea",{className:"textarea textarea-bordered w-full",placeholder:"Your message...",disabled:r,value:e,onChange:x=>t(x.target.value),onKeyDown:x=>{x.keyCode==13&&x.shiftKey==!1&&(x.preventDefault(),w())}}),!o&&g.jsx(jv,{}),g.jsx("small",{className:"text-center mx-auto opacity-70 pt-2",children:"wllama may generate inaccurate information. Use with your own risk."})]})]})}function jv(){const{navigateTo:e}=ln();return g.jsxs("div",{role:"alert",className:"alert",children:[g.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-6 w-6 shrink-0 stroke-current",fill:"none",viewBox:"0 0 24 24",children:g.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"})}),g.jsx("span",{children:"Model is not loaded"}),g.jsx("div",{children:g.jsx("button",{className:"btn btn-sm btn-primary",onClick:()=>e(me.MODEL),children:"Select model"})})]})}function Dv(){const{navigateTo:e}=ln();return g.jsx("div",{className:"w-[40rem] max-w-full h-full px-4 overflow-auto",children:g.jsxs("div",{className:"guide-text pt-16",children:[g.jsx("h1",{className:"text-2xl font-bold mb-4",children:"Wllama 🦙"}),g.jsxs("div",{className:"mb-3",children:["Wllama is a project based on"," ",g.jsx("a",{href:"https://github.com/ggerganov/llama.cpp",target:"_blank",rel:"noopener",children:"llama.cpp"}),". It enables running LLM inference directly on browser by leveraging the power of ",g.jsx("b",{children:"WebAssembly"}),". It accepts GGUF as model format."]}),g.jsxs("div",{className:"mb-3",children:["Please note that:",g.jsxs("ul",{children:[g.jsx("li",{children:"Due to WebAssembly overhead, performance will not be as good as running llama.cpp in native. Performance degradation can range from 25% to 50%."}),g.jsxs("li",{children:["Due to memory constraint of WebAssembly and emscripten, models larger than 2GB will need to be split."," ",g.jsx("a",{href:"https://github.com/ngxson/wllama?tab=readme-ov-file#split-model",target:"_blank",rel:"noopener",children:"Click here to learn more"})]}),g.jsx("li",{children:"Large model may not fit into RAM, (again) due to memory constraint of WebAssembly."}),g.jsx("li",{children:"Running on smartphone maybe buggy."}),g.jsxs("li",{children:[g.jsx("b",{children:"WebGPU is not supported"}),". We're still working hard to add support for WebGPU."]})]})]}),g.jsxs("div",{className:"mb-3",children:["To get started, go to"," ",g.jsx("button",{className:"btn btn-sm btn-primary btn-outline",onClick:()=>e(me.MODEL),children:"Manage models"})," ","page to select a model."]}),g.jsx("h1",{className:"text-xl font-bold mb-4 mt-6",children:"Reporting bugs"}),g.jsxs("div",{className:"mb-3",children:["Wllama is in development and many bugs are expected to happen. If you find a bug, for example, a model can't load, please"," ",g.jsx("a",{href:"https://github.com/ngxson/wllama/issues",target:"_blank",rel:"noopener",children:"open a issue"})," ","with ",g.jsx("b",{children:"console log screenshot"}),"."]})]})})}function Uv(){const[e,t]=ee.useState(!1),{models:n,removeModel:r,isLoadingModel:a,isDownloading:l,currModel:o,currParams:i,setParams:s}=ln(),u=!!(o||l||a),f=c=>m=>{s({...i,[c]:parseFloat(m.target.value||-1)})};return g.jsxs("div",{className:"w-[40rem] max-w-full h-full px-4 overflow-auto",children:[g.jsxs("div",{className:"inference-params pt-8",children:[g.jsx("h1",{className:"text-2xl mb-4",children:"Inference parameters"}),g.jsxs("label",{className:"input input-bordered flex items-center gap-2 mb-2",children:["# threads",g.jsx("input",{type:"number",className:"grow",placeholder:"(auto detected)",min:"1",max:"100",step:"1",onChange:f("nThreads"),value:i.nThreads<1?"":i.nThreads,disabled:u})]}),g.jsxs("label",{className:"input input-bordered flex items-center gap-2 mb-2",children:["Context size",g.jsx("input",{type:"number",className:"grow",min:"128",step:"1",onChange:f("nContext"),value:i.nContext,disabled:u})]}),g.jsxs("label",{className:"input input-bordered flex items-center gap-2 mb-2",children:["Max generated tokens",g.jsx("input",{type:"number",className:"grow",min:"10",step:"1",onChange:f("nPredict"),value:i.nPredict})]}),g.jsxs("label",{className:"input input-bordered flex items-center gap-2 mb-2",children:["Temperature",g.jsx("input",{type:"number",className:"grow",min:"0.0",step:"0.05",onChange:f("temperature"),value:i.temperature})]}),g.jsx("button",{className:"btn btn-sm mr-2",onClick:()=>s(ap),children:"Reset params"}),g.jsx("button",{className:"btn btn-sm mr-2",onClick:async()=>{if(confirm("This will remove all downloaded model files from cache. Continue?"))for(const c of n)await r(c)},disabled:u,children:"Clear cache"})]}),g.jsxs("div",{className:"model-management",children:[g.jsxs("h1",{className:"text-2xl mt-6 mb-4",children:["Custom models",g.jsx("button",{className:"btn btn-primary btn-outline btn-sm ml-6",onClick:()=>t(!0),children:"+ Add model"})]}),n.filter(c=>c.userAdded).map(c=>g.jsx(Dc,{model:c,blockModelBtn:u},c.url))]}),g.jsxs("div",{className:"model-management",children:[g.jsx("h1",{className:"text-2xl mt-6 mb-4",children:"Recommended models"}),n.filter(c=>!c.userAdded).map(c=>g.jsx(Dc,{model:c,blockModelBtn:u},c.url))]}),g.jsx("div",{className:"h-10"}),e&&g.jsx(Wv,{onClose:()=>t(!1)})]})}function Wv({onClose:e}){const{isLoadingModel:t,addCustomModel:n}=ln(),[r,a]=ee.useState(""),[l,o]=ee.useState(),i=async()=>{try{await n(r),e()}catch(s){o((s==null?void 0:s.message)??"unknown error")}};return g.jsx("dialog",{className:"modal modal-open",children:g.jsxs("div",{className:"modal-box",children:[g.jsx("h3",{className:"font-bold text-lg",children:"Add custom model"}),g.jsxs("div",{className:"mt-4",children:["Max gguf file size is 2GB. If your model is bigger than 2GB, please"," ",g.jsx("a",{href:"https://github.com/ngxson/wllama?tab=readme-ov-file#split-model",target:"_blank",rel:"noopener",className:"text-primary",children:"follow this guide"})," ","to split it into smaller shards."]}),g.jsx("div",{className:"mt-4",children:g.jsxs("label",{className:"input input-bordered flex items-center gap-2 mb-2",children:["URL",g.jsx("input",{type:"text",className:"grow",placeholder:"https://example.com/your_model-00001-of-00XXX.gguf",value:r,onChange:s=>a(s.target.value)})]})}),l&&g.jsxs("div",{className:"mt-4 text-error",children:["Error: ",l]}),g.jsxs("div",{className:"modal-action",children:[g.jsxs("button",{className:"btn btn-primary",disabled:t||r.length<5,onClick:i,children:[t&&g.jsx("span",{className:"loading loading-spinner"}),"Add model"]}),g.jsx("button",{className:"btn",disabled:t,onClick:e,children:"Close"})]})]})})}function Dc({model:e,blockModelBtn:t}){const{downloadModel:n,removeModel:r,loadModel:a,unloadModel:l,removeCustomModel:o}=ln(),i=e,s=parseInt(Math.round(i.downloadPercent*100).toString());return g.jsx("div",{className:`card bg-base-100 w-full mb-2 ${i.state===le.LOADED?"border-2 border-primary":""}`,children:g.jsxs("div",{className:"card-body p-4 flex flex-row",children:[g.jsxs("div",{className:"grow",children:[g.jsx("b",{children:i.name}),g.jsx("br",{}),g.jsxs("small",{children:["Size: ",e0(i.size),i.size>rp&&g.jsx("div",{className:"tooltip tooltip-right","data-tip":"Big model size, may not be able to load due to RAM limitation",children:g.jsx("span",{className:"text-yellow-300 ml-2",children:g.jsx(mt,{icon:zv})})}),i.state==le.DOWNLOADING?` - Downloaded: ${s}%`:""]}),i.state===le.DOWNLOADING&&g.jsx("div",{children:g.jsx("progress",{className:"progress progress-primary w-full",value:s,max:"100"})}),i.state===le.LOADING&&g.jsx("div",{children:g.jsx("progress",{className:"progress progress-primary w-full"})})]}),g.jsxs("div",{children:[i.state===le.NOT_DOWNLOADED&&g.jsx("button",{className:"btn btn-primary btn-sm mr-2",onClick:()=>n(i),disabled:t,children:"Download"}),i.state===le.READY&&g.jsxs(g.Fragment,{children:[g.jsx("button",{className:"btn btn-primary btn-sm mr-2",onClick:()=>a(i),disabled:t,children:"Load model"}),g.jsx("button",{className:"btn btn-outline btn-error btn-sm mr-2",onClick:()=>{confirm("Are you sure to remove this model from cache?")&&r(i)},disabled:t,children:g.jsx(mt,{icon:Zp})})]}),i.state===le.LOADED&&g.jsx("button",{className:"btn btn-outline btn-primary btn-sm mr-2",onClick:()=>l(),children:"Unload"}),i.state===le.NOT_DOWNLOADED&&i.userAdded&&g.jsx("button",{className:"btn btn-outline btn-error btn-sm mr-2",onClick:()=>{confirm("Are you sure to remove this model from the list?")&&o(i)},disabled:t,children:g.jsx(mt,{icon:Iv})}),i.state==le.DOWNLOADING&&g.jsx("span",{className:"loading loading-spinner"})]})]})},i.url)}function Vv(){return g.jsxs("div",{className:"navbar bg-base-100 shadow-md z-40",children:[g.jsx("div",{className:"flex-none",children:g.jsx("label",{htmlFor:"my-drawer-2",className:"btn btn-square btn-ghost flex lg:hidden",children:g.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",className:"inline-block h-5 w-5 stroke-current",children:g.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M4 6h16M4 12h16M4 18h16"})})})}),g.jsx("a",{className:"btn btn-ghost text-xl",children:"wllama"})]})}function Bv({children:e}){const{currentConvId:t,navigateTo:n,currScreen:r,currModel:a}=ln(),{conversations:l,getConversationById:o,deleteConversation:i}=op(),s=o(t);return g.jsxs(g.Fragment,{children:[g.jsx("input",{id:"my-drawer-2",type:"checkbox",className:"drawer-toggle"}),g.jsxs("div",{className:"drawer-side h-screen lg:h-[calc(100vh-4rem)] z-50",children:[g.jsx("label",{htmlFor:"my-drawer-2","aria-label":"close sidebar",className:"drawer-overlay block lg:hidden"}),g.jsxs("div",{className:"h-screen lg:max-h-[calc(100vh-4rem)] flex flex-col text-base-content bg-base-200",children:[g.jsx("div",{className:"grow w-80 overflow-auto p-4",children:g.jsxs("ul",{className:"grow menu gap-1",children:[g.jsx("li",{onClick:()=>n(me.CHAT),children:g.jsx("a",{className:!s&&r===me.CHAT?"active":"",children:"+ New conversation"})}),l.map(u=>{var f;return g.jsx("li",{onClick:()=>n(me.CHAT,u.id),children:g.jsxs("a",{className:`group ${u.id===t?"active":""}`,children:[(f=u.messages[0])==null?void 0:f.content,g.jsx("span",{className:"text-right hidden group-hover:inline cursor-pointer",children:g.jsx(mt,{icon:Zp,onClick:c=>{c.preventDefault(),confirm("Are you sure to delete this conversation?")&&(n(me.CHAT),i(u.id))}})})]})},u.id)})]})}),g.jsxs("div",{className:"w-80 px-4 pt-0 pb-8",children:[g.jsx("div",{className:"divider my-2"}),a&&g.jsxs("div",{className:"text-sm px-4 pb-2",children:["Model: ",a.name]}),g.jsxs("ul",{className:"menu gap-1",children:[g.jsx("li",{onClick:()=>n(me.GUIDE),children:g.jsxs("a",{className:r===me.GUIDE?"active":"",children:[g.jsx(mt,{icon:Pv})," Guide"]})}),g.jsx("li",{onClick:()=>n(me.MODEL),children:g.jsxs("a",{className:r===me.MODEL?"active":"",children:[g.jsx(mt,{icon:Rv})," Manage models"]})}),g.jsx("li",{children:g.jsxs("a",{href:"https://github.com/ngxson/wllama",target:"_blank",rel:"noopener",children:[g.jsx(mt,{icon:Mv})," Github"]})})]})]})]})]}),g.jsx("div",{className:"drawer-content mx-auto",children:e})]})}function $v(){return g.jsx(t0,{children:g.jsx(E0,{children:g.jsx(Hv,{})})})}function Hv(){const{currScreen:e}=ln();return g.jsxs("div",{className:"flex flex-col drawer h-screen w-screen overflow-hidden",children:[g.jsx(Vv,{}),g.jsx("div",{className:"grow flex flex-row lg:drawer-open h-[calc(100vh-4rem)]",children:g.jsxs(Bv,{children:[e===me.MODEL&&g.jsx(Uv,{}),e===me.CHAT&&g.jsx(Fv,{}),e===me.GUIDE&&g.jsx(Dv,{})]})})]})}_o.createRoot(document.getElementById("root")).render(g.jsx($v,{}));